2777b685-b8a7-47d0-87a2-7c35425b4f1b
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 |
|---|---|---|---|---|
| 31099 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 76408 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 76409 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 76410 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 76411 | capability.graph | complete | 1 / 3 | 1 week ago |
| 76412 | detector.run | complete | 1 / 3 | 1 week ago |
| 76413 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:10823] OpenAI Codex v0.77.0 (research preview)
[codex:10823] --------
[codex:10823] workdir: /tmp/codex-multi-efq4wlyf
[codex:10823] model: gpt-5.2-codex
[codex:10823] provider: openai
[codex:10823] approval: never
[codex:10823] sandbox: read-only
[codex:10823] reasoning effort: xhigh
[codex:10823] reasoning summaries: auto
[codex:10823] session id: 019b7ab1-47b6-7113-9bda-29c408fc4ac6
[codex:10823] --------
[codex:10823] user
[codex:10823] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:10823]
[codex:10823] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:10823]
[codex:10823] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:10823] - Gas inefficiency, code quality, naming, or best practices
[codex:10823] - Theoretical vulnerabilities without a clear extraction path
[codex:10823] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:10823] - Front-running unless it enables theft beyond MEV
[codex:10823] - DoS, griefing, or issues that don't result in attacker profit
[codex:10823] - Missing events, view function issues, or informational findings
[codex:10823]
[codex:10823] HIGH-VALUE PATTERNS TO HUNT:
[codex:10823] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:10823] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:10823] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:10823] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:10823] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:10823] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:10823] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:10823] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:10823] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:10823]
[codex:10823] For each finding, you MUST provide:
[codex:10823] 1. Exact file and line numbers of vulnerable code
[codex:10823] 2. Step-by-step exploit transaction sequence
[codex:10823] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:10823]
[codex:10823] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:10823]
[codex:10823] Output MUST be valid JSON matching the provided schema.
[codex:10823] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:10823] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:10823] mcp startup: no servers
[codex:10823]
[codex:10823] thinking
[codex:10823] **Preparing to read instructions**
[codex:10823] exec
[codex:10823] /bin/bash -lc ls in /tmp/codex-multi-efq4wlyf succeeded in 5ms:
[codex:10823] AUDIT_BUNDLE.txt
[codex:10823] codex-output-schema.json
[codex:10823] contracts
[codex:10823]
[codex:10823] thinking
[codex:10823] **Reading AUDIT_BUNDLE.txt**
[codex:10823] exec
[codex:10823] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-efq4wlyf succeeded in 6ms:
[codex:10823] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:10823]
[codex:10823] ================================================================================
[codex:10823] FILE: contracts/Contract.sol
[codex:10823] ================================================================================
[codex:10823] pragma solidity ^0.4.4;
[codex:10823]
[codex:10823]
[codex:10823] /// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
[codex:10823] /// @author Stefan George - <stefan.george@consensys.net>
[codex:10823] contract MultiSigWallet {
[codex:10823]
[codex:10823] event Confirmation(address sender, bytes32 transactionHash);
[codex:10823] event Revocation(address sender, bytes32 transactionHash);
[codex:10823] event Submission(bytes32 transactionHash);
[codex:10823] event Execution(bytes32 transactionHash);
[codex:10823] event Deposit(address sender, uint value);
[codex:10823] event OwnerAddition(address owner);
[codex:10823] event OwnerRemoval(address owner);
[codex:10823] event RequiredUpdate(uint required);
[codex:10823] Reconnecting... 1/5
[codex:10823]
[codex:10823] thinking
[codex:10823] **Analyzing multisig signature replay risks**
[codex:10823] exec
[codex:10823] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-efq4wlyf succeeded in 6ms:
[codex:10823] 1 pragma solidity ^0.4.4;
[codex:10823] 2
[codex:10823] 3
[codex:10823] 4 /// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
[codex:10823] 5 /// @author Stefan George - <stefan.george@consensys.net>
[codex:10823] 6 contract MultiSigWallet {
[codex:10823] 7
[codex:10823] 8 event Confirmation(address sender, bytes32 transactionHash);
[codex:10823] 9 event Revocation(address sender, bytes32 transactionHash);
[codex:10823] 10 event Submission(bytes32 transactionHash);
[codex:10823] 11 event Execution(bytes32 transactionHash);
[codex:10823] 12 event Deposit(address sender, uint value);
[codex:10823] 13 event OwnerAddition(address owner);
[codex:10823] 14 event OwnerRemoval(address owner);
[codex:10823] 15 event RequiredUpdate(uint required);
[codex:10823] 16
[codex:10823] 17 mapping (bytes32 => Transaction) public transactions;
[codex:10823] 18 mapping (bytes32 => mapping (address => bool)) public confirmations;
[codex:10823] 19 mapping (address => bool) public isOwner;
[codex:10823] 20 address[] owners;
[codex:10823]
[codex:10823]
[codex:10823] thinking
[codex:10823] **Analyzing potential multi-sig vulnerabilities**
[codex:10823]
[codex:10823] I'm carefully examining if any exploitable bugs exist that could yield profit, focusing on signature misuse, reentrancy, confirmation counting, transaction execution, and storage handling in this multi-signature wallet. The main concerns are around signature replay, off-by-one or equality checks in confirmations, and whether the executed flag persists properly to prevent double execution, but most issues appear non-profitable or mitigated by existing checks.
[codex:10823] thinking
[codex:10823] **Identifying signature replay vulnerability with missing domain separation**
[codex:10823]
[codex:10823] I'm outlining a concrete exploit where owner signatures on a raw transaction hash lacking wallet and chain domain separation can be replayed across different deployments or chains. This enables an attacker to drain funds by reusing signatures from other contexts, exploiting missing EIP-191/EIP-712 style protections in the multisig’s transaction hash computation and signature verification.
[codex:10823] codex
[codex:10823] {"no_findings":false,"summary":"Found 1 exploitable signature-replay path allowing full wallet drain if owners sign the same hash in another context.","findings":[{"severity":"high","category":"auth","title":"Replayable owner signatures due to missing domain separation in transaction hash","exploit_scenario":"1) Attacker crafts a drain transaction (destination=attacker, value=wallet ETH balance or calldata to transfer tokens/NFTs, nonce arbitrary) and convinces the owners to sign this raw hash in another context (e.g., a testnet/other-chain multisig or off-chain approval). 2) Because the hash is just keccak256(destination,value,data,nonce) with no wallet address/chainId/prefix, those signatures are valid for this wallet. 3) Attacker calls submitTransactionWithSignatures/confirmTransactionWithSignatures with the signatures to execute the transfer. Profit: up to the wallet’s full ETH/token/NFT holdings.","recommendation":"Bind signatures to this wallet and chain by hashing in address(this), chainId, and a wallet-specific nonce; prefer EIP-712 or EIP-191 prefixing.","evidence":"Transaction hash omits contract/chain domain: `transactionHash = sha3(destination, value, data, nonce)`; signatures are checked directly against this raw hash via `ecrecover`.","locations":["contracts/Contract.sol:130","contracts/Contract.sol:38","contracts/Contract.sol:40","contracts/Contract.sol:176"]}]}
[codex:10823] tokens used
[codex:10823] 18,705
[codex:10823] {"no_findings":false,"summary":"Found 1 exploitable signature-replay path allowing full wallet drain if owners sign the same hash in another context.","findings":[{"severity":"high","category":"auth","title":"Replayable owner signatures due to missing domain separation in transaction hash","exploit_scenario":"1) Attacker crafts a drain transaction (destination=attacker, value=wallet ETH balance or calldata to transfer tokens/NFTs, nonce arbitrary) and convinces the owners to sign this raw hash in another context (e.g., a testnet/other-chain multisig or off-chain approval). 2) Because the hash is just keccak256(destination,value,data,nonce) with no wallet address/chainId/prefix, those signatures are valid for this wallet. 3) Attacker calls submitTransactionWithSignatures/confirmTransactionWithSignatures with the signatures to execute the transfer. Profit: up to the wallet’s full ETH/token/NFT holdings.","recommendation":"Bind signatures to this wallet and chain by hashing in address(this), chainId, and a wallet-specific nonce; prefer EIP-712 or EIP-191 prefixing.","evidence":"Transaction hash omits contract/chain domain: `transactionHash = sha3(destination, value, data, nonce)`; signatures are checked directly against this raw hash via `ecrecover`.","locations":["contracts/Contract.sol:130","contracts/Contract.sol:38","contracts/Contract.sol:40","contracts/Contract.sol:176"]}]}
{
"codex": {
"ran_at": "2026-01-01T17:56:55.949974+00:00",
"returncode": 0
},
"summary": "Found 1 exploitable signature-replay path allowing full wallet drain if owners sign the same hash in another context.",
"raw_final": {
"summary": "Found 1 exploitable signature-replay path allowing full wallet drain if owners sign the same hash in another context.",
"findings": [
{
"title": "Replayable owner signatures due to missing domain separation in transaction hash",
"category": "auth",
"evidence": "Transaction hash omits contract/chain domain: `transactionHash = sha3(destination, value, data, nonce)`; signatures are checked directly against this raw hash via `ecrecover`.",
"severity": "high",
"locations": [
"contracts/Contract.sol:130",
"contracts/Contract.sol:38",
"contracts/Contract.sol:40",
"contracts/Contract.sol:176"
],
"recommendation": "Bind signatures to this wallet and chain by hashing in address(this), chainId, and a wallet-specific nonce; prefer EIP-712 or EIP-191 prefixing.",
"exploit_scenario": "1) Attacker crafts a drain transaction (destination=attacker, value=wallet ETH balance or calldata to transfer tokens/NFTs, nonce arbitrary) and convinces the owners to sign this raw hash in another context (e.g., a testnet/other-chain multisig or off-chain approval). 2) Because the hash is just keccak256(destination,value,data,nonce) with no wallet address/chainId/prefix, those signatures are valid for this wallet. 3) Attacker calls submitTransactionWithSignatures/confirmTransactionWithSignatures with the signatures to execute the transfer. Profit: up to the wallet\u2019s full ETH/token/NFT holdings."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x00cf 0000000a: JUMPI 0000000b: PUSH1 0xe0 0000000d: PUSH1 0x02 0000000f: EXP 00000010: PUSH1 0x00 00000012: CALLDATALOAD 00000013: DIV 00000014: PUSH4 0x0c4ecab4 00000019: DUP2 0000001a: EQ 0000001b: PUSH2 0x0121 0000001e: JUMPI 0000001f: DUP1 00000020: PUSH4 0x0d59b564 00000025: EQ 00000026: PUSH2 0x014e 00000029: JUMPI 0000002a: DUP1 0000002b: PUSH4 0x173825d9 00000030: EQ 00000031: PUSH2 0x01be 00000034: JUMPI 00000035: DUP1 00000036: PUSH4 0x2f54bf6e 0000003b: EQ 0000003c: PUSH2 0x01eb 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x59bf77df 00000046: EQ 00000047: PUSH2 0x020b 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x607fa5a4 00000051: EQ 00000052: PUSH2 0x027f 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x642f2eaf 0000005c: EQ 0000005d: PUSH2 0x02ab 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x6486aa51 00000067: EQ 00000068: PUSH2 0x02ef 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x7065cb48 00000072: EQ 00000073: PUSH2 0x02ff 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x79716e43 0000007d: EQ 0000007e: PUSH2 0x032a 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x9119e5fb 00000088: EQ 00000089: PUSH2 0x033a 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0xc69ed5f2 00000093: EQ 00000094: PUSH2 0x03b0 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0xd11db83f 0000009e: EQ 0000009f: PUSH2 0x03c0 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xdc8452cd 000000a9: EQ 000000aa: PUSH2 0x050b 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xe6a6d4c8 000000b4: EQ 000000b5: PUSH2 0x0519 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xf3fc536d 000000bf: EQ 000000c0: PUSH2 0x053a 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0xfbc6d0ff 000000ca: EQ 000000cb: PUSH2 0x056e 000000ce: JUMPI 000000cf: JUMPDEST 000000d0: PUSH2 0x05f7 000000d3: PUSH1 0x00 000000d5: CALLVALUE 000000d6: GT 000000d7: ISZERO 000000d8: PUSH2 0x011f 000000db: JUMPI 000000dc: PUSH1 0x40 000000de: DUP1 000000df: MLOAD 000000e0: PUSH1 0x01 000000e2: PUSH1 0xa0 000000e4: PUSH1 0x02 000000e6: EXP 000000e7: SUB 000000e8: CALLER 000000e9: AND 000000ea: DUP2 000000eb: MSTORE 000000ec: CALLVALUE 000000ed: PUSH1 0x20 000000ef: DUP3 000000f0: ADD 000000f1: MSTORE 000000f2: DUP2 000000f3: MLOAD 000000f4: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 00000115: SWAP3 00000116: SWAP2 00000117: DUP2 00000118: SWAP1 00000119: SUB 0000011a: SWAP1 0000011b: SWAP2 0000011c: ADD 0000011d: SWAP1 0000011e: LOG1 0000011f: JUMPDEST 00000120: JUMP 00000121: JUMPDEST 00000122: CALLVALUE 00000123: PUSH2 0x0002 00000126: JUMPI 00000127: PUSH1 0x01 00000129: PUSH1 0x20 0000012b: SWAP1 0000012c: DUP2 0000012d: MSTORE 0000012e: PUSH1 0x04 00000130: CALLDATALOAD 00000131: PUSH1 0x00 00000133: SWAP1 00000134: DUP2 00000135: MSTORE 00000136: PUSH1 0x40 00000138: DUP1 00000139: DUP3 0000013a: KECCAK256 0000013b: SWAP1 0000013c: SWAP3 0000013d: MSTORE 0000013e: PUSH1 0x24 00000140: CALLDATALOAD 00000141: DUP2 00000142: MSTORE 00000143: KECCAK256 00000144: SLOAD 00000145: PUSH2 0x05f9 00000148: SWAP1 00000149: PUSH1 0xff 0000014b: AND 0000014c: DUP2 0000014d: JUMP 0000014e: JUMPDEST 0000014f: CALLVALUE 00000150: PUSH2 0x0002 00000153: JUMPI 00000154: PUSH2 0x060d 00000157: PUSH1 0x04 00000159: DUP1 0000015a: CALLDATALOAD 0000015b: SWAP1 0000015c: PUSH1 0x24 0000015e: DUP1 0000015f: CALLDATALOAD 00000160: SWAP2 00000161: PUSH1 0x44 00000163: CALLDATALOAD 00000164: SWAP2 00000165: DUP3 00000166: ADD 00000167: SWAP2 00000168: ADD 00000169: CALLDATALOAD 0000016a: PUSH1 0x64 0000016c: CALLDATALOAD 0000016d: PUSH1 0x00 0000016f: PUSH2 0x0740 00000172: DUP7 00000173: DUP7 00000174: DUP7 00000175: DUP7 00000176: DUP1 00000177: DUP1 00000178: PUSH1 0x1f 0000017a: ADD 0000017b: PUSH1 0x20 0000017d: DUP1 0000017e: SWAP2 0000017f: DIV 00000180: MUL 00000181: PUSH1 0x20 00000183: ADD 00000184: PUSH1 0x40 00000186: MLOAD 00000187: SWAP1 00000188: DUP2 00000189: ADD 0000018a: PUSH1 0x40 0000018c: MSTORE 0000018d: DUP1 0000018e: SWAP4 0000018f: SWAP3 00000190: SWAP2 00000191: SWAP1 00000192: DUP2 00000193: DUP2 00000194: MSTORE 00000195: PUSH1 0x20 00000197: ADD 00000198: DUP4 00000199: DUP4 0000019a: DUP1 0000019b: DUP3 0000019c: DUP5 0000019d: CALLDATACOPY 0000019e: POP 0000019f: DUP11 000001a0: SWAP5 000001a1: POP 000001a2: POP 000001a3: POP 000001a4: POP 000001a5: POP 000001a6: JUMPDEST 000001a7: PUSH1 0x00 000001a9: DUP5 000001aa: PUSH1 0x01 000001ac: PUSH1 0xa0 000001ae: PUSH1 0x02 000001b0: EXP 000001b1: SUB 000001b2: DUP2 000001b3: AND 000001b4: ISZERO 000001b5: ISZERO 000001b6: PUSH2 0x0ab3 000001b9: JUMPI 000001ba: PUSH2 0x0002 000001bd: JUMP 000001be: JUMPDEST 000001bf: CALLVALUE 000001c0: PUSH2 0x0002 000001c3: JUMPI 000001c4: PUSH2 0x05f7 000001c7: PUSH1 0x04 000001c9: CALLDATALOAD 000001ca: PUSH1 0x00 000001cc: ADDRESS 000001cd: PUSH1 0x01 000001cf: PUSH1 0xa0 000001d1: PUSH1 0x02 000001d3: EXP 000001d4: SUB 000001d5: AND 000001d6: CALLER 000001d7: PUSH1 0x01 000001d9: PUSH1 0xa0 000001db: PUSH1 0x02 000001dd: EXP 000001de: SUB 000001df: AND 000001e0: EQ 000001e1: ISZERO 000001e2: ISZERO 000001e3: PUSH2 0x096c 000001e6: JUMPI 000001e7: PUSH2 0x0002 000001ea: JUMP 000001eb: JUMPDEST 000001ec: CALLVALUE 000001ed: PUSH2 0x0002 000001f0: JUMPI 000001f1: PUSH2 0x05f9 000001f4: PUSH1 0x04 000001f6: CALLDATALOAD 000001f7: PUSH1 0x02 000001f9: PUSH1 0x20 000001fb: MSTORE 000001fc: PUSH1 0x00 000001fe: SWAP1 000001ff: DUP2 00000200: MSTORE 00000201: PUSH1 0x40 00000203: SWAP1 00000204: KECCAK256 00000205: SLOAD 00000206: PUSH1 0xff 00000208: AND 00000209: DUP2 0000020a: JUMP 0000020b: JUMPDEST 0000020c: CALLVALUE 0000020d: PUSH2 0x0002 00000210: JUMPI 00000211: PUSH2 0x060d 00000214: PUSH1 0x04 00000216: CALLDATALOAD 00000217: PUSH1 0x00 00000219: DUP1 0000021a: JUMPDEST 0000021b: PUSH1 0x03 0000021d: SLOAD 0000021e: DUP2 0000021f: LT 00000220: ISZERO 00000221: PUSH2 0x0c24 00000224: JUMPI 00000225: PUSH1 0x00 00000227: DUP4 00000228: DUP2 00000229: MSTORE 0000022a: PUSH1 0x01 0000022c: PUSH1 0x20 0000022e: MSTORE 0000022f: PUSH1 0x40 00000231: DUP2 00000232: KECCAK256 00000233: PUSH1 0x03 00000235: DUP1 00000236: SLOAD 00000237: SWAP2 00000238: SWAP3 00000239: SWAP2 0000023a: DUP5 0000023b: SWAP1 0000023c: DUP2 0000023d: LT 0000023e: ISZERO 0000023f: PUSH2 0x0002 00000242: JUMPI 00000243: PUSH1 0x00 00000245: SWAP2 00000246: DUP3 00000247: MSTORE 00000248: PUSH1 0x20 0000024a: DUP1 0000024b: DUP4 0000024c: KECCAK256 0000024d: SWAP1 0000024e: SWAP2 0000024f: ADD 00000250: SLOAD 00000251: PUSH1 0x01 00000253: PUSH1 0xa0 00000255: PUSH1 0x02 00000257: EXP 00000258: SUB 00000259: AND 0000025a: DUP4 0000025b: MSTORE 0000025c: DUP3 0000025d: ADD 0000025e: SWAP3 0000025f: SWAP1 00000260: SWAP3 00000261: MSTORE 00000262: PUSH1 0x40 00000264: ADD 00000265: SWAP1 00000266: KECCAK256 00000267: SLOAD 00000268: PUSH1 0xff 0000026a: AND 0000026b: ISZERO 0000026c: PUSH2 0x0277 0000026f: JUMPI 00000270: PUSH1 0x01 00000272: SWAP2 00000273: SWAP1 00000274: SWAP2 00000275: ADD 00000276: SWAP1 00000277: JUMPDEST 00000278: PUSH1 0x01 0000027a: ADD 0000027b: PUSH2 0x021a 0000027e: JUMP 0000027f: JUMPDEST 00000280: CALLVALUE 00000281: PUSH2 0x0002 00000284: JUMPI 00000285: PUSH2 0x05f7 00000288: PUSH1 0x04 0000028a: CALLDATALOAD 0000028b: JUMPDEST 0000028c: ADDRESS 0000028d: PUSH1 0x01 0000028f: PUSH1 0xa0 00000291: PUSH1 0x02 00000293: EXP 00000294: SUB 00000295: AND 00000296: CALLER 00000297: PUSH1 0x01 00000299: PUSH1 0xa0 0000029b: PUSH1 0x02 0000029d: EXP 0000029e: SUB 0000029f: AND 000002a0: EQ 000002a1: ISZERO 000002a2: ISZERO 000002a3: PUSH2 0x0c2a 000002a6: JUMPI 000002a7: PUSH2 0x0002 000002aa: JUMP 000002ab: JUMPDEST 000002ac: CALLVALUE 000002ad: PUSH2 0x0002 000002b0: JUMPI 000002b1: PUSH2 0x061f 000002b4: PUSH1 0x04 000002b6: CALLDATALOAD 000002b7: PUSH1 0x00 000002b9: PUSH1 0x20 000002bb: DUP2 000002bc: SWAP1 000002bd: MSTORE 000002be: SWAP1 000002bf: DUP2 000002c0: MSTORE 000002c1: PUSH1 0x40 000002c3: SWAP1 000002c4: KECCAK256 000002c5: DUP1 000002c6: SLOAD 000002c7: PUSH1 0x01 000002c9: DUP3 000002ca: ADD 000002cb: SLOAD 000002cc: PUSH1 0x03 000002ce: DUP4 000002cf: ADD 000002d0: SLOAD 000002d1: PUSH1 0x04 000002d3: DUP5 000002d4: ADD 000002d5: SLOAD 000002d6: PUSH1 0x01 000002d8: PUSH1 0xa0 000002da: PUSH1 0x02 000002dc: EXP 000002dd: SUB 000002de: SWAP1 000002df: SWAP4 000002e0: AND 000002e1: SWAP4 000002e2: SWAP2 000002e3: SWAP3 000002e4: PUSH1 0x02 000002e6: SWAP1 000002e7: SWAP3 000002e8: ADD 000002e9: SWAP2 000002ea: PUSH1 0xff 000002ec: AND 000002ed: DUP6 000002ee: JUMP 000002ef: JUMPDEST 000002f0: CALLVALUE 000002f1: PUSH2 0x0002 000002f4: JUMPI 000002f5: PUSH2 0x05f9 000002f8: PUSH1 0x04 000002fa: CALLDATALOAD 000002fb: PUSH2 0x06d6 000002fe: JUMP 000002ff: JUMPDEST 00000300: CALLVALUE 00000301: PUSH2 0x0002 00000304: JUMPI 00000305: PUSH2 0x05f7 00000308: PUSH1 0x04 0000030a: CALLDATALOAD 0000030b: ADDRESS 0000030c: PUSH1 0x01 0000030e: PUSH1 0xa0 00000310: PUSH1 0x02 00000312: EXP 00000313: SUB 00000314: AND 00000315: CALLER 00000316: PUSH1 0x01 00000318: PUSH1 0xa0 0000031a: PUSH1 0x02 0000031c: EXP 0000031d: SUB 0000031e: AND 0000031f: EQ 00000320: ISZERO 00000321: ISZERO 00000322: PUSH2 0x0ca0 00000325: JUMPI 00000326: PUSH2 0x0002 00000329: JUMP 0000032a: JUMPDEST 0000032b: CALLVALUE 0000032c: PUSH2 0x0002 0000032f: JUMPI 00000330: PUSH2 0x05f7 00000333: PUSH1 0x04 00000335: CALLDATALOAD 00000336: PUSH2 0x0747 00000339: JUMP 0000033a: JUMPDEST 0000033b: CALLVALUE 0000033c: PUSH2 0x0002 0000033f: JUMPI 00000340: PUSH2 0x060d 00000343: PUSH1 0x04 00000345: DUP1 00000346: CALLDATALOAD 00000347: SWAP1 00000348: PUSH1 0x24 0000034a: DUP1 0000034b: CALLDATALOAD 0000034c: SWAP2 0000034d: PUSH1 0x44 0000034f: CALLDATALOAD 00000350: DUP1 00000351: DUP4 00000352: ADD 00000353: SWAP3 00000354: SWAP1 00000355: DUP3 00000356: ADD 00000357: CALLDATALOAD 00000358: SWAP2 00000359: PUSH1 0x64 0000035b: CALLDATALOAD 0000035c: SWAP2 0000035d: PUSH1 0x84 0000035f: CALLDATALOAD 00000360: DUP1 00000361: DUP3 00000362: ADD 00000363: SWAP3 00000364: SWAP1 00000365: DUP2 00000366: ADD 00000367: CALLDATALOAD 00000368: SWAP2 00000369: PUSH1 0xa4 0000036b: CALLDATALOAD 0000036c: SWAP1 0000036d: DUP2 0000036e: ADD 0000036f: SWAP2 00000370: ADD 00000371: CALLDATALOAD 00000372: PUSH1 0x00 00000374: PUSH2 0x07df 00000377: DUP11 00000378: DUP11 00000379: DUP11 0000037a: DUP11 0000037b: DUP1 0000037c: DUP1 0000037d: PUSH1 0x1f 0000037f: ADD 00000380: PUSH1 0x20 00000382: DUP1 00000383: SWAP2 00000384: DIV 00000385: MUL 00000386: PUSH1 0x20 00000388: ADD 00000389: PUSH1 0x40 0000038b: MLOAD 0000038c: SWAP1 0000038d: DUP2 0000038e: ADD 0000038f: PUSH1 0x40 00000391: MSTORE 00000392: DUP1 00000393: SWAP4 00000394: SWAP3 00000395: SWAP2 00000396: SWAP1 00000397: DUP2 00000398: DUP2 00000399: MSTORE 0000039a: PUSH1 0x20 0000039c: ADD 0000039d: DUP4 0000039e: DUP4 0000039f: DUP1 000003a0: DUP3 000003a1: DUP5 000003a2: CALLDATACOPY 000003a3: POP 000003a4: DUP15 000003a5: SWAP5 000003a6: POP 000003a7: PUSH2 0x01a6 000003aa: SWAP4 000003ab: POP 000003ac: POP 000003ad: POP 000003ae: POP 000003af: JUMP 000003b0: JUMPDEST 000003b1: CALLVALUE 000003b2: PUSH2 0x0002 000003b5: JUMPI 000003b6: PUSH2 0x05f7 000003b9: PUSH1 0x04 000003bb: CALLDATALOAD 000003bc: PUSH2 0x0774 000003bf: JUMP 000003c0: JUMPDEST 000003c1: CALLVALUE 000003c2: PUSH2 0x0002 000003c5: JUMPI 000003c6: PUSH2 0x0795 000003c9: PUSH1 0x40 000003cb: DUP1 000003cc: MLOAD 000003cd: PUSH1 0x20 000003cf: DUP2 000003d0: ADD 000003d1: SWAP1 000003d2: SWAP2 000003d3: MSTORE 000003d4: PUSH1 0x00 000003d6: DUP2 000003d7: MSTORE 000003d8: PUSH2 0x0ed6 000003db: PUSH1 0x01 000003dd: JUMPDEST 000003de: PUSH1 0x40 000003e0: DUP1 000003e1: MLOAD 000003e2: PUSH1 0x20 000003e4: DUP2 000003e5: DUP2 000003e6: ADD 000003e7: DUP4 000003e8: MSTORE 000003e9: PUSH1 0x00 000003eb: DUP1 000003ec: DUP4 000003ed: MSTORE 000003ee: DUP4 000003ef: MLOAD 000003f0: SWAP2 000003f1: DUP3 000003f2: ADD 000003f3: DUP5 000003f4: MSTORE 000003f5: DUP1 000003f6: DUP3 000003f7: MSTORE 000003f8: PUSH1 0x04 000003fa: SLOAD 000003fb: SWAP4 000003fc: MLOAD 000003fd: SWAP3 000003fe: SWAP4 000003ff: SWAP2 00000400: SWAP3 00000401: SWAP1 00000402: SWAP2 00000403: DUP3 00000404: SWAP2 00000405: DUP1 00000406: MSIZE 00000407: LT 00000408: PUSH2 0x040e 0000040b: JUMPI 0000040c: POP 0000040d: MSIZE 0000040e: JUMPDEST 0000040f: SWAP1 00000410: DUP1 00000411: DUP3 00000412: MSTORE 00000413: DUP1 00000414: PUSH1 0x20 00000416: MUL 00000417: PUSH1 0x20 00000419: ADD 0000041a: DUP3 0000041b: ADD 0000041c: PUSH1 0x40 0000041e: MSTORE 0000041f: DUP1 00000420: ISZERO 00000421: PUSH2 0x0425 00000424: JUMPI 00000425: JUMPDEST 00000426: POP 00000427: SWAP3 00000428: POP 00000429: PUSH1 0x00 0000042b: SWAP2 0000042c: POP 0000042d: PUSH1 0x00 0000042f: SWAP1 00000430: POP 00000431: JUMPDEST 00000432: PUSH1 0x04 00000434: SLOAD 00000435: DUP2 00000436: LT 00000437: ISZERO 00000438: PUSH2 0x11c6 0000043b: JUMPI 0000043c: DUP5 0000043d: DUP1 0000043e: ISZERO 0000043f: PUSH2 0x047d 00000442: JUMPI 00000443: POP 00000444: PUSH1 0x04 00000446: DUP1 00000447: SLOAD 00000448: PUSH1 0x00 0000044a: SWAP2 0000044b: DUP3 0000044c: SWAP2 0000044d: DUP5 0000044e: SWAP1 0000044f: DUP2 00000450: LT 00000451: ISZERO 00000452: PUSH2 0x0002 00000455: JUMPI 00000456: SWAP1 00000457: PUSH1 0x00 00000459: MSTORE 0000045a: PUSH1 0x20 0000045c: PUSH1 0x00 0000045e: KECCAK256 0000045f: SWAP1 00000460: ADD 00000461: PUSH1 0x00 00000463: POP 00000464: SLOAD 00000465: DUP2 00000466: MSTORE 00000467: PUSH1 0x20 00000469: DUP2 0000046a: ADD 0000046b: SWAP2 0000046c: SWAP1 0000046d: SWAP2 0000046e: MSTORE 0000046f: PUSH1 0x40 00000471: ADD 00000472: PUSH1 0x00 00000474: KECCAK256 00000475: PUSH1 0x04 00000477: ADD 00000478: SLOAD 00000479: PUSH1 0xff 0000047b: AND 0000047c: ISZERO 0000047d: JUMPDEST 0000047e: DUP1 0000047f: PUSH2 0x04c5 00000482: JUMPI 00000483: POP 00000484: DUP5 00000485: ISZERO 00000486: DUP1 00000487: ISZERO 00000488: PUSH2 0x04c5 0000048b: JUMPI 0000048c: POP 0000048d: PUSH1 0x04 0000048f: DUP1 00000490: SLOAD 00000491: PUSH1 0x00 00000493: SWAP2 00000494: DUP3 00000495: SWAP2 00000496: DUP5 00000497: SWAP1 00000498: DUP2 00000499: LT 0000049a: ISZERO 0000049b: PUSH2 0x0002 0000049e: JUMPI 0000049f: SWAP1 000004a0: PUSH1 0x00 000004a2: MSTORE 000004a3: PUSH1 0x20 000004a5: PUSH1 0x00 000004a7: KECCAK256 000004a8: SWAP1 000004a9: ADD 000004aa: PUSH1 0x00 000004ac: POP 000004ad: SLOAD 000004ae: DUP2 000004af: MSTORE 000004b0: PUSH1 0x20 000004b2: DUP2 000004b3: ADD 000004b4: SWAP2 000004b5: SWAP1 000004b6: SWAP2 000004b7: MSTORE 000004b8: PUSH1 0x40 000004ba: ADD 000004bb: PUSH1 0x00 000004bd: KECCAK256 000004be: PUSH1 0x04 000004c0: ADD 000004c1: SLOAD 000004c2: PUSH1 0xff 000004c4: AND 000004c5: JUMPDEST 000004c6: ISZERO 000004c7: PUSH2 0x0503 000004ca: JUMPI 000004cb: PUSH1 0x04 000004cd: DUP1 000004ce: SLOAD 000004cf: DUP3 000004d0: SWAP1 000004d1: DUP2 000004d2: LT 000004d3: ISZERO 000004d4: PUSH2 0x0002 000004d7: JUMPI 000004d8: SWAP1 000004d9: PUSH1 0x00 000004db: MSTORE 000004dc: PUSH1 0x20 000004de: PUSH1 0x00 000004e0: KECCAK256 000004e1: SWAP1 000004e2: ADD 000004e3: PUSH1 0x00 000004e5: POP 000004e6: SLOAD 000004e7: DUP4 000004e8: DUP4 000004e9: DUP2 000004ea: MLOAD 000004eb: DUP2 000004ec: LT 000004ed: ISZERO 000004ee: PUSH2 0x0002 000004f1: JUMPI 000004f2: PUSH1 0x20 000004f4: SWAP1 000004f5: DUP2 000004f6: MUL 000004f7: SWAP1 000004f8: SWAP2 000004f9: ADD 000004fa: ADD 000004fb: MSTORE 000004fc: PUSH1 0x01 000004fe: SWAP2 000004ff: SWAP1 00000500: SWAP2 00000501: ADD 00000502: SWAP1 00000503: JUMPDEST 00000504: PUSH1 0x01 00000506: ADD 00000507: PUSH2 0x0431 0000050a: JUMP 0000050b: JUMPDEST 0000050c: CALLVALUE 0000050d: PUSH2 0x0002 00000510: JUMPI 00000511: PUSH2 0x060d 00000514: PUSH1 0x05 00000516: SLOAD 00000517: DUP2 00000518: JUMP 00000519: JUMPDEST 0000051a: CALLVALUE 0000051b: PUSH2 0x0002 0000051e: JUMPI 0000051f: PUSH2 0x0795 00000522: PUSH1 0x40 00000524: DUP1 00000525: MLOAD 00000526: PUSH1 0x20 00000528: DUP2 00000529: ADD 0000052a: SWAP1 0000052b: SWAP2 0000052c: MSTORE 0000052d: PUSH1 0x00 0000052f: DUP1 00000530: DUP3 00000531: MSTORE 00000532: PUSH2 0x0ed6 00000535: SWAP1 00000536: PUSH2 0x03dd 00000539: JUMP 0000053a: JUMPDEST 0000053b: CALLVALUE 0000053c: PUSH2 0x0002 0000053f: JUMPI 00000540: PUSH2 0x05f7 00000543: PUSH1 0x04 00000545: CALLDATALOAD 00000546: PUSH1 0x01 00000548: PUSH1 0xa0 0000054a: PUSH1 0x02 0000054c: EXP 0000054d: SUB 0000054e: CALLER 0000054f: SWAP1 00000550: DUP2 00000551: AND 00000552: PUSH1 0x00 00000554: SWAP1 00000555: DUP2 00000556: MSTORE 00000557: PUSH1 0x02 00000559: PUSH1 0x20 0000055b: MSTORE 0000055c: PUSH1 0x40 0000055e: SWAP1 0000055f: KECCAK256 00000560: SLOAD 00000561: PUSH1 0xff 00000563: AND 00000564: ISZERO 00000565: ISZERO 00000566: PUSH2 0x0edb 00000569: JUMPI 0000056a: PUSH2 0x0002 0000056d: JUMP 0000056e: JUMPDEST 0000056f: CALLVALUE 00000570: PUSH2 0x0002 00000573: JUMPI 00000574: PUSH1 0x40 00000576: DUP1 00000577: MLOAD 00000578: PUSH1 0x24 0000057a: DUP1 0000057b: CALLDATALOAD 0000057c: PUSH1 0x04 0000057e: DUP2 0000057f: DUP2 00000580: ADD 00000581: CALLDATALOAD 00000582: PUSH1 0x20 00000584: DUP2 00000585: DUP2 00000586: MUL 00000587: DUP7 00000588: DUP2 00000589: ADD 0000058a: DUP3 0000058b: ADD 0000058c: SWAP1 0000058d: SWAP8 0000058e: MSTORE 0000058f: DUP2 00000590: DUP7 00000591: MSTORE 00000592: PUSH2 0x05f7 00000595: SWAP7 00000596: DUP4 00000597: CALLDATALOAD 00000598: SWAP7 00000599: SWAP4 0000059a: SWAP6 0000059b: PUSH1 0x44 0000059d: SWAP6 0000059e: ADD 0000059f: SWAP3 000005a0: SWAP2 000005a1: DUP3 000005a2: SWAP2 000005a3: SWAP1 000005a4: DUP6 000005a5: ADD 000005a6: SWAP1 000005a7: DUP5 000005a8: SWAP1 000005a9: DUP1 000005aa: DUP3 000005ab: DUP5 000005ac: CALLDATACOPY 000005ad: POP 000005ae: POP 000005af: PUSH1 0x40 000005b1: DUP1 000005b2: MLOAD 000005b3: SWAP7 000005b4: CALLDATALOAD 000005b5: DUP1 000005b6: DUP10 000005b7: ADD 000005b8: CALLDATALOAD 000005b9: PUSH1 0x20 000005bb: DUP2 000005bc: DUP2 000005bd: MUL 000005be: DUP11 000005bf: DUP2 000005c0: ADD 000005c1: DUP3 000005c2: ADD 000005c3: SWAP1 000005c4: SWAP5 000005c5: MSTORE 000005c6: DUP2 000005c7: DUP11 000005c8: MSTORE 000005c9: SWAP8 000005ca: SWAP10 000005cb: SWAP9 000005cc: PUSH1 0x64 000005ce: SWAP9 000005cf: SWAP1 000005d0: SWAP8 000005d1: POP 000005d2: PUSH1 0x24 000005d4: SWAP3 000005d5: SWAP1 000005d6: SWAP3 000005d7: ADD 000005d8: SWAP6 000005d9: POP 000005da: SWAP4 000005db: POP 000005dc: DUP4 000005dd: SWAP3 000005de: POP 000005df: DUP6 000005e0: ADD 000005e1: SWAP1 000005e2: DUP5 000005e3: SWAP1 000005e4: DUP1 000005e5: DUP3 000005e6: DUP5 000005e7: CALLDATACOPY 000005e8: POP 000005e9: SWAP5 000005ea: SWAP7 000005eb: POP 000005ec: PUSH2 0x0840 000005ef: SWAP6 000005f0: POP 000005f1: POP 000005f2: POP 000005f3: POP 000005f4: POP 000005f5: POP 000005f6: JUMP 000005f7: JUMPDEST 000005f8: STOP 000005f9: JUMPDEST 000005fa: PUSH1 0x40 000005fc: DUP1 000005fd: MLOAD 000005fe: SWAP2 000005ff: ISZERO 00000600: ISZERO 00000601: DUP3 00000602: MSTORE 00000603: MLOAD 00000604: SWAP1 00000605: DUP2 00000606: SWAP1 00000607: SUB 00000608: PUSH1 0x20 0000060a: ADD 0000060b: SWAP1 0000060c: RETURN 0000060d: JUMPDEST 0000060e: PUSH1 0x40 00000610: DUP1 00000611: MLOAD 00000612: SWAP2 00000613: DUP3 00000614: MSTORE 00000615: MLOAD 00000616: SWAP1 00000617: DUP2 00000618: SWAP1 00000619: SUB 0000061a: PUSH1 0x20 0000061c: ADD 0000061d: SWAP1 0000061e: RETURN 0000061f: JUMPDEST 00000620: PUSH1 0x40 00000622: DUP1 00000623: MLOAD 00000624: PUSH1 0x01 00000626: PUSH1 0xa0 00000628: PUSH1 0x02 0000062a: EXP 0000062b: SUB 0000062c: DUP8 0000062d: AND 0000062e: DUP2 0000062f: MSTORE 00000630: PUSH1 0x20 00000632: DUP2 00000633: ADD 00000634: DUP7 00000635: SWAP1 00000636: MSTORE 00000637: PUSH1 0x60 00000639: DUP2 0000063a: ADD 0000063b: DUP5 0000063c: SWAP1 0000063d: MSTORE 0000063e: DUP3 0000063f: ISZERO 00000640: ISZERO 00000641: PUSH1 0x80 00000643: DUP3 00000644: ADD 00000645: MSTORE 00000646: PUSH1 0xa0 00000648: SWAP2 00000649: DUP2 0000064a: ADD 0000064b: DUP3 0000064c: DUP2 0000064d: MSTORE 0000064e: DUP6 0000064f: SLOAD 00000650: PUSH1 0x02 00000652: PUSH1 0x00 00000654: NOT 00000655: PUSH2 0x0100 00000658: PUSH1 0x01 0000065a: DUP5 0000065b: AND 0000065c: ISZERO 0000065d: MUL 0000065e: ADD 0000065f: SWAP1 00000660: SWAP2 00000661: AND 00000662: DIV 00000663: SWAP3 00000664: DUP3 00000665: ADD 00000666: DUP4 00000667: SWAP1 00000668: MSTORE 00000669: SWAP1 0000066a: SWAP2 0000066b: PUSH1 0xc0 0000066d: DUP4 0000066e: ADD 0000066f: SWAP1 00000670: DUP7 00000671: SWAP1 00000672: DUP1 00000673: ISZERO 00000674: PUSH2 0x06be 00000677: JUMPI 00000678: DUP1 00000679: PUSH1 0x1f 0000067b: LT 0000067c: PUSH2 0x0693 0000067f: JUMPI 00000680: PUSH2 0x0100 00000683: DUP1 00000684: DUP4 00000685: SLOAD 00000686: DIV 00000687: MUL 00000688: DUP4 00000689: MSTORE 0000068a: SWAP2 0000068b: PUSH1 0x20 0000068d: ADD 0000068e: SWAP2 0000068f: PUSH2 0x06be 00000692: JUMP 00000693: JUMPDEST 00000694: DUP3 00000695: ADD 00000696: SWAP2 00000697: SWAP1 00000698: PUSH1 0x00 0000069a: MSTORE 0000069b: PUSH1 0x20 0000069d: PUSH1 0x00 0000069f: KECCAK256 000006a0: SWAP1 000006a1: JUMPDEST 000006a2: DUP2 000006a3: SLOAD 000006a4: DUP2 000006a5: MSTORE 000006a6: SWAP1 000006a7: PUSH1 0x01 000006a9: ADD 000006aa: SWAP1 000006ab: PUSH1 0x20 000006ad: ADD 000006ae: DUP1 000006af: DUP4 000006b0: GT 000006b1: PUSH2 0x06a1 000006b4: JUMPI 000006b5: DUP3 000006b6: SWAP1 000006b7: SUB 000006b8: PUSH1 0x1f 000006ba: AND 000006bb: DUP3 000006bc: ADD 000006bd: SWAP2 000006be: JUMPDEST 000006bf: POP 000006c0: POP 000006c1: SWAP7 000006c2: POP 000006c3: POP 000006c4: POP 000006c5: POP 000006c6: POP 000006c7: POP 000006c8: POP 000006c9: PUSH1 0x40 000006cb: MLOAD 000006cc: DUP1 000006cd: SWAP2 000006ce: SUB 000006cf: SWAP1 000006d0: RETURN 000006d1: JUMPDEST 000006d2: PUSH2 0x0dce 000006d5: DUP4 000006d6: JUMPDEST 000006d7: PUSH1 0x00 000006d9: DUP1 000006da: DUP1 000006db: JUMPDEST 000006dc: PUSH1 0x03 000006de: SLOAD 000006df: DUP2 000006e0: LT 000006e1: ISZERO 000006e2: PUSH2 0x0c8a 000006e5: JUMPI 000006e6: PUSH1 0x00 000006e8: DUP5 000006e9: DUP2 000006ea: MSTORE 000006eb: PUSH1 0x01 000006ed: PUSH1 0x20 000006ef: MSTORE 000006f0: PUSH1 0x40 000006f2: DUP2 000006f3: KECCAK256 000006f4: PUSH1 0x03 000006f6: DUP1 000006f7: SLOAD 000006f8: SWAP2 000006f9: SWAP3 000006fa: SWAP2 000006fb: DUP5 000006fc: SWAP1 000006fd: DUP2 000006fe: LT 000006ff: ISZERO 00000700: PUSH2 0x0002 00000703: JUMPI 00000704: PUSH1 0x00 00000706: SWAP2 00000707: DUP3 00000708: MSTORE 00000709: PUSH1 0x20 0000070b: DUP1 0000070c: DUP4 0000070d: KECCAK256 0000070e: SWAP1 0000070f: SWAP2 00000710: ADD 00000711: SLOAD 00000712: PUSH1 0x01 00000714: PUSH1 0xa0 00000716: PUSH1 0x02 00000718: EXP 00000719: SUB 0000071a: AND 0000071b: DUP4 0000071c: MSTORE 0000071d: DUP3 0000071e: ADD 0000071f: SWAP3 00000720: SWAP1 00000721: SWAP3 00000722: MSTORE 00000723: PUSH1 0x40 00000725: ADD 00000726: SWAP1 00000727: KECCAK256 00000728: SLOAD 00000729: PUSH1 0xff 0000072b: AND 0000072c: ISZERO 0000072d: PUSH2 0x0738 00000730: JUMPI 00000731: PUSH1 0x01 00000733: SWAP2 00000734: SWAP1 00000735: SWAP2 00000736: ADD 00000737: SWAP1 00000738: JUMPDEST 00000739: PUSH1 0x01 0000073b: ADD 0000073c: PUSH2 0x06db 0000073f: JUMP 00000740: JUMPDEST 00000741: SWAP1 00000742: POP 00000743: PUSH2 0x0920 00000746: DUP2 00000747: JUMPDEST 00000748: CALLER 00000749: PUSH1 0x01 0000074b: PUSH1 0xa0 0000074d: PUSH1 0x02 0000074f: EXP 00000750: SUB 00000751: DUP2 00000752: AND 00000753: PUSH1 0x00 00000755: SWAP1 00000756: DUP2 00000757: MSTORE 00000758: PUSH1 0x02 0000075a: PUSH1 0x20 0000075c: MSTORE 0000075d: PUSH1 0x40 0000075f: SWAP1 00000760: KECCAK256 00000761: SLOAD 00000762: PUSH1 0xff 00000764: AND 00000765: ISZERO 00000766: ISZERO 00000767: PUSH2 0x0d87 0000076a: JUMPI 0000076b: PUSH2 0x0002 0000076e: JUMP 0000076f: JUMPDEST 00000770: PUSH2 0x0968 00000773: DUP3 00000774: JUMPDEST 00000775: PUSH1 0x00 00000777: DUP2 00000778: DUP2 00000779: MSTORE 0000077a: PUSH1 0x20 0000077c: DUP2 0000077d: SWAP1 0000077e: MSTORE 0000077f: PUSH1 0x40 00000781: DUP2 00000782: KECCAK256 00000783: PUSH1 0x04 00000785: ADD 00000786: SLOAD 00000787: DUP3 00000788: SWAP1 00000789: PUSH1 0xff 0000078b: AND 0000078c: ISZERO 0000078d: PUSH2 0x06d1 00000790: JUMPI 00000791: PUSH2 0x0002 00000794: JUMP 00000795: JUMPDEST 00000796: PUSH1 0x40 00000798: MLOAD 00000799: DUP1 0000079a: DUP1 0000079b: PUSH1 0x20 0000079d: ADD 0000079e: DUP3 0000079f: DUP2 000007a0: SUB 000007a1: DUP3 000007a2: MSTORE 000007a3: DUP4 000007a4: DUP2 000007a5: DUP2 000007a6: MLOAD 000007a7: DUP2 000007a8: MSTORE 000007a9: PUSH1 0x20 000007ab: ADD 000007ac: SWAP2 000007ad: POP 000007ae: DUP1 000007af: MLOAD 000007b0: SWAP1 000007b1: PUSH1 0x20 000007b3: ADD 000007b4: SWAP1 000007b5: PUSH1 0x20 000007b7: MUL 000007b8: DUP1 000007b9: DUP4 000007ba: DUP4 000007bb: DUP3 000007bc: SWAP1 000007bd: PUSH1 0x00 000007bf: PUSH1 0x04 000007c1: PUSH1 0x20 000007c3: DUP5 000007c4: PUSH1 0x1f 000007c6: ADD 000007c7: DIV 000007c8: PUSH1 0x03 000007ca: MUL 000007cb: PUSH1 0x0f 000007cd: ADD 000007ce: CALL 000007cf: POP 000007d0: SWAP1 000007d1: POP 000007d2: ADD 000007d3: SWAP3 000007d4: POP 000007d5: POP 000007d6: POP 000007d7: PUSH1 0x40 000007d9: MLOAD 000007da: DUP1 000007db: SWAP2 000007dc: SUB 000007dd: SWAP1 000007de: RETURN 000007df: JUMPDEST 000007e0: SWAP1 000007e1: POP 000007e2: DUP1 000007e3: POP 000007e4: PUSH2 0x0dc1 000007e7: DUP2 000007e8: DUP7 000007e9: DUP7 000007ea: DUP1 000007eb: DUP1 000007ec: PUSH1 0x20 000007ee: MUL 000007ef: PUSH1 0x20 000007f1: ADD 000007f2: PUSH1 0x40 000007f4: MLOAD 000007f5: SWAP1 000007f6: DUP2 000007f7: ADD 000007f8: PUSH1 0x40 000007fa: MSTORE 000007fb: DUP1 000007fc: SWAP4 000007fd: SWAP3 000007fe: SWAP2 000007ff: SWAP1 00000800: DUP2 00000801: DUP2 00000802: MSTORE 00000803: PUSH1 0x20 00000805: ADD 00000806: DUP4 00000807: DUP4 00000808: PUSH1 0x20 0000080a: MUL 0000080b: DUP1 0000080c: DUP3 0000080d: DUP5 0000080e: CALLDATACOPY 0000080f: POP 00000810: POP 00000811: PUSH1 0x40 00000813: DUP1 00000814: MLOAD 00000815: PUSH1 0x20 00000817: DUP12 00000818: DUP2 00000819: MUL 0000081a: DUP3 0000081b: DUP2 0000081c: ADD 0000081d: DUP3 0000081e: ADD 0000081f: SWAP1 00000820: SWAP4 00000821: MSTORE 00000822: DUP12 00000823: DUP3 00000824: MSTORE 00000825: SWAP1 00000826: SWAP6 00000827: POP 00000828: DUP12 00000829: SWAP5 0000082a: POP 0000082b: DUP11 0000082c: SWAP4 0000082d: POP 0000082e: DUP4 0000082f: SWAP3 00000830: POP 00000831: DUP6 00000832: ADD 00000833: SWAP1 00000834: DUP5 00000835: SWAP1 00000836: DUP1 00000837: DUP3 00000838: DUP5 00000839: CALLDATACOPY 0000083a: POP 0000083b: POP 0000083c: POP 0000083d: POP 0000083e: POP 0000083f: POP 00000840: JUMPDEST 00000841: PUSH1 0x00 00000843: DUP4 00000844: DUP4 00000845: DUP4 00000846: DUP4 00000847: JUMPDEST 00000848: DUP3 00000849: MLOAD 0000084a: DUP2 0000084b: LT 0000084c: ISZERO 0000084d: PUSH2 0x0f9c 00000850: JUMPI 00000851: PUSH1 0x02 00000853: PUSH1 0x00 00000855: POP 00000856: PUSH1 0x00 00000858: PUSH1 0x01 0000085a: DUP7 0000085b: DUP7 0000085c: DUP6 0000085d: DUP2 0000085e: MLOAD 0000085f: DUP2 00000860: LT 00000861: ISZERO 00000862: PUSH2 0x0002 00000865: JUMPI 00000866: SWAP1 00000867: PUSH1 0x20 00000869: ADD 0000086a: SWAP1 0000086b: PUSH1 0x20 0000086d: MUL 0000086e: ADD 0000086f: MLOAD 00000870: DUP7 00000871: DUP7 00000872: DUP2 00000873: MLOAD 00000874: DUP2 00000875: LT 00000876: ISZERO 00000877: PUSH2 0x0002 0000087a: JUMPI 0000087b: SWAP1 0000087c: PUSH1 0x20 0000087e: ADD 0000087f: SWAP1 00000880: PUSH1 0x20 00000882: MUL 00000883: ADD 00000884: MLOAD 00000885: DUP8 00000886: DUP8 00000887: DUP11 00000888: MLOAD 00000889: ADD 0000088a: DUP2 0000088b: MLOAD 0000088c: DUP2 0000088d: LT 0000088e: ISZERO 0000088f: PUSH2 0x0002 00000892: JUMPI 00000893: PUSH1 0x20 00000895: SWAP1 00000896: DUP2 00000897: MUL 00000898: SWAP1 00000899: SWAP2 0000089a: ADD 0000089b: DUP2 0000089c: ADD 0000089d: MLOAD 0000089e: PUSH1 0x40 000008a0: DUP1 000008a1: MLOAD 000008a2: PUSH1 0x00 000008a4: DUP2 000008a5: DUP2 000008a6: MSTORE 000008a7: DUP2 000008a8: DUP6 000008a9: ADD 000008aa: DUP4 000008ab: MSTORE 000008ac: SWAP1 000008ad: DUP3 000008ae: ADD 000008af: DUP2 000008b0: SWAP1 000008b1: MSTORE 000008b2: DUP2 000008b3: MLOAD 000008b4: SWAP7 000008b5: DUP8 000008b6: MSTORE 000008b7: PUSH1 0xff 000008b9: SWAP1 000008ba: SWAP6 000008bb: AND 000008bc: DUP7 000008bd: DUP5 000008be: ADD 000008bf: MSTORE 000008c0: DUP6 000008c1: DUP2 000008c2: ADD 000008c3: SWAP4 000008c4: SWAP1 000008c5: SWAP4 000008c6: MSTORE 000008c7: PUSH1 0x60 000008c9: DUP6 000008ca: ADD 000008cb: MSTORE 000008cc: SWAP1 000008cd: MLOAD 000008ce: PUSH1 0x80 000008d0: DUP1 000008d1: DUP6 000008d2: ADD 000008d3: SWAP5 000008d4: SWAP3 000008d5: SWAP4 000008d6: PUSH1 0x1f 000008d8: NOT 000008d9: DUP4 000008da: ADD 000008db: SWAP4 000008dc: DUP4 000008dd: SWAP1 000008de: SUB 000008df: SWAP1 000008e0: SWAP2 000008e1: ADD 000008e2: SWAP2 000008e3: SWAP1 000008e4: DUP7 000008e5: PUSH2 0x61da 000008e8: GAS 000008e9: SUB 000008ea: CALL 000008eb: ISZERO 000008ec: PUSH2 0x0002 000008ef: JUMPI 000008f0: POP 000008f1: POP 000008f2: PUSH1 0x40 000008f4: DUP1 000008f5: MLOAD 000008f6: PUSH1 0x1f 000008f8: NOT 000008f9: ADD 000008fa: MLOAD 000008fb: PUSH1 0x01 000008fd: PUSH1 0xa0 000008ff: PUSH1 0x02 00000901: EXP 00000902: SUB 00000903: AND 00000904: DUP3 00000905: MSTORE 00000906: PUSH1 0x20 00000908: DUP3 00000909: ADD 0000090a: SWAP3 0000090b: SWAP1 0000090c: SWAP3 0000090d: MSTORE 0000090e: ADD 0000090f: PUSH1 0x00 00000911: KECCAK256 00000912: SLOAD 00000913: PUSH1 0xff 00000915: AND 00000916: ISZERO 00000917: ISZERO 00000918: PUSH2 0x1054 0000091b: JUMPI 0000091c: PUSH2 0x0002 0000091f: JUMP 00000920: JUMPDEST 00000921: SWAP6 00000922: SWAP5 00000923: POP 00000924: POP 00000925: POP 00000926: POP 00000927: POP 00000928: JUMP 00000929: JUMPDEST 0000092a: PUSH1 0x40 0000092c: DUP1 0000092d: MLOAD 0000092e: PUSH1 0x01 00000930: PUSH1 0xa0 00000932: PUSH1 0x02 00000934: EXP 00000935: SUB 00000936: DUP6 00000937: AND 00000938: DUP2 00000939: MSTORE 0000093a: SWAP1 0000093b: MLOAD 0000093c: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 0000095d: SWAP2 0000095e: DUP2 0000095f: SWAP1 00000960: SUB 00000961: PUSH1 0x20 00000963: ADD 00000964: SWAP1 00000965: LOG1 00000966: JUMPDEST 00000967: POP 00000968: JUMPDEST 00000969: POP 0000096a: POP 0000096b: JUMP 0000096c: JUMPDEST 0000096d: PUSH1 0x01 0000096f: PUSH1 0xa0 00000971: PUSH1 0x02 00000973: EXP 00000974: SUB 00000975: DUP3 00000976: AND 00000977: PUSH1 0x00 00000979: SWAP1 0000097a: DUP2 0000097b: MSTORE 0000097c: PUSH1 0x02 0000097e: PUSH1 0x20 00000980: MSTORE 00000981: PUSH1 0x40 00000983: SWAP1 00000984: KECCAK256 00000985: SLOAD 00000986: DUP3 00000987: SWAP1 00000988: PUSH1 0xff 0000098a: AND 0000098b: ISZERO 0000098c: ISZERO 0000098d: PUSH2 0x0995 00000990: JUMPI 00000991: PUSH2 0x0002 00000994: JUMP 00000995: JUMPDEST 00000996: PUSH1 0x01 00000998: PUSH1 0xa0 0000099a: PUSH1 0x02 0000099c: EXP 0000099d: SUB 0000099e: DUP4 0000099f: AND 000009a0: PUSH1 0x00 000009a2: SWAP1 000009a3: DUP2 000009a4: MSTORE 000009a5: PUSH1 0x02 000009a7: PUSH1 0x20 000009a9: MSTORE 000009aa: PUSH1 0x40 000009ac: DUP2 000009ad: KECCAK256 000009ae: DUP1 000009af: SLOAD 000009b0: PUSH1 0xff 000009b2: NOT 000009b3: AND 000009b4: SWAP1 000009b5: SSTORE 000009b6: SWAP2 000009b7: POP 000009b8: JUMPDEST 000009b9: PUSH1 0x03 000009bb: SLOAD 000009bc: PUSH1 0x00 000009be: NOT 000009bf: ADD 000009c0: DUP3 000009c1: LT 000009c2: ISZERO 000009c3: PUSH2 0x0a5a 000009c6: JUMPI 000009c7: DUP3 000009c8: PUSH1 0x01 000009ca: PUSH1 0xa0 000009cc: PUSH1 0x02 000009ce: EXP 000009cf: SUB 000009d0: AND 000009d1: PUSH1 0x03 000009d3: PUSH1 0x00 000009d5: POP 000009d6: DUP4 000009d7: DUP2 000009d8: SLOAD 000009d9: DUP2 000009da: LT 000009db: ISZERO 000009dc: PUSH2 0x0002 000009df: JUMPI 000009e0: PUSH1 0x00 000009e2: SWAP2 000009e3: DUP3 000009e4: MSTORE 000009e5: PUSH1 0x20 000009e7: SWAP1 000009e8: SWAP2 000009e9: KECCAK256 000009ea: ADD 000009eb: SLOAD 000009ec: PUSH1 0x01 000009ee: PUSH1 0xa0 000009f0: PUSH1 0x02 000009f2: EXP 000009f3: SUB 000009f4: AND 000009f5: EQ 000009f6: ISZERO 000009f7: PUSH2 0x0a8a 000009fa: JUMPI 000009fb: PUSH1 0x03 000009fd: DUP1 000009fe: SLOAD 000009ff: PUSH1 0x00 00000a01: NOT 00000a02: DUP2 00000a03: ADD 00000a04: SWAP1 00000a05: DUP2 00000a06: LT 00000a07: ISZERO 00000a08: PUSH2 0x0002 00000a0b: JUMPI 00000a0c: PUSH1 0x00 00000a0e: SWAP2 00000a0f: DUP3 00000a10: MSTORE 00000a11: PUSH1 0x20 00000a13: SWAP1 00000a14: SWAP2 00000a15: KECCAK256 00000a16: ADD 00000a17: SLOAD 00000a18: PUSH1 0x03 00000a1a: DUP1 00000a1b: SLOAD 00000a1c: PUSH1 0x01 00000a1e: PUSH1 0xa0 00000a20: PUSH1 0x02 00000a22: EXP 00000a23: SUB 00000a24: SWAP1 00000a25: SWAP3 00000a26: AND 00000a27: SWAP2 00000a28: DUP5 00000a29: SWAP1 00000a2a: DUP2 00000a2b: LT 00000a2c: ISZERO 00000a2d: PUSH2 0x0002 00000a30: JUMPI 00000a31: PUSH1 0x00 00000a33: SWAP2 00000a34: DUP3 00000a35: MSTORE 00000a36: PUSH1 0x20 00000a38: SWAP1 00000a39: SWAP2 00000a3a: KECCAK256 00000a3b: ADD 00000a3c: DUP1 00000a3d: SLOAD 00000a3e: PUSH1 0x01 00000a40: PUSH1 0xa0 00000a42: PUSH1 0x02 00000a44: EXP 00000a45: SUB 00000a46: NOT 00000a47: AND 00000a48: PUSH1 0x60 00000a4a: PUSH1 0x02 00000a4c: EXP 00000a4d: SWAP3 00000a4e: DUP4 00000a4f: MUL 00000a50: SWAP3 00000a51: SWAP1 00000a52: SWAP3 00000a53: DIV 00000a54: SWAP2 00000a55: SWAP1 00000a56: SWAP2 00000a57: OR 00000a58: SWAP1 00000a59: SSTORE 00000a5a: JUMPDEST 00000a5b: PUSH1 0x03 00000a5d: DUP1 00000a5e: SLOAD 00000a5f: PUSH1 0x00 00000a61: NOT 00000a62: DUP2 00000a63: ADD 00000a64: DUP1 00000a65: DUP4 00000a66: SSTORE 00000a67: SWAP2 00000a68: SWAP1 00000a69: DUP3 00000a6a: SWAP1 00000a6b: DUP1 00000a6c: ISZERO 00000a6d: DUP3 00000a6e: SWAP1 00000a6f: GT 00000a70: PUSH2 0x0a95 00000a73: JUMPI 00000a74: PUSH1 0x00 00000a76: DUP4 00000a77: DUP2 00000a78: MSTORE 00000a79: PUSH1 0x20 00000a7b: SWAP1 00000a7c: KECCAK256 00000a7d: PUSH2 0x0a95 00000a80: SWAP2 00000a81: DUP2 00000a82: ADD 00000a83: SWAP1 00000a84: DUP4 00000a85: ADD 00000a86: PUSH2 0x0c0c 00000a89: JUMP 00000a8a: JUMPDEST 00000a8b: PUSH1 0x01 00000a8d: SWAP1 00000a8e: SWAP2 00000a8f: ADD 00000a90: SWAP1 00000a91: PUSH2 0x09b8 00000a94: JUMP 00000a95: JUMPDEST 00000a96: POP 00000a97: POP 00000a98: PUSH1 0x03 00000a9a: SLOAD 00000a9b: PUSH1 0x05 00000a9d: SLOAD 00000a9e: GT 00000a9f: ISZERO 00000aa0: SWAP2 00000aa1: POP 00000aa2: PUSH2 0x0929 00000aa5: SWAP1 00000aa6: POP 00000aa7: JUMPI 00000aa8: PUSH1 0x03 00000aaa: SLOAD 00000aab: PUSH2 0x0929 00000aae: SWAP1 00000aaf: PUSH2 0x028b 00000ab2: JUMP 00000ab3: JUMPDEST 00000ab4: DUP6 00000ab5: DUP6 00000ab6: DUP6 00000ab7: DUP6 00000ab8: PUSH1 0x40 00000aba: MLOAD 00000abb: DUP1 00000abc: DUP6 00000abd: PUSH1 0x01 00000abf: PUSH1 0xa0 00000ac1: PUSH1 0x02 00000ac3: EXP 00000ac4: SUB 00000ac5: AND 00000ac6: PUSH1 0x60 00000ac8: PUSH1 0x02 00000aca: EXP 00000acb: MUL 00000acc: DUP2 00000acd: MSTORE 00000ace: PUSH1 0x14 00000ad0: ADD 00000ad1: DUP5 00000ad2: DUP2 00000ad3: MSTORE 00000ad4: PUSH1 0x20 00000ad6: ADD 00000ad7: DUP4 00000ad8: DUP1 00000ad9: MLOAD 00000ada: SWAP1 00000adb: PUSH1 0x20 00000add: ADD 00000ade: SWAP1 00000adf: DUP1 00000ae0: DUP4 00000ae1: DUP4 00000ae2: DUP3 00000ae3: SWAP1 00000ae4: PUSH1 0x00 00000ae6: PUSH1 0x04 00000ae8: PUSH1 0x20 00000aea: DUP5 00000aeb: PUSH1 0x1f 00000aed: ADD 00000aee: DIV 00000aef: PUSH1 0x03 00000af1: MUL 00000af2: PUSH1 0x0f 00000af4: ADD 00000af5: CALL 00000af6: POP 00000af7: SWAP1 00000af8: POP 00000af9: ADD 00000afa: DUP3 00000afb: DUP2 00000afc: MSTORE 00000afd: PUSH1 0x20 00000aff: ADD 00000b00: SWAP5 00000b01: POP 00000b02: POP 00000b03: POP 00000b04: POP 00000b05: POP 00000b06: PUSH1 0x40 00000b08: MLOAD 00000b09: DUP1 00000b0a: SWAP2 00000b0b: SUB 00000b0c: SWAP1 00000b0d: KECCAK256 00000b0e: SWAP2 00000b0f: POP 00000b10: DUP2 00000b11: POP 00000b12: PUSH1 0x00 00000b14: PUSH1 0x00 00000b16: POP 00000b17: PUSH1 0x00 00000b19: DUP4 00000b1a: PUSH1 0x00 00000b1c: NOT 00000b1d: AND 00000b1e: DUP2 00000b1f: MSTORE 00000b20: PUSH1 0x20 00000b22: ADD 00000b23: SWAP1 00000b24: DUP2 00000b25: MSTORE 00000b26: PUSH1 0x20 00000b28: ADD 00000b29: PUSH1 0x00 00000b2b: KECCAK256 00000b2c: PUSH1 0x00 00000b2e: POP 00000b2f: PUSH1 0x00 00000b31: ADD 00000b32: PUSH1 0x00 00000b34: SWAP1 00000b35: SLOAD 00000b36: SWAP1 00000b37: PUSH2 0x0100 00000b3a: EXP 00000b3b: SWAP1 00000b3c: DIV 00000b3d: PUSH1 0x01 00000b3f: PUSH1 0xa0 00000b41: PUSH1 0x02 00000b43: EXP 00000b44: SUB 00000b45: AND 00000b46: PUSH1 0x01 00000b48: PUSH1 0xa0 00000b4a: PUSH1 0x02 00000b4c: EXP 00000b4d: SUB 00000b4e: AND 00000b4f: PUSH1 0x00 00000b51: EQ 00000b52: ISZERO 00000b53: PUSH2 0x10c5 00000b56: JUMPI 00000b57: PUSH1 0x40 00000b59: DUP1 00000b5a: MLOAD 00000b5b: PUSH1 0xa0 00000b5d: DUP2 00000b5e: ADD 00000b5f: DUP3 00000b60: MSTORE 00000b61: DUP8 00000b62: DUP2 00000b63: MSTORE 00000b64: PUSH1 0x20 00000b66: DUP1 00000b67: DUP3 00000b68: ADD 00000b69: DUP9 00000b6a: DUP2 00000b6b: MSTORE 00000b6c: DUP3 00000b6d: DUP5 00000b6e: ADD 00000b6f: DUP9 00000b70: DUP2 00000b71: MSTORE 00000b72: PUSH1 0x60 00000b74: DUP5 00000b75: ADD 00000b76: DUP9 00000b77: SWAP1 00000b78: MSTORE 00000b79: PUSH1 0x00 00000b7b: PUSH1 0x80 00000b7d: DUP6 00000b7e: ADD 00000b7f: DUP2 00000b80: SWAP1 00000b81: MSTORE 00000b82: DUP8 00000b83: DUP2 00000b84: MSTORE 00000b85: DUP1 00000b86: DUP5 00000b87: MSTORE 00000b88: SWAP5 00000b89: DUP6 00000b8a: KECCAK256 00000b8b: DUP5 00000b8c: MLOAD 00000b8d: DUP2 00000b8e: SLOAD 00000b8f: PUSH1 0x01 00000b91: PUSH1 0xa0 00000b93: PUSH1 0x02 00000b95: EXP 00000b96: SUB 00000b97: NOT 00000b98: AND 00000b99: PUSH1 0x60 00000b9b: PUSH1 0x02 00000b9d: EXP 00000b9e: SWAP2 00000b9f: DUP3 00000ba0: MUL 00000ba1: SWAP2 00000ba2: SWAP1 00000ba3: SWAP2 00000ba4: DIV 00000ba5: OR 00000ba6: DUP2 00000ba7: SSTORE 00000ba8: SWAP2 00000ba9: MLOAD 00000baa: PUSH1 0x01 00000bac: DUP1 00000bad: DUP5 00000bae: ADD 00000baf: SWAP2 00000bb0: SWAP1 00000bb1: SWAP2 00000bb2: SSTORE 00000bb3: SWAP1 00000bb4: MLOAD 00000bb5: DUP1 00000bb6: MLOAD 00000bb7: PUSH1 0x02 00000bb9: DUP1 00000bba: DUP6 00000bbb: ADD 00000bbc: DUP1 00000bbd: SLOAD 00000bbe: DUP2 00000bbf: DUP11 00000bc0: MSTORE 00000bc1: SWAP9 00000bc2: DUP8 00000bc3: SWAP1 00000bc4: KECCAK256 00000bc5: SWAP8 00000bc6: SWAP9 00000bc7: SWAP6 00000bc8: SWAP8 00000bc9: SWAP1 00000bca: SWAP7 00000bcb: PUSH2 0x0100 00000bce: SWAP6 00000bcf: DUP8 00000bd0: AND 00000bd1: ISZERO 00000bd2: SWAP6 00000bd3: SWAP1 00000bd4: SWAP6 00000bd5: MUL 00000bd6: PUSH1 0x00 00000bd8: NOT 00000bd9: ADD 00000bda: SWAP1 00000bdb: SWAP6 00000bdc: AND 00000bdd: DIV 00000bde: PUSH1 0x1f 00000be0: SWAP1 00000be1: DUP2 00000be2: ADD 00000be3: DUP5 00000be4: SWAP1 00000be5: DIV 00000be6: DUP6 00000be7: ADD 00000be8: SWAP5 00000be9: SWAP2 00000bea: SWAP4 00000beb: SWAP2 00000bec: SWAP3 00000bed: SWAP1 00000bee: SWAP2 00000bef: ADD 00000bf0: SWAP1 00000bf1: DUP4 00000bf2: SWAP1 00000bf3: LT 00000bf4: PUSH2 0x10ce 00000bf7: JUMPI 00000bf8: DUP1 00000bf9: MLOAD 00000bfa: PUSH1 0xff 00000bfc: NOT 00000bfd: AND 00000bfe: DUP4 00000bff: DUP1 00000c00: ADD 00000c01: OR 00000c02: DUP6 00000c03: SSTORE 00000c04: JUMPDEST 00000c05: POP 00000c06: PUSH2 0x10fe 00000c09: SWAP3 00000c0a: SWAP2 00000c0b: POP 00000c0c: JUMPDEST 00000c0d: DUP1 00000c0e: DUP3 00000c0f: GT 00000c10: ISZERO 00000c11: PUSH2 0x0c20 00000c14: JUMPI 00000c15: PUSH1 0x00 00000c17: DUP2 00000c18: SSTORE 00000c19: PUSH1 0x01 00000c1b: ADD 00000c1c: PUSH2 0x0c0c 00000c1f: JUMP 00000c20: JUMPDEST 00000c21: POP 00000c22: SWAP1 00000c23: JUMP 00000c24: JUMPDEST 00000c25: POP 00000c26: SWAP2 00000c27: SWAP1 00000c28: POP 00000c29: JUMP 00000c2a: JUMPDEST 00000c2b: PUSH1 0x03 00000c2d: SLOAD 00000c2e: DUP2 00000c2f: DUP2 00000c30: DUP2 00000c31: GT 00000c32: DUP1 00000c33: PUSH2 0x0c3a 00000c36: JUMPI 00000c37: POP 00000c38: DUP1 00000c39: ISZERO 00000c3a: JUMPDEST 00000c3b: DUP1 00000c3c: PUSH2 0x0c43 00000c3f: JUMPI 00000c40: POP 00000c41: DUP2 00000c42: ISZERO 00000c43: JUMPDEST 00000c44: ISZERO 00000c45: PUSH2 0x0c4d 00000c48: JUMPI 00000c49: PUSH2 0x0002 00000c4c: JUMP 00000c4d: JUMPDEST 00000c4e: PUSH1 0x05 00000c50: DUP4 00000c51: SWAP1 00000c52: SSTORE 00000c53: PUSH1 0x40 00000c55: DUP1 00000c56: MLOAD 00000c57: DUP5 00000c58: DUP2 00000c59: MSTORE 00000c5a: SWAP1 00000c5b: MLOAD 00000c5c: PUSH32 0x0cfd262243fb0dd33ba2604015772142a737b088fb078ec5aa18bea2c58c29a2 00000c7d: SWAP2 00000c7e: DUP2 00000c7f: SWAP1 00000c80: SUB 00000c81: PUSH1 0x20 00000c83: ADD 00000c84: SWAP1 00000c85: LOG1 00000c86: POP 00000c87: POP 00000c88: POP 00000c89: JUMP 00000c8a: JUMPDEST 00000c8b: PUSH1 0x05 00000c8d: SLOAD 00000c8e: DUP3 00000c8f: EQ 00000c90: ISZERO 00000c91: PUSH2 0x0c99 00000c94: JUMPI 00000c95: PUSH1 0x01 00000c97: SWAP3 00000c98: POP 00000c99: JUMPDEST 00000c9a: POP 00000c9b: POP 00000c9c: SWAP2 00000c9d: SWAP1 00000c9e: POP 00000c9f: JUMP 00000ca0: JUMPDEST 00000ca1: PUSH1 0x01 00000ca3: PUSH1 0xa0 00000ca5: PUSH1 0x02 00000ca7: EXP 00000ca8: SUB 00000ca9: DUP2 00000caa: AND 00000cab: PUSH1 0x00 00000cad: SWAP1 00000cae: DUP2 00000caf: MSTORE 00000cb0: PUSH1 0x02 00000cb2: PUSH1 0x20 00000cb4: MSTORE 00000cb5: PUSH1 0x40 00000cb7: SWAP1 00000cb8: KECCAK256 00000cb9: SLOAD 00000cba: DUP2 00000cbb: SWAP1 00000cbc: PUSH1 0xff 00000cbe: AND 00000cbf: ISZERO 00000cc0: PUSH2 0x0cc8 00000cc3: JUMPI 00000cc4: PUSH2 0x0002 00000cc7: JUMP 00000cc8: JUMPDEST 00000cc9: PUSH1 0x01 00000ccb: PUSH1 0xa0 00000ccd: PUSH1 0x02 00000ccf: EXP 00000cd0: SUB 00000cd1: DUP3 00000cd2: AND 00000cd3: PUSH1 0x00 00000cd5: SWAP1 00000cd6: DUP2 00000cd7: MSTORE 00000cd8: PUSH1 0x02 00000cda: PUSH1 0x20 00000cdc: MSTORE 00000cdd: PUSH1 0x40 00000cdf: SWAP1 00000ce0: KECCAK256 00000ce1: DUP1 00000ce2: SLOAD 00000ce3: PUSH1 0xff 00000ce5: NOT 00000ce6: AND 00000ce7: PUSH1 0x01 00000ce9: SWAP1 00000cea: DUP2 00000ceb: OR 00000cec: SWAP1 00000ced: SWAP2 00000cee: SSTORE 00000cef: PUSH1 0x03 00000cf1: DUP1 00000cf2: SLOAD 00000cf3: SWAP2 00000cf4: DUP3 00000cf5: ADD 00000cf6: DUP1 00000cf7: DUP3 00000cf8: SSTORE 00000cf9: SWAP1 00000cfa: SWAP2 00000cfb: SWAP1 00000cfc: DUP3 00000cfd: DUP2 00000cfe: DUP4 00000cff: DUP1 00000d00: ISZERO 00000d01: DUP3 00000d02: SWAP1 00000d03: GT 00000d04: PUSH2 0x0d1e 00000d07: JUMPI 00000d08: PUSH1 0x00 00000d0a: DUP4 00000d0b: DUP2 00000d0c: MSTORE 00000d0d: PUSH1 0x20 00000d0f: SWAP1 00000d10: KECCAK256 00000d11: PUSH2 0x0d1e 00000d14: SWAP2 00000d15: DUP2 00000d16: ADD 00000d17: SWAP1 00000d18: DUP4 00000d19: ADD 00000d1a: PUSH2 0x0c0c 00000d1d: JUMP 00000d1e: JUMPDEST 00000d1f: POP 00000d20: POP 00000d21: POP 00000d22: PUSH1 0x00 00000d24: SWAP3 00000d25: DUP4 00000d26: MSTORE 00000d27: POP 00000d28: PUSH1 0x20 00000d2a: SWAP2 00000d2b: DUP3 00000d2c: SWAP1 00000d2d: KECCAK256 00000d2e: ADD 00000d2f: DUP1 00000d30: SLOAD 00000d31: PUSH1 0x01 00000d33: PUSH1 0xa0 00000d35: PUSH1 0x02 00000d37: EXP 00000d38: SUB 00000d39: NOT 00000d3a: AND 00000d3b: PUSH1 0x60 00000d3d: PUSH1 0x02 00000d3f: EXP 00000d40: DUP6 00000d41: DUP2 00000d42: MUL 00000d43: DIV 00000d44: OR 00000d45: SWAP1 00000d46: SSTORE 00000d47: PUSH1 0x40 00000d49: DUP1 00000d4a: MLOAD 00000d4b: PUSH1 0x01 00000d4d: PUSH1 0xa0 00000d4f: PUSH1 0x02 00000d51: EXP 00000d52: SUB 00000d53: DUP6 00000d54: AND 00000d55: DUP2 00000d56: MSTORE 00000d57: SWAP1 00000d58: MLOAD 00000d59: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 00000d7a: SWAP3 00000d7b: SWAP2 00000d7c: DUP2 00000d7d: SWAP1 00000d7e: SUB 00000d7f: SWAP1 00000d80: SWAP2 00000d81: ADD 00000d82: SWAP1 00000d83: LOG1 00000d84: POP 00000d85: POP 00000d86: JUMP 00000d87: JUMPDEST 00000d88: PUSH2 0x076f 00000d8b: DUP3 00000d8c: CALLER 00000d8d: JUMPDEST 00000d8e: PUSH1 0x00 00000d90: DUP3 00000d91: DUP2 00000d92: MSTORE 00000d93: PUSH1 0x01 00000d95: PUSH1 0x20 00000d97: SWAP1 00000d98: DUP2 00000d99: MSTORE 00000d9a: PUSH1 0x40 00000d9c: DUP1 00000d9d: DUP4 00000d9e: KECCAK256 00000d9f: PUSH1 0x01 00000da1: PUSH1 0xa0 00000da3: PUSH1 0x02 00000da5: EXP 00000da6: SUB 00000da7: DUP6 00000da8: AND 00000da9: DUP5 00000daa: MSTORE 00000dab: SWAP1 00000dac: SWAP2 00000dad: MSTORE 00000dae: SWAP1 00000daf: KECCAK256 00000db0: SLOAD 00000db1: DUP3 00000db2: SWAP1 00000db3: DUP3 00000db4: SWAP1 00000db5: PUSH1 0xff 00000db7: AND 00000db8: ISZERO 00000db9: PUSH2 0x1159 00000dbc: JUMPI 00000dbd: PUSH2 0x0002 00000dc0: JUMP 00000dc1: JUMPDEST 00000dc2: SWAP10 00000dc3: SWAP9 00000dc4: POP 00000dc5: POP 00000dc6: POP 00000dc7: POP 00000dc8: POP 00000dc9: POP 00000dca: POP 00000dcb: POP 00000dcc: POP 00000dcd: JUMP 00000dce: JUMPDEST 00000dcf: ISZERO 00000dd0: PUSH2 0x0966 00000dd3: JUMPI 00000dd4: PUSH1 0x00 00000dd6: DUP4 00000dd7: DUP2 00000dd8: MSTORE 00000dd9: PUSH1 0x20 00000ddb: DUP2 00000ddc: SWAP1 00000ddd: MSTORE 00000dde: PUSH1 0x40 00000de0: SWAP1 00000de1: DUP2 00000de2: SWAP1 00000de3: KECCAK256 00000de4: PUSH1 0x04 00000de6: DUP2 00000de7: ADD 00000de8: DUP1 00000de9: SLOAD 00000dea: PUSH1 0xff 00000dec: NOT 00000ded: AND 00000dee: PUSH1 0x01 00000df0: SWAP1 00000df1: DUP2 00000df2: OR 00000df3: SWAP1 00000df4: SWAP2 00000df5: SSTORE 00000df6: DUP2 00000df7: SLOAD 00000df8: DUP2 00000df9: DUP4 00000dfa: ADD 00000dfb: SLOAD 00000dfc: SWAP4 00000dfd: MLOAD 00000dfe: PUSH1 0x02 00000e00: DUP1 00000e01: DUP6 00000e02: ADD 00000e03: DUP1 00000e04: SLOAD 00000e05: SWAP6 00000e06: SWAP9 00000e07: POP 00000e08: PUSH1 0x01 00000e0a: PUSH1 0xa0 00000e0c: PUSH1 0x02 00000e0e: EXP 00000e0f: SUB 00000e10: SWAP1 00000e11: SWAP4 00000e12: AND 00000e13: SWAP6 00000e14: SWAP5 00000e15: SWAP3 00000e16: SWAP4 00000e17: SWAP2 00000e18: SWAP3 00000e19: DUP4 00000e1a: SWAP3 00000e1b: DUP6 00000e1c: SWAP3 00000e1d: SWAP1 00000e1e: DUP3 00000e1f: AND 00000e20: ISZERO 00000e21: PUSH2 0x0100 00000e24: MUL 00000e25: PUSH1 0x00 00000e27: NOT 00000e28: ADD 00000e29: SWAP1 00000e2a: SWAP2 00000e2b: AND 00000e2c: DIV 00000e2d: DUP1 00000e2e: ISZERO 00000e2f: PUSH2 0x0e79 00000e32: JUMPI 00000e33: DUP1 00000e34: PUSH1 0x1f 00000e36: LT 00000e37: PUSH2 0x0e4e 00000e3a: JUMPI 00000e3b: PUSH2 0x0100 00000e3e: DUP1 00000e3f: DUP4 00000e40: SLOAD 00000e41: DIV 00000e42: MUL 00000e43: DUP4 00000e44: MSTORE 00000e45: SWAP2 00000e46: PUSH1 0x20 00000e48: ADD 00000e49: SWAP2 00000e4a: PUSH2 0x0e79 00000e4d: JUMP 00000e4e: JUMPDEST 00000e4f: DUP3 00000e50: ADD 00000e51: SWAP2 00000e52: SWAP1 00000e53: PUSH1 0x00 00000e55: MSTORE 00000e56: PUSH1 0x20 00000e58: PUSH1 0x00 00000e5a: KECCAK256 00000e5b: SWAP1 00000e5c: JUMPDEST 00000e5d: DUP2 00000e5e: SLOAD 00000e5f: DUP2 00000e60: MSTORE 00000e61: SWAP1 00000e62: PUSH1 0x01 00000e64: ADD 00000e65: SWAP1 00000e66: PUSH1 0x20 00000e68: ADD 00000e69: DUP1 00000e6a: DUP4 00000e6b: GT 00000e6c: PUSH2 0x0e5c 00000e6f: JUMPI 00000e70: DUP3 00000e71: SWAP1 00000e72: SUB 00000e73: PUSH1 0x1f 00000e75: AND 00000e76: DUP3 00000e77: ADD 00000e78: SWAP2 00000e79: JUMPDEST 00000e7a: POP 00000e7b: POP 00000e7c: SWAP2 00000e7d: POP 00000e7e: POP 00000e7f: PUSH1 0x00 00000e81: PUSH1 0x40 00000e83: MLOAD 00000e84: DUP1 00000e85: DUP4 00000e86: SUB 00000e87: DUP2 00000e88: DUP6 00000e89: DUP8 00000e8a: PUSH2 0x8502 00000e8d: GAS 00000e8e: SUB 00000e8f: CALL 00000e90: SWAP3 00000e91: POP 00000e92: POP 00000e93: POP 00000e94: ISZERO 00000e95: ISZERO 00000e96: PUSH2 0x0e9e 00000e99: JUMPI 00000e9a: PUSH2 0x0002 00000e9d: JUMP 00000e9e: JUMPDEST 00000e9f: PUSH1 0x40 00000ea1: DUP1 00000ea2: MLOAD 00000ea3: DUP5 00000ea4: DUP2 00000ea5: MSTORE 00000ea6: SWAP1 00000ea7: MLOAD 00000ea8: PUSH32 0x7e9e1cb65db4927b1815f498cbaa226a15c277816f7df407573682110522c9b1 00000ec9: SWAP2 00000eca: DUP2 00000ecb: SWAP1 00000ecc: SUB 00000ecd: PUSH1 0x20 00000ecf: ADD 00000ed0: SWAP1 00000ed1: LOG1 00000ed2: POP 00000ed3: POP 00000ed4: POP 00000ed5: JUMP 00000ed6: JUMPDEST 00000ed7: SWAP1 00000ed8: POP 00000ed9: SWAP1 00000eda: JUMP 00000edb: JUMPDEST 00000edc: PUSH1 0x00 00000ede: DUP3 00000edf: DUP2 00000ee0: MSTORE 00000ee1: PUSH1 0x01 00000ee3: PUSH1 0x20 00000ee5: SWAP1 00000ee6: DUP2 00000ee7: MSTORE 00000ee8: PUSH1 0x40 00000eea: DUP1 00000eeb: DUP4 00000eec: KECCAK256 00000eed: CALLER 00000eee: PUSH1 0x01 00000ef0: PUSH1 0xa0 00000ef2: PUSH1 0x02 00000ef4: EXP 00000ef5: SUB 00000ef6: DUP2 00000ef7: AND 00000ef8: DUP6 00000ef9: MSTORE 00000efa: SWAP3 00000efb: MSTORE 00000efc: SWAP1 00000efd: SWAP2 00000efe: KECCAK256 00000eff: SLOAD 00000f00: DUP4 00000f01: SWAP2 00000f02: SWAP1 00000f03: PUSH1 0xff 00000f05: AND 00000f06: ISZERO 00000f07: ISZERO 00000f08: PUSH2 0x0f10 00000f0b: JUMPI 00000f0c: PUSH2 0x0002 00000f0f: JUMP 00000f10: JUMPDEST 00000f11: PUSH1 0x00 00000f13: DUP5 00000f14: DUP2 00000f15: MSTORE 00000f16: PUSH1 0x20 00000f18: DUP2 00000f19: SWAP1 00000f1a: MSTORE 00000f1b: PUSH1 0x40 00000f1d: SWAP1 00000f1e: KECCAK256 00000f1f: PUSH1 0x04 00000f21: ADD 00000f22: SLOAD 00000f23: DUP5 00000f24: SWAP1 00000f25: PUSH1 0xff 00000f27: AND 00000f28: ISZERO 00000f29: PUSH2 0x0f31 00000f2c: JUMPI 00000f2d: PUSH2 0x0002 00000f30: JUMP 00000f31: JUMPDEST 00000f32: PUSH1 0x00 00000f34: DUP6 00000f35: DUP2 00000f36: MSTORE 00000f37: PUSH1 0x01 00000f39: PUSH1 0x20 00000f3b: SWAP1 00000f3c: DUP2 00000f3d: MSTORE 00000f3e: PUSH1 0x40 00000f40: DUP1 00000f41: DUP4 00000f42: KECCAK256 00000f43: PUSH1 0x01 00000f45: PUSH1 0xa0 00000f47: PUSH1 0x02 00000f49: EXP 00000f4a: SUB 00000f4b: CALLER 00000f4c: AND 00000f4d: DUP1 00000f4e: DUP6 00000f4f: MSTORE 00000f50: SWAP1 00000f51: DUP4 00000f52: MSTORE 00000f53: SWAP3 00000f54: DUP2 00000f55: SWAP1 00000f56: KECCAK256 00000f57: DUP1 00000f58: SLOAD 00000f59: PUSH1 0xff 00000f5b: NOT 00000f5c: AND 00000f5d: SWAP1 00000f5e: SSTORE 00000f5f: DUP1 00000f60: MLOAD 00000f61: SWAP3 00000f62: DUP4 00000f63: MSTORE 00000f64: SWAP1 00000f65: DUP3 00000f66: ADD 00000f67: DUP8 00000f68: SWAP1 00000f69: MSTORE 00000f6a: DUP1 00000f6b: MLOAD 00000f6c: PUSH32 0x9aec1a62b961581534d37fd62d35e3648f05a17b1f986eda1d1a9d97b1478406 00000f8d: SWAP3 00000f8e: DUP2 00000f8f: SWAP1 00000f90: SUB 00000f91: SWAP1 00000f92: SWAP2 00000f93: ADD 00000f94: SWAP1 00000f95: LOG1 00000f96: POP 00000f97: POP 00000f98: POP 00000f99: POP 00000f9a: POP 00000f9b: JUMP 00000f9c: JUMPDEST 00000f9d: PUSH1 0x00 00000f9f: SWAP5 00000fa0: POP 00000fa1: JUMPDEST 00000fa2: DUP7 00000fa3: MLOAD 00000fa4: DUP6 00000fa5: LT 00000fa6: ISZERO 00000fa7: PUSH2 0x105c 00000faa: JUMPI 00000fab: PUSH2 0x1065 00000fae: DUP9 00000faf: PUSH1 0x01 00000fb1: DUP11 00000fb2: DUP11 00000fb3: DUP10 00000fb4: DUP2 00000fb5: MLOAD 00000fb6: DUP2 00000fb7: LT 00000fb8: ISZERO 00000fb9: PUSH2 0x0002 00000fbc: JUMPI 00000fbd: SWAP1 00000fbe: PUSH1 0x20 00000fc0: ADD 00000fc1: SWAP1 00000fc2: PUSH1 0x20 00000fc4: MUL 00000fc5: ADD 00000fc6: MLOAD 00000fc7: DUP11 00000fc8: DUP11 00000fc9: DUP2 00000fca: MLOAD 00000fcb: DUP2 00000fcc: LT 00000fcd: ISZERO 00000fce: PUSH2 0x0002 00000fd1: JUMPI 00000fd2: SWAP1 00000fd3: PUSH1 0x20 00000fd5: ADD 00000fd6: SWAP1 00000fd7: PUSH1 0x20 00000fd9: MUL 00000fda: ADD 00000fdb: MLOAD 00000fdc: DUP12 00000fdd: DUP14 00000fde: MLOAD 00000fdf: DUP13 00000fe0: ADD 00000fe1: DUP2 00000fe2: MLOAD 00000fe3: DUP2 00000fe4: LT 00000fe5: ISZERO 00000fe6: PUSH2 0x0002 00000fe9: JUMPI 00000fea: PUSH1 0x20 00000fec: SWAP1 00000fed: DUP2 00000fee: MUL 00000fef: SWAP1 00000ff0: SWAP2 00000ff1: ADD 00000ff2: DUP2 00000ff3: ADD 00000ff4: MLOAD 00000ff5: PUSH1 0x40 00000ff7: DUP1 00000ff8: MLOAD 00000ff9: PUSH1 0x00 00000ffb: DUP2 00000ffc: DUP2 00000ffd: MSTORE 00000ffe: DUP2 00000fff: DUP6 00001000: ADD 00001001: DUP4 00001002: MSTORE 00001003: SWAP1 00001004: DUP3 00001005: ADD 00001006: DUP2 00001007: SWAP1 00001008: MSTORE 00001009: DUP2 0000100a: MLOAD 0000100b: SWAP7 0000100c: DUP8 0000100d: MSTORE 0000100e: PUSH1 0xff 00001010: SWAP1 00001011: SWAP6 00001012: AND 00001013: DUP7 00001014: DUP5 00001015: ADD 00001016: MSTORE 00001017: DUP6 00001018: DUP2 00001019: ADD 0000101a: SWAP4 0000101b: SWAP1 0000101c: SWAP4 0000101d: MSTORE 0000101e: PUSH1 0x60 00001020: DUP6 00001021: ADD 00001022: MSTORE 00001023: SWAP1 00001024: MLOAD 00001025: PUSH1 0x80 00001027: DUP1 00001028: DUP6 00001029: ADD 0000102a: SWAP5 0000102b: SWAP3 0000102c: SWAP4 0000102d: PUSH1 0x1f 0000102f: NOT 00001030: DUP4 00001031: ADD 00001032: SWAP4 00001033: DUP4 00001034: SWAP1 00001035: SUB 00001036: SWAP1 00001037: SWAP2 00001038: ADD 00001039: SWAP2 0000103a: SWAP1 0000103b: DUP7 0000103c: PUSH2 0x61da 0000103f: GAS 00001040: SUB 00001041: CALL 00001042: ISZERO 00001043: PUSH2 0x0002 00001046: JUMPI 00001047: POP 00001048: POP 00001049: PUSH1 0x20 0000104b: PUSH1 0x40 0000104d: MLOAD 0000104e: SUB 0000104f: MLOAD 00001050: PUSH2 0x0d8d 00001053: JUMP 00001054: JUMPDEST 00001055: PUSH1 0x01 00001057: ADD 00001058: PUSH2 0x0847 0000105b: JUMP 0000105c: JUMPDEST 0000105d: PUSH2 0x1070 00001060: DUP9 00001061: PUSH2 0x0774 00001064: JUMP 00001065: JUMPDEST 00001066: PUSH1 0x01 00001068: SWAP1 00001069: SWAP5 0000106a: ADD 0000106b: SWAP4 0000106c: PUSH2 0x0fa1 0000106f: JUMP 00001070: JUMPDEST 00001071: POP 00001072: POP 00001073: POP 00001074: POP 00001075: POP 00001076: POP 00001077: POP 00001078: POP 00001079: JUMP 0000107a: JUMPDEST 0000107b: POP 0000107c: POP 0000107d: POP 0000107e: SWAP2 0000107f: SWAP1 00001080: SWAP1 00001081: PUSH1 0x00 00001083: MSTORE 00001084: PUSH1 0x20 00001086: PUSH1 0x00 00001088: KECCAK256 00001089: SWAP1 0000108a: ADD 0000108b: PUSH1 0x00 0000108d: POP 0000108e: DUP4 0000108f: SWAP1 00001090: SSTORE 00001091: POP 00001092: PUSH1 0x40 00001094: DUP1 00001095: MLOAD 00001096: DUP4 00001097: DUP2 00001098: MSTORE 00001099: SWAP1 0000109a: MLOAD 0000109b: PUSH32 0x1b15da2a2b1f440c8fb970f04466e7ccd3a8215634645d232bbc23c75785b5bb 000010bc: SWAP2 000010bd: DUP2 000010be: SWAP1 000010bf: SUB 000010c0: PUSH1 0x20 000010c2: ADD 000010c3: SWAP1 000010c4: LOG1 000010c5: JUMPDEST 000010c6: POP 000010c7: SWAP5 000010c8: SWAP4 000010c9: POP 000010ca: POP 000010cb: POP 000010cc: POP 000010cd: JUMP 000010ce: JUMPDEST 000010cf: DUP3 000010d0: DUP1 000010d1: ADD 000010d2: PUSH1 0x01 000010d4: ADD 000010d5: DUP6 000010d6: SSTORE 000010d7: DUP3 000010d8: ISZERO 000010d9: PUSH2 0x0c04 000010dc: JUMPI 000010dd: SWAP2 000010de: DUP3 000010df: ADD 000010e0: JUMPDEST 000010e1: DUP3 000010e2: DUP2 000010e3: GT 000010e4: ISZERO 000010e5: PUSH2 0x0c04 000010e8: JUMPI 000010e9: DUP3 000010ea: MLOAD 000010eb: DUP3 000010ec: PUSH1 0x00 000010ee: POP 000010ef: SSTORE 000010f0: SWAP2 000010f1: PUSH1 0x20 000010f3: ADD 000010f4: SWAP2 000010f5: SWAP1 000010f6: PUSH1 0x01 000010f8: ADD 000010f9: SWAP1 000010fa: PUSH2 0x10e0 000010fd: JUMP 000010fe: JUMPDEST 000010ff: POP 00001100: POP 00001101: PUSH1 0x60 00001103: DUP3 00001104: ADD 00001105: MLOAD 00001106: PUSH1 0x03 00001108: DUP3 00001109: ADD 0000110a: SSTORE 0000110b: PUSH1 0x80 0000110d: SWAP1 0000110e: SWAP2 0000110f: ADD 00001110: MLOAD 00001111: PUSH1 0x04 00001113: SWAP2 00001114: DUP3 00001115: ADD 00001116: DUP1 00001117: SLOAD 00001118: PUSH1 0xff 0000111a: NOT 0000111b: AND 0000111c: PUSH1 0xf8 0000111e: PUSH1 0x02 00001120: EXP 00001121: SWAP3 00001122: DUP4 00001123: MUL 00001124: SWAP3 00001125: SWAP1 00001126: SWAP3 00001127: DIV 00001128: SWAP2 00001129: SWAP1 0000112a: SWAP2 0000112b: OR 0000112c: SWAP1 0000112d: SSTORE 0000112e: DUP1 0000112f: SLOAD 00001130: PUSH1 0x01 00001132: DUP2 00001133: ADD 00001134: DUP1 00001135: DUP4 00001136: SSTORE 00001137: DUP3 00001138: DUP2 00001139: DUP4 0000113a: DUP1 0000113b: ISZERO 0000113c: DUP3 0000113d: SWAP1 0000113e: GT 0000113f: PUSH2 0x107a 00001142: JUMPI 00001143: PUSH1 0x00 00001145: DUP4 00001146: DUP2 00001147: MSTORE 00001148: PUSH1 0x20 0000114a: SWAP1 0000114b: KECCAK256 0000114c: PUSH2 0x107a 0000114f: SWAP2 00001150: DUP2 00001151: ADD 00001152: SWAP1 00001153: DUP4 00001154: ADD 00001155: PUSH2 0x0c0c 00001158: JUMP 00001159: JUMPDEST 0000115a: PUSH1 0x00 0000115c: DUP5 0000115d: DUP2 0000115e: MSTORE 0000115f: PUSH1 0x01 00001161: PUSH1 0x20 00001163: DUP2 00001164: DUP2 00001165: MSTORE 00001166: PUSH1 0x40 00001168: DUP1 00001169: DUP5 0000116a: KECCAK256 0000116b: PUSH1 0x01 0000116d: PUSH1 0xa0 0000116f: PUSH1 0x02 00001171: EXP 00001172: SUB 00001173: DUP9 00001174: AND 00001175: DUP1 00001176: DUP7 00001177: MSTORE 00001178: SWAP1 00001179: DUP4 0000117a: MSTORE 0000117b: SWAP4 0000117c: DUP2 0000117d: SWAP1 0000117e: KECCAK256 0000117f: DUP1 00001180: SLOAD 00001181: PUSH1 0xff 00001183: NOT 00001184: AND 00001185: SWAP1 00001186: SWAP4 00001187: OR 00001188: SWAP1 00001189: SWAP3 0000118a: SSTORE 0000118b: DUP2 0000118c: MLOAD 0000118d: SWAP3 0000118e: DUP4 0000118f: MSTORE 00001190: DUP3 00001191: ADD 00001192: DUP7 00001193: SWAP1 00001194: MSTORE 00001195: DUP1 00001196: MLOAD 00001197: PUSH32 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda 000011b8: SWAP3 000011b9: DUP2 000011ba: SWAP1 000011bb: SUB 000011bc: SWAP1 000011bd: SWAP2 000011be: ADD 000011bf: SWAP1 000011c0: LOG1 000011c1: POP 000011c2: POP 000011c3: POP 000011c4: POP 000011c5: JUMP 000011c6: JUMPDEST 000011c7: DUP2 000011c8: PUSH1 0x40 000011ca: MLOAD 000011cb: DUP1 000011cc: MSIZE 000011cd: LT 000011ce: PUSH2 0x11d4 000011d1: JUMPI 000011d2: POP 000011d3: MSIZE 000011d4: JUMPDEST 000011d5: SWAP1 000011d6: DUP1 000011d7: DUP3 000011d8: MSTORE 000011d9: DUP1 000011da: PUSH1 0x20 000011dc: MUL 000011dd: PUSH1 0x20 000011df: ADD 000011e0: DUP3 000011e1: ADD 000011e2: PUSH1 0x40 000011e4: MSTORE 000011e5: DUP1 000011e6: ISZERO 000011e7: PUSH2 0x11eb 000011ea: JUMPI 000011eb: JUMPDEST 000011ec: POP 000011ed: SWAP4 000011ee: POP 000011ef: PUSH1 0x00 000011f1: SWAP1 000011f2: POP 000011f3: JUMPDEST 000011f4: DUP2 000011f5: DUP2 000011f6: LT 000011f7: ISZERO 000011f8: PUSH2 0x124e 000011fb: JUMPI 000011fc: PUSH1 0x00 000011fe: PUSH1 0x01 00001200: MUL 00001201: DUP4 00001202: DUP3 00001203: DUP2 00001204: MLOAD 00001205: DUP2 00001206: LT 00001207: ISZERO 00001208: PUSH2 0x0002 0000120b: JUMPI 0000120c: PUSH1 0x20 0000120e: SWAP1 0000120f: DUP2 00001210: MUL 00001211: SWAP1 00001212: SWAP2 00001213: ADD 00001214: ADD 00001215: MLOAD 00001216: GT 00001217: ISZERO 00001218: PUSH2 0x1246 0000121b: JUMPI 0000121c: DUP3 0000121d: DUP2 0000121e: DUP2 0000121f: MLOAD 00001220: DUP2 00001221: LT 00001222: ISZERO 00001223: PUSH2 0x0002 00001226: JUMPI 00001227: SWAP1 00001228: PUSH1 0x20 0000122a: ADD 0000122b: SWAP1 0000122c: PUSH1 0x20 0000122e: MUL 0000122f: ADD 00001230: MLOAD 00001231: DUP5 00001232: DUP3 00001233: DUP2 00001234: MLOAD 00001235: DUP2 00001236: LT 00001237: ISZERO 00001238: PUSH2 0x0002 0000123b: JUMPI 0000123c: PUSH1 0x20 0000123e: SWAP1 0000123f: DUP2 00001240: MUL 00001241: SWAP1 00001242: SWAP2 00001243: ADD 00001244: ADD 00001245: MSTORE 00001246: JUMPDEST 00001247: PUSH1 0x01 00001249: ADD 0000124a: PUSH2 0x11f3 0000124d: JUMP 0000124e: JUMPDEST 0000124f: POP 00001250: POP 00001251: POP 00001252: SWAP2 00001253: SWAP1 00001254: POP 00001255: JUMP
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | codex | Replayable owner signatures due to missing domain separation in transaction hash | 85 | no | — |
viewevidence_json{
"evidence": "Transaction hash omits contract/chain domain: `transactionHash = sha3(destination, value, data, nonce)`; signatures are checked directly against this raw hash via `ecrecover`.",
"locations": [
"contracts/Contract.sol:130",
"contracts/Contract.sol:38",
"contracts/Contract.sol:40",
"contracts/Contract.sol:176"
],
"recommendation": "Bind signatures to this wallet and chain by hashing in address(this), chainId, and a wallet-specific nonce; prefer EIP-712 or EIP-191 prefixing.",
"exploit_scenario": "1) Attacker crafts a drain transaction (destination=attacker, value=wallet ETH balance or calldata to transfer tokens/NFTs, nonce arbitrary) and convinces the owners to sign this raw hash in another context (e.g., a testnet/other-chain multisig or off-chain approval). 2) Because the hash is just keccak256(destination,value,data,nonce) with no wallet address/chainId/prefix, those signatures are valid for this wallet. 3) Attacker calls submitTransactionWithSignatures/confirmTransactionWithSignatures with the signatures to execute the transfer. Profit: up to the wallet\u2019s full ETH/token/NFT holdings."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x698bca451214f991d822e6045699379d8ad675f02c81e1a31f11c32a7e9785eb
call_targets:
0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x698bca451214f991d822e6045699379d8ad675f02c81e1a31f11c32a7e9785eb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9"
],
"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": "0x0c4ecab4",
"selector": "0x0c4ecab4",
"calldata_variants": [
"0x0c4ecab4",
"0x0c4ecab40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0d59b564",
"selector": "0x0d59b564",
"calldata_variants": [
"0x0d59b564",
"0x0d59b5640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f54bf6e",
"selector": "0x2f54bf6e",
"calldata_variants": [
"0x2f54bf6e",
"0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x59bf77df",
"selector": "0x59bf77df",
"calldata_variants": [
"0x59bf77df",
"0x59bf77df0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x607fa5a4",
"selector": "0x607fa5a4",
"calldata_variants": [
"0x607fa5a4",
"0x607fa5a40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x642f2eaf",
"selector": "0x642f2eaf",
"calldata_variants": [
"0x642f2eaf",
"0x642f2eaf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6486aa51",
"selector": "0x6486aa51",
"calldata_variants": [
"0x6486aa51",
"0x6486aa510000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1998,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2282,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2805,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [],
"untrusted_call_count": 5
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x698bca451214f991d822e6045699379d8ad675f02c81e1a31f11c32a7e9785eb
call_targets:
0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x698bca451214f991d822e6045699379d8ad675f02c81e1a31f11c32a7e9785eb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9"
],
"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": "0x0c4ecab4",
"selector": "0x0c4ecab4",
"calldata_variants": [
"0x0c4ecab4",
"0x0c4ecab40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0d59b564",
"selector": "0x0d59b564",
"calldata_variants": [
"0x0d59b564",
"0x0d59b5640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f54bf6e",
"selector": "0x2f54bf6e",
"calldata_variants": [
"0x2f54bf6e",
"0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x59bf77df",
"selector": "0x59bf77df",
"calldata_variants": [
"0x59bf77df",
"0x59bf77df0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x607fa5a4",
"selector": "0x607fa5a4",
"calldata_variants": [
"0x607fa5a4",
"0x607fa5a40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x642f2eaf",
"selector": "0x642f2eaf",
"calldata_variants": [
"0x642f2eaf",
"0x642f2eaf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6486aa51",
"selector": "0x6486aa51",
"calldata_variants": [
"0x6486aa51",
"0x6486aa510000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1998,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2282,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2805,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": []
}
|