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

Analysis Run

019be3d6-8440-70da-9fb5-83113843d72c

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 22, 2026 3:54 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
SELFDESTRUCT present
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
41023 artifact.fetch complete 1 / 3 2 months ago
41024 proxy.resolve complete 1 / 3 2 months ago
41025 tool.cast_disasm complete 1 / 3 2 months ago
41026 analysis.bundle complete 1 / 3 2 months ago
41027 capability.graph complete 1 / 3 2 months ago
41028 detector.run complete 1 / 3 2 months ago
41029 validation.fork complete 1 / 3 2 months ago
41407 report.consolidate complete 1 / 6 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
1
No findings?
no
Summary
Single first-party ERC20-style token; main issue is allowance front‑running in approve().
View stdout
{"no_findings":false,"summary":"Single first-party ERC20-style token; main issue is allowance front‑running in approve().","findings":[{"severity":"low","category":"auth","title":"ERC20 approve race allows double-spend of allowance","exploit_scenario":"A token holder tries to change an allowance from 100 to 50. The spender can front-run the approve() with transferFrom for 100, then after the approve() succeeds still spend the new 50, effectively spending 150 in total.","recommendation":"Require allowance to be set to 0 before changing to a new non-zero value, or replace approve() with increaseAllowance/decreaseAllowance patterns.","evidence":"approve() overwrites allowance without zero-check, enabling the known ERC20 allowance race.","locations":["contracts/Contract.sol:93","contracts/Contract.sol:94","contracts/Contract.sol:97"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dxnf1_52
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be475-4d47-7340-afa2-b6c903f6e62d
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Reading audit bundle**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-dxnf1_52 succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.8;

/**
 * Math operations with safety checks
 */
contract SafeMath {
  function safeMul(uint256 a, uint256 b) internal returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeDiv(uint256 a, uint256 b) internal returns (uint256) {
    assert(b > 0);


thinking
**Reviewing smart contract vulnerabilities**

The contract's withdrawEther uses a safe transfer to owner with appropriate access control and no reentrancy risk. The approve function has the known ERC20 allowance race condition, which I'll categorize as an authorization risk given its potential impact despite being standard. Other checks on balances, freeze/unfreeze logic, and SafeMath usage are sound.
thinking
**Preparing to include ERC20 approve race with line numbers**

I'll include the known ERC20 approve race condition as a medium/low-risk finding and plan to add approximate file and line locations using line numbering for clarity.
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1,220p'" in /tmp/codex-dxnf1_52 succeeded in 8ms:
     1	This file concatenates the full contents of first-party Solidity sources for auditing.
     2	Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
     3	
     4	================================================================================
     5	FILE: contracts/Contract.sol
     6	================================================================================
     7	pragma solidity ^0.4.8;
     8	
     9	/**
    10	 * Math operations with safety checks
    11	 */
    12	contract SafeMath {
    13	  function safeMul(uint256 a, uint256 b) internal returns (uint256) {
    14	    uint256 c = a * b;
    15	    assert(a == 0 || c / a == b);
    16	    return c;
    17	  }
    18	
    19	  function safeDiv(uint256 a, uint256 b) internal returns (uint256) {
    20	    assert(b > 0);

thinking
**Crafting vulnerability JSON for ERC20 approve race condition**

I'm creating a JSON report describing the ERC20 approve race condition at the specified contract location with a low severity under the auth category, including exploit scenario, recommendation, and evidence citing the exact line.
codex
{"no_findings":false,"summary":"Single first-party ERC20-style token; main issue is allowance front‑running in approve().","findings":[{"severity":"low","category":"auth","title":"ERC20 approve race allows double-spend of allowance","exploit_scenario":"A token holder tries to change an allowance from 100 to 50. The spender can front-run the approve() with transferFrom for 100, then after the approve() succeeds still spend the new 50, effectively spending 150 in total.","recommendation":"Require allowance to be set to 0 before changing to a new non-zero value, or replace approve() with increaseAllowance/decreaseAllowance patterns.","evidence":"approve() overwrites allowance without zero-check, enabling the known ERC20 allowance race.","locations":["contracts/Contract.sol:93","contracts/Contract.sol:94","contracts/Contract.sol:97"]}]}
tokens used
9,480
Metadata
{
    "codex": {
        "ran_at": "2026-01-22T06:47:51.694284+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Single first-party ERC20-style token; main issue is allowance front\u2011running in approve().",
    "raw_final": {
        "summary": "Single first-party ERC20-style token; main issue is allowance front\u2011running in approve().",
        "findings": [
            {
                "title": "ERC20 approve race allows double-spend of allowance",
                "category": "auth",
                "evidence": "approve() overwrites allowance without zero-check, enabling the known ERC20 allowance race.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:93",
                    "contracts/Contract.sol:94",
                    "contracts/Contract.sol:97"
                ],
                "recommendation": "Require allowance to be set to 0 before changing to a new non-zero value, or replace approve() with increaseAllowance/decreaseAllowance patterns.",
                "exploit_scenario": "A token holder tries to change an allowance from 100 to 50. The spender can front-run the approve() with transferFrom for 100, then after the approve() succeeds still spend the new 50, effectively spending 150 in total."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
2
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
0
Total opcodes
2513
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00d9
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: PUSH4 0xffffffff
00000033: AND
00000034: DUP1
00000035: PUSH4 0x06fdde03
0000003a: EQ
0000003b: PUSH2 0x00e2
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x095ea7b3
00000045: EQ
00000046: PUSH2 0x0171
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0x18160ddd
00000050: EQ
00000051: PUSH2 0x01cb
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0x23b872dd
0000005b: EQ
0000005c: PUSH2 0x01f4
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0x313ce567
00000066: EQ
00000067: PUSH2 0x026d
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0x3bed33ce
00000071: EQ
00000072: PUSH2 0x029c
00000075: JUMPI
00000076: DUP1
00000077: PUSH4 0x42966c68
0000007c: EQ
0000007d: PUSH2 0x02bf
00000080: JUMPI
00000081: DUP1
00000082: PUSH4 0x6623fc46
00000087: EQ
00000088: PUSH2 0x02fa
0000008b: JUMPI
0000008c: DUP1
0000008d: PUSH4 0x70a08231
00000092: EQ
00000093: PUSH2 0x0335
00000096: JUMPI
00000097: DUP1
00000098: PUSH4 0x8da5cb5b
0000009d: EQ
0000009e: PUSH2 0x0382
000000a1: JUMPI
000000a2: DUP1
000000a3: PUSH4 0x95d89b41
000000a8: EQ
000000a9: PUSH2 0x03d7
000000ac: JUMPI
000000ad: DUP1
000000ae: PUSH4 0xa9059cbb
000000b3: EQ
000000b4: PUSH2 0x0466
000000b7: JUMPI
000000b8: DUP1
000000b9: PUSH4 0xcd4217c1
000000be: EQ
000000bf: PUSH2 0x04a8
000000c2: JUMPI
000000c3: DUP1
000000c4: PUSH4 0xd7a78db8
000000c9: EQ
000000ca: PUSH2 0x04f5
000000cd: JUMPI
000000ce: DUP1
000000cf: PUSH4 0xdd62ed3e
000000d4: EQ
000000d5: PUSH2 0x0530
000000d8: JUMPI
000000d9: JUMPDEST
000000da: PUSH2 0x00e0
000000dd: JUMPDEST
000000de: JUMPDEST
000000df: JUMP
000000e0: JUMPDEST
000000e1: STOP
000000e2: JUMPDEST
000000e3: CALLVALUE
000000e4: ISZERO
000000e5: PUSH2 0x00ed
000000e8: JUMPI
000000e9: PUSH1 0x00
000000eb: DUP1
000000ec: REVERT
000000ed: JUMPDEST
000000ee: PUSH2 0x00f5
000000f1: PUSH2 0x059c
000000f4: JUMP
000000f5: JUMPDEST
000000f6: PUSH1 0x40
000000f8: MLOAD
000000f9: DUP1
000000fa: DUP1
000000fb: PUSH1 0x20
000000fd: ADD
000000fe: DUP3
000000ff: DUP2
00000100: SUB
00000101: DUP3
00000102: MSTORE
00000103: DUP4
00000104: DUP2
00000105: DUP2
00000106: MLOAD
00000107: DUP2
00000108: MSTORE
00000109: PUSH1 0x20
0000010b: ADD
0000010c: SWAP2
0000010d: POP
0000010e: DUP1
0000010f: MLOAD
00000110: SWAP1
00000111: PUSH1 0x20
00000113: ADD
00000114: SWAP1
00000115: DUP1
00000116: DUP4
00000117: DUP4
00000118: PUSH1 0x00
0000011a: JUMPDEST
0000011b: DUP4
0000011c: DUP2
0000011d: LT
0000011e: ISZERO
0000011f: PUSH2 0x0136
00000122: JUMPI
00000123: DUP1
00000124: DUP3
00000125: ADD
00000126: MLOAD
00000127: DUP2
00000128: DUP5
00000129: ADD
0000012a: MSTORE
0000012b: JUMPDEST
0000012c: PUSH1 0x20
0000012e: DUP2
0000012f: ADD
00000130: SWAP1
00000131: POP
00000132: PUSH2 0x011a
00000135: JUMP
00000136: JUMPDEST
00000137: POP
00000138: POP
00000139: POP
0000013a: POP
0000013b: SWAP1
0000013c: POP
0000013d: SWAP1
0000013e: DUP2
0000013f: ADD
00000140: SWAP1
00000141: PUSH1 0x1f
00000143: AND
00000144: DUP1
00000145: ISZERO
00000146: PUSH2 0x0163
00000149: JUMPI
0000014a: DUP1
0000014b: DUP3
0000014c: SUB
0000014d: DUP1
0000014e: MLOAD
0000014f: PUSH1 0x01
00000151: DUP4
00000152: PUSH1 0x20
00000154: SUB
00000155: PUSH2 0x0100
00000158: EXP
00000159: SUB
0000015a: NOT
0000015b: AND
0000015c: DUP2
0000015d: MSTORE
0000015e: PUSH1 0x20
00000160: ADD
00000161: SWAP2
00000162: POP
00000163: JUMPDEST
00000164: POP
00000165: SWAP3
00000166: POP
00000167: POP
00000168: POP
00000169: PUSH1 0x40
0000016b: MLOAD
0000016c: DUP1
0000016d: SWAP2
0000016e: SUB
0000016f: SWAP1
00000170: RETURN
00000171: JUMPDEST
00000172: CALLVALUE
00000173: ISZERO
00000174: PUSH2 0x017c
00000177: JUMPI
00000178: PUSH1 0x00
0000017a: DUP1
0000017b: REVERT
0000017c: JUMPDEST
0000017d: PUSH2 0x01b1
00000180: PUSH1 0x04
00000182: DUP1
00000183: DUP1
00000184: CALLDATALOAD
00000185: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000019a: AND
0000019b: SWAP1
0000019c: PUSH1 0x20
0000019e: ADD
0000019f: SWAP1
000001a0: SWAP2
000001a1: SWAP1
000001a2: DUP1
000001a3: CALLDATALOAD
000001a4: SWAP1
000001a5: PUSH1 0x20
000001a7: ADD
000001a8: SWAP1
000001a9: SWAP2
000001aa: SWAP1
000001ab: POP
000001ac: POP
000001ad: PUSH2 0x063a
000001b0: JUMP
000001b1: JUMPDEST
000001b2: PUSH1 0x40
000001b4: MLOAD
000001b5: DUP1
000001b6: DUP3
000001b7: ISZERO
000001b8: ISZERO
000001b9: ISZERO
000001ba: ISZERO
000001bb: DUP2
000001bc: MSTORE
000001bd: PUSH1 0x20
000001bf: ADD
000001c0: SWAP2
000001c1: POP
000001c2: POP
000001c3: PUSH1 0x40
000001c5: MLOAD
000001c6: DUP1
000001c7: SWAP2
000001c8: SUB
000001c9: SWAP1
000001ca: RETURN
000001cb: JUMPDEST
000001cc: CALLVALUE
000001cd: ISZERO
000001ce: PUSH2 0x01d6
000001d1: JUMPI
000001d2: PUSH1 0x00
000001d4: DUP1
000001d5: REVERT
000001d6: JUMPDEST
000001d7: PUSH2 0x01de
000001da: PUSH2 0x06d6
000001dd: JUMP
000001de: JUMPDEST
000001df: PUSH1 0x40
000001e1: MLOAD
000001e2: DUP1
000001e3: DUP3
000001e4: DUP2
000001e5: MSTORE
000001e6: PUSH1 0x20
000001e8: ADD
000001e9: SWAP2
000001ea: POP
000001eb: POP
000001ec: PUSH1 0x40
000001ee: MLOAD
000001ef: DUP1
000001f0: SWAP2
000001f1: SUB
000001f2: SWAP1
000001f3: RETURN
000001f4: JUMPDEST
000001f5: CALLVALUE
000001f6: ISZERO
000001f7: PUSH2 0x01ff
000001fa: JUMPI
000001fb: PUSH1 0x00
000001fd: DUP1
000001fe: REVERT
000001ff: JUMPDEST
00000200: PUSH2 0x0253
00000203: PUSH1 0x04
00000205: DUP1
00000206: DUP1
00000207: CALLDATALOAD
00000208: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000021d: AND
0000021e: SWAP1
0000021f: PUSH1 0x20
00000221: ADD
00000222: SWAP1
00000223: SWAP2
00000224: SWAP1
00000225: DUP1
00000226: CALLDATALOAD
00000227: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000023c: AND
0000023d: SWAP1
0000023e: PUSH1 0x20
00000240: ADD
00000241: SWAP1
00000242: SWAP2
00000243: SWAP1
00000244: DUP1
00000245: CALLDATALOAD
00000246: SWAP1
00000247: PUSH1 0x20
00000249: ADD
0000024a: SWAP1
0000024b: SWAP2
0000024c: SWAP1
0000024d: POP
0000024e: POP
0000024f: PUSH2 0x06dc
00000252: JUMP
00000253: JUMPDEST
00000254: PUSH1 0x40
00000256: MLOAD
00000257: DUP1
00000258: DUP3
00000259: ISZERO
0000025a: ISZERO
0000025b: ISZERO
0000025c: ISZERO
0000025d: DUP2
0000025e: MSTORE
0000025f: PUSH1 0x20
00000261: ADD
00000262: SWAP2
00000263: POP
00000264: POP
00000265: PUSH1 0x40
00000267: MLOAD
00000268: DUP1
00000269: SWAP2
0000026a: SUB
0000026b: SWAP1
0000026c: RETURN
0000026d: JUMPDEST
0000026e: CALLVALUE
0000026f: ISZERO
00000270: PUSH2 0x0278
00000273: JUMPI
00000274: PUSH1 0x00
00000276: DUP1
00000277: REVERT
00000278: JUMPDEST
00000279: PUSH2 0x0280
0000027c: PUSH2 0x0b01
0000027f: JUMP
00000280: JUMPDEST
00000281: PUSH1 0x40
00000283: MLOAD
00000284: DUP1
00000285: DUP3
00000286: PUSH1 0xff
00000288: AND
00000289: PUSH1 0xff
0000028b: AND
0000028c: DUP2
0000028d: MSTORE
0000028e: PUSH1 0x20
00000290: ADD
00000291: SWAP2
00000292: POP
00000293: POP
00000294: PUSH1 0x40
00000296: MLOAD
00000297: DUP1
00000298: SWAP2
00000299: SUB
0000029a: SWAP1
0000029b: RETURN
0000029c: JUMPDEST
0000029d: CALLVALUE
0000029e: ISZERO
0000029f: PUSH2 0x02a7
000002a2: JUMPI
000002a3: PUSH1 0x00
000002a5: DUP1
000002a6: REVERT
000002a7: JUMPDEST
000002a8: PUSH2 0x02bd
000002ab: PUSH1 0x04
000002ad: DUP1
000002ae: DUP1
000002af: CALLDATALOAD
000002b0: SWAP1
000002b1: PUSH1 0x20
000002b3: ADD
000002b4: SWAP1
000002b5: SWAP2
000002b6: SWAP1
000002b7: POP
000002b8: POP
000002b9: PUSH2 0x0b14
000002bc: JUMP
000002bd: JUMPDEST
000002be: STOP
000002bf: JUMPDEST
000002c0: CALLVALUE
000002c1: ISZERO
000002c2: PUSH2 0x02ca
000002c5: JUMPI
000002c6: PUSH1 0x00
000002c8: DUP1
000002c9: REVERT
000002ca: JUMPDEST
000002cb: PUSH2 0x02e0
000002ce: PUSH1 0x04
000002d0: DUP1
000002d1: DUP1
000002d2: CALLDATALOAD
000002d3: SWAP1
000002d4: PUSH1 0x20
000002d6: ADD
000002d7: SWAP1
000002d8: SWAP2
000002d9: SWAP1
000002da: POP
000002db: POP
000002dc: PUSH2 0x0bd6
000002df: JUMP
000002e0: JUMPDEST
000002e1: PUSH1 0x40
000002e3: MLOAD
000002e4: DUP1
000002e5: DUP3
000002e6: ISZERO
000002e7: ISZERO
000002e8: ISZERO
000002e9: ISZERO
000002ea: DUP2
000002eb: MSTORE
000002ec: PUSH1 0x20
000002ee: ADD
000002ef: SWAP2
000002f0: POP
000002f1: POP
000002f2: PUSH1 0x40
000002f4: MLOAD
000002f5: DUP1
000002f6: SWAP2
000002f7: SUB
000002f8: SWAP1
000002f9: RETURN
000002fa: JUMPDEST
000002fb: CALLVALUE
000002fc: ISZERO
000002fd: PUSH2 0x0305
00000300: JUMPI
00000301: PUSH1 0x00
00000303: DUP1
00000304: REVERT
00000305: JUMPDEST
00000306: PUSH2 0x031b
00000309: PUSH1 0x04
0000030b: DUP1
0000030c: DUP1
0000030d: CALLDATALOAD
0000030e: SWAP1
0000030f: PUSH1 0x20
00000311: ADD
00000312: SWAP1
00000313: SWAP2
00000314: SWAP1
00000315: POP
00000316: POP
00000317: PUSH2 0x0d29
0000031a: JUMP
0000031b: JUMPDEST
0000031c: PUSH1 0x40
0000031e: MLOAD
0000031f: DUP1
00000320: DUP3
00000321: ISZERO
00000322: ISZERO
00000323: ISZERO
00000324: ISZERO
00000325: DUP2
00000326: MSTORE
00000327: PUSH1 0x20
00000329: ADD
0000032a: SWAP2
0000032b: POP
0000032c: POP
0000032d: PUSH1 0x40
0000032f: MLOAD
00000330: DUP1
00000331: SWAP2
00000332: SUB
00000333: SWAP1
00000334: RETURN
00000335: JUMPDEST
00000336: CALLVALUE
00000337: ISZERO
00000338: PUSH2 0x0340
0000033b: JUMPI
0000033c: PUSH1 0x00
0000033e: DUP1
0000033f: REVERT
00000340: JUMPDEST
00000341: PUSH2 0x036c
00000344: PUSH1 0x04
00000346: DUP1
00000347: DUP1
00000348: CALLDATALOAD
00000349: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000035e: AND
0000035f: SWAP1
00000360: PUSH1 0x20
00000362: ADD
00000363: SWAP1
00000364: SWAP2
00000365: SWAP1
00000366: POP
00000367: POP
00000368: PUSH2 0x0ef6
0000036b: JUMP
0000036c: JUMPDEST
0000036d: PUSH1 0x40
0000036f: MLOAD
00000370: DUP1
00000371: DUP3
00000372: DUP2
00000373: MSTORE
00000374: PUSH1 0x20
00000376: ADD
00000377: SWAP2
00000378: POP
00000379: POP
0000037a: PUSH1 0x40
0000037c: MLOAD
0000037d: DUP1
0000037e: SWAP2
0000037f: SUB
00000380: SWAP1
00000381: RETURN
00000382: JUMPDEST
00000383: CALLVALUE
00000384: ISZERO
00000385: PUSH2 0x038d
00000388: JUMPI
00000389: PUSH1 0x00
0000038b: DUP1
0000038c: REVERT
0000038d: JUMPDEST
0000038e: PUSH2 0x0395
00000391: PUSH2 0x0f0e
00000394: JUMP
00000395: JUMPDEST
00000396: PUSH1 0x40
00000398: MLOAD
00000399: DUP1
0000039a: DUP3
0000039b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003b0: AND
000003b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003c6: AND
000003c7: DUP2
000003c8: MSTORE
000003c9: PUSH1 0x20
000003cb: ADD
000003cc: SWAP2
000003cd: POP
000003ce: POP
000003cf: PUSH1 0x40
000003d1: MLOAD
000003d2: DUP1
000003d3: SWAP2
000003d4: SUB
000003d5: SWAP1
000003d6: RETURN
000003d7: JUMPDEST
000003d8: CALLVALUE
000003d9: ISZERO
000003da: PUSH2 0x03e2
000003dd: JUMPI
000003de: PUSH1 0x00
000003e0: DUP1
000003e1: REVERT
000003e2: JUMPDEST
000003e3: PUSH2 0x03ea
000003e6: PUSH2 0x0f34
000003e9: JUMP
000003ea: JUMPDEST
000003eb: PUSH1 0x40
000003ed: MLOAD
000003ee: DUP1
000003ef: DUP1
000003f0: PUSH1 0x20
000003f2: ADD
000003f3: DUP3
000003f4: DUP2
000003f5: SUB
000003f6: DUP3
000003f7: MSTORE
000003f8: DUP4
000003f9: DUP2
000003fa: DUP2
000003fb: MLOAD
000003fc: DUP2
000003fd: MSTORE
000003fe: PUSH1 0x20
00000400: ADD
00000401: SWAP2
00000402: POP
00000403: DUP1
00000404: MLOAD
00000405: SWAP1
00000406: PUSH1 0x20
00000408: ADD
00000409: SWAP1
0000040a: DUP1
0000040b: DUP4
0000040c: DUP4
0000040d: PUSH1 0x00
0000040f: JUMPDEST
00000410: DUP4
00000411: DUP2
00000412: LT
00000413: ISZERO
00000414: PUSH2 0x042b
00000417: JUMPI
00000418: DUP1
00000419: DUP3
0000041a: ADD
0000041b: MLOAD
0000041c: DUP2
0000041d: DUP5
0000041e: ADD
0000041f: MSTORE
00000420: JUMPDEST
00000421: PUSH1 0x20
00000423: DUP2
00000424: ADD
00000425: SWAP1
00000426: POP
00000427: PUSH2 0x040f
0000042a: JUMP
0000042b: JUMPDEST
0000042c: POP
0000042d: POP
0000042e: POP
0000042f: POP
00000430: SWAP1
00000431: POP
00000432: SWAP1
00000433: DUP2
00000434: ADD
00000435: SWAP1
00000436: PUSH1 0x1f
00000438: AND
00000439: DUP1
0000043a: ISZERO
0000043b: PUSH2 0x0458
0000043e: JUMPI
0000043f: DUP1
00000440: DUP3
00000441: SUB
00000442: DUP1
00000443: MLOAD
00000444: PUSH1 0x01
00000446: DUP4
00000447: PUSH1 0x20
00000449: SUB
0000044a: PUSH2 0x0100
0000044d: EXP
0000044e: SUB
0000044f: NOT
00000450: AND
00000451: DUP2
00000452: MSTORE
00000453: PUSH1 0x20
00000455: ADD
00000456: SWAP2
00000457: POP
00000458: JUMPDEST
00000459: POP
0000045a: SWAP3
0000045b: POP
0000045c: POP
0000045d: POP
0000045e: PUSH1 0x40
00000460: MLOAD
00000461: DUP1
00000462: SWAP2
00000463: SUB
00000464: SWAP1
00000465: RETURN
00000466: JUMPDEST
00000467: CALLVALUE
00000468: ISZERO
00000469: PUSH2 0x0471
0000046c: JUMPI
0000046d: PUSH1 0x00
0000046f: DUP1
00000470: REVERT
00000471: JUMPDEST
00000472: PUSH2 0x04a6
00000475: PUSH1 0x04
00000477: DUP1
00000478: DUP1
00000479: CALLDATALOAD
0000047a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000048f: AND
00000490: SWAP1
00000491: PUSH1 0x20
00000493: ADD
00000494: SWAP1
00000495: SWAP2
00000496: SWAP1
00000497: DUP1
00000498: CALLDATALOAD
00000499: SWAP1
0000049a: PUSH1 0x20
0000049c: ADD
0000049d: SWAP1
0000049e: SWAP2
0000049f: SWAP1
000004a0: POP
000004a1: POP
000004a2: PUSH2 0x0fd2
000004a5: JUMP
000004a6: JUMPDEST
000004a7: STOP
000004a8: JUMPDEST
000004a9: CALLVALUE
000004aa: ISZERO
000004ab: PUSH2 0x04b3
000004ae: JUMPI
000004af: PUSH1 0x00
000004b1: DUP1
000004b2: REVERT
000004b3: JUMPDEST
000004b4: PUSH2 0x04df
000004b7: PUSH1 0x04
000004b9: DUP1
000004ba: DUP1
000004bb: CALLDATALOAD
000004bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004d1: AND
000004d2: SWAP1
000004d3: PUSH1 0x20
000004d5: ADD
000004d6: SWAP1
000004d7: SWAP2
000004d8: SWAP1
000004d9: POP
000004da: POP
000004db: PUSH2 0x1260
000004de: JUMP
000004df: JUMPDEST
000004e0: PUSH1 0x40
000004e2: MLOAD
000004e3: DUP1
000004e4: DUP3
000004e5: DUP2
000004e6: MSTORE
000004e7: PUSH1 0x20
000004e9: ADD
000004ea: SWAP2
000004eb: POP
000004ec: POP
000004ed: PUSH1 0x40
000004ef: MLOAD
000004f0: DUP1
000004f1: SWAP2
000004f2: SUB
000004f3: SWAP1
000004f4: RETURN
000004f5: JUMPDEST
000004f6: CALLVALUE
000004f7: ISZERO
000004f8: PUSH2 0x0500
000004fb: JUMPI
000004fc: PUSH1 0x00
000004fe: DUP1
000004ff: REVERT
00000500: JUMPDEST
00000501: PUSH2 0x0516
00000504: PUSH1 0x04
00000506: DUP1
00000507: DUP1
00000508: CALLDATALOAD
00000509: SWAP1
0000050a: PUSH1 0x20
0000050c: ADD
0000050d: SWAP1
0000050e: SWAP2
0000050f: SWAP1
00000510: POP
00000511: POP
00000512: PUSH2 0x1278
00000515: JUMP
00000516: JUMPDEST
00000517: PUSH1 0x40
00000519: MLOAD
0000051a: DUP1
0000051b: DUP3
0000051c: ISZERO
0000051d: ISZERO
0000051e: ISZERO
0000051f: ISZERO
00000520: DUP2
00000521: MSTORE
00000522: PUSH1 0x20
00000524: ADD
00000525: SWAP2
00000526: POP
00000527: POP
00000528: PUSH1 0x40
0000052a: MLOAD
0000052b: DUP1
0000052c: SWAP2
0000052d: SUB
0000052e: SWAP1
0000052f: RETURN
00000530: JUMPDEST
00000531: CALLVALUE
00000532: ISZERO
00000533: PUSH2 0x053b
00000536: JUMPI
00000537: PUSH1 0x00
00000539: DUP1
0000053a: REVERT
0000053b: JUMPDEST
0000053c: PUSH2 0x0586
0000053f: PUSH1 0x04
00000541: DUP1
00000542: DUP1
00000543: CALLDATALOAD
00000544: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000559: AND
0000055a: SWAP1
0000055b: PUSH1 0x20
0000055d: ADD
0000055e: SWAP1
0000055f: SWAP2
00000560: SWAP1
00000561: DUP1
00000562: CALLDATALOAD
00000563: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000578: AND
00000579: SWAP1
0000057a: PUSH1 0x20
0000057c: ADD
0000057d: SWAP1
0000057e: SWAP2
0000057f: SWAP1
00000580: POP
00000581: POP
00000582: PUSH2 0x1445
00000585: JUMP
00000586: JUMPDEST
00000587: PUSH1 0x40
00000589: MLOAD
0000058a: DUP1
0000058b: DUP3
0000058c: DUP2
0000058d: MSTORE
0000058e: PUSH1 0x20
00000590: ADD
00000591: SWAP2
00000592: POP
00000593: POP
00000594: PUSH1 0x40
00000596: MLOAD
00000597: DUP1
00000598: SWAP2
00000599: SUB
0000059a: SWAP1
0000059b: RETURN
0000059c: JUMPDEST
0000059d: PUSH1 0x00
0000059f: DUP1
000005a0: SLOAD
000005a1: PUSH1 0x01
000005a3: DUP2
000005a4: PUSH1 0x01
000005a6: AND
000005a7: ISZERO
000005a8: PUSH2 0x0100
000005ab: MUL
000005ac: SUB
000005ad: AND
000005ae: PUSH1 0x02
000005b0: SWAP1
000005b1: DIV
000005b2: DUP1
000005b3: PUSH1 0x1f
000005b5: ADD
000005b6: PUSH1 0x20
000005b8: DUP1
000005b9: SWAP2
000005ba: DIV
000005bb: MUL
000005bc: PUSH1 0x20
000005be: ADD
000005bf: PUSH1 0x40
000005c1: MLOAD
000005c2: SWAP1
000005c3: DUP2
000005c4: ADD
000005c5: PUSH1 0x40
000005c7: MSTORE
000005c8: DUP1
000005c9: SWAP3
000005ca: SWAP2
000005cb: SWAP1
000005cc: DUP2
000005cd: DUP2
000005ce: MSTORE
000005cf: PUSH1 0x20
000005d1: ADD
000005d2: DUP3
000005d3: DUP1
000005d4: SLOAD
000005d5: PUSH1 0x01
000005d7: DUP2
000005d8: PUSH1 0x01
000005da: AND
000005db: ISZERO
000005dc: PUSH2 0x0100
000005df: MUL
000005e0: SUB
000005e1: AND
000005e2: PUSH1 0x02
000005e4: SWAP1
000005e5: DIV
000005e6: DUP1
000005e7: ISZERO
000005e8: PUSH2 0x0632
000005eb: JUMPI
000005ec: DUP1
000005ed: PUSH1 0x1f
000005ef: LT
000005f0: PUSH2 0x0607
000005f3: JUMPI
000005f4: PUSH2 0x0100
000005f7: DUP1
000005f8: DUP4
000005f9: SLOAD
000005fa: DIV
000005fb: MUL
000005fc: DUP4
000005fd: MSTORE
000005fe: SWAP2
000005ff: PUSH1 0x20
00000601: ADD
00000602: SWAP2
00000603: PUSH2 0x0632
00000606: JUMP
00000607: JUMPDEST
00000608: DUP3
00000609: ADD
0000060a: SWAP2
0000060b: SWAP1
0000060c: PUSH1 0x00
0000060e: MSTORE
0000060f: PUSH1 0x20
00000611: PUSH1 0x00
00000613: KECCAK256
00000614: SWAP1
00000615: JUMPDEST
00000616: DUP2
00000617: SLOAD
00000618: DUP2
00000619: MSTORE
0000061a: SWAP1
0000061b: PUSH1 0x01
0000061d: ADD
0000061e: SWAP1
0000061f: PUSH1 0x20
00000621: ADD
00000622: DUP1
00000623: DUP4
00000624: GT
00000625: PUSH2 0x0615
00000628: JUMPI
00000629: DUP3
0000062a: SWAP1
0000062b: SUB
0000062c: PUSH1 0x1f
0000062e: AND
0000062f: DUP3
00000630: ADD
00000631: SWAP2
00000632: JUMPDEST
00000633: POP
00000634: POP
00000635: POP
00000636: POP
00000637: POP
00000638: DUP2
00000639: JUMP
0000063a: JUMPDEST
0000063b: PUSH1 0x00
0000063d: DUP1
0000063e: DUP3
0000063f: GT
00000640: ISZERO
00000641: ISZERO
00000642: PUSH2 0x064a
00000645: JUMPI
00000646: PUSH1 0x00
00000648: DUP1
00000649: REVERT
0000064a: JUMPDEST
0000064b: DUP2
0000064c: PUSH1 0x07
0000064e: PUSH1 0x00
00000650: CALLER
00000651: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000666: AND
00000667: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000067c: AND
0000067d: DUP2
0000067e: MSTORE
0000067f: PUSH1 0x20
00000681: ADD
00000682: SWAP1
00000683: DUP2
00000684: MSTORE
00000685: PUSH1 0x20
00000687: ADD
00000688: PUSH1 0x00
0000068a: KECCAK256
0000068b: PUSH1 0x00
0000068d: DUP6
0000068e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006a3: AND
000006a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006b9: AND
000006ba: DUP2
000006bb: MSTORE
000006bc: PUSH1 0x20
000006be: ADD
000006bf: SWAP1
000006c0: DUP2
000006c1: MSTORE
000006c2: PUSH1 0x20
000006c4: ADD
000006c5: PUSH1 0x00
000006c7: KECCAK256
000006c8: DUP2
000006c9: SWAP1
000006ca: SSTORE
000006cb: POP
000006cc: PUSH1 0x01
000006ce: SWAP1
000006cf: POP
000006d0: JUMPDEST
000006d1: SWAP3
000006d2: SWAP2
000006d3: POP
000006d4: POP
000006d5: JUMP
000006d6: JUMPDEST
000006d7: PUSH1 0x03
000006d9: SLOAD
000006da: DUP2
000006db: JUMP
000006dc: JUMPDEST
000006dd: PUSH1 0x00
000006df: DUP1
000006e0: DUP4
000006e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006f6: AND
000006f7: EQ
000006f8: ISZERO
000006f9: PUSH2 0x0701
000006fc: JUMPI
000006fd: PUSH1 0x00
000006ff: DUP1
00000700: REVERT
00000701: JUMPDEST
00000702: PUSH1 0x00
00000704: DUP3
00000705: GT
00000706: ISZERO
00000707: ISZERO
00000708: PUSH2 0x0710
0000070b: JUMPI
0000070c: PUSH1 0x00
0000070e: DUP1
0000070f: REVERT
00000710: JUMPDEST
00000711: DUP2
00000712: PUSH1 0x05
00000714: PUSH1 0x00
00000716: DUP7
00000717: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000072c: AND
0000072d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000742: AND
00000743: DUP2
00000744: MSTORE
00000745: PUSH1 0x20
00000747: ADD
00000748: SWAP1
00000749: DUP2
0000074a: MSTORE
0000074b: PUSH1 0x20
0000074d: ADD
0000074e: PUSH1 0x00
00000750: KECCAK256
00000751: SLOAD
00000752: LT
00000753: ISZERO
00000754: PUSH2 0x075c
00000757: JUMPI
00000758: PUSH1 0x00
0000075a: DUP1
0000075b: REVERT
0000075c: JUMPDEST
0000075d: PUSH1 0x05
0000075f: PUSH1 0x00
00000761: DUP5
00000762: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000777: AND
00000778: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000078d: AND
0000078e: DUP2
0000078f: MSTORE
00000790: PUSH1 0x20
00000792: ADD
00000793: SWAP1
00000794: DUP2
00000795: MSTORE
00000796: PUSH1 0x20
00000798: ADD
00000799: PUSH1 0x00
0000079b: KECCAK256
0000079c: SLOAD
0000079d: DUP3
0000079e: PUSH1 0x05
000007a0: PUSH1 0x00
000007a2: DUP7
000007a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007b8: AND
000007b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ce: AND
000007cf: DUP2
000007d0: MSTORE
000007d1: PUSH1 0x20
000007d3: ADD
000007d4: SWAP1
000007d5: DUP2
000007d6: MSTORE
000007d7: PUSH1 0x20
000007d9: ADD
000007da: PUSH1 0x00
000007dc: KECCAK256
000007dd: SLOAD
000007de: ADD
000007df: LT
000007e0: ISZERO
000007e1: PUSH2 0x07e9
000007e4: JUMPI
000007e5: PUSH1 0x00
000007e7: DUP1
000007e8: REVERT
000007e9: JUMPDEST
000007ea: PUSH1 0x07
000007ec: PUSH1 0x00
000007ee: DUP6
000007ef: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000804: AND
00000805: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000081a: AND
0000081b: DUP2
0000081c: MSTORE
0000081d: PUSH1 0x20
0000081f: ADD
00000820: SWAP1
00000821: DUP2
00000822: MSTORE
00000823: PUSH1 0x20
00000825: ADD
00000826: PUSH1 0x00
00000828: KECCAK256
00000829: PUSH1 0x00
0000082b: CALLER
0000082c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000841: AND
00000842: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000857: AND
00000858: DUP2
00000859: MSTORE
0000085a: PUSH1 0x20
0000085c: ADD
0000085d: SWAP1
0000085e: DUP2
0000085f: MSTORE
00000860: PUSH1 0x20
00000862: ADD
00000863: PUSH1 0x00
00000865: KECCAK256
00000866: SLOAD
00000867: DUP3
00000868: GT
00000869: ISZERO
0000086a: PUSH2 0x0872
0000086d: JUMPI
0000086e: PUSH1 0x00
00000870: DUP1
00000871: REVERT
00000872: JUMPDEST
00000873: PUSH2 0x08bb
00000876: PUSH1 0x05
00000878: PUSH1 0x00
0000087a: DUP7
0000087b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000890: AND
00000891: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008a6: AND
000008a7: DUP2
000008a8: MSTORE
000008a9: PUSH1 0x20
000008ab: ADD
000008ac: SWAP1
000008ad: DUP2
000008ae: MSTORE
000008af: PUSH1 0x20
000008b1: ADD
000008b2: PUSH1 0x00
000008b4: KECCAK256
000008b5: SLOAD
000008b6: DUP4
000008b7: PUSH2 0x146a
000008ba: JUMP
000008bb: JUMPDEST
000008bc: PUSH1 0x05
000008be: PUSH1 0x00
000008c0: DUP7
000008c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008d6: AND
000008d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008ec: AND
000008ed: DUP2
000008ee: MSTORE
000008ef: PUSH1 0x20
000008f1: ADD
000008f2: SWAP1
000008f3: DUP2
000008f4: MSTORE
000008f5: PUSH1 0x20
000008f7: ADD
000008f8: PUSH1 0x00
000008fa: KECCAK256
000008fb: DUP2
000008fc: SWAP1
000008fd: SSTORE
000008fe: POP
000008ff: PUSH2 0x0947
00000902: PUSH1 0x05
00000904: PUSH1 0x00
00000906: DUP6
00000907: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000091c: AND
0000091d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000932: AND
00000933: DUP2
00000934: MSTORE
00000935: PUSH1 0x20
00000937: ADD
00000938: SWAP1
00000939: DUP2
0000093a: MSTORE
0000093b: PUSH1 0x20
0000093d: ADD
0000093e: PUSH1 0x00
00000940: KECCAK256
00000941: SLOAD
00000942: DUP4
00000943: PUSH2 0x1484
00000946: JUMP
00000947: JUMPDEST
00000948: PUSH1 0x05
0000094a: PUSH1 0x00
0000094c: DUP6
0000094d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000962: AND
00000963: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000978: AND
00000979: DUP2
0000097a: MSTORE
0000097b: PUSH1 0x20
0000097d: ADD
0000097e: SWAP1
0000097f: DUP2
00000980: MSTORE
00000981: PUSH1 0x20
00000983: ADD
00000984: PUSH1 0x00
00000986: KECCAK256
00000987: DUP2
00000988: SWAP1
00000989: SSTORE
0000098a: POP
0000098b: PUSH2 0x0a10
0000098e: PUSH1 0x07
00000990: PUSH1 0x00
00000992: DUP7
00000993: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009a8: AND
000009a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009be: AND
000009bf: DUP2
000009c0: MSTORE
000009c1: PUSH1 0x20
000009c3: ADD
000009c4: SWAP1
000009c5: DUP2
000009c6: MSTORE
000009c7: PUSH1 0x20
000009c9: ADD
000009ca: PUSH1 0x00
000009cc: KECCAK256
000009cd: PUSH1 0x00
000009cf: CALLER
000009d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009e5: AND
000009e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009fb: AND
000009fc: DUP2
000009fd: MSTORE
000009fe: PUSH1 0x20
00000a00: ADD
00000a01: SWAP1
00000a02: DUP2
00000a03: MSTORE
00000a04: PUSH1 0x20
00000a06: ADD
00000a07: PUSH1 0x00
00000a09: KECCAK256
00000a0a: SLOAD
00000a0b: DUP4
00000a0c: PUSH2 0x146a
00000a0f: JUMP
00000a10: JUMPDEST
00000a11: PUSH1 0x07
00000a13: PUSH1 0x00
00000a15: DUP7
00000a16: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a2b: AND
00000a2c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a41: AND
00000a42: DUP2
00000a43: MSTORE
00000a44: PUSH1 0x20
00000a46: ADD
00000a47: SWAP1
00000a48: DUP2
00000a49: MSTORE
00000a4a: PUSH1 0x20
00000a4c: ADD
00000a4d: PUSH1 0x00
00000a4f: KECCAK256
00000a50: PUSH1 0x00
00000a52: CALLER
00000a53: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a68: AND
00000a69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a7e: AND
00000a7f: DUP2
00000a80: MSTORE
00000a81: PUSH1 0x20
00000a83: ADD
00000a84: SWAP1
00000a85: DUP2
00000a86: MSTORE
00000a87: PUSH1 0x20
00000a89: ADD
00000a8a: PUSH1 0x00
00000a8c: KECCAK256
00000a8d: DUP2
00000a8e: SWAP1
00000a8f: SSTORE
00000a90: POP
00000a91: DUP3
00000a92: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aa7: AND
00000aa8: DUP5
00000aa9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000abe: AND
00000abf: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00000ae0: DUP5
00000ae1: PUSH1 0x40
00000ae3: MLOAD
00000ae4: DUP1
00000ae5: DUP3
00000ae6: DUP2
00000ae7: MSTORE
00000ae8: PUSH1 0x20
00000aea: ADD
00000aeb: SWAP2
00000aec: POP
00000aed: POP
00000aee: PUSH1 0x40
00000af0: MLOAD
00000af1: DUP1
00000af2: SWAP2
00000af3: SUB
00000af4: SWAP1
00000af5: LOG3
00000af6: PUSH1 0x01
00000af8: SWAP1
00000af9: POP
00000afa: JUMPDEST
00000afb: SWAP4
00000afc: SWAP3
00000afd: POP
00000afe: POP
00000aff: POP
00000b00: JUMP
00000b01: JUMPDEST
00000b02: PUSH1 0x02
00000b04: PUSH1 0x00
00000b06: SWAP1
00000b07: SLOAD
00000b08: SWAP1
00000b09: PUSH2 0x0100
00000b0c: EXP
00000b0d: SWAP1
00000b0e: DIV
00000b0f: PUSH1 0xff
00000b11: AND
00000b12: DUP2
00000b13: JUMP
00000b14: JUMPDEST
00000b15: PUSH1 0x04
00000b17: PUSH1 0x00
00000b19: SWAP1
00000b1a: SLOAD
00000b1b: SWAP1
00000b1c: PUSH2 0x0100
00000b1f: EXP
00000b20: SWAP1
00000b21: DIV
00000b22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b37: AND
00000b38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b4d: AND
00000b4e: CALLER
00000b4f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b64: AND
00000b65: EQ
00000b66: ISZERO
00000b67: ISZERO
00000b68: PUSH2 0x0b70
00000b6b: JUMPI
00000b6c: PUSH1 0x00
00000b6e: DUP1
00000b6f: REVERT
00000b70: JUMPDEST
00000b71: PUSH1 0x04
00000b73: PUSH1 0x00
00000b75: SWAP1
00000b76: SLOAD
00000b77: SWAP1
00000b78: PUSH2 0x0100
00000b7b: EXP
00000b7c: SWAP1
00000b7d: DIV
00000b7e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b93: AND
00000b94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ba9: AND
00000baa: PUSH2 0x08fc
00000bad: DUP3
00000bae: SWAP1
00000baf: DUP2
00000bb0: ISZERO
00000bb1: MUL
00000bb2: SWAP1
00000bb3: PUSH1 0x40
00000bb5: MLOAD
00000bb6: PUSH1 0x00
00000bb8: PUSH1 0x40
00000bba: MLOAD
00000bbb: DUP1
00000bbc: DUP4
00000bbd: SUB
00000bbe: DUP2
00000bbf: DUP6
00000bc0: DUP9
00000bc1: DUP9
00000bc2: CALL
00000bc3: SWAP4
00000bc4: POP
00000bc5: POP
00000bc6: POP
00000bc7: POP
00000bc8: ISZERO
00000bc9: ISZERO
00000bca: PUSH2 0x0bd2
00000bcd: JUMPI
00000bce: PUSH1 0x00
00000bd0: DUP1
00000bd1: REVERT
00000bd2: JUMPDEST
00000bd3: JUMPDEST
00000bd4: POP
00000bd5: JUMP
00000bd6: JUMPDEST
00000bd7: PUSH1 0x00
00000bd9: DUP2
00000bda: PUSH1 0x05
00000bdc: PUSH1 0x00
00000bde: CALLER
00000bdf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bf4: AND
00000bf5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c0a: AND
00000c0b: DUP2
00000c0c: MSTORE
00000c0d: PUSH1 0x20
00000c0f: ADD
00000c10: SWAP1
00000c11: DUP2
00000c12: MSTORE
00000c13: PUSH1 0x20
00000c15: ADD
00000c16: PUSH1 0x00
00000c18: KECCAK256
00000c19: SLOAD
00000c1a: LT
00000c1b: ISZERO
00000c1c: PUSH2 0x0c24
00000c1f: JUMPI
00000c20: PUSH1 0x00
00000c22: DUP1
00000c23: REVERT
00000c24: JUMPDEST
00000c25: PUSH1 0x00
00000c27: DUP3
00000c28: GT
00000c29: ISZERO
00000c2a: ISZERO
00000c2b: PUSH2 0x0c33
00000c2e: JUMPI
00000c2f: PUSH1 0x00
00000c31: DUP1
00000c32: REVERT
00000c33: JUMPDEST
00000c34: PUSH2 0x0c7c
00000c37: PUSH1 0x05
00000c39: PUSH1 0x00
00000c3b: CALLER
00000c3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c51: AND
00000c52: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c67: AND
00000c68: DUP2
00000c69: MSTORE
00000c6a: PUSH1 0x20
00000c6c: ADD
00000c6d: SWAP1
00000c6e: DUP2
00000c6f: MSTORE
00000c70: PUSH1 0x20
00000c72: ADD
00000c73: PUSH1 0x00
00000c75: KECCAK256
00000c76: SLOAD
00000c77: DUP4
00000c78: PUSH2 0x146a
00000c7b: JUMP
00000c7c: JUMPDEST
00000c7d: PUSH1 0x05
00000c7f: PUSH1 0x00
00000c81: CALLER
00000c82: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c97: AND
00000c98: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cad: AND
00000cae: DUP2
00000caf: MSTORE
00000cb0: PUSH1 0x20
00000cb2: ADD
00000cb3: SWAP1
00000cb4: DUP2
00000cb5: MSTORE
00000cb6: PUSH1 0x20
00000cb8: ADD
00000cb9: PUSH1 0x00
00000cbb: KECCAK256
00000cbc: DUP2
00000cbd: SWAP1
00000cbe: SSTORE
00000cbf: POP
00000cc0: PUSH2 0x0ccb
00000cc3: PUSH1 0x03
00000cc5: SLOAD
00000cc6: DUP4
00000cc7: PUSH2 0x146a
00000cca: JUMP
00000ccb: JUMPDEST
00000ccc: PUSH1 0x03
00000cce: DUP2
00000ccf: SWAP1
00000cd0: SSTORE
00000cd1: POP
00000cd2: CALLER
00000cd3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ce8: AND
00000ce9: PUSH32 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5
00000d0a: DUP4
00000d0b: PUSH1 0x40
00000d0d: MLOAD
00000d0e: DUP1
00000d0f: DUP3
00000d10: DUP2
00000d11: MSTORE
00000d12: PUSH1 0x20
00000d14: ADD
00000d15: SWAP2
00000d16: POP
00000d17: POP
00000d18: PUSH1 0x40
00000d1a: MLOAD
00000d1b: DUP1
00000d1c: SWAP2
00000d1d: SUB
00000d1e: SWAP1
00000d1f: LOG2
00000d20: PUSH1 0x01
00000d22: SWAP1
00000d23: POP
00000d24: JUMPDEST
00000d25: SWAP2
00000d26: SWAP1
00000d27: POP
00000d28: JUMP
00000d29: JUMPDEST
00000d2a: PUSH1 0x00
00000d2c: DUP2
00000d2d: PUSH1 0x06
00000d2f: PUSH1 0x00
00000d31: CALLER
00000d32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d47: AND
00000d48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d5d: AND
00000d5e: DUP2
00000d5f: MSTORE
00000d60: PUSH1 0x20
00000d62: ADD
00000d63: SWAP1
00000d64: DUP2
00000d65: MSTORE
00000d66: PUSH1 0x20
00000d68: ADD
00000d69: PUSH1 0x00
00000d6b: KECCAK256
00000d6c: SLOAD
00000d6d: LT
00000d6e: ISZERO
00000d6f: PUSH2 0x0d77
00000d72: JUMPI
00000d73: PUSH1 0x00
00000d75: DUP1
00000d76: REVERT
00000d77: JUMPDEST
00000d78: PUSH1 0x00
00000d7a: DUP3
00000d7b: GT
00000d7c: ISZERO
00000d7d: ISZERO
00000d7e: PUSH2 0x0d86
00000d81: JUMPI
00000d82: PUSH1 0x00
00000d84: DUP1
00000d85: REVERT
00000d86: JUMPDEST
00000d87: PUSH2 0x0dcf
00000d8a: PUSH1 0x06
00000d8c: PUSH1 0x00
00000d8e: CALLER
00000d8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000da4: AND
00000da5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dba: AND
00000dbb: DUP2
00000dbc: MSTORE
00000dbd: PUSH1 0x20
00000dbf: ADD
00000dc0: SWAP1
00000dc1: DUP2
00000dc2: MSTORE
00000dc3: PUSH1 0x20
00000dc5: ADD
00000dc6: PUSH1 0x00
00000dc8: KECCAK256
00000dc9: SLOAD
00000dca: DUP4
00000dcb: PUSH2 0x146a
00000dce: JUMP
00000dcf: JUMPDEST
00000dd0: PUSH1 0x06
00000dd2: PUSH1 0x00
00000dd4: CALLER
00000dd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dea: AND
00000deb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e00: AND
00000e01: DUP2
00000e02: MSTORE
00000e03: PUSH1 0x20
00000e05: ADD
00000e06: SWAP1
00000e07: DUP2
00000e08: MSTORE
00000e09: PUSH1 0x20
00000e0b: ADD
00000e0c: PUSH1 0x00
00000e0e: KECCAK256
00000e0f: DUP2
00000e10: SWAP1
00000e11: SSTORE
00000e12: POP
00000e13: PUSH2 0x0e5b
00000e16: PUSH1 0x05
00000e18: PUSH1 0x00
00000e1a: CALLER
00000e1b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e30: AND
00000e31: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e46: AND
00000e47: DUP2
00000e48: MSTORE
00000e49: PUSH1 0x20
00000e4b: ADD
00000e4c: SWAP1
00000e4d: DUP2
00000e4e: MSTORE
00000e4f: PUSH1 0x20
00000e51: ADD
00000e52: PUSH1 0x00
00000e54: KECCAK256
00000e55: SLOAD
00000e56: DUP4
00000e57: PUSH2 0x1484
00000e5a: JUMP
00000e5b: JUMPDEST
00000e5c: PUSH1 0x05
00000e5e: PUSH1 0x00
00000e60: CALLER
00000e61: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e76: AND
00000e77: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e8c: AND
00000e8d: DUP2
00000e8e: MSTORE
00000e8f: PUSH1 0x20
00000e91: ADD
00000e92: SWAP1
00000e93: DUP2
00000e94: MSTORE
00000e95: PUSH1 0x20
00000e97: ADD
00000e98: PUSH1 0x00
00000e9a: KECCAK256
00000e9b: DUP2
00000e9c: SWAP1
00000e9d: SSTORE
00000e9e: POP
00000e9f: CALLER
00000ea0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eb5: AND
00000eb6: PUSH32 0x2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f
00000ed7: DUP4
00000ed8: PUSH1 0x40
00000eda: MLOAD
00000edb: DUP1
00000edc: DUP3
00000edd: DUP2
00000ede: MSTORE
00000edf: PUSH1 0x20
00000ee1: ADD
00000ee2: SWAP2
00000ee3: POP
00000ee4: POP
00000ee5: PUSH1 0x40
00000ee7: MLOAD
00000ee8: DUP1
00000ee9: SWAP2
00000eea: SUB
00000eeb: SWAP1
00000eec: LOG2
00000eed: PUSH1 0x01
00000eef: SWAP1
00000ef0: POP
00000ef1: JUMPDEST
00000ef2: SWAP2
00000ef3: SWAP1
00000ef4: POP
00000ef5: JUMP
00000ef6: JUMPDEST
00000ef7: PUSH1 0x05
00000ef9: PUSH1 0x20
00000efb: MSTORE
00000efc: DUP1
00000efd: PUSH1 0x00
00000eff: MSTORE
00000f00: PUSH1 0x40
00000f02: PUSH1 0x00
00000f04: KECCAK256
00000f05: PUSH1 0x00
00000f07: SWAP2
00000f08: POP
00000f09: SWAP1
00000f0a: POP
00000f0b: SLOAD
00000f0c: DUP2
00000f0d: JUMP
00000f0e: JUMPDEST
00000f0f: PUSH1 0x04
00000f11: PUSH1 0x00
00000f13: SWAP1
00000f14: SLOAD
00000f15: SWAP1
00000f16: PUSH2 0x0100
00000f19: EXP
00000f1a: SWAP1
00000f1b: DIV
00000f1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f31: AND
00000f32: DUP2
00000f33: JUMP
00000f34: JUMPDEST
00000f35: PUSH1 0x01
00000f37: DUP1
00000f38: SLOAD
00000f39: PUSH1 0x01
00000f3b: DUP2
00000f3c: PUSH1 0x01
00000f3e: AND
00000f3f: ISZERO
00000f40: PUSH2 0x0100
00000f43: MUL
00000f44: SUB
00000f45: AND
00000f46: PUSH1 0x02
00000f48: SWAP1
00000f49: DIV
00000f4a: DUP1
00000f4b: PUSH1 0x1f
00000f4d: ADD
00000f4e: PUSH1 0x20
00000f50: DUP1
00000f51: SWAP2
00000f52: DIV
00000f53: MUL
00000f54: PUSH1 0x20
00000f56: ADD
00000f57: PUSH1 0x40
00000f59: MLOAD
00000f5a: SWAP1
00000f5b: DUP2
00000f5c: ADD
00000f5d: PUSH1 0x40
00000f5f: MSTORE
00000f60: DUP1
00000f61: SWAP3
00000f62: SWAP2
00000f63: SWAP1
00000f64: DUP2
00000f65: DUP2
00000f66: MSTORE
00000f67: PUSH1 0x20
00000f69: ADD
00000f6a: DUP3
00000f6b: DUP1
00000f6c: SLOAD
00000f6d: PUSH1 0x01
00000f6f: DUP2
00000f70: PUSH1 0x01
00000f72: AND
00000f73: ISZERO
00000f74: PUSH2 0x0100
00000f77: MUL
00000f78: SUB
00000f79: AND
00000f7a: PUSH1 0x02
00000f7c: SWAP1
00000f7d: DIV
00000f7e: DUP1
00000f7f: ISZERO
00000f80: PUSH2 0x0fca
00000f83: JUMPI
00000f84: DUP1
00000f85: PUSH1 0x1f
00000f87: LT
00000f88: PUSH2 0x0f9f
00000f8b: JUMPI
00000f8c: PUSH2 0x0100
00000f8f: DUP1
00000f90: DUP4
00000f91: SLOAD
00000f92: DIV
00000f93: MUL
00000f94: DUP4
00000f95: MSTORE
00000f96: SWAP2
00000f97: PUSH1 0x20
00000f99: ADD
00000f9a: SWAP2
00000f9b: PUSH2 0x0fca
00000f9e: JUMP
00000f9f: JUMPDEST
00000fa0: DUP3
00000fa1: ADD
00000fa2: SWAP2
00000fa3: SWAP1
00000fa4: PUSH1 0x00
00000fa6: MSTORE
00000fa7: PUSH1 0x20
00000fa9: PUSH1 0x00
00000fab: KECCAK256
00000fac: SWAP1
00000fad: JUMPDEST
00000fae: DUP2
00000faf: SLOAD
00000fb0: DUP2
00000fb1: MSTORE
00000fb2: SWAP1
00000fb3: PUSH1 0x01
00000fb5: ADD
00000fb6: SWAP1
00000fb7: PUSH1 0x20
00000fb9: ADD
00000fba: DUP1
00000fbb: DUP4
00000fbc: GT
00000fbd: PUSH2 0x0fad
00000fc0: JUMPI
00000fc1: DUP3
00000fc2: SWAP1
00000fc3: SUB
00000fc4: PUSH1 0x1f
00000fc6: AND
00000fc7: DUP3
00000fc8: ADD
00000fc9: SWAP2
00000fca: JUMPDEST
00000fcb: POP
00000fcc: POP
00000fcd: POP
00000fce: POP
00000fcf: POP
00000fd0: DUP2
00000fd1: JUMP
00000fd2: JUMPDEST
00000fd3: PUSH1 0x00
00000fd5: DUP3
00000fd6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000feb: AND
00000fec: EQ
00000fed: ISZERO
00000fee: PUSH2 0x0ff6
00000ff1: JUMPI
00000ff2: PUSH1 0x00
00000ff4: DUP1
00000ff5: REVERT
00000ff6: JUMPDEST
00000ff7: PUSH1 0x00
00000ff9: DUP2
00000ffa: GT
00000ffb: ISZERO
00000ffc: ISZERO
00000ffd: PUSH2 0x1005
00001000: JUMPI
00001001: PUSH1 0x00
00001003: DUP1
00001004: REVERT
00001005: JUMPDEST
00001006: DUP1
00001007: PUSH1 0x05
00001009: PUSH1 0x00
0000100b: CALLER
0000100c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001021: AND
00001022: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001037: AND
00001038: DUP2
00001039: MSTORE
0000103a: PUSH1 0x20
0000103c: ADD
0000103d: SWAP1
0000103e: DUP2
0000103f: MSTORE
00001040: PUSH1 0x20
00001042: ADD
00001043: PUSH1 0x00
00001045: KECCAK256
00001046: SLOAD
00001047: LT
00001048: ISZERO
00001049: PUSH2 0x1051
0000104c: JUMPI
0000104d: PUSH1 0x00
0000104f: DUP1
00001050: REVERT
00001051: JUMPDEST
00001052: PUSH1 0x05
00001054: PUSH1 0x00
00001056: DUP4
00001057: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000106c: AND
0000106d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001082: AND
00001083: DUP2
00001084: MSTORE
00001085: PUSH1 0x20
00001087: ADD
00001088: SWAP1
00001089: DUP2
0000108a: MSTORE
0000108b: PUSH1 0x20
0000108d: ADD
0000108e: PUSH1 0x00
00001090: KECCAK256
00001091: SLOAD
00001092: DUP2
00001093: PUSH1 0x05
00001095: PUSH1 0x00
00001097: DUP6
00001098: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010ad: AND
000010ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010c3: AND
000010c4: DUP2
000010c5: MSTORE
000010c6: PUSH1 0x20
000010c8: ADD
000010c9: SWAP1
000010ca: DUP2
000010cb: MSTORE
000010cc: PUSH1 0x20
000010ce: ADD
000010cf: PUSH1 0x00
000010d1: KECCAK256
000010d2: SLOAD
000010d3: ADD
000010d4: LT
000010d5: ISZERO
000010d6: PUSH2 0x10de
000010d9: JUMPI
000010da: PUSH1 0x00
000010dc: DUP1
000010dd: REVERT
000010de: JUMPDEST
000010df: PUSH2 0x1127
000010e2: PUSH1 0x05
000010e4: PUSH1 0x00
000010e6: CALLER
000010e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010fc: AND
000010fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001112: AND
00001113: DUP2
00001114: MSTORE
00001115: PUSH1 0x20
00001117: ADD
00001118: SWAP1
00001119: DUP2
0000111a: MSTORE
0000111b: PUSH1 0x20
0000111d: ADD
0000111e: PUSH1 0x00
00001120: KECCAK256
00001121: SLOAD
00001122: DUP3
00001123: PUSH2 0x146a
00001126: JUMP
00001127: JUMPDEST
00001128: PUSH1 0x05
0000112a: PUSH1 0x00
0000112c: CALLER
0000112d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001142: AND
00001143: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001158: AND
00001159: DUP2
0000115a: MSTORE
0000115b: PUSH1 0x20
0000115d: ADD
0000115e: SWAP1
0000115f: DUP2
00001160: MSTORE
00001161: PUSH1 0x20
00001163: ADD
00001164: PUSH1 0x00
00001166: KECCAK256
00001167: DUP2
00001168: SWAP1
00001169: SSTORE
0000116a: POP
0000116b: PUSH2 0x11b3
0000116e: PUSH1 0x05
00001170: PUSH1 0x00
00001172: DUP5
00001173: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001188: AND
00001189: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000119e: AND
0000119f: DUP2
000011a0: MSTORE
000011a1: PUSH1 0x20
000011a3: ADD
000011a4: SWAP1
000011a5: DUP2
000011a6: MSTORE
000011a7: PUSH1 0x20
000011a9: ADD
000011aa: PUSH1 0x00
000011ac: KECCAK256
000011ad: SLOAD
000011ae: DUP3
000011af: PUSH2 0x1484
000011b2: JUMP
000011b3: JUMPDEST
000011b4: PUSH1 0x05
000011b6: PUSH1 0x00
000011b8: DUP5
000011b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011ce: AND
000011cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011e4: AND
000011e5: DUP2
000011e6: MSTORE
000011e7: PUSH1 0x20
000011e9: ADD
000011ea: SWAP1
000011eb: DUP2
000011ec: MSTORE
000011ed: PUSH1 0x20
000011ef: ADD
000011f0: PUSH1 0x00
000011f2: KECCAK256
000011f3: DUP2
000011f4: SWAP1
000011f5: SSTORE
000011f6: POP
000011f7: DUP2
000011f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000120d: AND
0000120e: CALLER
0000120f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001224: AND
00001225: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00001246: DUP4
00001247: PUSH1 0x40
00001249: MLOAD
0000124a: DUP1
0000124b: DUP3
0000124c: DUP2
0000124d: MSTORE
0000124e: PUSH1 0x20
00001250: ADD
00001251: SWAP2
00001252: POP
00001253: POP
00001254: PUSH1 0x40
00001256: MLOAD
00001257: DUP1
00001258: SWAP2
00001259: SUB
0000125a: SWAP1
0000125b: LOG3
0000125c: JUMPDEST
0000125d: POP
0000125e: POP
0000125f: JUMP
00001260: JUMPDEST
00001261: PUSH1 0x06
00001263: PUSH1 0x20
00001265: MSTORE
00001266: DUP1
00001267: PUSH1 0x00
00001269: MSTORE
0000126a: PUSH1 0x40
0000126c: PUSH1 0x00
0000126e: KECCAK256
0000126f: PUSH1 0x00
00001271: SWAP2
00001272: POP
00001273: SWAP1
00001274: POP
00001275: SLOAD
00001276: DUP2
00001277: JUMP
00001278: JUMPDEST
00001279: PUSH1 0x00
0000127b: DUP2
0000127c: PUSH1 0x05
0000127e: PUSH1 0x00
00001280: CALLER
00001281: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001296: AND
00001297: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012ac: AND
000012ad: DUP2
000012ae: MSTORE
000012af: PUSH1 0x20
000012b1: ADD
000012b2: SWAP1
000012b3: DUP2
000012b4: MSTORE
000012b5: PUSH1 0x20
000012b7: ADD
000012b8: PUSH1 0x00
000012ba: KECCAK256
000012bb: SLOAD
000012bc: LT
000012bd: ISZERO
000012be: PUSH2 0x12c6
000012c1: JUMPI
000012c2: PUSH1 0x00
000012c4: DUP1
000012c5: REVERT
000012c6: JUMPDEST
000012c7: PUSH1 0x00
000012c9: DUP3
000012ca: GT
000012cb: ISZERO
000012cc: ISZERO
000012cd: PUSH2 0x12d5
000012d0: JUMPI
000012d1: PUSH1 0x00
000012d3: DUP1
000012d4: REVERT
000012d5: JUMPDEST
000012d6: PUSH2 0x131e
000012d9: PUSH1 0x05
000012db: PUSH1 0x00
000012dd: CALLER
000012de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012f3: AND
000012f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001309: AND
0000130a: DUP2
0000130b: MSTORE
0000130c: PUSH1 0x20
0000130e: ADD
0000130f: SWAP1
00001310: DUP2
00001311: MSTORE
00001312: PUSH1 0x20
00001314: ADD
00001315: PUSH1 0x00
00001317: KECCAK256
00001318: SLOAD
00001319: DUP4
0000131a: PUSH2 0x146a
0000131d: JUMP
0000131e: JUMPDEST
0000131f: PUSH1 0x05
00001321: PUSH1 0x00
00001323: CALLER
00001324: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001339: AND
0000133a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000134f: AND
00001350: DUP2
00001351: MSTORE
00001352: PUSH1 0x20
00001354: ADD
00001355: SWAP1
00001356: DUP2
00001357: MSTORE
00001358: PUSH1 0x20
0000135a: ADD
0000135b: PUSH1 0x00
0000135d: KECCAK256
0000135e: DUP2
0000135f: SWAP1
00001360: SSTORE
00001361: POP
00001362: PUSH2 0x13aa
00001365: PUSH1 0x06
00001367: PUSH1 0x00
00001369: CALLER
0000136a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000137f: AND
00001380: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001395: AND
00001396: DUP2
00001397: MSTORE
00001398: PUSH1 0x20
0000139a: ADD
0000139b: SWAP1
0000139c: DUP2
0000139d: MSTORE
0000139e: PUSH1 0x20
000013a0: ADD
000013a1: PUSH1 0x00
000013a3: KECCAK256
000013a4: SLOAD
000013a5: DUP4
000013a6: PUSH2 0x1484
000013a9: JUMP
000013aa: JUMPDEST
000013ab: PUSH1 0x06
000013ad: PUSH1 0x00
000013af: CALLER
000013b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013c5: AND
000013c6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013db: AND
000013dc: DUP2
000013dd: MSTORE
000013de: PUSH1 0x20
000013e0: ADD
000013e1: SWAP1
000013e2: DUP2
000013e3: MSTORE
000013e4: PUSH1 0x20
000013e6: ADD
000013e7: PUSH1 0x00
000013e9: KECCAK256
000013ea: DUP2
000013eb: SWAP1
000013ec: SSTORE
000013ed: POP
000013ee: CALLER
000013ef: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001404: AND
00001405: PUSH32 0xf97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0
00001426: DUP4
00001427: PUSH1 0x40
00001429: MLOAD
0000142a: DUP1
0000142b: DUP3
0000142c: DUP2
0000142d: MSTORE
0000142e: PUSH1 0x20
00001430: ADD
00001431: SWAP2
00001432: POP
00001433: POP
00001434: PUSH1 0x40
00001436: MLOAD
00001437: DUP1
00001438: SWAP2
00001439: SUB
0000143a: SWAP1
0000143b: LOG2
0000143c: PUSH1 0x01
0000143e: SWAP1
0000143f: POP
00001440: JUMPDEST
00001441: SWAP2
00001442: SWAP1
00001443: POP
00001444: JUMP
00001445: JUMPDEST
00001446: PUSH1 0x07
00001448: PUSH1 0x20
0000144a: MSTORE
0000144b: DUP2
0000144c: PUSH1 0x00
0000144e: MSTORE
0000144f: PUSH1 0x40
00001451: PUSH1 0x00
00001453: KECCAK256
00001454: PUSH1 0x20
00001456: MSTORE
00001457: DUP1
00001458: PUSH1 0x00
0000145a: MSTORE
0000145b: PUSH1 0x40
0000145d: PUSH1 0x00
0000145f: KECCAK256
00001460: PUSH1 0x00
00001462: SWAP2
00001463: POP
00001464: SWAP2
00001465: POP
00001466: POP
00001467: SLOAD
00001468: DUP2
00001469: JUMP
0000146a: JUMPDEST
0000146b: PUSH1 0x00
0000146d: PUSH2 0x1478
00001470: DUP4
00001471: DUP4
00001472: GT
00001473: ISZERO
00001474: PUSH2 0x14af
00001477: JUMP
00001478: JUMPDEST
00001479: DUP2
0000147a: DUP4
0000147b: SUB
0000147c: SWAP1
0000147d: POP
0000147e: JUMPDEST
0000147f: SWAP3
00001480: SWAP2
00001481: POP
00001482: POP
00001483: JUMP
00001484: JUMPDEST
00001485: PUSH1 0x00
00001487: DUP1
00001488: DUP3
00001489: DUP5
0000148a: ADD
0000148b: SWAP1
0000148c: POP
0000148d: PUSH2 0x14a4
00001490: DUP5
00001491: DUP3
00001492: LT
00001493: ISZERO
00001494: DUP1
00001495: ISZERO
00001496: PUSH2 0x149f
00001499: JUMPI
0000149a: POP
0000149b: DUP4
0000149c: DUP3
0000149d: LT
0000149e: ISZERO
0000149f: JUMPDEST
000014a0: PUSH2 0x14af
000014a3: JUMP
000014a4: JUMPDEST
000014a5: DUP1
000014a6: SWAP2
000014a7: POP
000014a8: JUMPDEST
000014a9: POP
000014aa: SWAP3
000014ab: SWAP2
000014ac: POP
000014ad: POP
000014ae: JUMP
000014af: JUMPDEST
000014b0: DUP1
000014b1: ISZERO
000014b2: ISZERO
000014b3: PUSH2 0x14bb
000014b6: JUMPI
000014b7: PUSH1 0x00
000014b9: DUP1
000014ba: REVERT
000014bb: JUMPDEST
000014bc: JUMPDEST
000014bd: POP
000014be: JUMP
000014bf: STOP
000014c0: LOG1
000014c1: PUSH6 0x627a7a723058
000014c8: KECCAK256
000014c9: ADDMOD
000014ca: UNKNOWN(0x27)
000014cb: CALLVALUE
000014cc: UNKNOWN(0xE0)
000014cd: MSTORE8
000014ce: SELFDESTRUCT
000014cf: UNKNOWN(0xBD)
000014d0: CALLCODE
000014d1: LOG3
000014d2: NOT
000014d3: MSTORE8
000014d4: SLOAD
000014d5: LOG3
000014d6: UNKNOWN(0x21)
000014d7: UNKNOWN(0x0D)
000014d8: SELFDESTRUCT
000014d9: CALLDATACOPY
000014da: UNKNOWN(0x23)
000014db: UNKNOWN(0xC2)
000014dc: CODECOPY
000014dd: LOG1
000014de: UNKNOWN(0xE7)
000014df: PUSH11 0xe3be0936f6aed31bee0029

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 2
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x678a935c1882f86acd386ba7594f8e11432a394a017c95ddbd708427b1e36b38
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x678a935c1882f86acd386ba7594f8e11432a394a017c95ddbd708427b1e36b38",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3bed33ce",
            "selector": "0x3bed33ce",
            "calldata_variants": [
                "0x3bed33ce",
                "0x3bed33ce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x42966c68",
            "selector": "0x42966c68",
            "calldata_variants": [
                "0x42966c68",
                "0x42966c680000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 2894,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 2
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x19a10d8100e4840746ea3822d3f59e72215cd871112c388563474bb33645c258
call_targets: 0xb8c77482e45f1f44de1745f52c74426c631bdd52
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x19a10d8100e4840746ea3822d3f59e72215cd871112c388563474bb33645c258",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb8c77482e45f1f44de1745f52c74426c631bdd52"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3bed33ce",
            "selector": "0x3bed33ce",
            "calldata_variants": [
                "0x3bed33ce",
                "0x3bed33ce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x42966c68",
            "selector": "0x42966c68",
            "calldata_variants": [
                "0x42966c68",
                "0x42966c680000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3010,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5328,
            "opcode": "CALLCODE",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 2894,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x19a10d8100e4840746ea3822d3f59e72215cd871112c388563474bb33645c258
call_targets: 0xb8c77482e45f1f44de1745f52c74426c631bdd52
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x19a10d8100e4840746ea3822d3f59e72215cd871112c388563474bb33645c258",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb8c77482e45f1f44de1745f52c74426c631bdd52"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3bed33ce",
            "selector": "0x3bed33ce",
            "calldata_variants": [
                "0x3bed33ce",
                "0x3bed33ce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x42966c68",
            "selector": "0x42966c68",
            "calldata_variants": [
                "0x42966c68",
                "0x42966c680000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3010,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5328,
            "opcode": "CALLCODE",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 2894,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
low auth codex ERC20 approve race allows double-spend of allowance 65 no
view
evidence_json
{
    "evidence": "approve() overwrites allowance without zero-check, enabling the known ERC20 allowance race.",
    "locations": [
        "contracts/Contract.sol:93",
        "contracts/Contract.sol:94",
        "contracts/Contract.sol:97"
    ],
    "recommendation": "Require allowance to be set to 0 before changing to a new non-zero value, or replace approve() with increaseAllowance/decreaseAllowance patterns.",
    "exploit_scenario": "A token holder tries to change an allowance from 100 to 50. The spender can front-run the approve() with transferFrom for 100, then after the approve() succeeds still spend the new 50, effectively spending 150 in total."
}