9e8b9e72-45c4-4568-9bc5-55a35670600e
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31468 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77434 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 77435 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 77436 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 77437 | capability.graph | complete | 1 / 3 | 1 week ago |
| 77438 | detector.run | complete | 1 / 3 | 1 week ago |
| 77439 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:358591] OpenAI Codex v0.77.0 (research preview)
[codex:358591] --------
[codex:358591] workdir: /tmp/codex-multi-m_u_yhs4
[codex:358591] model: gpt-5.2-codex
[codex:358591] provider: openai
[codex:358591] approval: never
[codex:358591] sandbox: read-only
[codex:358591] reasoning effort: xhigh
[codex:358591] reasoning summaries: auto
[codex:358591] session id: 019b85e2-4ed1-7aa0-b63a-1f850a0c5100
[codex:358591] --------
[codex:358591] user
[codex:358591] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:358591]
[codex:358591] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:358591]
[codex:358591] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:358591] - Gas inefficiency, code quality, naming, or best practices
[codex:358591] - Theoretical vulnerabilities without a clear extraction path
[codex:358591] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:358591] - Front-running unless it enables theft beyond MEV
[codex:358591] - DoS, griefing, or issues that don't result in attacker profit
[codex:358591] - Missing events, view function issues, or informational findings
[codex:358591]
[codex:358591] HIGH-VALUE PATTERNS TO HUNT:
[codex:358591] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:358591] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:358591] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:358591] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:358591] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:358591] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:358591] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:358591] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:358591] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:358591]
[codex:358591] For each finding, you MUST provide:
[codex:358591] 1. Exact file and line numbers of vulnerable code
[codex:358591] 2. Step-by-step exploit transaction sequence
[codex:358591] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:358591]
[codex:358591] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:358591]
[codex:358591] Output MUST be valid JSON matching the provided schema.
[codex:358591] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:358591] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:358591] mcp startup: no servers
[codex:358591]
[codex:358591] thinking
[codex:358591] **Preparing to locate audit instructions**
[codex:358591] exec
[codex:358591] /bin/bash -lc ls in /tmp/codex-multi-m_u_yhs4 succeeded in 5ms:
[codex:358591] AUDIT_BUNDLE.txt
[codex:358591] codex-output-schema.json
[codex:358591] contracts
[codex:358591]
[codex:358591] thinking
[codex:358591] **Reading AUDIT_BUNDLE.txt**
[codex:358591] exec
[codex:358591] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-m_u_yhs4 succeeded in 5ms:
[codex:358591] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:358591]
[codex:358591] ================================================================================
[codex:358591] FILE: contracts/Contract.sol
[codex:358591] ================================================================================
[codex:358591] pragma solidity ^0.4.20;
[codex:358591]
[codex:358591] /*
[codex:358591]
[codex:358591]
[codex:358591]
[codex:358591]
[codex:358591] TTTTTTTTTTTTTTTTTTTTTTT
[codex:358591] T:::::::::::::::::::::T
[codex:358591] T:::::::::::::::::::::T
[codex:358591] T:::::TT:::::::TT:::::T
[codex:358591] TTTTTT T:::::T TTTTTTrrrrr rrrrrrrrr eeeeeeeeeeee aaaaaaaaaaaaa ssssssssss uuuuuu uuuuuu rrrrr rrrrrrrrr eeeeeeeeeeee
[codex:358591] T:::::T r::::rrr:::::::::r ee::::::::::::ee a::::::::::::a ss::::::::::s u::::u u::::u r::::rrr:::::::::r ee::::::::::::ee
[codex:358591] T:::::T r:::::::::::::::::r e::::::eeeee:::::ee aaaaaaaaa:::::a ss:::::::::::::s u::::u u::::u r:::::::::::::::::r e::::::eeeee:::::ee
[codex:358591] T:::::T rr::::::rrrrr::::::re::::::e e:::::e a::::a s::::::ssss:::::su::::u u::::u rr::::::rrrrr::::::re::::::e e:::::e
[codex:358591]
[codex:358591] thinking
[codex:358591] **Analyzing contract for exploit potential**
[codex:358591] exec
[codex:358591] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591] 1 pragma solidity ^0.4.20;
[codex:358591] 2
[codex:358591] 3 /*
[codex:358591] 4
[codex:358591] 5
[codex:358591] 6
[codex:358591] 7
[codex:358591] 8 TTTTTTTTTTTTTTTTTTTTTTT
[codex:358591] 9 T:::::::::::::::::::::T
[codex:358591] 10 T:::::::::::::::::::::T
[codex:358591] 11 T:::::TT:::::::TT:::::T
[codex:358591] 12 TTTTTT T:::::T TTTTTTrrrrr rrrrrrrrr eeeeeeeeeeee aaaaaaaaaaaaa ssssssssss uuuuuu uuuuuu rrrrr rrrrrrrrr eeeeeeeeeeee
[codex:358591] 13 T:::::T r::::rrr:::::::::r ee::::::::::::ee a::::::::::::a ss::::::::::s u::::u u::::u r::::rrr:::::::::r ee::::::::::::ee
[codex:358591] 14 T:::::T r:::::::::::::::::r e::::::eeeee:::::ee aaaaaaaaa:::::a ss:::::::::::::s u::::u u::::u r:::::::::::::::::r e::::::eeeee:::::ee
[codex:358591] 15 T:::::T rr::::::rrrrr::::::re::::::e e:::::e a::::a s::::::ssss:::::su::::u u::::u rr::::::rrrrr::::::re::::::e e:::::e
[codex:358591] 16 T:::::T r:::::r r:::::re:::::::eeeee::::::e aaaaaaa:::::a s:::::s ssssss u::::u u::::u r:::::r r:::::re:::::::eeeee::::::e
[codex:358591] 17 T:::::T r:::::r rrrrrrre:::::::::::::::::e aa::::::::::::a s::::::s u::::u u::::u r:::::r rrrrrrre:::::::::::::::::e
[codex:358591] 18 T:::::T r:::::r e::::::eeeeeeeeeee a::::aaaa::::::a s::::::s u::::u u::::u r:::::r e::::::eeeeeeeeeee
[codex:358591] 19 T:::::T r:::::r e:::::::e a::::a a:::::a ssssss s:::::s u:::::uuuu:::::u r:::::r e:::::::e
[codex:358591] 20 TT:::::::TT r:::::r e::::::::e a::::a a:::::a s:::::ssss::::::su:::::::::::::::uu r:::::r e::::::::e
[codex:358591]
[codex:358591]
[codex:358591]
[codex:358591] thinking
[codex:358591] **Analyzing dividend distribution logic and potential exploits**
[codex:358591] thinking
[codex:358591] **Identifying overflow of dividends with zero token supply**
[codex:358591]
[codex:358591] This thought explores a bug where distributing dividends when the total token balances are zero floods each address in the holder list with a full dividend share, multiplying the owed payouts far beyond what the contract should pay. I’m thinking through how selling the last tokens triggers this and what exploit path lets an attacker profit by creating many addresses to inflate this dividend credit.
[codex:358591] thinking
[codex:358591] **Uncovering repeated dividend over-credit via unlisted holders**
[codex:358591]
[codex:358591] I’m parsing how profits multiply when tokens reside in unlisted addresses while listed holders hold zero, letting sells trigger full dividend credits to all listed addresses each time. This deepens the exploit by showing repeated large withdrawals are possible with coordinated token transfers and sells, and I’m tracking relevant code locations for clarity.
[codex:358591] exec
[codex:358591] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '420,480p'" in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591] 420
[codex:358591] 421
[codex:358591] 422 // delivery service
[codex:358591] 423 _customerAddress.transfer(_sellingWithdraw);
[codex:358591] 424
[codex:358591] 425 // fire event
[codex:358591] 426 onSellingWithdraw(_customerAddress, _sellingWithdraw);
[codex:358591] 427 }
[codex:358591] 428
[codex:358591] 429
[codex:358591] 430
[codex:358591] 431 /**
[codex:358591] 432 * Sell tokens.
[codex:358591] 433 * Remember, there's a 10% fee here as well.
[codex:358591] 434 */
[codex:358591] 435 function sell(uint256 _amountOfTokens)
[codex:358591] 436 onlybelievers ()
[codex:358591] 437 public
[codex:358591] 438 {
[codex:358591] 439
[codex:358591]
[codex:358591] thinking
[codex:358591] **Adding line numbers with sed**
[codex:358591] exec
[codex:358591] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '924,972p'" in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591] 924 )*(tokens_ - 1e18)
[codex:358591] 925 ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
[codex:358591] 926 )
[codex:358591] 927 /1e18);
[codex:358591] 928 return _etherReceived;
[codex:358591] 929 }
[codex:358591] 930
[codex:358591] 931 //calculate profitPerShare as per holdings
[codex:358591] 932 function profitPerShareAsPerHoldings(uint256 calculatedDividend) internal {
[codex:358591] 933
[codex:358591] 934 //calculate number of token
[codex:358591] 935 uint256 noOfTokens_;
[codex:358591] 936 tempCalculatedDividends=calculatedDividend;
[codex:358591] 937
[codex:358591] 938 for(uint i=0;i<contractTokenHolderAddresses_.length;i++){
[codex:358591] 939
[codex:358591] 940 noOfTokens_+= tokenBalanceLedger_[contractTokenHolderAddresses_[i]];
[codex:358591] 941
[codex:358591] 942 }
[codex:358591] 943
[codex:358591]
[codex:358591] thinking
[codex:358591] **Analyzing dividend distribution exploit scenario**
[codex:358591] exec
[codex:358591] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '760,810p'" in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591] 760 {
[codex:358591] 761 // data setup
[codex:358591] 762 address _customerAddress = msg.sender;
[codex:358591] 763
[codex:358591] 764 //check if address
[codex:358591] 765 tempIncomingEther=_incomingEthereum;
[codex:358591] 766
[codex:358591] 767 bool isFound=false;
[codex:358591] 768
[codex:358591] 769 for(uint k=0;k<contractTokenHolderAddresses_.length;k++){
[codex:358591] 770
[codex:358591] 771 if(contractTokenHolderAddresses_[k] ==_customerAddress){
[codex:358591] 772
[codex:358591] 773 isFound=true;
[codex:358591] 774 break;
[codex:358591] 775
[codex:358591] 776 }
[codex:358591] 777 }
[codex:358591] 778
[codex:358591] 779
[codex:358591]
[codex:358591] thinking
[codex:358591] **Generating detailed JSON report**
[codex:358591]
[codex:358591] I'm carefully assembling the JSON output describing the critical dividend over-credit vulnerability, including exact file-line references, a clear step-by-step exploit scenario, and profit potential—all following the prescribed schema and formatting rules.
[codex:358591] codex
[codex:358591] {"no_findings":false,"summary":"Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.","findings":[{"severity":"critical","category":"math","title":"Dividend distribution multiplies payouts when listed token sum is zero","exploit_scenario":"1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (≈0.08 * N * sale value + 0.90 * sale value per sell).","recommendation":"In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.","evidence":"`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.","locations":["contracts/Contract.sol:435","contracts/Contract.sol:455","contracts/Contract.sol:465","contracts/Contract.sol:780","contracts/Contract.sol:938","contracts/Contract.sol:960"]}]}
[codex:358591] tokens used
[codex:358591] 73,008
[codex:358591] {"no_findings":false,"summary":"Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.","findings":[{"severity":"critical","category":"math","title":"Dividend distribution multiplies payouts when listed token sum is zero","exploit_scenario":"1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (≈0.08 * N * sale value + 0.90 * sale value per sell).","recommendation":"In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.","evidence":"`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.","locations":["contracts/Contract.sol:435","contracts/Contract.sol:455","contracts/Contract.sol:465","contracts/Contract.sol:780","contracts/Contract.sol:938","contracts/Contract.sol:960"]}]}
{
"codex": {
"ran_at": "2026-01-03T22:06:37.146683+00:00",
"returncode": 0
},
"summary": "Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.",
"raw_final": {
"summary": "Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.",
"findings": [
{
"title": "Dividend distribution multiplies payouts when listed token sum is zero",
"category": "math",
"evidence": "`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.",
"severity": "critical",
"locations": [
"contracts/Contract.sol:435",
"contracts/Contract.sol:455",
"contracts/Contract.sol:465",
"contracts/Contract.sol:780",
"contracts/Contract.sol:938",
"contracts/Contract.sol:960"
],
"recommendation": "In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.",
"exploit_scenario": "1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (\u22480.08 * N * sale value + 0.90 * sale value per sell)."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x017e 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000030: PUSH1 0x00 00000032: CALLDATALOAD 00000033: DIV 00000034: AND 00000035: PUSH3 0x65318b 00000039: DUP2 0000003a: EQ 0000003b: PUSH2 0x018c 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0x06fdde03 00000045: EQ 00000046: PUSH2 0x01bd 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0x10d0ffdd 00000050: EQ 00000051: PUSH2 0x0247 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0x18160ddd 0000005b: EQ 0000005c: PUSH2 0x025d 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0x22609373 00000066: EQ 00000067: PUSH2 0x0270 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0x27defa1f 00000071: EQ 00000072: PUSH2 0x0286 00000075: JUMPI 00000076: DUP1 00000077: PUSH4 0x313ce567 0000007c: EQ 0000007d: PUSH2 0x02ad 00000080: JUMPI 00000081: DUP1 00000082: PUSH4 0x392efb52 00000087: EQ 00000088: PUSH2 0x02d6 0000008b: JUMPI 0000008c: DUP1 0000008d: PUSH4 0x3ccfd60b 00000092: EQ 00000093: PUSH2 0x02ec 00000096: JUMPI 00000097: DUP1 00000098: PUSH4 0x4b750334 0000009d: EQ 0000009e: PUSH2 0x0301 000000a1: JUMPI 000000a2: DUP1 000000a3: PUSH4 0x56d399e8 000000a8: EQ 000000a9: PUSH2 0x0314 000000ac: JUMPI 000000ad: DUP1 000000ae: PUSH4 0x5ed9ebfc 000000b3: EQ 000000b4: PUSH2 0x0327 000000b7: JUMPI 000000b8: DUP1 000000b9: PUSH4 0x688abbf7 000000be: EQ 000000bf: PUSH2 0x033a 000000c2: JUMPI 000000c3: DUP1 000000c4: PUSH4 0x6b2f4632 000000c9: EQ 000000ca: PUSH2 0x0352 000000cd: JUMPI 000000ce: DUP1 000000cf: PUSH4 0x70a08231 000000d4: EQ 000000d5: PUSH2 0x0365 000000d8: JUMPI 000000d9: DUP1 000000da: PUSH4 0x8328b610 000000df: EQ 000000e0: PUSH2 0x0384 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0x8620410b 000000ea: EQ 000000eb: PUSH2 0x039a 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x89135ae9 000000f5: EQ 000000f6: PUSH2 0x03ad 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x949e8acd 00000100: EQ 00000101: PUSH2 0x03c8 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x95d89b41 0000010b: EQ 0000010c: PUSH2 0x03db 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0xa8e04f34 00000116: EQ 00000117: PUSH2 0x03ee 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0xa9059cbb 00000121: EQ 00000122: PUSH2 0x0401 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0xb84c8246 0000012c: EQ 0000012d: PUSH2 0x0423 00000130: JUMPI 00000131: DUP1 00000132: PUSH4 0xc47f0027 00000137: EQ 00000138: PUSH2 0x0474 0000013b: JUMPI 0000013c: DUP1 0000013d: PUSH4 0xcb4f6758 00000142: EQ 00000143: PUSH2 0x04c5 00000146: JUMPI 00000147: DUP1 00000148: PUSH4 0xe4849b32 0000014d: EQ 0000014e: PUSH2 0x04d8 00000151: JUMPI 00000152: DUP1 00000153: PUSH4 0xe9fad8ee 00000158: EQ 00000159: PUSH2 0x04ee 0000015c: JUMPI 0000015d: DUP1 0000015e: PUSH4 0xeba9f92d 00000163: EQ 00000164: PUSH2 0x0501 00000167: JUMPI 00000168: DUP1 00000169: PUSH4 0xf088d547 0000016e: EQ 0000016f: PUSH2 0x0514 00000172: JUMPI 00000173: DUP1 00000174: PUSH4 0xfdb5a03e 00000179: EQ 0000017a: PUSH2 0x0528 0000017d: JUMPI 0000017e: JUMPDEST 0000017f: PUSH2 0x0189 00000182: CALLVALUE 00000183: PUSH1 0x00 00000185: PUSH2 0x053b 00000188: JUMP 00000189: JUMPDEST 0000018a: POP 0000018b: STOP 0000018c: JUMPDEST 0000018d: CALLVALUE 0000018e: ISZERO 0000018f: PUSH2 0x0197 00000192: JUMPI 00000193: PUSH1 0x00 00000195: DUP1 00000196: REVERT 00000197: JUMPDEST 00000198: PUSH2 0x01ab 0000019b: PUSH1 0x01 0000019d: PUSH1 0xa0 0000019f: PUSH1 0x02 000001a1: EXP 000001a2: SUB 000001a3: PUSH1 0x04 000001a5: CALLDATALOAD 000001a6: AND 000001a7: PUSH2 0x07e3 000001aa: JUMP 000001ab: JUMPDEST 000001ac: PUSH1 0x40 000001ae: MLOAD 000001af: SWAP1 000001b0: DUP2 000001b1: MSTORE 000001b2: PUSH1 0x20 000001b4: ADD 000001b5: PUSH1 0x40 000001b7: MLOAD 000001b8: DUP1 000001b9: SWAP2 000001ba: SUB 000001bb: SWAP1 000001bc: RETURN 000001bd: JUMPDEST 000001be: CALLVALUE 000001bf: ISZERO 000001c0: PUSH2 0x01c8 000001c3: JUMPI 000001c4: PUSH1 0x00 000001c6: DUP1 000001c7: REVERT 000001c8: JUMPDEST 000001c9: PUSH2 0x01d0 000001cc: PUSH2 0x07fe 000001cf: JUMP 000001d0: JUMPDEST 000001d1: PUSH1 0x40 000001d3: MLOAD 000001d4: PUSH1 0x20 000001d6: DUP1 000001d7: DUP3 000001d8: MSTORE 000001d9: DUP2 000001da: SWAP1 000001db: DUP2 000001dc: ADD 000001dd: DUP4 000001de: DUP2 000001df: DUP2 000001e0: MLOAD 000001e1: DUP2 000001e2: MSTORE 000001e3: PUSH1 0x20 000001e5: ADD 000001e6: SWAP2 000001e7: POP 000001e8: DUP1 000001e9: MLOAD 000001ea: SWAP1 000001eb: PUSH1 0x20 000001ed: ADD 000001ee: SWAP1 000001ef: DUP1 000001f0: DUP4 000001f1: DUP4 000001f2: PUSH1 0x00 000001f4: JUMPDEST 000001f5: DUP4 000001f6: DUP2 000001f7: LT 000001f8: ISZERO 000001f9: PUSH2 0x020c 000001fc: JUMPI 000001fd: DUP1 000001fe: DUP3 000001ff: ADD 00000200: MLOAD 00000201: DUP4 00000202: DUP3 00000203: ADD 00000204: MSTORE 00000205: PUSH1 0x20 00000207: ADD 00000208: PUSH2 0x01f4 0000020b: JUMP 0000020c: JUMPDEST 0000020d: POP 0000020e: POP 0000020f: POP 00000210: POP 00000211: SWAP1 00000212: POP 00000213: SWAP1 00000214: DUP2 00000215: ADD 00000216: SWAP1 00000217: PUSH1 0x1f 00000219: AND 0000021a: DUP1 0000021b: ISZERO 0000021c: PUSH2 0x0239 0000021f: JUMPI 00000220: DUP1 00000221: DUP3 00000222: SUB 00000223: DUP1 00000224: MLOAD 00000225: PUSH1 0x01 00000227: DUP4 00000228: PUSH1 0x20 0000022a: SUB 0000022b: PUSH2 0x0100 0000022e: EXP 0000022f: SUB 00000230: NOT 00000231: AND 00000232: DUP2 00000233: MSTORE 00000234: PUSH1 0x20 00000236: ADD 00000237: SWAP2 00000238: POP 00000239: JUMPDEST 0000023a: POP 0000023b: SWAP3 0000023c: POP 0000023d: POP 0000023e: POP 0000023f: PUSH1 0x40 00000241: MLOAD 00000242: DUP1 00000243: SWAP2 00000244: SUB 00000245: SWAP1 00000246: RETURN 00000247: JUMPDEST 00000248: CALLVALUE 00000249: ISZERO 0000024a: PUSH2 0x0252 0000024d: JUMPI 0000024e: PUSH1 0x00 00000250: DUP1 00000251: REVERT 00000252: JUMPDEST 00000253: PUSH2 0x01ab 00000256: PUSH1 0x04 00000258: CALLDATALOAD 00000259: PUSH2 0x089c 0000025c: JUMP 0000025d: JUMPDEST 0000025e: CALLVALUE 0000025f: ISZERO 00000260: PUSH2 0x0268 00000263: JUMPI 00000264: PUSH1 0x00 00000266: DUP1 00000267: REVERT 00000268: JUMPDEST 00000269: PUSH2 0x01ab 0000026c: PUSH2 0x08d1 0000026f: JUMP 00000270: JUMPDEST 00000271: CALLVALUE 00000272: ISZERO 00000273: PUSH2 0x027b 00000276: JUMPI 00000277: PUSH1 0x00 00000279: DUP1 0000027a: REVERT 0000027b: JUMPDEST 0000027c: PUSH2 0x01ab 0000027f: PUSH1 0x04 00000281: CALLDATALOAD 00000282: PUSH2 0x08d8 00000285: JUMP 00000286: JUMPDEST 00000287: CALLVALUE 00000288: ISZERO 00000289: PUSH2 0x0291 0000028c: JUMPI 0000028d: PUSH1 0x00 0000028f: DUP1 00000290: REVERT 00000291: JUMPDEST 00000292: PUSH2 0x0299 00000295: PUSH2 0x0915 00000298: JUMP 00000299: JUMPDEST 0000029a: PUSH1 0x40 0000029c: MLOAD 0000029d: SWAP1 0000029e: ISZERO 0000029f: ISZERO 000002a0: DUP2 000002a1: MSTORE 000002a2: PUSH1 0x20 000002a4: ADD 000002a5: PUSH1 0x40 000002a7: MLOAD 000002a8: DUP1 000002a9: SWAP2 000002aa: SUB 000002ab: SWAP1 000002ac: RETURN 000002ad: JUMPDEST 000002ae: CALLVALUE 000002af: ISZERO 000002b0: PUSH2 0x02b8 000002b3: JUMPI 000002b4: PUSH1 0x00 000002b6: DUP1 000002b7: REVERT 000002b8: JUMPDEST 000002b9: PUSH2 0x02c0 000002bc: PUSH2 0x091e 000002bf: JUMP 000002c0: JUMPDEST 000002c1: PUSH1 0x40 000002c3: MLOAD 000002c4: PUSH1 0xff 000002c6: SWAP1 000002c7: SWAP2 000002c8: AND 000002c9: DUP2 000002ca: MSTORE 000002cb: PUSH1 0x20 000002cd: ADD 000002ce: PUSH1 0x40 000002d0: MLOAD 000002d1: DUP1 000002d2: SWAP2 000002d3: SUB 000002d4: SWAP1 000002d5: RETURN 000002d6: JUMPDEST 000002d7: CALLVALUE 000002d8: ISZERO 000002d9: PUSH2 0x02e1 000002dc: JUMPI 000002dd: PUSH1 0x00 000002df: DUP1 000002e0: REVERT 000002e1: JUMPDEST 000002e2: PUSH2 0x0299 000002e5: PUSH1 0x04 000002e7: CALLDATALOAD 000002e8: PUSH2 0x0923 000002eb: JUMP 000002ec: JUMPDEST 000002ed: CALLVALUE 000002ee: ISZERO 000002ef: PUSH2 0x02f7 000002f2: JUMPI 000002f3: PUSH1 0x00 000002f5: DUP1 000002f6: REVERT 000002f7: JUMPDEST 000002f8: PUSH2 0x02ff 000002fb: PUSH2 0x0938 000002fe: JUMP 000002ff: JUMPDEST 00000300: STOP 00000301: JUMPDEST 00000302: CALLVALUE 00000303: ISZERO 00000304: PUSH2 0x030c 00000307: JUMPI 00000308: PUSH1 0x00 0000030a: DUP1 0000030b: REVERT 0000030c: JUMPDEST 0000030d: PUSH2 0x01ab 00000310: PUSH2 0x0ab0 00000313: JUMP 00000314: JUMPDEST 00000315: CALLVALUE 00000316: ISZERO 00000317: PUSH2 0x031f 0000031a: JUMPI 0000031b: PUSH1 0x00 0000031d: DUP1 0000031e: REVERT 0000031f: JUMPDEST 00000320: PUSH2 0x01ab 00000323: PUSH2 0x0af2 00000326: JUMP 00000327: JUMPDEST 00000328: CALLVALUE 00000329: ISZERO 0000032a: PUSH2 0x0332 0000032d: JUMPI 0000032e: PUSH1 0x00 00000330: DUP1 00000331: REVERT 00000332: JUMPDEST 00000333: PUSH2 0x01ab 00000336: PUSH2 0x0af8 00000339: JUMP 0000033a: JUMPDEST 0000033b: CALLVALUE 0000033c: ISZERO 0000033d: PUSH2 0x0345 00000340: JUMPI 00000341: PUSH1 0x00 00000343: DUP1 00000344: REVERT 00000345: JUMPDEST 00000346: PUSH2 0x01ab 00000349: PUSH1 0x04 0000034b: CALLDATALOAD 0000034c: ISZERO 0000034d: ISZERO 0000034e: PUSH2 0x0afe 00000351: JUMP 00000352: JUMPDEST 00000353: CALLVALUE 00000354: ISZERO 00000355: PUSH2 0x035d 00000358: JUMPI 00000359: PUSH1 0x00 0000035b: DUP1 0000035c: REVERT 0000035d: JUMPDEST 0000035e: PUSH2 0x01ab 00000361: PUSH2 0x0b41 00000364: JUMP 00000365: JUMPDEST 00000366: CALLVALUE 00000367: ISZERO 00000368: PUSH2 0x0370 0000036b: JUMPI 0000036c: PUSH1 0x00 0000036e: DUP1 0000036f: REVERT 00000370: JUMPDEST 00000371: PUSH2 0x01ab 00000374: PUSH1 0x01 00000376: PUSH1 0xa0 00000378: PUSH1 0x02 0000037a: EXP 0000037b: SUB 0000037c: PUSH1 0x04 0000037e: CALLDATALOAD 0000037f: AND 00000380: PUSH2 0x0b4f 00000383: JUMP 00000384: JUMPDEST 00000385: CALLVALUE 00000386: ISZERO 00000387: PUSH2 0x038f 0000038a: JUMPI 0000038b: PUSH1 0x00 0000038d: DUP1 0000038e: REVERT 0000038f: JUMPDEST 00000390: PUSH2 0x02ff 00000393: PUSH1 0x04 00000395: CALLDATALOAD 00000396: PUSH2 0x0b6a 00000399: JUMP 0000039a: JUMPDEST 0000039b: CALLVALUE 0000039c: ISZERO 0000039d: PUSH2 0x03a5 000003a0: JUMPI 000003a1: PUSH1 0x00 000003a3: DUP1 000003a4: REVERT 000003a5: JUMPDEST 000003a6: PUSH2 0x01ab 000003a9: PUSH2 0x0bc1 000003ac: JUMP 000003ad: JUMPDEST 000003ae: CALLVALUE 000003af: ISZERO 000003b0: PUSH2 0x03b8 000003b3: JUMPI 000003b4: PUSH1 0x00 000003b6: DUP1 000003b7: REVERT 000003b8: JUMPDEST 000003b9: PUSH2 0x02ff 000003bc: PUSH1 0x04 000003be: CALLDATALOAD 000003bf: PUSH1 0x24 000003c1: CALLDATALOAD 000003c2: ISZERO 000003c3: ISZERO 000003c4: PUSH2 0x0bf6 000003c7: JUMP 000003c8: JUMPDEST 000003c9: CALLVALUE 000003ca: ISZERO 000003cb: PUSH2 0x03d3 000003ce: JUMPI 000003cf: PUSH1 0x00 000003d1: DUP1 000003d2: REVERT 000003d3: JUMPDEST 000003d4: PUSH2 0x01ab 000003d7: PUSH2 0x0c68 000003da: JUMP 000003db: JUMPDEST 000003dc: CALLVALUE 000003dd: ISZERO 000003de: PUSH2 0x03e6 000003e1: JUMPI 000003e2: PUSH1 0x00 000003e4: DUP1 000003e5: REVERT 000003e6: JUMPDEST 000003e7: PUSH2 0x01d0 000003ea: PUSH2 0x0c7a 000003ed: JUMP 000003ee: JUMPDEST 000003ef: CALLVALUE 000003f0: ISZERO 000003f1: PUSH2 0x03f9 000003f4: JUMPI 000003f5: PUSH1 0x00 000003f7: DUP1 000003f8: REVERT 000003f9: JUMPDEST 000003fa: PUSH2 0x02ff 000003fd: PUSH2 0x0ce5 00000400: JUMP 00000401: JUMPDEST 00000402: CALLVALUE 00000403: ISZERO 00000404: PUSH2 0x040c 00000407: JUMPI 00000408: PUSH1 0x00 0000040a: DUP1 0000040b: REVERT 0000040c: JUMPDEST 0000040d: PUSH2 0x0299 00000410: PUSH1 0x01 00000412: PUSH1 0xa0 00000414: PUSH1 0x02 00000416: EXP 00000417: SUB 00000418: PUSH1 0x04 0000041a: CALLDATALOAD 0000041b: AND 0000041c: PUSH1 0x24 0000041e: CALLDATALOAD 0000041f: PUSH2 0x0d43 00000422: JUMP 00000423: JUMPDEST 00000424: CALLVALUE 00000425: ISZERO 00000426: PUSH2 0x042e 00000429: JUMPI 0000042a: PUSH1 0x00 0000042c: DUP1 0000042d: REVERT 0000042e: JUMPDEST 0000042f: PUSH2 0x02ff 00000432: PUSH1 0x04 00000434: PUSH1 0x24 00000436: DUP2 00000437: CALLDATALOAD 00000438: DUP2 00000439: DUP2 0000043a: ADD 0000043b: SWAP1 0000043c: DUP4 0000043d: ADD 0000043e: CALLDATALOAD 0000043f: DUP1 00000440: PUSH1 0x20 00000442: PUSH1 0x1f 00000444: DUP3 00000445: ADD 00000446: DUP2 00000447: SWAP1 00000448: DIV 00000449: DUP2 0000044a: MUL 0000044b: ADD 0000044c: PUSH1 0x40 0000044e: MLOAD 0000044f: SWAP1 00000450: DUP2 00000451: ADD 00000452: PUSH1 0x40 00000454: MSTORE 00000455: DUP2 00000456: DUP2 00000457: MSTORE 00000458: SWAP3 00000459: SWAP2 0000045a: SWAP1 0000045b: PUSH1 0x20 0000045d: DUP5 0000045e: ADD 0000045f: DUP4 00000460: DUP4 00000461: DUP1 00000462: DUP3 00000463: DUP5 00000464: CALLDATACOPY 00000465: POP 00000466: SWAP5 00000467: SWAP7 00000468: POP 00000469: PUSH2 0x0eab 0000046c: SWAP6 0000046d: POP 0000046e: POP 0000046f: POP 00000470: POP 00000471: POP 00000472: POP 00000473: JUMP 00000474: JUMPDEST 00000475: CALLVALUE 00000476: ISZERO 00000477: PUSH2 0x047f 0000047a: JUMPI 0000047b: PUSH1 0x00 0000047d: DUP1 0000047e: REVERT 0000047f: JUMPDEST 00000480: PUSH2 0x02ff 00000483: PUSH1 0x04 00000485: PUSH1 0x24 00000487: DUP2 00000488: CALLDATALOAD 00000489: DUP2 0000048a: DUP2 0000048b: ADD 0000048c: SWAP1 0000048d: DUP4 0000048e: ADD 0000048f: CALLDATALOAD 00000490: DUP1 00000491: PUSH1 0x20 00000493: PUSH1 0x1f 00000495: DUP3 00000496: ADD 00000497: DUP2 00000498: SWAP1 00000499: DIV 0000049a: DUP2 0000049b: MUL 0000049c: ADD 0000049d: PUSH1 0x40 0000049f: MLOAD 000004a0: SWAP1 000004a1: DUP2 000004a2: ADD 000004a3: PUSH1 0x40 000004a5: MSTORE 000004a6: DUP2 000004a7: DUP2 000004a8: MSTORE 000004a9: SWAP3 000004aa: SWAP2 000004ab: SWAP1 000004ac: PUSH1 0x20 000004ae: DUP5 000004af: ADD 000004b0: DUP4 000004b1: DUP4 000004b2: DUP1 000004b3: DUP3 000004b4: DUP5 000004b5: CALLDATACOPY 000004b6: POP 000004b7: SWAP5 000004b8: SWAP7 000004b9: POP 000004ba: PUSH2 0x0f14 000004bd: SWAP6 000004be: POP 000004bf: POP 000004c0: POP 000004c1: POP 000004c2: POP 000004c3: POP 000004c4: JUMP 000004c5: JUMPDEST 000004c6: CALLVALUE 000004c7: ISZERO 000004c8: PUSH2 0x04d0 000004cb: JUMPI 000004cc: PUSH1 0x00 000004ce: DUP1 000004cf: REVERT 000004d0: JUMPDEST 000004d1: PUSH2 0x02ff 000004d4: PUSH2 0x0f78 000004d7: JUMP 000004d8: JUMPDEST 000004d9: CALLVALUE 000004da: ISZERO 000004db: PUSH2 0x04e3 000004de: JUMPI 000004df: PUSH1 0x00 000004e1: DUP1 000004e2: REVERT 000004e3: JUMPDEST 000004e4: PUSH2 0x02ff 000004e7: PUSH1 0x04 000004e9: CALLDATALOAD 000004ea: PUSH2 0x102b 000004ed: JUMP 000004ee: JUMPDEST 000004ef: CALLVALUE 000004f0: ISZERO 000004f1: PUSH2 0x04f9 000004f4: JUMPI 000004f5: PUSH1 0x00 000004f7: DUP1 000004f8: REVERT 000004f9: JUMPDEST 000004fa: PUSH2 0x02ff 000004fd: PUSH2 0x1166 00000500: JUMP 00000501: JUMPDEST 00000502: CALLVALUE 00000503: ISZERO 00000504: PUSH2 0x050c 00000507: JUMPI 00000508: PUSH1 0x00 0000050a: DUP1 0000050b: REVERT 0000050c: JUMPDEST 0000050d: PUSH2 0x01ab 00000510: PUSH2 0x119d 00000513: JUMP 00000514: JUMPDEST 00000515: PUSH2 0x01ab 00000518: PUSH1 0x01 0000051a: PUSH1 0xa0 0000051c: PUSH1 0x02 0000051e: EXP 0000051f: SUB 00000520: PUSH1 0x04 00000522: CALLDATALOAD 00000523: AND 00000524: PUSH2 0x11b9 00000527: JUMP 00000528: JUMPDEST 00000529: CALLVALUE 0000052a: ISZERO 0000052b: PUSH2 0x0533 0000052e: JUMPI 0000052f: PUSH1 0x00 00000531: DUP1 00000532: REVERT 00000533: JUMPDEST 00000534: PUSH2 0x02ff 00000537: PUSH2 0x11c5 0000053a: JUMP 0000053b: JUMPDEST 0000053c: PUSH1 0x0d 0000053e: DUP3 0000053f: SWAP1 00000540: SSTORE 00000541: PUSH1 0x00 00000543: CALLER 00000544: DUP2 00000545: DUP1 00000546: DUP1 00000547: JUMPDEST 00000548: PUSH1 0x08 0000054a: SLOAD 0000054b: DUP3 0000054c: LT 0000054d: ISZERO 0000054e: PUSH2 0x0599 00000551: JUMPI 00000552: DUP4 00000553: PUSH1 0x01 00000555: PUSH1 0xa0 00000557: PUSH1 0x02 00000559: EXP 0000055a: SUB 0000055b: AND 0000055c: PUSH1 0x08 0000055e: DUP4 0000055f: DUP2 00000560: SLOAD 00000561: DUP2 00000562: LT 00000563: ISZERO 00000564: ISZERO 00000565: PUSH2 0x056a 00000568: JUMPI 00000569: INVALID 0000056a: JUMPDEST 0000056b: PUSH1 0x00 0000056d: SWAP2 0000056e: DUP3 0000056f: MSTORE 00000570: PUSH1 0x20 00000572: SWAP1 00000573: SWAP2 00000574: KECCAK256 00000575: ADD 00000576: SLOAD 00000577: PUSH1 0x01 00000579: PUSH1 0xa0 0000057b: PUSH1 0x02 0000057d: EXP 0000057e: SUB 0000057f: AND 00000580: EQ 00000581: ISZERO 00000582: PUSH2 0x058e 00000585: JUMPI 00000586: PUSH1 0x01 00000588: SWAP3 00000589: POP 0000058a: PUSH2 0x0599 0000058d: JUMP 0000058e: JUMPDEST 0000058f: PUSH1 0x01 00000591: SWAP1 00000592: SWAP2 00000593: ADD 00000594: SWAP1 00000595: PUSH2 0x0547 00000598: JUMP 00000599: JUMPDEST 0000059a: DUP3 0000059b: ISZERO 0000059c: ISZERO 0000059d: PUSH2 0x05f1 000005a0: JUMPI 000005a1: PUSH1 0x0c 000005a3: DUP1 000005a4: SLOAD 000005a5: PUSH1 0x01 000005a7: SWAP1 000005a8: DUP2 000005a9: ADD 000005aa: SWAP1 000005ab: SWAP2 000005ac: SSTORE 000005ad: PUSH1 0x08 000005af: DUP1 000005b0: SLOAD 000005b1: SWAP1 000005b2: SWAP2 000005b3: DUP2 000005b4: ADD 000005b5: PUSH2 0x05be 000005b8: DUP4 000005b9: DUP3 000005ba: PUSH2 0x1621 000005bd: JUMP 000005be: JUMPDEST 000005bf: POP 000005c0: PUSH1 0x00 000005c2: SWAP2 000005c3: DUP3 000005c4: MSTORE 000005c5: PUSH1 0x20 000005c7: SWAP1 000005c8: SWAP2 000005c9: KECCAK256 000005ca: ADD 000005cb: DUP1 000005cc: SLOAD 000005cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005e2: NOT 000005e3: AND 000005e4: PUSH1 0x01 000005e6: PUSH1 0xa0 000005e8: PUSH1 0x02 000005ea: EXP 000005eb: SUB 000005ec: DUP7 000005ed: AND 000005ee: OR 000005ef: SWAP1 000005f0: SSTORE 000005f1: JUMPDEST 000005f2: PUSH2 0x0600 000005f5: DUP8 000005f6: PUSH1 0x55 000005f8: PUSH1 0x64 000005fa: PUSH1 0x12 000005fc: PUSH2 0x129a 000005ff: JUMP 00000600: JUMPDEST 00000601: PUSH1 0x0e 00000603: SSTORE 00000604: PUSH2 0x061a 00000607: PUSH2 0x0615 0000060a: DUP9 0000060b: PUSH1 0x55 0000060d: PUSH1 0x64 0000060f: PUSH1 0x12 00000611: PUSH2 0x129a 00000614: JUMP 00000615: JUMPDEST 00000616: PUSH2 0x12df 00000619: JUMP 0000061a: JUMPDEST 0000061b: SWAP1 0000061c: POP 0000061d: PUSH1 0x00 0000061f: PUSH1 0x09 00000621: SLOAD 00000622: GT 00000623: ISZERO 00000624: PUSH2 0x063b 00000627: JUMPI 00000628: PUSH2 0x0633 0000062b: PUSH1 0x09 0000062d: SLOAD 0000062e: DUP3 0000062f: PUSH2 0x1370 00000632: JUMP 00000633: JUMPDEST 00000634: PUSH1 0x09 00000636: SSTORE 00000637: PUSH2 0x0641 0000063a: JUMP 0000063b: JUMPDEST 0000063c: PUSH1 0x09 0000063e: DUP2 0000063f: SWAP1 00000640: SSTORE 00000641: JUMPDEST 00000642: PUSH1 0x01 00000644: PUSH1 0xa0 00000646: PUSH1 0x02 00000648: EXP 00000649: SUB 0000064a: DUP5 0000064b: AND 0000064c: PUSH1 0x00 0000064e: SWAP1 0000064f: DUP2 00000650: MSTORE 00000651: PUSH1 0x03 00000653: PUSH1 0x20 00000655: MSTORE 00000656: PUSH1 0x40 00000658: SWAP1 00000659: KECCAK256 0000065a: SLOAD 0000065b: PUSH2 0x0664 0000065e: SWAP1 0000065f: DUP3 00000660: PUSH2 0x1370 00000663: JUMP 00000664: JUMPDEST 00000665: PUSH1 0x01 00000667: PUSH1 0xa0 00000669: PUSH1 0x02 0000066b: EXP 0000066c: SUB 0000066d: DUP6 0000066e: AND 0000066f: PUSH1 0x00 00000671: SWAP1 00000672: DUP2 00000673: MSTORE 00000674: PUSH1 0x03 00000676: PUSH1 0x20 00000678: MSTORE 00000679: PUSH1 0x40 0000067b: DUP2 0000067c: KECCAK256 0000067d: SWAP2 0000067e: SWAP1 0000067f: SWAP2 00000680: SSTORE 00000681: DUP2 00000682: GT 00000683: DUP1 00000684: ISZERO 00000685: PUSH2 0x0698 00000688: JUMPI 00000689: POP 0000068a: PUSH1 0x09 0000068c: SLOAD 0000068d: PUSH2 0x0696 00000690: DUP3 00000691: DUP3 00000692: PUSH2 0x1370 00000695: JUMP 00000696: JUMPDEST 00000697: GT 00000698: JUMPDEST 00000699: ISZERO 0000069a: ISZERO 0000069b: PUSH2 0x06a3 0000069e: JUMPI 0000069f: PUSH1 0x00 000006a1: DUP1 000006a2: REVERT 000006a3: JUMPDEST 000006a4: PUSH1 0x01 000006a6: PUSH1 0xa0 000006a8: PUSH1 0x02 000006aa: EXP 000006ab: SUB 000006ac: DUP7 000006ad: AND 000006ae: ISZERO 000006af: DUP1 000006b0: ISZERO 000006b1: SWAP1 000006b2: PUSH2 0x06cd 000006b5: JUMPI 000006b6: POP 000006b7: DUP4 000006b8: PUSH1 0x01 000006ba: PUSH1 0xa0 000006bc: PUSH1 0x02 000006be: EXP 000006bf: SUB 000006c0: AND 000006c1: DUP7 000006c2: PUSH1 0x01 000006c4: PUSH1 0xa0 000006c6: PUSH1 0x02 000006c8: EXP 000006c9: SUB 000006ca: AND 000006cb: EQ 000006cc: ISZERO 000006cd: JUMPDEST 000006ce: DUP1 000006cf: ISZERO 000006d0: PUSH2 0x06f3 000006d3: JUMPI 000006d4: POP 000006d5: PUSH1 0x02 000006d7: SLOAD 000006d8: PUSH1 0x01 000006da: PUSH1 0xa0 000006dc: PUSH1 0x02 000006de: EXP 000006df: SUB 000006e0: DUP8 000006e1: AND 000006e2: PUSH1 0x00 000006e4: SWAP1 000006e5: DUP2 000006e6: MSTORE 000006e7: PUSH1 0x03 000006e9: PUSH1 0x20 000006eb: MSTORE 000006ec: PUSH1 0x40 000006ee: SWAP1 000006ef: KECCAK256 000006f0: SLOAD 000006f1: LT 000006f2: ISZERO 000006f3: JUMPDEST 000006f4: ISZERO 000006f5: PUSH2 0x0766 000006f8: JUMPI 000006f9: PUSH2 0x0707 000006fc: DUP8 000006fd: PUSH1 0x05 000006ff: PUSH1 0x64 00000701: PUSH1 0x12 00000703: PUSH2 0x129a 00000706: JUMP 00000707: JUMPDEST 00000708: PUSH1 0x01 0000070a: PUSH1 0xa0 0000070c: PUSH1 0x02 0000070e: EXP 0000070f: SUB 00000710: DUP8 00000711: AND 00000712: PUSH1 0x00 00000714: SWAP1 00000715: DUP2 00000716: MSTORE 00000717: PUSH1 0x04 00000719: PUSH1 0x20 0000071b: MSTORE 0000071c: PUSH1 0x40 0000071e: SWAP1 0000071f: KECCAK256 00000720: DUP1 00000721: SLOAD 00000722: SWAP1 00000723: SWAP2 00000724: ADD 00000725: SWAP1 00000726: SSTORE 00000727: PUSH2 0x0735 0000072a: DUP8 0000072b: PUSH1 0x05 0000072d: PUSH1 0x64 0000072f: PUSH1 0x12 00000731: PUSH2 0x129a 00000734: JUMP 00000735: JUMPDEST 00000736: PUSH1 0x12 00000738: DUP1 00000739: SLOAD 0000073a: SWAP1 0000073b: SWAP2 0000073c: ADD 0000073d: SWAP1 0000073e: SSTORE 0000073f: PUSH1 0x0c 00000741: SLOAD 00000742: PUSH1 0x00 00000744: SWAP1 00000745: GT 00000746: ISZERO 00000747: PUSH2 0x0761 0000074a: JUMPI 0000074b: PUSH2 0x0761 0000074e: PUSH2 0x075c 00000751: DUP9 00000752: PUSH1 0x0a 00000754: PUSH1 0x64 00000756: PUSH1 0x12 00000758: PUSH2 0x129a 0000075b: JUMP 0000075c: JUMPDEST 0000075d: PUSH2 0x1386 00000760: JUMP 00000761: JUMPDEST 00000762: PUSH2 0x0783 00000765: JUMP 00000766: JUMPDEST 00000767: PUSH1 0x00 00000769: PUSH1 0x0c 0000076b: SLOAD 0000076c: GT 0000076d: ISZERO 0000076e: PUSH2 0x0783 00000771: JUMPI 00000772: PUSH2 0x0783 00000775: PUSH2 0x075c 00000778: DUP9 00000779: PUSH1 0x0f 0000077b: PUSH1 0x64 0000077d: PUSH1 0x12 0000077f: PUSH2 0x129a 00000782: JUMP 00000783: JUMPDEST 00000784: DUP6 00000785: PUSH1 0x01 00000787: PUSH1 0xa0 00000789: PUSH1 0x02 0000078b: EXP 0000078c: SUB 0000078d: AND 0000078e: DUP5 0000078f: PUSH1 0x01 00000791: PUSH1 0xa0 00000793: PUSH1 0x02 00000795: EXP 00000796: SUB 00000797: AND 00000798: PUSH32 0x022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5 000007b9: DUP10 000007ba: DUP5 000007bb: PUSH1 0x40 000007bd: MLOAD 000007be: SWAP2 000007bf: DUP3 000007c0: MSTORE 000007c1: PUSH1 0x20 000007c3: DUP3 000007c4: ADD 000007c5: MSTORE 000007c6: PUSH1 0x40 000007c8: SWAP1 000007c9: DUP2 000007ca: ADD 000007cb: SWAP1 000007cc: MLOAD 000007cd: DUP1 000007ce: SWAP2 000007cf: SUB 000007d0: SWAP1 000007d1: LOG3 000007d2: PUSH1 0x0b 000007d4: DUP1 000007d5: SLOAD 000007d6: DUP3 000007d7: ADD 000007d8: SWAP1 000007d9: SSTORE 000007da: SWAP7 000007db: SWAP6 000007dc: POP 000007dd: POP 000007de: POP 000007df: POP 000007e0: POP 000007e1: POP 000007e2: JUMP 000007e3: JUMPDEST 000007e4: PUSH1 0x01 000007e6: PUSH1 0xa0 000007e8: PUSH1 0x02 000007ea: EXP 000007eb: SUB 000007ec: AND 000007ed: PUSH1 0x00 000007ef: SWAP1 000007f0: DUP2 000007f1: MSTORE 000007f2: PUSH1 0x05 000007f4: PUSH1 0x20 000007f6: MSTORE 000007f7: PUSH1 0x40 000007f9: SWAP1 000007fa: KECCAK256 000007fb: SLOAD 000007fc: SWAP1 000007fd: JUMP 000007fe: JUMPDEST 000007ff: PUSH1 0x00 00000801: DUP1 00000802: SLOAD 00000803: PUSH1 0x01 00000805: DUP2 00000806: PUSH1 0x01 00000808: AND 00000809: ISZERO 0000080a: PUSH2 0x0100 0000080d: MUL 0000080e: SUB 0000080f: AND 00000810: PUSH1 0x02 00000812: SWAP1 00000813: DIV 00000814: DUP1 00000815: PUSH1 0x1f 00000817: ADD 00000818: PUSH1 0x20 0000081a: DUP1 0000081b: SWAP2 0000081c: DIV 0000081d: MUL 0000081e: PUSH1 0x20 00000820: ADD 00000821: PUSH1 0x40 00000823: MLOAD 00000824: SWAP1 00000825: DUP2 00000826: ADD 00000827: PUSH1 0x40 00000829: MSTORE 0000082a: DUP1 0000082b: SWAP3 0000082c: SWAP2 0000082d: SWAP1 0000082e: DUP2 0000082f: DUP2 00000830: MSTORE 00000831: PUSH1 0x20 00000833: ADD 00000834: DUP3 00000835: DUP1 00000836: SLOAD 00000837: PUSH1 0x01 00000839: DUP2 0000083a: PUSH1 0x01 0000083c: AND 0000083d: ISZERO 0000083e: PUSH2 0x0100 00000841: MUL 00000842: SUB 00000843: AND 00000844: PUSH1 0x02 00000846: SWAP1 00000847: DIV 00000848: DUP1 00000849: ISZERO 0000084a: PUSH2 0x0894 0000084d: JUMPI 0000084e: DUP1 0000084f: PUSH1 0x1f 00000851: LT 00000852: PUSH2 0x0869 00000855: JUMPI 00000856: PUSH2 0x0100 00000859: DUP1 0000085a: DUP4 0000085b: SLOAD 0000085c: DIV 0000085d: MUL 0000085e: DUP4 0000085f: MSTORE 00000860: SWAP2 00000861: PUSH1 0x20 00000863: ADD 00000864: SWAP2 00000865: PUSH2 0x0894 00000868: JUMP 00000869: JUMPDEST 0000086a: DUP3 0000086b: ADD 0000086c: SWAP2 0000086d: SWAP1 0000086e: PUSH1 0x00 00000870: MSTORE 00000871: PUSH1 0x20 00000873: PUSH1 0x00 00000875: KECCAK256 00000876: SWAP1 00000877: JUMPDEST 00000878: DUP2 00000879: SLOAD 0000087a: DUP2 0000087b: MSTORE 0000087c: SWAP1 0000087d: PUSH1 0x01 0000087f: ADD 00000880: SWAP1 00000881: PUSH1 0x20 00000883: ADD 00000884: DUP1 00000885: DUP4 00000886: GT 00000887: PUSH2 0x0877 0000088a: JUMPI 0000088b: DUP3 0000088c: SWAP1 0000088d: SUB 0000088e: PUSH1 0x1f 00000890: AND 00000891: DUP3 00000892: ADD 00000893: SWAP2 00000894: JUMPDEST 00000895: POP 00000896: POP 00000897: POP 00000898: POP 00000899: POP 0000089a: DUP2 0000089b: JUMP 0000089c: JUMPDEST 0000089d: PUSH1 0x00 0000089f: DUP1 000008a0: PUSH1 0x00 000008a2: DUP1 000008a3: PUSH2 0x08b1 000008a6: DUP6 000008a7: PUSH1 0x0f 000008a9: PUSH1 0x64 000008ab: PUSH1 0x12 000008ad: PUSH2 0x129a 000008b0: JUMP 000008b1: JUMPDEST 000008b2: SWAP3 000008b3: POP 000008b4: PUSH2 0x08bd 000008b7: DUP6 000008b8: DUP5 000008b9: PUSH2 0x1577 000008bc: JUMP 000008bd: JUMPDEST 000008be: SWAP2 000008bf: POP 000008c0: PUSH2 0x08c8 000008c3: DUP3 000008c4: PUSH2 0x12df 000008c7: JUMP 000008c8: JUMPDEST 000008c9: SWAP6 000008ca: SWAP5 000008cb: POP 000008cc: POP 000008cd: POP 000008ce: POP 000008cf: POP 000008d0: JUMP 000008d1: JUMPDEST 000008d2: PUSH1 0x09 000008d4: SLOAD 000008d5: JUMPDEST 000008d6: SWAP1 000008d7: JUMP 000008d8: JUMPDEST 000008d9: PUSH1 0x00 000008db: DUP1 000008dc: PUSH1 0x00 000008de: DUP1 000008df: PUSH1 0x09 000008e1: SLOAD 000008e2: DUP6 000008e3: GT 000008e4: ISZERO 000008e5: ISZERO 000008e6: ISZERO 000008e7: PUSH2 0x08ef 000008ea: JUMPI 000008eb: PUSH1 0x00 000008ed: DUP1 000008ee: REVERT 000008ef: JUMPDEST 000008f0: PUSH2 0x08f8 000008f3: DUP6 000008f4: PUSH2 0x1589 000008f7: JUMP 000008f8: JUMPDEST 000008f9: SWAP3 000008fa: POP 000008fb: PUSH2 0x0909 000008fe: DUP4 000008ff: PUSH1 0x0a 00000901: PUSH1 0x64 00000903: PUSH1 0x12 00000905: PUSH2 0x129a 00000908: JUMP 00000909: JUMPDEST 0000090a: SWAP2 0000090b: POP 0000090c: PUSH2 0x08c8 0000090f: DUP4 00000910: DUP4 00000911: PUSH2 0x1577 00000914: JUMP 00000915: JUMPDEST 00000916: PUSH1 0x15 00000918: SLOAD 00000919: PUSH1 0xff 0000091b: AND 0000091c: DUP2 0000091d: JUMP 0000091e: JUMPDEST 0000091f: PUSH1 0x12 00000921: DUP2 00000922: JUMP 00000923: JUMPDEST 00000924: PUSH1 0x14 00000926: PUSH1 0x20 00000928: MSTORE 00000929: PUSH1 0x00 0000092b: SWAP1 0000092c: DUP2 0000092d: MSTORE 0000092e: PUSH1 0x40 00000930: SWAP1 00000931: KECCAK256 00000932: SLOAD 00000933: PUSH1 0xff 00000935: AND 00000936: DUP2 00000937: JUMP 00000938: JUMPDEST 00000939: PUSH1 0x00 0000093b: DUP1 0000093c: PUSH1 0x00 0000093e: DUP1 0000093f: PUSH1 0x00 00000941: DUP1 00000942: PUSH2 0x094b 00000945: PUSH1 0x01 00000947: PUSH2 0x0afe 0000094a: JUMP 0000094b: JUMPDEST 0000094c: GT 0000094d: PUSH2 0x0955 00000950: JUMPI 00000951: PUSH1 0x00 00000953: DUP1 00000954: REVERT 00000955: JUMPDEST 00000956: CALLER 00000957: SWAP5 00000958: POP 00000959: PUSH2 0x0962 0000095c: PUSH1 0x01 0000095e: PUSH2 0x0afe 00000961: JUMP 00000962: JUMPDEST 00000963: SWAP4 00000964: POP 00000965: PUSH2 0x0973 00000968: DUP5 00000969: PUSH1 0x0a 0000096b: PUSH1 0x64 0000096d: PUSH1 0x12 0000096f: PUSH2 0x129a 00000972: JUMP 00000973: JUMPDEST 00000974: SWAP3 00000975: POP 00000976: PUSH2 0x0984 00000979: DUP5 0000097a: PUSH1 0x0a 0000097c: PUSH1 0x64 0000097e: PUSH1 0x12 00000980: PUSH2 0x129a 00000983: JUMP 00000984: JUMPDEST 00000985: PUSH1 0x01 00000987: PUSH1 0xa0 00000989: PUSH1 0x02 0000098b: EXP 0000098c: SUB 0000098d: DUP7 0000098e: AND 0000098f: PUSH1 0x00 00000991: SWAP1 00000992: DUP2 00000993: MSTORE 00000994: PUSH1 0x05 00000996: PUSH1 0x20 00000998: SWAP1 00000999: DUP2 0000099a: MSTORE 0000099b: PUSH1 0x40 0000099d: DUP1 0000099e: DUP4 0000099f: KECCAK256 000009a0: DUP4 000009a1: SWAP1 000009a2: SSTORE 000009a3: PUSH1 0x04 000009a5: SWAP1 000009a6: SWAP2 000009a7: MSTORE 000009a8: DUP1 000009a9: DUP3 000009aa: KECCAK256 000009ab: SWAP2 000009ac: SWAP1 000009ad: SWAP2 000009ae: SSTORE 000009af: SWAP1 000009b0: SWAP3 000009b1: POP 000009b2: PUSH20 0x9e4f01bf4d6aa5c583bcb84462e32e8a5ce6195f 000009c7: SWAP1 000009c8: DUP4 000009c9: ISZERO 000009ca: PUSH2 0x08fc 000009cd: MUL 000009ce: SWAP1 000009cf: DUP5 000009d0: SWAP1 000009d1: MLOAD 000009d2: PUSH1 0x00 000009d4: PUSH1 0x40 000009d6: MLOAD 000009d7: DUP1 000009d8: DUP4 000009d9: SUB 000009da: DUP2 000009db: DUP6 000009dc: DUP9 000009dd: DUP9 000009de: CALL 000009df: SWAP4 000009e0: POP 000009e1: POP 000009e2: POP 000009e3: POP 000009e4: ISZERO 000009e5: ISZERO 000009e6: PUSH2 0x09ee 000009e9: JUMPI 000009ea: PUSH1 0x00 000009ec: DUP1 000009ed: REVERT 000009ee: JUMPDEST 000009ef: PUSH20 0xb0e9ff0c19b7147bfdeb81f0e1d3089efec4fbcd 00000a04: DUP4 00000a05: ISZERO 00000a06: PUSH2 0x08fc 00000a09: MUL 00000a0a: DUP5 00000a0b: PUSH1 0x40 00000a0d: MLOAD 00000a0e: PUSH1 0x00 00000a10: PUSH1 0x40 00000a12: MLOAD 00000a13: DUP1 00000a14: DUP4 00000a15: SUB 00000a16: DUP2 00000a17: DUP6 00000a18: DUP9 00000a19: DUP9 00000a1a: CALL 00000a1b: SWAP4 00000a1c: POP 00000a1d: POP 00000a1e: POP 00000a1f: POP 00000a20: ISZERO 00000a21: ISZERO 00000a22: PUSH2 0x0a2a 00000a25: JUMPI 00000a26: PUSH1 0x00 00000a28: DUP1 00000a29: REVERT 00000a2a: JUMPDEST 00000a2b: PUSH2 0x0a39 00000a2e: DUP5 00000a2f: PUSH1 0x50 00000a31: PUSH1 0x64 00000a33: PUSH1 0x12 00000a35: PUSH2 0x129a 00000a38: JUMP 00000a39: JUMPDEST 00000a3a: SWAP1 00000a3b: POP 00000a3c: PUSH1 0x01 00000a3e: PUSH1 0xa0 00000a40: PUSH1 0x02 00000a42: EXP 00000a43: SUB 00000a44: DUP6 00000a45: AND 00000a46: DUP2 00000a47: ISZERO 00000a48: PUSH2 0x08fc 00000a4b: MUL 00000a4c: DUP3 00000a4d: PUSH1 0x40 00000a4f: MLOAD 00000a50: PUSH1 0x00 00000a52: PUSH1 0x40 00000a54: MLOAD 00000a55: DUP1 00000a56: DUP4 00000a57: SUB 00000a58: DUP2 00000a59: DUP6 00000a5a: DUP9 00000a5b: DUP9 00000a5c: CALL 00000a5d: SWAP4 00000a5e: POP 00000a5f: POP 00000a60: POP 00000a61: POP 00000a62: ISZERO 00000a63: ISZERO 00000a64: PUSH2 0x0a6c 00000a67: JUMPI 00000a68: PUSH1 0x00 00000a6a: DUP1 00000a6b: REVERT 00000a6c: JUMPDEST 00000a6d: DUP5 00000a6e: PUSH1 0x01 00000a70: PUSH1 0xa0 00000a72: PUSH1 0x02 00000a74: EXP 00000a75: SUB 00000a76: AND 00000a77: PUSH32 0xccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc 00000a98: DUP6 00000a99: PUSH1 0x40 00000a9b: MLOAD 00000a9c: SWAP1 00000a9d: DUP2 00000a9e: MSTORE 00000a9f: PUSH1 0x20 00000aa1: ADD 00000aa2: PUSH1 0x40 00000aa4: MLOAD 00000aa5: DUP1 00000aa6: SWAP2 00000aa7: SUB 00000aa8: SWAP1 00000aa9: LOG2 00000aaa: POP 00000aab: POP 00000aac: POP 00000aad: POP 00000aae: POP 00000aaf: JUMP 00000ab0: JUMPDEST 00000ab1: PUSH1 0x00 00000ab3: DUP1 00000ab4: PUSH1 0x09 00000ab6: SLOAD 00000ab7: PUSH1 0x00 00000ab9: EQ 00000aba: ISZERO 00000abb: PUSH2 0x0ac7 00000abe: JUMPI 00000abf: PUSH1 0x00 00000ac1: SWAP2 00000ac2: POP 00000ac3: PUSH2 0x0aee 00000ac6: JUMP 00000ac7: JUMPDEST 00000ac8: PUSH2 0x0ad8 00000acb: PUSH8 0x0de0b6b3a7640000 00000ad4: PUSH2 0x1589 00000ad7: JUMP 00000ad8: JUMPDEST 00000ad9: SWAP1 00000ada: POP 00000adb: PUSH2 0x0ae9 00000ade: DUP2 00000adf: PUSH1 0x0f 00000ae1: PUSH1 0x64 00000ae3: PUSH1 0x12 00000ae5: PUSH2 0x129a 00000ae8: JUMP 00000ae9: JUMPDEST 00000aea: DUP2 00000aeb: SUB 00000aec: SWAP2 00000aed: POP 00000aee: JUMPDEST 00000aef: POP 00000af0: SWAP1 00000af1: JUMP 00000af2: JUMPDEST 00000af3: PUSH1 0x02 00000af5: SLOAD 00000af6: DUP2 00000af7: JUMP 00000af8: JUMPDEST 00000af9: PUSH1 0x0b 00000afb: SLOAD 00000afc: SWAP1 00000afd: JUMP 00000afe: JUMPDEST 00000aff: PUSH1 0x00 00000b01: CALLER 00000b02: DUP3 00000b03: PUSH2 0x0b14 00000b06: JUMPI 00000b07: PUSH2 0x0b0f 00000b0a: DUP2 00000b0b: PUSH2 0x07e3 00000b0e: JUMP 00000b0f: JUMPDEST 00000b10: PUSH2 0x0b38 00000b13: JUMP 00000b14: JUMPDEST 00000b15: PUSH1 0x01 00000b17: PUSH1 0xa0 00000b19: PUSH1 0x02 00000b1b: EXP 00000b1c: SUB 00000b1d: DUP2 00000b1e: AND 00000b1f: PUSH1 0x00 00000b21: SWAP1 00000b22: DUP2 00000b23: MSTORE 00000b24: PUSH1 0x04 00000b26: PUSH1 0x20 00000b28: MSTORE 00000b29: PUSH1 0x40 00000b2b: SWAP1 00000b2c: KECCAK256 00000b2d: SLOAD 00000b2e: PUSH2 0x0b36 00000b31: DUP3 00000b32: PUSH2 0x07e3 00000b35: JUMP 00000b36: JUMPDEST 00000b37: ADD 00000b38: JUMPDEST 00000b39: SWAP2 00000b3a: POP 00000b3b: JUMPDEST 00000b3c: POP 00000b3d: SWAP2 00000b3e: SWAP1 00000b3f: POP 00000b40: JUMP 00000b41: JUMPDEST 00000b42: PUSH1 0x01 00000b44: PUSH1 0xa0 00000b46: PUSH1 0x02 00000b48: EXP 00000b49: SUB 00000b4a: ADDRESS 00000b4b: AND 00000b4c: BALANCE 00000b4d: SWAP1 00000b4e: JUMP 00000b4f: JUMPDEST 00000b50: PUSH1 0x01 00000b52: PUSH1 0xa0 00000b54: PUSH1 0x02 00000b56: EXP 00000b57: SUB 00000b58: AND 00000b59: PUSH1 0x00 00000b5b: SWAP1 00000b5c: DUP2 00000b5d: MSTORE 00000b5e: PUSH1 0x03 00000b60: PUSH1 0x20 00000b62: MSTORE 00000b63: PUSH1 0x40 00000b65: SWAP1 00000b66: KECCAK256 00000b67: SLOAD 00000b68: SWAP1 00000b69: JUMP 00000b6a: JUMPDEST 00000b6b: CALLER 00000b6c: PUSH1 0x14 00000b6e: PUSH1 0x00 00000b70: DUP3 00000b71: PUSH1 0x40 00000b73: MLOAD 00000b74: PUSH1 0x01 00000b76: PUSH1 0xa0 00000b78: PUSH1 0x02 00000b7a: EXP 00000b7b: SUB 00000b7c: SWAP2 00000b7d: SWAP1 00000b7e: SWAP2 00000b7f: AND 00000b80: PUSH13 0x01000000000000000000000000 00000b8e: MUL 00000b8f: DUP2 00000b90: MSTORE 00000b91: PUSH1 0x14 00000b93: ADD 00000b94: PUSH1 0x40 00000b96: MLOAD 00000b97: SWAP1 00000b98: DUP2 00000b99: SWAP1 00000b9a: SUB 00000b9b: SWAP1 00000b9c: KECCAK256 00000b9d: DUP2 00000b9e: MSTORE 00000b9f: PUSH1 0x20 00000ba1: DUP2 00000ba2: ADD 00000ba3: SWAP2 00000ba4: SWAP1 00000ba5: SWAP2 00000ba6: MSTORE 00000ba7: PUSH1 0x40 00000ba9: ADD 00000baa: PUSH1 0x00 00000bac: KECCAK256 00000bad: SLOAD 00000bae: PUSH1 0xff 00000bb0: AND 00000bb1: ISZERO 00000bb2: ISZERO 00000bb3: PUSH2 0x0bbb 00000bb6: JUMPI 00000bb7: PUSH1 0x00 00000bb9: DUP1 00000bba: REVERT 00000bbb: JUMPDEST 00000bbc: POP 00000bbd: PUSH1 0x02 00000bbf: SSTORE 00000bc0: JUMP 00000bc1: JUMPDEST 00000bc2: PUSH1 0x00 00000bc4: DUP1 00000bc5: PUSH1 0x09 00000bc7: SLOAD 00000bc8: PUSH1 0x00 00000bca: EQ 00000bcb: ISZERO 00000bcc: PUSH2 0x0bdb 00000bcf: JUMPI 00000bd0: PUSH4 0x3b9aca00 00000bd5: SWAP2 00000bd6: POP 00000bd7: PUSH2 0x0aee 00000bda: JUMP 00000bdb: JUMPDEST 00000bdc: PUSH2 0x0bec 00000bdf: PUSH8 0x0de0b6b3a7640000 00000be8: PUSH2 0x1589 00000beb: JUMP 00000bec: JUMPDEST 00000bed: SWAP1 00000bee: POP 00000bef: DUP1 00000bf0: SWAP2 00000bf1: POP 00000bf2: PUSH2 0x0aee 00000bf5: JUMP 00000bf6: JUMPDEST 00000bf7: CALLER 00000bf8: PUSH1 0x14 00000bfa: PUSH1 0x00 00000bfc: DUP3 00000bfd: PUSH1 0x40 00000bff: MLOAD 00000c00: PUSH1 0x01 00000c02: PUSH1 0xa0 00000c04: PUSH1 0x02 00000c06: EXP 00000c07: SUB 00000c08: SWAP2 00000c09: SWAP1 00000c0a: SWAP2 00000c0b: AND 00000c0c: PUSH13 0x01000000000000000000000000 00000c1a: MUL 00000c1b: DUP2 00000c1c: MSTORE 00000c1d: PUSH1 0x14 00000c1f: ADD 00000c20: PUSH1 0x40 00000c22: MLOAD 00000c23: SWAP1 00000c24: DUP2 00000c25: SWAP1 00000c26: SUB 00000c27: SWAP1 00000c28: KECCAK256 00000c29: DUP2 00000c2a: MSTORE 00000c2b: PUSH1 0x20 00000c2d: DUP2 00000c2e: ADD 00000c2f: SWAP2 00000c30: SWAP1 00000c31: SWAP2 00000c32: MSTORE 00000c33: PUSH1 0x40 00000c35: ADD 00000c36: PUSH1 0x00 00000c38: KECCAK256 00000c39: SLOAD 00000c3a: PUSH1 0xff 00000c3c: AND 00000c3d: ISZERO 00000c3e: ISZERO 00000c3f: PUSH2 0x0c47 00000c42: JUMPI 00000c43: PUSH1 0x00 00000c45: DUP1 00000c46: REVERT 00000c47: JUMPDEST 00000c48: POP 00000c49: PUSH1 0x00 00000c4b: SWAP2 00000c4c: DUP3 00000c4d: MSTORE 00000c4e: PUSH1 0x14 00000c50: PUSH1 0x20 00000c52: MSTORE 00000c53: PUSH1 0x40 00000c55: SWAP1 00000c56: SWAP2 00000c57: KECCAK256 00000c58: DUP1 00000c59: SLOAD 00000c5a: PUSH1 0xff 00000c5c: NOT 00000c5d: AND 00000c5e: SWAP2 00000c5f: ISZERO 00000c60: ISZERO 00000c61: SWAP2 00000c62: SWAP1 00000c63: SWAP2 00000c64: OR 00000c65: SWAP1 00000c66: SSTORE 00000c67: JUMP 00000c68: JUMPDEST 00000c69: PUSH1 0x00 00000c6b: CALLER 00000c6c: PUSH2 0x0c74 00000c6f: DUP2 00000c70: PUSH2 0x0b4f 00000c73: JUMP 00000c74: JUMPDEST 00000c75: SWAP2 00000c76: POP 00000c77: POP 00000c78: SWAP1 00000c79: JUMP 00000c7a: JUMPDEST 00000c7b: PUSH1 0x01 00000c7d: DUP1 00000c7e: SLOAD 00000c7f: PUSH1 0x01 00000c81: DUP2 00000c82: PUSH1 0x01 00000c84: AND 00000c85: ISZERO 00000c86: PUSH2 0x0100 00000c89: MUL 00000c8a: SUB 00000c8b: AND 00000c8c: PUSH1 0x02 00000c8e: SWAP1 00000c8f: DIV 00000c90: DUP1 00000c91: PUSH1 0x1f 00000c93: ADD 00000c94: PUSH1 0x20 00000c96: DUP1 00000c97: SWAP2 00000c98: DIV 00000c99: MUL 00000c9a: PUSH1 0x20 00000c9c: ADD 00000c9d: PUSH1 0x40 00000c9f: MLOAD 00000ca0: SWAP1 00000ca1: DUP2 00000ca2: ADD 00000ca3: PUSH1 0x40 00000ca5: MSTORE 00000ca6: DUP1 00000ca7: SWAP3 00000ca8: SWAP2 00000ca9: SWAP1 00000caa: DUP2 00000cab: DUP2 00000cac: MSTORE 00000cad: PUSH1 0x20 00000caf: ADD 00000cb0: DUP3 00000cb1: DUP1 00000cb2: SLOAD 00000cb3: PUSH1 0x01 00000cb5: DUP2 00000cb6: PUSH1 0x01 00000cb8: AND 00000cb9: ISZERO 00000cba: PUSH2 0x0100 00000cbd: MUL 00000cbe: SUB 00000cbf: AND 00000cc0: PUSH1 0x02 00000cc2: SWAP1 00000cc3: DIV 00000cc4: DUP1 00000cc5: ISZERO 00000cc6: PUSH2 0x0894 00000cc9: JUMPI 00000cca: DUP1 00000ccb: PUSH1 0x1f 00000ccd: LT 00000cce: PUSH2 0x0869 00000cd1: JUMPI 00000cd2: PUSH2 0x0100 00000cd5: DUP1 00000cd6: DUP4 00000cd7: SLOAD 00000cd8: DIV 00000cd9: MUL 00000cda: DUP4 00000cdb: MSTORE 00000cdc: SWAP2 00000cdd: PUSH1 0x20 00000cdf: ADD 00000ce0: SWAP2 00000ce1: PUSH2 0x0894 00000ce4: JUMP 00000ce5: JUMPDEST 00000ce6: CALLER 00000ce7: PUSH1 0x14 00000ce9: PUSH1 0x00 00000ceb: DUP3 00000cec: PUSH1 0x40 00000cee: MLOAD 00000cef: PUSH1 0x01 00000cf1: PUSH1 0xa0 00000cf3: PUSH1 0x02 00000cf5: EXP 00000cf6: SUB 00000cf7: SWAP2 00000cf8: SWAP1 00000cf9: SWAP2 00000cfa: AND 00000cfb: PUSH13 0x01000000000000000000000000 00000d09: MUL 00000d0a: DUP2 00000d0b: MSTORE 00000d0c: PUSH1 0x14 00000d0e: ADD 00000d0f: PUSH1 0x40 00000d11: MLOAD 00000d12: SWAP1 00000d13: DUP2 00000d14: SWAP1 00000d15: SUB 00000d16: SWAP1 00000d17: KECCAK256 00000d18: DUP2 00000d19: MSTORE 00000d1a: PUSH1 0x20 00000d1c: DUP2 00000d1d: ADD 00000d1e: SWAP2 00000d1f: SWAP1 00000d20: SWAP2 00000d21: MSTORE 00000d22: PUSH1 0x40 00000d24: ADD 00000d25: PUSH1 0x00 00000d27: KECCAK256 00000d28: SLOAD 00000d29: PUSH1 0xff 00000d2b: AND 00000d2c: ISZERO 00000d2d: ISZERO 00000d2e: PUSH2 0x0d36 00000d31: JUMPI 00000d32: PUSH1 0x00 00000d34: DUP1 00000d35: REVERT 00000d36: JUMPDEST 00000d37: POP 00000d38: PUSH1 0x15 00000d3a: DUP1 00000d3b: SLOAD 00000d3c: PUSH1 0xff 00000d3e: NOT 00000d3f: AND 00000d40: SWAP1 00000d41: SSTORE 00000d42: JUMP 00000d43: JUMPDEST 00000d44: PUSH1 0x00 00000d46: DUP1 00000d47: PUSH1 0x00 00000d49: DUP1 00000d4a: PUSH1 0x00 00000d4c: DUP1 00000d4d: PUSH2 0x0d54 00000d50: PUSH2 0x0c68 00000d53: JUMP 00000d54: JUMPDEST 00000d55: GT 00000d56: PUSH2 0x0d5e 00000d59: JUMPI 00000d5a: PUSH1 0x00 00000d5c: DUP1 00000d5d: REVERT 00000d5e: JUMPDEST 00000d5f: PUSH1 0x15 00000d61: SLOAD 00000d62: CALLER 00000d63: SWAP5 00000d64: POP 00000d65: PUSH1 0xff 00000d67: AND 00000d68: ISZERO 00000d69: DUP1 00000d6a: ISZERO 00000d6b: PUSH2 0x0d8c 00000d6e: JUMPI 00000d6f: POP 00000d70: PUSH1 0x01 00000d72: PUSH1 0xa0 00000d74: PUSH1 0x02 00000d76: EXP 00000d77: SUB 00000d78: DUP5 00000d79: AND 00000d7a: PUSH1 0x00 00000d7c: SWAP1 00000d7d: DUP2 00000d7e: MSTORE 00000d7f: PUSH1 0x03 00000d81: PUSH1 0x20 00000d83: MSTORE 00000d84: PUSH1 0x40 00000d86: SWAP1 00000d87: KECCAK256 00000d88: SLOAD 00000d89: DUP7 00000d8a: GT 00000d8b: ISZERO 00000d8c: JUMPDEST 00000d8d: ISZERO 00000d8e: ISZERO 00000d8f: PUSH2 0x0d97 00000d92: JUMPI 00000d93: PUSH1 0x00 00000d95: DUP1 00000d96: REVERT 00000d97: JUMPDEST 00000d98: PUSH2 0x0da6 00000d9b: DUP7 00000d9c: PUSH1 0x05 00000d9e: PUSH1 0x64 00000da0: PUSH1 0x12 00000da2: PUSH2 0x129a 00000da5: JUMP 00000da6: JUMPDEST 00000da7: SWAP3 00000da8: POP 00000da9: PUSH2 0x0db7 00000dac: DUP7 00000dad: PUSH1 0x5f 00000daf: PUSH1 0x64 00000db1: PUSH1 0x12 00000db3: PUSH2 0x129a 00000db6: JUMP 00000db7: JUMPDEST 00000db8: SWAP2 00000db9: POP 00000dba: PUSH2 0x0dc5 00000dbd: PUSH1 0x09 00000dbf: SLOAD 00000dc0: DUP5 00000dc1: PUSH2 0x1577 00000dc4: JUMP 00000dc5: JUMPDEST 00000dc6: PUSH1 0x09 00000dc8: SSTORE 00000dc9: PUSH1 0x0b 00000dcb: SLOAD 00000dcc: PUSH2 0x0dd5 00000dcf: SWAP1 00000dd0: DUP5 00000dd1: PUSH2 0x1577 00000dd4: JUMP 00000dd5: JUMPDEST 00000dd6: PUSH1 0x0b 00000dd8: SSTORE 00000dd9: PUSH1 0x01 00000ddb: PUSH1 0xa0 00000ddd: PUSH1 0x02 00000ddf: EXP 00000de0: SUB 00000de1: DUP5 00000de2: AND 00000de3: PUSH1 0x00 00000de5: SWAP1 00000de6: DUP2 00000de7: MSTORE 00000de8: PUSH1 0x03 00000dea: PUSH1 0x20 00000dec: MSTORE 00000ded: PUSH1 0x40 00000def: SWAP1 00000df0: KECCAK256 00000df1: SLOAD 00000df2: PUSH2 0x0dfb 00000df5: SWAP1 00000df6: DUP8 00000df7: PUSH2 0x1577 00000dfa: JUMP 00000dfb: JUMPDEST 00000dfc: PUSH1 0x01 00000dfe: PUSH1 0xa0 00000e00: PUSH1 0x02 00000e02: EXP 00000e03: SUB 00000e04: DUP1 00000e05: DUP7 00000e06: AND 00000e07: PUSH1 0x00 00000e09: SWAP1 00000e0a: DUP2 00000e0b: MSTORE 00000e0c: PUSH1 0x03 00000e0e: PUSH1 0x20 00000e10: MSTORE 00000e11: PUSH1 0x40 00000e13: DUP1 00000e14: DUP3 00000e15: KECCAK256 00000e16: SWAP4 00000e17: SWAP1 00000e18: SWAP4 00000e19: SSTORE 00000e1a: SWAP1 00000e1b: DUP10 00000e1c: AND 00000e1d: DUP2 00000e1e: MSTORE 00000e1f: KECCAK256 00000e20: SLOAD 00000e21: PUSH2 0x0e2a 00000e24: SWAP1 00000e25: DUP4 00000e26: PUSH2 0x1370 00000e29: JUMP 00000e2a: JUMPDEST 00000e2b: PUSH1 0x01 00000e2d: PUSH1 0xa0 00000e2f: PUSH1 0x02 00000e31: EXP 00000e32: SUB 00000e33: DUP9 00000e34: AND 00000e35: PUSH1 0x00 00000e37: SWAP1 00000e38: DUP2 00000e39: MSTORE 00000e3a: PUSH1 0x03 00000e3c: PUSH1 0x20 00000e3e: MSTORE 00000e3f: PUSH1 0x40 00000e41: SWAP1 00000e42: KECCAK256 00000e43: SSTORE 00000e44: PUSH2 0x0e4c 00000e47: DUP4 00000e48: PUSH2 0x1589 00000e4b: JUMP 00000e4c: JUMPDEST 00000e4d: SWAP1 00000e4e: POP 00000e4f: PUSH2 0x0e57 00000e52: DUP2 00000e53: PUSH2 0x1386 00000e56: JUMP 00000e57: JUMPDEST 00000e58: DUP7 00000e59: PUSH1 0x01 00000e5b: PUSH1 0xa0 00000e5d: PUSH1 0x02 00000e5f: EXP 00000e60: SUB 00000e61: AND 00000e62: DUP5 00000e63: PUSH1 0x01 00000e65: PUSH1 0xa0 00000e67: PUSH1 0x02 00000e69: EXP 00000e6a: SUB 00000e6b: AND 00000e6c: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000e8d: DUP5 00000e8e: PUSH1 0x40 00000e90: MLOAD 00000e91: SWAP1 00000e92: DUP2 00000e93: MSTORE 00000e94: PUSH1 0x20 00000e96: ADD 00000e97: PUSH1 0x40 00000e99: MLOAD 00000e9a: DUP1 00000e9b: SWAP2 00000e9c: SUB 00000e9d: SWAP1 00000e9e: LOG3 00000e9f: POP 00000ea0: PUSH1 0x01 00000ea2: SWAP7 00000ea3: SWAP6 00000ea4: POP 00000ea5: POP 00000ea6: POP 00000ea7: POP 00000ea8: POP 00000ea9: POP 00000eaa: JUMP 00000eab: JUMPDEST 00000eac: CALLER 00000ead: PUSH1 0x14 00000eaf: PUSH1 0x00 00000eb1: DUP3 00000eb2: PUSH1 0x40 00000eb4: MLOAD 00000eb5: PUSH1 0x01 00000eb7: PUSH1 0xa0 00000eb9: PUSH1 0x02 00000ebb: EXP 00000ebc: SUB 00000ebd: SWAP2 00000ebe: SWAP1 00000ebf: SWAP2 00000ec0: AND 00000ec1: PUSH13 0x01000000000000000000000000 00000ecf: MUL 00000ed0: DUP2 00000ed1: MSTORE 00000ed2: PUSH1 0x14 00000ed4: ADD 00000ed5: PUSH1 0x40 00000ed7: MLOAD 00000ed8: SWAP1 00000ed9: DUP2 00000eda: SWAP1 00000edb: SUB 00000edc: SWAP1 00000edd: KECCAK256 00000ede: DUP2 00000edf: MSTORE 00000ee0: PUSH1 0x20 00000ee2: DUP2 00000ee3: ADD 00000ee4: SWAP2 00000ee5: SWAP1 00000ee6: SWAP2 00000ee7: MSTORE 00000ee8: PUSH1 0x40 00000eea: ADD 00000eeb: PUSH1 0x00 00000eed: KECCAK256 00000eee: SLOAD 00000eef: PUSH1 0xff 00000ef1: AND 00000ef2: ISZERO 00000ef3: ISZERO 00000ef4: PUSH2 0x0efc 00000ef7: JUMPI 00000ef8: PUSH1 0x00 00000efa: DUP1 00000efb: REVERT 00000efc: JUMPDEST 00000efd: PUSH1 0x01 00000eff: DUP3 00000f00: DUP1 00000f01: MLOAD 00000f02: PUSH2 0x0f0f 00000f05: SWAP3 00000f06: SWAP2 00000f07: PUSH1 0x20 00000f09: ADD 00000f0a: SWAP1 00000f0b: PUSH2 0x1645 00000f0e: JUMP 00000f0f: JUMPDEST 00000f10: POP 00000f11: POP 00000f12: POP 00000f13: JUMP 00000f14: JUMPDEST 00000f15: CALLER 00000f16: PUSH1 0x14 00000f18: PUSH1 0x00 00000f1a: DUP3 00000f1b: PUSH1 0x40 00000f1d: MLOAD 00000f1e: PUSH1 0x01 00000f20: PUSH1 0xa0 00000f22: PUSH1 0x02 00000f24: EXP 00000f25: SUB 00000f26: SWAP2 00000f27: SWAP1 00000f28: SWAP2 00000f29: AND 00000f2a: PUSH13 0x01000000000000000000000000 00000f38: MUL 00000f39: DUP2 00000f3a: MSTORE 00000f3b: PUSH1 0x14 00000f3d: ADD 00000f3e: PUSH1 0x40 00000f40: MLOAD 00000f41: SWAP1 00000f42: DUP2 00000f43: SWAP1 00000f44: SUB 00000f45: SWAP1 00000f46: KECCAK256 00000f47: DUP2 00000f48: MSTORE 00000f49: PUSH1 0x20 00000f4b: DUP2 00000f4c: ADD 00000f4d: SWAP2 00000f4e: SWAP1 00000f4f: SWAP2 00000f50: MSTORE 00000f51: PUSH1 0x40 00000f53: ADD 00000f54: PUSH1 0x00 00000f56: KECCAK256 00000f57: SLOAD 00000f58: PUSH1 0xff 00000f5a: AND 00000f5b: ISZERO 00000f5c: ISZERO 00000f5d: PUSH2 0x0f65 00000f60: JUMPI 00000f61: PUSH1 0x00 00000f63: DUP1 00000f64: REVERT 00000f65: JUMPDEST 00000f66: PUSH1 0x00 00000f68: DUP3 00000f69: DUP1 00000f6a: MLOAD 00000f6b: PUSH2 0x0f0f 00000f6e: SWAP3 00000f6f: SWAP2 00000f70: PUSH1 0x20 00000f72: ADD 00000f73: SWAP1 00000f74: PUSH2 0x1645 00000f77: JUMP 00000f78: JUMPDEST 00000f79: PUSH1 0x01 00000f7b: PUSH1 0xa0 00000f7d: PUSH1 0x02 00000f7f: EXP 00000f80: SUB 00000f81: CALLER 00000f82: AND 00000f83: PUSH1 0x00 00000f85: SWAP1 00000f86: DUP2 00000f87: MSTORE 00000f88: PUSH1 0x06 00000f8a: PUSH1 0x20 00000f8c: MSTORE 00000f8d: PUSH1 0x40 00000f8f: DUP2 00000f90: KECCAK256 00000f91: SLOAD 00000f92: DUP2 00000f93: SWAP1 00000f94: DUP2 00000f95: SWAP1 00000f96: GT 00000f97: PUSH2 0x0f9f 00000f9a: JUMPI 00000f9b: PUSH1 0x00 00000f9d: DUP1 00000f9e: REVERT 00000f9f: JUMPDEST 00000fa0: POP 00000fa1: POP 00000fa2: CALLER 00000fa3: PUSH1 0x01 00000fa5: PUSH1 0xa0 00000fa7: PUSH1 0x02 00000fa9: EXP 00000faa: SUB 00000fab: DUP2 00000fac: AND 00000fad: PUSH1 0x00 00000faf: DUP2 00000fb0: DUP2 00000fb1: MSTORE 00000fb2: PUSH1 0x06 00000fb4: PUSH1 0x20 00000fb6: MSTORE 00000fb7: PUSH1 0x40 00000fb9: DUP1 00000fba: DUP3 00000fbb: KECCAK256 00000fbc: DUP1 00000fbd: SLOAD 00000fbe: SWAP3 00000fbf: SWAP1 00000fc0: SSTORE 00000fc1: SWAP1 00000fc2: SWAP2 00000fc3: SWAP1 00000fc4: PUSH2 0x08fc 00000fc7: DUP4 00000fc8: ISZERO 00000fc9: MUL 00000fca: SWAP1 00000fcb: DUP4 00000fcc: SWAP1 00000fcd: MLOAD 00000fce: PUSH1 0x00 00000fd0: PUSH1 0x40 00000fd2: MLOAD 00000fd3: DUP1 00000fd4: DUP4 00000fd5: SUB 00000fd6: DUP2 00000fd7: DUP6 00000fd8: DUP9 00000fd9: DUP9 00000fda: CALL 00000fdb: SWAP4 00000fdc: POP 00000fdd: POP 00000fde: POP 00000fdf: POP 00000fe0: ISZERO 00000fe1: ISZERO 00000fe2: PUSH2 0x0fea 00000fe5: JUMPI 00000fe6: PUSH1 0x00 00000fe8: DUP1 00000fe9: REVERT 00000fea: JUMPDEST 00000feb: DUP2 00000fec: PUSH1 0x01 00000fee: PUSH1 0xa0 00000ff0: PUSH1 0x02 00000ff2: EXP 00000ff3: SUB 00000ff4: AND 00000ff5: PUSH32 0xf3687a31e3dd517203a2f34cfa1e3630fff426375e7a8fe84237609ebff4644f 00001016: DUP3 00001017: PUSH1 0x40 00001019: MLOAD 0000101a: SWAP1 0000101b: DUP2 0000101c: MSTORE 0000101d: PUSH1 0x20 0000101f: ADD 00001020: PUSH1 0x40 00001022: MLOAD 00001023: DUP1 00001024: SWAP2 00001025: SUB 00001026: SWAP1 00001027: LOG2 00001028: POP 00001029: POP 0000102a: JUMP 0000102b: JUMPDEST 0000102c: PUSH1 0x00 0000102e: DUP1 0000102f: PUSH1 0x00 00001031: DUP1 00001032: PUSH1 0x00 00001034: DUP1 00001035: PUSH2 0x103c 00001038: PUSH2 0x0c68 0000103b: JUMP 0000103c: JUMPDEST 0000103d: GT 0000103e: PUSH2 0x1046 00001041: JUMPI 00001042: PUSH1 0x00 00001044: DUP1 00001045: REVERT 00001046: JUMPDEST 00001047: CALLER 00001048: PUSH1 0x01 0000104a: PUSH1 0xa0 0000104c: PUSH1 0x02 0000104e: EXP 0000104f: SUB 00001050: DUP2 00001051: AND 00001052: PUSH1 0x00 00001054: SWAP1 00001055: DUP2 00001056: MSTORE 00001057: PUSH1 0x03 00001059: PUSH1 0x20 0000105b: MSTORE 0000105c: PUSH1 0x40 0000105e: SWAP1 0000105f: KECCAK256 00001060: SLOAD 00001061: SWAP1 00001062: SWAP6 00001063: POP 00001064: DUP7 00001065: GT 00001066: ISZERO 00001067: PUSH2 0x106f 0000106a: JUMPI 0000106b: PUSH1 0x00 0000106d: DUP1 0000106e: REVERT 0000106f: JUMPDEST 00001070: DUP6 00001071: SWAP4 00001072: POP 00001073: PUSH2 0x107b 00001076: DUP5 00001077: PUSH2 0x1589 0000107a: JUMP 0000107b: JUMPDEST 0000107c: SWAP3 0000107d: POP 0000107e: PUSH2 0x108c 00001081: DUP4 00001082: PUSH1 0x0a 00001084: PUSH1 0x64 00001086: PUSH1 0x12 00001088: PUSH2 0x129a 0000108b: JUMP 0000108c: JUMPDEST 0000108d: SWAP2 0000108e: POP 0000108f: PUSH2 0x109d 00001092: DUP4 00001093: PUSH1 0x5a 00001095: PUSH1 0x64 00001097: PUSH1 0x12 00001099: PUSH2 0x129a 0000109c: JUMP 0000109d: JUMPDEST 0000109e: SWAP1 0000109f: POP 000010a0: PUSH2 0x10ab 000010a3: PUSH1 0x09 000010a5: SLOAD 000010a6: DUP6 000010a7: PUSH2 0x1577 000010aa: JUMP 000010ab: JUMPDEST 000010ac: PUSH1 0x09 000010ae: SSTORE 000010af: PUSH1 0x01 000010b1: PUSH1 0xa0 000010b3: PUSH1 0x02 000010b5: EXP 000010b6: SUB 000010b7: DUP6 000010b8: AND 000010b9: PUSH1 0x00 000010bb: SWAP1 000010bc: DUP2 000010bd: MSTORE 000010be: PUSH1 0x03 000010c0: PUSH1 0x20 000010c2: MSTORE 000010c3: PUSH1 0x40 000010c5: SWAP1 000010c6: KECCAK256 000010c7: SLOAD 000010c8: PUSH2 0x10d1 000010cb: SWAP1 000010cc: DUP6 000010cd: PUSH2 0x1577 000010d0: JUMP 000010d1: JUMPDEST 000010d2: PUSH1 0x01 000010d4: PUSH1 0xa0 000010d6: PUSH1 0x02 000010d8: EXP 000010d9: SUB 000010da: DUP7 000010db: AND 000010dc: PUSH1 0x00 000010de: SWAP1 000010df: DUP2 000010e0: MSTORE 000010e1: PUSH1 0x03 000010e3: PUSH1 0x20 000010e5: MSTORE 000010e6: PUSH1 0x40 000010e8: SWAP1 000010e9: KECCAK256 000010ea: SSTORE 000010eb: PUSH1 0x0b 000010ed: SLOAD 000010ee: PUSH2 0x10f7 000010f1: SWAP1 000010f2: DUP6 000010f3: PUSH2 0x1577 000010f6: JUMP 000010f7: JUMPDEST 000010f8: PUSH1 0x0b 000010fa: SSTORE 000010fb: PUSH1 0x01 000010fd: PUSH1 0xa0 000010ff: PUSH1 0x02 00001101: EXP 00001102: SUB 00001103: DUP6 00001104: AND 00001105: PUSH1 0x00 00001107: SWAP1 00001108: DUP2 00001109: MSTORE 0000110a: PUSH1 0x06 0000110c: PUSH1 0x20 0000110e: MSTORE 0000110f: PUSH1 0x40 00001111: SWAP1 00001112: KECCAK256 00001113: DUP1 00001114: SLOAD 00001115: DUP3 00001116: ADD 00001117: SWAP1 00001118: SSTORE 00001119: PUSH2 0x1121 0000111c: DUP3 0000111d: PUSH2 0x1386 00001120: JUMP 00001121: JUMPDEST 00001122: DUP5 00001123: PUSH1 0x01 00001125: PUSH1 0xa0 00001127: PUSH1 0x02 00001129: EXP 0000112a: SUB 0000112b: AND 0000112c: PUSH32 0x545da4840f0f793a8d9b1e1ec11ac88a847ba019e03570358e58ed56601a5e72 0000114d: DUP6 0000114e: PUSH1 0x40 00001150: MLOAD 00001151: SWAP1 00001152: DUP2 00001153: MSTORE 00001154: PUSH1 0x20 00001156: ADD 00001157: PUSH1 0x40 00001159: MLOAD 0000115a: DUP1 0000115b: SWAP2 0000115c: SUB 0000115d: SWAP1 0000115e: LOG2 0000115f: POP 00001160: POP 00001161: POP 00001162: POP 00001163: POP 00001164: POP 00001165: JUMP 00001166: JUMPDEST 00001167: CALLER 00001168: PUSH1 0x01 0000116a: PUSH1 0xa0 0000116c: PUSH1 0x02 0000116e: EXP 0000116f: SUB 00001170: DUP2 00001171: AND 00001172: PUSH1 0x00 00001174: SWAP1 00001175: DUP2 00001176: MSTORE 00001177: PUSH1 0x03 00001179: PUSH1 0x20 0000117b: MSTORE 0000117c: PUSH1 0x40 0000117e: DUP2 0000117f: KECCAK256 00001180: SLOAD 00001181: SWAP1 00001182: DUP2 00001183: GT 00001184: ISZERO 00001185: PUSH2 0x1191 00001188: JUMPI 00001189: PUSH2 0x1191 0000118c: DUP2 0000118d: PUSH2 0x102b 00001190: JUMP 00001191: JUMPDEST 00001192: PUSH2 0x1199 00001195: PUSH2 0x0938 00001198: JUMP 00001199: JUMPDEST 0000119a: POP 0000119b: POP 0000119c: JUMP 0000119d: JUMPDEST 0000119e: CALLER 0000119f: PUSH1 0x01 000011a1: PUSH1 0xa0 000011a3: PUSH1 0x02 000011a5: EXP 000011a6: SUB 000011a7: AND 000011a8: PUSH1 0x00 000011aa: SWAP1 000011ab: DUP2 000011ac: MSTORE 000011ad: PUSH1 0x06 000011af: PUSH1 0x20 000011b1: MSTORE 000011b2: PUSH1 0x40 000011b4: SWAP1 000011b5: KECCAK256 000011b6: SLOAD 000011b7: SWAP1 000011b8: JUMP 000011b9: JUMPDEST 000011ba: PUSH1 0x00 000011bc: PUSH2 0x0b3b 000011bf: CALLVALUE 000011c0: DUP4 000011c1: PUSH2 0x053b 000011c4: JUMP 000011c5: JUMPDEST 000011c6: PUSH1 0x00 000011c8: DUP1 000011c9: PUSH1 0x00 000011cb: DUP1 000011cc: PUSH1 0x00 000011ce: DUP1 000011cf: PUSH2 0x11d8 000011d2: PUSH1 0x01 000011d4: PUSH2 0x0afe 000011d7: JUMP 000011d8: JUMPDEST 000011d9: GT 000011da: PUSH2 0x11e2 000011dd: JUMPI 000011de: PUSH1 0x00 000011e0: DUP1 000011e1: REVERT 000011e2: JUMPDEST 000011e3: CALLER 000011e4: SWAP5 000011e5: POP 000011e6: PUSH2 0x11ef 000011e9: PUSH1 0x01 000011eb: PUSH2 0x0afe 000011ee: JUMP 000011ef: JUMPDEST 000011f0: SWAP4 000011f1: POP 000011f2: PUSH2 0x1200 000011f5: DUP5 000011f6: PUSH1 0x0a 000011f8: PUSH1 0x64 000011fa: PUSH1 0x12 000011fc: PUSH2 0x129a 000011ff: JUMP 00001200: JUMPDEST 00001201: SWAP3 00001202: POP 00001203: PUSH2 0x1211 00001206: DUP5 00001207: PUSH1 0x5a 00001209: PUSH1 0x64 0000120b: PUSH1 0x12 0000120d: PUSH2 0x129a 00001210: JUMP 00001211: JUMPDEST 00001212: SWAP2 00001213: POP 00001214: PUSH2 0x121e 00001217: DUP3 00001218: PUSH1 0x00 0000121a: PUSH2 0x053b 0000121d: JUMP 0000121e: JUMPDEST 0000121f: PUSH1 0x01 00001221: PUSH1 0xa0 00001223: PUSH1 0x02 00001225: EXP 00001226: SUB 00001227: DUP7 00001228: AND 00001229: PUSH1 0x00 0000122b: SWAP1 0000122c: DUP2 0000122d: MSTORE 0000122e: PUSH1 0x05 00001230: PUSH1 0x20 00001232: SWAP1 00001233: DUP2 00001234: MSTORE 00001235: PUSH1 0x40 00001237: DUP1 00001238: DUP4 00001239: KECCAK256 0000123a: DUP4 0000123b: SWAP1 0000123c: SSTORE 0000123d: PUSH1 0x04 0000123f: SWAP1 00001240: SWAP2 00001241: MSTORE 00001242: DUP2 00001243: KECCAK256 00001244: SSTORE 00001245: SWAP1 00001246: POP 00001247: PUSH2 0x124f 0000124a: DUP4 0000124b: PUSH2 0x1386 0000124e: JUMP 0000124f: JUMPDEST 00001250: DUP5 00001251: PUSH1 0x01 00001253: PUSH1 0xa0 00001255: PUSH1 0x02 00001257: EXP 00001258: SUB 00001259: AND 0000125a: PUSH32 0xbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458 0000127b: DUP6 0000127c: DUP4 0000127d: PUSH1 0x40 0000127f: MLOAD 00001280: SWAP2 00001281: DUP3 00001282: MSTORE 00001283: PUSH1 0x20 00001285: DUP3 00001286: ADD 00001287: MSTORE 00001288: PUSH1 0x40 0000128a: SWAP1 0000128b: DUP2 0000128c: ADD 0000128d: SWAP1 0000128e: MLOAD 0000128f: DUP1 00001290: SWAP2 00001291: SUB 00001292: SWAP1 00001293: LOG2 00001294: POP 00001295: POP 00001296: POP 00001297: POP 00001298: POP 00001299: JUMP 0000129a: JUMPDEST 0000129b: PUSH1 0x00 0000129d: DUP1 0000129e: PUSH1 0x00 000012a0: DUP4 000012a1: PUSH1 0x01 000012a3: ADD 000012a4: PUSH1 0x0a 000012a6: EXP 000012a7: DUP7 000012a8: MUL 000012a9: SWAP2 000012aa: POP 000012ab: PUSH1 0x0a 000012ad: DUP6 000012ae: DUP4 000012af: DUP2 000012b0: ISZERO 000012b1: ISZERO 000012b2: PUSH2 0x12b7 000012b5: JUMPI 000012b6: INVALID 000012b7: JUMPDEST 000012b8: DIV 000012b9: PUSH1 0x05 000012bb: ADD 000012bc: DUP2 000012bd: ISZERO 000012be: ISZERO 000012bf: PUSH2 0x12c4 000012c2: JUMPI 000012c3: INVALID 000012c4: JUMPDEST 000012c5: DIV 000012c6: SWAP1 000012c7: POP 000012c8: PUSH8 0x0de0b6b3a7640000 000012d1: DUP8 000012d2: DUP3 000012d3: MUL 000012d4: DIV 000012d5: SWAP8 000012d6: SWAP7 000012d7: POP 000012d8: POP 000012d9: POP 000012da: POP 000012db: POP 000012dc: POP 000012dd: POP 000012de: JUMP 000012df: JUMPDEST 000012e0: PUSH1 0x09 000012e2: SLOAD 000012e3: PUSH1 0x00 000012e5: SWAP1 000012e6: PUSH12 0x033b2e3c9fd0803ce8000000 000012f3: SWAP1 000012f4: DUP3 000012f5: SWAP1 000012f6: PUSH4 0x3b9aca00 000012fb: PUSH2 0x135d 000012fe: PUSH2 0x1357 00001301: PUSH19 0x59aedfc10d7279c5eed1401645400000000000 00001315: DUP9 00001316: MUL 00001317: PUSH1 0x02 00001319: DUP6 0000131a: EXP 0000131b: PUSH8 0x0de0b6b3a7640000 00001324: MUL 00001325: ADD 00001326: PUSH16 0x01812f9cf7920e2b66973e2000000000 00001337: DUP6 00001338: MUL 00001339: ADD 0000133a: PUSH23 0x0a70c3c40a64e6c51999090b65f67d9240000000000000 00001352: ADD 00001353: PUSH2 0x15ec 00001356: JUMP 00001357: JUMPDEST 00001358: DUP6 00001359: PUSH2 0x1577 0000135c: JUMP 0000135d: JUMPDEST 0000135e: DUP2 0000135f: ISZERO 00001360: ISZERO 00001361: PUSH2 0x1366 00001364: JUMPI 00001365: INVALID 00001366: JUMPDEST 00001367: DIV 00001368: SUB 00001369: SWAP5 0000136a: SWAP4 0000136b: POP 0000136c: POP 0000136d: POP 0000136e: POP 0000136f: JUMP 00001370: JUMPDEST 00001371: PUSH1 0x00 00001373: DUP3 00001374: DUP3 00001375: ADD 00001376: DUP4 00001377: DUP2 00001378: LT 00001379: ISZERO 0000137a: PUSH2 0x137f 0000137d: JUMPI 0000137e: INVALID 0000137f: JUMPDEST 00001380: SWAP4 00001381: SWAP3 00001382: POP 00001383: POP 00001384: POP 00001385: JUMP 00001386: JUMPDEST 00001387: PUSH1 0x11 00001389: DUP2 0000138a: SWAP1 0000138b: SSTORE 0000138c: PUSH1 0x00 0000138e: DUP1 0000138f: DUP1 00001390: JUMPDEST 00001391: PUSH1 0x08 00001393: SLOAD 00001394: DUP3 00001395: LT 00001396: ISZERO 00001397: PUSH2 0x13e3 0000139a: JUMPI 0000139b: PUSH1 0x03 0000139d: PUSH1 0x00 0000139f: PUSH1 0x08 000013a1: DUP5 000013a2: DUP2 000013a3: SLOAD 000013a4: DUP2 000013a5: LT 000013a6: ISZERO 000013a7: ISZERO 000013a8: PUSH2 0x13ad 000013ab: JUMPI 000013ac: INVALID 000013ad: JUMPDEST 000013ae: PUSH1 0x00 000013b0: SWAP2 000013b1: DUP3 000013b2: MSTORE 000013b3: PUSH1 0x20 000013b5: DUP1 000013b6: DUP4 000013b7: KECCAK256 000013b8: SWAP1 000013b9: SWAP2 000013ba: ADD 000013bb: SLOAD 000013bc: PUSH1 0x01 000013be: PUSH1 0xa0 000013c0: PUSH1 0x02 000013c2: EXP 000013c3: SUB 000013c4: AND 000013c5: DUP4 000013c6: MSTORE 000013c7: DUP3 000013c8: ADD 000013c9: SWAP3 000013ca: SWAP1 000013cb: SWAP3 000013cc: MSTORE 000013cd: PUSH1 0x40 000013cf: ADD 000013d0: SWAP1 000013d1: KECCAK256 000013d2: SLOAD 000013d3: SWAP3 000013d4: SWAP1 000013d5: SWAP3 000013d6: ADD 000013d7: SWAP2 000013d8: PUSH1 0x01 000013da: SWAP2 000013db: SWAP1 000013dc: SWAP2 000013dd: ADD 000013de: SWAP1 000013df: PUSH2 0x1390 000013e2: JUMP 000013e3: JUMPDEST 000013e4: POP 000013e5: PUSH1 0x00 000013e7: JUMPDEST 000013e8: PUSH1 0x08 000013ea: SLOAD 000013eb: DUP2 000013ec: LT 000013ed: ISZERO 000013ee: PUSH2 0x1571 000013f1: JUMPI 000013f2: PUSH1 0x00 000013f4: DUP4 000013f5: GT 000013f6: DUP1 000013f7: ISZERO 000013f8: PUSH2 0x1437 000013fb: JUMPI 000013fc: POP 000013fd: PUSH1 0x03 000013ff: PUSH1 0x00 00001401: PUSH1 0x08 00001403: DUP4 00001404: DUP2 00001405: SLOAD 00001406: DUP2 00001407: LT 00001408: ISZERO 00001409: ISZERO 0000140a: PUSH2 0x140f 0000140d: JUMPI 0000140e: INVALID 0000140f: JUMPDEST 00001410: PUSH1 0x00 00001412: SWAP2 00001413: DUP3 00001414: MSTORE 00001415: PUSH1 0x20 00001417: DUP1 00001418: DUP4 00001419: KECCAK256 0000141a: SWAP1 0000141b: SWAP2 0000141c: ADD 0000141d: SLOAD 0000141e: PUSH1 0x01 00001420: PUSH1 0xa0 00001422: PUSH1 0x02 00001424: EXP 00001425: SUB 00001426: AND 00001427: DUP4 00001428: MSTORE 00001429: DUP3 0000142a: ADD 0000142b: SWAP3 0000142c: SWAP1 0000142d: SWAP3 0000142e: MSTORE 0000142f: PUSH1 0x40 00001431: ADD 00001432: SWAP1 00001433: KECCAK256 00001434: SLOAD 00001435: ISZERO 00001436: ISZERO 00001437: JUMPDEST 00001438: ISZERO 00001439: PUSH2 0x14d3 0000143c: JUMPI 0000143d: PUSH2 0x1480 00001440: DUP5 00001441: PUSH1 0x03 00001443: PUSH1 0x00 00001445: PUSH1 0x08 00001447: DUP6 00001448: DUP2 00001449: SLOAD 0000144a: DUP2 0000144b: LT 0000144c: ISZERO 0000144d: ISZERO 0000144e: PUSH2 0x1453 00001451: JUMPI 00001452: INVALID 00001453: JUMPDEST 00001454: PUSH1 0x00 00001456: SWAP2 00001457: DUP3 00001458: MSTORE 00001459: PUSH1 0x20 0000145b: DUP1 0000145c: DUP4 0000145d: KECCAK256 0000145e: SWAP1 0000145f: SWAP2 00001460: ADD 00001461: SLOAD 00001462: PUSH1 0x01 00001464: PUSH1 0xa0 00001466: PUSH1 0x02 00001468: EXP 00001469: SUB 0000146a: AND 0000146b: DUP4 0000146c: MSTORE 0000146d: DUP3 0000146e: ADD 0000146f: SWAP3 00001470: SWAP1 00001471: SWAP3 00001472: MSTORE 00001473: PUSH1 0x40 00001475: ADD 00001476: SWAP1 00001477: KECCAK256 00001478: SLOAD 00001479: DUP6 0000147a: PUSH1 0x12 0000147c: PUSH2 0x129a 0000147f: JUMP 00001480: JUMPDEST 00001481: PUSH1 0x0a 00001483: DUP2 00001484: SWAP1 00001485: SSTORE 00001486: PUSH1 0x0f 00001488: DUP2 00001489: SWAP1 0000148a: SSTORE 0000148b: PUSH1 0x08 0000148d: DUP1 0000148e: SLOAD 0000148f: PUSH1 0x05 00001491: SWAP2 00001492: PUSH1 0x00 00001494: SWAP2 00001495: DUP6 00001496: SWAP1 00001497: DUP2 00001498: LT 00001499: PUSH2 0x149e 0000149c: JUMPI 0000149d: INVALID 0000149e: JUMPDEST 0000149f: PUSH1 0x00 000014a1: SWAP2 000014a2: DUP3 000014a3: MSTORE 000014a4: PUSH1 0x20 000014a6: DUP1 000014a7: DUP4 000014a8: KECCAK256 000014a9: SWAP1 000014aa: SWAP2 000014ab: ADD 000014ac: SLOAD 000014ad: PUSH1 0x01 000014af: PUSH1 0xa0 000014b1: PUSH1 0x02 000014b3: EXP 000014b4: SUB 000014b5: AND 000014b6: DUP4 000014b7: MSTORE 000014b8: DUP3 000014b9: ADD 000014ba: SWAP3 000014bb: SWAP1 000014bc: SWAP3 000014bd: MSTORE 000014be: PUSH1 0x40 000014c0: ADD 000014c1: SWAP1 000014c2: KECCAK256 000014c3: DUP1 000014c4: SLOAD 000014c5: SWAP1 000014c6: SWAP2 000014c7: ADD 000014c8: SWAP1 000014c9: SSTORE 000014ca: PUSH1 0x01 000014cc: PUSH1 0x10 000014ce: SSTORE 000014cf: PUSH2 0x1569 000014d2: JUMP 000014d3: JUMPDEST 000014d4: DUP3 000014d5: ISZERO 000014d6: DUP1 000014d7: ISZERO 000014d8: PUSH2 0x1516 000014db: JUMPI 000014dc: POP 000014dd: PUSH1 0x03 000014df: PUSH1 0x00 000014e1: PUSH1 0x08 000014e3: DUP4 000014e4: DUP2 000014e5: SLOAD 000014e6: DUP2 000014e7: LT 000014e8: ISZERO 000014e9: ISZERO 000014ea: PUSH2 0x14ef 000014ed: JUMPI 000014ee: INVALID 000014ef: JUMPDEST 000014f0: PUSH1 0x00 000014f2: SWAP2 000014f3: DUP3 000014f4: MSTORE 000014f5: PUSH1 0x20 000014f7: DUP1 000014f8: DUP4 000014f9: KECCAK256 000014fa: SWAP1 000014fb: SWAP2 000014fc: ADD 000014fd: SLOAD 000014fe: PUSH1 0x01 00001500: PUSH1 0xa0 00001502: PUSH1 0x02 00001504: EXP 00001505: SUB 00001506: AND 00001507: DUP4 00001508: MSTORE 00001509: DUP3 0000150a: ADD 0000150b: SWAP3 0000150c: SWAP1 0000150d: SWAP3 0000150e: MSTORE 0000150f: PUSH1 0x40 00001511: ADD 00001512: SWAP1 00001513: KECCAK256 00001514: SLOAD 00001515: ISZERO 00001516: JUMPDEST 00001517: ISZERO 00001518: PUSH2 0x1569 0000151b: JUMPI 0000151c: PUSH1 0x02 0000151e: PUSH1 0x10 00001520: SSTORE 00001521: PUSH1 0x0a 00001523: SLOAD 00001524: PUSH1 0x0f 00001526: SSTORE 00001527: PUSH1 0x08 00001529: DUP1 0000152a: SLOAD 0000152b: DUP6 0000152c: SWAP2 0000152d: PUSH1 0x05 0000152f: SWAP2 00001530: PUSH1 0x00 00001532: SWAP2 00001533: SWAP1 00001534: DUP6 00001535: SWAP1 00001536: DUP2 00001537: LT 00001538: PUSH2 0x153d 0000153b: JUMPI 0000153c: INVALID 0000153d: JUMPDEST 0000153e: PUSH1 0x00 00001540: SWAP2 00001541: DUP3 00001542: MSTORE 00001543: PUSH1 0x20 00001545: DUP1 00001546: DUP4 00001547: KECCAK256 00001548: SWAP1 00001549: SWAP2 0000154a: ADD 0000154b: SLOAD 0000154c: PUSH1 0x01 0000154e: PUSH1 0xa0 00001550: PUSH1 0x02 00001552: EXP 00001553: SUB 00001554: AND 00001555: DUP4 00001556: MSTORE 00001557: DUP3 00001558: ADD 00001559: SWAP3 0000155a: SWAP1 0000155b: SWAP3 0000155c: MSTORE 0000155d: PUSH1 0x40 0000155f: ADD 00001560: SWAP1 00001561: KECCAK256 00001562: DUP1 00001563: SLOAD 00001564: SWAP1 00001565: SWAP2 00001566: ADD 00001567: SWAP1 00001568: SSTORE 00001569: JUMPDEST 0000156a: PUSH1 0x01 0000156c: ADD 0000156d: PUSH2 0x13e7 00001570: JUMP 00001571: JUMPDEST 00001572: POP 00001573: POP 00001574: POP 00001575: POP 00001576: JUMP 00001577: JUMPDEST 00001578: PUSH1 0x00 0000157a: DUP3 0000157b: DUP3 0000157c: GT 0000157d: ISZERO 0000157e: PUSH2 0x1583 00001581: JUMPI 00001582: INVALID 00001583: JUMPDEST 00001584: POP 00001585: SWAP1 00001586: SUB 00001587: SWAP1 00001588: JUMP 00001589: JUMPDEST 0000158a: PUSH1 0x09 0000158c: SLOAD 0000158d: PUSH1 0x00 0000158f: SWAP1 00001590: PUSH8 0x0de0b6b3a7640000 00001599: DUP4 0000159a: DUP2 0000159b: ADD 0000159c: SWAP2 0000159d: DUP2 0000159e: ADD 0000159f: SWAP1 000015a0: DUP4 000015a1: SWAP1 000015a2: PUSH2 0x15d9 000015a5: DUP2 000015a6: DUP5 000015a7: DIV 000015a8: DUP8 000015a9: MUL 000015aa: PUSH4 0x3b9aca00 000015af: MUL 000015b0: PUSH1 0x02 000015b2: DUP4 000015b3: PUSH8 0x0de0b6b3a763ffff 000015bc: NOT 000015bd: DUP3 000015be: DUP10 000015bf: EXP 000015c0: DUP12 000015c1: SWAP1 000015c2: SUB 000015c3: ADD 000015c4: DIV 000015c5: PUSH4 0x3b9aca00 000015ca: MUL 000015cb: DUP2 000015cc: ISZERO 000015cd: ISZERO 000015ce: PUSH2 0x15d3 000015d1: JUMPI 000015d2: INVALID 000015d3: JUMPDEST 000015d4: DIV 000015d5: PUSH2 0x1577 000015d8: JUMP 000015d9: JUMPDEST 000015da: DUP2 000015db: ISZERO 000015dc: ISZERO 000015dd: PUSH2 0x15e2 000015e0: JUMPI 000015e1: INVALID 000015e2: JUMPDEST 000015e3: DIV 000015e4: SWAP6 000015e5: SWAP5 000015e6: POP 000015e7: POP 000015e8: POP 000015e9: POP 000015ea: POP 000015eb: JUMP 000015ec: JUMPDEST 000015ed: DUP1 000015ee: PUSH1 0x02 000015f0: PUSH1 0x01 000015f2: DUP3 000015f3: ADD 000015f4: DIV 000015f5: JUMPDEST 000015f6: DUP2 000015f7: DUP2 000015f8: LT 000015f9: ISZERO 000015fa: PUSH2 0x0b3b 000015fd: JUMPI 000015fe: DUP1 000015ff: SWAP2 00001600: POP 00001601: PUSH1 0x02 00001603: DUP2 00001604: DUP3 00001605: DUP6 00001606: DUP2 00001607: ISZERO 00001608: ISZERO 00001609: PUSH2 0x160e 0000160c: JUMPI 0000160d: INVALID 0000160e: JUMPDEST 0000160f: DIV 00001610: ADD 00001611: DUP2 00001612: ISZERO 00001613: ISZERO 00001614: PUSH2 0x1619 00001617: JUMPI 00001618: INVALID 00001619: JUMPDEST 0000161a: DIV 0000161b: SWAP1 0000161c: POP 0000161d: PUSH2 0x15f5 00001620: JUMP 00001621: JUMPDEST 00001622: DUP2 00001623: SLOAD 00001624: DUP2 00001625: DUP4 00001626: SSTORE 00001627: DUP2 00001628: DUP2 00001629: ISZERO 0000162a: GT 0000162b: PUSH2 0x0f0f 0000162e: JUMPI 0000162f: PUSH1 0x00 00001631: DUP4 00001632: DUP2 00001633: MSTORE 00001634: PUSH1 0x20 00001636: SWAP1 00001637: KECCAK256 00001638: PUSH2 0x0f0f 0000163b: SWAP2 0000163c: DUP2 0000163d: ADD 0000163e: SWAP1 0000163f: DUP4 00001640: ADD 00001641: PUSH2 0x16bb 00001644: JUMP 00001645: JUMPDEST 00001646: DUP3 00001647: DUP1 00001648: SLOAD 00001649: PUSH1 0x01 0000164b: DUP2 0000164c: PUSH1 0x01 0000164e: AND 0000164f: ISZERO 00001650: PUSH2 0x0100 00001653: MUL 00001654: SUB 00001655: AND 00001656: PUSH1 0x02 00001658: SWAP1 00001659: DIV 0000165a: SWAP1 0000165b: PUSH1 0x00 0000165d: MSTORE 0000165e: PUSH1 0x20 00001660: PUSH1 0x00 00001662: KECCAK256 00001663: SWAP1 00001664: PUSH1 0x1f 00001666: ADD 00001667: PUSH1 0x20 00001669: SWAP1 0000166a: DIV 0000166b: DUP2 0000166c: ADD 0000166d: SWAP3 0000166e: DUP3 0000166f: PUSH1 0x1f 00001671: LT 00001672: PUSH2 0x1686 00001675: JUMPI 00001676: DUP1 00001677: MLOAD 00001678: PUSH1 0xff 0000167a: NOT 0000167b: AND 0000167c: DUP4 0000167d: DUP1 0000167e: ADD 0000167f: OR 00001680: DUP6 00001681: SSTORE 00001682: PUSH2 0x16b3 00001685: JUMP 00001686: JUMPDEST 00001687: DUP3 00001688: DUP1 00001689: ADD 0000168a: PUSH1 0x01 0000168c: ADD 0000168d: DUP6 0000168e: SSTORE 0000168f: DUP3 00001690: ISZERO 00001691: PUSH2 0x16b3 00001694: JUMPI 00001695: SWAP2 00001696: DUP3 00001697: ADD 00001698: JUMPDEST 00001699: DUP3 0000169a: DUP2 0000169b: GT 0000169c: ISZERO 0000169d: PUSH2 0x16b3 000016a0: JUMPI 000016a1: DUP3 000016a2: MLOAD 000016a3: DUP3 000016a4: SSTORE 000016a5: SWAP2 000016a6: PUSH1 0x20 000016a8: ADD 000016a9: SWAP2 000016aa: SWAP1 000016ab: PUSH1 0x01 000016ad: ADD 000016ae: SWAP1 000016af: PUSH2 0x1698 000016b2: JUMP 000016b3: JUMPDEST 000016b4: POP 000016b5: PUSH2 0x0aee 000016b8: SWAP3 000016b9: SWAP2 000016ba: POP 000016bb: JUMPDEST 000016bc: PUSH2 0x08d5 000016bf: SWAP2 000016c0: SWAP1 000016c1: JUMPDEST 000016c2: DUP1 000016c3: DUP3 000016c4: GT 000016c5: ISZERO 000016c6: PUSH2 0x0aee 000016c9: JUMPI 000016ca: PUSH1 0x00 000016cc: DUP2 000016cd: SSTORE 000016ce: PUSH1 0x01 000016d0: ADD 000016d1: PUSH2 0x16c1 000016d4: JUMP 000016d5: STOP 000016d6: LOG1 000016d7: PUSH6 0x627a7a723058 000016de: KECCAK256 000016df: EXTCODESIZE 000016e0: LOG3 000016e1: UNKNOWN(0xB3) 000016e2: LOG1 000016e3: MSTORE 000016e4: SELFDESTRUCT 000016e5: PUSH25 0x12a96d9f8b69fe855a021e6863e8e846ef3aec9cd908ae1854 000016ff: STOP 00001700: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | math | codex | Dividend distribution multiplies payouts when listed token sum is zero | 90 | no | — |
viewevidence_json{
"evidence": "`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.",
"locations": [
"contracts/Contract.sol:435",
"contracts/Contract.sol:455",
"contracts/Contract.sol:465",
"contracts/Contract.sol:780",
"contracts/Contract.sol:938",
"contracts/Contract.sol:960"
],
"recommendation": "In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.",
"exploit_scenario": "1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (\u22480.08 * N * sale value + 0.90 * sale value per sell)."
}
|
| high | other | cast | SELFDESTRUCT present | 85 | no | — |
viewevidence_json{
"notes": "selfdestruct can remove contract code and send funds; review reachability",
"selfdestruct_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e
call_targets:
0x25a06d4e1f804ce62cf11b091180a5c84980d93a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x25a06d4e1f804ce62cf11b091180a5c84980d93a"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x10d0ffdd",
"selector": "0x10d0ffdd",
"calldata_variants": [
"0x10d0ffdd",
"0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x22609373",
"selector": "0x22609373",
"calldata_variants": [
"0x22609373",
"0x226093730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x27defa1f",
"selector": "0x27defa1f",
"calldata_variants": [
"0x27defa1f",
"0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x392efb52",
"selector": "0x392efb52",
"calldata_variants": [
"0x392efb52",
"0x392efb520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2526,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2586,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2652,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e
call_targets:
0x25a06d4e1f804ce62cf11b091180a5c84980d93a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x25a06d4e1f804ce62cf11b091180a5c84980d93a"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x10d0ffdd",
"selector": "0x10d0ffdd",
"calldata_variants": [
"0x10d0ffdd",
"0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x22609373",
"selector": "0x22609373",
"calldata_variants": [
"0x22609373",
"0x226093730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x27defa1f",
"selector": "0x27defa1f",
"calldata_variants": [
"0x27defa1f",
"0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x392efb52",
"selector": "0x392efb52",
"calldata_variants": [
"0x392efb52",
"0x392efb520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2526,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2586,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2652,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|
| high | other | detector | SELFDESTRUCT reachable | 65 | no | no |
viewtrace_id: 0x12a5ae3137df03269882de83333ca8fb7e5d334178c5eb2bc05686d3eb5d80d9
validation_json{
"sink": "SELFDESTRUCT",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x12a5ae3137df03269882de83333ca8fb7e5d334178c5eb2bc05686d3eb5d80d9",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x10d0ffdd",
"selector": "0x10d0ffdd",
"calldata_variants": [
"0x10d0ffdd",
"0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x22609373",
"selector": "0x22609373",
"calldata_variants": [
"0x22609373",
"0x226093730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x27defa1f",
"selector": "0x27defa1f",
"calldata_variants": [
"0x27defa1f",
"0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x392efb52",
"selector": "0x392efb52",
"calldata_variants": [
"0x392efb52",
"0x392efb520000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [],
"selfdestruct_count": 1
}
|