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

Analysis Run

32a97564-7bf6-471b-b139-f8c4b61428d3

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 10:16 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
Authorization based on tx.origin
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
30591 report.consolidate complete 1 / 1 3 months ago
104405 artifact.fetch complete 1 / 3 1 week ago
104406 tool.cast_disasm complete 1 / 3 1 week ago
104407 analysis.bundle complete 1 / 3 1 week ago
104408 capability.graph complete 1 / 3 1 week ago
104409 detector.run complete 1 / 3 1 week ago
104410 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
2
No findings?
no
Summary
Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.
View stderr
[codex:1058158] OpenAI Codex v0.77.0 (research preview)
[codex:1058158] --------
[codex:1058158] workdir: /tmp/codex-multi-45ghe9u9
[codex:1058158] model: gpt-5.2-codex
[codex:1058158] provider: openai
[codex:1058158] approval: never
[codex:1058158] sandbox: read-only
[codex:1058158] reasoning effort: xhigh
[codex:1058158] reasoning summaries: auto
[codex:1058158] session id: 019b6c2c-0fe6-7031-88be-84a8d41d1aa3
[codex:1058158] --------
[codex:1058158] user
[codex:1058158] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1058158] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1058158] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1058158] 
[codex:1058158] Scope rules:
[codex:1058158] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1058158] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1058158] 
[codex:1058158] Output MUST be valid JSON matching the provided schema.
[codex:1058158] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1058158] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1058158] 
[codex:1058158] Output constraints (IMPORTANT):
[codex:1058158] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1058158] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1058158] mcp startup: no servers
[codex:1058158] 
[codex:1058158] thinking
[codex:1058158] **Reading skill instructions**
[codex:1058158] exec
[codex:1058158] /bin/bash -lc ls in /tmp/codex-multi-45ghe9u9 succeeded in 6ms:
[codex:1058158] AUDIT_BUNDLE.txt
[codex:1058158] codex-output-schema.json
[codex:1058158] contracts
[codex:1058158] exec
[codex:1058158] /bin/bash -lc 'rg --files' in /tmp/codex-multi-45ghe9u9 succeeded in 9ms:
[codex:1058158] AUDIT_BUNDLE.txt
[codex:1058158] codex-output-schema.json
[codex:1058158] contracts/Contract.sol
[codex:1058158] 
[codex:1058158] thinking
[codex:1058158] **Reading AUDIT_BUNDLE**
[codex:1058158] exec
[codex:1058158] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-45ghe9u9 succeeded in 6ms:
[codex:1058158] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1058158] 
[codex:1058158] ================================================================================
[codex:1058158] FILE: contracts/Contract.sol
[codex:1058158] ================================================================================
[codex:1058158] // SPDX-License-Identifier: MIT
[codex:1058158] // File: @openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1058158] 
[codex:1058158] pragma solidity ^0.7.0;
[codex:1058158] 
[codex:1058158] interface IERC20Legacy {
[codex:1058158]     // For Tether
[codex:1058158]     function transfer(address recipient, uint256 amount) external;
[codex:1058158] }
[codex:1058158] 
[codex:1058158] /**
[codex:1058158]  * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:1058158]  */
[codex:1058158] interface IERC20 {
[codex:1058158]     /**
[codex:1058158] 
[codex:1058158] 
[codex:1058158] 
[codex:1058158] thinking
[codex:1058158] **Analyzing contract TimelockSecurityWalletV1 for vulnerabilities**
[codex:1058158] 
[codex:1058158] I'm auditing TimelockSecurityWalletV1, focusing on critical areas like timelock logic, quorum checks, and token transfers. There are some risky design choices—especially lack of parameter binding in quorum withdrawals allowing majority signers to retract arbitrary amounts—and unchecked token transfer returns. Reentrancy seems mitigated by setting state before external calls, but potential edge cases exist if authorized users overlap with contracts. The timelock and quorum timing checks have subtle behavioral quirks worth noting, including using minTimelock for expiry and possibility of resetting action timers by the primary user. Overall, there are interesting design and security trade-offs here I'm carefully considering.
[codex:1058158] thinking
[codex:1058158] **Detailing authorization and parameter-binding flaws**
[codex:1058158] 
[codex:1058158] I'm focusing on how signers implicitly approve actions without binding parameters, letting the final signer dictate withdrawals or timelock changes regardless of earlier consent. There’s also careful consideration of timing logic, signers list management, and unchecked token transfer return values. Reentrancy risks appear low due to state updates before external calls, but token contracts included as authorized users could pose subtle edge cases. The analysis highlights how these design choices create logical and authorization weaknesses in the multisig flows.
[codex:1058158] thinking
[codex:1058158] **Evaluating unchecked ERC20 returns and parameter validation issues**
[codex:1058158] 
[codex:1058158] I'm considering how non-standard tokens without return data cause ABI decode failures unless the legacy flag is used, but importantly, the lack of checking the transfer return value can lead to silent failures and potential stuck funds. Additionally, I note the lack of input validation around timelock parameters may cause denial-of-service scenarios if minTimelock exceeds maxTimelock, and the quorum logic permits withdrawals without binding parameters tightly, reinforcing prior concerns about authorization and invariant breaks. I'll next map these observations to precise code line numbers for the audit report.
[codex:1058158] exec
[codex:1058158] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-45ghe9u9 succeeded in 5ms:
[codex:1058158]      1	// SPDX-License-Identifier: MIT
[codex:1058158]      2	// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1058158]      3	
[codex:1058158]      4	pragma solidity ^0.7.0;
[codex:1058158]      5	
[codex:1058158]      6	interface IERC20Legacy {
[codex:1058158]      7	    // For Tether
[codex:1058158]      8	    function transfer(address recipient, uint256 amount) external;
[codex:1058158]      9	}
[codex:1058158]     10	
[codex:1058158]     11	/**
[codex:1058158]     12	 * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:1058158]     13	 */
[codex:1058158]     14	interface IERC20 {
[codex:1058158]     15	    /**
[codex:1058158]     16	     * @dev Returns the amount of tokens in existence.
[codex:1058158]     17	     */
[codex:1058158]     18	    function totalSupply() external view returns (uint256);
[codex:1058158]     19	    
[codex:1058158]     20	    function decimals() external view returns (uint8);
[codex:1058158] 
[codex:1058158] thinking
[codex:1058158] **Preparing structured JSON report**
[codex:1058158] 
[codex:1058158] I'll create a JSON output summarizing the audit findings with severity, categories, evidence, and precise code locations, ensuring compliance with the schema and proper string escaping.
[codex:1058158] codex
[codex:1058158] {"no_findings":false,"summary":"Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.","findings":[{"severity":"medium","category":"auth","title":"Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values","exploit_scenario":"With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call’s inputs, C’s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values.","recommendation":"Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.","evidence":"Quorum paths explicitly note that “parameters are valid for the last signer” and then execute using the last call’s arguments without checking stored action data.","locations":["contracts/Contract.sol:217","contracts/Contract.sol:241","contracts/Contract.sol:261"]},{"severity":"low","category":"other","title":"ERC20 transfer return values are unchecked","exploit_scenario":"If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not.","recommendation":"Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.","evidence":"Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.","locations":["contracts/Contract.sol:164","contracts/Contract.sol:234"]}]}
[codex:1058158] tokens used
[codex:1058158] 21,750
[codex:1058158] {"no_findings":false,"summary":"Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.","findings":[{"severity":"medium","category":"auth","title":"Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values","exploit_scenario":"With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call’s inputs, C’s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values.","recommendation":"Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.","evidence":"Quorum paths explicitly note that “parameters are valid for the last signer” and then execute using the last call’s arguments without checking stored action data.","locations":["contracts/Contract.sol:217","contracts/Contract.sol:241","contracts/Contract.sol:261"]},{"severity":"low","category":"other","title":"ERC20 transfer return values are unchecked","exploit_scenario":"If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not.","recommendation":"Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.","evidence":"Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.","locations":["contracts/Contract.sol:164","contracts/Contract.sol:234"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T22:16:27.278539+00:00",
        "returncode": 0
    },
    "summary": "Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.",
    "raw_final": {
        "summary": "Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.",
        "findings": [
            {
                "title": "Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values",
                "category": "auth",
                "evidence": "Quorum paths explicitly note that \u201cparameters are valid for the last signer\u201d and then execute using the last call\u2019s arguments without checking stored action data.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:217",
                    "contracts/Contract.sol:241",
                    "contracts/Contract.sol:261"
                ],
                "recommendation": "Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.",
                "exploit_scenario": "With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call\u2019s inputs, C\u2019s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values."
            },
            {
                "title": "ERC20 transfer return values are unchecked",
                "category": "other",
                "evidence": "Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:164",
                    "contracts/Contract.sol:234"
                ],
                "recommendation": "Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.",
                "exploit_scenario": "If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
4
Total opcodes
3877
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00a0
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8bf7e74d
00000019: GT
0000001a: PUSH2 0x0064
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x8bf7e74d
00000024: EQ
00000025: PUSH2 0x01eb
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xbc1fd34b
0000002f: EQ
00000030: PUSH2 0x0246
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd8e7d36a
0000003a: EQ
0000003b: PUSH2 0x0271
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe0d8e525
00000045: EQ
00000046: PUSH2 0x02d6
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe9a5b9f8
00000050: EQ
00000051: PUSH2 0x033d
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf3b1e6f5
0000005b: EQ
0000005c: PUSH2 0x0378
0000005f: JUMPI
00000060: PUSH2 0x00a7
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x03a4d4c8
0000006b: EQ
0000006c: PUSH2 0x00ac
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x0a615b74
00000076: EQ
00000077: PUSH2 0x00c3
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x22653ee6
00000081: EQ
00000082: PUSH2 0x0100
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x25429e7d
0000008c: EQ
0000008d: PUSH2 0x0145
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x491eb2e2
00000097: EQ
00000098: PUSH2 0x0170
0000009b: JUMPI
0000009c: PUSH2 0x00a7
0000009f: JUMP
000000a0: JUMPDEST
000000a1: CALLDATASIZE
000000a2: PUSH2 0x00a7
000000a5: JUMPI
000000a6: STOP
000000a7: JUMPDEST
000000a8: PUSH1 0x00
000000aa: DUP1
000000ab: REVERT
000000ac: JUMPDEST
000000ad: CALLVALUE
000000ae: DUP1
000000af: ISZERO
000000b0: PUSH2 0x00b8
000000b3: JUMPI
000000b4: PUSH1 0x00
000000b6: DUP1
000000b7: REVERT
000000b8: JUMPDEST
000000b9: POP
000000ba: PUSH2 0x00c1
000000bd: PUSH2 0x0408
000000c0: JUMP
000000c1: JUMPDEST
000000c2: STOP
000000c3: JUMPDEST
000000c4: CALLVALUE
000000c5: DUP1
000000c6: ISZERO
000000c7: PUSH2 0x00cf
000000ca: JUMPI
000000cb: PUSH1 0x00
000000cd: DUP1
000000ce: REVERT
000000cf: JUMPDEST
000000d0: POP
000000d1: PUSH2 0x00fe
000000d4: PUSH1 0x04
000000d6: DUP1
000000d7: CALLDATASIZE
000000d8: SUB
000000d9: PUSH1 0x20
000000db: DUP2
000000dc: LT
000000dd: ISZERO
000000de: PUSH2 0x00e6
000000e1: JUMPI
000000e2: PUSH1 0x00
000000e4: DUP1
000000e5: REVERT
000000e6: JUMPDEST
000000e7: DUP2
000000e8: ADD
000000e9: SWAP1
000000ea: DUP1
000000eb: DUP1
000000ec: CALLDATALOAD
000000ed: ISZERO
000000ee: ISZERO
000000ef: SWAP1
000000f0: PUSH1 0x20
000000f2: ADD
000000f3: SWAP1
000000f4: SWAP3
000000f5: SWAP2
000000f6: SWAP1
000000f7: POP
000000f8: POP
000000f9: POP
000000fa: PUSH2 0x04b3
000000fd: JUMP
000000fe: JUMPDEST
000000ff: STOP
00000100: JUMPDEST
00000101: CALLVALUE
00000102: DUP1
00000103: ISZERO
00000104: PUSH2 0x010c
00000107: JUMPI
00000108: PUSH1 0x00
0000010a: DUP1
0000010b: REVERT
0000010c: JUMPDEST
0000010d: POP
0000010e: PUSH2 0x0143
00000111: PUSH1 0x04
00000113: DUP1
00000114: CALLDATASIZE
00000115: SUB
00000116: PUSH1 0x40
00000118: DUP2
00000119: LT
0000011a: ISZERO
0000011b: PUSH2 0x0123
0000011e: JUMPI
0000011f: PUSH1 0x00
00000121: DUP1
00000122: REVERT
00000123: JUMPDEST
00000124: DUP2
00000125: ADD
00000126: SWAP1
00000127: DUP1
00000128: DUP1
00000129: CALLDATALOAD
0000012a: SWAP1
0000012b: PUSH1 0x20
0000012d: ADD
0000012e: SWAP1
0000012f: SWAP3
00000130: SWAP2
00000131: SWAP1
00000132: DUP1
00000133: CALLDATALOAD
00000134: SWAP1
00000135: PUSH1 0x20
00000137: ADD
00000138: SWAP1
00000139: SWAP3
0000013a: SWAP2
0000013b: SWAP1
0000013c: POP
0000013d: POP
0000013e: POP
0000013f: PUSH2 0x06cd
00000142: JUMP
00000143: JUMPDEST
00000144: STOP
00000145: JUMPDEST
00000146: CALLVALUE
00000147: DUP1
00000148: ISZERO
00000149: PUSH2 0x0151
0000014c: JUMPI
0000014d: PUSH1 0x00
0000014f: DUP1
00000150: REVERT
00000151: JUMPDEST
00000152: POP
00000153: PUSH2 0x015a
00000156: PUSH2 0x090b
00000159: JUMP
0000015a: JUMPDEST
0000015b: PUSH1 0x40
0000015d: MLOAD
0000015e: DUP1
0000015f: DUP3
00000160: DUP2
00000161: MSTORE
00000162: PUSH1 0x20
00000164: ADD
00000165: SWAP2
00000166: POP
00000167: POP
00000168: PUSH1 0x40
0000016a: MLOAD
0000016b: DUP1
0000016c: SWAP2
0000016d: SUB
0000016e: SWAP1
0000016f: RETURN
00000170: JUMPDEST
00000171: CALLVALUE
00000172: DUP1
00000173: ISZERO
00000174: PUSH2 0x017c
00000177: JUMPI
00000178: PUSH1 0x00
0000017a: DUP1
0000017b: REVERT
0000017c: JUMPDEST
0000017d: POP
0000017e: PUSH2 0x01e9
00000181: PUSH1 0x04
00000183: DUP1
00000184: CALLDATASIZE
00000185: SUB
00000186: PUSH1 0x60
00000188: DUP2
00000189: LT
0000018a: ISZERO
0000018b: PUSH2 0x0193
0000018e: JUMPI
0000018f: PUSH1 0x00
00000191: DUP1
00000192: REVERT
00000193: JUMPDEST
00000194: DUP2
00000195: ADD
00000196: SWAP1
00000197: DUP1
00000198: DUP1
00000199: CALLDATALOAD
0000019a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001af: AND
000001b0: SWAP1
000001b1: PUSH1 0x20
000001b3: ADD
000001b4: SWAP1
000001b5: SWAP3
000001b6: SWAP2
000001b7: SWAP1
000001b8: DUP1
000001b9: CALLDATALOAD
000001ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001cf: AND
000001d0: SWAP1
000001d1: PUSH1 0x20
000001d3: ADD
000001d4: SWAP1
000001d5: SWAP3
000001d6: SWAP2
000001d7: SWAP1
000001d8: DUP1
000001d9: CALLDATALOAD
000001da: SWAP1
000001db: PUSH1 0x20
000001dd: ADD
000001de: SWAP1
000001df: SWAP3
000001e0: SWAP2
000001e1: SWAP1
000001e2: POP
000001e3: POP
000001e4: POP
000001e5: PUSH2 0x0911
000001e8: JUMP
000001e9: JUMPDEST
000001ea: STOP
000001eb: JUMPDEST
000001ec: CALLVALUE
000001ed: DUP1
000001ee: ISZERO
000001ef: PUSH2 0x01f7
000001f2: JUMPI
000001f3: PUSH1 0x00
000001f5: DUP1
000001f6: REVERT
000001f7: JUMPDEST
000001f8: POP
000001f9: PUSH2 0x0244
000001fc: PUSH1 0x04
000001fe: DUP1
000001ff: CALLDATASIZE
00000200: SUB
00000201: PUSH1 0x40
00000203: DUP2
00000204: LT
00000205: ISZERO
00000206: PUSH2 0x020e
00000209: JUMPI
0000020a: PUSH1 0x00
0000020c: DUP1
0000020d: REVERT
0000020e: JUMPDEST
0000020f: DUP2
00000210: ADD
00000211: SWAP1
00000212: DUP1
00000213: DUP1
00000214: CALLDATALOAD
00000215: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000022a: AND
0000022b: SWAP1
0000022c: PUSH1 0x20
0000022e: ADD
0000022f: SWAP1
00000230: SWAP3
00000231: SWAP2
00000232: SWAP1
00000233: DUP1
00000234: CALLDATALOAD
00000235: SWAP1
00000236: PUSH1 0x20
00000238: ADD
00000239: SWAP1
0000023a: SWAP3
0000023b: SWAP2
0000023c: SWAP1
0000023d: POP
0000023e: POP
0000023f: POP
00000240: PUSH2 0x0bc2
00000243: JUMP
00000244: JUMPDEST
00000245: STOP
00000246: JUMPDEST
00000247: CALLVALUE
00000248: DUP1
00000249: ISZERO
0000024a: PUSH2 0x0252
0000024d: JUMPI
0000024e: PUSH1 0x00
00000250: DUP1
00000251: REVERT
00000252: JUMPDEST
00000253: POP
00000254: PUSH2 0x025b
00000257: PUSH2 0x0e77
0000025a: JUMP
0000025b: JUMPDEST
0000025c: PUSH1 0x40
0000025e: MLOAD
0000025f: DUP1
00000260: DUP3
00000261: DUP2
00000262: MSTORE
00000263: PUSH1 0x20
00000265: ADD
00000266: SWAP2
00000267: POP
00000268: POP
00000269: PUSH1 0x40
0000026b: MLOAD
0000026c: DUP1
0000026d: SWAP2
0000026e: SUB
0000026f: SWAP1
00000270: RETURN
00000271: JUMPDEST
00000272: CALLVALUE
00000273: DUP1
00000274: ISZERO
00000275: PUSH2 0x027d
00000278: JUMPI
00000279: PUSH1 0x00
0000027b: DUP1
0000027c: REVERT
0000027d: JUMPDEST
0000027e: POP
0000027f: PUSH2 0x02aa
00000282: PUSH1 0x04
00000284: DUP1
00000285: CALLDATASIZE
00000286: SUB
00000287: PUSH1 0x20
00000289: DUP2
0000028a: LT
0000028b: ISZERO
0000028c: PUSH2 0x0294
0000028f: JUMPI
00000290: PUSH1 0x00
00000292: DUP1
00000293: REVERT
00000294: JUMPDEST
00000295: DUP2
00000296: ADD
00000297: SWAP1
00000298: DUP1
00000299: DUP1
0000029a: CALLDATALOAD
0000029b: SWAP1
0000029c: PUSH1 0x20
0000029e: ADD
0000029f: SWAP1
000002a0: SWAP3
000002a1: SWAP2
000002a2: SWAP1
000002a3: POP
000002a4: POP
000002a5: POP
000002a6: PUSH2 0x0e7d
000002a9: JUMP
000002aa: JUMPDEST
000002ab: PUSH1 0x40
000002ad: MLOAD
000002ae: DUP1
000002af: DUP3
000002b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002c5: AND
000002c6: DUP2
000002c7: MSTORE
000002c8: PUSH1 0x20
000002ca: ADD
000002cb: SWAP2
000002cc: POP
000002cd: POP
000002ce: PUSH1 0x40
000002d0: MLOAD
000002d1: DUP1
000002d2: SWAP2
000002d3: SUB
000002d4: SWAP1
000002d5: RETURN
000002d6: JUMPDEST
000002d7: CALLVALUE
000002d8: DUP1
000002d9: ISZERO
000002da: PUSH2 0x02e2
000002dd: JUMPI
000002de: PUSH1 0x00
000002e0: DUP1
000002e1: REVERT
000002e2: JUMPDEST
000002e3: POP
000002e4: PUSH2 0x033b
000002e7: PUSH1 0x04
000002e9: DUP1
000002ea: CALLDATASIZE
000002eb: SUB
000002ec: PUSH1 0x60
000002ee: DUP2
000002ef: LT
000002f0: ISZERO
000002f1: PUSH2 0x02f9
000002f4: JUMPI
000002f5: PUSH1 0x00
000002f7: DUP1
000002f8: REVERT
000002f9: JUMPDEST
000002fa: DUP2
000002fb: ADD
000002fc: SWAP1
000002fd: DUP1
000002fe: DUP1
000002ff: CALLDATALOAD
00000300: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000315: AND
00000316: SWAP1
00000317: PUSH1 0x20
00000319: ADD
0000031a: SWAP1
0000031b: SWAP3
0000031c: SWAP2
0000031d: SWAP1
0000031e: DUP1
0000031f: CALLDATALOAD
00000320: SWAP1
00000321: PUSH1 0x20
00000323: ADD
00000324: SWAP1
00000325: SWAP3
00000326: SWAP2
00000327: SWAP1
00000328: DUP1
00000329: CALLDATALOAD
0000032a: ISZERO
0000032b: ISZERO
0000032c: SWAP1
0000032d: PUSH1 0x20
0000032f: ADD
00000330: SWAP1
00000331: SWAP3
00000332: SWAP2
00000333: SWAP1
00000334: POP
00000335: POP
00000336: POP
00000337: PUSH2 0x0eb9
0000033a: JUMP
0000033b: JUMPDEST
0000033c: STOP
0000033d: JUMPDEST
0000033e: CALLVALUE
0000033f: DUP1
00000340: ISZERO
00000341: PUSH2 0x0349
00000344: JUMPI
00000345: PUSH1 0x00
00000347: DUP1
00000348: REVERT
00000349: JUMPDEST
0000034a: POP
0000034b: PUSH2 0x0376
0000034e: PUSH1 0x04
00000350: DUP1
00000351: CALLDATASIZE
00000352: SUB
00000353: PUSH1 0x20
00000355: DUP2
00000356: LT
00000357: ISZERO
00000358: PUSH2 0x0360
0000035b: JUMPI
0000035c: PUSH1 0x00
0000035e: DUP1
0000035f: REVERT
00000360: JUMPDEST
00000361: DUP2
00000362: ADD
00000363: SWAP1
00000364: DUP1
00000365: DUP1
00000366: CALLDATALOAD
00000367: SWAP1
00000368: PUSH1 0x20
0000036a: ADD
0000036b: SWAP1
0000036c: SWAP3
0000036d: SWAP2
0000036e: SWAP1
0000036f: POP
00000370: POP
00000371: POP
00000372: PUSH2 0x1233
00000375: JUMP
00000376: JUMPDEST
00000377: STOP
00000378: JUMPDEST
00000379: CALLVALUE
0000037a: DUP1
0000037b: ISZERO
0000037c: PUSH2 0x0384
0000037f: JUMPI
00000380: PUSH1 0x00
00000382: DUP1
00000383: REVERT
00000384: JUMPDEST
00000385: POP
00000386: PUSH2 0x03b1
00000389: PUSH1 0x04
0000038b: DUP1
0000038c: CALLDATASIZE
0000038d: SUB
0000038e: PUSH1 0x20
00000390: DUP2
00000391: LT
00000392: ISZERO
00000393: PUSH2 0x039b
00000396: JUMPI
00000397: PUSH1 0x00
00000399: DUP1
0000039a: REVERT
0000039b: JUMPDEST
0000039c: DUP2
0000039d: ADD
0000039e: SWAP1
0000039f: DUP1
000003a0: DUP1
000003a1: CALLDATALOAD
000003a2: SWAP1
000003a3: PUSH1 0x20
000003a5: ADD
000003a6: SWAP1
000003a7: SWAP3
000003a8: SWAP2
000003a9: SWAP1
000003aa: POP
000003ab: POP
000003ac: POP
000003ad: PUSH2 0x14a9
000003b0: JUMP
000003b1: JUMPDEST
000003b2: PUSH1 0x40
000003b4: MLOAD
000003b5: DUP1
000003b6: DUP6
000003b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003cc: AND
000003cd: DUP2
000003ce: MSTORE
000003cf: PUSH1 0x20
000003d1: ADD
000003d2: DUP5
000003d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003e8: AND
000003e9: DUP2
000003ea: MSTORE
000003eb: PUSH1 0x20
000003ed: ADD
000003ee: DUP4
000003ef: DUP2
000003f0: MSTORE
000003f1: PUSH1 0x20
000003f3: ADD
000003f4: DUP3
000003f5: DUP2
000003f6: MSTORE
000003f7: PUSH1 0x20
000003f9: ADD
000003fa: SWAP5
000003fb: POP
000003fc: POP
000003fd: POP
000003fe: POP
000003ff: POP
00000400: PUSH1 0x40
00000402: MLOAD
00000403: DUP1
00000404: SWAP2
00000405: SUB
00000406: SWAP1
00000407: RETURN
00000408: JUMPDEST
00000409: PUSH2 0x0410
0000040c: PUSH2 0x1519
0000040f: JUMP
00000410: JUMPDEST
00000411: PUSH1 0x00
00000413: PUSH1 0x01
00000415: SWAP1
00000416: POP
00000417: PUSH2 0x041f
0000041a: DUP2
0000041b: PUSH2 0x1629
0000041e: JUMP
0000041f: JUMPDEST
00000420: PUSH1 0x00
00000422: PUSH1 0x03
00000424: PUSH1 0x00
00000426: DUP4
00000427: DUP2
00000428: MSTORE
00000429: PUSH1 0x20
0000042b: ADD
0000042c: SWAP1
0000042d: DUP2
0000042e: MSTORE
0000042f: PUSH1 0x20
00000431: ADD
00000432: PUSH1 0x00
00000434: KECCAK256
00000435: SWAP1
00000436: POP
00000437: PUSH1 0x00
00000439: DUP2
0000043a: PUSH1 0x04
0000043c: ADD
0000043d: DUP2
0000043e: SWAP1
0000043f: SSTORE
00000440: POP
00000441: DUP1
00000442: PUSH1 0x01
00000444: ADD
00000445: PUSH1 0x00
00000447: SWAP1
00000448: SLOAD
00000449: SWAP1
0000044a: PUSH2 0x0100
0000044d: EXP
0000044e: SWAP1
0000044f: DIV
00000450: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000465: AND
00000466: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000047b: AND
0000047c: PUSH2 0x08fc
0000047f: DUP3
00000480: PUSH1 0x03
00000482: ADD
00000483: SLOAD
00000484: SWAP1
00000485: DUP2
00000486: ISZERO
00000487: MUL
00000488: SWAP1
00000489: PUSH1 0x40
0000048b: MLOAD
0000048c: PUSH1 0x00
0000048e: PUSH1 0x40
00000490: MLOAD
00000491: DUP1
00000492: DUP4
00000493: SUB
00000494: DUP2
00000495: DUP6
00000496: DUP9
00000497: DUP9
00000498: CALL
00000499: SWAP4
0000049a: POP
0000049b: POP
0000049c: POP
0000049d: POP
0000049e: ISZERO
0000049f: DUP1
000004a0: ISZERO
000004a1: PUSH2 0x04ae
000004a4: JUMPI
000004a5: RETURNDATASIZE
000004a6: PUSH1 0x00
000004a8: DUP1
000004a9: RETURNDATACOPY
000004aa: RETURNDATASIZE
000004ab: PUSH1 0x00
000004ad: REVERT
000004ae: JUMPDEST
000004af: POP
000004b0: POP
000004b1: POP
000004b2: JUMP
000004b3: JUMPDEST
000004b4: PUSH1 0x00
000004b6: PUSH2 0x04bd
000004b9: PUSH2 0x1519
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH2 0x04c6
000004c1: DUP2
000004c2: PUSH2 0x1629
000004c5: JUMP
000004c6: JUMPDEST
000004c7: PUSH1 0x00
000004c9: PUSH1 0x03
000004cb: PUSH1 0x00
000004cd: DUP4
000004ce: DUP2
000004cf: MSTORE
000004d0: PUSH1 0x20
000004d2: ADD
000004d3: SWAP1
000004d4: DUP2
000004d5: MSTORE
000004d6: PUSH1 0x20
000004d8: ADD
000004d9: PUSH1 0x00
000004db: KECCAK256
000004dc: SWAP1
000004dd: POP
000004de: PUSH1 0x00
000004e0: DUP2
000004e1: PUSH1 0x04
000004e3: ADD
000004e4: DUP2
000004e5: SWAP1
000004e6: SSTORE
000004e7: POP
000004e8: PUSH1 0x00
000004ea: ISZERO
000004eb: ISZERO
000004ec: DUP4
000004ed: ISZERO
000004ee: ISZERO
000004ef: EQ
000004f0: ISZERO
000004f1: PUSH2 0x05f2
000004f4: JUMPI
000004f5: DUP1
000004f6: PUSH1 0x02
000004f8: ADD
000004f9: PUSH1 0x00
000004fb: SWAP1
000004fc: SLOAD
000004fd: SWAP1
000004fe: PUSH2 0x0100
00000501: EXP
00000502: SWAP1
00000503: DIV
00000504: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000519: AND
0000051a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000052f: AND
00000530: PUSH4 0xa9059cbb
00000535: DUP3
00000536: PUSH1 0x01
00000538: ADD
00000539: PUSH1 0x00
0000053b: SWAP1
0000053c: SLOAD
0000053d: SWAP1
0000053e: PUSH2 0x0100
00000541: EXP
00000542: SWAP1
00000543: DIV
00000544: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000559: AND
0000055a: DUP4
0000055b: PUSH1 0x03
0000055d: ADD
0000055e: SLOAD
0000055f: PUSH1 0x40
00000561: MLOAD
00000562: DUP4
00000563: PUSH4 0xffffffff
00000568: AND
00000569: PUSH1 0xe0
0000056b: SHL
0000056c: DUP2
0000056d: MSTORE
0000056e: PUSH1 0x04
00000570: ADD
00000571: DUP1
00000572: DUP4
00000573: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000588: AND
00000589: DUP2
0000058a: MSTORE
0000058b: PUSH1 0x20
0000058d: ADD
0000058e: DUP3
0000058f: DUP2
00000590: MSTORE
00000591: PUSH1 0x20
00000593: ADD
00000594: SWAP3
00000595: POP
00000596: POP
00000597: POP
00000598: PUSH1 0x20
0000059a: PUSH1 0x40
0000059c: MLOAD
0000059d: DUP1
0000059e: DUP4
0000059f: SUB
000005a0: DUP2
000005a1: PUSH1 0x00
000005a3: DUP8
000005a4: DUP1
000005a5: EXTCODESIZE
000005a6: ISZERO
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05b1
000005ac: JUMPI
000005ad: PUSH1 0x00
000005af: DUP1
000005b0: REVERT
000005b1: JUMPDEST
000005b2: POP
000005b3: GAS
000005b4: CALL
000005b5: ISZERO
000005b6: DUP1
000005b7: ISZERO
000005b8: PUSH2 0x05c5
000005bb: JUMPI
000005bc: RETURNDATASIZE
000005bd: PUSH1 0x00
000005bf: DUP1
000005c0: RETURNDATACOPY
000005c1: RETURNDATASIZE
000005c2: PUSH1 0x00
000005c4: REVERT
000005c5: JUMPDEST
000005c6: POP
000005c7: POP
000005c8: POP
000005c9: POP
000005ca: PUSH1 0x40
000005cc: MLOAD
000005cd: RETURNDATASIZE
000005ce: PUSH1 0x20
000005d0: DUP2
000005d1: LT
000005d2: ISZERO
000005d3: PUSH2 0x05db
000005d6: JUMPI
000005d7: PUSH1 0x00
000005d9: DUP1
000005da: REVERT
000005db: JUMPDEST
000005dc: DUP2
000005dd: ADD
000005de: SWAP1
000005df: DUP1
000005e0: DUP1
000005e1: MLOAD
000005e2: SWAP1
000005e3: PUSH1 0x20
000005e5: ADD
000005e6: SWAP1
000005e7: SWAP3
000005e8: SWAP2
000005e9: SWAP1
000005ea: POP
000005eb: POP
000005ec: POP
000005ed: POP
000005ee: PUSH2 0x06c8
000005f1: JUMP
000005f2: JUMPDEST
000005f3: DUP1
000005f4: PUSH1 0x02
000005f6: ADD
000005f7: PUSH1 0x00
000005f9: SWAP1
000005fa: SLOAD
000005fb: SWAP1
000005fc: PUSH2 0x0100
000005ff: EXP
00000600: SWAP1
00000601: DIV
00000602: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000617: AND
00000618: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000062d: AND
0000062e: PUSH4 0xa9059cbb
00000633: DUP3
00000634: PUSH1 0x01
00000636: ADD
00000637: PUSH1 0x00
00000639: SWAP1
0000063a: SLOAD
0000063b: SWAP1
0000063c: PUSH2 0x0100
0000063f: EXP
00000640: SWAP1
00000641: DIV
00000642: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000657: AND
00000658: DUP4
00000659: PUSH1 0x03
0000065b: ADD
0000065c: SLOAD
0000065d: PUSH1 0x40
0000065f: MLOAD
00000660: DUP4
00000661: PUSH4 0xffffffff
00000666: AND
00000667: PUSH1 0xe0
00000669: SHL
0000066a: DUP2
0000066b: MSTORE
0000066c: PUSH1 0x04
0000066e: ADD
0000066f: DUP1
00000670: DUP4
00000671: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000686: AND
00000687: DUP2
00000688: MSTORE
00000689: PUSH1 0x20
0000068b: ADD
0000068c: DUP3
0000068d: DUP2
0000068e: MSTORE
0000068f: PUSH1 0x20
00000691: ADD
00000692: SWAP3
00000693: POP
00000694: POP
00000695: POP
00000696: PUSH1 0x00
00000698: PUSH1 0x40
0000069a: MLOAD
0000069b: DUP1
0000069c: DUP4
0000069d: SUB
0000069e: DUP2
0000069f: PUSH1 0x00
000006a1: DUP8
000006a2: DUP1
000006a3: EXTCODESIZE
000006a4: ISZERO
000006a5: DUP1
000006a6: ISZERO
000006a7: PUSH2 0x06af
000006aa: JUMPI
000006ab: PUSH1 0x00
000006ad: DUP1
000006ae: REVERT
000006af: JUMPDEST
000006b0: POP
000006b1: GAS
000006b2: CALL
000006b3: ISZERO
000006b4: DUP1
000006b5: ISZERO
000006b6: PUSH2 0x06c3
000006b9: JUMPI
000006ba: RETURNDATASIZE
000006bb: PUSH1 0x00
000006bd: DUP1
000006be: RETURNDATACOPY
000006bf: RETURNDATASIZE
000006c0: PUSH1 0x00
000006c2: REVERT
000006c3: JUMPDEST
000006c4: POP
000006c5: POP
000006c6: POP
000006c7: POP
000006c8: JUMPDEST
000006c9: POP
000006ca: POP
000006cb: POP
000006cc: JUMP
000006cd: JUMPDEST
000006ce: PUSH2 0x06d5
000006d1: PUSH2 0x1519
000006d4: JUMP
000006d5: JUMPDEST
000006d6: PUSH1 0x00
000006d8: PUSH1 0x04
000006da: SWAP1
000006db: POP
000006dc: PUSH1 0x00
000006de: PUSH2 0x06e6
000006e1: DUP3
000006e2: PUSH2 0x1953
000006e5: JUMP
000006e6: JUMPDEST
000006e7: SWAP1
000006e8: POP
000006e9: PUSH1 0x00
000006eb: DUP2
000006ec: EQ
000006ed: ISZERO
000006ee: PUSH2 0x08c4
000006f1: JUMPI
000006f2: PUSH1 0x60
000006f4: PUSH1 0x01
000006f6: PUSH8 0xffffffffffffffff
000006ff: DUP2
00000700: GT
00000701: DUP1
00000702: ISZERO
00000703: PUSH2 0x070b
00000706: JUMPI
00000707: PUSH1 0x00
00000709: DUP1
0000070a: REVERT
0000070b: JUMPDEST
0000070c: POP
0000070d: PUSH1 0x40
0000070f: MLOAD
00000710: SWAP1
00000711: DUP1
00000712: DUP3
00000713: MSTORE
00000714: DUP1
00000715: PUSH1 0x20
00000717: MUL
00000718: PUSH1 0x20
0000071a: ADD
0000071b: DUP3
0000071c: ADD
0000071d: PUSH1 0x40
0000071f: MSTORE
00000720: DUP1
00000721: ISZERO
00000722: PUSH2 0x073a
00000725: JUMPI
00000726: DUP2
00000727: PUSH1 0x20
00000729: ADD
0000072a: PUSH1 0x20
0000072c: DUP3
0000072d: MUL
0000072e: DUP1
0000072f: CALLDATASIZE
00000730: DUP4
00000731: CALLDATACOPY
00000732: DUP1
00000733: DUP3
00000734: ADD
00000735: SWAP2
00000736: POP
00000737: POP
00000738: SWAP1
00000739: POP
0000073a: JUMPDEST
0000073b: POP
0000073c: SWAP1
0000073d: POP
0000073e: CALLER
0000073f: DUP2
00000740: PUSH1 0x00
00000742: DUP2
00000743: MLOAD
00000744: DUP2
00000745: LT
00000746: PUSH2 0x074b
00000749: JUMPI
0000074a: INVALID
0000074b: JUMPDEST
0000074c: PUSH1 0x20
0000074e: MUL
0000074f: PUSH1 0x20
00000751: ADD
00000752: ADD
00000753: SWAP1
00000754: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000769: AND
0000076a: SWAP1
0000076b: DUP2
0000076c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000781: AND
00000782: DUP2
00000783: MSTORE
00000784: POP
00000785: POP
00000786: PUSH2 0x078d
00000789: PUSH2 0x1b2b
0000078c: JUMP
0000078d: JUMPDEST
0000078e: PUSH1 0x40
00000790: MLOAD
00000791: DUP1
00000792: PUSH1 0xa0
00000794: ADD
00000795: PUSH1 0x40
00000797: MSTORE
00000798: DUP1
00000799: DUP4
0000079a: DUP2
0000079b: MSTORE
0000079c: PUSH1 0x20
0000079e: ADD
0000079f: PUSH1 0x00
000007a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007b6: AND
000007b7: DUP2
000007b8: MSTORE
000007b9: PUSH1 0x20
000007bb: ADD
000007bc: PUSH1 0x00
000007be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007d3: AND
000007d4: DUP2
000007d5: MSTORE
000007d6: PUSH1 0x20
000007d8: ADD
000007d9: PUSH1 0x00
000007db: DUP2
000007dc: MSTORE
000007dd: PUSH1 0x20
000007df: ADD
000007e0: TIMESTAMP
000007e1: DUP2
000007e2: MSTORE
000007e3: POP
000007e4: SWAP1
000007e5: POP
000007e6: DUP1
000007e7: PUSH1 0x03
000007e9: PUSH1 0x00
000007eb: DUP7
000007ec: DUP2
000007ed: MSTORE
000007ee: PUSH1 0x20
000007f0: ADD
000007f1: SWAP1
000007f2: DUP2
000007f3: MSTORE
000007f4: PUSH1 0x20
000007f6: ADD
000007f7: PUSH1 0x00
000007f9: KECCAK256
000007fa: PUSH1 0x00
000007fc: DUP3
000007fd: ADD
000007fe: MLOAD
000007ff: DUP2
00000800: PUSH1 0x00
00000802: ADD
00000803: SWAP1
00000804: DUP1
00000805: MLOAD
00000806: SWAP1
00000807: PUSH1 0x20
00000809: ADD
0000080a: SWAP1
0000080b: PUSH2 0x0815
0000080e: SWAP3
0000080f: SWAP2
00000810: SWAP1
00000811: PUSH2 0x1b86
00000814: JUMP
00000815: JUMPDEST
00000816: POP
00000817: PUSH1 0x20
00000819: DUP3
0000081a: ADD
0000081b: MLOAD
0000081c: DUP2
0000081d: PUSH1 0x01
0000081f: ADD
00000820: PUSH1 0x00
00000822: PUSH2 0x0100
00000825: EXP
00000826: DUP2
00000827: SLOAD
00000828: DUP2
00000829: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000083e: MUL
0000083f: NOT
00000840: AND
00000841: SWAP1
00000842: DUP4
00000843: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000858: AND
00000859: MUL
0000085a: OR
0000085b: SWAP1
0000085c: SSTORE
0000085d: POP
0000085e: PUSH1 0x40
00000860: DUP3
00000861: ADD
00000862: MLOAD
00000863: DUP2
00000864: PUSH1 0x02
00000866: ADD
00000867: PUSH1 0x00
00000869: PUSH2 0x0100
0000086c: EXP
0000086d: DUP2
0000086e: SLOAD
0000086f: DUP2
00000870: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000885: MUL
00000886: NOT
00000887: AND
00000888: SWAP1
00000889: DUP4
0000088a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000089f: AND
000008a0: MUL
000008a1: OR
000008a2: SWAP1
000008a3: SSTORE
000008a4: POP
000008a5: PUSH1 0x60
000008a7: DUP3
000008a8: ADD
000008a9: MLOAD
000008aa: DUP2
000008ab: PUSH1 0x03
000008ad: ADD
000008ae: SSTORE
000008af: PUSH1 0x80
000008b1: DUP3
000008b2: ADD
000008b3: MLOAD
000008b4: DUP2
000008b5: PUSH1 0x04
000008b7: ADD
000008b8: SSTORE
000008b9: SWAP1
000008ba: POP
000008bb: POP
000008bc: POP
000008bd: POP
000008be: POP
000008bf: POP
000008c0: PUSH2 0x0907
000008c3: JUMP
000008c4: JUMPDEST
000008c5: PUSH1 0x02
000008c7: DUP2
000008c8: EQ
000008c9: ISZERO
000008ca: PUSH2 0x08d4
000008cd: JUMPI
000008ce: POP
000008cf: POP
000008d0: PUSH2 0x0907
000008d3: JUMP
000008d4: JUMPDEST
000008d5: PUSH1 0x00
000008d7: PUSH1 0x03
000008d9: PUSH1 0x00
000008db: DUP5
000008dc: DUP2
000008dd: MSTORE
000008de: PUSH1 0x20
000008e0: ADD
000008e1: SWAP1
000008e2: DUP2
000008e3: MSTORE
000008e4: PUSH1 0x20
000008e6: ADD
000008e7: PUSH1 0x00
000008e9: KECCAK256
000008ea: SWAP1
000008eb: POP
000008ec: PUSH1 0x00
000008ee: DUP2
000008ef: PUSH1 0x04
000008f1: ADD
000008f2: DUP2
000008f3: SWAP1
000008f4: SSTORE
000008f5: POP
000008f6: DUP5
000008f7: PUSH1 0x01
000008f9: DUP2
000008fa: SWAP1
000008fb: SSTORE
000008fc: POP
000008fd: DUP4
000008fe: PUSH1 0x02
00000900: DUP2
00000901: SWAP1
00000902: SSTORE
00000903: POP
00000904: POP
00000905: POP
00000906: POP
00000907: JUMPDEST
00000908: POP
00000909: POP
0000090a: JUMP
0000090b: JUMPDEST
0000090c: PUSH1 0x01
0000090e: SLOAD
0000090f: DUP2
00000910: JUMP
00000911: JUMPDEST
00000912: PUSH2 0x0919
00000915: PUSH2 0x1519
00000918: JUMP
00000919: JUMPDEST
0000091a: PUSH1 0x00
0000091c: DUP1
0000091d: DUP2
0000091e: SLOAD
0000091f: DUP2
00000920: LT
00000921: PUSH2 0x0926
00000924: JUMPI
00000925: INVALID
00000926: JUMPDEST
00000927: SWAP1
00000928: PUSH1 0x00
0000092a: MSTORE
0000092b: PUSH1 0x20
0000092d: PUSH1 0x00
0000092f: KECCAK256
00000930: ADD
00000931: PUSH1 0x00
00000933: SWAP1
00000934: SLOAD
00000935: SWAP1
00000936: PUSH2 0x0100
00000939: EXP
0000093a: SWAP1
0000093b: DIV
0000093c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000951: AND
00000952: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000967: AND
00000968: CALLER
00000969: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000097e: AND
0000097f: EQ
00000980: PUSH2 0x09f1
00000983: JUMPI
00000984: PUSH1 0x40
00000986: MLOAD
00000987: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000009a8: DUP2
000009a9: MSTORE
000009aa: PUSH1 0x04
000009ac: ADD
000009ad: DUP1
000009ae: DUP1
000009af: PUSH1 0x20
000009b1: ADD
000009b2: DUP3
000009b3: DUP2
000009b4: SUB
000009b5: DUP3
000009b6: MSTORE
000009b7: PUSH1 0x10
000009b9: DUP2
000009ba: MSTORE
000009bb: PUSH1 0x20
000009bd: ADD
000009be: DUP1
000009bf: PUSH32 0x4e6f74207072696d617279207573657200000000000000000000000000000000
000009e0: DUP2
000009e1: MSTORE
000009e2: POP
000009e3: PUSH1 0x20
000009e5: ADD
000009e6: SWAP2
000009e7: POP
000009e8: POP
000009e9: PUSH1 0x40
000009eb: MLOAD
000009ec: DUP1
000009ed: SWAP2
000009ee: SUB
000009ef: SWAP1
000009f0: REVERT
000009f1: JUMPDEST
000009f2: PUSH1 0x00
000009f4: PUSH1 0x60
000009f6: PUSH1 0x01
000009f8: PUSH8 0xffffffffffffffff
00000a01: DUP2
00000a02: GT
00000a03: DUP1
00000a04: ISZERO
00000a05: PUSH2 0x0a0d
00000a08: JUMPI
00000a09: PUSH1 0x00
00000a0b: DUP1
00000a0c: REVERT
00000a0d: JUMPDEST
00000a0e: POP
00000a0f: PUSH1 0x40
00000a11: MLOAD
00000a12: SWAP1
00000a13: DUP1
00000a14: DUP3
00000a15: MSTORE
00000a16: DUP1
00000a17: PUSH1 0x20
00000a19: MUL
00000a1a: PUSH1 0x20
00000a1c: ADD
00000a1d: DUP3
00000a1e: ADD
00000a1f: PUSH1 0x40
00000a21: MSTORE
00000a22: DUP1
00000a23: ISZERO
00000a24: PUSH2 0x0a3c
00000a27: JUMPI
00000a28: DUP2
00000a29: PUSH1 0x20
00000a2b: ADD
00000a2c: PUSH1 0x20
00000a2e: DUP3
00000a2f: MUL
00000a30: DUP1
00000a31: CALLDATASIZE
00000a32: DUP4
00000a33: CALLDATACOPY
00000a34: DUP1
00000a35: DUP3
00000a36: ADD
00000a37: SWAP2
00000a38: POP
00000a39: POP
00000a3a: SWAP1
00000a3b: POP
00000a3c: JUMPDEST
00000a3d: POP
00000a3e: SWAP1
00000a3f: POP
00000a40: CALLER
00000a41: DUP2
00000a42: PUSH1 0x00
00000a44: DUP2
00000a45: MLOAD
00000a46: DUP2
00000a47: LT
00000a48: PUSH2 0x0a4d
00000a4b: JUMPI
00000a4c: INVALID
00000a4d: JUMPDEST
00000a4e: PUSH1 0x20
00000a50: MUL
00000a51: PUSH1 0x20
00000a53: ADD
00000a54: ADD
00000a55: SWAP1
00000a56: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a6b: AND
00000a6c: SWAP1
00000a6d: DUP2
00000a6e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a83: AND
00000a84: DUP2
00000a85: MSTORE
00000a86: POP
00000a87: POP
00000a88: PUSH2 0x0a8f
00000a8b: PUSH2 0x1b2b
00000a8e: JUMP
00000a8f: JUMPDEST
00000a90: PUSH1 0x40
00000a92: MLOAD
00000a93: DUP1
00000a94: PUSH1 0xa0
00000a96: ADD
00000a97: PUSH1 0x40
00000a99: MSTORE
00000a9a: DUP1
00000a9b: DUP4
00000a9c: DUP2
00000a9d: MSTORE
00000a9e: PUSH1 0x20
00000aa0: ADD
00000aa1: DUP7
00000aa2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ab7: AND
00000ab8: DUP2
00000ab9: MSTORE
00000aba: PUSH1 0x20
00000abc: ADD
00000abd: DUP8
00000abe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ad3: AND
00000ad4: DUP2
00000ad5: MSTORE
00000ad6: PUSH1 0x20
00000ad8: ADD
00000ad9: DUP6
00000ada: DUP2
00000adb: MSTORE
00000adc: PUSH1 0x20
00000ade: ADD
00000adf: TIMESTAMP
00000ae0: DUP2
00000ae1: MSTORE
00000ae2: POP
00000ae3: SWAP1
00000ae4: POP
00000ae5: DUP1
00000ae6: PUSH1 0x03
00000ae8: PUSH1 0x00
00000aea: DUP6
00000aeb: DUP2
00000aec: MSTORE
00000aed: PUSH1 0x20
00000aef: ADD
00000af0: SWAP1
00000af1: DUP2
00000af2: MSTORE
00000af3: PUSH1 0x20
00000af5: ADD
00000af6: PUSH1 0x00
00000af8: KECCAK256
00000af9: PUSH1 0x00
00000afb: DUP3
00000afc: ADD
00000afd: MLOAD
00000afe: DUP2
00000aff: PUSH1 0x00
00000b01: ADD
00000b02: SWAP1
00000b03: DUP1
00000b04: MLOAD
00000b05: SWAP1
00000b06: PUSH1 0x20
00000b08: ADD
00000b09: SWAP1
00000b0a: PUSH2 0x0b14
00000b0d: SWAP3
00000b0e: SWAP2
00000b0f: SWAP1
00000b10: PUSH2 0x1b86
00000b13: JUMP
00000b14: JUMPDEST
00000b15: POP
00000b16: PUSH1 0x20
00000b18: DUP3
00000b19: ADD
00000b1a: MLOAD
00000b1b: DUP2
00000b1c: PUSH1 0x01
00000b1e: ADD
00000b1f: PUSH1 0x00
00000b21: PUSH2 0x0100
00000b24: EXP
00000b25: DUP2
00000b26: SLOAD
00000b27: DUP2
00000b28: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b3d: MUL
00000b3e: NOT
00000b3f: AND
00000b40: SWAP1
00000b41: DUP4
00000b42: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b57: AND
00000b58: MUL
00000b59: OR
00000b5a: SWAP1
00000b5b: SSTORE
00000b5c: POP
00000b5d: PUSH1 0x40
00000b5f: DUP3
00000b60: ADD
00000b61: MLOAD
00000b62: DUP2
00000b63: PUSH1 0x02
00000b65: ADD
00000b66: PUSH1 0x00
00000b68: PUSH2 0x0100
00000b6b: EXP
00000b6c: DUP2
00000b6d: SLOAD
00000b6e: DUP2
00000b6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b84: MUL
00000b85: NOT
00000b86: AND
00000b87: SWAP1
00000b88: DUP4
00000b89: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b9e: AND
00000b9f: MUL
00000ba0: OR
00000ba1: SWAP1
00000ba2: SSTORE
00000ba3: POP
00000ba4: PUSH1 0x60
00000ba6: DUP3
00000ba7: ADD
00000ba8: MLOAD
00000ba9: DUP2
00000baa: PUSH1 0x03
00000bac: ADD
00000bad: SSTORE
00000bae: PUSH1 0x80
00000bb0: DUP3
00000bb1: ADD
00000bb2: MLOAD
00000bb3: DUP2
00000bb4: PUSH1 0x04
00000bb6: ADD
00000bb7: SSTORE
00000bb8: SWAP1
00000bb9: POP
00000bba: POP
00000bbb: POP
00000bbc: POP
00000bbd: POP
00000bbe: POP
00000bbf: POP
00000bc0: POP
00000bc1: JUMP
00000bc2: JUMPDEST
00000bc3: PUSH2 0x0bca
00000bc6: PUSH2 0x1519
00000bc9: JUMP
00000bca: JUMPDEST
00000bcb: PUSH1 0x00
00000bcd: DUP1
00000bce: DUP2
00000bcf: SLOAD
00000bd0: DUP2
00000bd1: LT
00000bd2: PUSH2 0x0bd7
00000bd5: JUMPI
00000bd6: INVALID
00000bd7: JUMPDEST
00000bd8: SWAP1
00000bd9: PUSH1 0x00
00000bdb: MSTORE
00000bdc: PUSH1 0x20
00000bde: PUSH1 0x00
00000be0: KECCAK256
00000be1: ADD
00000be2: PUSH1 0x00
00000be4: SWAP1
00000be5: SLOAD
00000be6: SWAP1
00000be7: PUSH2 0x0100
00000bea: EXP
00000beb: SWAP1
00000bec: DIV
00000bed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c02: AND
00000c03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c18: AND
00000c19: CALLER
00000c1a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c2f: AND
00000c30: EQ
00000c31: PUSH2 0x0ca2
00000c34: JUMPI
00000c35: PUSH1 0x40
00000c37: MLOAD
00000c38: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000c59: DUP2
00000c5a: MSTORE
00000c5b: PUSH1 0x04
00000c5d: ADD
00000c5e: DUP1
00000c5f: DUP1
00000c60: PUSH1 0x20
00000c62: ADD
00000c63: DUP3
00000c64: DUP2
00000c65: SUB
00000c66: DUP3
00000c67: MSTORE
00000c68: PUSH1 0x10
00000c6a: DUP2
00000c6b: MSTORE
00000c6c: PUSH1 0x20
00000c6e: ADD
00000c6f: DUP1
00000c70: PUSH32 0x4e6f74207072696d617279207573657200000000000000000000000000000000
00000c91: DUP2
00000c92: MSTORE
00000c93: POP
00000c94: PUSH1 0x20
00000c96: ADD
00000c97: SWAP2
00000c98: POP
00000c99: POP
00000c9a: PUSH1 0x40
00000c9c: MLOAD
00000c9d: DUP1
00000c9e: SWAP2
00000c9f: SUB
00000ca0: SWAP1
00000ca1: REVERT
00000ca2: JUMPDEST
00000ca3: PUSH1 0x00
00000ca5: PUSH1 0x01
00000ca7: SWAP1
00000ca8: POP
00000ca9: PUSH1 0x60
00000cab: PUSH1 0x01
00000cad: PUSH8 0xffffffffffffffff
00000cb6: DUP2
00000cb7: GT
00000cb8: DUP1
00000cb9: ISZERO
00000cba: PUSH2 0x0cc2
00000cbd: JUMPI
00000cbe: PUSH1 0x00
00000cc0: DUP1
00000cc1: REVERT
00000cc2: JUMPDEST
00000cc3: POP
00000cc4: PUSH1 0x40
00000cc6: MLOAD
00000cc7: SWAP1
00000cc8: DUP1
00000cc9: DUP3
00000cca: MSTORE
00000ccb: DUP1
00000ccc: PUSH1 0x20
00000cce: MUL
00000ccf: PUSH1 0x20
00000cd1: ADD
00000cd2: DUP3
00000cd3: ADD
00000cd4: PUSH1 0x40
00000cd6: MSTORE
00000cd7: DUP1
00000cd8: ISZERO
00000cd9: PUSH2 0x0cf1
00000cdc: JUMPI
00000cdd: DUP2
00000cde: PUSH1 0x20
00000ce0: ADD
00000ce1: PUSH1 0x20
00000ce3: DUP3
00000ce4: MUL
00000ce5: DUP1
00000ce6: CALLDATASIZE
00000ce7: DUP4
00000ce8: CALLDATACOPY
00000ce9: DUP1
00000cea: DUP3
00000ceb: ADD
00000cec: SWAP2
00000ced: POP
00000cee: POP
00000cef: SWAP1
00000cf0: POP
00000cf1: JUMPDEST
00000cf2: POP
00000cf3: SWAP1
00000cf4: POP
00000cf5: CALLER
00000cf6: DUP2
00000cf7: PUSH1 0x00
00000cf9: DUP2
00000cfa: MLOAD
00000cfb: DUP2
00000cfc: LT
00000cfd: PUSH2 0x0d02
00000d00: JUMPI
00000d01: INVALID
00000d02: JUMPDEST
00000d03: PUSH1 0x20
00000d05: MUL
00000d06: PUSH1 0x20
00000d08: ADD
00000d09: ADD
00000d0a: SWAP1
00000d0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d20: AND
00000d21: SWAP1
00000d22: DUP2
00000d23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d38: AND
00000d39: DUP2
00000d3a: MSTORE
00000d3b: POP
00000d3c: POP
00000d3d: PUSH2 0x0d44
00000d40: PUSH2 0x1b2b
00000d43: JUMP
00000d44: JUMPDEST
00000d45: PUSH1 0x40
00000d47: MLOAD
00000d48: DUP1
00000d49: PUSH1 0xa0
00000d4b: ADD
00000d4c: PUSH1 0x40
00000d4e: MSTORE
00000d4f: DUP1
00000d50: DUP4
00000d51: DUP2
00000d52: MSTORE
00000d53: PUSH1 0x20
00000d55: ADD
00000d56: DUP7
00000d57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d6c: AND
00000d6d: DUP2
00000d6e: MSTORE
00000d6f: PUSH1 0x20
00000d71: ADD
00000d72: PUSH1 0x00
00000d74: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d89: AND
00000d8a: DUP2
00000d8b: MSTORE
00000d8c: PUSH1 0x20
00000d8e: ADD
00000d8f: DUP6
00000d90: DUP2
00000d91: MSTORE
00000d92: PUSH1 0x20
00000d94: ADD
00000d95: TIMESTAMP
00000d96: DUP2
00000d97: MSTORE
00000d98: POP
00000d99: SWAP1
00000d9a: POP
00000d9b: DUP1
00000d9c: PUSH1 0x03
00000d9e: PUSH1 0x00
00000da0: DUP6
00000da1: DUP2
00000da2: MSTORE
00000da3: PUSH1 0x20
00000da5: ADD
00000da6: SWAP1
00000da7: DUP2
00000da8: MSTORE
00000da9: PUSH1 0x20
00000dab: ADD
00000dac: PUSH1 0x00
00000dae: KECCAK256
00000daf: PUSH1 0x00
00000db1: DUP3
00000db2: ADD
00000db3: MLOAD
00000db4: DUP2
00000db5: PUSH1 0x00
00000db7: ADD
00000db8: SWAP1
00000db9: DUP1
00000dba: MLOAD
00000dbb: SWAP1
00000dbc: PUSH1 0x20
00000dbe: ADD
00000dbf: SWAP1
00000dc0: PUSH2 0x0dca
00000dc3: SWAP3
00000dc4: SWAP2
00000dc5: SWAP1
00000dc6: PUSH2 0x1b86
00000dc9: JUMP
00000dca: JUMPDEST
00000dcb: POP
00000dcc: PUSH1 0x20
00000dce: DUP3
00000dcf: ADD
00000dd0: MLOAD
00000dd1: DUP2
00000dd2: PUSH1 0x01
00000dd4: ADD
00000dd5: PUSH1 0x00
00000dd7: PUSH2 0x0100
00000dda: EXP
00000ddb: DUP2
00000ddc: SLOAD
00000ddd: DUP2
00000dde: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000df3: MUL
00000df4: NOT
00000df5: AND
00000df6: SWAP1
00000df7: DUP4
00000df8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e0d: AND
00000e0e: MUL
00000e0f: OR
00000e10: SWAP1
00000e11: SSTORE
00000e12: POP
00000e13: PUSH1 0x40
00000e15: DUP3
00000e16: ADD
00000e17: MLOAD
00000e18: DUP2
00000e19: PUSH1 0x02
00000e1b: ADD
00000e1c: PUSH1 0x00
00000e1e: PUSH2 0x0100
00000e21: EXP
00000e22: DUP2
00000e23: SLOAD
00000e24: DUP2
00000e25: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e3a: MUL
00000e3b: NOT
00000e3c: AND
00000e3d: SWAP1
00000e3e: DUP4
00000e3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e54: AND
00000e55: MUL
00000e56: OR
00000e57: SWAP1
00000e58: SSTORE
00000e59: POP
00000e5a: PUSH1 0x60
00000e5c: DUP3
00000e5d: ADD
00000e5e: MLOAD
00000e5f: DUP2
00000e60: PUSH1 0x03
00000e62: ADD
00000e63: SSTORE
00000e64: PUSH1 0x80
00000e66: DUP3
00000e67: ADD
00000e68: MLOAD
00000e69: DUP2
00000e6a: PUSH1 0x04
00000e6c: ADD
00000e6d: SSTORE
00000e6e: SWAP1
00000e6f: POP
00000e70: POP
00000e71: POP
00000e72: POP
00000e73: POP
00000e74: POP
00000e75: POP
00000e76: JUMP
00000e77: JUMPDEST
00000e78: PUSH1 0x02
00000e7a: SLOAD
00000e7b: DUP2
00000e7c: JUMP
00000e7d: JUMPDEST
00000e7e: PUSH1 0x00
00000e80: DUP2
00000e81: DUP2
00000e82: SLOAD
00000e83: DUP2
00000e84: LT
00000e85: PUSH2 0x0e8a
00000e88: JUMPI
00000e89: INVALID
00000e8a: JUMPDEST
00000e8b: SWAP1
00000e8c: PUSH1 0x00
00000e8e: MSTORE
00000e8f: PUSH1 0x20
00000e91: PUSH1 0x00
00000e93: KECCAK256
00000e94: ADD
00000e95: PUSH1 0x00
00000e97: SWAP2
00000e98: POP
00000e99: SLOAD
00000e9a: SWAP1
00000e9b: PUSH2 0x0100
00000e9e: EXP
00000e9f: SWAP1
00000ea0: DIV
00000ea1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eb6: AND
00000eb7: DUP2
00000eb8: JUMP
00000eb9: JUMPDEST
00000eba: PUSH2 0x0ec1
00000ebd: PUSH2 0x1519
00000ec0: JUMP
00000ec1: JUMPDEST
00000ec2: PUSH1 0x00
00000ec4: PUSH1 0x02
00000ec6: SWAP1
00000ec7: POP
00000ec8: PUSH1 0x00
00000eca: PUSH2 0x0ed2
00000ecd: DUP3
00000ece: PUSH2 0x1953
00000ed1: JUMP
00000ed2: JUMPDEST
00000ed3: SWAP1
00000ed4: POP
00000ed5: PUSH1 0x00
00000ed7: DUP2
00000ed8: EQ
00000ed9: ISZERO
00000eda: PUSH2 0x10b0
00000edd: JUMPI
00000ede: PUSH1 0x60
00000ee0: PUSH1 0x01
00000ee2: PUSH8 0xffffffffffffffff
00000eeb: DUP2
00000eec: GT
00000eed: DUP1
00000eee: ISZERO
00000eef: PUSH2 0x0ef7
00000ef2: JUMPI
00000ef3: PUSH1 0x00
00000ef5: DUP1
00000ef6: REVERT
00000ef7: JUMPDEST
00000ef8: POP
00000ef9: PUSH1 0x40
00000efb: MLOAD
00000efc: SWAP1
00000efd: DUP1
00000efe: DUP3
00000eff: MSTORE
00000f00: DUP1
00000f01: PUSH1 0x20
00000f03: MUL
00000f04: PUSH1 0x20
00000f06: ADD
00000f07: DUP3
00000f08: ADD
00000f09: PUSH1 0x40
00000f0b: MSTORE
00000f0c: DUP1
00000f0d: ISZERO
00000f0e: PUSH2 0x0f26
00000f11: JUMPI
00000f12: DUP2
00000f13: PUSH1 0x20
00000f15: ADD
00000f16: PUSH1 0x20
00000f18: DUP3
00000f19: MUL
00000f1a: DUP1
00000f1b: CALLDATASIZE
00000f1c: DUP4
00000f1d: CALLDATACOPY
00000f1e: DUP1
00000f1f: DUP3
00000f20: ADD
00000f21: SWAP2
00000f22: POP
00000f23: POP
00000f24: SWAP1
00000f25: POP
00000f26: JUMPDEST
00000f27: POP
00000f28: SWAP1
00000f29: POP
00000f2a: CALLER
00000f2b: DUP2
00000f2c: PUSH1 0x00
00000f2e: DUP2
00000f2f: MLOAD
00000f30: DUP2
00000f31: LT
00000f32: PUSH2 0x0f37
00000f35: JUMPI
00000f36: INVALID
00000f37: JUMPDEST
00000f38: PUSH1 0x20
00000f3a: MUL
00000f3b: PUSH1 0x20
00000f3d: ADD
00000f3e: ADD
00000f3f: SWAP1
00000f40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f55: AND
00000f56: SWAP1
00000f57: DUP2
00000f58: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f6d: AND
00000f6e: DUP2
00000f6f: MSTORE
00000f70: POP
00000f71: POP
00000f72: PUSH2 0x0f79
00000f75: PUSH2 0x1b2b
00000f78: JUMP
00000f79: JUMPDEST
00000f7a: PUSH1 0x40
00000f7c: MLOAD
00000f7d: DUP1
00000f7e: PUSH1 0xa0
00000f80: ADD
00000f81: PUSH1 0x40
00000f83: MSTORE
00000f84: DUP1
00000f85: DUP4
00000f86: DUP2
00000f87: MSTORE
00000f88: PUSH1 0x20
00000f8a: ADD
00000f8b: PUSH1 0x00
00000f8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fa2: AND
00000fa3: DUP2
00000fa4: MSTORE
00000fa5: PUSH1 0x20
00000fa7: ADD
00000fa8: PUSH1 0x00
00000faa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fbf: AND
00000fc0: DUP2
00000fc1: MSTORE
00000fc2: PUSH1 0x20
00000fc4: ADD
00000fc5: PUSH1 0x00
00000fc7: DUP2
00000fc8: MSTORE
00000fc9: PUSH1 0x20
00000fcb: ADD
00000fcc: TIMESTAMP
00000fcd: DUP2
00000fce: MSTORE
00000fcf: POP
00000fd0: SWAP1
00000fd1: POP
00000fd2: DUP1
00000fd3: PUSH1 0x03
00000fd5: PUSH1 0x00
00000fd7: DUP7
00000fd8: DUP2
00000fd9: MSTORE
00000fda: PUSH1 0x20
00000fdc: ADD
00000fdd: SWAP1
00000fde: DUP2
00000fdf: MSTORE
00000fe0: PUSH1 0x20
00000fe2: ADD
00000fe3: PUSH1 0x00
00000fe5: KECCAK256
00000fe6: PUSH1 0x00
00000fe8: DUP3
00000fe9: ADD
00000fea: MLOAD
00000feb: DUP2
00000fec: PUSH1 0x00
00000fee: ADD
00000fef: SWAP1
00000ff0: DUP1
00000ff1: MLOAD
00000ff2: SWAP1
00000ff3: PUSH1 0x20
00000ff5: ADD
00000ff6: SWAP1
00000ff7: PUSH2 0x1001
00000ffa: SWAP3
00000ffb: SWAP2
00000ffc: SWAP1
00000ffd: PUSH2 0x1b86
00001000: JUMP
00001001: JUMPDEST
00001002: POP
00001003: PUSH1 0x20
00001005: DUP3
00001006: ADD
00001007: MLOAD
00001008: DUP2
00001009: PUSH1 0x01
0000100b: ADD
0000100c: PUSH1 0x00
0000100e: PUSH2 0x0100
00001011: EXP
00001012: DUP2
00001013: SLOAD
00001014: DUP2
00001015: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000102a: MUL
0000102b: NOT
0000102c: AND
0000102d: SWAP1
0000102e: DUP4
0000102f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001044: AND
00001045: MUL
00001046: OR
00001047: SWAP1
00001048: SSTORE
00001049: POP
0000104a: PUSH1 0x40
0000104c: DUP3
0000104d: ADD
0000104e: MLOAD
0000104f: DUP2
00001050: PUSH1 0x02
00001052: ADD
00001053: PUSH1 0x00
00001055: PUSH2 0x0100
00001058: EXP
00001059: DUP2
0000105a: SLOAD
0000105b: DUP2
0000105c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001071: MUL
00001072: NOT
00001073: AND
00001074: SWAP1
00001075: DUP4
00001076: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000108b: AND
0000108c: MUL
0000108d: OR
0000108e: SWAP1
0000108f: SSTORE
00001090: POP
00001091: PUSH1 0x60
00001093: DUP3
00001094: ADD
00001095: MLOAD
00001096: DUP2
00001097: PUSH1 0x03
00001099: ADD
0000109a: SSTORE
0000109b: PUSH1 0x80
0000109d: DUP3
0000109e: ADD
0000109f: MLOAD
000010a0: DUP2
000010a1: PUSH1 0x04
000010a3: ADD
000010a4: SSTORE
000010a5: SWAP1
000010a6: POP
000010a7: POP
000010a8: POP
000010a9: POP
000010aa: POP
000010ab: POP
000010ac: PUSH2 0x122e
000010af: JUMP
000010b0: JUMPDEST
000010b1: PUSH1 0x02
000010b3: DUP2
000010b4: EQ
000010b5: ISZERO
000010b6: PUSH2 0x10c0
000010b9: JUMPI
000010ba: POP
000010bb: POP
000010bc: PUSH2 0x122e
000010bf: JUMP
000010c0: JUMPDEST
000010c1: PUSH1 0x00
000010c3: PUSH1 0x03
000010c5: PUSH1 0x00
000010c7: DUP5
000010c8: DUP2
000010c9: MSTORE
000010ca: PUSH1 0x20
000010cc: ADD
000010cd: SWAP1
000010ce: DUP2
000010cf: MSTORE
000010d0: PUSH1 0x20
000010d2: ADD
000010d3: PUSH1 0x00
000010d5: KECCAK256
000010d6: SWAP1
000010d7: POP
000010d8: PUSH1 0x00
000010da: DUP2
000010db: PUSH1 0x04
000010dd: ADD
000010de: DUP2
000010df: SWAP1
000010e0: SSTORE
000010e1: POP
000010e2: PUSH1 0x00
000010e4: ISZERO
000010e5: ISZERO
000010e6: DUP5
000010e7: ISZERO
000010e8: ISZERO
000010e9: EQ
000010ea: ISZERO
000010eb: PUSH2 0x11a0
000010ee: JUMPI
000010ef: DUP6
000010f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001105: AND
00001106: PUSH4 0xa9059cbb
0000110b: CALLER
0000110c: DUP8
0000110d: PUSH1 0x40
0000110f: MLOAD
00001110: DUP4
00001111: PUSH4 0xffffffff
00001116: AND
00001117: PUSH1 0xe0
00001119: SHL
0000111a: DUP2
0000111b: MSTORE
0000111c: PUSH1 0x04
0000111e: ADD
0000111f: DUP1
00001120: DUP4
00001121: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001136: AND
00001137: DUP2
00001138: MSTORE
00001139: PUSH1 0x20
0000113b: ADD
0000113c: DUP3
0000113d: DUP2
0000113e: MSTORE
0000113f: PUSH1 0x20
00001141: ADD
00001142: SWAP3
00001143: POP
00001144: POP
00001145: POP
00001146: PUSH1 0x20
00001148: PUSH1 0x40
0000114a: MLOAD
0000114b: DUP1
0000114c: DUP4
0000114d: SUB
0000114e: DUP2
0000114f: PUSH1 0x00
00001151: DUP8
00001152: DUP1
00001153: EXTCODESIZE
00001154: ISZERO
00001155: DUP1
00001156: ISZERO
00001157: PUSH2 0x115f
0000115a: JUMPI
0000115b: PUSH1 0x00
0000115d: DUP1
0000115e: REVERT
0000115f: JUMPDEST
00001160: POP
00001161: GAS
00001162: CALL
00001163: ISZERO
00001164: DUP1
00001165: ISZERO
00001166: PUSH2 0x1173
00001169: JUMPI
0000116a: RETURNDATASIZE
0000116b: PUSH1 0x00
0000116d: DUP1
0000116e: RETURNDATACOPY
0000116f: RETURNDATASIZE
00001170: PUSH1 0x00
00001172: REVERT
00001173: JUMPDEST
00001174: POP
00001175: POP
00001176: POP
00001177: POP
00001178: PUSH1 0x40
0000117a: MLOAD
0000117b: RETURNDATASIZE
0000117c: PUSH1 0x20
0000117e: DUP2
0000117f: LT
00001180: ISZERO
00001181: PUSH2 0x1189
00001184: JUMPI
00001185: PUSH1 0x00
00001187: DUP1
00001188: REVERT
00001189: JUMPDEST
0000118a: DUP2
0000118b: ADD
0000118c: SWAP1
0000118d: DUP1
0000118e: DUP1
0000118f: MLOAD
00001190: SWAP1
00001191: PUSH1 0x20
00001193: ADD
00001194: SWAP1
00001195: SWAP3
00001196: SWAP2
00001197: SWAP1
00001198: POP
00001199: POP
0000119a: POP
0000119b: POP
0000119c: PUSH2 0x122a
0000119f: JUMP
000011a0: JUMPDEST
000011a1: DUP6
000011a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011b7: AND
000011b8: PUSH4 0xa9059cbb
000011bd: CALLER
000011be: DUP8
000011bf: PUSH1 0x40
000011c1: MLOAD
000011c2: DUP4
000011c3: PUSH4 0xffffffff
000011c8: AND
000011c9: PUSH1 0xe0
000011cb: SHL
000011cc: DUP2
000011cd: MSTORE
000011ce: PUSH1 0x04
000011d0: ADD
000011d1: DUP1
000011d2: DUP4
000011d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011e8: AND
000011e9: DUP2
000011ea: MSTORE
000011eb: PUSH1 0x20
000011ed: ADD
000011ee: DUP3
000011ef: DUP2
000011f0: MSTORE
000011f1: PUSH1 0x20
000011f3: ADD
000011f4: SWAP3
000011f5: POP
000011f6: POP
000011f7: POP
000011f8: PUSH1 0x00
000011fa: PUSH1 0x40
000011fc: MLOAD
000011fd: DUP1
000011fe: DUP4
000011ff: SUB
00001200: DUP2
00001201: PUSH1 0x00
00001203: DUP8
00001204: DUP1
00001205: EXTCODESIZE
00001206: ISZERO
00001207: DUP1
00001208: ISZERO
00001209: PUSH2 0x1211
0000120c: JUMPI
0000120d: PUSH1 0x00
0000120f: DUP1
00001210: REVERT
00001211: JUMPDEST
00001212: POP
00001213: GAS
00001214: CALL
00001215: ISZERO
00001216: DUP1
00001217: ISZERO
00001218: PUSH2 0x1225
0000121b: JUMPI
0000121c: RETURNDATASIZE
0000121d: PUSH1 0x00
0000121f: DUP1
00001220: RETURNDATACOPY
00001221: RETURNDATASIZE
00001222: PUSH1 0x00
00001224: REVERT
00001225: JUMPDEST
00001226: POP
00001227: POP
00001228: POP
00001229: POP
0000122a: JUMPDEST
0000122b: POP
0000122c: POP
0000122d: POP
0000122e: JUMPDEST
0000122f: POP
00001230: POP
00001231: POP
00001232: JUMP
00001233: JUMPDEST
00001234: PUSH2 0x123b
00001237: PUSH2 0x1519
0000123a: JUMP
0000123b: JUMPDEST
0000123c: PUSH1 0x00
0000123e: PUSH1 0x03
00001240: SWAP1
00001241: POP
00001242: PUSH1 0x00
00001244: PUSH2 0x124c
00001247: DUP3
00001248: PUSH2 0x1953
0000124b: JUMP
0000124c: JUMPDEST
0000124d: SWAP1
0000124e: POP
0000124f: PUSH1 0x00
00001251: DUP2
00001252: EQ
00001253: ISZERO
00001254: PUSH2 0x142a
00001257: JUMPI
00001258: PUSH1 0x60
0000125a: PUSH1 0x01
0000125c: PUSH8 0xffffffffffffffff
00001265: DUP2
00001266: GT
00001267: DUP1
00001268: ISZERO
00001269: PUSH2 0x1271
0000126c: JUMPI
0000126d: PUSH1 0x00
0000126f: DUP1
00001270: REVERT
00001271: JUMPDEST
00001272: POP
00001273: PUSH1 0x40
00001275: MLOAD
00001276: SWAP1
00001277: DUP1
00001278: DUP3
00001279: MSTORE
0000127a: DUP1
0000127b: PUSH1 0x20
0000127d: MUL
0000127e: PUSH1 0x20
00001280: ADD
00001281: DUP3
00001282: ADD
00001283: PUSH1 0x40
00001285: MSTORE
00001286: DUP1
00001287: ISZERO
00001288: PUSH2 0x12a0
0000128b: JUMPI
0000128c: DUP2
0000128d: PUSH1 0x20
0000128f: ADD
00001290: PUSH1 0x20
00001292: DUP3
00001293: MUL
00001294: DUP1
00001295: CALLDATASIZE
00001296: DUP4
00001297: CALLDATACOPY
00001298: DUP1
00001299: DUP3
0000129a: ADD
0000129b: SWAP2
0000129c: POP
0000129d: POP
0000129e: SWAP1
0000129f: POP
000012a0: JUMPDEST
000012a1: POP
000012a2: SWAP1
000012a3: POP
000012a4: CALLER
000012a5: DUP2
000012a6: PUSH1 0x00
000012a8: DUP2
000012a9: MLOAD
000012aa: DUP2
000012ab: LT
000012ac: PUSH2 0x12b1
000012af: JUMPI
000012b0: INVALID
000012b1: JUMPDEST
000012b2: PUSH1 0x20
000012b4: MUL
000012b5: PUSH1 0x20
000012b7: ADD
000012b8: ADD
000012b9: SWAP1
000012ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012cf: AND
000012d0: SWAP1
000012d1: DUP2
000012d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012e7: AND
000012e8: DUP2
000012e9: MSTORE
000012ea: POP
000012eb: POP
000012ec: PUSH2 0x12f3
000012ef: PUSH2 0x1b2b
000012f2: JUMP
000012f3: JUMPDEST
000012f4: PUSH1 0x40
000012f6: MLOAD
000012f7: DUP1
000012f8: PUSH1 0xa0
000012fa: ADD
000012fb: PUSH1 0x40
000012fd: MSTORE
000012fe: DUP1
000012ff: DUP4
00001300: DUP2
00001301: MSTORE
00001302: PUSH1 0x20
00001304: ADD
00001305: PUSH1 0x00
00001307: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000131c: AND
0000131d: DUP2
0000131e: MSTORE
0000131f: PUSH1 0x20
00001321: ADD
00001322: PUSH1 0x00
00001324: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001339: AND
0000133a: DUP2
0000133b: MSTORE
0000133c: PUSH1 0x20
0000133e: ADD
0000133f: PUSH1 0x00
00001341: DUP2
00001342: MSTORE
00001343: PUSH1 0x20
00001345: ADD
00001346: TIMESTAMP
00001347: DUP2
00001348: MSTORE
00001349: POP
0000134a: SWAP1
0000134b: POP
0000134c: DUP1
0000134d: PUSH1 0x03
0000134f: PUSH1 0x00
00001351: DUP7
00001352: DUP2
00001353: MSTORE
00001354: PUSH1 0x20
00001356: ADD
00001357: SWAP1
00001358: DUP2
00001359: MSTORE
0000135a: PUSH1 0x20
0000135c: ADD
0000135d: PUSH1 0x00
0000135f: KECCAK256
00001360: PUSH1 0x00
00001362: DUP3
00001363: ADD
00001364: MLOAD
00001365: DUP2
00001366: PUSH1 0x00
00001368: ADD
00001369: SWAP1
0000136a: DUP1
0000136b: MLOAD
0000136c: SWAP1
0000136d: PUSH1 0x20
0000136f: ADD
00001370: SWAP1
00001371: PUSH2 0x137b
00001374: SWAP3
00001375: SWAP2
00001376: SWAP1
00001377: PUSH2 0x1b86
0000137a: JUMP
0000137b: JUMPDEST
0000137c: POP
0000137d: PUSH1 0x20
0000137f: DUP3
00001380: ADD
00001381: MLOAD
00001382: DUP2
00001383: PUSH1 0x01
00001385: ADD
00001386: PUSH1 0x00
00001388: PUSH2 0x0100
0000138b: EXP
0000138c: DUP2
0000138d: SLOAD
0000138e: DUP2
0000138f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013a4: MUL
000013a5: NOT
000013a6: AND
000013a7: SWAP1
000013a8: DUP4
000013a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013be: AND
000013bf: MUL
000013c0: OR
000013c1: SWAP1
000013c2: SSTORE
000013c3: POP
000013c4: PUSH1 0x40
000013c6: DUP3
000013c7: ADD
000013c8: MLOAD
000013c9: DUP2
000013ca: PUSH1 0x02
000013cc: ADD
000013cd: PUSH1 0x00
000013cf: PUSH2 0x0100
000013d2: EXP
000013d3: DUP2
000013d4: SLOAD
000013d5: DUP2
000013d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013eb: MUL
000013ec: NOT
000013ed: AND
000013ee: SWAP1
000013ef: DUP4
000013f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001405: AND
00001406: MUL
00001407: OR
00001408: SWAP1
00001409: SSTORE
0000140a: POP
0000140b: PUSH1 0x60
0000140d: DUP3
0000140e: ADD
0000140f: MLOAD
00001410: DUP2
00001411: PUSH1 0x03
00001413: ADD
00001414: SSTORE
00001415: PUSH1 0x80
00001417: DUP3
00001418: ADD
00001419: MLOAD
0000141a: DUP2
0000141b: PUSH1 0x04
0000141d: ADD
0000141e: SSTORE
0000141f: SWAP1
00001420: POP
00001421: POP
00001422: POP
00001423: POP
00001424: POP
00001425: POP
00001426: PUSH2 0x14a6
00001429: JUMP
0000142a: JUMPDEST
0000142b: PUSH1 0x02
0000142d: DUP2
0000142e: EQ
0000142f: ISZERO
00001430: PUSH2 0x143a
00001433: JUMPI
00001434: POP
00001435: POP
00001436: PUSH2 0x14a6
00001439: JUMP
0000143a: JUMPDEST
0000143b: PUSH1 0x00
0000143d: PUSH1 0x03
0000143f: PUSH1 0x00
00001441: DUP5
00001442: DUP2
00001443: MSTORE
00001444: PUSH1 0x20
00001446: ADD
00001447: SWAP1
00001448: DUP2
00001449: MSTORE
0000144a: PUSH1 0x20
0000144c: ADD
0000144d: PUSH1 0x00
0000144f: KECCAK256
00001450: SWAP1
00001451: POP
00001452: PUSH1 0x00
00001454: DUP2
00001455: PUSH1 0x04
00001457: ADD
00001458: DUP2
00001459: SWAP1
0000145a: SSTORE
0000145b: POP
0000145c: CALLER
0000145d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001472: AND
00001473: PUSH2 0x08fc
00001476: DUP6
00001477: SWAP1
00001478: DUP2
00001479: ISZERO
0000147a: MUL
0000147b: SWAP1
0000147c: PUSH1 0x40
0000147e: MLOAD
0000147f: PUSH1 0x00
00001481: PUSH1 0x40
00001483: MLOAD
00001484: DUP1
00001485: DUP4
00001486: SUB
00001487: DUP2
00001488: DUP6
00001489: DUP9
0000148a: DUP9
0000148b: CALL
0000148c: SWAP4
0000148d: POP
0000148e: POP
0000148f: POP
00001490: POP
00001491: ISZERO
00001492: DUP1
00001493: ISZERO
00001494: PUSH2 0x14a1
00001497: JUMPI
00001498: RETURNDATASIZE
00001499: PUSH1 0x00
0000149b: DUP1
0000149c: RETURNDATACOPY
0000149d: RETURNDATASIZE
0000149e: PUSH1 0x00
000014a0: REVERT
000014a1: JUMPDEST
000014a2: POP
000014a3: POP
000014a4: POP
000014a5: POP
000014a6: JUMPDEST
000014a7: POP
000014a8: JUMP
000014a9: JUMPDEST
000014aa: PUSH1 0x03
000014ac: PUSH1 0x20
000014ae: MSTORE
000014af: DUP1
000014b0: PUSH1 0x00
000014b2: MSTORE
000014b3: PUSH1 0x40
000014b5: PUSH1 0x00
000014b7: KECCAK256
000014b8: PUSH1 0x00
000014ba: SWAP2
000014bb: POP
000014bc: SWAP1
000014bd: POP
000014be: DUP1
000014bf: PUSH1 0x01
000014c1: ADD
000014c2: PUSH1 0x00
000014c4: SWAP1
000014c5: SLOAD
000014c6: SWAP1
000014c7: PUSH2 0x0100
000014ca: EXP
000014cb: SWAP1
000014cc: DIV
000014cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014e2: AND
000014e3: SWAP1
000014e4: DUP1
000014e5: PUSH1 0x02
000014e7: ADD
000014e8: PUSH1 0x00
000014ea: SWAP1
000014eb: SLOAD
000014ec: SWAP1
000014ed: PUSH2 0x0100
000014f0: EXP
000014f1: SWAP1
000014f2: DIV
000014f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001508: AND
00001509: SWAP1
0000150a: DUP1
0000150b: PUSH1 0x03
0000150d: ADD
0000150e: SLOAD
0000150f: SWAP1
00001510: DUP1
00001511: PUSH1 0x04
00001513: ADD
00001514: SLOAD
00001515: SWAP1
00001516: POP
00001517: DUP5
00001518: JUMP
00001519: JUMPDEST
0000151a: PUSH1 0x00
0000151c: DUP1
0000151d: JUMPDEST
0000151e: PUSH1 0x00
00001520: DUP1
00001521: SLOAD
00001522: SWAP1
00001523: POP
00001524: DUP2
00001525: LT
00001526: ISZERO
00001527: PUSH2 0x15ab
0000152a: JUMPI
0000152b: PUSH1 0x00
0000152d: DUP2
0000152e: DUP2
0000152f: SLOAD
00001530: DUP2
00001531: LT
00001532: PUSH2 0x1537
00001535: JUMPI
00001536: INVALID
00001537: JUMPDEST
00001538: SWAP1
00001539: PUSH1 0x00
0000153b: MSTORE
0000153c: PUSH1 0x20
0000153e: PUSH1 0x00
00001540: KECCAK256
00001541: ADD
00001542: PUSH1 0x00
00001544: SWAP1
00001545: SLOAD
00001546: SWAP1
00001547: PUSH2 0x0100
0000154a: EXP
0000154b: SWAP1
0000154c: DIV
0000154d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001562: AND
00001563: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001578: AND
00001579: CALLER
0000157a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000158f: AND
00001590: EQ
00001591: ISZERO
00001592: PUSH2 0x159e
00001595: JUMPI
00001596: PUSH1 0x01
00001598: SWAP2
00001599: POP
0000159a: PUSH2 0x15ab
0000159d: JUMP
0000159e: JUMPDEST
0000159f: DUP1
000015a0: DUP1
000015a1: PUSH1 0x01
000015a3: ADD
000015a4: SWAP2
000015a5: POP
000015a6: POP
000015a7: PUSH2 0x151d
000015aa: JUMP
000015ab: JUMPDEST
000015ac: POP
000015ad: PUSH1 0x01
000015af: ISZERO
000015b0: ISZERO
000015b1: DUP2
000015b2: ISZERO
000015b3: ISZERO
000015b4: EQ
000015b5: PUSH2 0x1626
000015b8: JUMPI
000015b9: PUSH1 0x40
000015bb: MLOAD
000015bc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000015dd: DUP2
000015de: MSTORE
000015df: PUSH1 0x04
000015e1: ADD
000015e2: DUP1
000015e3: DUP1
000015e4: PUSH1 0x20
000015e6: ADD
000015e7: DUP3
000015e8: DUP2
000015e9: SUB
000015ea: DUP3
000015eb: MSTORE
000015ec: PUSH1 0x18
000015ee: DUP2
000015ef: MSTORE
000015f0: PUSH1 0x20
000015f2: ADD
000015f3: DUP1
000015f4: PUSH32 0x4e6f7420616e20617574686f72697a6564207369676e65720000000000000000
00001615: DUP2
00001616: MSTORE
00001617: POP
00001618: PUSH1 0x20
0000161a: ADD
0000161b: SWAP2
0000161c: POP
0000161d: POP
0000161e: PUSH1 0x40
00001620: MLOAD
00001621: DUP1
00001622: SWAP2
00001623: SUB
00001624: SWAP1
00001625: REVERT
00001626: JUMPDEST
00001627: POP
00001628: JUMP
00001629: JUMPDEST
0000162a: PUSH2 0x1631
0000162d: PUSH2 0x1b2b
00001630: JUMP
00001631: JUMPDEST
00001632: PUSH1 0x03
00001634: PUSH1 0x00
00001636: DUP4
00001637: DUP2
00001638: MSTORE
00001639: PUSH1 0x20
0000163b: ADD
0000163c: SWAP1
0000163d: DUP2
0000163e: MSTORE
0000163f: PUSH1 0x20
00001641: ADD
00001642: PUSH1 0x00
00001644: KECCAK256
00001645: PUSH1 0x40
00001647: MLOAD
00001648: DUP1
00001649: PUSH1 0xa0
0000164b: ADD
0000164c: PUSH1 0x40
0000164e: MSTORE
0000164f: SWAP1
00001650: DUP2
00001651: PUSH1 0x00
00001653: DUP3
00001654: ADD
00001655: DUP1
00001656: SLOAD
00001657: DUP1
00001658: PUSH1 0x20
0000165a: MUL
0000165b: PUSH1 0x20
0000165d: ADD
0000165e: PUSH1 0x40
00001660: MLOAD
00001661: SWAP1
00001662: DUP2
00001663: ADD
00001664: PUSH1 0x40
00001666: MSTORE
00001667: DUP1
00001668: SWAP3
00001669: SWAP2
0000166a: SWAP1
0000166b: DUP2
0000166c: DUP2
0000166d: MSTORE
0000166e: PUSH1 0x20
00001670: ADD
00001671: DUP3
00001672: DUP1
00001673: SLOAD
00001674: DUP1
00001675: ISZERO
00001676: PUSH2 0x16d4
00001679: JUMPI
0000167a: PUSH1 0x20
0000167c: MUL
0000167d: DUP3
0000167e: ADD
0000167f: SWAP2
00001680: SWAP1
00001681: PUSH1 0x00
00001683: MSTORE
00001684: PUSH1 0x20
00001686: PUSH1 0x00
00001688: KECCAK256
00001689: SWAP1
0000168a: JUMPDEST
0000168b: DUP2
0000168c: PUSH1 0x00
0000168e: SWAP1
0000168f: SLOAD
00001690: SWAP1
00001691: PUSH2 0x0100
00001694: EXP
00001695: SWAP1
00001696: DIV
00001697: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016ac: AND
000016ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016c2: AND
000016c3: DUP2
000016c4: MSTORE
000016c5: PUSH1 0x20
000016c7: ADD
000016c8: SWAP1
000016c9: PUSH1 0x01
000016cb: ADD
000016cc: SWAP1
000016cd: DUP1
000016ce: DUP4
000016cf: GT
000016d0: PUSH2 0x168a
000016d3: JUMPI
000016d4: JUMPDEST
000016d5: POP
000016d6: POP
000016d7: POP
000016d8: POP
000016d9: POP
000016da: DUP2
000016db: MSTORE
000016dc: PUSH1 0x20
000016de: ADD
000016df: PUSH1 0x01
000016e1: DUP3
000016e2: ADD
000016e3: PUSH1 0x00
000016e5: SWAP1
000016e6: SLOAD
000016e7: SWAP1
000016e8: PUSH2 0x0100
000016eb: EXP
000016ec: SWAP1
000016ed: DIV
000016ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001703: AND
00001704: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001719: AND
0000171a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000172f: AND
00001730: DUP2
00001731: MSTORE
00001732: PUSH1 0x20
00001734: ADD
00001735: PUSH1 0x02
00001737: DUP3
00001738: ADD
00001739: PUSH1 0x00
0000173b: SWAP1
0000173c: SLOAD
0000173d: SWAP1
0000173e: PUSH2 0x0100
00001741: EXP
00001742: SWAP1
00001743: DIV
00001744: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001759: AND
0000175a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000176f: AND
00001770: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001785: AND
00001786: DUP2
00001787: MSTORE
00001788: PUSH1 0x20
0000178a: ADD
0000178b: PUSH1 0x03
0000178d: DUP3
0000178e: ADD
0000178f: SLOAD
00001790: DUP2
00001791: MSTORE
00001792: PUSH1 0x20
00001794: ADD
00001795: PUSH1 0x04
00001797: DUP3
00001798: ADD
00001799: SLOAD
0000179a: DUP2
0000179b: MSTORE
0000179c: POP
0000179d: POP
0000179e: SWAP1
0000179f: POP
000017a0: PUSH1 0x02
000017a2: SLOAD
000017a3: DUP2
000017a4: PUSH1 0x80
000017a6: ADD
000017a7: MLOAD
000017a8: TIMESTAMP
000017a9: SUB
000017aa: GT
000017ab: ISZERO
000017ac: PUSH2 0x1800
000017af: JUMPI
000017b0: PUSH1 0x40
000017b2: MLOAD
000017b3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000017d4: DUP2
000017d5: MSTORE
000017d6: PUSH1 0x04
000017d8: ADD
000017d9: DUP1
000017da: DUP1
000017db: PUSH1 0x20
000017dd: ADD
000017de: DUP3
000017df: DUP2
000017e0: SUB
000017e1: DUP3
000017e2: MSTORE
000017e3: PUSH1 0x24
000017e5: DUP2
000017e6: MSTORE
000017e7: PUSH1 0x20
000017e9: ADD
000017ea: DUP1
000017eb: PUSH2 0x1c5f
000017ee: PUSH1 0x24
000017f0: SWAP2
000017f1: CODECOPY
000017f2: PUSH1 0x40
000017f4: ADD
000017f5: SWAP2
000017f6: POP
000017f7: POP
000017f8: PUSH1 0x40
000017fa: MLOAD
000017fb: DUP1
000017fc: SWAP2
000017fd: SUB
000017fe: SWAP1
000017ff: REVERT
00001800: JUMPDEST
00001801: PUSH1 0x01
00001803: SLOAD
00001804: DUP2
00001805: PUSH1 0x80
00001807: ADD
00001808: MLOAD
00001809: TIMESTAMP
0000180a: SUB
0000180b: LT
0000180c: ISZERO
0000180d: PUSH2 0x1861
00001810: JUMPI
00001811: PUSH1 0x40
00001813: MLOAD
00001814: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001835: DUP2
00001836: MSTORE
00001837: PUSH1 0x04
00001839: ADD
0000183a: DUP1
0000183b: DUP1
0000183c: PUSH1 0x20
0000183e: ADD
0000183f: DUP3
00001840: DUP2
00001841: SUB
00001842: DUP3
00001843: MSTORE
00001844: PUSH1 0x21
00001846: DUP2
00001847: MSTORE
00001848: PUSH1 0x20
0000184a: ADD
0000184b: DUP1
0000184c: PUSH2 0x1c83
0000184f: PUSH1 0x21
00001851: SWAP2
00001852: CODECOPY
00001853: PUSH1 0x40
00001855: ADD
00001856: SWAP2
00001857: POP
00001858: POP
00001859: PUSH1 0x40
0000185b: MLOAD
0000185c: DUP1
0000185d: SWAP2
0000185e: SUB
0000185f: SWAP1
00001860: REVERT
00001861: JUMPDEST
00001862: PUSH1 0x00
00001864: DUP1
00001865: JUMPDEST
00001866: DUP3
00001867: PUSH1 0x00
00001869: ADD
0000186a: MLOAD
0000186b: MLOAD
0000186c: DUP2
0000186d: LT
0000186e: ISZERO
0000186f: PUSH2 0x18d3
00001872: JUMPI
00001873: DUP3
00001874: PUSH1 0x00
00001876: ADD
00001877: MLOAD
00001878: DUP2
00001879: DUP2
0000187a: MLOAD
0000187b: DUP2
0000187c: LT
0000187d: PUSH2 0x1882
00001880: JUMPI
00001881: INVALID
00001882: JUMPDEST
00001883: PUSH1 0x20
00001885: MUL
00001886: PUSH1 0x20
00001888: ADD
00001889: ADD
0000188a: MLOAD
0000188b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018a0: AND
000018a1: CALLER
000018a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018b7: AND
000018b8: EQ
000018b9: ISZERO
000018ba: PUSH2 0x18c6
000018bd: JUMPI
000018be: PUSH1 0x01
000018c0: SWAP2
000018c1: POP
000018c2: PUSH2 0x18d3
000018c5: JUMP
000018c6: JUMPDEST
000018c7: DUP1
000018c8: DUP1
000018c9: PUSH1 0x01
000018cb: ADD
000018cc: SWAP2
000018cd: POP
000018ce: POP
000018cf: PUSH2 0x1865
000018d2: JUMP
000018d3: JUMPDEST
000018d4: POP
000018d5: PUSH1 0x01
000018d7: ISZERO
000018d8: ISZERO
000018d9: DUP2
000018da: ISZERO
000018db: ISZERO
000018dc: EQ
000018dd: PUSH2 0x194e
000018e0: JUMPI
000018e1: PUSH1 0x40
000018e3: MLOAD
000018e4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001905: DUP2
00001906: MSTORE
00001907: PUSH1 0x04
00001909: ADD
0000190a: DUP1
0000190b: DUP1
0000190c: PUSH1 0x20
0000190e: ADD
0000190f: DUP3
00001910: DUP2
00001911: SUB
00001912: DUP3
00001913: MSTORE
00001914: PUSH1 0x16
00001916: DUP2
00001917: MSTORE
00001918: PUSH1 0x20
0000191a: ADD
0000191b: DUP1
0000191c: PUSH32 0x4e6f74206f6e65206f6620746865207369676e65727300000000000000000000
0000193d: DUP2
0000193e: MSTORE
0000193f: POP
00001940: PUSH1 0x20
00001942: ADD
00001943: SWAP2
00001944: POP
00001945: POP
00001946: PUSH1 0x40
00001948: MLOAD
00001949: DUP1
0000194a: SWAP2
0000194b: SUB
0000194c: SWAP1
0000194d: REVERT
0000194e: JUMPDEST
0000194f: POP
00001950: POP
00001951: POP
00001952: JUMP
00001953: JUMPDEST
00001954: PUSH1 0x00
00001956: PUSH1 0x01
00001958: PUSH1 0x00
0000195a: DUP1
0000195b: SLOAD
0000195c: SWAP1
0000195d: POP
0000195e: EQ
0000195f: ISZERO
00001960: PUSH2 0x196c
00001963: JUMPI
00001964: PUSH1 0x01
00001966: SWAP1
00001967: POP
00001968: PUSH2 0x1b26
0000196b: JUMP
0000196c: JUMPDEST
0000196d: PUSH1 0x00
0000196f: PUSH1 0x03
00001971: PUSH1 0x00
00001973: DUP5
00001974: DUP2
00001975: MSTORE
00001976: PUSH1 0x20
00001978: ADD
00001979: SWAP1
0000197a: DUP2
0000197b: MSTORE
0000197c: PUSH1 0x20
0000197e: ADD
0000197f: PUSH1 0x00
00001981: KECCAK256
00001982: SWAP1
00001983: POP
00001984: PUSH1 0x01
00001986: SLOAD
00001987: DUP2
00001988: PUSH1 0x04
0000198a: ADD
0000198b: SLOAD
0000198c: TIMESTAMP
0000198d: SUB
0000198e: GT
0000198f: ISZERO
00001990: PUSH2 0x199d
00001993: JUMPI
00001994: PUSH1 0x00
00001996: SWAP2
00001997: POP
00001998: POP
00001999: PUSH2 0x1b26
0000199c: JUMP
0000199d: JUMPDEST
0000199e: PUSH1 0x00
000019a0: DUP1
000019a1: JUMPDEST
000019a2: DUP3
000019a3: PUSH1 0x00
000019a5: ADD
000019a6: DUP1
000019a7: SLOAD
000019a8: SWAP1
000019a9: POP
000019aa: DUP2
000019ab: LT
000019ac: ISZERO
000019ad: PUSH2 0x1a33
000019b0: JUMPI
000019b1: DUP3
000019b2: PUSH1 0x00
000019b4: ADD
000019b5: DUP2
000019b6: DUP2
000019b7: SLOAD
000019b8: DUP2
000019b9: LT
000019ba: PUSH2 0x19bf
000019bd: JUMPI
000019be: INVALID
000019bf: JUMPDEST
000019c0: SWAP1
000019c1: PUSH1 0x00
000019c3: MSTORE
000019c4: PUSH1 0x20
000019c6: PUSH1 0x00
000019c8: KECCAK256
000019c9: ADD
000019ca: PUSH1 0x00
000019cc: SWAP1
000019cd: SLOAD
000019ce: SWAP1
000019cf: PUSH2 0x0100
000019d2: EXP
000019d3: SWAP1
000019d4: DIV
000019d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019ea: AND
000019eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a00: AND
00001a01: CALLER
00001a02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a17: AND
00001a18: EQ
00001a19: ISZERO
00001a1a: PUSH2 0x1a26
00001a1d: JUMPI
00001a1e: PUSH1 0x01
00001a20: SWAP2
00001a21: POP
00001a22: PUSH2 0x1a33
00001a25: JUMP
00001a26: JUMPDEST
00001a27: DUP1
00001a28: DUP1
00001a29: PUSH1 0x01
00001a2b: ADD
00001a2c: SWAP2
00001a2d: POP
00001a2e: POP
00001a2f: PUSH2 0x19a1
00001a32: JUMP
00001a33: JUMPDEST
00001a34: POP
00001a35: PUSH1 0x00
00001a37: ISZERO
00001a38: ISZERO
00001a39: DUP2
00001a3a: ISZERO
00001a3b: ISZERO
00001a3c: EQ
00001a3d: PUSH2 0x1a91
00001a40: JUMPI
00001a41: PUSH1 0x40
00001a43: MLOAD
00001a44: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001a65: DUP2
00001a66: MSTORE
00001a67: PUSH1 0x04
00001a69: ADD
00001a6a: DUP1
00001a6b: DUP1
00001a6c: PUSH1 0x20
00001a6e: ADD
00001a6f: DUP3
00001a70: DUP2
00001a71: SUB
00001a72: DUP3
00001a73: MSTORE
00001a74: PUSH1 0x31
00001a76: DUP2
00001a77: MSTORE
00001a78: PUSH1 0x20
00001a7a: ADD
00001a7b: DUP1
00001a7c: PUSH2 0x1c2e
00001a7f: PUSH1 0x31
00001a81: SWAP2
00001a82: CODECOPY
00001a83: PUSH1 0x40
00001a85: ADD
00001a86: SWAP2
00001a87: POP
00001a88: POP
00001a89: PUSH1 0x40
00001a8b: MLOAD
00001a8c: DUP1
00001a8d: SWAP2
00001a8e: SUB
00001a8f: SWAP1
00001a90: REVERT
00001a91: JUMPDEST
00001a92: DUP2
00001a93: PUSH1 0x00
00001a95: ADD
00001a96: CALLER
00001a97: SWAP1
00001a98: DUP1
00001a99: PUSH1 0x01
00001a9b: DUP2
00001a9c: SLOAD
00001a9d: ADD
00001a9e: DUP1
00001a9f: DUP3
00001aa0: SSTORE
00001aa1: DUP1
00001aa2: SWAP2
00001aa3: POP
00001aa4: POP
00001aa5: PUSH1 0x01
00001aa7: SWAP1
00001aa8: SUB
00001aa9: SWAP1
00001aaa: PUSH1 0x00
00001aac: MSTORE
00001aad: PUSH1 0x20
00001aaf: PUSH1 0x00
00001ab1: KECCAK256
00001ab2: ADD
00001ab3: PUSH1 0x00
00001ab5: SWAP1
00001ab6: SWAP2
00001ab7: SWAP1
00001ab8: SWAP2
00001ab9: SWAP1
00001aba: SWAP2
00001abb: PUSH2 0x0100
00001abe: EXP
00001abf: DUP2
00001ac0: SLOAD
00001ac1: DUP2
00001ac2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ad7: MUL
00001ad8: NOT
00001ad9: AND
00001ada: SWAP1
00001adb: DUP4
00001adc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001af1: AND
00001af2: MUL
00001af3: OR
00001af4: SWAP1
00001af5: SSTORE
00001af6: POP
00001af7: PUSH1 0x02
00001af9: PUSH1 0x00
00001afb: DUP1
00001afc: SLOAD
00001afd: SWAP1
00001afe: POP
00001aff: DUP2
00001b00: PUSH2 0x1b05
00001b03: JUMPI
00001b04: INVALID
00001b05: JUMPDEST
00001b06: DIV
00001b07: DUP3
00001b08: PUSH1 0x00
00001b0a: ADD
00001b0b: DUP1
00001b0c: SLOAD
00001b0d: SWAP1
00001b0e: POP
00001b0f: GT
00001b10: ISZERO
00001b11: PUSH2 0x1b1f
00001b14: JUMPI
00001b15: PUSH1 0x01
00001b17: SWAP3
00001b18: POP
00001b19: POP
00001b1a: POP
00001b1b: PUSH2 0x1b26
00001b1e: JUMP
00001b1f: JUMPDEST
00001b20: PUSH1 0x02
00001b22: SWAP3
00001b23: POP
00001b24: POP
00001b25: POP
00001b26: JUMPDEST
00001b27: SWAP2
00001b28: SWAP1
00001b29: POP
00001b2a: JUMP
00001b2b: JUMPDEST
00001b2c: PUSH1 0x40
00001b2e: MLOAD
00001b2f: DUP1
00001b30: PUSH1 0xa0
00001b32: ADD
00001b33: PUSH1 0x40
00001b35: MSTORE
00001b36: DUP1
00001b37: PUSH1 0x60
00001b39: DUP2
00001b3a: MSTORE
00001b3b: PUSH1 0x20
00001b3d: ADD
00001b3e: PUSH1 0x00
00001b40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b55: AND
00001b56: DUP2
00001b57: MSTORE
00001b58: PUSH1 0x20
00001b5a: ADD
00001b5b: PUSH1 0x00
00001b5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b72: AND
00001b73: DUP2
00001b74: MSTORE
00001b75: PUSH1 0x20
00001b77: ADD
00001b78: PUSH1 0x00
00001b7a: DUP2
00001b7b: MSTORE
00001b7c: PUSH1 0x20
00001b7e: ADD
00001b7f: PUSH1 0x00
00001b81: DUP2
00001b82: MSTORE
00001b83: POP
00001b84: SWAP1
00001b85: JUMP
00001b86: JUMPDEST
00001b87: DUP3
00001b88: DUP1
00001b89: SLOAD
00001b8a: DUP3
00001b8b: DUP3
00001b8c: SSTORE
00001b8d: SWAP1
00001b8e: PUSH1 0x00
00001b90: MSTORE
00001b91: PUSH1 0x20
00001b93: PUSH1 0x00
00001b95: KECCAK256
00001b96: SWAP1
00001b97: DUP2
00001b98: ADD
00001b99: SWAP3
00001b9a: DUP3
00001b9b: ISZERO
00001b9c: PUSH2 0x1bff
00001b9f: JUMPI
00001ba0: SWAP2
00001ba1: PUSH1 0x20
00001ba3: MUL
00001ba4: DUP3
00001ba5: ADD
00001ba6: JUMPDEST
00001ba7: DUP3
00001ba8: DUP2
00001ba9: GT
00001baa: ISZERO
00001bab: PUSH2 0x1bfe
00001bae: JUMPI
00001baf: DUP3
00001bb0: MLOAD
00001bb1: DUP3
00001bb2: PUSH1 0x00
00001bb4: PUSH2 0x0100
00001bb7: EXP
00001bb8: DUP2
00001bb9: SLOAD
00001bba: DUP2
00001bbb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bd0: MUL
00001bd1: NOT
00001bd2: AND
00001bd3: SWAP1
00001bd4: DUP4
00001bd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bea: AND
00001beb: MUL
00001bec: OR
00001bed: SWAP1
00001bee: SSTORE
00001bef: POP
00001bf0: SWAP2
00001bf1: PUSH1 0x20
00001bf3: ADD
00001bf4: SWAP2
00001bf5: SWAP1
00001bf6: PUSH1 0x01
00001bf8: ADD
00001bf9: SWAP1
00001bfa: PUSH2 0x1ba6
00001bfd: JUMP
00001bfe: JUMPDEST
00001bff: JUMPDEST
00001c00: POP
00001c01: SWAP1
00001c02: POP
00001c03: PUSH2 0x1c0c
00001c06: SWAP2
00001c07: SWAP1
00001c08: PUSH2 0x1c10
00001c0b: JUMP
00001c0c: JUMPDEST
00001c0d: POP
00001c0e: SWAP1
00001c0f: JUMP
00001c10: JUMPDEST
00001c11: JUMPDEST
00001c12: DUP1
00001c13: DUP3
00001c14: GT
00001c15: ISZERO
00001c16: PUSH2 0x1c29
00001c19: JUMPI
00001c1a: PUSH1 0x00
00001c1c: DUP2
00001c1d: PUSH1 0x00
00001c1f: SWAP1
00001c20: SSTORE
00001c21: POP
00001c22: PUSH1 0x01
00001c24: ADD
00001c25: PUSH2 0x1c11
00001c28: JUMP
00001c29: JUMPDEST
00001c2a: POP
00001c2b: SWAP1
00001c2c: JUMP
00001c2d: INVALID
00001c2e: COINBASE
00001c2f: PUSH13 0x72656164792061207369676e65
00001c3d: PUSH19 0x206f66207468697320616374696f6e2c206361
00001c51: PUSH15 0x2774207369676e20616761696e5761
00001c61: PUSH10 0x74656420746f6f206c6f
00001c6c: PUSH15 0x6720746f2075736520746869732074
00001c7c: PUSH10 0x6d656c6f636b4e6f7420
00001c87: PUSH6 0x6e6f75676820
00001c8e: PUSH24 0x61697420666f7220746869732074696d656c6f636ba26469
00001ca7: PUSH17 0x6673582212206d5d8c0974c627528acf94
00001cb9: ORIGIN
00001cba: UNKNOWN(0x2F)
00001cbb: ISZERO
00001cbc: DUP4
00001cbd: DUP9
00001cbe: UNKNOWN(0x2D)
00001cbf: UNKNOWN(0x4D)
00001cc0: DUP7
00001cc1: GASLIMIT
00001cc2: UNKNOWN(0xF8)
00001cc3: UNKNOWN(0xEF)
00001cc4: ADDRESS
00001cc5: ADDMOD
00001cc6: UNKNOWN(0xA8)
00001cc7: UNKNOWN(0xD5)
00001cc8: UNKNOWN(0xBE)
00001cc9: UNKNOWN(0xA8)
00001cca: DUP15
00001ccb: PUSH28

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x8bf7e74d",
            "selector": "0x8bf7e74d",
            "calldata_variants": [
                "0x8bf7e74d",
                "0x8bf7e74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc1fd34b",
            "selector": "0xbc1fd34b",
            "calldata_variants": [
                "0xbc1fd34b",
                "0xbc1fd34b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd8e7d36a",
            "selector": "0xd8e7d36a",
            "calldata_variants": [
                "0xd8e7d36a",
                "0xd8e7d36a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe0d8e525",
            "selector": "0xe0d8e525",
            "calldata_variants": [
                "0xe0d8e525",
                "0xe0d8e5250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9a5b9f8",
            "selector": "0xe9a5b9f8",
            "calldata_variants": [
                "0xe9a5b9f8",
                "0xe9a5b9f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3b1e6f5",
            "selector": "0xf3b1e6f5",
            "calldata_variants": [
                "0xf3b1e6f5",
                "0xf3b1e6f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x03a4d4c8",
            "selector": "0x03a4d4c8",
            "calldata_variants": [
                "0x03a4d4c8",
                "0x03a4d4c80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a615b74",
            "selector": "0x0a615b74",
            "calldata_variants": [
                "0x0a615b74",
                "0x0a615b740000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 2408,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 3097,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5497,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6305,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6657,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7353,
            "type": "tx_origin_used"
        }
    ]
}
medium auth codex Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values 75 no
view
evidence_json
{
    "evidence": "Quorum paths explicitly note that \u201cparameters are valid for the last signer\u201d and then execute using the last call\u2019s arguments without checking stored action data.",
    "locations": [
        "contracts/Contract.sol:217",
        "contracts/Contract.sol:241",
        "contracts/Contract.sol:261"
    ],
    "recommendation": "Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.",
    "exploit_scenario": "With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call\u2019s inputs, C\u2019s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512
call_targets: 0x0629c8153eb19fb19b44dff1804fad66360a5441
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0629c8153eb19fb19b44dff1804fad66360a5441"
    ],
    "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": "0x8bf7e74d",
            "selector": "0x8bf7e74d",
            "calldata_variants": [
                "0x8bf7e74d",
                "0x8bf7e74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc1fd34b",
            "selector": "0xbc1fd34b",
            "calldata_variants": [
                "0xbc1fd34b",
                "0xbc1fd34b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd8e7d36a",
            "selector": "0xd8e7d36a",
            "calldata_variants": [
                "0xd8e7d36a",
                "0xd8e7d36a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe0d8e525",
            "selector": "0xe0d8e525",
            "calldata_variants": [
                "0xe0d8e525",
                "0xe0d8e5250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9a5b9f8",
            "selector": "0xe9a5b9f8",
            "calldata_variants": [
                "0xe9a5b9f8",
                "0xe9a5b9f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3b1e6f5",
            "selector": "0xf3b1e6f5",
            "calldata_variants": [
                "0xf3b1e6f5",
                "0xf3b1e6f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x03a4d4c8",
            "selector": "0x03a4d4c8",
            "calldata_variants": [
                "0x03a4d4c8",
                "0x03a4d4c80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a615b74",
            "selector": "0x0a615b74",
            "calldata_variants": [
                "0x0a615b74",
                "0x0a615b740000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1176,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1460,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1714,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [
        {
            "pc": 2408,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 3097,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5497,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6305,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6657,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7353,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 6
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512
call_targets: 0x0629c8153eb19fb19b44dff1804fad66360a5441
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0629c8153eb19fb19b44dff1804fad66360a5441"
    ],
    "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": "0x8bf7e74d",
            "selector": "0x8bf7e74d",
            "calldata_variants": [
                "0x8bf7e74d",
                "0x8bf7e74d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc1fd34b",
            "selector": "0xbc1fd34b",
            "calldata_variants": [
                "0xbc1fd34b",
                "0xbc1fd34b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd8e7d36a",
            "selector": "0xd8e7d36a",
            "calldata_variants": [
                "0xd8e7d36a",
                "0xd8e7d36a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe0d8e525",
            "selector": "0xe0d8e525",
            "calldata_variants": [
                "0xe0d8e525",
                "0xe0d8e5250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9a5b9f8",
            "selector": "0xe9a5b9f8",
            "calldata_variants": [
                "0xe9a5b9f8",
                "0xe9a5b9f80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3b1e6f5",
            "selector": "0xf3b1e6f5",
            "calldata_variants": [
                "0xf3b1e6f5",
                "0xf3b1e6f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x03a4d4c8",
            "selector": "0x03a4d4c8",
            "calldata_variants": [
                "0x03a4d4c8",
                "0x03a4d4c80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a615b74",
            "selector": "0x0a615b74",
            "calldata_variants": [
                "0x0a615b74",
                "0x0a615b740000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1176,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1460,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1714,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": [
        {
            "pc": 2408,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 3097,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5497,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6305,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6657,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7353,
            "type": "tx_origin_used"
        }
    ]
}
low other codex ERC20 transfer return values are unchecked 65 no
view
evidence_json
{
    "evidence": "Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.",
    "locations": [
        "contracts/Contract.sol:164",
        "contracts/Contract.sol:234"
    ],
    "recommendation": "Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.",
    "exploit_scenario": "If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not."
}