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

Analysis Run

2265ad84-b13f-4a4d-8194-e5ed07374046

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 3, 2026 3:34 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
Late-buy launch-fund sniping allows capture of accumulated prelaunch dividends
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
31447 report.consolidate complete 1 / 1 3 months ago
77308 artifact.fetch complete 1 / 3 1 week ago
77309 tool.cast_disasm complete 1 / 3 1 week ago
77310 analysis.bundle complete 1 / 3 1 week ago
77311 capability.graph complete 1 / 3 1 week ago
77312 detector.run complete 1 / 3 1 week ago
77313 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
Launch-fund distribution can be sniped by a late buyer to capture accumulated prelaunch fees when postLaunch is still false.
View stderr
[codex:442513] OpenAI Codex v0.77.0 (research preview)
[codex:442513] --------
[codex:442513] workdir: /tmp/codex-multi-srcst2zh
[codex:442513] model: gpt-5.2-codex
[codex:442513] provider: openai
[codex:442513] approval: never
[codex:442513] sandbox: read-only
[codex:442513] reasoning effort: xhigh
[codex:442513] reasoning summaries: auto
[codex:442513] session id: 019b81e4-cb63-7c20-ac51-964dfdb3d9be
[codex:442513] --------
[codex:442513] user
[codex:442513] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:442513] 
[codex:442513] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:442513] 
[codex:442513] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:442513] - Gas inefficiency, code quality, naming, or best practices
[codex:442513] - Theoretical vulnerabilities without a clear extraction path
[codex:442513] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:442513] - Front-running unless it enables theft beyond MEV
[codex:442513] - DoS, griefing, or issues that don't result in attacker profit
[codex:442513] - Missing events, view function issues, or informational findings
[codex:442513] 
[codex:442513] HIGH-VALUE PATTERNS TO HUNT:
[codex:442513] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:442513] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:442513] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:442513] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:442513] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:442513] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:442513] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:442513] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:442513] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:442513] 
[codex:442513] For each finding, you MUST provide:
[codex:442513] 1. Exact file and line numbers of vulnerable code
[codex:442513] 2. Step-by-step exploit transaction sequence
[codex:442513] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:442513] 
[codex:442513] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:442513] 
[codex:442513] Output MUST be valid JSON matching the provided schema.
[codex:442513] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:442513] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:442513] mcp startup: no servers
[codex:442513] 
[codex:442513] thinking
[codex:442513] **Preparing to audit file contents**
[codex:442513] exec
[codex:442513] /bin/bash -lc ls in /tmp/codex-multi-srcst2zh succeeded in 6ms:
[codex:442513] AUDIT_BUNDLE.txt
[codex:442513] codex-output-schema.json
[codex:442513] contracts
[codex:442513] exec
[codex:442513] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-srcst2zh succeeded in 5ms:
[codex:442513] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:442513] 
[codex:442513] ================================================================================
[codex:442513] FILE: contracts/Contract.sol
[codex:442513] ================================================================================
[codex:442513] pragma solidity ^0.4.26;
[codex:442513] 
[codex:442513] library SafeMath {
[codex:442513] 
[codex:442513]   function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
[codex:442513]     if (a == 0) {
[codex:442513]       return 0;
[codex:442513]     }
[codex:442513]     c = a * b;
[codex:442513]     assert(c / a == b);
[codex:442513]     return c;
[codex:442513]   }
[codex:442513] 
[codex:442513]   function div(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:442513]     return a / b;
[codex:442513] 
[codex:442513] 
[codex:442513] 
[codex:442513] 
[codex:442513] 
[codex:442513] thinking
[codex:442513] **Analyzing contract for profit exploits**
[codex:442513] 
[codex:442513] I'm carefully auditing the contract to uncover potential profit exploits, focusing on reentrancy risks, access control flaws, arithmetic errors, and dividend calculations. I’m exploring how transfers, sells, and dividends interact, checking if fee handling or rounding could be gamed, and scrutinizing whether state updates and external calls allow manipulative behaviors or unauthorized withdrawals. The possibility of division by zero, contract solvency, and use of tx.origin also get close attention to confirm no loopholes enable unfair gains.
[codex:442513] thinking
[codex:442513] **Examining payout and dividend arithmetic vulnerabilities**
[codex:442513] 
[codex:442513] I’m exploring if attackers can exploit dividend calculations by manipulating payoutsTo_ to become larger than profitPerShare_ times balance, which would let them claim huge dividends due to integer casting quirks. The focus is on how buy, sell, transfer, withdraw, and roll functions adjust payouts and balances, looking for rounding or ordering issues that might create negative dividends or allow draining ETH unfairly. One interesting angle is using self-transfers to convert tokens into withdrawable dividends at a lower fee rate than selling, potentially bypassing exit fees by repeatedly burning tokens and collecting dividends, which might let a holder extract nearly full token value over time.
[codex:442513] thinking
[codex:442513] **Analyzing fee bypass and leftover dividend scenarios**
[codex:442513] 
[codex:442513] I’m assessing if repeated self-transfers genuinely let holders avoid the 10% exit fee, effectively redeeming tokens with just a 1% transfer fee and exiting with more ETH than normal selling would allow. Then I’m exploring a subtle edge case when tokenSupply_ drops to zero post-launch, leaving leftover undistributed dividends stuck in the contract. A new buyer entering at this point might exploit payout calculations that don’t reset fees properly, potentially withdrawing their own purchase fee portion early and maybe accessing leftover ETH reserved from previous rounds. The math suggests this could reduce effective entry fees and create unexpected dividend behaviors.
[codex:442513] thinking
[codex:442513] **Evaluating leftover funds and launch fund timing exploit**
[codex:442513] 
[codex:442513] I’m unpacking how leftover dividends remain locked after all tokens are sold and how they aren’t accounted for in profitPerShare_, making them effectively stuck in the contract. While a new buyer gets immediate own dividends, they likely can’t directly claim these leftovers. I’m also considering a nuanced exploit where an attacker buys tokens just before the delayed launch fund distribution, potentially claiming a disproportionate share of accumulated fees collected earlier, which might let them profit by capturing value others contributed without equivalent cost.
[codex:442513] thinking
[codex:442513] **Analyzing launch fund distribution front-running**
[codex:442513] 
[codex:442513] I’m working through how an attacker can buy tokens just before calling distributeLaunchFund to capture a large share of accumulated launch fees, especially when token supply is low and launch fund is high. This “sniping” lets an attacker profit by withdrawing dividends exceeding their purchase cost, which is a concrete path to profit rooted in the timing and lack of snapshot in distribution. I’m also planning to find exact line references in the contract for detailed reporting.
[codex:442513] exec
[codex:442513] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-srcst2zh succeeded in 8ms:
[codex:442513]      1	pragma solidity ^0.4.26;
[codex:442513]      2	
[codex:442513]      3	library SafeMath {
[codex:442513]      4	
[codex:442513]      5	  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
[codex:442513]      6	    if (a == 0) {
[codex:442513]      7	      return 0;
[codex:442513]      8	    }
[codex:442513]      9	    c = a * b;
[codex:442513]     10	    assert(c / a == b);
[codex:442513]     11	    return c;
[codex:442513]     12	  }
[codex:442513]     13	
[codex:442513]     14	  function div(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:442513]     15	    return a / b;
[codex:442513]     16	  }
[codex:442513]     17	
[codex:442513]     18	  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:442513]     19	    assert(b <= a);
[codex:442513]     20	    return a - b;
[codex:442513] 
[codex:442513] 
[codex:442513] thinking
[codex:442513] **Summarizing profitable launch fund exploit**
[codex:442513] thinking
[codex:442513] **Finalizing launch fund exploit report**
[codex:442513] 
[codex:442513] I'll prepare valid JSON output describing the launch fund sniping vulnerability with clear step-by-step exploit details, profit estimates, recommended mitigations, and exact line references as separate file:line items, keeping locations array plain and evidence text succinct without line ranges.
[codex:442513] codex
[codex:442513] {"no_findings":false,"summary":"Launch-fund distribution can be sniped by a late buyer to capture accumulated prelaunch fees when postLaunch is still false.","findings":[{"severity":"high","category":"math","title":"Late-buy launch-fund sniping allows capture of accumulated prelaunch dividends","exploit_scenario":"1) Monitor state while postLaunch is false; if totalLaunchFundCollected is large relative to tokenSupply_ (often after prelaunch sells add to the launch fund), prepare a helper contract. 2) Call buy() with a small amount of ETH and immediately call distributeLaunchFund() in the same transaction to lock in the distribution at the new (slightly higher) tokenSupply_. 3) Call withdraw() to collect your share of the entire launch fund, then optionally exit your tokens. Example: if totalLaunchFundCollected=14.4 ETH and tokenSupply_=10 tokens, buying 1 ETH (0.9 tokens) then calling distributeLaunchFund yields about 1.19 ETH in dividends, netting ~0.19 ETH profit before even exiting tokens. Profit magnitude: up to roughly the launch fund balance (O(totalLaunchFundCollected)) when tokenSupply_ is tiny.","recommendation":"Snapshot eligible balances at a prelaunch cutoff or finalize postLaunch with a fixed tokenSupply_ so late buyers cannot join the launch-fund distribution; alternatively, distribute launch funds continuously rather than in a single callable lump sum.","evidence":"The launch fund accumulates while postLaunch is false and is distributed to whoever holds tokens at the moment distributeLaunchFund is called, with no snapshot or cutoff.","locations":["contracts/Contract.sol:160","contracts/Contract.sol:161","contracts/Contract.sol:162","contracts/Contract.sol:371","contracts/Contract.sol:373","contracts/Contract.sol:224","contracts/Contract.sol:225"]}]}
[codex:442513] tokens used
[codex:442513] 37,472
[codex:442513] {"no_findings":false,"summary":"Launch-fund distribution can be sniped by a late buyer to capture accumulated prelaunch fees when postLaunch is still false.","findings":[{"severity":"high","category":"math","title":"Late-buy launch-fund sniping allows capture of accumulated prelaunch dividends","exploit_scenario":"1) Monitor state while postLaunch is false; if totalLaunchFundCollected is large relative to tokenSupply_ (often after prelaunch sells add to the launch fund), prepare a helper contract. 2) Call buy() with a small amount of ETH and immediately call distributeLaunchFund() in the same transaction to lock in the distribution at the new (slightly higher) tokenSupply_. 3) Call withdraw() to collect your share of the entire launch fund, then optionally exit your tokens. Example: if totalLaunchFundCollected=14.4 ETH and tokenSupply_=10 tokens, buying 1 ETH (0.9 tokens) then calling distributeLaunchFund yields about 1.19 ETH in dividends, netting ~0.19 ETH profit before even exiting tokens. Profit magnitude: up to roughly the launch fund balance (O(totalLaunchFundCollected)) when tokenSupply_ is tiny.","recommendation":"Snapshot eligible balances at a prelaunch cutoff or finalize postLaunch with a fixed tokenSupply_ so late buyers cannot join the launch-fund distribution; alternatively, distribute launch funds continuously rather than in a single callable lump sum.","evidence":"The launch fund accumulates while postLaunch is false and is distributed to whoever holds tokens at the moment distributeLaunchFund is called, with no snapshot or cutoff.","locations":["contracts/Contract.sol:160","contracts/Contract.sol:161","contracts/Contract.sol:162","contracts/Contract.sol:371","contracts/Contract.sol:373","contracts/Contract.sol:224","contracts/Contract.sol:225"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-03T03:34:02.582988+00:00",
        "returncode": 0
    },
    "summary": "Launch-fund distribution can be sniped by a late buyer to capture accumulated prelaunch fees when postLaunch is still false.",
    "raw_final": {
        "summary": "Launch-fund distribution can be sniped by a late buyer to capture accumulated prelaunch fees when postLaunch is still false.",
        "findings": [
            {
                "title": "Late-buy launch-fund sniping allows capture of accumulated prelaunch dividends",
                "category": "math",
                "evidence": "The launch fund accumulates while postLaunch is false and is distributed to whoever holds tokens at the moment distributeLaunchFund is called, with no snapshot or cutoff.",
                "severity": "high",
                "locations": [
                    "contracts/Contract.sol:160",
                    "contracts/Contract.sol:161",
                    "contracts/Contract.sol:162",
                    "contracts/Contract.sol:371",
                    "contracts/Contract.sol:373",
                    "contracts/Contract.sol:224",
                    "contracts/Contract.sol:225"
                ],
                "recommendation": "Snapshot eligible balances at a prelaunch cutoff or finalize postLaunch with a fixed tokenSupply_ so late buyers cannot join the launch-fund distribution; alternatively, distribute launch funds continuously rather than in a single callable lump sum.",
                "exploit_scenario": "1) Monitor state while postLaunch is false; if totalLaunchFundCollected is large relative to tokenSupply_ (often after prelaunch sells add to the launch fund), prepare a helper contract. 2) Call buy() with a small amount of ETH and immediately call distributeLaunchFund() in the same transaction to lock in the distribution at the new (slightly higher) tokenSupply_. 3) Call withdraw() to collect your share of the entire launch fund, then optionally exit your tokens. Example: if totalLaunchFundCollected=14.4 ETH and tokenSupply_=10 tokens, buying 1 ETH (0.9 tokens) then calling distributeLaunchFund yields about 1.19 ETH in dividends, netting ~0.19 ETH profit before even exiting tokens. Profit magnitude: up to roughly the launch fund balance (O(totalLaunchFundCollected)) when tokenSupply_ is tiny."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
1
Total opcodes
3697
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x01e1
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000030: PUSH1 0x00
00000032: CALLDATALOAD
00000033: DIV
00000034: AND
00000035: PUSH3 0x65318b
00000039: DUP2
0000003a: EQ
0000003b: PUSH2 0x01ee
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x06fdde03
00000045: EQ
00000046: PUSH2 0x0221
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0x10d0ffdd
00000050: EQ
00000051: PUSH2 0x02ab
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0x1296bffd
0000005b: EQ
0000005c: PUSH2 0x02c3
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0x18160ddd
00000066: EQ
00000067: PUSH2 0x02da
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0x22609373
00000071: EQ
00000072: PUSH2 0x02ef
00000075: JUMPI
00000076: DUP1
00000077: PUSH4 0x313ce567
0000007c: EQ
0000007d: PUSH2 0x0307
00000080: JUMPI
00000081: DUP1
00000082: PUSH4 0x3151ecfc
00000087: EQ
00000088: PUSH2 0x0332
0000008b: JUMPI
0000008c: DUP1
0000008d: PUSH4 0x34ecfbb8
00000092: EQ
00000093: PUSH2 0x0347
00000096: JUMPI
00000097: DUP1
00000098: PUSH4 0x37fb7e21
0000009d: EQ
0000009e: PUSH2 0x035c
000000a1: JUMPI
000000a2: DUP1
000000a3: PUSH4 0x3ccfd60b
000000a8: EQ
000000a9: PUSH2 0x038d
000000ac: JUMPI
000000ad: DUP1
000000ae: PUSH4 0x4978e111
000000b3: EQ
000000b4: PUSH2 0x03a2
000000b7: JUMPI
000000b8: DUP1
000000b9: PUSH4 0x4b750334
000000be: EQ
000000bf: PUSH2 0x03b7
000000c2: JUMPI
000000c3: DUP1
000000c4: PUSH4 0x5af78833
000000c9: EQ
000000ca: PUSH2 0x03cc
000000cd: JUMPI
000000ce: DUP1
000000cf: PUSH4 0x6b2f4632
000000d4: EQ
000000d5: PUSH2 0x03e1
000000d8: JUMPI
000000d9: DUP1
000000da: PUSH4 0x6f0b5180
000000df: EQ
000000e0: PUSH2 0x03f6
000000e3: JUMPI
000000e4: DUP1
000000e5: PUSH4 0x70a08231
000000ea: EQ
000000eb: PUSH2 0x040a
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x7a9262a2
000000f5: EQ
000000f6: PUSH2 0x042b
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0x7c180a68
00000100: EQ
00000101: PUSH2 0x044c
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x8620410b
0000010b: EQ
0000010c: PUSH2 0x046d
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x8da5cb5b
00000116: EQ
00000117: PUSH2 0x0482
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0x949e8acd
00000121: EQ
00000122: PUSH2 0x0497
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0x95d89b41
0000012c: EQ
0000012d: PUSH2 0x04ac
00000130: JUMPI
00000131: DUP1
00000132: PUSH4 0x9b7aff9f
00000137: EQ
00000138: PUSH2 0x04c1
0000013b: JUMPI
0000013c: DUP1
0000013d: PUSH4 0x9e2131c6
00000142: EQ
00000143: PUSH2 0x04d6
00000146: JUMPI
00000147: DUP1
00000148: PUSH4 0xa3996f7b
0000014d: EQ
0000014e: PUSH2 0x04f7
00000151: JUMPI
00000152: DUP1
00000153: PUSH4 0xa6f2ae3a
00000158: EQ
00000159: PUSH2 0x0520
0000015c: JUMPI
0000015d: DUP1
0000015e: PUSH4 0xa9059cbb
00000163: EQ
00000164: PUSH2 0x0528
00000167: JUMPI
00000168: DUP1
00000169: PUSH4 0xb84c8246
0000016e: EQ
0000016f: PUSH2 0x054c
00000172: JUMPI
00000173: DUP1
00000174: PUSH4 0xb8f82c85
00000179: EQ
0000017a: PUSH2 0x05a5
0000017d: JUMPI
0000017e: DUP1
0000017f: PUSH4 0xc47f0027
00000184: EQ
00000185: PUSH2 0x05ba
00000188: JUMPI
00000189: DUP1
0000018a: PUSH4 0xc494a080
0000018f: EQ
00000190: PUSH2 0x0613
00000193: JUMPI
00000194: DUP1
00000195: PUSH4 0xcd5e3c5d
0000019a: EQ
0000019b: PUSH2 0x0628
0000019e: JUMPI
0000019f: DUP1
000001a0: PUSH4 0xe4849b32
000001a5: EQ
000001a6: PUSH2 0x063d
000001a9: JUMPI
000001aa: DUP1
000001ab: PUSH4 0xe4fc6b6d
000001b0: EQ
000001b1: PUSH2 0x0655
000001b4: JUMPI
000001b5: DUP1
000001b6: PUSH4 0xe9fad8ee
000001bb: EQ
000001bc: PUSH2 0x065d
000001bf: JUMPI
000001c0: DUP1
000001c1: PUSH4 0xee2ac05f
000001c6: EQ
000001c7: PUSH2 0x0672
000001ca: JUMPI
000001cb: DUP1
000001cc: PUSH4 0xf2fde38b
000001d1: EQ
000001d2: PUSH2 0x0687
000001d5: JUMPI
000001d6: DUP1
000001d7: PUSH4 0xfc7e286d
000001dc: EQ
000001dd: PUSH2 0x06a8
000001e0: JUMPI
000001e1: JUMPDEST
000001e2: PUSH2 0x01eb
000001e5: CALLER
000001e6: CALLVALUE
000001e7: PUSH2 0x06c9
000001ea: JUMP
000001eb: JUMPDEST
000001ec: POP
000001ed: STOP
000001ee: JUMPDEST
000001ef: CALLVALUE
000001f0: DUP1
000001f1: ISZERO
000001f2: PUSH2 0x01fa
000001f5: JUMPI
000001f6: PUSH1 0x00
000001f8: DUP1
000001f9: REVERT
000001fa: JUMPDEST
000001fb: POP
000001fc: PUSH2 0x020f
000001ff: PUSH1 0x01
00000201: PUSH1 0xa0
00000203: PUSH1 0x02
00000205: EXP
00000206: SUB
00000207: PUSH1 0x04
00000209: CALLDATALOAD
0000020a: AND
0000020b: PUSH2 0x09c2
0000020e: JUMP
0000020f: JUMPDEST
00000210: PUSH1 0x40
00000212: DUP1
00000213: MLOAD
00000214: SWAP2
00000215: DUP3
00000216: MSTORE
00000217: MLOAD
00000218: SWAP1
00000219: DUP2
0000021a: SWAP1
0000021b: SUB
0000021c: PUSH1 0x20
0000021e: ADD
0000021f: SWAP1
00000220: RETURN
00000221: JUMPDEST
00000222: CALLVALUE
00000223: DUP1
00000224: ISZERO
00000225: PUSH2 0x022d
00000228: JUMPI
00000229: PUSH1 0x00
0000022b: DUP1
0000022c: REVERT
0000022d: JUMPDEST
0000022e: POP
0000022f: PUSH2 0x0236
00000232: PUSH2 0x09fd
00000235: JUMP
00000236: JUMPDEST
00000237: PUSH1 0x40
00000239: DUP1
0000023a: MLOAD
0000023b: PUSH1 0x20
0000023d: DUP1
0000023e: DUP3
0000023f: MSTORE
00000240: DUP4
00000241: MLOAD
00000242: DUP2
00000243: DUP4
00000244: ADD
00000245: MSTORE
00000246: DUP4
00000247: MLOAD
00000248: SWAP2
00000249: SWAP3
0000024a: DUP4
0000024b: SWAP3
0000024c: SWAP1
0000024d: DUP4
0000024e: ADD
0000024f: SWAP2
00000250: DUP6
00000251: ADD
00000252: SWAP1
00000253: DUP1
00000254: DUP4
00000255: DUP4
00000256: PUSH1 0x00
00000258: JUMPDEST
00000259: DUP4
0000025a: DUP2
0000025b: LT
0000025c: ISZERO
0000025d: PUSH2 0x0270
00000260: JUMPI
00000261: DUP2
00000262: DUP2
00000263: ADD
00000264: MLOAD
00000265: DUP4
00000266: DUP3
00000267: ADD
00000268: MSTORE
00000269: PUSH1 0x20
0000026b: ADD
0000026c: PUSH2 0x0258
0000026f: JUMP
00000270: JUMPDEST
00000271: POP
00000272: POP
00000273: POP
00000274: POP
00000275: SWAP1
00000276: POP
00000277: SWAP1
00000278: DUP2
00000279: ADD
0000027a: SWAP1
0000027b: PUSH1 0x1f
0000027d: AND
0000027e: DUP1
0000027f: ISZERO
00000280: PUSH2 0x029d
00000283: JUMPI
00000284: DUP1
00000285: DUP3
00000286: SUB
00000287: DUP1
00000288: MLOAD
00000289: PUSH1 0x01
0000028b: DUP4
0000028c: PUSH1 0x20
0000028e: SUB
0000028f: PUSH2 0x0100
00000292: EXP
00000293: SUB
00000294: NOT
00000295: AND
00000296: DUP2
00000297: MSTORE
00000298: PUSH1 0x20
0000029a: ADD
0000029b: SWAP2
0000029c: POP
0000029d: JUMPDEST
0000029e: POP
0000029f: SWAP3
000002a0: POP
000002a1: POP
000002a2: POP
000002a3: PUSH1 0x40
000002a5: MLOAD
000002a6: DUP1
000002a7: SWAP2
000002a8: SUB
000002a9: SWAP1
000002aa: RETURN
000002ab: JUMPDEST
000002ac: CALLVALUE
000002ad: DUP1
000002ae: ISZERO
000002af: PUSH2 0x02b7
000002b2: JUMPI
000002b3: PUSH1 0x00
000002b5: DUP1
000002b6: REVERT
000002b7: JUMPDEST
000002b8: POP
000002b9: PUSH2 0x020f
000002bc: PUSH1 0x04
000002be: CALLDATALOAD
000002bf: PUSH2 0x0a88
000002c2: JUMP
000002c3: JUMPDEST
000002c4: CALLVALUE
000002c5: DUP1
000002c6: ISZERO
000002c7: PUSH2 0x02cf
000002ca: JUMPI
000002cb: PUSH1 0x00
000002cd: DUP1
000002ce: REVERT
000002cf: JUMPDEST
000002d0: POP
000002d1: PUSH2 0x02d8
000002d4: PUSH2 0x0ab0
000002d7: JUMP
000002d8: JUMPDEST
000002d9: STOP
000002da: JUMPDEST
000002db: CALLVALUE
000002dc: DUP1
000002dd: ISZERO
000002de: PUSH2 0x02e6
000002e1: JUMPI
000002e2: PUSH1 0x00
000002e4: DUP1
000002e5: REVERT
000002e6: JUMPDEST
000002e7: POP
000002e8: PUSH2 0x020f
000002eb: PUSH2 0x0b1b
000002ee: JUMP
000002ef: JUMPDEST
000002f0: CALLVALUE
000002f1: DUP1
000002f2: ISZERO
000002f3: PUSH2 0x02fb
000002f6: JUMPI
000002f7: PUSH1 0x00
000002f9: DUP1
000002fa: REVERT
000002fb: JUMPDEST
000002fc: POP
000002fd: PUSH2 0x020f
00000300: PUSH1 0x04
00000302: CALLDATALOAD
00000303: PUSH2 0x0b22
00000306: JUMP
00000307: JUMPDEST
00000308: CALLVALUE
00000309: DUP1
0000030a: ISZERO
0000030b: PUSH2 0x0313
0000030e: JUMPI
0000030f: PUSH1 0x00
00000311: DUP1
00000312: REVERT
00000313: JUMPDEST
00000314: POP
00000315: PUSH2 0x031c
00000318: PUSH2 0x0b47
0000031b: JUMP
0000031c: JUMPDEST
0000031d: PUSH1 0x40
0000031f: DUP1
00000320: MLOAD
00000321: PUSH1 0xff
00000323: SWAP1
00000324: SWAP3
00000325: AND
00000326: DUP3
00000327: MSTORE
00000328: MLOAD
00000329: SWAP1
0000032a: DUP2
0000032b: SWAP1
0000032c: SUB
0000032d: PUSH1 0x20
0000032f: ADD
00000330: SWAP1
00000331: RETURN
00000332: JUMPDEST
00000333: CALLVALUE
00000334: DUP1
00000335: ISZERO
00000336: PUSH2 0x033e
00000339: JUMPI
0000033a: PUSH1 0x00
0000033c: DUP1
0000033d: REVERT
0000033e: JUMPDEST
0000033f: POP
00000340: PUSH2 0x020f
00000343: PUSH2 0x0b4c
00000346: JUMP
00000347: JUMPDEST
00000348: CALLVALUE
00000349: DUP1
0000034a: ISZERO
0000034b: PUSH2 0x0353
0000034e: JUMPI
0000034f: PUSH1 0x00
00000351: DUP1
00000352: REVERT
00000353: JUMPDEST
00000354: POP
00000355: PUSH2 0x020f
00000358: PUSH2 0x0b5f
0000035b: JUMP
0000035c: JUMPDEST
0000035d: CALLVALUE
0000035e: DUP1
0000035f: ISZERO
00000360: PUSH2 0x0368
00000363: JUMPI
00000364: PUSH1 0x00
00000366: DUP1
00000367: REVERT
00000368: JUMPDEST
00000369: POP
0000036a: PUSH2 0x0371
0000036d: PUSH2 0x0b65
00000370: JUMP
00000371: JUMPDEST
00000372: PUSH1 0x40
00000374: DUP1
00000375: MLOAD
00000376: PUSH1 0x01
00000378: PUSH1 0xa0
0000037a: PUSH1 0x02
0000037c: EXP
0000037d: SUB
0000037e: SWAP1
0000037f: SWAP3
00000380: AND
00000381: DUP3
00000382: MSTORE
00000383: MLOAD
00000384: SWAP1
00000385: DUP2
00000386: SWAP1
00000387: SUB
00000388: PUSH1 0x20
0000038a: ADD
0000038b: SWAP1
0000038c: RETURN
0000038d: JUMPDEST
0000038e: CALLVALUE
0000038f: DUP1
00000390: ISZERO
00000391: PUSH2 0x0399
00000394: JUMPI
00000395: PUSH1 0x00
00000397: DUP1
00000398: REVERT
00000399: JUMPDEST
0000039a: POP
0000039b: PUSH2 0x02d8
0000039e: PUSH2 0x0b74
000003a1: JUMP
000003a2: JUMPDEST
000003a3: CALLVALUE
000003a4: DUP1
000003a5: ISZERO
000003a6: PUSH2 0x03ae
000003a9: JUMPI
000003aa: PUSH1 0x00
000003ac: DUP1
000003ad: REVERT
000003ae: JUMPDEST
000003af: POP
000003b0: PUSH2 0x02d8
000003b3: PUSH2 0x0c45
000003b6: JUMP
000003b7: JUMPDEST
000003b8: CALLVALUE
000003b9: DUP1
000003ba: ISZERO
000003bb: PUSH2 0x03c3
000003be: JUMPI
000003bf: PUSH1 0x00
000003c1: DUP1
000003c2: REVERT
000003c3: JUMPDEST
000003c4: POP
000003c5: PUSH2 0x020f
000003c8: PUSH2 0x0caa
000003cb: JUMP
000003cc: JUMPDEST
000003cd: CALLVALUE
000003ce: DUP1
000003cf: ISZERO
000003d0: PUSH2 0x03d8
000003d3: JUMPI
000003d4: PUSH1 0x00
000003d6: DUP1
000003d7: REVERT
000003d8: JUMPDEST
000003d9: POP
000003da: PUSH2 0x0371
000003dd: PUSH2 0x0cd6
000003e0: JUMP
000003e1: JUMPDEST
000003e2: CALLVALUE
000003e3: DUP1
000003e4: ISZERO
000003e5: PUSH2 0x03ed
000003e8: JUMPI
000003e9: PUSH1 0x00
000003eb: DUP1
000003ec: REVERT
000003ed: JUMPDEST
000003ee: POP
000003ef: PUSH2 0x020f
000003f2: PUSH2 0x0ce5
000003f5: JUMP
000003f6: JUMPDEST
000003f7: PUSH2 0x020f
000003fa: PUSH1 0x01
000003fc: PUSH1 0xa0
000003fe: PUSH1 0x02
00000400: EXP
00000401: SUB
00000402: PUSH1 0x04
00000404: CALLDATALOAD
00000405: AND
00000406: PUSH2 0x0cea
00000409: JUMP
0000040a: JUMPDEST
0000040b: CALLVALUE
0000040c: DUP1
0000040d: ISZERO
0000040e: PUSH2 0x0416
00000411: JUMPI
00000412: PUSH1 0x00
00000414: DUP1
00000415: REVERT
00000416: JUMPDEST
00000417: POP
00000418: PUSH2 0x020f
0000041b: PUSH1 0x01
0000041d: PUSH1 0xa0
0000041f: PUSH1 0x02
00000421: EXP
00000422: SUB
00000423: PUSH1 0x04
00000425: CALLDATALOAD
00000426: AND
00000427: PUSH2 0x0cfc
0000042a: JUMP
0000042b: JUMPDEST
0000042c: CALLVALUE
0000042d: DUP1
0000042e: ISZERO
0000042f: PUSH2 0x0437
00000432: JUMPI
00000433: PUSH1 0x00
00000435: DUP1
00000436: REVERT
00000437: JUMPDEST
00000438: POP
00000439: PUSH2 0x020f
0000043c: PUSH1 0x01
0000043e: PUSH1 0xa0
00000440: PUSH1 0x02
00000442: EXP
00000443: SUB
00000444: PUSH1 0x04
00000446: CALLDATALOAD
00000447: AND
00000448: PUSH2 0x0d17
0000044b: JUMP
0000044c: JUMPDEST
0000044d: CALLVALUE
0000044e: DUP1
0000044f: ISZERO
00000450: PUSH2 0x0458
00000453: JUMPI
00000454: PUSH1 0x00
00000456: DUP1
00000457: REVERT
00000458: JUMPDEST
00000459: POP
0000045a: PUSH2 0x02d8
0000045d: PUSH1 0x01
0000045f: PUSH1 0xa0
00000461: PUSH1 0x02
00000463: EXP
00000464: SUB
00000465: PUSH1 0x04
00000467: CALLDATALOAD
00000468: AND
00000469: PUSH2 0x0d29
0000046c: JUMP
0000046d: JUMPDEST
0000046e: CALLVALUE
0000046f: DUP1
00000470: ISZERO
00000471: PUSH2 0x0479
00000474: JUMPI
00000475: PUSH1 0x00
00000477: DUP1
00000478: REVERT
00000479: JUMPDEST
0000047a: POP
0000047b: PUSH2 0x020f
0000047e: PUSH2 0x0d6f
00000481: JUMP
00000482: JUMPDEST
00000483: CALLVALUE
00000484: DUP1
00000485: ISZERO
00000486: PUSH2 0x048e
00000489: JUMPI
0000048a: PUSH1 0x00
0000048c: DUP1
0000048d: REVERT
0000048e: JUMPDEST
0000048f: POP
00000490: PUSH2 0x0371
00000493: PUSH2 0x0d9b
00000496: JUMP
00000497: JUMPDEST
00000498: CALLVALUE
00000499: DUP1
0000049a: ISZERO
0000049b: PUSH2 0x04a3
0000049e: JUMPI
0000049f: PUSH1 0x00
000004a1: DUP1
000004a2: REVERT
000004a3: JUMPDEST
000004a4: POP
000004a5: PUSH2 0x020f
000004a8: PUSH2 0x0daa
000004ab: JUMP
000004ac: JUMPDEST
000004ad: CALLVALUE
000004ae: DUP1
000004af: ISZERO
000004b0: PUSH2 0x04b8
000004b3: JUMPI
000004b4: PUSH1 0x00
000004b6: DUP1
000004b7: REVERT
000004b8: JUMPDEST
000004b9: POP
000004ba: PUSH2 0x0236
000004bd: PUSH2 0x0db6
000004c0: JUMP
000004c1: JUMPDEST
000004c2: CALLVALUE
000004c3: DUP1
000004c4: ISZERO
000004c5: PUSH2 0x04cd
000004c8: JUMPI
000004c9: PUSH1 0x00
000004cb: DUP1
000004cc: REVERT
000004cd: JUMPDEST
000004ce: POP
000004cf: PUSH2 0x020f
000004d2: PUSH2 0x0e11
000004d5: JUMP
000004d6: JUMPDEST
000004d7: CALLVALUE
000004d8: DUP1
000004d9: ISZERO
000004da: PUSH2 0x04e2
000004dd: JUMPI
000004de: PUSH1 0x00
000004e0: DUP1
000004e1: REVERT
000004e2: JUMPDEST
000004e3: POP
000004e4: PUSH2 0x02d8
000004e7: PUSH1 0x01
000004e9: PUSH1 0xa0
000004eb: PUSH1 0x02
000004ed: EXP
000004ee: SUB
000004ef: PUSH1 0x04
000004f1: CALLDATALOAD
000004f2: AND
000004f3: PUSH2 0x0e17
000004f6: JUMP
000004f7: JUMPDEST
000004f8: CALLVALUE
000004f9: DUP1
000004fa: ISZERO
000004fb: PUSH2 0x0503
000004fe: JUMPI
000004ff: PUSH1 0x00
00000501: DUP1
00000502: REVERT
00000503: JUMPDEST
00000504: POP
00000505: PUSH2 0x050c
00000508: PUSH2 0x0e5d
0000050b: JUMP
0000050c: JUMPDEST
0000050d: PUSH1 0x40
0000050f: DUP1
00000510: MLOAD
00000511: SWAP2
00000512: ISZERO
00000513: ISZERO
00000514: DUP3
00000515: MSTORE
00000516: MLOAD
00000517: SWAP1
00000518: DUP2
00000519: SWAP1
0000051a: SUB
0000051b: PUSH1 0x20
0000051d: ADD
0000051e: SWAP1
0000051f: RETURN
00000520: JUMPDEST
00000521: PUSH2 0x020f
00000524: PUSH2 0x0e66
00000527: JUMP
00000528: JUMPDEST
00000529: CALLVALUE
0000052a: DUP1
0000052b: ISZERO
0000052c: PUSH2 0x0534
0000052f: JUMPI
00000530: PUSH1 0x00
00000532: DUP1
00000533: REVERT
00000534: JUMPDEST
00000535: POP
00000536: PUSH2 0x050c
00000539: PUSH1 0x01
0000053b: PUSH1 0xa0
0000053d: PUSH1 0x02
0000053f: EXP
00000540: SUB
00000541: PUSH1 0x04
00000543: CALLDATALOAD
00000544: AND
00000545: PUSH1 0x24
00000547: CALLDATALOAD
00000548: PUSH2 0x0e77
0000054b: JUMP
0000054c: JUMPDEST
0000054d: CALLVALUE
0000054e: DUP1
0000054f: ISZERO
00000550: PUSH2 0x0558
00000553: JUMPI
00000554: PUSH1 0x00
00000556: DUP1
00000557: REVERT
00000558: JUMPDEST
00000559: POP
0000055a: PUSH1 0x40
0000055c: DUP1
0000055d: MLOAD
0000055e: PUSH1 0x20
00000560: PUSH1 0x04
00000562: DUP1
00000563: CALLDATALOAD
00000564: DUP1
00000565: DUP3
00000566: ADD
00000567: CALLDATALOAD
00000568: PUSH1 0x1f
0000056a: DUP2
0000056b: ADD
0000056c: DUP5
0000056d: SWAP1
0000056e: DIV
0000056f: DUP5
00000570: MUL
00000571: DUP6
00000572: ADD
00000573: DUP5
00000574: ADD
00000575: SWAP1
00000576: SWAP6
00000577: MSTORE
00000578: DUP5
00000579: DUP5
0000057a: MSTORE
0000057b: PUSH2 0x02d8
0000057e: SWAP5
0000057f: CALLDATASIZE
00000580: SWAP5
00000581: SWAP3
00000582: SWAP4
00000583: PUSH1 0x24
00000585: SWAP4
00000586: SWAP3
00000587: DUP5
00000588: ADD
00000589: SWAP2
0000058a: SWAP1
0000058b: DUP2
0000058c: SWAP1
0000058d: DUP5
0000058e: ADD
0000058f: DUP4
00000590: DUP3
00000591: DUP1
00000592: DUP3
00000593: DUP5
00000594: CALLDATACOPY
00000595: POP
00000596: SWAP5
00000597: SWAP8
00000598: POP
00000599: PUSH2 0x1032
0000059c: SWAP7
0000059d: POP
0000059e: POP
0000059f: POP
000005a0: POP
000005a1: POP
000005a2: POP
000005a3: POP
000005a4: JUMP
000005a5: JUMPDEST
000005a6: CALLVALUE
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05b1
000005ac: JUMPI
000005ad: PUSH1 0x00
000005af: DUP1
000005b0: REVERT
000005b1: JUMPDEST
000005b2: POP
000005b3: PUSH2 0x0371
000005b6: PUSH2 0x1060
000005b9: JUMP
000005ba: JUMPDEST
000005bb: CALLVALUE
000005bc: DUP1
000005bd: ISZERO
000005be: PUSH2 0x05c6
000005c1: JUMPI
000005c2: PUSH1 0x00
000005c4: DUP1
000005c5: REVERT
000005c6: JUMPDEST
000005c7: POP
000005c8: PUSH1 0x40
000005ca: DUP1
000005cb: MLOAD
000005cc: PUSH1 0x20
000005ce: PUSH1 0x04
000005d0: DUP1
000005d1: CALLDATALOAD
000005d2: DUP1
000005d3: DUP3
000005d4: ADD
000005d5: CALLDATALOAD
000005d6: PUSH1 0x1f
000005d8: DUP2
000005d9: ADD
000005da: DUP5
000005db: SWAP1
000005dc: DIV
000005dd: DUP5
000005de: MUL
000005df: DUP6
000005e0: ADD
000005e1: DUP5
000005e2: ADD
000005e3: SWAP1
000005e4: SWAP6
000005e5: MSTORE
000005e6: DUP5
000005e7: DUP5
000005e8: MSTORE
000005e9: PUSH2 0x02d8
000005ec: SWAP5
000005ed: CALLDATASIZE
000005ee: SWAP5
000005ef: SWAP3
000005f0: SWAP4
000005f1: PUSH1 0x24
000005f3: SWAP4
000005f4: SWAP3
000005f5: DUP5
000005f6: ADD
000005f7: SWAP2
000005f8: SWAP1
000005f9: DUP2
000005fa: SWAP1
000005fb: DUP5
000005fc: ADD
000005fd: DUP4
000005fe: DUP3
000005ff: DUP1
00000600: DUP3
00000601: DUP5
00000602: CALLDATACOPY
00000603: POP
00000604: SWAP5
00000605: SWAP8
00000606: POP
00000607: PUSH2 0x106f
0000060a: SWAP7
0000060b: POP
0000060c: POP
0000060d: POP
0000060e: POP
0000060f: POP
00000610: POP
00000611: POP
00000612: JUMP
00000613: JUMPDEST
00000614: CALLVALUE
00000615: DUP1
00000616: ISZERO
00000617: PUSH2 0x061f
0000061a: JUMPI
0000061b: PUSH1 0x00
0000061d: DUP1
0000061e: REVERT
0000061f: JUMPDEST
00000620: POP
00000621: PUSH2 0x020f
00000624: PUSH2 0x1099
00000627: JUMP
00000628: JUMPDEST
00000629: CALLVALUE
0000062a: DUP1
0000062b: ISZERO
0000062c: PUSH2 0x0634
0000062f: JUMPI
00000630: PUSH1 0x00
00000632: DUP1
00000633: REVERT
00000634: JUMPDEST
00000635: POP
00000636: PUSH2 0x02d8
00000639: PUSH2 0x109f
0000063c: JUMP
0000063d: JUMPDEST
0000063e: CALLVALUE
0000063f: DUP1
00000640: ISZERO
00000641: PUSH2 0x0649
00000644: JUMPI
00000645: PUSH1 0x00
00000647: DUP1
00000648: REVERT
00000649: JUMPDEST
0000064a: POP
0000064b: PUSH2 0x02d8
0000064e: PUSH1 0x04
00000650: CALLDATALOAD
00000651: PUSH2 0x1147
00000654: JUMP
00000655: JUMPDEST
00000656: PUSH2 0x020f
00000659: PUSH2 0x13a9
0000065c: JUMP
0000065d: JUMPDEST
0000065e: CALLVALUE
0000065f: DUP1
00000660: ISZERO
00000661: PUSH2 0x0669
00000664: JUMPI
00000665: PUSH1 0x00
00000667: DUP1
00000668: REVERT
00000669: JUMPDEST
0000066a: POP
0000066b: PUSH2 0x02d8
0000066e: PUSH2 0x1431
00000671: JUMP
00000672: JUMPDEST
00000673: CALLVALUE
00000674: DUP1
00000675: ISZERO
00000676: PUSH2 0x067e
00000679: JUMPI
0000067a: PUSH1 0x00
0000067c: DUP1
0000067d: REVERT
0000067e: JUMPDEST
0000067f: POP
00000680: PUSH2 0x020f
00000683: PUSH2 0x145a
00000686: JUMP
00000687: JUMPDEST
00000688: CALLVALUE
00000689: DUP1
0000068a: ISZERO
0000068b: PUSH2 0x0693
0000068e: JUMPI
0000068f: PUSH1 0x00
00000691: DUP1
00000692: REVERT
00000693: JUMPDEST
00000694: POP
00000695: PUSH2 0x02d8
00000698: PUSH1 0x01
0000069a: PUSH1 0xa0
0000069c: PUSH1 0x02
0000069e: EXP
0000069f: SUB
000006a0: PUSH1 0x04
000006a2: CALLDATALOAD
000006a3: AND
000006a4: PUSH2 0x1460
000006a7: JUMP
000006a8: JUMPDEST
000006a9: CALLVALUE
000006aa: DUP1
000006ab: ISZERO
000006ac: PUSH2 0x06b4
000006af: JUMPI
000006b0: PUSH1 0x00
000006b2: DUP1
000006b3: REVERT
000006b4: JUMPDEST
000006b5: POP
000006b6: PUSH2 0x020f
000006b9: PUSH1 0x01
000006bb: PUSH1 0xa0
000006bd: PUSH1 0x02
000006bf: EXP
000006c0: SUB
000006c1: PUSH1 0x04
000006c3: CALLDATALOAD
000006c4: AND
000006c5: PUSH2 0x14f4
000006c8: JUMP
000006c9: JUMPDEST
000006ca: PUSH1 0x00
000006cc: DUP1
000006cd: PUSH1 0x00
000006cf: DUP1
000006d0: PUSH1 0x00
000006d2: DUP1
000006d3: PUSH1 0x00
000006d5: DUP1
000006d6: PUSH1 0x01
000006d8: SLOAD
000006d9: TIMESTAMP
000006da: LT
000006db: ISZERO
000006dc: ISZERO
000006dd: ISZERO
000006de: PUSH2 0x06e6
000006e1: JUMPI
000006e2: PUSH1 0x00
000006e4: DUP1
000006e5: REVERT
000006e6: JUMPDEST
000006e7: PUSH1 0x01
000006e9: PUSH1 0xa0
000006eb: PUSH1 0x02
000006ed: EXP
000006ee: SUB
000006ef: DUP11
000006f0: AND
000006f1: PUSH1 0x00
000006f3: SWAP1
000006f4: DUP2
000006f5: MSTORE
000006f6: PUSH1 0x12
000006f8: PUSH1 0x20
000006fa: MSTORE
000006fb: PUSH1 0x40
000006fd: SWAP1
000006fe: KECCAK256
000006ff: SLOAD
00000700: ISZERO
00000701: ISZERO
00000702: PUSH2 0x070f
00000705: JUMPI
00000706: PUSH1 0x16
00000708: DUP1
00000709: SLOAD
0000070a: PUSH1 0x01
0000070c: ADD
0000070d: SWAP1
0000070e: SSTORE
0000070f: JUMPDEST
00000710: PUSH1 0x01
00000712: PUSH1 0xa0
00000714: PUSH1 0x02
00000716: EXP
00000717: SUB
00000718: DUP11
00000719: AND
0000071a: PUSH1 0x00
0000071c: SWAP1
0000071d: DUP2
0000071e: MSTORE
0000071f: PUSH1 0x12
00000721: PUSH1 0x20
00000723: MSTORE
00000724: PUSH1 0x40
00000726: SWAP1
00000727: KECCAK256
00000728: DUP1
00000729: SLOAD
0000072a: DUP11
0000072b: ADD
0000072c: SWAP1
0000072d: SSTORE
0000072e: PUSH1 0x04
00000730: SLOAD
00000731: PUSH2 0x0746
00000734: SWAP1
00000735: PUSH2 0x073f
00000738: SWAP1
00000739: DUP12
0000073a: SWAP1
0000073b: PUSH2 0x1506
0000073e: JUMP
0000073f: JUMPDEST
00000740: PUSH1 0x64
00000742: PUSH2 0x152f
00000745: JUMP
00000746: JUMPDEST
00000747: SWAP7
00000748: POP
00000749: PUSH2 0x0757
0000074c: PUSH2 0x073f
0000074f: DUP9
00000750: PUSH1 0x08
00000752: SLOAD
00000753: PUSH2 0x1506
00000756: JUMP
00000757: JUMPDEST
00000758: PUSH1 0x09
0000075a: SLOAD
0000075b: PUSH1 0x40
0000075d: MLOAD
0000075e: SWAP2
0000075f: SWAP8
00000760: POP
00000761: PUSH1 0x01
00000763: PUSH1 0xa0
00000765: PUSH1 0x02
00000767: EXP
00000768: SUB
00000769: AND
0000076a: SWAP1
0000076b: DUP8
0000076c: ISZERO
0000076d: PUSH2 0x08fc
00000770: MUL
00000771: SWAP1
00000772: DUP9
00000773: SWAP1
00000774: PUSH1 0x00
00000776: DUP2
00000777: DUP2
00000778: DUP2
00000779: DUP6
0000077a: DUP9
0000077b: DUP9
0000077c: CALL
0000077d: SWAP4
0000077e: POP
0000077f: POP
00000780: POP
00000781: POP
00000782: ISZERO
00000783: DUP1
00000784: ISZERO
00000785: PUSH2 0x0792
00000788: JUMPI
00000789: RETURNDATASIZE
0000078a: PUSH1 0x00
0000078c: DUP1
0000078d: RETURNDATACOPY
0000078e: RETURNDATASIZE
0000078f: PUSH1 0x00
00000791: REVERT
00000792: JUMPDEST
00000793: POP
00000794: PUSH2 0x07a2
00000797: PUSH2 0x073f
0000079a: DUP9
0000079b: PUSH1 0x07
0000079d: SLOAD
0000079e: PUSH2 0x1506
000007a1: JUMP
000007a2: JUMPDEST
000007a3: PUSH1 0x0e
000007a5: DUP1
000007a6: SLOAD
000007a7: DUP3
000007a8: ADD
000007a9: SWAP1
000007aa: SSTORE
000007ab: PUSH1 0x0d
000007ad: SLOAD
000007ae: PUSH1 0x40
000007b0: MLOAD
000007b1: SWAP2
000007b2: SWAP7
000007b3: POP
000007b4: PUSH1 0x01
000007b6: PUSH1 0xa0
000007b8: PUSH1 0x02
000007ba: EXP
000007bb: SUB
000007bc: AND
000007bd: SWAP1
000007be: DUP7
000007bf: ISZERO
000007c0: PUSH2 0x08fc
000007c3: MUL
000007c4: SWAP1
000007c5: DUP8
000007c6: SWAP1
000007c7: PUSH1 0x00
000007c9: DUP2
000007ca: DUP2
000007cb: DUP2
000007cc: DUP6
000007cd: DUP9
000007ce: DUP9
000007cf: CALL
000007d0: SWAP4
000007d1: POP
000007d2: POP
000007d3: POP
000007d4: POP
000007d5: ISZERO
000007d6: DUP1
000007d7: ISZERO
000007d8: PUSH2 0x07e5
000007db: JUMPI
000007dc: RETURNDATASIZE
000007dd: PUSH1 0x00
000007df: DUP1
000007e0: RETURNDATACOPY
000007e1: RETURNDATASIZE
000007e2: PUSH1 0x00
000007e4: REVERT
000007e5: JUMPDEST
000007e6: POP
000007e7: PUSH2 0x07f9
000007ea: DUP8
000007eb: PUSH2 0x07f4
000007ee: DUP8
000007ef: DUP10
000007f0: PUSH2 0x1544
000007f3: JUMP
000007f4: JUMPDEST
000007f5: PUSH2 0x1551
000007f8: JUMP
000007f9: JUMPDEST
000007fa: SWAP4
000007fb: POP
000007fc: PUSH2 0x0805
000007ff: DUP10
00000800: DUP9
00000801: PUSH2 0x1551
00000804: JUMP
00000805: JUMPDEST
00000806: SWAP3
00000807: POP
00000808: PUSH9 0x010000000000000000
00000812: DUP5
00000813: MUL
00000814: SWAP2
00000815: POP
00000816: PUSH1 0x00
00000818: DUP4
00000819: GT
0000081a: DUP1
0000081b: ISZERO
0000081c: PUSH2 0x082f
0000081f: JUMPI
00000820: POP
00000821: PUSH1 0x14
00000823: SLOAD
00000824: PUSH2 0x082d
00000827: DUP5
00000828: DUP3
00000829: PUSH2 0x1544
0000082c: JUMP
0000082d: JUMPDEST
0000082e: GT
0000082f: JUMPDEST
00000830: ISZERO
00000831: ISZERO
00000832: PUSH2 0x083a
00000835: JUMPI
00000836: PUSH1 0x00
00000838: DUP1
00000839: REVERT
0000083a: JUMPDEST
0000083b: PUSH1 0x18
0000083d: SLOAD
0000083e: PUSH1 0xff
00000840: AND
00000841: ISZERO
00000842: ISZERO
00000843: PUSH2 0x086e
00000846: JUMPI
00000847: PUSH2 0x0852
0000084a: PUSH1 0x14
0000084c: SLOAD
0000084d: DUP5
0000084e: PUSH2 0x1544
00000851: JUMP
00000852: JUMPDEST
00000853: PUSH1 0x14
00000855: SSTORE
00000856: PUSH1 0x0f
00000858: SLOAD
00000859: PUSH2 0x0862
0000085c: SWAP1
0000085d: DUP6
0000085e: PUSH2 0x1544
00000861: JUMP
00000862: JUMPDEST
00000863: PUSH1 0x0f
00000865: SSTORE
00000866: PUSH1 0x00
00000868: SWAP2
00000869: POP
0000086a: PUSH2 0x08d8
0000086d: JUMP
0000086e: JUMPDEST
0000086f: PUSH1 0x00
00000871: PUSH1 0x14
00000873: SLOAD
00000874: GT
00000875: ISZERO
00000876: PUSH2 0x08d2
00000879: JUMPI
0000087a: PUSH2 0x0885
0000087d: PUSH1 0x14
0000087f: SLOAD
00000880: DUP5
00000881: PUSH2 0x1544
00000884: JUMP
00000885: JUMPDEST
00000886: PUSH1 0x14
00000888: DUP2
00000889: SWAP1
0000088a: SSTORE
0000088b: PUSH9 0x010000000000000000
00000895: DUP6
00000896: MUL
00000897: DUP2
00000898: ISZERO
00000899: ISZERO
0000089a: PUSH2 0x089f
0000089d: JUMPI
0000089e: INVALID
0000089f: JUMPDEST
000008a0: PUSH1 0x15
000008a2: DUP1
000008a3: SLOAD
000008a4: SWAP3
000008a5: SWAP1
000008a6: SWAP2
000008a7: DIV
000008a8: SWAP1
000008a9: SWAP2
000008aa: ADD
000008ab: SWAP1
000008ac: SSTORE
000008ad: PUSH1 0x14
000008af: SLOAD
000008b0: PUSH9 0x010000000000000000
000008ba: DUP6
000008bb: MUL
000008bc: DUP2
000008bd: ISZERO
000008be: ISZERO
000008bf: PUSH2 0x08c4
000008c2: JUMPI
000008c3: INVALID
000008c4: JUMPDEST
000008c5: DIV
000008c6: DUP4
000008c7: MUL
000008c8: DUP3
000008c9: SUB
000008ca: DUP3
000008cb: SUB
000008cc: SWAP2
000008cd: POP
000008ce: PUSH2 0x08d8
000008d1: JUMP
000008d2: JUMPDEST
000008d3: PUSH1 0x14
000008d5: DUP4
000008d6: SWAP1
000008d7: SSTORE
000008d8: JUMPDEST
000008d9: PUSH1 0x01
000008db: PUSH1 0xa0
000008dd: PUSH1 0x02
000008df: EXP
000008e0: SUB
000008e1: DUP11
000008e2: AND
000008e3: PUSH1 0x00
000008e5: SWAP1
000008e6: DUP2
000008e7: MSTORE
000008e8: PUSH1 0x10
000008ea: PUSH1 0x20
000008ec: MSTORE
000008ed: PUSH1 0x40
000008ef: SWAP1
000008f0: KECCAK256
000008f1: SLOAD
000008f2: PUSH2 0x08fb
000008f5: SWAP1
000008f6: DUP5
000008f7: PUSH2 0x1544
000008fa: JUMP
000008fb: JUMPDEST
000008fc: PUSH1 0x01
000008fe: PUSH1 0xa0
00000900: PUSH1 0x02
00000902: EXP
00000903: SUB
00000904: DUP12
00000905: AND
00000906: PUSH1 0x00
00000908: DUP2
00000909: DUP2
0000090a: MSTORE
0000090b: PUSH1 0x10
0000090d: PUSH1 0x20
0000090f: SWAP1
00000910: DUP2
00000911: MSTORE
00000912: PUSH1 0x40
00000914: DUP1
00000915: DUP4
00000916: KECCAK256
00000917: SWAP5
00000918: SWAP1
00000919: SWAP5
0000091a: SSTORE
0000091b: PUSH1 0x15
0000091d: SLOAD
0000091e: PUSH1 0x11
00000920: DUP3
00000921: MSTORE
00000922: DUP5
00000923: DUP4
00000924: KECCAK256
00000925: DUP1
00000926: SLOAD
00000927: SWAP2
00000928: DUP10
00000929: MUL
0000092a: DUP9
0000092b: SWAP1
0000092c: SUB
0000092d: SWAP2
0000092e: DUP3
0000092f: ADD
00000930: SWAP1
00000931: SSTORE
00000932: DUP5
00000933: MLOAD
00000934: DUP9
00000935: DUP2
00000936: MSTORE
00000937: SWAP5
00000938: MLOAD
00000939: SWAP1
0000093a: SWAP6
0000093b: POP
0000093c: SWAP3
0000093d: SWAP4
0000093e: SWAP2
0000093f: SWAP3
00000940: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00000961: SWAP3
00000962: DUP2
00000963: SWAP1
00000964: SUB
00000965: SWAP1
00000966: SWAP2
00000967: ADD
00000968: SWAP1
00000969: LOG3
0000096a: PUSH1 0x40
0000096c: DUP1
0000096d: MLOAD
0000096e: DUP11
0000096f: DUP2
00000970: MSTORE
00000971: PUSH1 0x20
00000973: DUP2
00000974: ADD
00000975: DUP6
00000976: SWAP1
00000977: MSTORE
00000978: TIMESTAMP
00000979: DUP2
0000097a: DUP4
0000097b: ADD
0000097c: MSTORE
0000097d: SWAP1
0000097e: MLOAD
0000097f: PUSH1 0x01
00000981: PUSH1 0xa0
00000983: PUSH1 0x02
00000985: EXP
00000986: SUB
00000987: DUP13
00000988: AND
00000989: SWAP2
0000098a: PUSH32 0x810900bb33e423094372279f779b623ab22b73472a8a91fce3c018129c205019
000009ab: SWAP2
000009ac: SWAP1
000009ad: DUP2
000009ae: SWAP1
000009af: SUB
000009b0: PUSH1 0x60
000009b2: ADD
000009b3: SWAP1
000009b4: LOG2
000009b5: POP
000009b6: SWAP1
000009b7: SWAP9
000009b8: SWAP8
000009b9: POP
000009ba: POP
000009bb: POP
000009bc: POP
000009bd: POP
000009be: POP
000009bf: POP
000009c0: POP
000009c1: JUMP
000009c2: JUMPDEST
000009c3: PUSH1 0x01
000009c5: PUSH1 0xa0
000009c7: PUSH1 0x02
000009c9: EXP
000009ca: SUB
000009cb: AND
000009cc: PUSH1 0x00
000009ce: SWAP1
000009cf: DUP2
000009d0: MSTORE
000009d1: PUSH1 0x11
000009d3: PUSH1 0x20
000009d5: SWAP1
000009d6: DUP2
000009d7: MSTORE
000009d8: PUSH1 0x40
000009da: DUP1
000009db: DUP4
000009dc: KECCAK256
000009dd: SLOAD
000009de: PUSH1 0x10
000009e0: SWAP1
000009e1: SWAP3
000009e2: MSTORE
000009e3: SWAP1
000009e4: SWAP2
000009e5: KECCAK256
000009e6: SLOAD
000009e7: PUSH1 0x15
000009e9: SLOAD
000009ea: PUSH9 0x010000000000000000
000009f4: SWAP2
000009f5: MUL
000009f6: SWAP2
000009f7: SWAP1
000009f8: SWAP2
000009f9: SUB
000009fa: DIV
000009fb: SWAP1
000009fc: JUMP
000009fd: JUMPDEST
000009fe: PUSH1 0x02
00000a00: DUP1
00000a01: SLOAD
00000a02: PUSH1 0x40
00000a04: DUP1
00000a05: MLOAD
00000a06: PUSH1 0x20
00000a08: PUSH1 0x01
00000a0a: DUP5
00000a0b: AND
00000a0c: ISZERO
00000a0d: PUSH2 0x0100
00000a10: MUL
00000a11: PUSH1 0x00
00000a13: NOT
00000a14: ADD
00000a15: SWAP1
00000a16: SWAP4
00000a17: AND
00000a18: DUP5
00000a19: SWAP1
00000a1a: DIV
00000a1b: PUSH1 0x1f
00000a1d: DUP2
00000a1e: ADD
00000a1f: DUP5
00000a20: SWAP1
00000a21: DIV
00000a22: DUP5
00000a23: MUL
00000a24: DUP3
00000a25: ADD
00000a26: DUP5
00000a27: ADD
00000a28: SWAP1
00000a29: SWAP3
00000a2a: MSTORE
00000a2b: DUP2
00000a2c: DUP2
00000a2d: MSTORE
00000a2e: SWAP3
00000a2f: SWAP2
00000a30: DUP4
00000a31: ADD
00000a32: DUP3
00000a33: DUP3
00000a34: DUP1
00000a35: ISZERO
00000a36: PUSH2 0x0a80
00000a39: JUMPI
00000a3a: DUP1
00000a3b: PUSH1 0x1f
00000a3d: LT
00000a3e: PUSH2 0x0a55
00000a41: JUMPI
00000a42: PUSH2 0x0100
00000a45: DUP1
00000a46: DUP4
00000a47: SLOAD
00000a48: DIV
00000a49: MUL
00000a4a: DUP4
00000a4b: MSTORE
00000a4c: SWAP2
00000a4d: PUSH1 0x20
00000a4f: ADD
00000a50: SWAP2
00000a51: PUSH2 0x0a80
00000a54: JUMP
00000a55: JUMPDEST
00000a56: DUP3
00000a57: ADD
00000a58: SWAP2
00000a59: SWAP1
00000a5a: PUSH1 0x00
00000a5c: MSTORE
00000a5d: PUSH1 0x20
00000a5f: PUSH1 0x00
00000a61: KECCAK256
00000a62: SWAP1
00000a63: JUMPDEST
00000a64: DUP2
00000a65: SLOAD
00000a66: DUP2
00000a67: MSTORE
00000a68: SWAP1
00000a69: PUSH1 0x01
00000a6b: ADD
00000a6c: SWAP1
00000a6d: PUSH1 0x20
00000a6f: ADD
00000a70: DUP1
00000a71: DUP4
00000a72: GT
00000a73: PUSH2 0x0a63
00000a76: JUMPI
00000a77: DUP3
00000a78: SWAP1
00000a79: SUB
00000a7a: PUSH1 0x1f
00000a7c: AND
00000a7d: DUP3
00000a7e: ADD
00000a7f: SWAP2
00000a80: JUMPDEST
00000a81: POP
00000a82: POP
00000a83: POP
00000a84: POP
00000a85: POP
00000a86: DUP2
00000a87: JUMP
00000a88: JUMPDEST
00000a89: PUSH1 0x00
00000a8b: DUP1
00000a8c: PUSH1 0x00
00000a8e: PUSH2 0x0a9c
00000a91: PUSH2 0x073f
00000a94: DUP6
00000a95: PUSH1 0x04
00000a97: SLOAD
00000a98: PUSH2 0x1506
00000a9b: JUMP
00000a9c: JUMPDEST
00000a9d: SWAP2
00000a9e: POP
00000a9f: PUSH2 0x0aa8
00000aa2: DUP5
00000aa3: DUP4
00000aa4: PUSH2 0x1551
00000aa7: JUMP
00000aa8: JUMPDEST
00000aa9: SWAP5
00000aaa: SWAP4
00000aab: POP
00000aac: POP
00000aad: POP
00000aae: POP
00000aaf: JUMP
00000ab0: JUMPDEST
00000ab1: PUSH1 0x00
00000ab3: PUSH1 0x0f
00000ab5: SLOAD
00000ab6: GT
00000ab7: DUP1
00000ab8: ISZERO
00000ab9: PUSH2 0x0ac5
00000abc: JUMPI
00000abd: POP
00000abe: PUSH1 0x18
00000ac0: SLOAD
00000ac1: PUSH1 0xff
00000ac3: AND
00000ac4: ISZERO
00000ac5: JUMPDEST
00000ac6: DUP1
00000ac7: ISZERO
00000ac8: PUSH2 0x0ad8
00000acb: JUMPI
00000acc: POP
00000acd: PUSH1 0x01
00000acf: SLOAD
00000ad0: PUSH3 0x015180
00000ad4: ADD
00000ad5: TIMESTAMP
00000ad6: LT
00000ad7: ISZERO
00000ad8: JUMPDEST
00000ad9: ISZERO
00000ada: ISZERO
00000adb: PUSH2 0x0ae3
00000ade: JUMPI
00000adf: PUSH1 0x00
00000ae1: DUP1
00000ae2: REVERT
00000ae3: JUMPDEST
00000ae4: PUSH2 0x0b09
00000ae7: PUSH1 0x15
00000ae9: SLOAD
00000aea: PUSH1 0x14
00000aec: SLOAD
00000aed: PUSH9 0x010000000000000000
00000af7: PUSH1 0x0f
00000af9: SLOAD
00000afa: MUL
00000afb: DUP2
00000afc: ISZERO
00000afd: ISZERO
00000afe: PUSH2 0x0b03
00000b01: JUMPI
00000b02: INVALID
00000b03: JUMPDEST
00000b04: DIV
00000b05: PUSH2 0x1544
00000b08: JUMP
00000b09: JUMPDEST
00000b0a: PUSH1 0x15
00000b0c: SSTORE
00000b0d: PUSH1 0x18
00000b0f: DUP1
00000b10: SLOAD
00000b11: PUSH1 0xff
00000b13: NOT
00000b14: AND
00000b15: PUSH1 0x01
00000b17: OR
00000b18: SWAP1
00000b19: SSTORE
00000b1a: JUMP
00000b1b: JUMPDEST
00000b1c: PUSH1 0x14
00000b1e: SLOAD
00000b1f: JUMPDEST
00000b20: SWAP1
00000b21: JUMP
00000b22: JUMPDEST
00000b23: PUSH1 0x00
00000b25: DUP1
00000b26: PUSH1 0x00
00000b28: PUSH1 0x14
00000b2a: SLOAD
00000b2b: DUP5
00000b2c: GT
00000b2d: ISZERO
00000b2e: ISZERO
00000b2f: ISZERO
00000b30: PUSH2 0x0b38
00000b33: JUMPI
00000b34: PUSH1 0x00
00000b36: DUP1
00000b37: REVERT
00000b38: JUMPDEST
00000b39: PUSH2 0x0a9c
00000b3c: PUSH2 0x073f
00000b3f: DUP6
00000b40: PUSH1 0x06
00000b42: SLOAD
00000b43: PUSH2 0x1506
00000b46: JUMP
00000b47: JUMPDEST
00000b48: PUSH1 0x12
00000b4a: DUP2
00000b4b: JUMP
00000b4c: JUMPDEST
00000b4d: PUSH1 0x00
00000b4f: CALLER
00000b50: PUSH2 0x0b58
00000b53: DUP2
00000b54: PUSH2 0x09c2
00000b57: JUMP
00000b58: JUMPDEST
00000b59: SWAP2
00000b5a: POP
00000b5b: JUMPDEST
00000b5c: POP
00000b5d: SWAP1
00000b5e: JUMP
00000b5f: JUMPDEST
00000b60: PUSH1 0x0e
00000b62: SLOAD
00000b63: DUP2
00000b64: JUMP
00000b65: JUMPDEST
00000b66: PUSH1 0x0d
00000b68: SLOAD
00000b69: PUSH1 0x01
00000b6b: PUSH1 0xa0
00000b6d: PUSH1 0x02
00000b6f: EXP
00000b70: SUB
00000b71: AND
00000b72: DUP2
00000b73: JUMP
00000b74: JUMPDEST
00000b75: PUSH1 0x00
00000b77: DUP1
00000b78: PUSH1 0x00
00000b7a: PUSH2 0x0b81
00000b7d: PUSH2 0x0b4c
00000b80: JUMP
00000b81: JUMPDEST
00000b82: GT
00000b83: PUSH2 0x0b8b
00000b86: JUMPI
00000b87: PUSH1 0x00
00000b89: DUP1
00000b8a: REVERT
00000b8b: JUMPDEST
00000b8c: CALLER
00000b8d: SWAP2
00000b8e: POP
00000b8f: PUSH2 0x0b96
00000b92: PUSH2 0x0b4c
00000b95: JUMP
00000b96: JUMPDEST
00000b97: PUSH1 0x01
00000b99: PUSH1 0xa0
00000b9b: PUSH1 0x02
00000b9d: EXP
00000b9e: SUB
00000b9f: DUP4
00000ba0: AND
00000ba1: PUSH1 0x00
00000ba3: DUP2
00000ba4: DUP2
00000ba5: MSTORE
00000ba6: PUSH1 0x11
00000ba8: PUSH1 0x20
00000baa: MSTORE
00000bab: PUSH1 0x40
00000bad: DUP1
00000bae: DUP3
00000baf: KECCAK256
00000bb0: DUP1
00000bb1: SLOAD
00000bb2: PUSH9 0x010000000000000000
00000bbc: DUP7
00000bbd: MUL
00000bbe: ADD
00000bbf: SWAP1
00000bc0: SSTORE
00000bc1: MLOAD
00000bc2: SWAP3
00000bc3: SWAP4
00000bc4: POP
00000bc5: SWAP1
00000bc6: SWAP2
00000bc7: DUP4
00000bc8: ISZERO
00000bc9: PUSH2 0x08fc
00000bcc: MUL
00000bcd: SWAP2
00000bce: DUP5
00000bcf: SWAP2
00000bd0: SWAP1
00000bd1: DUP2
00000bd2: DUP2
00000bd3: DUP2
00000bd4: DUP6
00000bd5: DUP9
00000bd6: DUP9
00000bd7: CALL
00000bd8: SWAP4
00000bd9: POP
00000bda: POP
00000bdb: POP
00000bdc: POP
00000bdd: ISZERO
00000bde: DUP1
00000bdf: ISZERO
00000be0: PUSH2 0x0bed
00000be3: JUMPI
00000be4: RETURNDATASIZE
00000be5: PUSH1 0x00
00000be7: DUP1
00000be8: RETURNDATACOPY
00000be9: RETURNDATASIZE
00000bea: PUSH1 0x00
00000bec: REVERT
00000bed: JUMPDEST
00000bee: POP
00000bef: PUSH1 0x01
00000bf1: PUSH1 0xa0
00000bf3: PUSH1 0x02
00000bf5: EXP
00000bf6: SUB
00000bf7: DUP3
00000bf8: AND
00000bf9: PUSH1 0x00
00000bfb: DUP2
00000bfc: DUP2
00000bfd: MSTORE
00000bfe: PUSH1 0x13
00000c00: PUSH1 0x20
00000c02: SWAP1
00000c03: DUP2
00000c04: MSTORE
00000c05: PUSH1 0x40
00000c07: SWAP2
00000c08: DUP3
00000c09: SWAP1
00000c0a: KECCAK256
00000c0b: DUP1
00000c0c: SLOAD
00000c0d: DUP6
00000c0e: ADD
00000c0f: SWAP1
00000c10: SSTORE
00000c11: DUP2
00000c12: MLOAD
00000c13: DUP5
00000c14: DUP2
00000c15: MSTORE
00000c16: SWAP2
00000c17: MLOAD
00000c18: PUSH32 0xccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc
00000c39: SWAP3
00000c3a: DUP2
00000c3b: SWAP1
00000c3c: SUB
00000c3d: SWAP1
00000c3e: SWAP2
00000c3f: ADD
00000c40: SWAP1
00000c41: LOG2
00000c42: POP
00000c43: POP
00000c44: JUMP
00000c45: JUMPDEST
00000c46: PUSH1 0x0c
00000c48: SLOAD
00000c49: PUSH1 0x0b
00000c4b: SLOAD
00000c4c: PUSH1 0x01
00000c4e: PUSH1 0xa0
00000c50: PUSH1 0x02
00000c52: EXP
00000c53: SUB
00000c54: SWAP1
00000c55: DUP2
00000c56: AND
00000c57: SWAP2
00000c58: AND
00000c59: EQ
00000c5a: PUSH2 0x0c62
00000c5d: JUMPI
00000c5e: PUSH1 0x00
00000c60: DUP1
00000c61: REVERT
00000c62: JUMPDEST
00000c63: PUSH1 0x0b
00000c65: SLOAD
00000c66: PUSH1 0x01
00000c68: PUSH1 0xa0
00000c6a: PUSH1 0x02
00000c6c: EXP
00000c6d: SUB
00000c6e: AND
00000c6f: ORIGIN
00000c70: EQ
00000c71: PUSH2 0x0c79
00000c74: JUMPI
00000c75: PUSH1 0x00
00000c77: DUP1
00000c78: REVERT
00000c79: JUMPDEST
00000c7a: PUSH1 0x0b
00000c7c: SLOAD
00000c7d: PUSH1 0x0d
00000c7f: DUP1
00000c80: SLOAD
00000c81: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c96: NOT
00000c97: AND
00000c98: PUSH1 0x01
00000c9a: PUSH1 0xa0
00000c9c: PUSH1 0x02
00000c9e: EXP
00000c9f: SUB
00000ca0: SWAP1
00000ca1: SWAP3
00000ca2: AND
00000ca3: SWAP2
00000ca4: SWAP1
00000ca5: SWAP2
00000ca6: OR
00000ca7: SWAP1
00000ca8: SSTORE
00000ca9: JUMP
00000caa: JUMPDEST
00000cab: PUSH1 0x00
00000cad: DUP1
00000cae: PUSH1 0x00
00000cb0: DUP1
00000cb1: PUSH8 0x0de0b6b3a7640000
00000cba: SWAP3
00000cbb: POP
00000cbc: PUSH2 0x0cca
00000cbf: PUSH2 0x073f
00000cc2: DUP5
00000cc3: PUSH1 0x06
00000cc5: SLOAD
00000cc6: PUSH2 0x1506
00000cc9: JUMP
00000cca: JUMPDEST
00000ccb: SWAP2
00000ccc: POP
00000ccd: PUSH2 0x0aa8
00000cd0: DUP4
00000cd1: DUP4
00000cd2: PUSH2 0x1551
00000cd5: JUMP
00000cd6: JUMPDEST
00000cd7: PUSH1 0x0c
00000cd9: SLOAD
00000cda: PUSH1 0x01
00000cdc: PUSH1 0xa0
00000cde: PUSH1 0x02
00000ce0: EXP
00000ce1: SUB
00000ce2: AND
00000ce3: DUP2
00000ce4: JUMP
00000ce5: JUMPDEST
00000ce6: ADDRESS
00000ce7: BALANCE
00000ce8: SWAP1
00000ce9: JUMP
00000cea: JUMPDEST
00000ceb: PUSH1 0x00
00000ced: PUSH2 0x0cf6
00000cf0: DUP3
00000cf1: CALLVALUE
00000cf2: PUSH2 0x06c9
00000cf5: JUMP
00000cf6: JUMPDEST
00000cf7: SWAP3
00000cf8: SWAP2
00000cf9: POP
00000cfa: POP
00000cfb: JUMP
00000cfc: JUMPDEST
00000cfd: PUSH1 0x01
00000cff: PUSH1 0xa0
00000d01: PUSH1 0x02
00000d03: EXP
00000d04: SUB
00000d05: AND
00000d06: PUSH1 0x00
00000d08: SWAP1
00000d09: DUP2
00000d0a: MSTORE
00000d0b: PUSH1 0x10
00000d0d: PUSH1 0x20
00000d0f: MSTORE
00000d10: PUSH1 0x40
00000d12: SWAP1
00000d13: KECCAK256
00000d14: SLOAD
00000d15: SWAP1
00000d16: JUMP
00000d17: JUMPDEST
00000d18: PUSH1 0x13
00000d1a: PUSH1 0x20
00000d1c: MSTORE
00000d1d: PUSH1 0x00
00000d1f: SWAP1
00000d20: DUP2
00000d21: MSTORE
00000d22: PUSH1 0x40
00000d24: SWAP1
00000d25: KECCAK256
00000d26: SLOAD
00000d27: DUP2
00000d28: JUMP
00000d29: JUMPDEST
00000d2a: PUSH1 0x00
00000d2c: SLOAD
00000d2d: PUSH1 0x01
00000d2f: PUSH1 0xa0
00000d31: PUSH1 0x02
00000d33: EXP
00000d34: SUB
00000d35: AND
00000d36: CALLER
00000d37: EQ
00000d38: PUSH2 0x0d40
00000d3b: JUMPI
00000d3c: PUSH1 0x00
00000d3e: DUP1
00000d3f: REVERT
00000d40: JUMPDEST
00000d41: PUSH1 0x0b
00000d43: DUP1
00000d44: SLOAD
00000d45: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d5a: NOT
00000d5b: AND
00000d5c: PUSH1 0x01
00000d5e: PUSH1 0xa0
00000d60: PUSH1 0x02
00000d62: EXP
00000d63: SUB
00000d64: SWAP3
00000d65: SWAP1
00000d66: SWAP3
00000d67: AND
00000d68: SWAP2
00000d69: SWAP1
00000d6a: SWAP2
00000d6b: OR
00000d6c: SWAP1
00000d6d: SSTORE
00000d6e: JUMP
00000d6f: JUMPDEST
00000d70: PUSH1 0x00
00000d72: DUP1
00000d73: PUSH1 0x00
00000d75: DUP1
00000d76: PUSH8 0x0de0b6b3a7640000
00000d7f: SWAP3
00000d80: POP
00000d81: PUSH2 0x0d8f
00000d84: PUSH2 0x073f
00000d87: DUP5
00000d88: PUSH1 0x04
00000d8a: SLOAD
00000d8b: PUSH2 0x1506
00000d8e: JUMP
00000d8f: JUMPDEST
00000d90: SWAP2
00000d91: POP
00000d92: PUSH2 0x0aa8
00000d95: DUP4
00000d96: DUP4
00000d97: PUSH2 0x1544
00000d9a: JUMP
00000d9b: JUMPDEST
00000d9c: PUSH1 0x00
00000d9e: SLOAD
00000d9f: PUSH1 0x01
00000da1: PUSH1 0xa0
00000da3: PUSH1 0x02
00000da5: EXP
00000da6: SUB
00000da7: AND
00000da8: DUP2
00000da9: JUMP
00000daa: JUMPDEST
00000dab: PUSH1 0x00
00000dad: CALLER
00000dae: PUSH2 0x0b58
00000db1: DUP2
00000db2: PUSH2 0x0cfc
00000db5: JUMP
00000db6: JUMPDEST
00000db7: PUSH1 0x03
00000db9: DUP1
00000dba: SLOAD
00000dbb: PUSH1 0x40
00000dbd: DUP1
00000dbe: MLOAD
00000dbf: PUSH1 0x20
00000dc1: PUSH1 0x02
00000dc3: PUSH1 0x01
00000dc5: DUP6
00000dc6: AND
00000dc7: ISZERO
00000dc8: PUSH2 0x0100
00000dcb: MUL
00000dcc: PUSH1 0x00
00000dce: NOT
00000dcf: ADD
00000dd0: SWAP1
00000dd1: SWAP5
00000dd2: AND
00000dd3: SWAP4
00000dd4: SWAP1
00000dd5: SWAP4
00000dd6: DIV
00000dd7: PUSH1 0x1f
00000dd9: DUP2
00000dda: ADD
00000ddb: DUP5
00000ddc: SWAP1
00000ddd: DIV
00000dde: DUP5
00000ddf: MUL
00000de0: DUP3
00000de1: ADD
00000de2: DUP5
00000de3: ADD
00000de4: SWAP1
00000de5: SWAP3
00000de6: MSTORE
00000de7: DUP2
00000de8: DUP2
00000de9: MSTORE
00000dea: SWAP3
00000deb: SWAP2
00000dec: DUP4
00000ded: ADD
00000dee: DUP3
00000def: DUP3
00000df0: DUP1
00000df1: ISZERO
00000df2: PUSH2 0x0a80
00000df5: JUMPI
00000df6: DUP1
00000df7: PUSH1 0x1f
00000df9: LT
00000dfa: PUSH2 0x0a55
00000dfd: JUMPI
00000dfe: PUSH2 0x0100
00000e01: DUP1
00000e02: DUP4
00000e03: SLOAD
00000e04: DIV
00000e05: MUL
00000e06: DUP4
00000e07: MSTORE
00000e08: SWAP2
00000e09: PUSH1 0x20
00000e0b: ADD
00000e0c: SWAP2
00000e0d: PUSH2 0x0a80
00000e10: JUMP
00000e11: JUMPDEST
00000e12: PUSH1 0x0f
00000e14: SLOAD
00000e15: DUP2
00000e16: JUMP
00000e17: JUMPDEST
00000e18: PUSH1 0x0a
00000e1a: SLOAD
00000e1b: PUSH1 0x01
00000e1d: PUSH1 0xa0
00000e1f: PUSH1 0x02
00000e21: EXP
00000e22: SUB
00000e23: AND
00000e24: CALLER
00000e25: EQ
00000e26: PUSH2 0x0e2e
00000e29: JUMPI
00000e2a: PUSH1 0x00
00000e2c: DUP1
00000e2d: REVERT
00000e2e: JUMPDEST
00000e2f: PUSH1 0x0c
00000e31: DUP1
00000e32: SLOAD
00000e33: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e48: NOT
00000e49: AND
00000e4a: PUSH1 0x01
00000e4c: PUSH1 0xa0
00000e4e: PUSH1 0x02
00000e50: EXP
00000e51: SUB
00000e52: SWAP3
00000e53: SWAP1
00000e54: SWAP3
00000e55: AND
00000e56: SWAP2
00000e57: SWAP1
00000e58: SWAP2
00000e59: OR
00000e5a: SWAP1
00000e5b: SSTORE
00000e5c: JUMP
00000e5d: JUMPDEST
00000e5e: PUSH1 0x18
00000e60: SLOAD
00000e61: PUSH1 0xff
00000e63: AND
00000e64: DUP2
00000e65: JUMP
00000e66: JUMPDEST
00000e67: PUSH1 0x00
00000e69: PUSH2 0x0e72
00000e6c: CALLER
00000e6d: CALLVALUE
00000e6e: PUSH2 0x06c9
00000e71: JUMP
00000e72: JUMPDEST
00000e73: SWAP1
00000e74: POP
00000e75: SWAP1
00000e76: JUMP
00000e77: JUMPDEST
00000e78: PUSH1 0x00
00000e7a: DUP1
00000e7b: PUSH1 0x00
00000e7d: DUP1
00000e7e: PUSH1 0x00
00000e80: DUP1
00000e81: PUSH2 0x0e88
00000e84: PUSH2 0x0daa
00000e87: JUMP
00000e88: JUMPDEST
00000e89: GT
00000e8a: PUSH2 0x0e92
00000e8d: JUMPI
00000e8e: PUSH1 0x00
00000e90: DUP1
00000e91: REVERT
00000e92: JUMPDEST
00000e93: CALLER
00000e94: PUSH1 0x00
00000e96: DUP2
00000e97: DUP2
00000e98: MSTORE
00000e99: PUSH1 0x10
00000e9b: PUSH1 0x20
00000e9d: MSTORE
00000e9e: PUSH1 0x40
00000ea0: SWAP1
00000ea1: KECCAK256
00000ea2: SLOAD
00000ea3: SWAP1
00000ea4: SWAP5
00000ea5: POP
00000ea6: DUP7
00000ea7: GT
00000ea8: ISZERO
00000ea9: PUSH2 0x0eb1
00000eac: JUMPI
00000ead: PUSH1 0x00
00000eaf: DUP1
00000eb0: REVERT
00000eb1: JUMPDEST
00000eb2: PUSH1 0x00
00000eb4: PUSH2 0x0ebb
00000eb7: PUSH2 0x0b4c
00000eba: JUMP
00000ebb: JUMPDEST
00000ebc: GT
00000ebd: ISZERO
00000ebe: PUSH2 0x0ec9
00000ec1: JUMPI
00000ec2: PUSH2 0x0ec9
00000ec5: PUSH2 0x0b74
00000ec8: JUMP
00000ec9: JUMPDEST
00000eca: PUSH2 0x0ed8
00000ecd: PUSH2 0x073f
00000ed0: DUP8
00000ed1: PUSH1 0x05
00000ed3: SLOAD
00000ed4: PUSH2 0x1506
00000ed7: JUMP
00000ed8: JUMPDEST
00000ed9: SWAP3
00000eda: POP
00000edb: PUSH2 0x0ee4
00000ede: DUP7
00000edf: DUP5
00000ee0: PUSH2 0x1551
00000ee3: JUMP
00000ee4: JUMPDEST
00000ee5: SWAP2
00000ee6: POP
00000ee7: DUP3
00000ee8: SWAP1
00000ee9: POP
00000eea: PUSH2 0x0ef5
00000eed: PUSH1 0x14
00000eef: SLOAD
00000ef0: DUP5
00000ef1: PUSH2 0x1551
00000ef4: JUMP
00000ef5: JUMPDEST
00000ef6: PUSH1 0x14
00000ef8: SSTORE
00000ef9: PUSH1 0x01
00000efb: PUSH1 0xa0
00000efd: PUSH1 0x02
00000eff: EXP
00000f00: SUB
00000f01: DUP5
00000f02: AND
00000f03: PUSH1 0x00
00000f05: SWAP1
00000f06: DUP2
00000f07: MSTORE
00000f08: PUSH1 0x10
00000f0a: PUSH1 0x20
00000f0c: MSTORE
00000f0d: PUSH1 0x40
00000f0f: SWAP1
00000f10: KECCAK256
00000f11: SLOAD
00000f12: PUSH2 0x0f1b
00000f15: SWAP1
00000f16: DUP8
00000f17: PUSH2 0x1551
00000f1a: JUMP
00000f1b: JUMPDEST
00000f1c: PUSH1 0x01
00000f1e: PUSH1 0xa0
00000f20: PUSH1 0x02
00000f22: EXP
00000f23: SUB
00000f24: DUP1
00000f25: DUP7
00000f26: AND
00000f27: PUSH1 0x00
00000f29: SWAP1
00000f2a: DUP2
00000f2b: MSTORE
00000f2c: PUSH1 0x10
00000f2e: PUSH1 0x20
00000f30: MSTORE
00000f31: PUSH1 0x40
00000f33: DUP1
00000f34: DUP3
00000f35: KECCAK256
00000f36: SWAP4
00000f37: SWAP1
00000f38: SWAP4
00000f39: SSTORE
00000f3a: SWAP1
00000f3b: DUP10
00000f3c: AND
00000f3d: DUP2
00000f3e: MSTORE
00000f3f: KECCAK256
00000f40: SLOAD
00000f41: PUSH2 0x0f4a
00000f44: SWAP1
00000f45: DUP4
00000f46: PUSH2 0x1544
00000f49: JUMP
00000f4a: JUMPDEST
00000f4b: PUSH1 0x01
00000f4d: PUSH1 0xa0
00000f4f: PUSH1 0x02
00000f51: EXP
00000f52: SUB
00000f53: DUP9
00000f54: DUP2
00000f55: AND
00000f56: PUSH1 0x00
00000f58: DUP2
00000f59: DUP2
00000f5a: MSTORE
00000f5b: PUSH1 0x10
00000f5d: PUSH1 0x20
00000f5f: SWAP1
00000f60: DUP2
00000f61: MSTORE
00000f62: PUSH1 0x40
00000f64: DUP1
00000f65: DUP4
00000f66: KECCAK256
00000f67: SWAP6
00000f68: SWAP1
00000f69: SWAP6
00000f6a: SSTORE
00000f6b: PUSH1 0x15
00000f6d: DUP1
00000f6e: SLOAD
00000f6f: SWAP5
00000f70: DUP11
00000f71: AND
00000f72: DUP4
00000f73: MSTORE
00000f74: PUSH1 0x11
00000f76: SWAP1
00000f77: SWAP2
00000f78: MSTORE
00000f79: DUP5
00000f7a: DUP3
00000f7b: KECCAK256
00000f7c: DUP1
00000f7d: SLOAD
00000f7e: SWAP5
00000f7f: DUP13
00000f80: MUL
00000f81: SWAP1
00000f82: SWAP5
00000f83: SUB
00000f84: SWAP1
00000f85: SWAP4
00000f86: SSTORE
00000f87: SWAP2
00000f88: SLOAD
00000f89: SWAP1
00000f8a: DUP3
00000f8b: MSTORE
00000f8c: SWAP2
00000f8d: SWAP1
00000f8e: KECCAK256
00000f8f: DUP1
00000f90: SLOAD
00000f91: SWAP2
00000f92: DUP5
00000f93: MUL
00000f94: SWAP1
00000f95: SWAP2
00000f96: ADD
00000f97: SWAP1
00000f98: SSTORE
00000f99: PUSH1 0x18
00000f9b: SLOAD
00000f9c: PUSH1 0xff
00000f9e: AND
00000f9f: ISZERO
00000fa0: ISZERO
00000fa1: PUSH2 0x0fb8
00000fa4: JUMPI
00000fa5: PUSH2 0x0fb0
00000fa8: PUSH1 0x0f
00000faa: SLOAD
00000fab: DUP3
00000fac: PUSH2 0x1544
00000faf: JUMP
00000fb0: JUMPDEST
00000fb1: PUSH1 0x0f
00000fb3: SSTORE
00000fb4: PUSH2 0x0fda
00000fb7: JUMP
00000fb8: JUMPDEST
00000fb9: PUSH2 0x0fd6
00000fbc: PUSH1 0x15
00000fbe: SLOAD
00000fbf: PUSH1 0x14
00000fc1: SLOAD
00000fc2: PUSH9 0x010000000000000000
00000fcc: DUP5
00000fcd: MUL
00000fce: DUP2
00000fcf: ISZERO
00000fd0: ISZERO
00000fd1: PUSH2 0x0b03
00000fd4: JUMPI
00000fd5: INVALID
00000fd6: JUMPDEST
00000fd7: PUSH1 0x15
00000fd9: SSTORE
00000fda: JUMPDEST
00000fdb: DUP7
00000fdc: PUSH1 0x01
00000fde: PUSH1 0xa0
00000fe0: PUSH1 0x02
00000fe2: EXP
00000fe3: SUB
00000fe4: AND
00000fe5: DUP5
00000fe6: PUSH1 0x01
00000fe8: PUSH1 0xa0
00000fea: PUSH1 0x02
00000fec: EXP
00000fed: SUB
00000fee: AND
00000fef: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00001010: DUP5
00001011: PUSH1 0x40
00001013: MLOAD
00001014: DUP1
00001015: DUP3
00001016: DUP2
00001017: MSTORE
00001018: PUSH1 0x20
0000101a: ADD
0000101b: SWAP2
0000101c: POP
0000101d: POP
0000101e: PUSH1 0x40
00001020: MLOAD
00001021: DUP1
00001022: SWAP2
00001023: SUB
00001024: SWAP1
00001025: LOG3
00001026: POP
00001027: PUSH1 0x01
00001029: SWAP7
0000102a: SWAP6
0000102b: POP
0000102c: POP
0000102d: POP
0000102e: POP
0000102f: POP
00001030: POP
00001031: JUMP
00001032: JUMPDEST
00001033: PUSH1 0x00
00001035: SLOAD
00001036: PUSH1 0x01
00001038: PUSH1 0xa0
0000103a: PUSH1 0x02
0000103c: EXP
0000103d: SUB
0000103e: AND
0000103f: CALLER
00001040: EQ
00001041: PUSH2 0x1049
00001044: JUMPI
00001045: PUSH1 0x00
00001047: DUP1
00001048: REVERT
00001049: JUMPDEST
0000104a: DUP1
0000104b: MLOAD
0000104c: PUSH2 0x105c
0000104f: SWAP1
00001050: PUSH1 0x03
00001052: SWAP1
00001053: PUSH1 0x20
00001055: DUP5
00001056: ADD
00001057: SWAP1
00001058: PUSH2 0x1563
0000105b: JUMP
0000105c: JUMPDEST
0000105d: POP
0000105e: POP
0000105f: JUMP
00001060: JUMPDEST
00001061: PUSH1 0x0b
00001063: SLOAD
00001064: PUSH1 0x01
00001066: PUSH1 0xa0
00001068: PUSH1 0x02
0000106a: EXP
0000106b: SUB
0000106c: AND
0000106d: DUP2
0000106e: JUMP
0000106f: JUMPDEST
00001070: PUSH1 0x00
00001072: SLOAD
00001073: PUSH1 0x01
00001075: PUSH1 0xa0
00001077: PUSH1 0x02
00001079: EXP
0000107a: SUB
0000107b: AND
0000107c: CALLER
0000107d: EQ
0000107e: PUSH2 0x1086
00001081: JUMPI
00001082: PUSH1 0x00
00001084: DUP1
00001085: REVERT
00001086: JUMPDEST
00001087: DUP1
00001088: MLOAD
00001089: PUSH2 0x105c
0000108c: SWAP1
0000108d: PUSH1 0x02
0000108f: SWAP1
00001090: PUSH1 0x20
00001092: DUP5
00001093: ADD
00001094: SWAP1
00001095: PUSH2 0x1563
00001098: JUMP
00001099: JUMPDEST
0000109a: PUSH1 0x16
0000109c: SLOAD
0000109d: DUP2
0000109e: JUMP
0000109f: JUMPDEST
000010a0: PUSH1 0x00
000010a2: DUP1
000010a3: PUSH1 0x00
000010a5: DUP1
000010a6: PUSH2 0x10ad
000010a9: PUSH2 0x0b4c
000010ac: JUMP
000010ad: JUMPDEST
000010ae: GT
000010af: PUSH2 0x10b7
000010b2: JUMPI
000010b3: PUSH1 0x00
000010b5: DUP1
000010b6: REVERT
000010b7: JUMPDEST
000010b8: CALLER
000010b9: SWAP3
000010ba: POP
000010bb: PUSH2 0x10c2
000010be: PUSH2 0x0b4c
000010c1: JUMP
000010c2: JUMPDEST
000010c3: PUSH1 0x01
000010c5: PUSH1 0xa0
000010c7: PUSH1 0x02
000010c9: EXP
000010ca: SUB
000010cb: DUP5
000010cc: AND
000010cd: PUSH1 0x00
000010cf: SWAP1
000010d0: DUP2
000010d1: MSTORE
000010d2: PUSH1 0x11
000010d4: PUSH1 0x20
000010d6: MSTORE
000010d7: PUSH1 0x40
000010d9: SWAP1
000010da: KECCAK256
000010db: DUP1
000010dc: SLOAD
000010dd: PUSH9 0x010000000000000000
000010e7: DUP4
000010e8: MUL
000010e9: ADD
000010ea: SWAP1
000010eb: SSTORE
000010ec: SWAP2
000010ed: POP
000010ee: PUSH2 0x10f7
000010f1: DUP4
000010f2: DUP4
000010f3: PUSH2 0x06c9
000010f6: JUMP
000010f7: JUMPDEST
000010f8: SWAP1
000010f9: POP
000010fa: DUP3
000010fb: PUSH1 0x01
000010fd: PUSH1 0xa0
000010ff: PUSH1 0x02
00001101: EXP
00001102: SUB
00001103: AND
00001104: PUSH32 0xe4f0eeaa8dd27ac941d5cb906c00cec31d5590659951566d91f7ec9eaacc8e0c
00001125: DUP4
00001126: DUP4
00001127: PUSH1 0x40
00001129: MLOAD
0000112a: DUP1
0000112b: DUP4
0000112c: DUP2
0000112d: MSTORE
0000112e: PUSH1 0x20
00001130: ADD
00001131: DUP3
00001132: DUP2
00001133: MSTORE
00001134: PUSH1 0x20
00001136: ADD
00001137: SWAP3
00001138: POP
00001139: POP
0000113a: POP
0000113b: PUSH1 0x40
0000113d: MLOAD
0000113e: DUP1
0000113f: SWAP2
00001140: SUB
00001141: SWAP1
00001142: LOG2
00001143: POP
00001144: POP
00001145: POP
00001146: JUMP
00001147: JUMPDEST
00001148: PUSH1 0x00
0000114a: DUP1
0000114b: PUSH1 0x00
0000114d: DUP1
0000114e: PUSH1 0x00
00001150: DUP1
00001151: PUSH1 0x00
00001153: DUP1
00001154: PUSH2 0x115b
00001157: PUSH2 0x0daa
0000115a: JUMP
0000115b: JUMPDEST
0000115c: GT
0000115d: PUSH2 0x1165
00001160: JUMPI
00001161: PUSH1 0x00
00001163: DUP1
00001164: REVERT
00001165: JUMPDEST
00001166: CALLER
00001167: PUSH1 0x00
00001169: DUP2
0000116a: DUP2
0000116b: MSTORE
0000116c: PUSH1 0x10
0000116e: PUSH1 0x20
00001170: MSTORE
00001171: PUSH1 0x40
00001173: SWAP1
00001174: KECCAK256
00001175: SLOAD
00001176: SWAP1
00001177: SWAP8
00001178: POP
00001179: DUP9
0000117a: GT
0000117b: ISZERO
0000117c: PUSH2 0x1184
0000117f: JUMPI
00001180: PUSH1 0x00
00001182: DUP1
00001183: REVERT
00001184: JUMPDEST
00001185: PUSH2 0x1193
00001188: PUSH2 0x073f
0000118b: DUP10
0000118c: PUSH1 0x06
0000118e: SLOAD
0000118f: PUSH2 0x1506
00001192: JUMP
00001193: JUMPDEST
00001194: SWAP6
00001195: POP
00001196: PUSH2 0x11a4
00001199: PUSH2 0x073f
0000119c: DUP8
0000119d: PUSH1 0x08
0000119f: SLOAD
000011a0: PUSH2 0x1506
000011a3: JUMP
000011a4: JUMPDEST
000011a5: PUSH1 0x09
000011a7: SLOAD
000011a8: PUSH1 0x40
000011aa: MLOAD
000011ab: SWAP2
000011ac: SWAP7
000011ad: POP
000011ae: PUSH1 0x01
000011b0: PUSH1 0xa0
000011b2: PUSH1 0x02
000011b4: EXP
000011b5: SUB
000011b6: AND
000011b7: SWAP1
000011b8: DUP7
000011b9: ISZERO
000011ba: PUSH2 0x08fc
000011bd: MUL
000011be: SWAP1
000011bf: DUP8
000011c0: SWAP1
000011c1: PUSH1 0x00
000011c3: DUP2
000011c4: DUP2
000011c5: DUP2
000011c6: DUP6
000011c7: DUP9
000011c8: DUP9
000011c9: CALL
000011ca: SWAP4
000011cb: POP
000011cc: POP
000011cd: POP
000011ce: POP
000011cf: ISZERO
000011d0: DUP1
000011d1: ISZERO
000011d2: PUSH2 0x11df
000011d5: JUMPI
000011d6: RETURNDATASIZE
000011d7: PUSH1 0x00
000011d9: DUP1
000011da: RETURNDATACOPY
000011db: RETURNDATASIZE
000011dc: PUSH1 0x00
000011de: REVERT
000011df: JUMPDEST
000011e0: POP
000011e1: PUSH2 0x11ef
000011e4: PUSH2 0x073f
000011e7: DUP8
000011e8: PUSH1 0x07
000011ea: SLOAD
000011eb: PUSH2 0x1506
000011ee: JUMP
000011ef: JUMPDEST
000011f0: PUSH1 0x0e
000011f2: DUP1
000011f3: SLOAD
000011f4: DUP3
000011f5: ADD
000011f6: SWAP1
000011f7: SSTORE
000011f8: PUSH1 0x0d
000011fa: SLOAD
000011fb: PUSH1 0x40
000011fd: MLOAD
000011fe: SWAP2
000011ff: SWAP6
00001200: POP
00001201: PUSH1 0x01
00001203: PUSH1 0xa0
00001205: PUSH1 0x02
00001207: EXP
00001208: SUB
00001209: AND
0000120a: SWAP1
0000120b: DUP6
0000120c: ISZERO
0000120d: PUSH2 0x08fc
00001210: MUL
00001211: SWAP1
00001212: DUP7
00001213: SWAP1
00001214: PUSH1 0x00
00001216: DUP2
00001217: DUP2
00001218: DUP2
00001219: DUP6
0000121a: DUP9
0000121b: DUP9
0000121c: CALL
0000121d: SWAP4
0000121e: POP
0000121f: POP
00001220: POP
00001221: POP
00001222: ISZERO
00001223: DUP1
00001224: ISZERO
00001225: PUSH2 0x1232
00001228: JUMPI
00001229: RETURNDATASIZE
0000122a: PUSH1 0x00
0000122c: DUP1
0000122d: RETURNDATACOPY
0000122e: RETURNDATASIZE
0000122f: PUSH1 0x00
00001231: REVERT
00001232: JUMPDEST
00001233: POP
00001234: PUSH2 0x1241
00001237: DUP7
00001238: PUSH2 0x07f4
0000123b: DUP8
0000123c: DUP8
0000123d: PUSH2 0x1544
00001240: JUMP
00001241: JUMPDEST
00001242: SWAP3
00001243: POP
00001244: PUSH2 0x124d
00001247: DUP9
00001248: DUP8
00001249: PUSH2 0x1551
0000124c: JUMP
0000124d: JUMPDEST
0000124e: SWAP2
0000124f: POP
00001250: PUSH2 0x125b
00001253: PUSH1 0x14
00001255: SLOAD
00001256: DUP10
00001257: PUSH2 0x1551
0000125a: JUMP
0000125b: JUMPDEST
0000125c: PUSH1 0x14
0000125e: SSTORE
0000125f: PUSH1 0x01
00001261: PUSH1 0xa0
00001263: PUSH1 0x02
00001265: EXP
00001266: SUB
00001267: DUP8
00001268: AND
00001269: PUSH1 0x00
0000126b: SWAP1
0000126c: DUP2
0000126d: MSTORE
0000126e: PUSH1 0x10
00001270: PUSH1 0x20
00001272: MSTORE
00001273: PUSH1 0x40
00001275: SWAP1
00001276: KECCAK256
00001277: SLOAD
00001278: PUSH2 0x1281
0000127b: SWAP1
0000127c: DUP10
0000127d: PUSH2 0x1551
00001280: JUMP
00001281: JUMPDEST
00001282: PUSH1 0x01
00001284: PUSH1 0xa0
00001286: PUSH1 0x02
00001288: EXP
00001289: SUB
0000128a: DUP9
0000128b: AND
0000128c: PUSH1 0x00
0000128e: SWAP1
0000128f: DUP2
00001290: MSTORE
00001291: PUSH1 0x10
00001293: PUSH1 0x20
00001295: SWAP1
00001296: DUP2
00001297: MSTORE
00001298: PUSH1 0x40
0000129a: DUP1
0000129b: DUP4
0000129c: KECCAK256
0000129d: SWAP4
0000129e: SWAP1
0000129f: SWAP4
000012a0: SSTORE
000012a1: PUSH1 0x15
000012a3: SLOAD
000012a4: PUSH1 0x11
000012a6: SWAP1
000012a7: SWAP2
000012a8: MSTORE
000012a9: SWAP2
000012aa: SWAP1
000012ab: KECCAK256
000012ac: DUP1
000012ad: SLOAD
000012ae: SWAP2
000012af: DUP11
000012b0: MUL
000012b1: PUSH9 0x010000000000000000
000012bb: DUP6
000012bc: MUL
000012bd: ADD
000012be: SWAP2
000012bf: DUP3
000012c0: SWAP1
000012c1: SUB
000012c2: SWAP1
000012c3: SSTORE
000012c4: PUSH1 0x18
000012c6: SLOAD
000012c7: SWAP1
000012c8: SWAP2
000012c9: POP
000012ca: PUSH1 0xff
000012cc: AND
000012cd: ISZERO
000012ce: ISZERO
000012cf: PUSH2 0x12e6
000012d2: JUMPI
000012d3: PUSH2 0x12de
000012d6: PUSH1 0x0f
000012d8: SLOAD
000012d9: DUP5
000012da: PUSH2 0x1544
000012dd: JUMP
000012de: JUMPDEST
000012df: PUSH1 0x0f
000012e1: SSTORE
000012e2: PUSH2 0x1313
000012e5: JUMP
000012e6: JUMPDEST
000012e7: PUSH1 0x00
000012e9: PUSH1 0x14
000012eb: SLOAD
000012ec: GT
000012ed: ISZERO
000012ee: PUSH2 0x1313
000012f1: JUMPI
000012f2: PUSH2 0x130f
000012f5: PUSH1 0x15
000012f7: SLOAD
000012f8: PUSH1 0x14
000012fa: SLOAD
000012fb: PUSH9 0x010000000000000000
00001305: DUP7
00001306: MUL
00001307: DUP2
00001308: ISZERO
00001309: ISZERO
0000130a: PUSH2 0x0b03
0000130d: JUMPI
0000130e: INVALID
0000130f: JUMPDEST
00001310: PUSH1 0x15
00001312: SSTORE
00001313: JUMPDEST
00001314: PUSH1 0x40
00001316: DUP1
00001317: MLOAD
00001318: DUP10
00001319: DUP2
0000131a: MSTORE
0000131b: SWAP1
0000131c: MLOAD
0000131d: PUSH1 0x00
0000131f: SWAP2
00001320: PUSH1 0x01
00001322: PUSH1 0xa0
00001324: PUSH1 0x02
00001326: EXP
00001327: SUB
00001328: DUP11
00001329: AND
0000132a: SWAP2
0000132b: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000134c: SWAP2
0000134d: DUP2
0000134e: SWAP1
0000134f: SUB
00001350: PUSH1 0x20
00001352: ADD
00001353: SWAP1
00001354: LOG3
00001355: PUSH1 0x40
00001357: DUP1
00001358: MLOAD
00001359: DUP10
0000135a: DUP2
0000135b: MSTORE
0000135c: PUSH1 0x20
0000135e: DUP2
0000135f: ADD
00001360: DUP5
00001361: SWAP1
00001362: MSTORE
00001363: TIMESTAMP
00001364: DUP2
00001365: DUP4
00001366: ADD
00001367: MSTORE
00001368: SWAP1
00001369: MLOAD
0000136a: PUSH1 0x01
0000136c: PUSH1 0xa0
0000136e: PUSH1 0x02
00001370: EXP
00001371: SUB
00001372: DUP10
00001373: AND
00001374: SWAP2
00001375: PUSH32 0x723391258f051422e0be75f0bbcc5c94947b440ae6162c87b3efb5fecde315e5
00001396: SWAP2
00001397: SWAP1
00001398: DUP2
00001399: SWAP1
0000139a: SUB
0000139b: PUSH1 0x60
0000139d: ADD
0000139e: SWAP1
0000139f: LOG2
000013a0: POP
000013a1: POP
000013a2: POP
000013a3: POP
000013a4: POP
000013a5: POP
000013a6: POP
000013a7: POP
000013a8: JUMP
000013a9: JUMPDEST
000013aa: PUSH1 0x00
000013ac: DUP1
000013ad: CALLVALUE
000013ae: GT
000013af: DUP1
000013b0: ISZERO
000013b1: PUSH2 0x13c1
000013b4: JUMPI
000013b5: POP
000013b6: PUSH1 0x18
000013b8: SLOAD
000013b9: PUSH1 0xff
000013bb: AND
000013bc: ISZERO
000013bd: ISZERO
000013be: PUSH1 0x01
000013c0: EQ
000013c1: JUMPDEST
000013c2: ISZERO
000013c3: ISZERO
000013c4: PUSH2 0x13cc
000013c7: JUMPI
000013c8: PUSH1 0x00
000013ca: DUP1
000013cb: REVERT
000013cc: JUMPDEST
000013cd: PUSH1 0x17
000013cf: DUP1
000013d0: SLOAD
000013d1: CALLVALUE
000013d2: SWAP1
000013d3: DUP2
000013d4: ADD
000013d5: SWAP1
000013d6: SWAP2
000013d7: SSTORE
000013d8: PUSH1 0x15
000013da: SLOAD
000013db: PUSH1 0x14
000013dd: SLOAD
000013de: PUSH2 0x13f5
000013e1: SWAP3
000013e2: PUSH9 0x010000000000000000
000013ec: MUL
000013ed: DUP2
000013ee: ISZERO
000013ef: ISZERO
000013f0: PUSH2 0x0b03
000013f3: JUMPI
000013f4: INVALID
000013f5: JUMPDEST
000013f6: PUSH1 0x15
000013f8: SSTORE
000013f9: PUSH1 0x40
000013fb: DUP1
000013fc: MLOAD
000013fd: CALLVALUE
000013fe: DUP2
000013ff: MSTORE
00001400: SWAP1
00001401: MLOAD
00001402: CALLER
00001403: SWAP2
00001404: PUSH32 0xd14b763af9e91e53a0578778058d700fec4f12297440083843749bb37d806064
00001425: SWAP2
00001426: SWAP1
00001427: DUP2
00001428: SWAP1
00001429: SUB
0000142a: PUSH1 0x20
0000142c: ADD
0000142d: SWAP1
0000142e: LOG2
0000142f: SWAP1
00001430: JUMP
00001431: JUMPDEST
00001432: CALLER
00001433: PUSH1 0x00
00001435: DUP2
00001436: DUP2
00001437: MSTORE
00001438: PUSH1 0x10
0000143a: PUSH1 0x20
0000143c: MSTORE
0000143d: PUSH1 0x40
0000143f: DUP2
00001440: KECCAK256
00001441: SLOAD
00001442: SWAP1
00001443: DUP2
00001444: GT
00001445: ISZERO
00001446: PUSH2 0x1452
00001449: JUMPI
0000144a: PUSH2 0x1452
0000144d: DUP2
0000144e: PUSH2 0x1147
00001451: JUMP
00001452: JUMPDEST
00001453: PUSH2 0x105c
00001456: PUSH2 0x0b74
00001459: JUMP
0000145a: JUMPDEST
0000145b: PUSH1 0x17
0000145d: SLOAD
0000145e: DUP2
0000145f: JUMP
00001460: JUMPDEST
00001461: PUSH1 0x00
00001463: SLOAD
00001464: PUSH1 0x01
00001466: PUSH1 0xa0
00001468: PUSH1 0x02
0000146a: EXP
0000146b: SUB
0000146c: AND
0000146d: CALLER
0000146e: EQ
0000146f: PUSH2 0x1477
00001472: JUMPI
00001473: PUSH1 0x00
00001475: DUP1
00001476: REVERT
00001477: JUMPDEST
00001478: PUSH1 0x01
0000147a: PUSH1 0xa0
0000147c: PUSH1 0x02
0000147e: EXP
0000147f: SUB
00001480: DUP2
00001481: AND
00001482: ISZERO
00001483: ISZERO
00001484: PUSH2 0x148c
00001487: JUMPI
00001488: PUSH1 0x00
0000148a: DUP1
0000148b: REVERT
0000148c: JUMPDEST
0000148d: PUSH1 0x00
0000148f: DUP1
00001490: SLOAD
00001491: PUSH1 0x40
00001493: MLOAD
00001494: PUSH1 0x01
00001496: PUSH1 0xa0
00001498: PUSH1 0x02
0000149a: EXP
0000149b: SUB
0000149c: DUP1
0000149d: DUP6
0000149e: AND
0000149f: SWAP4
000014a0: SWAP3
000014a1: AND
000014a2: SWAP2
000014a3: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000014c4: SWAP2
000014c5: LOG3
000014c6: PUSH1 0x00
000014c8: DUP1
000014c9: SLOAD
000014ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014df: NOT
000014e0: AND
000014e1: PUSH1 0x01
000014e3: PUSH1 0xa0
000014e5: PUSH1 0x02
000014e7: EXP
000014e8: SUB
000014e9: SWAP3
000014ea: SWAP1
000014eb: SWAP3
000014ec: AND
000014ed: SWAP2
000014ee: SWAP1
000014ef: SWAP2
000014f0: OR
000014f1: SWAP1
000014f2: SSTORE
000014f3: JUMP
000014f4: JUMPDEST
000014f5: PUSH1 0x12
000014f7: PUSH1 0x20
000014f9: MSTORE
000014fa: PUSH1 0x00
000014fc: SWAP1
000014fd: DUP2
000014fe: MSTORE
000014ff: PUSH1 0x40
00001501: SWAP1
00001502: KECCAK256
00001503: SLOAD
00001504: DUP2
00001505: JUMP
00001506: JUMPDEST
00001507: PUSH1 0x00
00001509: DUP3
0000150a: ISZERO
0000150b: ISZERO
0000150c: PUSH2 0x1517
0000150f: JUMPI
00001510: POP
00001511: PUSH1 0x00
00001513: PUSH2 0x0cf6
00001516: JUMP
00001517: JUMPDEST
00001518: POP
00001519: DUP2
0000151a: DUP2
0000151b: MUL
0000151c: DUP2
0000151d: DUP4
0000151e: DUP3
0000151f: DUP2
00001520: ISZERO
00001521: ISZERO
00001522: PUSH2 0x1527
00001525: JUMPI
00001526: INVALID
00001527: JUMPDEST
00001528: DIV
00001529: EQ
0000152a: PUSH2 0x0cf6
0000152d: JUMPI
0000152e: INVALID
0000152f: JUMPDEST
00001530: PUSH1 0x00
00001532: DUP2
00001533: DUP4
00001534: DUP2
00001535: ISZERO
00001536: ISZERO
00001537: PUSH2 0x153c
0000153a: JUMPI
0000153b: INVALID
0000153c: JUMPDEST
0000153d: DIV
0000153e: SWAP4
0000153f: SWAP3
00001540: POP
00001541: POP
00001542: POP
00001543: JUMP
00001544: JUMPDEST
00001545: DUP2
00001546: DUP2
00001547: ADD
00001548: DUP3
00001549: DUP2
0000154a: LT
0000154b: ISZERO
0000154c: PUSH2 0x0cf6
0000154f: JUMPI
00001550: INVALID
00001551: JUMPDEST
00001552: PUSH1 0x00
00001554: DUP3
00001555: DUP3
00001556: GT
00001557: ISZERO
00001558: PUSH2 0x155d
0000155b: JUMPI
0000155c: INVALID
0000155d: JUMPDEST
0000155e: POP
0000155f: SWAP1
00001560: SUB
00001561: SWAP1
00001562: JUMP
00001563: JUMPDEST
00001564: DUP3
00001565: DUP1
00001566: SLOAD
00001567: PUSH1 0x01
00001569: DUP2
0000156a: PUSH1 0x01
0000156c: AND
0000156d: ISZERO
0000156e: PUSH2 0x0100
00001571: MUL
00001572: SUB
00001573: AND
00001574: PUSH1 0x02
00001576: SWAP1
00001577: DIV
00001578: SWAP1
00001579: PUSH1 0x00
0000157b: MSTORE
0000157c: PUSH1 0x20
0000157e: PUSH1 0x00
00001580: KECCAK256
00001581: SWAP1
00001582: PUSH1 0x1f
00001584: ADD
00001585: PUSH1 0x20
00001587: SWAP1
00001588: DIV
00001589: DUP2
0000158a: ADD
0000158b: SWAP3
0000158c: DUP3
0000158d: PUSH1 0x1f
0000158f: LT
00001590: PUSH2 0x15a4
00001593: JUMPI
00001594: DUP1
00001595: MLOAD
00001596: PUSH1 0xff
00001598: NOT
00001599: AND
0000159a: DUP4
0000159b: DUP1
0000159c: ADD
0000159d: OR
0000159e: DUP6
0000159f: SSTORE
000015a0: PUSH2 0x15d1
000015a3: JUMP
000015a4: JUMPDEST
000015a5: DUP3
000015a6: DUP1
000015a7: ADD
000015a8: PUSH1 0x01
000015aa: ADD
000015ab: DUP6
000015ac: SSTORE
000015ad: DUP3
000015ae: ISZERO
000015af: PUSH2 0x15d1
000015b2: JUMPI
000015b3: SWAP2
000015b4: DUP3
000015b5: ADD
000015b6: JUMPDEST
000015b7: DUP3
000015b8: DUP2
000015b9: GT
000015ba: ISZERO
000015bb: PUSH2 0x15d1
000015be: JUMPI
000015bf: DUP3
000015c0: MLOAD
000015c1: DUP3
000015c2: SSTORE
000015c3: SWAP2
000015c4: PUSH1 0x20
000015c6: ADD
000015c7: SWAP2
000015c8: SWAP1
000015c9: PUSH1 0x01
000015cb: ADD
000015cc: SWAP1
000015cd: PUSH2 0x15b6
000015d0: JUMP
000015d1: JUMPDEST
000015d2: POP
000015d3: PUSH2 0x0b5b
000015d6: SWAP3
000015d7: PUSH2 0x0b1f
000015da: SWAP3
000015db: POP
000015dc: SWAP1
000015dd: JUMPDEST
000015de: DUP1
000015df: DUP3
000015e0: GT
000015e1: ISZERO
000015e2: PUSH2 0x0b5b
000015e5: JUMPI
000015e6: PUSH1 0x00
000015e8: DUP2
000015e9: SSTORE
000015ea: PUSH1 0x01
000015ec: ADD
000015ed: PUSH2 0x15dd
000015f0: JUMP
000015f1: STOP
000015f2: LOG1
000015f3: PUSH6 0x627a7a723058
000015fa: KECCAK256
000015fb: STATICCALL
000015fc: CLZ
000015fd: UNKNOWN(0x26)
000015fe: UNKNOWN(0xE1)
000015ff: SWAP13
00001600: UNKNOWN(0xD0)
00001601: PUSH13 0x38b17649d4ebf4bd27deeffb18
0000160f: UNKNOWN(0xDD)
00001610: UNKNOWN(0xE3)
00001611: PUSH8 0x77c937fdbc76af45
0000161a: OR
0000161b: STOP
0000161c: UNKNOWN(0x29)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high math codex Late-buy launch-fund sniping allows capture of accumulated prelaunch dividends 85 no
view
evidence_json
{
    "evidence": "The launch fund accumulates while postLaunch is false and is distributed to whoever holds tokens at the moment distributeLaunchFund is called, with no snapshot or cutoff.",
    "locations": [
        "contracts/Contract.sol:160",
        "contracts/Contract.sol:161",
        "contracts/Contract.sol:162",
        "contracts/Contract.sol:371",
        "contracts/Contract.sol:373",
        "contracts/Contract.sol:224",
        "contracts/Contract.sol:225"
    ],
    "recommendation": "Snapshot eligible balances at a prelaunch cutoff or finalize postLaunch with a fixed tokenSupply_ so late buyers cannot join the launch-fund distribution; alternatively, distribute launch funds continuously rather than in a single callable lump sum.",
    "exploit_scenario": "1) Monitor state while postLaunch is false; if totalLaunchFundCollected is large relative to tokenSupply_ (often after prelaunch sells add to the launch fund), prepare a helper contract. 2) Call buy() with a small amount of ETH and immediately call distributeLaunchFund() in the same transaction to lock in the distribution at the new (slightly higher) tokenSupply_. 3) Call withdraw() to collect your share of the entire launch fund, then optionally exit your tokens. Example: if totalLaunchFundCollected=14.4 ETH and tokenSupply_=10 tokens, buying 1 ETH (0.9 tokens) then calling distributeLaunchFund yields about 1.19 ETH in dividends, netting ~0.19 ETH profit before even exiting tokens. Profit magnitude: up to roughly the launch fund balance (O(totalLaunchFundCollected)) when tokenSupply_ is tiny."
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10d0ffdd",
            "selector": "0x10d0ffdd",
            "calldata_variants": [
                "0x10d0ffdd",
                "0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1296bffd",
            "selector": "0x1296bffd",
            "calldata_variants": [
                "0x1296bffd",
                "0x1296bffd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22609373",
            "selector": "0x22609373",
            "calldata_variants": [
                "0x22609373",
                "0x226093730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3151ecfc",
            "selector": "0x3151ecfc",
            "calldata_variants": [
                "0x3151ecfc",
                "0x3151ecfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34ecfbb8",
            "selector": "0x34ecfbb8",
            "calldata_variants": [
                "0x34ecfbb8",
                "0x34ecfbb80000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 3184,
            "type": "tx_origin_used"
        },
        {
            "pc": 3183,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x6dc4e2ecdfd6e4c4c57e7d3767f480e961175fc9bde53f927402b9643284d96a
call_targets: 0xe01e2a3ceafa8233021fc759e5a69863558326b6
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6dc4e2ecdfd6e4c4c57e7d3767f480e961175fc9bde53f927402b9643284d96a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xe01e2a3ceafa8233021fc759e5a69863558326b6"
    ],
    "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": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10d0ffdd",
            "selector": "0x10d0ffdd",
            "calldata_variants": [
                "0x10d0ffdd",
                "0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1296bffd",
            "selector": "0x1296bffd",
            "calldata_variants": [
                "0x1296bffd",
                "0x1296bffd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22609373",
            "selector": "0x22609373",
            "calldata_variants": [
                "0x22609373",
                "0x226093730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3151ecfc",
            "selector": "0x3151ecfc",
            "calldata_variants": [
                "0x3151ecfc",
                "0x3151ecfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34ecfbb8",
            "selector": "0x34ecfbb8",
            "calldata_variants": [
                "0x34ecfbb8",
                "0x34ecfbb80000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1916,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1999,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3031,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 5,
    "guards_detected": [
        {
            "pc": 3184,
            "type": "tx_origin_used"
        },
        {
            "pc": 3183,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 5
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x6dc4e2ecdfd6e4c4c57e7d3767f480e961175fc9bde53f927402b9643284d96a
call_targets: 0xe01e2a3ceafa8233021fc759e5a69863558326b6
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6dc4e2ecdfd6e4c4c57e7d3767f480e961175fc9bde53f927402b9643284d96a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xe01e2a3ceafa8233021fc759e5a69863558326b6"
    ],
    "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": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10d0ffdd",
            "selector": "0x10d0ffdd",
            "calldata_variants": [
                "0x10d0ffdd",
                "0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1296bffd",
            "selector": "0x1296bffd",
            "calldata_variants": [
                "0x1296bffd",
                "0x1296bffd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22609373",
            "selector": "0x22609373",
            "calldata_variants": [
                "0x22609373",
                "0x226093730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3151ecfc",
            "selector": "0x3151ecfc",
            "calldata_variants": [
                "0x3151ecfc",
                "0x3151ecfc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34ecfbb8",
            "selector": "0x34ecfbb8",
            "calldata_variants": [
                "0x34ecfbb8",
                "0x34ecfbb80000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1916,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1999,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3031,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 5,
    "guards_detected": [
        {
            "pc": 3184,
            "type": "tx_origin_used"
        },
        {
            "pc": 3183,
            "type": "tx_origin_used"
        }
    ]
}