TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

2777b685-b8a7-47d0-87a2-7c35425b4f1b

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 1, 2026 5:56 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Replayable owner signatures due to missing domain separation in transaction hash
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
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

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Found 1 exploitable signature-replay path allowing full wallet drain if owners sign the same hash in another context.
View stderr
[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"]}]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
0
Total opcodes
3466
Flags
No heuristic flags raised.
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth codex Replayable owner signatures due to missing domain separation in transaction hash 85 no
view
evidence_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
view
trace_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
view
trace_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": []
}