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

Analysis Run

bd446f50-167b-4602-9a1e-d7999d3ffe37

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 2:57 AM
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
Untrusted CALL target/value reachable
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
30385 report.consolidate complete 1 / 1 3 months ago
74494 artifact.fetch complete 1 / 3 1 week ago
74495 tool.cast_disasm complete 1 / 3 1 week ago
74496 analysis.bundle complete 1 / 3 1 week ago
74497 capability.graph complete 1 / 3 1 week ago
74498 detector.run complete 1 / 3 1 week ago
74499 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Found 1 issue: unchecked ERC20 transfer return values in Merkle claim/withdraw can silently fail and still mark claims.
View stderr
[codex:793112] OpenAI Codex v0.77.0 (research preview)
[codex:793112] --------
[codex:793112] workdir: /tmp/codex-multi-6oweco0i
[codex:793112] model: gpt-5.2-codex
[codex:793112] provider: openai
[codex:793112] approval: never
[codex:793112] sandbox: read-only
[codex:793112] reasoning effort: xhigh
[codex:793112] reasoning summaries: auto
[codex:793112] session id: 019b6809-4e10-75a3-b1d9-06e90f5c77cb
[codex:793112] --------
[codex:793112] user
[codex:793112] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:793112] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:793112] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:793112] 
[codex:793112] Scope rules:
[codex:793112] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:793112] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:793112] 
[codex:793112] Output MUST be valid JSON matching the provided schema.
[codex:793112] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:793112] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:793112] 
[codex:793112] Output constraints (IMPORTANT):
[codex:793112] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:793112] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:793112] mcp startup: no servers
[codex:793112] 
[codex:793112] thinking
[codex:793112] **Preparing to read instructions and audit bundle**
[codex:793112] exec
[codex:793112] /bin/bash -lc ls in /tmp/codex-multi-6oweco0i succeeded in 5ms:
[codex:793112] AUDIT_BUNDLE.txt
[codex:793112] codex-output-schema.json
[codex:793112] contracts
[codex:793112] exec
[codex:793112] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6oweco0i succeeded in 5ms:
[codex:793112] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:793112] 
[codex:793112] ================================================================================
[codex:793112] FILE: contracts/Contract.sol
[codex:793112] ================================================================================
[codex:793112] // SPDX-License-Identifier: MIT
[codex:793112] pragma solidity 0.8.17;
[codex:793112] 
[codex:793112] /**
[codex:793112]  * @dev Provides information about the current execution context, including the
[codex:793112]  * sender of the transaction and its data. While these are generally available
[codex:793112]  * via msg.sender and msg.data, they should not be accessed in such a direct
[codex:793112]  * manner, since when dealing with meta-transactions the account sending and
[codex:793112]  * paying for execution may not be the actual sender (as far as an application
[codex:793112]  * is concerned).
[codex:793112]  *
[codex:793112]  * This contract is only required for intermediate, library-like contracts.
[codex:793112]  */
[codex:793112] abstract contract Context {
[codex:793112]     function _msgSender() internal view virtual returns (address) {
[codex:793112] 
[codex:793112] thinking
[codex:793112] **Reviewing token transfer checks and reentrancy concerns**
[codex:793112] 
[codex:793112] I'm examining Contract.sol focusing on its Merkle airdrop logic, looking for misuse rather than bugs in third-party code. The main issue seems to be unchecked ERC20 transfer return values that may cause silent failures, a medium-severity concern. I’m also verifying state updates before external calls to confirm reentrancy safety and considering access control nuances, while planning to correlate token.transfer occurrences with line numbers for detailed evidence.
[codex:793112] exec
[codex:793112] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-6oweco0i succeeded in 6ms:
[codex:793112]      1	// SPDX-License-Identifier: MIT
[codex:793112]      2	pragma solidity 0.8.17;
[codex:793112]      3	
[codex:793112]      4	/**
[codex:793112]      5	 * @dev Provides information about the current execution context, including the
[codex:793112]      6	 * sender of the transaction and its data. While these are generally available
[codex:793112]      7	 * via msg.sender and msg.data, they should not be accessed in such a direct
[codex:793112]      8	 * manner, since when dealing with meta-transactions the account sending and
[codex:793112]      9	 * paying for execution may not be the actual sender (as far as an application
[codex:793112]     10	 * is concerned).
[codex:793112]     11	 *
[codex:793112]     12	 * This contract is only required for intermediate, library-like contracts.
[codex:793112]     13	 */
[codex:793112]     14	abstract contract Context {
[codex:793112]     15	    function _msgSender() internal view virtual returns (address) {
[codex:793112]     16	        return msg.sender;
[codex:793112]     17	    }
[codex:793112]     18	
[codex:793112]     19	    function _msgData() internal view virtual returns (bytes calldata) {
[codex:793112]     20	        return msg.data;
[codex:793112] 
[codex:793112] thinking
[codex:793112] **Summarizing unchecked ERC20 transfer issue**
[codex:793112] 
[codex:793112] I’m building a JSON report outlining a medium-severity issue where unchecked ERC20 transfer return values can cause claims to be marked as paid even if the transfer fails. This can lead to silent claim failures and denial of fund retrieval, especially with non-standard tokens. I’m including detailed exploit scenarios, recommendations to use SafeERC20 methods or return checks, code evidence lines, and categorizing the problem as “other.” I’ll ensure strict JSON formatting with required fields and no extra text.
[codex:793112] codex
[codex:793112] {"no_findings":false,"summary":"Found 1 issue: unchecked ERC20 transfer return values in Merkle claim/withdraw can silently fail and still mark claims.","findings":[{"severity":"medium","category":"other","title":"Unchecked ERC20 transfer return values can permanently mark claims as paid","exploit_scenario":"If the ERC20 token returns false on transfer (e.g., non-standard tokens or insufficient balance), `claim` still marks `_claimed[leaf]=true` and emits `Claim` without reverting. The claimant then cannot re-claim, effectively losing the payout. Similarly, `withdraw` can silently fail and leave funds stranded while the owner believes the withdrawal succeeded.","recommendation":"Use `SafeERC20.safeTransfer`/`safeTransferFrom` or explicitly `require(token.transfer(...), \"TRANSFER_FAILED\")` for both claim and withdraw paths.","evidence":"`token.transfer(account, amount);` and `token.transfer(msg.sender, token.balanceOf(address(this)));` are unchecked.","locations":["contracts/Contract.sol:451","contracts/Contract.sol:457"]}]}
[codex:793112] tokens used
[codex:793112] 21,008
[codex:793112] {"no_findings":false,"summary":"Found 1 issue: unchecked ERC20 transfer return values in Merkle claim/withdraw can silently fail and still mark claims.","findings":[{"severity":"medium","category":"other","title":"Unchecked ERC20 transfer return values can permanently mark claims as paid","exploit_scenario":"If the ERC20 token returns false on transfer (e.g., non-standard tokens or insufficient balance), `claim` still marks `_claimed[leaf]=true` and emits `Claim` without reverting. The claimant then cannot re-claim, effectively losing the payout. Similarly, `withdraw` can silently fail and leave funds stranded while the owner believes the withdrawal succeeded.","recommendation":"Use `SafeERC20.safeTransfer`/`safeTransferFrom` or explicitly `require(token.transfer(...), \"TRANSFER_FAILED\")` for both claim and withdraw paths.","evidence":"`token.transfer(account, amount);` and `token.transfer(msg.sender, token.balanceOf(address(this)));` are unchecked.","locations":["contracts/Contract.sol:451","contracts/Contract.sol:457"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T02:57:31.244553+00:00",
        "returncode": 0
    },
    "summary": "Found 1 issue: unchecked ERC20 transfer return values in Merkle claim/withdraw can silently fail and still mark claims.",
    "raw_final": {
        "summary": "Found 1 issue: unchecked ERC20 transfer return values in Merkle claim/withdraw can silently fail and still mark claims.",
        "findings": [
            {
                "title": "Unchecked ERC20 transfer return values can permanently mark claims as paid",
                "category": "other",
                "evidence": "`token.transfer(account, amount);` and `token.transfer(msg.sender, token.balanceOf(address(this)));` are unchecked.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:451",
                    "contracts/Contract.sol:457"
                ],
                "recommendation": "Use `SafeERC20.safeTransfer`/`safeTransferFrom` or explicitly `require(token.transfer(...), \"TRANSFER_FAILED\")` for both claim and withdraw paths.",
                "exploit_scenario": "If the ERC20 token returns false on transfer (e.g., non-standard tokens or insufficient balance), `claim` still marks `_claimed[leaf]=true` and emits `Claim` without reverting. The claimant then cannot re-claim, effectively losing the payout. Similarly, `withdraw` can silently fail and leave funds stranded while the owner believes the withdrawal succeeded."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
0
Total opcodes
2421
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x0093
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x8da5cb5b
00000026: GT
00000027: PUSH2 0x0066
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0x8da5cb5b
00000031: EQ
00000032: PUSH2 0x00f8
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xbfa0b133
0000003c: EQ
0000003d: PUSH2 0x0116
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xebf0c717
00000047: EQ
00000048: PUSH2 0x0134
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xf2fde38b
00000052: EQ
00000053: PUSH2 0x0152
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xfc0c546a
0000005d: EQ
0000005e: PUSH2 0x016e
00000061: JUMPI
00000062: PUSH2 0x0093
00000065: JUMP
00000066: JUMPDEST
00000067: DUP1
00000068: PUSH4 0x3ccfd60b
0000006d: EQ
0000006e: PUSH2 0x0098
00000071: JUMPI
00000072: DUP1
00000073: PUSH4 0x3d13f874
00000078: EQ
00000079: PUSH2 0x00a2
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0x4dd6c8de
00000083: EQ
00000084: PUSH2 0x00be
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0x715018a6
0000008e: EQ
0000008f: PUSH2 0x00ee
00000092: JUMPI
00000093: JUMPDEST
00000094: PUSH1 0x00
00000096: DUP1
00000097: REVERT
00000098: JUMPDEST
00000099: PUSH2 0x00a0
0000009c: PUSH2 0x018c
0000009f: JUMP
000000a0: JUMPDEST
000000a1: STOP
000000a2: JUMPDEST
000000a3: PUSH2 0x00bc
000000a6: PUSH1 0x04
000000a8: DUP1
000000a9: CALLDATASIZE
000000aa: SUB
000000ab: DUP2
000000ac: ADD
000000ad: SWAP1
000000ae: PUSH2 0x00b7
000000b1: SWAP2
000000b2: SWAP1
000000b3: PUSH2 0x0a7b
000000b6: JUMP
000000b7: JUMPDEST
000000b8: PUSH2 0x02ce
000000bb: JUMP
000000bc: JUMPDEST
000000bd: STOP
000000be: JUMPDEST
000000bf: PUSH2 0x00d8
000000c2: PUSH1 0x04
000000c4: DUP1
000000c5: CALLDATASIZE
000000c6: SUB
000000c7: DUP2
000000c8: ADD
000000c9: SWAP1
000000ca: PUSH2 0x00d3
000000cd: SWAP2
000000ce: SWAP1
000000cf: PUSH2 0x0aef
000000d2: JUMP
000000d3: JUMPDEST
000000d4: PUSH2 0x05c5
000000d7: JUMP
000000d8: JUMPDEST
000000d9: PUSH1 0x40
000000db: MLOAD
000000dc: PUSH2 0x00e5
000000df: SWAP2
000000e0: SWAP1
000000e1: PUSH2 0x0b4a
000000e4: JUMP
000000e5: JUMPDEST
000000e6: PUSH1 0x40
000000e8: MLOAD
000000e9: DUP1
000000ea: SWAP2
000000eb: SUB
000000ec: SWAP1
000000ed: RETURN
000000ee: JUMPDEST
000000ef: PUSH2 0x00f6
000000f2: PUSH2 0x05fe
000000f5: JUMP
000000f6: JUMPDEST
000000f7: STOP
000000f8: JUMPDEST
000000f9: PUSH2 0x0100
000000fc: PUSH2 0x0612
000000ff: JUMP
00000100: JUMPDEST
00000101: PUSH1 0x40
00000103: MLOAD
00000104: PUSH2 0x010d
00000107: SWAP2
00000108: SWAP1
00000109: PUSH2 0x0b74
0000010c: JUMP
0000010d: JUMPDEST
0000010e: PUSH1 0x40
00000110: MLOAD
00000111: DUP1
00000112: SWAP2
00000113: SUB
00000114: SWAP1
00000115: RETURN
00000116: JUMPDEST
00000117: PUSH2 0x011e
0000011a: PUSH2 0x063b
0000011d: JUMP
0000011e: JUMPDEST
0000011f: PUSH1 0x40
00000121: MLOAD
00000122: PUSH2 0x012b
00000125: SWAP2
00000126: SWAP1
00000127: PUSH2 0x0b9e
0000012a: JUMP
0000012b: JUMPDEST
0000012c: PUSH1 0x40
0000012e: MLOAD
0000012f: DUP1
00000130: SWAP2
00000131: SUB
00000132: SWAP1
00000133: RETURN
00000134: JUMPDEST
00000135: PUSH2 0x013c
00000138: PUSH2 0x065f
0000013b: JUMP
0000013c: JUMPDEST
0000013d: PUSH1 0x40
0000013f: MLOAD
00000140: PUSH2 0x0149
00000143: SWAP2
00000144: SWAP1
00000145: PUSH2 0x0bd2
00000148: JUMP
00000149: JUMPDEST
0000014a: PUSH1 0x40
0000014c: MLOAD
0000014d: DUP1
0000014e: SWAP2
0000014f: SUB
00000150: SWAP1
00000151: RETURN
00000152: JUMPDEST
00000153: PUSH2 0x016c
00000156: PUSH1 0x04
00000158: DUP1
00000159: CALLDATASIZE
0000015a: SUB
0000015b: DUP2
0000015c: ADD
0000015d: SWAP1
0000015e: PUSH2 0x0167
00000161: SWAP2
00000162: SWAP1
00000163: PUSH2 0x0bed
00000166: JUMP
00000167: JUMPDEST
00000168: PUSH2 0x0683
0000016b: JUMP
0000016c: JUMPDEST
0000016d: STOP
0000016e: JUMPDEST
0000016f: PUSH2 0x0176
00000172: PUSH2 0x0706
00000175: JUMP
00000176: JUMPDEST
00000177: PUSH1 0x40
00000179: MLOAD
0000017a: PUSH2 0x0183
0000017d: SWAP2
0000017e: SWAP1
0000017f: PUSH2 0x0c79
00000182: JUMP
00000183: JUMPDEST
00000184: PUSH1 0x40
00000186: MLOAD
00000187: DUP1
00000188: SWAP2
00000189: SUB
0000018a: SWAP1
0000018b: RETURN
0000018c: JUMPDEST
0000018d: PUSH2 0x0194
00000190: PUSH2 0x072a
00000193: JUMP
00000194: JUMPDEST
00000195: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000001b6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001cb: AND
000001cc: PUSH4 0xa9059cbb
000001d1: CALLER
000001d2: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000001f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000208: AND
00000209: PUSH4 0x70a08231
0000020e: ADDRESS
0000020f: PUSH1 0x40
00000211: MLOAD
00000212: DUP3
00000213: PUSH4 0xffffffff
00000218: AND
00000219: PUSH1 0xe0
0000021b: SHL
0000021c: DUP2
0000021d: MSTORE
0000021e: PUSH1 0x04
00000220: ADD
00000221: PUSH2 0x022a
00000224: SWAP2
00000225: SWAP1
00000226: PUSH2 0x0b74
00000229: JUMP
0000022a: JUMPDEST
0000022b: PUSH1 0x20
0000022d: PUSH1 0x40
0000022f: MLOAD
00000230: DUP1
00000231: DUP4
00000232: SUB
00000233: DUP2
00000234: DUP7
00000235: GAS
00000236: STATICCALL
00000237: ISZERO
00000238: DUP1
00000239: ISZERO
0000023a: PUSH2 0x0247
0000023d: JUMPI
0000023e: RETURNDATASIZE
0000023f: PUSH1 0x00
00000241: DUP1
00000242: RETURNDATACOPY
00000243: RETURNDATASIZE
00000244: PUSH1 0x00
00000246: REVERT
00000247: JUMPDEST
00000248: POP
00000249: POP
0000024a: POP
0000024b: POP
0000024c: PUSH1 0x40
0000024e: MLOAD
0000024f: RETURNDATASIZE
00000250: PUSH1 0x1f
00000252: NOT
00000253: PUSH1 0x1f
00000255: DUP3
00000256: ADD
00000257: AND
00000258: DUP3
00000259: ADD
0000025a: DUP1
0000025b: PUSH1 0x40
0000025d: MSTORE
0000025e: POP
0000025f: DUP2
00000260: ADD
00000261: SWAP1
00000262: PUSH2 0x026b
00000265: SWAP2
00000266: SWAP1
00000267: PUSH2 0x0ca9
0000026a: JUMP
0000026b: JUMPDEST
0000026c: PUSH1 0x40
0000026e: MLOAD
0000026f: DUP4
00000270: PUSH4 0xffffffff
00000275: AND
00000276: PUSH1 0xe0
00000278: SHL
00000279: DUP2
0000027a: MSTORE
0000027b: PUSH1 0x04
0000027d: ADD
0000027e: PUSH2 0x0288
00000281: SWAP3
00000282: SWAP2
00000283: SWAP1
00000284: PUSH2 0x0cd6
00000287: JUMP
00000288: JUMPDEST
00000289: PUSH1 0x20
0000028b: PUSH1 0x40
0000028d: MLOAD
0000028e: DUP1
0000028f: DUP4
00000290: SUB
00000291: DUP2
00000292: PUSH1 0x00
00000294: DUP8
00000295: GAS
00000296: CALL
00000297: ISZERO
00000298: DUP1
00000299: ISZERO
0000029a: PUSH2 0x02a7
0000029d: JUMPI
0000029e: RETURNDATASIZE
0000029f: PUSH1 0x00
000002a1: DUP1
000002a2: RETURNDATACOPY
000002a3: RETURNDATASIZE
000002a4: PUSH1 0x00
000002a6: REVERT
000002a7: JUMPDEST
000002a8: POP
000002a9: POP
000002aa: POP
000002ab: POP
000002ac: PUSH1 0x40
000002ae: MLOAD
000002af: RETURNDATASIZE
000002b0: PUSH1 0x1f
000002b2: NOT
000002b3: PUSH1 0x1f
000002b5: DUP3
000002b6: ADD
000002b7: AND
000002b8: DUP3
000002b9: ADD
000002ba: DUP1
000002bb: PUSH1 0x40
000002bd: MSTORE
000002be: POP
000002bf: DUP2
000002c0: ADD
000002c1: SWAP1
000002c2: PUSH2 0x02cb
000002c5: SWAP2
000002c6: SWAP1
000002c7: PUSH2 0x0d2b
000002ca: JUMP
000002cb: JUMPDEST
000002cc: POP
000002cd: JUMP
000002ce: JUMPDEST
000002cf: PUSH1 0x00
000002d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002e6: AND
000002e7: DUP5
000002e8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002fd: AND
000002fe: SUB
000002ff: PUSH2 0x033d
00000302: JUMPI
00000303: PUSH1 0x40
00000305: MLOAD
00000306: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000327: DUP2
00000328: MSTORE
00000329: PUSH1 0x04
0000032b: ADD
0000032c: PUSH2 0x0334
0000032f: SWAP1
00000330: PUSH2 0x0db5
00000333: JUMP
00000334: JUMPDEST
00000335: PUSH1 0x40
00000337: MLOAD
00000338: DUP1
00000339: SWAP2
0000033a: SUB
0000033b: SWAP1
0000033c: REVERT
0000033d: JUMPDEST
0000033e: PUSH1 0x00
00000340: DUP4
00000341: SUB
00000342: PUSH2 0x0380
00000345: JUMPI
00000346: PUSH1 0x40
00000348: MLOAD
00000349: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000036a: DUP2
0000036b: MSTORE
0000036c: PUSH1 0x04
0000036e: ADD
0000036f: PUSH2 0x0377
00000372: SWAP1
00000373: PUSH2 0x0e21
00000376: JUMP
00000377: JUMPDEST
00000378: PUSH1 0x40
0000037a: MLOAD
0000037b: DUP1
0000037c: SWAP2
0000037d: SUB
0000037e: SWAP1
0000037f: REVERT
00000380: JUMPDEST
00000381: PUSH1 0x00
00000383: PUSH2 0x038c
00000386: DUP6
00000387: DUP6
00000388: PUSH2 0x07a8
0000038b: JUMP
0000038c: JUMPDEST
0000038d: SWAP1
0000038e: POP
0000038f: PUSH1 0x01
00000391: PUSH1 0x00
00000393: DUP3
00000394: DUP2
00000395: MSTORE
00000396: PUSH1 0x20
00000398: ADD
00000399: SWAP1
0000039a: DUP2
0000039b: MSTORE
0000039c: PUSH1 0x20
0000039e: ADD
0000039f: PUSH1 0x00
000003a1: KECCAK256
000003a2: PUSH1 0x00
000003a4: SWAP1
000003a5: SLOAD
000003a6: SWAP1
000003a7: PUSH2 0x0100
000003aa: EXP
000003ab: SWAP1
000003ac: DIV
000003ad: PUSH1 0xff
000003af: AND
000003b0: ISZERO
000003b1: PUSH2 0x03ef
000003b4: JUMPI
000003b5: PUSH1 0x40
000003b7: MLOAD
000003b8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000003d9: DUP2
000003da: MSTORE
000003db: PUSH1 0x04
000003dd: ADD
000003de: PUSH2 0x03e6
000003e1: SWAP1
000003e2: PUSH2 0x0e8d
000003e5: JUMP
000003e6: JUMPDEST
000003e7: PUSH1 0x40
000003e9: MLOAD
000003ea: DUP1
000003eb: SWAP2
000003ec: SUB
000003ed: SWAP1
000003ee: REVERT
000003ef: JUMPDEST
000003f0: PUSH2 0x0465
000003f3: PUSH32 0x72ce2908b775898d73379c033c97c33cf998153bd3e7b7593d7148a571ee1f2c
00000414: DUP3
00000415: DUP6
00000416: DUP6
00000417: DUP1
00000418: DUP1
00000419: PUSH1 0x20
0000041b: MUL
0000041c: PUSH1 0x20
0000041e: ADD
0000041f: PUSH1 0x40
00000421: MLOAD
00000422: SWAP1
00000423: DUP2
00000424: ADD
00000425: PUSH1 0x40
00000427: MSTORE
00000428: DUP1
00000429: SWAP4
0000042a: SWAP3
0000042b: SWAP2
0000042c: SWAP1
0000042d: DUP2
0000042e: DUP2
0000042f: MSTORE
00000430: PUSH1 0x20
00000432: ADD
00000433: DUP4
00000434: DUP4
00000435: PUSH1 0x20
00000437: MUL
00000438: DUP1
00000439: DUP3
0000043a: DUP5
0000043b: CALLDATACOPY
0000043c: PUSH1 0x00
0000043e: DUP2
0000043f: DUP5
00000440: ADD
00000441: MSTORE
00000442: PUSH1 0x1f
00000444: NOT
00000445: PUSH1 0x1f
00000447: DUP3
00000448: ADD
00000449: AND
0000044a: SWAP1
0000044b: POP
0000044c: DUP1
0000044d: DUP4
0000044e: ADD
0000044f: SWAP3
00000450: POP
00000451: POP
00000452: POP
00000453: POP
00000454: POP
00000455: POP
00000456: POP
00000457: PUSH2 0x07fd
0000045a: SWAP1
0000045b: SWAP3
0000045c: SWAP2
0000045d: SWAP1
0000045e: PUSH4 0xffffffff
00000463: AND
00000464: JUMP
00000465: JUMPDEST
00000466: PUSH2 0x04a4
00000469: JUMPI
0000046a: PUSH1 0x40
0000046c: MLOAD
0000046d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000048e: DUP2
0000048f: MSTORE
00000490: PUSH1 0x04
00000492: ADD
00000493: PUSH2 0x049b
00000496: SWAP1
00000497: PUSH2 0x0ef9
0000049a: JUMP
0000049b: JUMPDEST
0000049c: PUSH1 0x40
0000049e: MLOAD
0000049f: DUP1
000004a0: SWAP2
000004a1: SUB
000004a2: SWAP1
000004a3: REVERT
000004a4: JUMPDEST
000004a5: PUSH1 0x01
000004a7: DUP1
000004a8: PUSH1 0x00
000004aa: DUP4
000004ab: DUP2
000004ac: MSTORE
000004ad: PUSH1 0x20
000004af: ADD
000004b0: SWAP1
000004b1: DUP2
000004b2: MSTORE
000004b3: PUSH1 0x20
000004b5: ADD
000004b6: PUSH1 0x00
000004b8: KECCAK256
000004b9: PUSH1 0x00
000004bb: PUSH2 0x0100
000004be: EXP
000004bf: DUP2
000004c0: SLOAD
000004c1: DUP2
000004c2: PUSH1 0xff
000004c4: MUL
000004c5: NOT
000004c6: AND
000004c7: SWAP1
000004c8: DUP4
000004c9: ISZERO
000004ca: ISZERO
000004cb: MUL
000004cc: OR
000004cd: SWAP1
000004ce: SSTORE
000004cf: POP
000004d0: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000004f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000506: AND
00000507: PUSH4 0xa9059cbb
0000050c: DUP7
0000050d: DUP7
0000050e: PUSH1 0x40
00000510: MLOAD
00000511: DUP4
00000512: PUSH4 0xffffffff
00000517: AND
00000518: PUSH1 0xe0
0000051a: SHL
0000051b: DUP2
0000051c: MSTORE
0000051d: PUSH1 0x04
0000051f: ADD
00000520: PUSH2 0x052a
00000523: SWAP3
00000524: SWAP2
00000525: SWAP1
00000526: PUSH2 0x0cd6
00000529: JUMP
0000052a: JUMPDEST
0000052b: PUSH1 0x20
0000052d: PUSH1 0x40
0000052f: MLOAD
00000530: DUP1
00000531: DUP4
00000532: SUB
00000533: DUP2
00000534: PUSH1 0x00
00000536: DUP8
00000537: GAS
00000538: CALL
00000539: ISZERO
0000053a: DUP1
0000053b: ISZERO
0000053c: PUSH2 0x0549
0000053f: JUMPI
00000540: RETURNDATASIZE
00000541: PUSH1 0x00
00000543: DUP1
00000544: RETURNDATACOPY
00000545: RETURNDATASIZE
00000546: PUSH1 0x00
00000548: REVERT
00000549: JUMPDEST
0000054a: POP
0000054b: POP
0000054c: POP
0000054d: POP
0000054e: PUSH1 0x40
00000550: MLOAD
00000551: RETURNDATASIZE
00000552: PUSH1 0x1f
00000554: NOT
00000555: PUSH1 0x1f
00000557: DUP3
00000558: ADD
00000559: AND
0000055a: DUP3
0000055b: ADD
0000055c: DUP1
0000055d: PUSH1 0x40
0000055f: MSTORE
00000560: POP
00000561: DUP2
00000562: ADD
00000563: SWAP1
00000564: PUSH2 0x056d
00000567: SWAP2
00000568: SWAP1
00000569: PUSH2 0x0d2b
0000056c: JUMP
0000056d: JUMPDEST
0000056e: POP
0000056f: DUP5
00000570: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000585: AND
00000586: PUSH32 0x33e1e4350f7b57099d5489c172fc55e9e32d4d3906a6e36710fae5ed9f5eef0f
000005a7: DUP3
000005a8: DUP7
000005a9: PUSH1 0x40
000005ab: MLOAD
000005ac: PUSH2 0x05b6
000005af: SWAP3
000005b0: SWAP2
000005b1: SWAP1
000005b2: PUSH2 0x0f19
000005b5: JUMP
000005b6: JUMPDEST
000005b7: PUSH1 0x40
000005b9: MLOAD
000005ba: DUP1
000005bb: SWAP2
000005bc: SUB
000005bd: SWAP1
000005be: LOG2
000005bf: POP
000005c0: POP
000005c1: POP
000005c2: POP
000005c3: POP
000005c4: JUMP
000005c5: JUMPDEST
000005c6: PUSH1 0x00
000005c8: DUP1
000005c9: PUSH2 0x05d2
000005cc: DUP5
000005cd: DUP5
000005ce: PUSH2 0x07a8
000005d1: JUMP
000005d2: JUMPDEST
000005d3: SWAP1
000005d4: POP
000005d5: PUSH1 0x01
000005d7: PUSH1 0x00
000005d9: DUP3
000005da: DUP2
000005db: MSTORE
000005dc: PUSH1 0x20
000005de: ADD
000005df: SWAP1
000005e0: DUP2
000005e1: MSTORE
000005e2: PUSH1 0x20
000005e4: ADD
000005e5: PUSH1 0x00
000005e7: KECCAK256
000005e8: PUSH1 0x00
000005ea: SWAP1
000005eb: SLOAD
000005ec: SWAP1
000005ed: PUSH2 0x0100
000005f0: EXP
000005f1: SWAP1
000005f2: DIV
000005f3: PUSH1 0xff
000005f5: AND
000005f6: SWAP2
000005f7: POP
000005f8: POP
000005f9: SWAP3
000005fa: SWAP2
000005fb: POP
000005fc: POP
000005fd: JUMP
000005fe: JUMPDEST
000005ff: PUSH2 0x0606
00000602: PUSH2 0x072a
00000605: JUMP
00000606: JUMPDEST
00000607: PUSH2 0x0610
0000060a: PUSH1 0x00
0000060c: PUSH2 0x0814
0000060f: JUMP
00000610: JUMPDEST
00000611: JUMP
00000612: JUMPDEST
00000613: PUSH1 0x00
00000615: DUP1
00000616: PUSH1 0x00
00000618: SWAP1
00000619: SLOAD
0000061a: SWAP1
0000061b: PUSH2 0x0100
0000061e: EXP
0000061f: SWAP1
00000620: DIV
00000621: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000636: AND
00000637: SWAP1
00000638: POP
00000639: SWAP1
0000063a: JUMP
0000063b: JUMPDEST
0000063c: PUSH32 0x00000000000000000000000000000000000000000000000000000000075bcd15
0000065d: DUP2
0000065e: JUMP
0000065f: JUMPDEST
00000660: PUSH32 0x72ce2908b775898d73379c033c97c33cf998153bd3e7b7593d7148a571ee1f2c
00000681: DUP2
00000682: JUMP
00000683: JUMPDEST
00000684: PUSH2 0x068b
00000687: PUSH2 0x072a
0000068a: JUMP
0000068b: JUMPDEST
0000068c: PUSH1 0x00
0000068e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006a3: AND
000006a4: DUP2
000006a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006ba: AND
000006bb: SUB
000006bc: PUSH2 0x06fa
000006bf: JUMPI
000006c0: PUSH1 0x40
000006c2: MLOAD
000006c3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006e4: DUP2
000006e5: MSTORE
000006e6: PUSH1 0x04
000006e8: ADD
000006e9: PUSH2 0x06f1
000006ec: SWAP1
000006ed: PUSH2 0x0fb4
000006f0: JUMP
000006f1: JUMPDEST
000006f2: PUSH1 0x40
000006f4: MLOAD
000006f5: DUP1
000006f6: SWAP2
000006f7: SUB
000006f8: SWAP1
000006f9: REVERT
000006fa: JUMPDEST
000006fb: PUSH2 0x0703
000006fe: DUP2
000006ff: PUSH2 0x0814
00000702: JUMP
00000703: JUMPDEST
00000704: POP
00000705: JUMP
00000706: JUMPDEST
00000707: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000728: DUP2
00000729: JUMP
0000072a: JUMPDEST
0000072b: PUSH2 0x0732
0000072e: PUSH2 0x08d8
00000731: JUMP
00000732: JUMPDEST
00000733: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000748: AND
00000749: PUSH2 0x0750
0000074c: PUSH2 0x0612
0000074f: JUMP
00000750: JUMPDEST
00000751: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000766: AND
00000767: EQ
00000768: PUSH2 0x07a6
0000076b: JUMPI
0000076c: PUSH1 0x40
0000076e: MLOAD
0000076f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000790: DUP2
00000791: MSTORE
00000792: PUSH1 0x04
00000794: ADD
00000795: PUSH2 0x079d
00000798: SWAP1
00000799: PUSH2 0x1020
0000079c: JUMP
0000079d: JUMPDEST
0000079e: PUSH1 0x40
000007a0: MLOAD
000007a1: DUP1
000007a2: SWAP2
000007a3: SUB
000007a4: SWAP1
000007a5: REVERT
000007a6: JUMPDEST
000007a7: JUMP
000007a8: JUMPDEST
000007a9: PUSH1 0x00
000007ab: DUP3
000007ac: DUP3
000007ad: PUSH32 0x00000000000000000000000000000000000000000000000000000000075bcd15
000007ce: PUSH1 0x40
000007d0: MLOAD
000007d1: PUSH1 0x20
000007d3: ADD
000007d4: PUSH2 0x07df
000007d7: SWAP4
000007d8: SWAP3
000007d9: SWAP2
000007da: SWAP1
000007db: PUSH2 0x10a9
000007de: JUMP
000007df: JUMPDEST
000007e0: PUSH1 0x40
000007e2: MLOAD
000007e3: PUSH1 0x20
000007e5: DUP2
000007e6: DUP4
000007e7: SUB
000007e8: SUB
000007e9: DUP2
000007ea: MSTORE
000007eb: SWAP1
000007ec: PUSH1 0x40
000007ee: MSTORE
000007ef: DUP1
000007f0: MLOAD
000007f1: SWAP1
000007f2: PUSH1 0x20
000007f4: ADD
000007f5: KECCAK256
000007f6: SWAP1
000007f7: POP
000007f8: SWAP3
000007f9: SWAP2
000007fa: POP
000007fb: POP
000007fc: JUMP
000007fd: JUMPDEST
000007fe: PUSH1 0x00
00000800: DUP3
00000801: PUSH2 0x080a
00000804: DUP6
00000805: DUP5
00000806: PUSH2 0x08e0
00000809: JUMP
0000080a: JUMPDEST
0000080b: EQ
0000080c: SWAP1
0000080d: POP
0000080e: SWAP4
0000080f: SWAP3
00000810: POP
00000811: POP
00000812: POP
00000813: JUMP
00000814: JUMPDEST
00000815: PUSH1 0x00
00000817: DUP1
00000818: PUSH1 0x00
0000081a: SWAP1
0000081b: SLOAD
0000081c: SWAP1
0000081d: PUSH2 0x0100
00000820: EXP
00000821: SWAP1
00000822: DIV
00000823: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000838: AND
00000839: SWAP1
0000083a: POP
0000083b: DUP2
0000083c: PUSH1 0x00
0000083e: DUP1
0000083f: PUSH2 0x0100
00000842: EXP
00000843: DUP2
00000844: SLOAD
00000845: DUP2
00000846: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000085b: MUL
0000085c: NOT
0000085d: AND
0000085e: SWAP1
0000085f: DUP4
00000860: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000875: AND
00000876: MUL
00000877: OR
00000878: SWAP1
00000879: SSTORE
0000087a: POP
0000087b: DUP2
0000087c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000891: AND
00000892: DUP2
00000893: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008a8: AND
000008a9: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000008ca: PUSH1 0x40
000008cc: MLOAD
000008cd: PUSH1 0x40
000008cf: MLOAD
000008d0: DUP1
000008d1: SWAP2
000008d2: SUB
000008d3: SWAP1
000008d4: LOG3
000008d5: POP
000008d6: POP
000008d7: JUMP
000008d8: JUMPDEST
000008d9: PUSH1 0x00
000008db: CALLER
000008dc: SWAP1
000008dd: POP
000008de: SWAP1
000008df: JUMP
000008e0: JUMPDEST
000008e1: PUSH1 0x00
000008e3: DUP1
000008e4: DUP3
000008e5: SWAP1
000008e6: POP
000008e7: PUSH1 0x00
000008e9: JUMPDEST
000008ea: DUP5
000008eb: MLOAD
000008ec: DUP2
000008ed: LT
000008ee: ISZERO
000008ef: PUSH2 0x092b
000008f2: JUMPI
000008f3: PUSH2 0x0916
000008f6: DUP3
000008f7: DUP7
000008f8: DUP4
000008f9: DUP2
000008fa: MLOAD
000008fb: DUP2
000008fc: LT
000008fd: PUSH2 0x0909
00000900: JUMPI
00000901: PUSH2 0x0908
00000904: PUSH2 0x10e6
00000907: JUMP
00000908: JUMPDEST
00000909: JUMPDEST
0000090a: PUSH1 0x20
0000090c: MUL
0000090d: PUSH1 0x20
0000090f: ADD
00000910: ADD
00000911: MLOAD
00000912: PUSH2 0x0936
00000915: JUMP
00000916: JUMPDEST
00000917: SWAP2
00000918: POP
00000919: DUP1
0000091a: DUP1
0000091b: PUSH2 0x0923
0000091e: SWAP1
0000091f: PUSH2 0x1144
00000922: JUMP
00000923: JUMPDEST
00000924: SWAP2
00000925: POP
00000926: POP
00000927: PUSH2 0x08e9
0000092a: JUMP
0000092b: JUMPDEST
0000092c: POP
0000092d: DUP1
0000092e: SWAP2
0000092f: POP
00000930: POP
00000931: SWAP3
00000932: SWAP2
00000933: POP
00000934: POP
00000935: JUMP
00000936: JUMPDEST
00000937: PUSH1 0x00
00000939: DUP2
0000093a: DUP4
0000093b: LT
0000093c: PUSH2 0x094e
0000093f: JUMPI
00000940: PUSH2 0x0949
00000943: DUP3
00000944: DUP5
00000945: PUSH2 0x0961
00000948: JUMP
00000949: JUMPDEST
0000094a: PUSH2 0x0959
0000094d: JUMP
0000094e: JUMPDEST
0000094f: PUSH2 0x0958
00000952: DUP4
00000953: DUP4
00000954: PUSH2 0x0961
00000957: JUMP
00000958: JUMPDEST
00000959: JUMPDEST
0000095a: SWAP1
0000095b: POP
0000095c: SWAP3
0000095d: SWAP2
0000095e: POP
0000095f: POP
00000960: JUMP
00000961: JUMPDEST
00000962: PUSH1 0x00
00000964: DUP3
00000965: PUSH1 0x00
00000967: MSTORE
00000968: DUP2
00000969: PUSH1 0x20
0000096b: MSTORE
0000096c: PUSH1 0x40
0000096e: PUSH1 0x00
00000970: KECCAK256
00000971: SWAP1
00000972: POP
00000973: SWAP3
00000974: SWAP2
00000975: POP
00000976: POP
00000977: JUMP
00000978: JUMPDEST
00000979: PUSH1 0x00
0000097b: DUP1
0000097c: REVERT
0000097d: JUMPDEST
0000097e: PUSH1 0x00
00000980: DUP1
00000981: REVERT
00000982: JUMPDEST
00000983: PUSH1 0x00
00000985: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000099a: DUP3
0000099b: AND
0000099c: SWAP1
0000099d: POP
0000099e: SWAP2
0000099f: SWAP1
000009a0: POP
000009a1: JUMP
000009a2: JUMPDEST
000009a3: PUSH1 0x00
000009a5: PUSH2 0x09ad
000009a8: DUP3
000009a9: PUSH2 0x0982
000009ac: JUMP
000009ad: JUMPDEST
000009ae: SWAP1
000009af: POP
000009b0: SWAP2
000009b1: SWAP1
000009b2: POP
000009b3: JUMP
000009b4: JUMPDEST
000009b5: PUSH2 0x09bd
000009b8: DUP2
000009b9: PUSH2 0x09a2
000009bc: JUMP
000009bd: JUMPDEST
000009be: DUP2
000009bf: EQ
000009c0: PUSH2 0x09c8
000009c3: JUMPI
000009c4: PUSH1 0x00
000009c6: DUP1
000009c7: REVERT
000009c8: JUMPDEST
000009c9: POP
000009ca: JUMP
000009cb: JUMPDEST
000009cc: PUSH1 0x00
000009ce: DUP2
000009cf: CALLDATALOAD
000009d0: SWAP1
000009d1: POP
000009d2: PUSH2 0x09da
000009d5: DUP2
000009d6: PUSH2 0x09b4
000009d9: JUMP
000009da: JUMPDEST
000009db: SWAP3
000009dc: SWAP2
000009dd: POP
000009de: POP
000009df: JUMP
000009e0: JUMPDEST
000009e1: PUSH1 0x00
000009e3: DUP2
000009e4: SWAP1
000009e5: POP
000009e6: SWAP2
000009e7: SWAP1
000009e8: POP
000009e9: JUMP
000009ea: JUMPDEST
000009eb: PUSH2 0x09f3
000009ee: DUP2
000009ef: PUSH2 0x09e0
000009f2: JUMP
000009f3: JUMPDEST
000009f4: DUP2
000009f5: EQ
000009f6: PUSH2 0x09fe
000009f9: JUMPI
000009fa: PUSH1 0x00
000009fc: DUP1
000009fd: REVERT
000009fe: JUMPDEST
000009ff: POP
00000a00: JUMP
00000a01: JUMPDEST
00000a02: PUSH1 0x00
00000a04: DUP2
00000a05: CALLDATALOAD
00000a06: SWAP1
00000a07: POP
00000a08: PUSH2 0x0a10
00000a0b: DUP2
00000a0c: PUSH2 0x09ea
00000a0f: JUMP
00000a10: JUMPDEST
00000a11: SWAP3
00000a12: SWAP2
00000a13: POP
00000a14: POP
00000a15: JUMP
00000a16: JUMPDEST
00000a17: PUSH1 0x00
00000a19: DUP1
00000a1a: REVERT
00000a1b: JUMPDEST
00000a1c: PUSH1 0x00
00000a1e: DUP1
00000a1f: REVERT
00000a20: JUMPDEST
00000a21: PUSH1 0x00
00000a23: DUP1
00000a24: REVERT
00000a25: JUMPDEST
00000a26: PUSH1 0x00
00000a28: DUP1
00000a29: DUP4
00000a2a: PUSH1 0x1f
00000a2c: DUP5
00000a2d: ADD
00000a2e: SLT
00000a2f: PUSH2 0x0a3b
00000a32: JUMPI
00000a33: PUSH2 0x0a3a
00000a36: PUSH2 0x0a16
00000a39: JUMP
00000a3a: JUMPDEST
00000a3b: JUMPDEST
00000a3c: DUP3
00000a3d: CALLDATALOAD
00000a3e: SWAP1
00000a3f: POP
00000a40: PUSH8 0xffffffffffffffff
00000a49: DUP2
00000a4a: GT
00000a4b: ISZERO
00000a4c: PUSH2 0x0a58
00000a4f: JUMPI
00000a50: PUSH2 0x0a57
00000a53: PUSH2 0x0a1b
00000a56: JUMP
00000a57: JUMPDEST
00000a58: JUMPDEST
00000a59: PUSH1 0x20
00000a5b: DUP4
00000a5c: ADD
00000a5d: SWAP2
00000a5e: POP
00000a5f: DUP4
00000a60: PUSH1 0x20
00000a62: DUP3
00000a63: MUL
00000a64: DUP4
00000a65: ADD
00000a66: GT
00000a67: ISZERO
00000a68: PUSH2 0x0a74
00000a6b: JUMPI
00000a6c: PUSH2 0x0a73
00000a6f: PUSH2 0x0a20
00000a72: JUMP
00000a73: JUMPDEST
00000a74: JUMPDEST
00000a75: SWAP3
00000a76: POP
00000a77: SWAP3
00000a78: SWAP1
00000a79: POP
00000a7a: JUMP
00000a7b: JUMPDEST
00000a7c: PUSH1 0x00
00000a7e: DUP1
00000a7f: PUSH1 0x00
00000a81: DUP1
00000a82: PUSH1 0x60
00000a84: DUP6
00000a85: DUP8
00000a86: SUB
00000a87: SLT
00000a88: ISZERO
00000a89: PUSH2 0x0a95
00000a8c: JUMPI
00000a8d: PUSH2 0x0a94
00000a90: PUSH2 0x0978
00000a93: JUMP
00000a94: JUMPDEST
00000a95: JUMPDEST
00000a96: PUSH1 0x00
00000a98: PUSH2 0x0aa3
00000a9b: DUP8
00000a9c: DUP3
00000a9d: DUP9
00000a9e: ADD
00000a9f: PUSH2 0x09cb
00000aa2: JUMP
00000aa3: JUMPDEST
00000aa4: SWAP5
00000aa5: POP
00000aa6: POP
00000aa7: PUSH1 0x20
00000aa9: PUSH2 0x0ab4
00000aac: DUP8
00000aad: DUP3
00000aae: DUP9
00000aaf: ADD
00000ab0: PUSH2 0x0a01
00000ab3: JUMP
00000ab4: JUMPDEST
00000ab5: SWAP4
00000ab6: POP
00000ab7: POP
00000ab8: PUSH1 0x40
00000aba: DUP6
00000abb: ADD
00000abc: CALLDATALOAD
00000abd: PUSH8 0xffffffffffffffff
00000ac6: DUP2
00000ac7: GT
00000ac8: ISZERO
00000ac9: PUSH2 0x0ad5
00000acc: JUMPI
00000acd: PUSH2 0x0ad4
00000ad0: PUSH2 0x097d
00000ad3: JUMP
00000ad4: JUMPDEST
00000ad5: JUMPDEST
00000ad6: PUSH2 0x0ae1
00000ad9: DUP8
00000ada: DUP3
00000adb: DUP9
00000adc: ADD
00000add: PUSH2 0x0a25
00000ae0: JUMP
00000ae1: JUMPDEST
00000ae2: SWAP3
00000ae3: POP
00000ae4: SWAP3
00000ae5: POP
00000ae6: POP
00000ae7: SWAP3
00000ae8: SWAP6
00000ae9: SWAP2
00000aea: SWAP5
00000aeb: POP
00000aec: SWAP3
00000aed: POP
00000aee: JUMP
00000aef: JUMPDEST
00000af0: PUSH1 0x00
00000af2: DUP1
00000af3: PUSH1 0x40
00000af5: DUP4
00000af6: DUP6
00000af7: SUB
00000af8: SLT
00000af9: ISZERO
00000afa: PUSH2 0x0b06
00000afd: JUMPI
00000afe: PUSH2 0x0b05
00000b01: PUSH2 0x0978
00000b04: JUMP
00000b05: JUMPDEST
00000b06: JUMPDEST
00000b07: PUSH1 0x00
00000b09: PUSH2 0x0b14
00000b0c: DUP6
00000b0d: DUP3
00000b0e: DUP7
00000b0f: ADD
00000b10: PUSH2 0x09cb
00000b13: JUMP
00000b14: JUMPDEST
00000b15: SWAP3
00000b16: POP
00000b17: POP
00000b18: PUSH1 0x20
00000b1a: PUSH2 0x0b25
00000b1d: DUP6
00000b1e: DUP3
00000b1f: DUP7
00000b20: ADD
00000b21: PUSH2 0x0a01
00000b24: JUMP
00000b25: JUMPDEST
00000b26: SWAP2
00000b27: POP
00000b28: POP
00000b29: SWAP3
00000b2a: POP
00000b2b: SWAP3
00000b2c: SWAP1
00000b2d: POP
00000b2e: JUMP
00000b2f: JUMPDEST
00000b30: PUSH1 0x00
00000b32: DUP2
00000b33: ISZERO
00000b34: ISZERO
00000b35: SWAP1
00000b36: POP
00000b37: SWAP2
00000b38: SWAP1
00000b39: POP
00000b3a: JUMP
00000b3b: JUMPDEST
00000b3c: PUSH2 0x0b44
00000b3f: DUP2
00000b40: PUSH2 0x0b2f
00000b43: JUMP
00000b44: JUMPDEST
00000b45: DUP3
00000b46: MSTORE
00000b47: POP
00000b48: POP
00000b49: JUMP
00000b4a: JUMPDEST
00000b4b: PUSH1 0x00
00000b4d: PUSH1 0x20
00000b4f: DUP3
00000b50: ADD
00000b51: SWAP1
00000b52: POP
00000b53: PUSH2 0x0b5f
00000b56: PUSH1 0x00
00000b58: DUP4
00000b59: ADD
00000b5a: DUP5
00000b5b: PUSH2 0x0b3b
00000b5e: JUMP
00000b5f: JUMPDEST
00000b60: SWAP3
00000b61: SWAP2
00000b62: POP
00000b63: POP
00000b64: JUMP
00000b65: JUMPDEST
00000b66: PUSH2 0x0b6e
00000b69: DUP2
00000b6a: PUSH2 0x09a2
00000b6d: JUMP
00000b6e: JUMPDEST
00000b6f: DUP3
00000b70: MSTORE
00000b71: POP
00000b72: POP
00000b73: JUMP
00000b74: JUMPDEST
00000b75: PUSH1 0x00
00000b77: PUSH1 0x20
00000b79: DUP3
00000b7a: ADD
00000b7b: SWAP1
00000b7c: POP
00000b7d: PUSH2 0x0b89
00000b80: PUSH1 0x00
00000b82: DUP4
00000b83: ADD
00000b84: DUP5
00000b85: PUSH2 0x0b65
00000b88: JUMP
00000b89: JUMPDEST
00000b8a: SWAP3
00000b8b: SWAP2
00000b8c: POP
00000b8d: POP
00000b8e: JUMP
00000b8f: JUMPDEST
00000b90: PUSH2 0x0b98
00000b93: DUP2
00000b94: PUSH2 0x09e0
00000b97: JUMP
00000b98: JUMPDEST
00000b99: DUP3
00000b9a: MSTORE
00000b9b: POP
00000b9c: POP
00000b9d: JUMP
00000b9e: JUMPDEST
00000b9f: PUSH1 0x00
00000ba1: PUSH1 0x20
00000ba3: DUP3
00000ba4: ADD
00000ba5: SWAP1
00000ba6: POP
00000ba7: PUSH2 0x0bb3
00000baa: PUSH1 0x00
00000bac: DUP4
00000bad: ADD
00000bae: DUP5
00000baf: PUSH2 0x0b8f
00000bb2: JUMP
00000bb3: JUMPDEST
00000bb4: SWAP3
00000bb5: SWAP2
00000bb6: POP
00000bb7: POP
00000bb8: JUMP
00000bb9: JUMPDEST
00000bba: PUSH1 0x00
00000bbc: DUP2
00000bbd: SWAP1
00000bbe: POP
00000bbf: SWAP2
00000bc0: SWAP1
00000bc1: POP
00000bc2: JUMP
00000bc3: JUMPDEST
00000bc4: PUSH2 0x0bcc
00000bc7: DUP2
00000bc8: PUSH2 0x0bb9
00000bcb: JUMP
00000bcc: JUMPDEST
00000bcd: DUP3
00000bce: MSTORE
00000bcf: POP
00000bd0: POP
00000bd1: JUMP
00000bd2: JUMPDEST
00000bd3: PUSH1 0x00
00000bd5: PUSH1 0x20
00000bd7: DUP3
00000bd8: ADD
00000bd9: SWAP1
00000bda: POP
00000bdb: PUSH2 0x0be7
00000bde: PUSH1 0x00
00000be0: DUP4
00000be1: ADD
00000be2: DUP5
00000be3: PUSH2 0x0bc3
00000be6: JUMP
00000be7: JUMPDEST
00000be8: SWAP3
00000be9: SWAP2
00000bea: POP
00000beb: POP
00000bec: JUMP
00000bed: JUMPDEST
00000bee: PUSH1 0x00
00000bf0: PUSH1 0x20
00000bf2: DUP3
00000bf3: DUP5
00000bf4: SUB
00000bf5: SLT
00000bf6: ISZERO
00000bf7: PUSH2 0x0c03
00000bfa: JUMPI
00000bfb: PUSH2 0x0c02
00000bfe: PUSH2 0x0978
00000c01: JUMP
00000c02: JUMPDEST
00000c03: JUMPDEST
00000c04: PUSH1 0x00
00000c06: PUSH2 0x0c11
00000c09: DUP5
00000c0a: DUP3
00000c0b: DUP6
00000c0c: ADD
00000c0d: PUSH2 0x09cb
00000c10: JUMP
00000c11: JUMPDEST
00000c12: SWAP2
00000c13: POP
00000c14: POP
00000c15: SWAP3
00000c16: SWAP2
00000c17: POP
00000c18: POP
00000c19: JUMP
00000c1a: JUMPDEST
00000c1b: PUSH1 0x00
00000c1d: DUP2
00000c1e: SWAP1
00000c1f: POP
00000c20: SWAP2
00000c21: SWAP1
00000c22: POP
00000c23: JUMP
00000c24: JUMPDEST
00000c25: PUSH1 0x00
00000c27: PUSH2 0x0c3f
00000c2a: PUSH2 0x0c3a
00000c2d: PUSH2 0x0c35
00000c30: DUP5
00000c31: PUSH2 0x0982
00000c34: JUMP
00000c35: JUMPDEST
00000c36: PUSH2 0x0c1a
00000c39: JUMP
00000c3a: JUMPDEST
00000c3b: PUSH2 0x0982
00000c3e: JUMP
00000c3f: JUMPDEST
00000c40: SWAP1
00000c41: POP
00000c42: SWAP2
00000c43: SWAP1
00000c44: POP
00000c45: JUMP
00000c46: JUMPDEST
00000c47: PUSH1 0x00
00000c49: PUSH2 0x0c51
00000c4c: DUP3
00000c4d: PUSH2 0x0c24
00000c50: JUMP
00000c51: JUMPDEST
00000c52: SWAP1
00000c53: POP
00000c54: SWAP2
00000c55: SWAP1
00000c56: POP
00000c57: JUMP
00000c58: JUMPDEST
00000c59: PUSH1 0x00
00000c5b: PUSH2 0x0c63
00000c5e: DUP3
00000c5f: PUSH2 0x0c46
00000c62: JUMP
00000c63: JUMPDEST
00000c64: SWAP1
00000c65: POP
00000c66: SWAP2
00000c67: SWAP1
00000c68: POP
00000c69: JUMP
00000c6a: JUMPDEST
00000c6b: PUSH2 0x0c73
00000c6e: DUP2
00000c6f: PUSH2 0x0c58
00000c72: JUMP
00000c73: JUMPDEST
00000c74: DUP3
00000c75: MSTORE
00000c76: POP
00000c77: POP
00000c78: JUMP
00000c79: JUMPDEST
00000c7a: PUSH1 0x00
00000c7c: PUSH1 0x20
00000c7e: DUP3
00000c7f: ADD
00000c80: SWAP1
00000c81: POP
00000c82: PUSH2 0x0c8e
00000c85: PUSH1 0x00
00000c87: DUP4
00000c88: ADD
00000c89: DUP5
00000c8a: PUSH2 0x0c6a
00000c8d: JUMP
00000c8e: JUMPDEST
00000c8f: SWAP3
00000c90: SWAP2
00000c91: POP
00000c92: POP
00000c93: JUMP
00000c94: JUMPDEST
00000c95: PUSH1 0x00
00000c97: DUP2
00000c98: MLOAD
00000c99: SWAP1
00000c9a: POP
00000c9b: PUSH2 0x0ca3
00000c9e: DUP2
00000c9f: PUSH2 0x09ea
00000ca2: JUMP
00000ca3: JUMPDEST
00000ca4: SWAP3
00000ca5: SWAP2
00000ca6: POP
00000ca7: POP
00000ca8: JUMP
00000ca9: JUMPDEST
00000caa: PUSH1 0x00
00000cac: PUSH1 0x20
00000cae: DUP3
00000caf: DUP5
00000cb0: SUB
00000cb1: SLT
00000cb2: ISZERO
00000cb3: PUSH2 0x0cbf
00000cb6: JUMPI
00000cb7: PUSH2 0x0cbe
00000cba: PUSH2 0x0978
00000cbd: JUMP
00000cbe: JUMPDEST
00000cbf: JUMPDEST
00000cc0: PUSH1 0x00
00000cc2: PUSH2 0x0ccd
00000cc5: DUP5
00000cc6: DUP3
00000cc7: DUP6
00000cc8: ADD
00000cc9: PUSH2 0x0c94
00000ccc: JUMP
00000ccd: JUMPDEST
00000cce: SWAP2
00000ccf: POP
00000cd0: POP
00000cd1: SWAP3
00000cd2: SWAP2
00000cd3: POP
00000cd4: POP
00000cd5: JUMP
00000cd6: JUMPDEST
00000cd7: PUSH1 0x00
00000cd9: PUSH1 0x40
00000cdb: DUP3
00000cdc: ADD
00000cdd: SWAP1
00000cde: POP
00000cdf: PUSH2 0x0ceb
00000ce2: PUSH1 0x00
00000ce4: DUP4
00000ce5: ADD
00000ce6: DUP6
00000ce7: PUSH2 0x0b65
00000cea: JUMP
00000ceb: JUMPDEST
00000cec: PUSH2 0x0cf8
00000cef: PUSH1 0x20
00000cf1: DUP4
00000cf2: ADD
00000cf3: DUP5
00000cf4: PUSH2 0x0b8f
00000cf7: JUMP
00000cf8: JUMPDEST
00000cf9: SWAP4
00000cfa: SWAP3
00000cfb: POP
00000cfc: POP
00000cfd: POP
00000cfe: JUMP
00000cff: JUMPDEST
00000d00: PUSH2 0x0d08
00000d03: DUP2
00000d04: PUSH2 0x0b2f
00000d07: JUMP
00000d08: JUMPDEST
00000d09: DUP2
00000d0a: EQ
00000d0b: PUSH2 0x0d13
00000d0e: JUMPI
00000d0f: PUSH1 0x00
00000d11: DUP1
00000d12: REVERT
00000d13: JUMPDEST
00000d14: POP
00000d15: JUMP
00000d16: JUMPDEST
00000d17: PUSH1 0x00
00000d19: DUP2
00000d1a: MLOAD
00000d1b: SWAP1
00000d1c: POP
00000d1d: PUSH2 0x0d25
00000d20: DUP2
00000d21: PUSH2 0x0cff
00000d24: JUMP
00000d25: JUMPDEST
00000d26: SWAP3
00000d27: SWAP2
00000d28: POP
00000d29: POP
00000d2a: JUMP
00000d2b: JUMPDEST
00000d2c: PUSH1 0x00
00000d2e: PUSH1 0x20
00000d30: DUP3
00000d31: DUP5
00000d32: SUB
00000d33: SLT
00000d34: ISZERO
00000d35: PUSH2 0x0d41
00000d38: JUMPI
00000d39: PUSH2 0x0d40
00000d3c: PUSH2 0x0978
00000d3f: JUMP
00000d40: JUMPDEST
00000d41: JUMPDEST
00000d42: PUSH1 0x00
00000d44: PUSH2 0x0d4f
00000d47: DUP5
00000d48: DUP3
00000d49: DUP6
00000d4a: ADD
00000d4b: PUSH2 0x0d16
00000d4e: JUMP
00000d4f: JUMPDEST
00000d50: SWAP2
00000d51: POP
00000d52: POP
00000d53: SWAP3
00000d54: SWAP2
00000d55: POP
00000d56: POP
00000d57: JUMP
00000d58: JUMPDEST
00000d59: PUSH1 0x00
00000d5b: DUP3
00000d5c: DUP3
00000d5d: MSTORE
00000d5e: PUSH1 0x20
00000d60: DUP3
00000d61: ADD
00000d62: SWAP1
00000d63: POP
00000d64: SWAP3
00000d65: SWAP2
00000d66: POP
00000d67: POP
00000d68: JUMP
00000d69: JUMPDEST
00000d6a: PUSH32 0x6163636f756e74203d207a65726f206164647265737300000000000000000000
00000d8b: PUSH1 0x00
00000d8d: DUP3
00000d8e: ADD
00000d8f: MSTORE
00000d90: POP
00000d91: JUMP
00000d92: JUMPDEST
00000d93: PUSH1 0x00
00000d95: PUSH2 0x0d9f
00000d98: PUSH1 0x16
00000d9a: DUP4
00000d9b: PUSH2 0x0d58
00000d9e: JUMP
00000d9f: JUMPDEST
00000da0: SWAP2
00000da1: POP
00000da2: PUSH2 0x0daa
00000da5: DUP3
00000da6: PUSH2 0x0d69
00000da9: JUMP
00000daa: JUMPDEST
00000dab: PUSH1 0x20
00000dad: DUP3
00000dae: ADD
00000daf: SWAP1
00000db0: POP
00000db1: SWAP2
00000db2: SWAP1
00000db3: POP
00000db4: JUMP
00000db5: JUMPDEST
00000db6: PUSH1 0x00
00000db8: PUSH1 0x20
00000dba: DUP3
00000dbb: ADD
00000dbc: SWAP1
00000dbd: POP
00000dbe: DUP2
00000dbf: DUP2
00000dc0: SUB
00000dc1: PUSH1 0x00
00000dc3: DUP4
00000dc4: ADD
00000dc5: MSTORE
00000dc6: PUSH2 0x0dce
00000dc9: DUP2
00000dca: PUSH2 0x0d92
00000dcd: JUMP
00000dce: JUMPDEST
00000dcf: SWAP1
00000dd0: POP
00000dd1: SWAP2
00000dd2: SWAP1
00000dd3: POP
00000dd4: JUMP
00000dd5: JUMPDEST
00000dd6: PUSH32 0x616d6f756e74203d203000000000000000000000000000000000000000000000
00000df7: PUSH1 0x00
00000df9: DUP3
00000dfa: ADD
00000dfb: MSTORE
00000dfc: POP
00000dfd: JUMP
00000dfe: JUMPDEST
00000dff: PUSH1 0x00
00000e01: PUSH2 0x0e0b
00000e04: PUSH1 0x0a
00000e06: DUP4
00000e07: PUSH2 0x0d58
00000e0a: JUMP
00000e0b: JUMPDEST
00000e0c: SWAP2
00000e0d: POP
00000e0e: PUSH2 0x0e16
00000e11: DUP3
00000e12: PUSH2 0x0dd5
00000e15: JUMP
00000e16: JUMPDEST
00000e17: PUSH1 0x20
00000e19: DUP3
00000e1a: ADD
00000e1b: SWAP1
00000e1c: POP
00000e1d: SWAP2
00000e1e: SWAP1
00000e1f: POP
00000e20: JUMP
00000e21: JUMPDEST
00000e22: PUSH1 0x00
00000e24: PUSH1 0x20
00000e26: DUP3
00000e27: ADD
00000e28: SWAP1
00000e29: POP
00000e2a: DUP2
00000e2b: DUP2
00000e2c: SUB
00000e2d: PUSH1 0x00
00000e2f: DUP4
00000e30: ADD
00000e31: MSTORE
00000e32: PUSH2 0x0e3a
00000e35: DUP2
00000e36: PUSH2 0x0dfe
00000e39: JUMP
00000e3a: JUMPDEST
00000e3b: SWAP1
00000e3c: POP
00000e3d: SWAP2
00000e3e: SWAP1
00000e3f: POP
00000e40: JUMP
00000e41: JUMPDEST
00000e42: PUSH32 0x636c61696d656400000000000000000000000000000000000000000000000000
00000e63: PUSH1 0x00
00000e65: DUP3
00000e66: ADD
00000e67: MSTORE
00000e68: POP
00000e69: JUMP
00000e6a: JUMPDEST
00000e6b: PUSH1 0x00
00000e6d: PUSH2 0x0e77
00000e70: PUSH1 0x07
00000e72: DUP4
00000e73: PUSH2 0x0d58
00000e76: JUMP
00000e77: JUMPDEST
00000e78: SWAP2
00000e79: POP
00000e7a: PUSH2 0x0e82
00000e7d: DUP3
00000e7e: PUSH2 0x0e41
00000e81: JUMP
00000e82: JUMPDEST
00000e83: PUSH1 0x20
00000e85: DUP3
00000e86: ADD
00000e87: SWAP1
00000e88: POP
00000e89: SWAP2
00000e8a: SWAP1
00000e8b: POP
00000e8c: JUMP
00000e8d: JUMPDEST
00000e8e: PUSH1 0x00
00000e90: PUSH1 0x20
00000e92: DUP3
00000e93: ADD
00000e94: SWAP1
00000e95: POP
00000e96: DUP2
00000e97: DUP2
00000e98: SUB
00000e99: PUSH1 0x00
00000e9b: DUP4
00000e9c: ADD
00000e9d: MSTORE
00000e9e: PUSH2 0x0ea6
00000ea1: DUP2
00000ea2: PUSH2 0x0e6a
00000ea5: JUMP
00000ea6: JUMPDEST
00000ea7: SWAP1
00000ea8: POP
00000ea9: SWAP2
00000eaa: SWAP1
00000eab: POP
00000eac: JUMP
00000ead: JUMPDEST
00000eae: PUSH32 0x696e76616c69642070726f6f6600000000000000000000000000000000000000
00000ecf: PUSH1 0x00
00000ed1: DUP3
00000ed2: ADD
00000ed3: MSTORE
00000ed4: POP
00000ed5: JUMP
00000ed6: JUMPDEST
00000ed7: PUSH1 0x00
00000ed9: PUSH2 0x0ee3
00000edc: PUSH1 0x0d
00000ede: DUP4
00000edf: PUSH2 0x0d58
00000ee2: JUMP
00000ee3: JUMPDEST
00000ee4: SWAP2
00000ee5: POP
00000ee6: PUSH2 0x0eee
00000ee9: DUP3
00000eea: PUSH2 0x0ead
00000eed: JUMP
00000eee: JUMPDEST
00000eef: PUSH1 0x20
00000ef1: DUP3
00000ef2: ADD
00000ef3: SWAP1
00000ef4: POP
00000ef5: SWAP2
00000ef6: SWAP1
00000ef7: POP
00000ef8: JUMP
00000ef9: JUMPDEST
00000efa: PUSH1 0x00
00000efc: PUSH1 0x20
00000efe: DUP3
00000eff: ADD
00000f00: SWAP1
00000f01: POP
00000f02: DUP2
00000f03: DUP2
00000f04: SUB
00000f05: PUSH1 0x00
00000f07: DUP4
00000f08: ADD
00000f09: MSTORE
00000f0a: PUSH2 0x0f12
00000f0d: DUP2
00000f0e: PUSH2 0x0ed6
00000f11: JUMP
00000f12: JUMPDEST
00000f13: SWAP1
00000f14: POP
00000f15: SWAP2
00000f16: SWAP1
00000f17: POP
00000f18: JUMP
00000f19: JUMPDEST
00000f1a: PUSH1 0x00
00000f1c: PUSH1 0x40
00000f1e: DUP3
00000f1f: ADD
00000f20: SWAP1
00000f21: POP
00000f22: PUSH2 0x0f2e
00000f25: PUSH1 0x00
00000f27: DUP4
00000f28: ADD
00000f29: DUP6
00000f2a: PUSH2 0x0bc3
00000f2d: JUMP
00000f2e: JUMPDEST
00000f2f: PUSH2 0x0f3b
00000f32: PUSH1 0x20
00000f34: DUP4
00000f35: ADD
00000f36: DUP5
00000f37: PUSH2 0x0b8f
00000f3a: JUMP
00000f3b: JUMPDEST
00000f3c: SWAP4
00000f3d: SWAP3
00000f3e: POP
00000f3f: POP
00000f40: POP
00000f41: JUMP
00000f42: JUMPDEST
00000f43: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00000f64: PUSH1 0x00
00000f66: DUP3
00000f67: ADD
00000f68: MSTORE
00000f69: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000
00000f8a: PUSH1 0x20
00000f8c: DUP3
00000f8d: ADD
00000f8e: MSTORE
00000f8f: POP
00000f90: JUMP
00000f91: JUMPDEST
00000f92: PUSH1 0x00
00000f94: PUSH2 0x0f9e
00000f97: PUSH1 0x26
00000f99: DUP4
00000f9a: PUSH2 0x0d58
00000f9d: JUMP
00000f9e: JUMPDEST
00000f9f: SWAP2
00000fa0: POP
00000fa1: PUSH2 0x0fa9
00000fa4: DUP3
00000fa5: PUSH2 0x0f42
00000fa8: JUMP
00000fa9: JUMPDEST
00000faa: PUSH1 0x40
00000fac: DUP3
00000fad: ADD
00000fae: SWAP1
00000faf: POP
00000fb0: SWAP2
00000fb1: SWAP1
00000fb2: POP
00000fb3: JUMP
00000fb4: JUMPDEST
00000fb5: PUSH1 0x00
00000fb7: PUSH1 0x20
00000fb9: DUP3
00000fba: ADD
00000fbb: SWAP1
00000fbc: POP
00000fbd: DUP2
00000fbe: DUP2
00000fbf: SUB
00000fc0: PUSH1 0x00
00000fc2: DUP4
00000fc3: ADD
00000fc4: MSTORE
00000fc5: PUSH2 0x0fcd
00000fc8: DUP2
00000fc9: PUSH2 0x0f91
00000fcc: JUMP
00000fcd: JUMPDEST
00000fce: SWAP1
00000fcf: POP
00000fd0: SWAP2
00000fd1: SWAP1
00000fd2: POP
00000fd3: JUMP
00000fd4: JUMPDEST
00000fd5: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000ff6: PUSH1 0x00
00000ff8: DUP3
00000ff9: ADD
00000ffa: MSTORE
00000ffb: POP
00000ffc: JUMP
00000ffd: JUMPDEST
00000ffe: PUSH1 0x00
00001000: PUSH2 0x100a
00001003: PUSH1 0x20
00001005: DUP4
00001006: PUSH2 0x0d58
00001009: JUMP
0000100a: JUMPDEST
0000100b: SWAP2
0000100c: POP
0000100d: PUSH2 0x1015
00001010: DUP3
00001011: PUSH2 0x0fd4
00001014: JUMP
00001015: JUMPDEST
00001016: PUSH1 0x20
00001018: DUP3
00001019: ADD
0000101a: SWAP1
0000101b: POP
0000101c: SWAP2
0000101d: SWAP1
0000101e: POP
0000101f: JUMP
00001020: JUMPDEST
00001021: PUSH1 0x00
00001023: PUSH1 0x20
00001025: DUP3
00001026: ADD
00001027: SWAP1
00001028: POP
00001029: DUP2
0000102a: DUP2
0000102b: SUB
0000102c: PUSH1 0x00
0000102e: DUP4
0000102f: ADD
00001030: MSTORE
00001031: PUSH2 0x1039
00001034: DUP2
00001035: PUSH2 0x0ffd
00001038: JUMP
00001039: JUMPDEST
0000103a: SWAP1
0000103b: POP
0000103c: SWAP2
0000103d: SWAP1
0000103e: POP
0000103f: JUMP
00001040: JUMPDEST
00001041: PUSH1 0x00
00001043: DUP2
00001044: PUSH1 0x60
00001046: SHL
00001047: SWAP1
00001048: POP
00001049: SWAP2
0000104a: SWAP1
0000104b: POP
0000104c: JUMP
0000104d: JUMPDEST
0000104e: PUSH1 0x00
00001050: PUSH2 0x1058
00001053: DUP3
00001054: PUSH2 0x1040
00001057: JUMP
00001058: JUMPDEST
00001059: SWAP1
0000105a: POP
0000105b: SWAP2
0000105c: SWAP1
0000105d: POP
0000105e: JUMP
0000105f: JUMPDEST
00001060: PUSH1 0x00
00001062: PUSH2 0x106a
00001065: DUP3
00001066: PUSH2 0x104d
00001069: JUMP
0000106a: JUMPDEST
0000106b: SWAP1
0000106c: POP
0000106d: SWAP2
0000106e: SWAP1
0000106f: POP
00001070: JUMP
00001071: JUMPDEST
00001072: PUSH2 0x1082
00001075: PUSH2 0x107d
00001078: DUP3
00001079: PUSH2 0x09a2
0000107c: JUMP
0000107d: JUMPDEST
0000107e: PUSH2 0x105f
00001081: JUMP
00001082: JUMPDEST
00001083: DUP3
00001084: MSTORE
00001085: POP
00001086: POP
00001087: JUMP
00001088: JUMPDEST
00001089: PUSH1 0x00
0000108b: DUP2
0000108c: SWAP1
0000108d: POP
0000108e: SWAP2
0000108f: SWAP1
00001090: POP
00001091: JUMP
00001092: JUMPDEST
00001093: PUSH2 0x10a3
00001096: PUSH2 0x109e
00001099: DUP3
0000109a: PUSH2 0x09e0
0000109d: JUMP
0000109e: JUMPDEST
0000109f: PUSH2 0x1088
000010a2: JUMP
000010a3: JUMPDEST
000010a4: DUP3
000010a5: MSTORE
000010a6: POP
000010a7: POP
000010a8: JUMP
000010a9: JUMPDEST
000010aa: PUSH1 0x00
000010ac: PUSH2 0x10b5
000010af: DUP3
000010b0: DUP7
000010b1: PUSH2 0x1071
000010b4: JUMP
000010b5: JUMPDEST
000010b6: PUSH1 0x14
000010b8: DUP3
000010b9: ADD
000010ba: SWAP2
000010bb: POP
000010bc: PUSH2 0x10c5
000010bf: DUP3
000010c0: DUP6
000010c1: PUSH2 0x1092
000010c4: JUMP
000010c5: JUMPDEST
000010c6: PUSH1 0x20
000010c8: DUP3
000010c9: ADD
000010ca: SWAP2
000010cb: POP
000010cc: PUSH2 0x10d5
000010cf: DUP3
000010d0: DUP5
000010d1: PUSH2 0x1092
000010d4: JUMP
000010d5: JUMPDEST
000010d6: PUSH1 0x20
000010d8: DUP3
000010d9: ADD
000010da: SWAP2
000010db: POP
000010dc: DUP2
000010dd: SWAP1
000010de: POP
000010df: SWAP5
000010e0: SWAP4
000010e1: POP
000010e2: POP
000010e3: POP
000010e4: POP
000010e5: JUMP
000010e6: JUMPDEST
000010e7: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001108: PUSH1 0x00
0000110a: MSTORE
0000110b: PUSH1 0x32
0000110d: PUSH1 0x04
0000110f: MSTORE
00001110: PUSH1 0x24
00001112: PUSH1 0x00
00001114: REVERT
00001115: JUMPDEST
00001116: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001137: PUSH1 0x00
00001139: MSTORE
0000113a: PUSH1 0x11
0000113c: PUSH1 0x04
0000113e: MSTORE
0000113f: PUSH1 0x24
00001141: PUSH1 0x00
00001143: REVERT
00001144: JUMPDEST
00001145: PUSH1 0x00
00001147: PUSH2 0x114f
0000114a: DUP3
0000114b: PUSH2 0x09e0
0000114e: JUMP
0000114f: JUMPDEST
00001150: SWAP2
00001151: POP
00001152: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001173: DUP3
00001174: SUB
00001175: PUSH2 0x1181
00001178: JUMPI
00001179: PUSH2 0x1180
0000117c: PUSH2 0x1115
0000117f: JUMP
00001180: JUMPDEST
00001181: JUMPDEST
00001182: PUSH1 0x01
00001184: DUP3
00001185: ADD
00001186: SWAP1
00001187: POP
00001188: SWAP2
00001189: SWAP1
0000118a: POP
0000118b: JUMP
0000118c: INVALID
0000118d: LOG2
0000118e: PUSH5 0x6970667358
00001194: UNKNOWN(0x22)
00001195: SLT
00001196: KECCAK256
00001197: ADDMOD
00001198: SWAP4
00001199: JUMPI
0000119a: UNKNOWN(0xBE)
0000119b: DUP4
0000119c: REVERT
0000119d: SWAP15
0000119e: DIV
0000119f: GASLIMIT
000011a0: UNKNOWN(0xBF)
000011a1: UNKNOWN(0xC4)
000011a2: UNKNOWN(0xBB)
000011a3: UNKNOWN(0x0E)
000011a4: UNKNOWN(0xD2)
000011a5: PUSH17 0x8f76c787b1ca4c7b1bc2d1eabb1966320e
000011b7: PUSH5 0x736f6c6343
000011bd: STOP
000011be: ADDMOD
000011bf: GT
000011c0: STOP
000011c1: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x0ebd247e897d2e2de5567fdb5101ce691f1bf3f5e68a809af2a45239bb7a80ee
call_targets: 0xf5644345a5a9dc14076b58802dc908b83e62b0e1
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x0ebd247e897d2e2de5567fdb5101ce691f1bf3f5e68a809af2a45239bb7a80ee",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf5644345a5a9dc14076b58802dc908b83e62b0e1"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbfa0b133",
            "selector": "0xbfa0b133",
            "calldata_variants": [
                "0xbfa0b133",
                "0xbfa0b1330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebf0c717",
            "selector": "0xebf0c717",
            "calldata_variants": [
                "0xebf0c717",
                "0xebf0c7170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0c546a",
            "selector": "0xfc0c546a",
            "calldata_variants": [
                "0xfc0c546a",
                "0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3d13f874",
            "selector": "0x3d13f874",
            "calldata_variants": [
                "0x3d13f874",
                "0x3d13f8740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4dd6c8de",
            "selector": "0x4dd6c8de",
            "calldata_variants": [
                "0x4dd6c8de",
                "0x4dd6c8de0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 662,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1336,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x0ebd247e897d2e2de5567fdb5101ce691f1bf3f5e68a809af2a45239bb7a80ee
call_targets: 0xf5644345a5a9dc14076b58802dc908b83e62b0e1
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x0ebd247e897d2e2de5567fdb5101ce691f1bf3f5e68a809af2a45239bb7a80ee",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf5644345a5a9dc14076b58802dc908b83e62b0e1"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbfa0b133",
            "selector": "0xbfa0b133",
            "calldata_variants": [
                "0xbfa0b133",
                "0xbfa0b1330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebf0c717",
            "selector": "0xebf0c717",
            "calldata_variants": [
                "0xebf0c717",
                "0xebf0c7170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0c546a",
            "selector": "0xfc0c546a",
            "calldata_variants": [
                "0xfc0c546a",
                "0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3d13f874",
            "selector": "0x3d13f874",
            "calldata_variants": [
                "0x3d13f874",
                "0x3d13f8740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4dd6c8de",
            "selector": "0x4dd6c8de",
            "calldata_variants": [
                "0x4dd6c8de",
                "0x4dd6c8de0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 662,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1336,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": []
}
medium other codex Unchecked ERC20 transfer return values can permanently mark claims as paid 75 no
view
evidence_json
{
    "evidence": "`token.transfer(account, amount);` and `token.transfer(msg.sender, token.balanceOf(address(this)));` are unchecked.",
    "locations": [
        "contracts/Contract.sol:451",
        "contracts/Contract.sol:457"
    ],
    "recommendation": "Use `SafeERC20.safeTransfer`/`safeTransferFrom` or explicitly `require(token.transfer(...), \"TRANSFER_FAILED\")` for both claim and withdraw paths.",
    "exploit_scenario": "If the ERC20 token returns false on transfer (e.g., non-standard tokens or insufficient balance), `claim` still marks `_claimed[leaf]=true` and emits `Claim` without reverting. The claimant then cannot re-claim, effectively losing the payout. Similarly, `withdraw` can silently fail and leave funds stranded while the owner believes the withdrawal succeeded."
}