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

Analysis Run

f58f1e0d-d765-4f42-8774-1b1e4abc5a43

failed
Chain ID
1
Address
Block Number
Created
Wed, Dec 24, 2025 12:37 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
2
Validated
2
Source
Verified
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 2 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
30137 report.consolidate complete 1 / 1 3 months ago
93421 artifact.fetch complete 1 / 3 1 week ago
93422 tool.cast_disasm complete 1 / 3 1 week ago
93423 analysis.bundle complete 1 / 3 1 week ago
93424 capability.graph complete 1 / 3 1 week ago
93425 detector.run complete 1 / 3 1 week ago
93426 validation.fork complete 1 / 3 1 week ago
113784 tool.slither failed 2 / 2 1 week ago

Artifact

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

Slither

tool.slither
Status
failed 500 Server Error: Internal Server Error for url: https://tripwire.topgun.bot/internal/jobs/113784/complete
Attempts
2 / 2
Findings
0
Solc
View stderr
Traceback (most recent call last):
  File "/var/www/tripwire/worker/worker.py", line 199, in main
    laravel_client.complete_job(job_id, payload if payload else None)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/laravel_client.py", line 27, in complete_job
    return self._post(f"/internal/jobs/{job_id}/complete", payload=payload)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/laravel_client.py", line 17, in _post
    response.raise_for_status()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/requests/models.py", line 1026, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://tripwire.topgun.bot/internal/jobs/113784/complete

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
Summary
Identified two issues: a critical one-time tap address takeover and a reentrancy vector on collateral exit.
View stderr
[codex:211782] OpenAI Codex v0.77.0 (research preview)
[codex:211782] --------
[codex:211782] workdir: /tmp/codex-multi-lo6f0wz0
[codex:211782] model: gpt-5.2-codex
[codex:211782] provider: openai
[codex:211782] approval: never
[codex:211782] sandbox: read-only
[codex:211782] reasoning effort: none
[codex:211782] reasoning summaries: auto
[codex:211782] session id: 019b4dc9-4586-7dd1-abf7-98c7aecd9cb1
[codex:211782] --------
[codex:211782] user
[codex:211782] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:211782] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:211782] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:211782] 
[codex:211782] Scope rules:
[codex:211782] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:211782] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:211782] 
[codex:211782] Output MUST be valid JSON matching the provided schema.
[codex:211782] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:211782] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:211782] 
[codex:211782] Output constraints (IMPORTANT):
[codex:211782] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:211782] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:211782] mcp startup: no servers
[codex:211782] 
[codex:211782] thinking
[codex:211782] **Reading bundle file**
[codex:211782] exec
[codex:211782] /bin/bash -lc ls in /tmp/codex-multi-lo6f0wz0 succeeded in 6ms:
[codex:211782] AUDIT_BUNDLE.txt
[codex:211782] codex-output-schema.json
[codex:211782] contracts
[codex:211782] exec
[codex:211782] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-lo6f0wz0 succeeded in 5ms:
[codex:211782] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:211782] 
[codex:211782] ================================================================================
[codex:211782] FILE: contracts/Contract.sol
[codex:211782] ================================================================================
[codex:211782] // hevm: flattened sources of src/tap.sol
[codex:211782] pragma solidity ^0.4.18;
[codex:211782] 
[codex:211782] ////// lib/ds-guard/lib/ds-auth/src/auth.sol
[codex:211782] // This program is free software: you can redistribute it and/or modify
[codex:211782] // it under the terms of the GNU General Public License as published by
[codex:211782] // the Free Software Foundation, either version 3 of the License, or
[codex:211782] // (at your option) any later version.
[codex:211782] 
[codex:211782] // This program is distributed in the hope that it will be useful,
[codex:211782] // but WITHOUT ANY WARRANTY; without even the implied warranty of
[codex:211782] // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
[codex:211782] // GNU General Public License for more details.
[codex:211782] 
[codex:211782] // You should have received a copy of the GNU General Public License
[codex:211782] 
[codex:211782] thinking
[codex:211782] **Analyzing Contract security issues**
[codex:211782] 
[codex:211782] I’m auditing Contract.sol for access control weaknesses and reentrancy risks, focusing on SaiTub and SaiTap functions. I found that SaiTub.turn lacks authorization, letting anyone set a critical address once, which risks mint control and liquidation manipulation. Also, SaiTub.exit calls an external token transfer before key state updates, allowing a malicious token to reenter and drain collateral—a medium severity reentrancy risk. I’m preparing a detailed JSON report with findings, scenarios, recommendations, and evidence locations referencing contract functions without line numbers.
[codex:211782] codex
[codex:211782] {"no_findings":false,"summary":"Identified two issues: a critical one-time tap address takeover and a reentrancy vector on collateral exit.","findings":[{"severity":"high","category":"access_control","title":"Unprotected tap assignment allows attacker to seize liquidation/tax flows","exploit_scenario":"Any address can call `turn()` first and set `tap` to an attacker-controlled contract. This attacker then receives minted `sai`/`sin` during `drip()` and `bite()`, effectively taking all future protocol flows and influencing liquidations.","recommendation":"Add `auth` to `turn()` and/or restrict it to the owner/authority. Consider an initialization pattern that sets `tap` in the constructor and prevents external calls entirely.","evidence":"`SaiTub.turn(address tap_)` lacks `auth` and only checks `tap == 0`, allowing anyone to set it once.","locations":["contracts/Contract.sol"]},{"severity":"medium","category":"reentrancy","title":"Reentrancy window on collateral exit can drain gem before burning SKR","exploit_scenario":"A malicious `gem` token can reenter `exit()` during `gem.transfer(...)` before `skr.burn(...)` executes. The attacker can call `exit()` again using the same SKR balance (not yet burned) to withdraw additional `gem`, draining collateral.","recommendation":"Follow checks-effects-interactions: burn SKR before transferring `gem`, or add a reentrancy guard. Alternatively restrict `gem` to a non-callback ERC20 implementation.","evidence":"`SaiTub.exit(uint wad)` performs `gem.transfer` before `skr.burn`, enabling reentrancy if `gem` is malicious.","locations":["contracts/Contract.sol"]}]}
[codex:211782] tokens used
[codex:211782] 23,954
[codex:211782] {"no_findings":false,"summary":"Identified two issues: a critical one-time tap address takeover and a reentrancy vector on collateral exit.","findings":[{"severity":"high","category":"access_control","title":"Unprotected tap assignment allows attacker to seize liquidation/tax flows","exploit_scenario":"Any address can call `turn()` first and set `tap` to an attacker-controlled contract. This attacker then receives minted `sai`/`sin` during `drip()` and `bite()`, effectively taking all future protocol flows and influencing liquidations.","recommendation":"Add `auth` to `turn()` and/or restrict it to the owner/authority. Consider an initialization pattern that sets `tap` in the constructor and prevents external calls entirely.","evidence":"`SaiTub.turn(address tap_)` lacks `auth` and only checks `tap == 0`, allowing anyone to set it once.","locations":["contracts/Contract.sol"]},{"severity":"medium","category":"reentrancy","title":"Reentrancy window on collateral exit can drain gem before burning SKR","exploit_scenario":"A malicious `gem` token can reenter `exit()` during `gem.transfer(...)` before `skr.burn(...)` executes. The attacker can call `exit()` again using the same SKR balance (not yet burned) to withdraw additional `gem`, draining collateral.","recommendation":"Follow checks-effects-interactions: burn SKR before transferring `gem`, or add a reentrancy guard. Alternatively restrict `gem` to a non-callback ERC20 implementation.","evidence":"`SaiTub.exit(uint wad)` performs `gem.transfer` before `skr.burn`, enabling reentrancy if `gem` is malicious.","locations":["contracts/Contract.sol"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-24T00:37:13.987205+00:00",
        "returncode": 0
    },
    "summary": "Identified two issues: a critical one-time tap address takeover and a reentrancy vector on collateral exit.",
    "raw_final": {
        "summary": "Identified two issues: a critical one-time tap address takeover and a reentrancy vector on collateral exit.",
        "findings": [
            {
                "title": "Unprotected tap assignment allows attacker to seize liquidation/tax flows",
                "category": "access_control",
                "evidence": "`SaiTub.turn(address tap_)` lacks `auth` and only checks `tap == 0`, allowing anyone to set it once.",
                "severity": "high",
                "locations": [
                    "contracts/Contract.sol"
                ],
                "recommendation": "Add `auth` to `turn()` and/or restrict it to the owner/authority. Consider an initialization pattern that sets `tap` in the constructor and prevents external calls entirely.",
                "exploit_scenario": "Any address can call `turn()` first and set `tap` to an attacker-controlled contract. This attacker then receives minted `sai`/`sin` during `drip()` and `bite()`, effectively taking all future protocol flows and influencing liquidations."
            },
            {
                "title": "Reentrancy window on collateral exit can drain gem before burning SKR",
                "category": "reentrancy",
                "evidence": "`SaiTub.exit(uint wad)` performs `gem.transfer` before `skr.burn`, enabling reentrancy if `gem` is malicious.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol"
                ],
                "recommendation": "Follow checks-effects-interactions: burn SKR before transferring `gem`, or add a reentrancy guard. Alternatively restrict `gem` to a non-callback ERC20 implementation.",
                "exploit_scenario": "A malicious `gem` token can reenter `exit()` during `gem.transfer(...)` before `skr.burn(...)` executes. The attacker can call `exit()` again using the same SKR balance (not yet burned) to withdraw additional `gem`, draining collateral."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
17
EXT*/BALANCE
20
Total opcodes
3384
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x013a
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH1 0xe0
00000014: PUSH1 0x02
00000016: EXP
00000017: PUSH1 0x00
00000019: CALLDATALOAD
0000001a: DIV
0000001b: AND
0000001c: PUSH4 0x0434fe0b
00000021: DUP2
00000022: EQ
00000023: PUSH2 0x013f
00000026: JUMPI
00000027: DUP1
00000028: PUSH4 0x071bafb5
0000002d: EQ
0000002e: PUSH2 0x0154
00000031: JUMPI
00000032: DUP1
00000033: PUSH4 0x0f8a771e
00000038: EQ
00000039: PUSH2 0x0183
0000003c: JUMPI
0000003d: DUP1
0000003e: PUSH4 0x13af4035
00000043: EQ
00000044: PUSH2 0x0196
00000047: JUMPI
00000048: DUP1
00000049: PUSH4 0x1406b921
0000004e: EQ
0000004f: PUSH2 0x01b5
00000052: JUMPI
00000053: DUP1
00000054: PUSH4 0x17dc92f5
00000059: EQ
0000005a: PUSH2 0x01c8
0000005d: JUMPI
0000005e: DUP1
0000005f: PUSH4 0x2da8d3e6
00000064: EQ
00000065: PUSH2 0x01de
00000068: JUMPI
00000069: DUP1
0000006a: PUSH4 0x34e70cc2
0000006f: EQ
00000070: PUSH2 0x0203
00000073: JUMPI
00000074: DUP1
00000075: PUSH4 0x3de377ec
0000007a: EQ
0000007b: PUSH2 0x0216
0000007e: JUMPI
0000007f: DUP1
00000080: PUSH4 0x454a2ab3
00000085: EQ
00000086: PUSH2 0x022c
00000089: JUMPI
0000008a: DUP1
0000008b: PUSH4 0x465b43d0
00000090: EQ
00000091: PUSH2 0x0242
00000094: JUMPI
00000095: DUP1
00000096: PUSH4 0x65d1df24
0000009b: EQ
0000009c: PUSH2 0x0255
0000009f: JUMPI
000000a0: DUP1
000000a1: PUSH4 0x6626b26d
000000a6: EQ
000000a7: PUSH2 0x0268
000000aa: JUMPI
000000ab: DUP1
000000ac: PUSH4 0x67550a35
000000b1: EQ
000000b2: PUSH2 0x028f
000000b5: JUMPI
000000b6: DUP1
000000b7: PUSH4 0x6c32c0a6
000000bc: EQ
000000bd: PUSH2 0x02a2
000000c0: JUMPI
000000c1: DUP1
000000c2: PUSH4 0x7296359a
000000c7: EQ
000000c8: PUSH2 0x02b5
000000cb: JUMPI
000000cc: DUP1
000000cd: PUSH4 0x7a9e5e4b
000000d2: EQ
000000d3: PUSH2 0x02c8
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0x8da5cb5b
000000dd: EQ
000000de: PUSH2 0x02e7
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0x9166cba4
000000e8: EQ
000000e9: PUSH2 0x02fa
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x92b0d721
000000f3: EQ
000000f4: PUSH2 0x030d
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0xa2f91af2
000000fe: EQ
000000ff: PUSH2 0x0326
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0xa551878e
00000109: EQ
0000010a: PUSH2 0x033c
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0xaf378ce5
00000114: EQ
00000115: PUSH2 0x034f
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0xb443a085
0000011f: EQ
00000120: PUSH2 0x0365
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0xbf7e214f
0000012a: EQ
0000012b: PUSH2 0x037b
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0xe47e7e66
00000135: EQ
00000136: PUSH2 0x038e
00000139: JUMPI
0000013a: JUMPDEST
0000013b: PUSH1 0x00
0000013d: DUP1
0000013e: REVERT
0000013f: JUMPDEST
00000140: CALLVALUE
00000141: ISZERO
00000142: PUSH2 0x014a
00000145: JUMPI
00000146: PUSH1 0x00
00000148: DUP1
00000149: REVERT
0000014a: JUMPDEST
0000014b: PUSH2 0x0152
0000014e: PUSH2 0x03a4
00000151: JUMP
00000152: JUMPDEST
00000153: STOP
00000154: JUMPDEST
00000155: CALLVALUE
00000156: ISZERO
00000157: PUSH2 0x015f
0000015a: JUMPI
0000015b: PUSH1 0x00
0000015d: DUP1
0000015e: REVERT
0000015f: JUMPDEST
00000160: PUSH2 0x0167
00000163: PUSH2 0x04f6
00000166: JUMP
00000167: JUMPDEST
00000168: PUSH1 0x40
0000016a: MLOAD
0000016b: PUSH1 0x01
0000016d: PUSH1 0xa0
0000016f: PUSH1 0x02
00000171: EXP
00000172: SUB
00000173: SWAP1
00000174: SWAP2
00000175: AND
00000176: DUP2
00000177: MSTORE
00000178: PUSH1 0x20
0000017a: ADD
0000017b: PUSH1 0x40
0000017d: MLOAD
0000017e: DUP1
0000017f: SWAP2
00000180: SUB
00000181: SWAP1
00000182: RETURN
00000183: JUMPDEST
00000184: CALLVALUE
00000185: ISZERO
00000186: PUSH2 0x018e
00000189: JUMPI
0000018a: PUSH1 0x00
0000018c: DUP1
0000018d: REVERT
0000018e: JUMPDEST
0000018f: PUSH2 0x0167
00000192: PUSH2 0x0505
00000195: JUMP
00000196: JUMPDEST
00000197: CALLVALUE
00000198: ISZERO
00000199: PUSH2 0x01a1
0000019c: JUMPI
0000019d: PUSH1 0x00
0000019f: DUP1
000001a0: REVERT
000001a1: JUMPDEST
000001a2: PUSH2 0x0152
000001a5: PUSH1 0x01
000001a7: PUSH1 0xa0
000001a9: PUSH1 0x02
000001ab: EXP
000001ac: SUB
000001ad: PUSH1 0x04
000001af: CALLDATALOAD
000001b0: AND
000001b1: PUSH2 0x0514
000001b4: JUMP
000001b5: JUMPDEST
000001b6: CALLVALUE
000001b7: ISZERO
000001b8: PUSH2 0x01c0
000001bb: JUMPI
000001bc: PUSH1 0x00
000001be: DUP1
000001bf: REVERT
000001c0: JUMPDEST
000001c1: PUSH2 0x0152
000001c4: PUSH2 0x0593
000001c7: JUMP
000001c8: JUMPDEST
000001c9: CALLVALUE
000001ca: ISZERO
000001cb: PUSH2 0x01d3
000001ce: JUMPI
000001cf: PUSH1 0x00
000001d1: DUP1
000001d2: REVERT
000001d3: JUMPDEST
000001d4: PUSH2 0x0152
000001d7: PUSH1 0x04
000001d9: CALLDATALOAD
000001da: PUSH2 0x0661
000001dd: JUMP
000001de: JUMPDEST
000001df: CALLVALUE
000001e0: ISZERO
000001e1: PUSH2 0x01e9
000001e4: JUMPI
000001e5: PUSH1 0x00
000001e7: DUP1
000001e8: REVERT
000001e9: JUMPDEST
000001ea: PUSH2 0x01f1
000001ed: PUSH2 0x0823
000001f0: JUMP
000001f1: JUMPDEST
000001f2: PUSH1 0x40
000001f4: MLOAD
000001f5: SWAP1
000001f6: DUP2
000001f7: MSTORE
000001f8: PUSH1 0x20
000001fa: ADD
000001fb: PUSH1 0x40
000001fd: MLOAD
000001fe: DUP1
000001ff: SWAP2
00000200: SUB
00000201: SWAP1
00000202: RETURN
00000203: JUMPDEST
00000204: CALLVALUE
00000205: ISZERO
00000206: PUSH2 0x020e
00000209: JUMPI
0000020a: PUSH1 0x00
0000020c: DUP1
0000020d: REVERT
0000020e: JUMPDEST
0000020f: PUSH2 0x0167
00000212: PUSH2 0x089d
00000215: JUMP
00000216: JUMPDEST
00000217: CALLVALUE
00000218: ISZERO
00000219: PUSH2 0x0221
0000021c: JUMPI
0000021d: PUSH1 0x00
0000021f: DUP1
00000220: REVERT
00000221: JUMPDEST
00000222: PUSH2 0x0152
00000225: PUSH1 0x04
00000227: CALLDATALOAD
00000228: PUSH2 0x08ac
0000022b: JUMP
0000022c: JUMPDEST
0000022d: CALLVALUE
0000022e: ISZERO
0000022f: PUSH2 0x0237
00000232: JUMPI
00000233: PUSH1 0x00
00000235: DUP1
00000236: REVERT
00000237: JUMPDEST
00000238: PUSH2 0x01f1
0000023b: PUSH1 0x04
0000023d: CALLDATALOAD
0000023e: PUSH2 0x0a55
00000241: JUMP
00000242: JUMPDEST
00000243: CALLVALUE
00000244: ISZERO
00000245: PUSH2 0x024d
00000248: JUMPI
00000249: PUSH1 0x00
0000024b: DUP1
0000024c: REVERT
0000024d: JUMPDEST
0000024e: PUSH2 0x01f1
00000251: PUSH2 0x0a8d
00000254: JUMP
00000255: JUMPDEST
00000256: CALLVALUE
00000257: ISZERO
00000258: PUSH2 0x0260
0000025b: JUMPI
0000025c: PUSH1 0x00
0000025e: DUP1
0000025f: REVERT
00000260: JUMPDEST
00000261: PUSH2 0x01f1
00000264: PUSH2 0x0ae8
00000267: JUMP
00000268: JUMPDEST
00000269: CALLVALUE
0000026a: ISZERO
0000026b: PUSH2 0x0273
0000026e: JUMPI
0000026f: PUSH1 0x00
00000271: DUP1
00000272: REVERT
00000273: JUMPDEST
00000274: PUSH2 0x027b
00000277: PUSH2 0x0bca
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH1 0x40
0000027e: MLOAD
0000027f: SWAP1
00000280: ISZERO
00000281: ISZERO
00000282: DUP2
00000283: MSTORE
00000284: PUSH1 0x20
00000286: ADD
00000287: PUSH1 0x40
00000289: MLOAD
0000028a: DUP1
0000028b: SWAP2
0000028c: SUB
0000028d: SWAP1
0000028e: RETURN
0000028f: JUMPDEST
00000290: CALLVALUE
00000291: ISZERO
00000292: PUSH2 0x029a
00000295: JUMPI
00000296: PUSH1 0x00
00000298: DUP1
00000299: REVERT
0000029a: JUMPDEST
0000029b: PUSH2 0x0167
0000029e: PUSH2 0x0bd3
000002a1: JUMP
000002a2: JUMPDEST
000002a3: CALLVALUE
000002a4: ISZERO
000002a5: PUSH2 0x02ad
000002a8: JUMPI
000002a9: PUSH1 0x00
000002ab: DUP1
000002ac: REVERT
000002ad: JUMPDEST
000002ae: PUSH2 0x01f1
000002b1: PUSH2 0x0be2
000002b4: JUMP
000002b5: JUMPDEST
000002b6: CALLVALUE
000002b7: ISZERO
000002b8: PUSH2 0x02c0
000002bb: JUMPI
000002bc: PUSH1 0x00
000002be: DUP1
000002bf: REVERT
000002c0: JUMPDEST
000002c1: PUSH2 0x01f1
000002c4: PUSH2 0x0be8
000002c7: JUMP
000002c8: JUMPDEST
000002c9: CALLVALUE
000002ca: ISZERO
000002cb: PUSH2 0x02d3
000002ce: JUMPI
000002cf: PUSH1 0x00
000002d1: DUP1
000002d2: REVERT
000002d3: JUMPDEST
000002d4: PUSH2 0x0152
000002d7: PUSH1 0x01
000002d9: PUSH1 0xa0
000002db: PUSH1 0x02
000002dd: EXP
000002de: SUB
000002df: PUSH1 0x04
000002e1: CALLDATALOAD
000002e2: AND
000002e3: PUSH2 0x0c43
000002e6: JUMP
000002e7: JUMPDEST
000002e8: CALLVALUE
000002e9: ISZERO
000002ea: PUSH2 0x02f2
000002ed: JUMPI
000002ee: PUSH1 0x00
000002f0: DUP1
000002f1: REVERT
000002f2: JUMPDEST
000002f3: PUSH2 0x0167
000002f6: PUSH2 0x0cc2
000002f9: JUMP
000002fa: JUMPDEST
000002fb: CALLVALUE
000002fc: ISZERO
000002fd: PUSH2 0x0305
00000300: JUMPI
00000301: PUSH1 0x00
00000303: DUP1
00000304: REVERT
00000305: JUMPDEST
00000306: PUSH2 0x0167
00000309: PUSH2 0x0cd1
0000030c: JUMP
0000030d: JUMPDEST
0000030e: CALLVALUE
0000030f: ISZERO
00000310: PUSH2 0x0318
00000313: JUMPI
00000314: PUSH1 0x00
00000316: DUP1
00000317: REVERT
00000318: JUMPDEST
00000319: PUSH2 0x0152
0000031c: PUSH1 0x04
0000031e: CALLDATALOAD
0000031f: PUSH1 0x24
00000321: CALLDATALOAD
00000322: PUSH2 0x0ce0
00000325: JUMP
00000326: JUMPDEST
00000327: CALLVALUE
00000328: ISZERO
00000329: PUSH2 0x0331
0000032c: JUMPI
0000032d: PUSH1 0x00
0000032f: DUP1
00000330: REVERT
00000331: JUMPDEST
00000332: PUSH2 0x0152
00000335: PUSH1 0x04
00000337: CALLDATALOAD
00000338: PUSH2 0x0d8b
0000033b: JUMP
0000033c: JUMPDEST
0000033d: CALLVALUE
0000033e: ISZERO
0000033f: PUSH2 0x0347
00000342: JUMPI
00000343: PUSH1 0x00
00000345: DUP1
00000346: REVERT
00000347: JUMPDEST
00000348: PUSH2 0x01f1
0000034b: PUSH2 0x0e26
0000034e: JUMP
0000034f: JUMPDEST
00000350: CALLVALUE
00000351: ISZERO
00000352: PUSH2 0x035a
00000355: JUMPI
00000356: PUSH1 0x00
00000358: DUP1
00000359: REVERT
0000035a: JUMPDEST
0000035b: PUSH2 0x0152
0000035e: PUSH1 0x04
00000360: CALLDATALOAD
00000361: PUSH2 0x0e2c
00000364: JUMP
00000365: JUMPDEST
00000366: CALLVALUE
00000367: ISZERO
00000368: PUSH2 0x0370
0000036b: JUMPI
0000036c: PUSH1 0x00
0000036e: DUP1
0000036f: REVERT
00000370: JUMPDEST
00000371: PUSH2 0x0152
00000374: PUSH1 0x04
00000376: CALLDATALOAD
00000377: PUSH2 0x0eb8
0000037a: JUMP
0000037b: JUMPDEST
0000037c: CALLVALUE
0000037d: ISZERO
0000037e: PUSH2 0x0386
00000381: JUMPI
00000382: PUSH1 0x00
00000384: DUP1
00000385: REVERT
00000386: JUMPDEST
00000387: PUSH2 0x0167
0000038a: PUSH2 0x0f27
0000038d: JUMP
0000038e: JUMPDEST
0000038f: CALLVALUE
00000390: ISZERO
00000391: PUSH2 0x0399
00000394: JUMPI
00000395: PUSH1 0x00
00000397: DUP1
00000398: REVERT
00000399: JUMPDEST
0000039a: PUSH2 0x01f1
0000039d: PUSH1 0x04
0000039f: CALLDATALOAD
000003a0: PUSH2 0x0f36
000003a3: JUMP
000003a4: JUMPDEST
000003a5: PUSH1 0x00
000003a7: PUSH1 0x04
000003a9: CALLDATALOAD
000003aa: PUSH1 0x24
000003ac: CALLDATALOAD
000003ad: DUP1
000003ae: DUP3
000003af: PUSH1 0x01
000003b1: PUSH1 0xa0
000003b3: PUSH1 0x02
000003b5: EXP
000003b6: SUB
000003b7: CALLER
000003b8: AND
000003b9: PUSH1 0x01
000003bb: PUSH1 0xe0
000003bd: PUSH1 0x02
000003bf: EXP
000003c0: SUB
000003c1: NOT
000003c2: DUP7
000003c3: CALLDATALOAD
000003c4: AND
000003c5: CALLVALUE
000003c6: DUP8
000003c7: CALLDATASIZE
000003c8: PUSH1 0x40
000003ca: MLOAD
000003cb: DUP4
000003cc: DUP2
000003cd: MSTORE
000003ce: PUSH1 0x40
000003d0: PUSH1 0x20
000003d2: DUP3
000003d3: ADD
000003d4: DUP2
000003d5: DUP2
000003d6: MSTORE
000003d7: SWAP1
000003d8: DUP3
000003d9: ADD
000003da: DUP4
000003db: SWAP1
000003dc: MSTORE
000003dd: PUSH1 0x60
000003df: DUP3
000003e0: ADD
000003e1: DUP5
000003e2: DUP5
000003e3: DUP1
000003e4: DUP3
000003e5: DUP5
000003e6: CALLDATACOPY
000003e7: DUP3
000003e8: ADD
000003e9: SWAP2
000003ea: POP
000003eb: POP
000003ec: SWAP5
000003ed: POP
000003ee: POP
000003ef: POP
000003f0: POP
000003f1: POP
000003f2: PUSH1 0x40
000003f4: MLOAD
000003f5: DUP1
000003f6: SWAP2
000003f7: SUB
000003f8: SWAP1
000003f9: LOG4
000003fa: PUSH2 0x0401
000003fd: PUSH2 0x0a8d
00000400: JUMP
00000401: JUMPDEST
00000402: ISZERO
00000403: DUP1
00000404: PUSH2 0x0412
00000407: JUMPI
00000408: POP
00000409: PUSH2 0x0410
0000040c: PUSH2 0x0823
0000040f: JUMP
00000410: JUMPDEST
00000411: ISZERO
00000412: JUMPDEST
00000413: ISZERO
00000414: PUSH2 0x041c
00000417: JUMPI
00000418: PUSH2 0x04f1
0000041b: JUMP
0000041c: JUMPDEST
0000041d: PUSH2 0x0434
00000420: PUSH2 0x0427
00000423: PUSH2 0x0a8d
00000426: JUMP
00000427: JUMPDEST
00000428: PUSH2 0x042f
0000042b: PUSH2 0x0823
0000042e: JUMP
0000042f: JUMPDEST
00000430: PUSH2 0x0f4f
00000433: JUMP
00000434: JUMPDEST
00000435: PUSH1 0x02
00000437: SLOAD
00000438: SWAP1
00000439: SWAP4
0000043a: POP
0000043b: PUSH1 0x01
0000043d: PUSH1 0xa0
0000043f: PUSH1 0x02
00000441: EXP
00000442: SUB
00000443: AND
00000444: PUSH4 0x42966c68
00000449: DUP5
0000044a: PUSH1 0x40
0000044c: MLOAD
0000044d: PUSH1 0xe0
0000044f: PUSH1 0x02
00000451: EXP
00000452: PUSH4 0xffffffff
00000457: DUP5
00000458: AND
00000459: MUL
0000045a: DUP2
0000045b: MSTORE
0000045c: PUSH1 0x04
0000045e: DUP2
0000045f: ADD
00000460: SWAP2
00000461: SWAP1
00000462: SWAP2
00000463: MSTORE
00000464: PUSH1 0x24
00000466: ADD
00000467: PUSH1 0x00
00000469: PUSH1 0x40
0000046b: MLOAD
0000046c: DUP1
0000046d: DUP4
0000046e: SUB
0000046f: DUP2
00000470: PUSH1 0x00
00000472: DUP8
00000473: DUP1
00000474: EXTCODESIZE
00000475: ISZERO
00000476: ISZERO
00000477: PUSH2 0x047f
0000047a: JUMPI
0000047b: PUSH1 0x00
0000047d: DUP1
0000047e: REVERT
0000047f: JUMPDEST
00000480: PUSH2 0x02c6
00000483: GAS
00000484: SUB
00000485: CALL
00000486: ISZERO
00000487: ISZERO
00000488: PUSH2 0x0490
0000048b: JUMPI
0000048c: PUSH1 0x00
0000048e: DUP1
0000048f: REVERT
00000490: JUMPDEST
00000491: POP
00000492: POP
00000493: PUSH1 0x03
00000495: SLOAD
00000496: PUSH1 0x01
00000498: PUSH1 0xa0
0000049a: PUSH1 0x02
0000049c: EXP
0000049d: SUB
0000049e: AND
0000049f: SWAP1
000004a0: POP
000004a1: PUSH4 0x42966c68
000004a6: DUP5
000004a7: PUSH1 0x40
000004a9: MLOAD
000004aa: PUSH1 0xe0
000004ac: PUSH1 0x02
000004ae: EXP
000004af: PUSH4 0xffffffff
000004b4: DUP5
000004b5: AND
000004b6: MUL
000004b7: DUP2
000004b8: MSTORE
000004b9: PUSH1 0x04
000004bb: DUP2
000004bc: ADD
000004bd: SWAP2
000004be: SWAP1
000004bf: SWAP2
000004c0: MSTORE
000004c1: PUSH1 0x24
000004c3: ADD
000004c4: PUSH1 0x00
000004c6: PUSH1 0x40
000004c8: MLOAD
000004c9: DUP1
000004ca: DUP4
000004cb: SUB
000004cc: DUP2
000004cd: PUSH1 0x00
000004cf: DUP8
000004d0: DUP1
000004d1: EXTCODESIZE
000004d2: ISZERO
000004d3: ISZERO
000004d4: PUSH2 0x04dc
000004d7: JUMPI
000004d8: PUSH1 0x00
000004da: DUP1
000004db: REVERT
000004dc: JUMPDEST
000004dd: PUSH2 0x02c6
000004e0: GAS
000004e1: SUB
000004e2: CALL
000004e3: ISZERO
000004e4: ISZERO
000004e5: PUSH2 0x04ed
000004e8: JUMPI
000004e9: PUSH1 0x00
000004eb: DUP1
000004ec: REVERT
000004ed: JUMPDEST
000004ee: POP
000004ef: POP
000004f0: POP
000004f1: JUMPDEST
000004f2: POP
000004f3: POP
000004f4: POP
000004f5: JUMP
000004f6: JUMPDEST
000004f7: PUSH1 0x03
000004f9: SLOAD
000004fa: PUSH1 0x01
000004fc: PUSH1 0xa0
000004fe: PUSH1 0x02
00000500: EXP
00000501: SUB
00000502: AND
00000503: DUP2
00000504: JUMP
00000505: JUMPDEST
00000506: PUSH1 0x04
00000508: SLOAD
00000509: PUSH1 0x01
0000050b: PUSH1 0xa0
0000050d: PUSH1 0x02
0000050f: EXP
00000510: SUB
00000511: AND
00000512: DUP2
00000513: JUMP
00000514: JUMPDEST
00000515: PUSH2 0x052a
00000518: CALLER
00000519: PUSH1 0x00
0000051b: CALLDATALOAD
0000051c: PUSH1 0x01
0000051e: PUSH1 0xe0
00000520: PUSH1 0x02
00000522: EXP
00000523: SUB
00000524: NOT
00000525: AND
00000526: PUSH2 0x0f68
00000529: JUMP
0000052a: JUMPDEST
0000052b: ISZERO
0000052c: ISZERO
0000052d: PUSH2 0x0535
00000530: JUMPI
00000531: PUSH1 0x00
00000533: DUP1
00000534: REVERT
00000535: JUMPDEST
00000536: PUSH1 0x01
00000538: DUP1
00000539: SLOAD
0000053a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000054f: NOT
00000550: AND
00000551: PUSH1 0x01
00000553: PUSH1 0xa0
00000555: PUSH1 0x02
00000557: EXP
00000558: SUB
00000559: DUP4
0000055a: DUP2
0000055b: AND
0000055c: SWAP2
0000055d: SWAP1
0000055e: SWAP2
0000055f: OR
00000560: SWAP2
00000561: DUP3
00000562: SWAP1
00000563: SSTORE
00000564: AND
00000565: PUSH32 0xce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed94
00000586: PUSH1 0x40
00000588: MLOAD
00000589: PUSH1 0x40
0000058b: MLOAD
0000058c: DUP1
0000058d: SWAP2
0000058e: SUB
0000058f: SWAP1
00000590: LOG2
00000591: POP
00000592: JUMP
00000593: JUMPDEST
00000594: PUSH1 0x04
00000596: CALLDATALOAD
00000597: PUSH1 0x24
00000599: CALLDATALOAD
0000059a: DUP1
0000059b: DUP3
0000059c: CALLER
0000059d: PUSH1 0x01
0000059f: PUSH1 0xa0
000005a1: PUSH1 0x02
000005a3: EXP
000005a4: SUB
000005a5: AND
000005a6: PUSH1 0x00
000005a8: DUP1
000005a9: CALLDATALOAD
000005aa: PUSH1 0x01
000005ac: PUSH1 0xe0
000005ae: PUSH1 0x02
000005b0: EXP
000005b1: SUB
000005b2: NOT
000005b3: AND
000005b4: SWAP1
000005b5: CALLVALUE
000005b6: SWAP1
000005b7: CALLDATASIZE
000005b8: PUSH1 0x40
000005ba: MLOAD
000005bb: DUP4
000005bc: DUP2
000005bd: MSTORE
000005be: PUSH1 0x40
000005c0: PUSH1 0x20
000005c2: DUP3
000005c3: ADD
000005c4: DUP2
000005c5: DUP2
000005c6: MSTORE
000005c7: SWAP1
000005c8: DUP3
000005c9: ADD
000005ca: DUP4
000005cb: SWAP1
000005cc: MSTORE
000005cd: PUSH1 0x60
000005cf: DUP3
000005d0: ADD
000005d1: DUP5
000005d2: DUP5
000005d3: DUP1
000005d4: DUP3
000005d5: DUP5
000005d6: CALLDATACOPY
000005d7: DUP3
000005d8: ADD
000005d9: SWAP2
000005da: POP
000005db: POP
000005dc: SWAP5
000005dd: POP
000005de: POP
000005df: POP
000005e0: POP
000005e1: POP
000005e2: PUSH1 0x40
000005e4: MLOAD
000005e5: DUP1
000005e6: SWAP2
000005e7: SUB
000005e8: SWAP1
000005e9: LOG4
000005ea: PUSH1 0x08
000005ec: SLOAD
000005ed: PUSH1 0xff
000005ef: AND
000005f0: ISZERO
000005f1: ISZERO
000005f2: PUSH2 0x05fa
000005f5: JUMPI
000005f6: PUSH1 0x00
000005f8: DUP1
000005f9: REVERT
000005fa: JUMPDEST
000005fb: PUSH1 0x04
000005fd: SLOAD
000005fe: PUSH1 0x01
00000600: PUSH1 0xa0
00000602: PUSH1 0x02
00000604: EXP
00000605: SUB
00000606: AND
00000607: PUSH4 0x42966c68
0000060c: PUSH2 0x0613
0000060f: PUSH2 0x0be8
00000612: JUMP
00000613: JUMPDEST
00000614: PUSH1 0x40
00000616: MLOAD
00000617: PUSH1 0xe0
00000619: PUSH1 0x02
0000061b: EXP
0000061c: PUSH4 0xffffffff
00000621: DUP5
00000622: AND
00000623: MUL
00000624: DUP2
00000625: MSTORE
00000626: PUSH1 0x04
00000628: DUP2
00000629: ADD
0000062a: SWAP2
0000062b: SWAP1
0000062c: SWAP2
0000062d: MSTORE
0000062e: PUSH1 0x24
00000630: ADD
00000631: PUSH1 0x00
00000633: PUSH1 0x40
00000635: MLOAD
00000636: DUP1
00000637: DUP4
00000638: SUB
00000639: DUP2
0000063a: PUSH1 0x00
0000063c: DUP8
0000063d: DUP1
0000063e: EXTCODESIZE
0000063f: ISZERO
00000640: ISZERO
00000641: PUSH2 0x0649
00000644: JUMPI
00000645: PUSH1 0x00
00000647: DUP1
00000648: REVERT
00000649: JUMPDEST
0000064a: PUSH2 0x02c6
0000064d: GAS
0000064e: SUB
0000064f: CALL
00000650: ISZERO
00000651: ISZERO
00000652: PUSH2 0x065a
00000655: JUMPI
00000656: PUSH1 0x00
00000658: DUP1
00000659: REVERT
0000065a: JUMPDEST
0000065b: POP
0000065c: POP
0000065d: POP
0000065e: POP
0000065f: POP
00000660: JUMP
00000661: JUMPDEST
00000662: PUSH1 0x04
00000664: CALLDATALOAD
00000665: PUSH1 0x24
00000667: CALLDATALOAD
00000668: DUP1
00000669: DUP3
0000066a: CALLER
0000066b: PUSH1 0x01
0000066d: PUSH1 0xa0
0000066f: PUSH1 0x02
00000671: EXP
00000672: SUB
00000673: AND
00000674: PUSH1 0x00
00000676: DUP1
00000677: CALLDATALOAD
00000678: PUSH1 0x01
0000067a: PUSH1 0xe0
0000067c: PUSH1 0x02
0000067e: EXP
0000067f: SUB
00000680: NOT
00000681: AND
00000682: SWAP1
00000683: CALLVALUE
00000684: SWAP1
00000685: CALLDATASIZE
00000686: PUSH1 0x40
00000688: MLOAD
00000689: DUP4
0000068a: DUP2
0000068b: MSTORE
0000068c: PUSH1 0x40
0000068e: PUSH1 0x20
00000690: DUP3
00000691: ADD
00000692: DUP2
00000693: DUP2
00000694: MSTORE
00000695: SWAP1
00000696: DUP3
00000697: ADD
00000698: DUP4
00000699: SWAP1
0000069a: MSTORE
0000069b: PUSH1 0x60
0000069d: DUP3
0000069e: ADD
0000069f: DUP5
000006a0: DUP5
000006a1: DUP1
000006a2: DUP3
000006a3: DUP5
000006a4: CALLDATACOPY
000006a5: DUP3
000006a6: ADD
000006a7: SWAP2
000006a8: POP
000006a9: POP
000006aa: SWAP5
000006ab: POP
000006ac: POP
000006ad: POP
000006ae: POP
000006af: POP
000006b0: PUSH1 0x40
000006b2: MLOAD
000006b3: DUP1
000006b4: SWAP2
000006b5: SUB
000006b6: SWAP1
000006b7: LOG4
000006b8: PUSH1 0x08
000006ba: SLOAD
000006bb: PUSH1 0xff
000006bd: AND
000006be: ISZERO
000006bf: ISZERO
000006c0: PUSH2 0x06c8
000006c3: JUMPI
000006c4: PUSH1 0x00
000006c6: DUP1
000006c7: REVERT
000006c8: JUMPDEST
000006c9: PUSH1 0x02
000006cb: SLOAD
000006cc: PUSH1 0x01
000006ce: PUSH1 0xa0
000006d0: PUSH1 0x02
000006d2: EXP
000006d3: SUB
000006d4: AND
000006d5: PUSH4 0x9dc29fac
000006da: CALLER
000006db: DUP6
000006dc: PUSH1 0x40
000006de: MLOAD
000006df: PUSH1 0xe0
000006e1: PUSH1 0x02
000006e3: EXP
000006e4: PUSH4 0xffffffff
000006e9: DUP6
000006ea: AND
000006eb: MUL
000006ec: DUP2
000006ed: MSTORE
000006ee: PUSH1 0x01
000006f0: PUSH1 0xa0
000006f2: PUSH1 0x02
000006f4: EXP
000006f5: SUB
000006f6: SWAP1
000006f7: SWAP3
000006f8: AND
000006f9: PUSH1 0x04
000006fb: DUP4
000006fc: ADD
000006fd: MSTORE
000006fe: PUSH1 0x24
00000700: DUP3
00000701: ADD
00000702: MSTORE
00000703: PUSH1 0x44
00000705: ADD
00000706: PUSH1 0x00
00000708: PUSH1 0x40
0000070a: MLOAD
0000070b: DUP1
0000070c: DUP4
0000070d: SUB
0000070e: DUP2
0000070f: PUSH1 0x00
00000711: DUP8
00000712: DUP1
00000713: EXTCODESIZE
00000714: ISZERO
00000715: ISZERO
00000716: PUSH2 0x071e
00000719: JUMPI
0000071a: PUSH1 0x00
0000071c: DUP1
0000071d: REVERT
0000071e: JUMPDEST
0000071f: PUSH2 0x02c6
00000722: GAS
00000723: SUB
00000724: CALL
00000725: ISZERO
00000726: ISZERO
00000727: PUSH2 0x072f
0000072a: JUMPI
0000072b: PUSH1 0x00
0000072d: DUP1
0000072e: REVERT
0000072f: JUMPDEST
00000730: POP
00000731: POP
00000732: PUSH1 0x06
00000734: SLOAD
00000735: PUSH1 0x01
00000737: PUSH1 0xa0
00000739: PUSH1 0x02
0000073b: EXP
0000073c: SUB
0000073d: AND
0000073e: SWAP1
0000073f: POP
00000740: PUSH4 0x7bd2bea7
00000745: PUSH1 0x00
00000747: PUSH1 0x40
00000749: MLOAD
0000074a: PUSH1 0x20
0000074c: ADD
0000074d: MSTORE
0000074e: PUSH1 0x40
00000750: MLOAD
00000751: DUP2
00000752: PUSH4 0xffffffff
00000757: AND
00000758: PUSH1 0xe0
0000075a: PUSH1 0x02
0000075c: EXP
0000075d: MUL
0000075e: DUP2
0000075f: MSTORE
00000760: PUSH1 0x04
00000762: ADD
00000763: PUSH1 0x20
00000765: PUSH1 0x40
00000767: MLOAD
00000768: DUP1
00000769: DUP4
0000076a: SUB
0000076b: DUP2
0000076c: PUSH1 0x00
0000076e: DUP8
0000076f: DUP1
00000770: EXTCODESIZE
00000771: ISZERO
00000772: ISZERO
00000773: PUSH2 0x077b
00000776: JUMPI
00000777: PUSH1 0x00
00000779: DUP1
0000077a: REVERT
0000077b: JUMPDEST
0000077c: PUSH2 0x02c6
0000077f: GAS
00000780: SUB
00000781: CALL
00000782: ISZERO
00000783: ISZERO
00000784: PUSH2 0x078c
00000787: JUMPI
00000788: PUSH1 0x00
0000078a: DUP1
0000078b: REVERT
0000078c: JUMPDEST
0000078d: POP
0000078e: POP
0000078f: POP
00000790: PUSH1 0x40
00000792: MLOAD
00000793: DUP1
00000794: MLOAD
00000795: SWAP1
00000796: POP
00000797: PUSH1 0x01
00000799: PUSH1 0xa0
0000079b: PUSH1 0x02
0000079d: EXP
0000079e: SUB
0000079f: AND
000007a0: PUSH4 0xa9059cbb
000007a5: CALLER
000007a6: PUSH2 0x07b1
000007a9: DUP7
000007aa: PUSH1 0x09
000007ac: SLOAD
000007ad: PUSH2 0x105f
000007b0: JUMP
000007b1: JUMPDEST
000007b2: PUSH1 0x00
000007b4: PUSH1 0x40
000007b6: MLOAD
000007b7: PUSH1 0x20
000007b9: ADD
000007ba: MSTORE
000007bb: PUSH1 0x40
000007bd: MLOAD
000007be: PUSH1 0xe0
000007c0: PUSH1 0x02
000007c2: EXP
000007c3: PUSH4 0xffffffff
000007c8: DUP6
000007c9: AND
000007ca: MUL
000007cb: DUP2
000007cc: MSTORE
000007cd: PUSH1 0x01
000007cf: PUSH1 0xa0
000007d1: PUSH1 0x02
000007d3: EXP
000007d4: SUB
000007d5: SWAP1
000007d6: SWAP3
000007d7: AND
000007d8: PUSH1 0x04
000007da: DUP4
000007db: ADD
000007dc: MSTORE
000007dd: PUSH1 0x24
000007df: DUP3
000007e0: ADD
000007e1: MSTORE
000007e2: PUSH1 0x44
000007e4: ADD
000007e5: PUSH1 0x20
000007e7: PUSH1 0x40
000007e9: MLOAD
000007ea: DUP1
000007eb: DUP4
000007ec: SUB
000007ed: DUP2
000007ee: PUSH1 0x00
000007f0: DUP8
000007f1: DUP1
000007f2: EXTCODESIZE
000007f3: ISZERO
000007f4: ISZERO
000007f5: PUSH2 0x07fd
000007f8: JUMPI
000007f9: PUSH1 0x00
000007fb: DUP1
000007fc: REVERT
000007fd: JUMPDEST
000007fe: PUSH2 0x02c6
00000801: GAS
00000802: SUB
00000803: CALL
00000804: ISZERO
00000805: ISZERO
00000806: PUSH2 0x080e
00000809: JUMPI
0000080a: PUSH1 0x00
0000080c: DUP1
0000080d: REVERT
0000080e: JUMPDEST
0000080f: POP
00000810: POP
00000811: POP
00000812: PUSH1 0x40
00000814: MLOAD
00000815: DUP1
00000816: MLOAD
00000817: SWAP1
00000818: POP
00000819: ISZERO
0000081a: ISZERO
0000081b: PUSH2 0x04f1
0000081e: JUMPI
0000081f: PUSH1 0x00
00000821: DUP1
00000822: REVERT
00000823: JUMPDEST
00000824: PUSH1 0x03
00000826: SLOAD
00000827: PUSH1 0x00
00000829: SWAP1
0000082a: PUSH1 0x01
0000082c: PUSH1 0xa0
0000082e: PUSH1 0x02
00000830: EXP
00000831: SUB
00000832: AND
00000833: PUSH4 0x70a08231
00000838: ADDRESS
00000839: DUP4
0000083a: PUSH1 0x40
0000083c: MLOAD
0000083d: PUSH1 0x20
0000083f: ADD
00000840: MSTORE
00000841: PUSH1 0x40
00000843: MLOAD
00000844: PUSH1 0xe0
00000846: PUSH1 0x02
00000848: EXP
00000849: PUSH4 0xffffffff
0000084e: DUP5
0000084f: AND
00000850: MUL
00000851: DUP2
00000852: MSTORE
00000853: PUSH1 0x01
00000855: PUSH1 0xa0
00000857: PUSH1 0x02
00000859: EXP
0000085a: SUB
0000085b: SWAP1
0000085c: SWAP2
0000085d: AND
0000085e: PUSH1 0x04
00000860: DUP3
00000861: ADD
00000862: MSTORE
00000863: PUSH1 0x24
00000865: ADD
00000866: PUSH1 0x20
00000868: PUSH1 0x40
0000086a: MLOAD
0000086b: DUP1
0000086c: DUP4
0000086d: SUB
0000086e: DUP2
0000086f: PUSH1 0x00
00000871: DUP8
00000872: DUP1
00000873: EXTCODESIZE
00000874: ISZERO
00000875: ISZERO
00000876: PUSH2 0x087e
00000879: JUMPI
0000087a: PUSH1 0x00
0000087c: DUP1
0000087d: REVERT
0000087e: JUMPDEST
0000087f: PUSH2 0x02c6
00000882: GAS
00000883: SUB
00000884: CALL
00000885: ISZERO
00000886: ISZERO
00000887: PUSH2 0x088f
0000088a: JUMPI
0000088b: PUSH1 0x00
0000088d: DUP1
0000088e: REVERT
0000088f: JUMPDEST
00000890: POP
00000891: POP
00000892: POP
00000893: PUSH1 0x40
00000895: MLOAD
00000896: DUP1
00000897: MLOAD
00000898: SWAP2
00000899: POP
0000089a: POP
0000089b: SWAP1
0000089c: JUMP
0000089d: JUMPDEST
0000089e: PUSH1 0x06
000008a0: SLOAD
000008a1: PUSH1 0x01
000008a3: PUSH1 0xa0
000008a5: PUSH1 0x02
000008a7: EXP
000008a8: SUB
000008a9: AND
000008aa: DUP2
000008ab: JUMP
000008ac: JUMPDEST
000008ad: PUSH1 0x04
000008af: CALLDATALOAD
000008b0: PUSH1 0x24
000008b2: CALLDATALOAD
000008b3: DUP1
000008b4: DUP3
000008b5: CALLER
000008b6: PUSH1 0x01
000008b8: PUSH1 0xa0
000008ba: PUSH1 0x02
000008bc: EXP
000008bd: SUB
000008be: AND
000008bf: PUSH1 0x00
000008c1: DUP1
000008c2: CALLDATALOAD
000008c3: PUSH1 0x01
000008c5: PUSH1 0xe0
000008c7: PUSH1 0x02
000008c9: EXP
000008ca: SUB
000008cb: NOT
000008cc: AND
000008cd: SWAP1
000008ce: CALLVALUE
000008cf: SWAP1
000008d0: CALLDATASIZE
000008d1: PUSH1 0x40
000008d3: MLOAD
000008d4: DUP4
000008d5: DUP2
000008d6: MSTORE
000008d7: PUSH1 0x40
000008d9: PUSH1 0x20
000008db: DUP3
000008dc: ADD
000008dd: DUP2
000008de: DUP2
000008df: MSTORE
000008e0: SWAP1
000008e1: DUP3
000008e2: ADD
000008e3: DUP4
000008e4: SWAP1
000008e5: MSTORE
000008e6: PUSH1 0x60
000008e8: DUP3
000008e9: ADD
000008ea: DUP5
000008eb: DUP5
000008ec: DUP1
000008ed: DUP3
000008ee: DUP5
000008ef: CALLDATACOPY
000008f0: DUP3
000008f1: ADD
000008f2: SWAP2
000008f3: POP
000008f4: POP
000008f5: SWAP5
000008f6: POP
000008f7: POP
000008f8: POP
000008f9: POP
000008fa: POP
000008fb: PUSH1 0x40
000008fd: MLOAD
000008fe: DUP1
000008ff: SWAP2
00000900: SUB
00000901: SWAP1
00000902: LOG4
00000903: PUSH1 0x08
00000905: SLOAD
00000906: PUSH1 0xff
00000908: AND
00000909: ISZERO
0000090a: ISZERO
0000090b: PUSH2 0x0913
0000090e: JUMPI
0000090f: PUSH1 0x00
00000911: DUP1
00000912: REVERT
00000913: JUMPDEST
00000914: PUSH1 0x02
00000916: SLOAD
00000917: PUSH1 0x01
00000919: PUSH1 0xa0
0000091b: PUSH1 0x02
0000091d: EXP
0000091e: SUB
0000091f: AND
00000920: PUSH4 0x40c10f19
00000925: CALLER
00000926: DUP6
00000927: PUSH1 0x40
00000929: MLOAD
0000092a: PUSH1 0xe0
0000092c: PUSH1 0x02
0000092e: EXP
0000092f: PUSH4 0xffffffff
00000934: DUP6
00000935: AND
00000936: MUL
00000937: DUP2
00000938: MSTORE
00000939: PUSH1 0x01
0000093b: PUSH1 0xa0
0000093d: PUSH1 0x02
0000093f: EXP
00000940: SUB
00000941: SWAP1
00000942: SWAP3
00000943: AND
00000944: PUSH1 0x04
00000946: DUP4
00000947: ADD
00000948: MSTORE
00000949: PUSH1 0x24
0000094b: DUP3
0000094c: ADD
0000094d: MSTORE
0000094e: PUSH1 0x44
00000950: ADD
00000951: PUSH1 0x00
00000953: PUSH1 0x40
00000955: MLOAD
00000956: DUP1
00000957: DUP4
00000958: SUB
00000959: DUP2
0000095a: PUSH1 0x00
0000095c: DUP8
0000095d: DUP1
0000095e: EXTCODESIZE
0000095f: ISZERO
00000960: ISZERO
00000961: PUSH2 0x0969
00000964: JUMPI
00000965: PUSH1 0x00
00000967: DUP1
00000968: REVERT
00000969: JUMPDEST
0000096a: PUSH2 0x02c6
0000096d: GAS
0000096e: SUB
0000096f: CALL
00000970: ISZERO
00000971: ISZERO
00000972: PUSH2 0x097a
00000975: JUMPI
00000976: PUSH1 0x00
00000978: DUP1
00000979: REVERT
0000097a: JUMPDEST
0000097b: POP
0000097c: POP
0000097d: PUSH1 0x06
0000097f: SLOAD
00000980: PUSH1 0x01
00000982: PUSH1 0xa0
00000984: PUSH1 0x02
00000986: EXP
00000987: SUB
00000988: AND
00000989: SWAP1
0000098a: POP
0000098b: PUSH4 0x7bd2bea7
00000990: PUSH1 0x00
00000992: PUSH1 0x40
00000994: MLOAD
00000995: PUSH1 0x20
00000997: ADD
00000998: MSTORE
00000999: PUSH1 0x40
0000099b: MLOAD
0000099c: DUP2
0000099d: PUSH4 0xffffffff
000009a2: AND
000009a3: PUSH1 0xe0
000009a5: PUSH1 0x02
000009a7: EXP
000009a8: MUL
000009a9: DUP2
000009aa: MSTORE
000009ab: PUSH1 0x04
000009ad: ADD
000009ae: PUSH1 0x20
000009b0: PUSH1 0x40
000009b2: MLOAD
000009b3: DUP1
000009b4: DUP4
000009b5: SUB
000009b6: DUP2
000009b7: PUSH1 0x00
000009b9: DUP8
000009ba: DUP1
000009bb: EXTCODESIZE
000009bc: ISZERO
000009bd: ISZERO
000009be: PUSH2 0x09c6
000009c1: JUMPI
000009c2: PUSH1 0x00
000009c4: DUP1
000009c5: REVERT
000009c6: JUMPDEST
000009c7: PUSH2 0x02c6
000009ca: GAS
000009cb: SUB
000009cc: CALL
000009cd: ISZERO
000009ce: ISZERO
000009cf: PUSH2 0x09d7
000009d2: JUMPI
000009d3: PUSH1 0x00
000009d5: DUP1
000009d6: REVERT
000009d7: JUMPDEST
000009d8: POP
000009d9: POP
000009da: POP
000009db: PUSH1 0x40
000009dd: MLOAD
000009de: DUP1
000009df: MLOAD
000009e0: SWAP1
000009e1: POP
000009e2: PUSH1 0x01
000009e4: PUSH1 0xa0
000009e6: PUSH1 0x02
000009e8: EXP
000009e9: SUB
000009ea: AND
000009eb: PUSH4 0x23b872dd
000009f0: CALLER
000009f1: ADDRESS
000009f2: PUSH2 0x09fd
000009f5: DUP8
000009f6: PUSH1 0x09
000009f8: SLOAD
000009f9: PUSH2 0x105f
000009fc: JUMP
000009fd: JUMPDEST
000009fe: PUSH1 0x00
00000a00: PUSH1 0x40
00000a02: MLOAD
00000a03: PUSH1 0x20
00000a05: ADD
00000a06: MSTORE
00000a07: PUSH1 0x40
00000a09: MLOAD
00000a0a: PUSH1 0xe0
00000a0c: PUSH1 0x02
00000a0e: EXP
00000a0f: PUSH4 0xffffffff
00000a14: DUP7
00000a15: AND
00000a16: MUL
00000a17: DUP2
00000a18: MSTORE
00000a19: PUSH1 0x01
00000a1b: PUSH1 0xa0
00000a1d: PUSH1 0x02
00000a1f: EXP
00000a20: SUB
00000a21: SWAP4
00000a22: DUP5
00000a23: AND
00000a24: PUSH1 0x04
00000a26: DUP3
00000a27: ADD
00000a28: MSTORE
00000a29: SWAP2
00000a2a: SWAP1
00000a2b: SWAP3
00000a2c: AND
00000a2d: PUSH1 0x24
00000a2f: DUP3
00000a30: ADD
00000a31: MSTORE
00000a32: PUSH1 0x44
00000a34: DUP2
00000a35: ADD
00000a36: SWAP2
00000a37: SWAP1
00000a38: SWAP2
00000a39: MSTORE
00000a3a: PUSH1 0x64
00000a3c: ADD
00000a3d: PUSH1 0x20
00000a3f: PUSH1 0x40
00000a41: MLOAD
00000a42: DUP1
00000a43: DUP4
00000a44: SUB
00000a45: DUP2
00000a46: PUSH1 0x00
00000a48: DUP8
00000a49: DUP1
00000a4a: EXTCODESIZE
00000a4b: ISZERO
00000a4c: ISZERO
00000a4d: PUSH2 0x07fd
00000a50: JUMPI
00000a51: PUSH1 0x00
00000a53: DUP1
00000a54: REVERT
00000a55: JUMPDEST
00000a56: PUSH1 0x00
00000a58: PUSH2 0x0a87
00000a5b: DUP3
00000a5c: PUSH2 0x0a82
00000a5f: PUSH2 0x0a66
00000a62: PUSH2 0x0ae8
00000a65: JUMP
00000a66: JUMPDEST
00000a67: PUSH2 0x0a7d
00000a6a: PUSH8 0x0de0b6b3a7640000
00000a73: PUSH1 0x02
00000a75: MUL
00000a76: PUSH1 0x07
00000a78: SLOAD
00000a79: PUSH2 0x10a2
00000a7c: JUMP
00000a7d: JUMPDEST
00000a7e: PUSH2 0x10b2
00000a81: JUMP
00000a82: JUMPDEST
00000a83: PUSH2 0x105f
00000a86: JUMP
00000a87: JUMPDEST
00000a88: SWAP3
00000a89: SWAP2
00000a8a: POP
00000a8b: POP
00000a8c: JUMP
00000a8d: JUMPDEST
00000a8e: PUSH1 0x02
00000a90: SLOAD
00000a91: PUSH1 0x00
00000a93: SWAP1
00000a94: PUSH1 0x01
00000a96: PUSH1 0xa0
00000a98: PUSH1 0x02
00000a9a: EXP
00000a9b: SUB
00000a9c: AND
00000a9d: PUSH4 0x70a08231
00000aa2: ADDRESS
00000aa3: DUP4
00000aa4: PUSH1 0x40
00000aa6: MLOAD
00000aa7: PUSH1 0x20
00000aa9: ADD
00000aaa: MSTORE
00000aab: PUSH1 0x40
00000aad: MLOAD
00000aae: PUSH1 0xe0
00000ab0: PUSH1 0x02
00000ab2: EXP
00000ab3: PUSH4 0xffffffff
00000ab8: DUP5
00000ab9: AND
00000aba: MUL
00000abb: DUP2
00000abc: MSTORE
00000abd: PUSH1 0x01
00000abf: PUSH1 0xa0
00000ac1: PUSH1 0x02
00000ac3: EXP
00000ac4: SUB
00000ac5: SWAP1
00000ac6: SWAP2
00000ac7: AND
00000ac8: PUSH1 0x04
00000aca: DUP3
00000acb: ADD
00000acc: MSTORE
00000acd: PUSH1 0x24
00000acf: ADD
00000ad0: PUSH1 0x20
00000ad2: PUSH1 0x40
00000ad4: MLOAD
00000ad5: DUP1
00000ad6: DUP4
00000ad7: SUB
00000ad8: DUP2
00000ad9: PUSH1 0x00
00000adb: DUP8
00000adc: DUP1
00000add: EXTCODESIZE
00000ade: ISZERO
00000adf: ISZERO
00000ae0: PUSH2 0x087e
00000ae3: JUMPI
00000ae4: PUSH1 0x00
00000ae6: DUP1
00000ae7: REVERT
00000ae8: JUMPDEST
00000ae9: PUSH1 0x06
00000aeb: SLOAD
00000aec: PUSH1 0x00
00000aee: SWAP1
00000aef: DUP2
00000af0: SWAP1
00000af1: DUP2
00000af2: SWAP1
00000af3: PUSH1 0x01
00000af5: PUSH1 0xa0
00000af7: PUSH1 0x02
00000af9: EXP
00000afa: SUB
00000afb: AND
00000afc: PUSH4 0x51f91066
00000b01: DUP3
00000b02: PUSH1 0x40
00000b04: MLOAD
00000b05: PUSH1 0x20
00000b07: ADD
00000b08: MSTORE
00000b09: PUSH1 0x40
00000b0b: MLOAD
00000b0c: DUP2
00000b0d: PUSH4 0xffffffff
00000b12: AND
00000b13: PUSH1 0xe0
00000b15: PUSH1 0x02
00000b17: EXP
00000b18: MUL
00000b19: DUP2
00000b1a: MSTORE
00000b1b: PUSH1 0x04
00000b1d: ADD
00000b1e: PUSH1 0x20
00000b20: PUSH1 0x40
00000b22: MLOAD
00000b23: DUP1
00000b24: DUP4
00000b25: SUB
00000b26: DUP2
00000b27: PUSH1 0x00
00000b29: DUP8
00000b2a: DUP1
00000b2b: EXTCODESIZE
00000b2c: ISZERO
00000b2d: ISZERO
00000b2e: PUSH2 0x0b36
00000b31: JUMPI
00000b32: PUSH1 0x00
00000b34: DUP1
00000b35: REVERT
00000b36: JUMPDEST
00000b37: PUSH2 0x02c6
00000b3a: GAS
00000b3b: SUB
00000b3c: CALL
00000b3d: ISZERO
00000b3e: ISZERO
00000b3f: PUSH2 0x0b47
00000b42: JUMPI
00000b43: PUSH1 0x00
00000b45: DUP1
00000b46: REVERT
00000b47: JUMPDEST
00000b48: POP
00000b49: POP
00000b4a: POP
00000b4b: PUSH1 0x40
00000b4d: MLOAD
00000b4e: DUP1
00000b4f: MLOAD
00000b50: PUSH1 0x05
00000b52: SLOAD
00000b53: SWAP1
00000b54: SWAP4
00000b55: POP
00000b56: PUSH1 0x01
00000b58: PUSH1 0xa0
00000b5a: PUSH1 0x02
00000b5c: EXP
00000b5d: SUB
00000b5e: AND
00000b5f: SWAP1
00000b60: POP
00000b61: PUSH4 0x495d32cb
00000b66: PUSH1 0x00
00000b68: PUSH1 0x40
00000b6a: MLOAD
00000b6b: PUSH1 0x20
00000b6d: ADD
00000b6e: MSTORE
00000b6f: PUSH1 0x40
00000b71: MLOAD
00000b72: DUP2
00000b73: PUSH4 0xffffffff
00000b78: AND
00000b79: PUSH1 0xe0
00000b7b: PUSH1 0x02
00000b7d: EXP
00000b7e: MUL
00000b7f: DUP2
00000b80: MSTORE
00000b81: PUSH1 0x04
00000b83: ADD
00000b84: PUSH1 0x20
00000b86: PUSH1 0x40
00000b88: MLOAD
00000b89: DUP1
00000b8a: DUP4
00000b8b: SUB
00000b8c: DUP2
00000b8d: PUSH1 0x00
00000b8f: DUP8
00000b90: DUP1
00000b91: EXTCODESIZE
00000b92: ISZERO
00000b93: ISZERO
00000b94: PUSH2 0x0b9c
00000b97: JUMPI
00000b98: PUSH1 0x00
00000b9a: DUP1
00000b9b: REVERT
00000b9c: JUMPDEST
00000b9d: PUSH2 0x02c6
00000ba0: GAS
00000ba1: SUB
00000ba2: CALL
00000ba3: ISZERO
00000ba4: ISZERO
00000ba5: PUSH2 0x0bad
00000ba8: JUMPI
00000ba9: PUSH1 0x00
00000bab: DUP1
00000bac: REVERT
00000bad: JUMPDEST
00000bae: POP
00000baf: POP
00000bb0: POP
00000bb1: PUSH1 0x40
00000bb3: MLOAD
00000bb4: DUP1
00000bb5: MLOAD
00000bb6: SWAP1
00000bb7: POP
00000bb8: SWAP1
00000bb9: POP
00000bba: PUSH2 0x0bc3
00000bbd: DUP3
00000bbe: DUP3
00000bbf: PUSH2 0x10da
00000bc2: JUMP
00000bc3: JUMPDEST
00000bc4: SWAP3
00000bc5: POP
00000bc6: POP
00000bc7: POP
00000bc8: SWAP1
00000bc9: JUMP
00000bca: JUMPDEST
00000bcb: PUSH1 0x08
00000bcd: SLOAD
00000bce: PUSH1 0xff
00000bd0: AND
00000bd1: DUP2
00000bd2: JUMP
00000bd3: JUMPDEST
00000bd4: PUSH1 0x05
00000bd6: SLOAD
00000bd7: PUSH1 0x01
00000bd9: PUSH1 0xa0
00000bdb: PUSH1 0x02
00000bdd: EXP
00000bde: SUB
00000bdf: AND
00000be0: DUP2
00000be1: JUMP
00000be2: JUMPDEST
00000be3: PUSH1 0x07
00000be5: SLOAD
00000be6: DUP2
00000be7: JUMP
00000be8: JUMPDEST
00000be9: PUSH1 0x04
00000beb: SLOAD
00000bec: PUSH1 0x00
00000bee: SWAP1
00000bef: PUSH1 0x01
00000bf1: PUSH1 0xa0
00000bf3: PUSH1 0x02
00000bf5: EXP
00000bf6: SUB
00000bf7: AND
00000bf8: PUSH4 0x70a08231
00000bfd: ADDRESS
00000bfe: DUP4
00000bff: PUSH1 0x40
00000c01: MLOAD
00000c02: PUSH1 0x20
00000c04: ADD
00000c05: MSTORE
00000c06: PUSH1 0x40
00000c08: MLOAD
00000c09: PUSH1 0xe0
00000c0b: PUSH1 0x02
00000c0d: EXP
00000c0e: PUSH4 0xffffffff
00000c13: DUP5
00000c14: AND
00000c15: MUL
00000c16: DUP2
00000c17: MSTORE
00000c18: PUSH1 0x01
00000c1a: PUSH1 0xa0
00000c1c: PUSH1 0x02
00000c1e: EXP
00000c1f: SUB
00000c20: SWAP1
00000c21: SWAP2
00000c22: AND
00000c23: PUSH1 0x04
00000c25: DUP3
00000c26: ADD
00000c27: MSTORE
00000c28: PUSH1 0x24
00000c2a: ADD
00000c2b: PUSH1 0x20
00000c2d: PUSH1 0x40
00000c2f: MLOAD
00000c30: DUP1
00000c31: DUP4
00000c32: SUB
00000c33: DUP2
00000c34: PUSH1 0x00
00000c36: DUP8
00000c37: DUP1
00000c38: EXTCODESIZE
00000c39: ISZERO
00000c3a: ISZERO
00000c3b: PUSH2 0x087e
00000c3e: JUMPI
00000c3f: PUSH1 0x00
00000c41: DUP1
00000c42: REVERT
00000c43: JUMPDEST
00000c44: PUSH2 0x0c59
00000c47: CALLER
00000c48: PUSH1 0x00
00000c4a: CALLDATALOAD
00000c4b: PUSH1 0x01
00000c4d: PUSH1 0xe0
00000c4f: PUSH1 0x02
00000c51: EXP
00000c52: SUB
00000c53: NOT
00000c54: AND
00000c55: PUSH2 0x0f68
00000c58: JUMP
00000c59: JUMPDEST
00000c5a: ISZERO
00000c5b: ISZERO
00000c5c: PUSH2 0x0c64
00000c5f: JUMPI
00000c60: PUSH1 0x00
00000c62: DUP1
00000c63: REVERT
00000c64: JUMPDEST
00000c65: PUSH1 0x00
00000c67: DUP1
00000c68: SLOAD
00000c69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c7e: NOT
00000c7f: AND
00000c80: PUSH1 0x01
00000c82: PUSH1 0xa0
00000c84: PUSH1 0x02
00000c86: EXP
00000c87: SUB
00000c88: DUP4
00000c89: DUP2
00000c8a: AND
00000c8b: SWAP2
00000c8c: SWAP1
00000c8d: SWAP2
00000c8e: OR
00000c8f: SWAP2
00000c90: DUP3
00000c91: SWAP1
00000c92: SSTORE
00000c93: AND
00000c94: PUSH32 0x1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada4
00000cb5: PUSH1 0x40
00000cb7: MLOAD
00000cb8: PUSH1 0x40
00000cba: MLOAD
00000cbb: DUP1
00000cbc: SWAP2
00000cbd: SUB
00000cbe: SWAP1
00000cbf: LOG2
00000cc0: POP
00000cc1: JUMP
00000cc2: JUMPDEST
00000cc3: PUSH1 0x01
00000cc5: SLOAD
00000cc6: PUSH1 0x01
00000cc8: PUSH1 0xa0
00000cca: PUSH1 0x02
00000ccc: EXP
00000ccd: SUB
00000cce: AND
00000ccf: DUP2
00000cd0: JUMP
00000cd1: JUMPDEST
00000cd2: PUSH1 0x02
00000cd4: SLOAD
00000cd5: PUSH1 0x01
00000cd7: PUSH1 0xa0
00000cd9: PUSH1 0x02
00000cdb: EXP
00000cdc: SUB
00000cdd: AND
00000cde: DUP2
00000cdf: JUMP
00000ce0: JUMPDEST
00000ce1: PUSH1 0x04
00000ce3: CALLDATALOAD
00000ce4: PUSH1 0x24
00000ce6: CALLDATALOAD
00000ce7: DUP1
00000ce8: DUP3
00000ce9: CALLER
00000cea: PUSH1 0x01
00000cec: PUSH1 0xa0
00000cee: PUSH1 0x02
00000cf0: EXP
00000cf1: SUB
00000cf2: AND
00000cf3: PUSH1 0x00
00000cf5: DUP1
00000cf6: CALLDATALOAD
00000cf7: PUSH1 0x01
00000cf9: PUSH1 0xe0
00000cfb: PUSH1 0x02
00000cfd: EXP
00000cfe: SUB
00000cff: NOT
00000d00: AND
00000d01: SWAP1
00000d02: CALLVALUE
00000d03: SWAP1
00000d04: CALLDATASIZE
00000d05: PUSH1 0x40
00000d07: MLOAD
00000d08: DUP4
00000d09: DUP2
00000d0a: MSTORE
00000d0b: PUSH1 0x40
00000d0d: PUSH1 0x20
00000d0f: DUP3
00000d10: ADD
00000d11: DUP2
00000d12: DUP2
00000d13: MSTORE
00000d14: SWAP1
00000d15: DUP3
00000d16: ADD
00000d17: DUP4
00000d18: SWAP1
00000d19: MSTORE
00000d1a: PUSH1 0x60
00000d1c: DUP3
00000d1d: ADD
00000d1e: DUP5
00000d1f: DUP5
00000d20: DUP1
00000d21: DUP3
00000d22: DUP5
00000d23: CALLDATACOPY
00000d24: DUP3
00000d25: ADD
00000d26: SWAP2
00000d27: POP
00000d28: POP
00000d29: SWAP5
00000d2a: POP
00000d2b: POP
00000d2c: POP
00000d2d: POP
00000d2e: POP
00000d2f: PUSH1 0x40
00000d31: MLOAD
00000d32: DUP1
00000d33: SWAP2
00000d34: SUB
00000d35: SWAP1
00000d36: LOG4
00000d37: PUSH2 0x0d4c
00000d3a: CALLER
00000d3b: PUSH1 0x00
00000d3d: CALLDATALOAD
00000d3e: PUSH1 0x01
00000d40: PUSH1 0xe0
00000d42: PUSH1 0x02
00000d44: EXP
00000d45: SUB
00000d46: NOT
00000d47: AND
00000d48: PUSH2 0x0f68
00000d4b: JUMP
00000d4c: JUMPDEST
00000d4d: ISZERO
00000d4e: ISZERO
00000d4f: PUSH2 0x0d57
00000d52: JUMPI
00000d53: PUSH1 0x00
00000d55: DUP1
00000d56: REVERT
00000d57: JUMPDEST
00000d58: PUSH32 0x6761700000000000000000000000000000000000000000000000000000000000
00000d79: DUP5
00000d7a: EQ
00000d7b: ISZERO
00000d7c: PUSH2 0x0d85
00000d7f: JUMPI
00000d80: PUSH1 0x07
00000d82: DUP4
00000d83: SWAP1
00000d84: SSTORE
00000d85: JUMPDEST
00000d86: POP
00000d87: POP
00000d88: POP
00000d89: POP
00000d8a: JUMP
00000d8b: JUMPDEST
00000d8c: PUSH1 0x04
00000d8e: CALLDATALOAD
00000d8f: PUSH1 0x24
00000d91: CALLDATALOAD
00000d92: DUP1
00000d93: DUP3
00000d94: CALLER
00000d95: PUSH1 0x01
00000d97: PUSH1 0xa0
00000d99: PUSH1 0x02
00000d9b: EXP
00000d9c: SUB
00000d9d: AND
00000d9e: PUSH1 0x00
00000da0: DUP1
00000da1: CALLDATALOAD
00000da2: PUSH1 0x01
00000da4: PUSH1 0xe0
00000da6: PUSH1 0x02
00000da8: EXP
00000da9: SUB
00000daa: NOT
00000dab: AND
00000dac: SWAP1
00000dad: CALLVALUE
00000dae: SWAP1
00000daf: CALLDATASIZE
00000db0: PUSH1 0x40
00000db2: MLOAD
00000db3: DUP4
00000db4: DUP2
00000db5: MSTORE
00000db6: PUSH1 0x40
00000db8: PUSH1 0x20
00000dba: DUP3
00000dbb: ADD
00000dbc: DUP2
00000dbd: DUP2
00000dbe: MSTORE
00000dbf: SWAP1
00000dc0: DUP3
00000dc1: ADD
00000dc2: DUP4
00000dc3: SWAP1
00000dc4: MSTORE
00000dc5: PUSH1 0x60
00000dc7: DUP3
00000dc8: ADD
00000dc9: DUP5
00000dca: DUP5
00000dcb: DUP1
00000dcc: DUP3
00000dcd: DUP5
00000dce: CALLDATACOPY
00000dcf: DUP3
00000dd0: ADD
00000dd1: SWAP2
00000dd2: POP
00000dd3: POP
00000dd4: SWAP5
00000dd5: POP
00000dd6: POP
00000dd7: POP
00000dd8: POP
00000dd9: POP
00000dda: PUSH1 0x40
00000ddc: MLOAD
00000ddd: DUP1
00000dde: SWAP2
00000ddf: SUB
00000de0: SWAP1
00000de1: LOG4
00000de2: PUSH2 0x0df7
00000de5: CALLER
00000de6: PUSH1 0x00
00000de8: CALLDATALOAD
00000de9: PUSH1 0x01
00000deb: PUSH1 0xe0
00000ded: PUSH1 0x02
00000def: EXP
00000df0: SUB
00000df1: NOT
00000df2: AND
00000df3: PUSH2 0x0f68
00000df6: JUMP
00000df7: JUMPDEST
00000df8: ISZERO
00000df9: ISZERO
00000dfa: PUSH2 0x0e02
00000dfd: JUMPI
00000dfe: PUSH1 0x00
00000e00: DUP1
00000e01: REVERT
00000e02: JUMPDEST
00000e03: PUSH1 0x08
00000e05: SLOAD
00000e06: PUSH1 0xff
00000e08: AND
00000e09: ISZERO
00000e0a: PUSH2 0x0e12
00000e0d: JUMPI
00000e0e: PUSH1 0x00
00000e10: DUP1
00000e11: REVERT
00000e12: JUMPDEST
00000e13: POP
00000e14: POP
00000e15: PUSH1 0x08
00000e17: DUP1
00000e18: SLOAD
00000e19: PUSH1 0xff
00000e1b: NOT
00000e1c: AND
00000e1d: PUSH1 0x01
00000e1f: OR
00000e20: SWAP1
00000e21: SSTORE
00000e22: PUSH1 0x09
00000e24: SSTORE
00000e25: JUMP
00000e26: JUMPDEST
00000e27: PUSH1 0x09
00000e29: SLOAD
00000e2a: DUP2
00000e2b: JUMP
00000e2c: JUMPDEST
00000e2d: PUSH1 0x04
00000e2f: CALLDATALOAD
00000e30: PUSH1 0x24
00000e32: CALLDATALOAD
00000e33: DUP1
00000e34: DUP3
00000e35: CALLER
00000e36: PUSH1 0x01
00000e38: PUSH1 0xa0
00000e3a: PUSH1 0x02
00000e3c: EXP
00000e3d: SUB
00000e3e: AND
00000e3f: PUSH1 0x00
00000e41: DUP1
00000e42: CALLDATALOAD
00000e43: PUSH1 0x01
00000e45: PUSH1 0xe0
00000e47: PUSH1 0x02
00000e49: EXP
00000e4a: SUB
00000e4b: NOT
00000e4c: AND
00000e4d: SWAP1
00000e4e: CALLVALUE
00000e4f: SWAP1
00000e50: CALLDATASIZE
00000e51: PUSH1 0x40
00000e53: MLOAD
00000e54: DUP4
00000e55: DUP2
00000e56: MSTORE
00000e57: PUSH1 0x40
00000e59: PUSH1 0x20
00000e5b: DUP3
00000e5c: ADD
00000e5d: DUP2
00000e5e: DUP2
00000e5f: MSTORE
00000e60: SWAP1
00000e61: DUP3
00000e62: ADD
00000e63: DUP4
00000e64: SWAP1
00000e65: MSTORE
00000e66: PUSH1 0x60
00000e68: DUP3
00000e69: ADD
00000e6a: DUP5
00000e6b: DUP5
00000e6c: DUP1
00000e6d: DUP3
00000e6e: DUP5
00000e6f: CALLDATACOPY
00000e70: DUP3
00000e71: ADD
00000e72: SWAP2
00000e73: POP
00000e74: POP
00000e75: SWAP5
00000e76: POP
00000e77: POP
00000e78: POP
00000e79: POP
00000e7a: POP
00000e7b: PUSH1 0x40
00000e7d: MLOAD
00000e7e: DUP1
00000e7f: SWAP2
00000e80: SUB
00000e81: SWAP1
00000e82: LOG4
00000e83: PUSH1 0x08
00000e85: SLOAD
00000e86: PUSH1 0xff
00000e88: AND
00000e89: ISZERO
00000e8a: PUSH2 0x0e92
00000e8d: JUMPI
00000e8e: PUSH1 0x00
00000e90: DUP1
00000e91: REVERT
00000e92: JUMPDEST
00000e93: PUSH2 0x0e9a
00000e96: PUSH2 0x0be8
00000e99: JUMP
00000e9a: JUMPDEST
00000e9b: DUP4
00000e9c: GT
00000e9d: ISZERO
00000e9e: PUSH2 0x0eaf
00000ea1: JUMPI
00000ea2: PUSH2 0x0eaa
00000ea5: DUP4
00000ea6: PUSH2 0x10fe
00000ea9: JUMP
00000eaa: JUMPDEST
00000eab: PUSH2 0x04f1
00000eae: JUMP
00000eaf: JUMPDEST
00000eb0: PUSH2 0x04f1
00000eb3: DUP4
00000eb4: PUSH2 0x1188
00000eb7: JUMP
00000eb8: JUMPDEST
00000eb9: PUSH1 0x04
00000ebb: CALLDATALOAD
00000ebc: PUSH1 0x24
00000ebe: CALLDATALOAD
00000ebf: DUP1
00000ec0: DUP3
00000ec1: CALLER
00000ec2: PUSH1 0x01
00000ec4: PUSH1 0xa0
00000ec6: PUSH1 0x02
00000ec8: EXP
00000ec9: SUB
00000eca: AND
00000ecb: PUSH1 0x00
00000ecd: DUP1
00000ece: CALLDATALOAD
00000ecf: PUSH1 0x01
00000ed1: PUSH1 0xe0
00000ed3: PUSH1 0x02
00000ed5: EXP
00000ed6: SUB
00000ed7: NOT
00000ed8: AND
00000ed9: SWAP1
00000eda: CALLVALUE
00000edb: SWAP1
00000edc: CALLDATASIZE
00000edd: PUSH1 0x40
00000edf: MLOAD
00000ee0: DUP4
00000ee1: DUP2
00000ee2: MSTORE
00000ee3: PUSH1 0x40
00000ee5: PUSH1 0x20
00000ee7: DUP3
00000ee8: ADD
00000ee9: DUP2
00000eea: DUP2
00000eeb: MSTORE
00000eec: SWAP1
00000eed: DUP3
00000eee: ADD
00000eef: DUP4
00000ef0: SWAP1
00000ef1: MSTORE
00000ef2: PUSH1 0x60
00000ef4: DUP3
00000ef5: ADD
00000ef6: DUP5
00000ef7: DUP5
00000ef8: DUP1
00000ef9: DUP3
00000efa: DUP5
00000efb: CALLDATACOPY
00000efc: DUP3
00000efd: ADD
00000efe: SWAP2
00000eff: POP
00000f00: POP
00000f01: SWAP5
00000f02: POP
00000f03: POP
00000f04: POP
00000f05: POP
00000f06: POP
00000f07: PUSH1 0x40
00000f09: MLOAD
00000f0a: DUP1
00000f0b: SWAP2
00000f0c: SUB
00000f0d: SWAP1
00000f0e: LOG4
00000f0f: PUSH1 0x08
00000f11: SLOAD
00000f12: PUSH1 0xff
00000f14: AND
00000f15: ISZERO
00000f16: PUSH2 0x0f1e
00000f19: JUMPI
00000f1a: PUSH1 0x00
00000f1c: DUP1
00000f1d: REVERT
00000f1e: JUMPDEST
00000f1f: PUSH2 0x04f1
00000f22: DUP4
00000f23: PUSH2 0x1282
00000f26: JUMP
00000f27: JUMPDEST
00000f28: PUSH1 0x00
00000f2a: SLOAD
00000f2b: PUSH1 0x01
00000f2d: PUSH1 0xa0
00000f2f: PUSH1 0x02
00000f31: EXP
00000f32: SUB
00000f33: AND
00000f34: DUP2
00000f35: JUMP
00000f36: JUMPDEST
00000f37: PUSH1 0x00
00000f39: PUSH2 0x0a87
00000f3c: DUP3
00000f3d: PUSH2 0x0a82
00000f40: PUSH2 0x0f47
00000f43: PUSH2 0x0ae8
00000f46: JUMP
00000f47: JUMPDEST
00000f48: PUSH1 0x07
00000f4a: SLOAD
00000f4b: PUSH2 0x10b2
00000f4e: JUMP
00000f4f: JUMPDEST
00000f50: PUSH1 0x00
00000f52: DUP2
00000f53: DUP4
00000f54: GT
00000f55: ISZERO
00000f56: PUSH2 0x0f5f
00000f59: JUMPI
00000f5a: DUP2
00000f5b: PUSH2 0x0f61
00000f5e: JUMP
00000f5f: JUMPDEST
00000f60: DUP3
00000f61: JUMPDEST
00000f62: SWAP4
00000f63: SWAP3
00000f64: POP
00000f65: POP
00000f66: POP
00000f67: JUMP
00000f68: JUMPDEST
00000f69: PUSH1 0x00
00000f6b: ADDRESS
00000f6c: PUSH1 0x01
00000f6e: PUSH1 0xa0
00000f70: PUSH1 0x02
00000f72: EXP
00000f73: SUB
00000f74: AND
00000f75: DUP4
00000f76: PUSH1 0x01
00000f78: PUSH1 0xa0
00000f7a: PUSH1 0x02
00000f7c: EXP
00000f7d: SUB
00000f7e: AND
00000f7f: EQ
00000f80: ISZERO
00000f81: PUSH2 0x0f8c
00000f84: JUMPI
00000f85: POP
00000f86: PUSH1 0x01
00000f88: PUSH2 0x0a87
00000f8b: JUMP
00000f8c: JUMPDEST
00000f8d: PUSH1 0x01
00000f8f: SLOAD
00000f90: PUSH1 0x01
00000f92: PUSH1 0xa0
00000f94: PUSH1 0x02
00000f96: EXP
00000f97: SUB
00000f98: DUP5
00000f99: DUP2
00000f9a: AND
00000f9b: SWAP2
00000f9c: AND
00000f9d: EQ
00000f9e: ISZERO
00000f9f: PUSH2 0x0faa
00000fa2: JUMPI
00000fa3: POP
00000fa4: PUSH1 0x01
00000fa6: PUSH2 0x0a87
00000fa9: JUMP
00000faa: JUMPDEST
00000fab: PUSH1 0x00
00000fad: SLOAD
00000fae: PUSH1 0x01
00000fb0: PUSH1 0xa0
00000fb2: PUSH1 0x02
00000fb4: EXP
00000fb5: SUB
00000fb6: AND
00000fb7: ISZERO
00000fb8: ISZERO
00000fb9: PUSH2 0x0fc4
00000fbc: JUMPI
00000fbd: POP
00000fbe: PUSH1 0x00
00000fc0: PUSH2 0x0a87
00000fc3: JUMP
00000fc4: JUMPDEST
00000fc5: PUSH1 0x00
00000fc7: DUP1
00000fc8: SLOAD
00000fc9: PUSH1 0x01
00000fcb: PUSH1 0xa0
00000fcd: PUSH1 0x02
00000fcf: EXP
00000fd0: SUB
00000fd1: AND
00000fd2: SWAP1
00000fd3: PUSH4 0xb7009613
00000fd8: SWAP1
00000fd9: DUP6
00000fda: SWAP1
00000fdb: ADDRESS
00000fdc: SWAP1
00000fdd: DUP7
00000fde: SWAP1
00000fdf: PUSH1 0x40
00000fe1: MLOAD
00000fe2: PUSH1 0x20
00000fe4: ADD
00000fe5: MSTORE
00000fe6: PUSH1 0x40
00000fe8: MLOAD
00000fe9: PUSH1 0xe0
00000feb: PUSH1 0x02
00000fed: EXP
00000fee: PUSH4 0xffffffff
00000ff3: DUP7
00000ff4: AND
00000ff5: MUL
00000ff6: DUP2
00000ff7: MSTORE
00000ff8: PUSH1 0x01
00000ffa: PUSH1 0xa0
00000ffc: PUSH1 0x02
00000ffe: EXP
00000fff: SUB
00001000: SWAP4
00001001: DUP5
00001002: AND
00001003: PUSH1 0x04
00001005: DUP3
00001006: ADD
00001007: MSTORE
00001008: SWAP2
00001009: SWAP1
0000100a: SWAP3
0000100b: AND
0000100c: PUSH1 0x24
0000100e: DUP3
0000100f: ADD
00001010: MSTORE
00001011: PUSH1 0x01
00001013: PUSH1 0xe0
00001015: PUSH1 0x02
00001017: EXP
00001018: SUB
00001019: NOT
0000101a: SWAP1
0000101b: SWAP2
0000101c: AND
0000101d: PUSH1 0x44
0000101f: DUP3
00001020: ADD
00001021: MSTORE
00001022: PUSH1 0x64
00001024: ADD
00001025: PUSH1 0x20
00001027: PUSH1 0x40
00001029: MLOAD
0000102a: DUP1
0000102b: DUP4
0000102c: SUB
0000102d: DUP2
0000102e: PUSH1 0x00
00001030: DUP8
00001031: DUP1
00001032: EXTCODESIZE
00001033: ISZERO
00001034: ISZERO
00001035: PUSH2 0x103d
00001038: JUMPI
00001039: PUSH1 0x00
0000103b: DUP1
0000103c: REVERT
0000103d: JUMPDEST
0000103e: PUSH2 0x02c6
00001041: GAS
00001042: SUB
00001043: CALL
00001044: ISZERO
00001045: ISZERO
00001046: PUSH2 0x104e
00001049: JUMPI
0000104a: PUSH1 0x00
0000104c: DUP1
0000104d: REVERT
0000104e: JUMPDEST
0000104f: POP
00001050: POP
00001051: POP
00001052: PUSH1 0x40
00001054: MLOAD
00001055: DUP1
00001056: MLOAD
00001057: SWAP1
00001058: POP
00001059: SWAP1
0000105a: POP
0000105b: PUSH2 0x0a87
0000105e: JUMP
0000105f: JUMPDEST
00001060: PUSH1 0x00
00001062: PUSH12 0x033b2e3c9fd0803ce8000000
0000106f: PUSH2 0x1091
00001072: PUSH2 0x107b
00001075: DUP6
00001076: DUP6
00001077: PUSH2 0x1364
0000107a: JUMP
0000107b: JUMPDEST
0000107c: PUSH1 0x02
0000107e: PUSH12 0x033b2e3c9fd0803ce8000000
0000108b: JUMPDEST
0000108c: DIV
0000108d: PUSH2 0x138c
00001090: JUMP
00001091: JUMPDEST
00001092: DUP2
00001093: ISZERO
00001094: ISZERO
00001095: PUSH2 0x109a
00001098: JUMPI
00001099: INVALID
0000109a: JUMPDEST
0000109b: DIV
0000109c: SWAP4
0000109d: SWAP3
0000109e: POP
0000109f: POP
000010a0: POP
000010a1: JUMP
000010a2: JUMPDEST
000010a3: DUP1
000010a4: DUP3
000010a5: SUB
000010a6: DUP3
000010a7: DUP2
000010a8: GT
000010a9: ISZERO
000010aa: PUSH2 0x0a87
000010ad: JUMPI
000010ae: PUSH1 0x00
000010b0: DUP1
000010b1: REVERT
000010b2: JUMPDEST
000010b3: PUSH1 0x00
000010b5: PUSH8 0x0de0b6b3a7640000
000010be: PUSH2 0x1091
000010c1: PUSH2 0x10ca
000010c4: DUP6
000010c5: DUP6
000010c6: PUSH2 0x1364
000010c9: JUMP
000010ca: JUMPDEST
000010cb: PUSH1 0x02
000010cd: PUSH8 0x0de0b6b3a7640000
000010d6: PUSH2 0x108b
000010d9: JUMP
000010da: JUMPDEST
000010db: PUSH1 0x00
000010dd: DUP2
000010de: PUSH2 0x1091
000010e1: PUSH2 0x10f6
000010e4: DUP6
000010e5: PUSH12 0x033b2e3c9fd0803ce8000000
000010f2: PUSH2 0x1364
000010f5: JUMP
000010f6: JUMPDEST
000010f7: PUSH1 0x02
000010f9: DUP6
000010fa: PUSH2 0x108b
000010fd: JUMP
000010fe: JUMPDEST
000010ff: PUSH1 0x04
00001101: SLOAD
00001102: PUSH1 0x01
00001104: PUSH1 0xa0
00001106: PUSH1 0x02
00001108: EXP
00001109: SUB
0000110a: AND
0000110b: PUSH4 0xa0712d68
00001110: PUSH2 0x1120
00001113: DUP4
00001114: PUSH2 0x111b
00001117: PUSH2 0x0be8
0000111a: JUMP
0000111b: JUMPDEST
0000111c: PUSH2 0x10a2
0000111f: JUMP
00001120: JUMPDEST
00001121: PUSH1 0x40
00001123: MLOAD
00001124: PUSH1 0xe0
00001126: PUSH1 0x02
00001128: EXP
00001129: PUSH4 0xffffffff
0000112e: DUP5
0000112f: AND
00001130: MUL
00001131: DUP2
00001132: MSTORE
00001133: PUSH1 0x04
00001135: DUP2
00001136: ADD
00001137: SWAP2
00001138: SWAP1
00001139: SWAP2
0000113a: MSTORE
0000113b: PUSH1 0x24
0000113d: ADD
0000113e: PUSH1 0x00
00001140: PUSH1 0x40
00001142: MLOAD
00001143: DUP1
00001144: DUP4
00001145: SUB
00001146: DUP2
00001147: PUSH1 0x00
00001149: DUP8
0000114a: DUP1
0000114b: EXTCODESIZE
0000114c: ISZERO
0000114d: ISZERO
0000114e: PUSH2 0x1156
00001151: JUMPI
00001152: PUSH1 0x00
00001154: DUP1
00001155: REVERT
00001156: JUMPDEST
00001157: PUSH2 0x02c6
0000115a: GAS
0000115b: SUB
0000115c: CALL
0000115d: ISZERO
0000115e: ISZERO
0000115f: PUSH2 0x1167
00001162: JUMPI
00001163: PUSH1 0x00
00001165: DUP1
00001166: REVERT
00001167: JUMPDEST
00001168: POP
00001169: POP
0000116a: POP
0000116b: PUSH2 0x1173
0000116e: DUP2
0000116f: PUSH2 0x1188
00001172: JUMP
00001173: JUMPDEST
00001174: PUSH2 0x117b
00001177: PUSH2 0x0a8d
0000117a: JUMP
0000117b: JUMPDEST
0000117c: ISZERO
0000117d: PUSH2 0x1185
00001180: JUMPI
00001181: PUSH1 0x00
00001183: DUP1
00001184: REVERT
00001185: JUMPDEST
00001186: POP
00001187: JUMP
00001188: JUMPDEST
00001189: PUSH1 0x00
0000118b: PUSH2 0x1193
0000118e: DUP3
0000118f: PUSH2 0x0f36
00001192: JUMP
00001193: JUMPDEST
00001194: GT
00001195: PUSH2 0x119d
00001198: JUMPI
00001199: PUSH1 0x00
0000119b: DUP1
0000119c: REVERT
0000119d: JUMPDEST
0000119e: PUSH1 0x04
000011a0: SLOAD
000011a1: PUSH1 0x01
000011a3: PUSH1 0xa0
000011a5: PUSH1 0x02
000011a7: EXP
000011a8: SUB
000011a9: AND
000011aa: PUSH4 0xb753a98c
000011af: CALLER
000011b0: DUP4
000011b1: PUSH1 0x40
000011b3: MLOAD
000011b4: PUSH1 0xe0
000011b6: PUSH1 0x02
000011b8: EXP
000011b9: PUSH4 0xffffffff
000011be: DUP6
000011bf: AND
000011c0: MUL
000011c1: DUP2
000011c2: MSTORE
000011c3: PUSH1 0x01
000011c5: PUSH1 0xa0
000011c7: PUSH1 0x02
000011c9: EXP
000011ca: SUB
000011cb: SWAP1
000011cc: SWAP3
000011cd: AND
000011ce: PUSH1 0x04
000011d0: DUP4
000011d1: ADD
000011d2: MSTORE
000011d3: PUSH1 0x24
000011d5: DUP3
000011d6: ADD
000011d7: MSTORE
000011d8: PUSH1 0x44
000011da: ADD
000011db: PUSH1 0x00
000011dd: PUSH1 0x40
000011df: MLOAD
000011e0: DUP1
000011e1: DUP4
000011e2: SUB
000011e3: DUP2
000011e4: PUSH1 0x00
000011e6: DUP8
000011e7: DUP1
000011e8: EXTCODESIZE
000011e9: ISZERO
000011ea: ISZERO
000011eb: PUSH2 0x11f3
000011ee: JUMPI
000011ef: PUSH1 0x00
000011f1: DUP1
000011f2: REVERT
000011f3: JUMPDEST
000011f4: PUSH2 0x02c6
000011f7: GAS
000011f8: SUB
000011f9: CALL
000011fa: ISZERO
000011fb: ISZERO
000011fc: PUSH2 0x1204
000011ff: JUMPI
00001200: PUSH1 0x00
00001202: DUP1
00001203: REVERT
00001204: JUMPDEST
00001205: POP
00001206: POP
00001207: PUSH1 0x02
00001209: SLOAD
0000120a: PUSH1 0x01
0000120c: PUSH1 0xa0
0000120e: PUSH1 0x02
00001210: EXP
00001211: SUB
00001212: AND
00001213: SWAP1
00001214: POP
00001215: PUSH4 0xf2d5d56b
0000121a: CALLER
0000121b: PUSH2 0x1223
0000121e: DUP5
0000121f: PUSH2 0x0f36
00001222: JUMP
00001223: JUMPDEST
00001224: PUSH1 0x40
00001226: MLOAD
00001227: PUSH1 0xe0
00001229: PUSH1 0x02
0000122b: EXP
0000122c: PUSH4 0xffffffff
00001231: DUP6
00001232: AND
00001233: MUL
00001234: DUP2
00001235: MSTORE
00001236: PUSH1 0x01
00001238: PUSH1 0xa0
0000123a: PUSH1 0x02
0000123c: EXP
0000123d: SUB
0000123e: SWAP1
0000123f: SWAP3
00001240: AND
00001241: PUSH1 0x04
00001243: DUP4
00001244: ADD
00001245: MSTORE
00001246: PUSH1 0x24
00001248: DUP3
00001249: ADD
0000124a: MSTORE
0000124b: PUSH1 0x44
0000124d: ADD
0000124e: PUSH1 0x00
00001250: PUSH1 0x40
00001252: MLOAD
00001253: DUP1
00001254: DUP4
00001255: SUB
00001256: DUP2
00001257: PUSH1 0x00
00001259: DUP8
0000125a: DUP1
0000125b: EXTCODESIZE
0000125c: ISZERO
0000125d: ISZERO
0000125e: PUSH2 0x1266
00001261: JUMPI
00001262: PUSH1 0x00
00001264: DUP1
00001265: REVERT
00001266: JUMPDEST
00001267: PUSH2 0x02c6
0000126a: GAS
0000126b: SUB
0000126c: CALL
0000126d: ISZERO
0000126e: ISZERO
0000126f: PUSH2 0x1277
00001272: JUMPI
00001273: PUSH1 0x00
00001275: DUP1
00001276: REVERT
00001277: JUMPDEST
00001278: POP
00001279: POP
0000127a: POP
0000127b: PUSH2 0x1185
0000127e: PUSH2 0x03a4
00001281: JUMP
00001282: JUMPDEST
00001283: PUSH2 0x128a
00001286: PUSH2 0x03a4
00001289: JUMP
0000128a: JUMPDEST
0000128b: PUSH1 0x02
0000128d: SLOAD
0000128e: PUSH1 0x01
00001290: PUSH1 0xa0
00001292: PUSH1 0x02
00001294: EXP
00001295: SUB
00001296: AND
00001297: PUSH4 0xb753a98c
0000129c: CALLER
0000129d: PUSH2 0x12a5
000012a0: DUP5
000012a1: PUSH2 0x0a55
000012a4: JUMP
000012a5: JUMPDEST
000012a6: PUSH1 0x40
000012a8: MLOAD
000012a9: PUSH1 0xe0
000012ab: PUSH1 0x02
000012ad: EXP
000012ae: PUSH4 0xffffffff
000012b3: DUP6
000012b4: AND
000012b5: MUL
000012b6: DUP2
000012b7: MSTORE
000012b8: PUSH1 0x01
000012ba: PUSH1 0xa0
000012bc: PUSH1 0x02
000012be: EXP
000012bf: SUB
000012c0: SWAP1
000012c1: SWAP3
000012c2: AND
000012c3: PUSH1 0x04
000012c5: DUP4
000012c6: ADD
000012c7: MSTORE
000012c8: PUSH1 0x24
000012ca: DUP3
000012cb: ADD
000012cc: MSTORE
000012cd: PUSH1 0x44
000012cf: ADD
000012d0: PUSH1 0x00
000012d2: PUSH1 0x40
000012d4: MLOAD
000012d5: DUP1
000012d6: DUP4
000012d7: SUB
000012d8: DUP2
000012d9: PUSH1 0x00
000012db: DUP8
000012dc: DUP1
000012dd: EXTCODESIZE
000012de: ISZERO
000012df: ISZERO
000012e0: PUSH2 0x12e8
000012e3: JUMPI
000012e4: PUSH1 0x00
000012e6: DUP1
000012e7: REVERT
000012e8: JUMPDEST
000012e9: PUSH2 0x02c6
000012ec: GAS
000012ed: SUB
000012ee: CALL
000012ef: ISZERO
000012f0: ISZERO
000012f1: PUSH2 0x12f9
000012f4: JUMPI
000012f5: PUSH1 0x00
000012f7: DUP1
000012f8: REVERT
000012f9: JUMPDEST
000012fa: POP
000012fb: POP
000012fc: PUSH1 0x04
000012fe: SLOAD
000012ff: PUSH1 0x01
00001301: PUSH1 0xa0
00001303: PUSH1 0x02
00001305: EXP
00001306: SUB
00001307: AND
00001308: SWAP1
00001309: POP
0000130a: PUSH4 0x9dc29fac
0000130f: CALLER
00001310: DUP4
00001311: PUSH1 0x40
00001313: MLOAD
00001314: PUSH1 0xe0
00001316: PUSH1 0x02
00001318: EXP
00001319: PUSH4 0xffffffff
0000131e: DUP6
0000131f: AND
00001320: MUL
00001321: DUP2
00001322: MSTORE
00001323: PUSH1 0x01
00001325: PUSH1 0xa0
00001327: PUSH1 0x02
00001329: EXP
0000132a: SUB
0000132b: SWAP1
0000132c: SWAP3
0000132d: AND
0000132e: PUSH1 0x04
00001330: DUP4
00001331: ADD
00001332: MSTORE
00001333: PUSH1 0x24
00001335: DUP3
00001336: ADD
00001337: MSTORE
00001338: PUSH1 0x44
0000133a: ADD
0000133b: PUSH1 0x00
0000133d: PUSH1 0x40
0000133f: MLOAD
00001340: DUP1
00001341: DUP4
00001342: SUB
00001343: DUP2
00001344: PUSH1 0x00
00001346: DUP8
00001347: DUP1
00001348: EXTCODESIZE
00001349: ISZERO
0000134a: ISZERO
0000134b: PUSH2 0x1353
0000134e: JUMPI
0000134f: PUSH1 0x00
00001351: DUP1
00001352: REVERT
00001353: JUMPDEST
00001354: PUSH2 0x02c6
00001357: GAS
00001358: SUB
00001359: CALL
0000135a: ISZERO
0000135b: ISZERO
0000135c: PUSH2 0x0d85
0000135f: JUMPI
00001360: PUSH1 0x00
00001362: DUP1
00001363: REVERT
00001364: JUMPDEST
00001365: PUSH1 0x00
00001367: DUP2
00001368: ISZERO
00001369: DUP1
0000136a: PUSH2 0x1381
0000136d: JUMPI
0000136e: POP
0000136f: POP
00001370: DUP1
00001371: DUP3
00001372: MUL
00001373: DUP3
00001374: DUP3
00001375: DUP3
00001376: DUP2
00001377: ISZERO
00001378: ISZERO
00001379: PUSH2 0x137e
0000137c: JUMPI
0000137d: INVALID
0000137e: JUMPDEST
0000137f: DIV
00001380: EQ
00001381: JUMPDEST
00001382: ISZERO
00001383: ISZERO
00001384: PUSH2 0x0a87
00001387: JUMPI
00001388: PUSH1 0x00
0000138a: DUP1
0000138b: REVERT
0000138c: JUMPDEST
0000138d: DUP1
0000138e: DUP3
0000138f: ADD
00001390: DUP3
00001391: DUP2
00001392: LT
00001393: ISZERO
00001394: PUSH2 0x0a87
00001397: JUMPI
00001398: PUSH1 0x00
0000139a: DUP1
0000139b: REVERT
0000139c: STOP
0000139d: LOG1
0000139e: PUSH6 0x627a7a723058
000013a5: KECCAK256
000013a6: SAR
000013a7: TLOAD
000013a8: UNKNOWN(0xEF)
000013a9: JUMP
000013aa: UNKNOWN(0xD5)
000013ab: PC
000013ac: UNKNOWN(0xB5)
000013ad: UNKNOWN(0xC5)
000013ae: REVERT
000013af: UNKNOWN(0xEB)
000013b0: JUMP
000013b1: EXP
000013b2: STOP
000013b3: GASLIMIT
000013b4: UNKNOWN(0xC5)
000013b5: UNKNOWN(0xBF)
000013b6: SWAP1
000013b7: INVALID
000013b8: POP
000013b9: KECCAK256
000013ba: MSTORE8
000013bb: PUSH24

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high access_control codex Unprotected tap assignment allows attacker to seize liquidation/tax flows 85 no
view
evidence_json
{
    "evidence": "`SaiTub.turn(address tap_)` lacks `auth` and only checks `tap == 0`, allowing anyone to set it once.",
    "locations": [
        "contracts/Contract.sol"
    ],
    "recommendation": "Add `auth` to `turn()` and/or restrict it to the owner/authority. Consider an initialization pattern that sets `tap` in the constructor and prevents external calls entirely.",
    "exploit_scenario": "Any address can call `turn()` first and set `tap` to an attacker-controlled contract. This attacker then receives minted `sai`/`sin` during `drip()` and `bite()`, effectively taking all future protocol flows and influencing liquidations."
}
high other detector Untrusted CALL target/value reachable 60 yes yes
view
trace_id: 0x69998046edb62d486686bbc9314c7afbc030436ffa7fc1aaba89ff919e47adb5
call_targets: 0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359, 0xbda109309f9fafa6dd6a9cb9f1df4085b27ee8ef
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x69998046edb62d486686bbc9314c7afbc030436ffa7fc1aaba89ff919e47adb5",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359",
        "0xbda109309f9fafa6dd6a9cb9f1df4085b27ee8ef"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x0434fe0b",
            "selector": "0x0434fe0b",
            "calldata_variants": [
                "0x0434fe0b",
                "0x0434fe0b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x071bafb5",
            "selector": "0x071bafb5",
            "calldata_variants": [
                "0x071bafb5",
                "0x071bafb50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0f8a771e",
            "selector": "0x0f8a771e",
            "calldata_variants": [
                "0x0f8a771e",
                "0x0f8a771e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13af4035",
            "selector": "0x13af4035",
            "calldata_variants": [
                "0x13af4035",
                "0x13af40350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1406b921",
            "selector": "0x1406b921",
            "calldata_variants": [
                "0x1406b921",
                "0x1406b9210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x17dc92f5",
            "selector": "0x17dc92f5",
            "calldata_variants": [
                "0x17dc92f5",
                "0x17dc92f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2da8d3e6",
            "selector": "0x2da8d3e6",
            "calldata_variants": [
                "0x2da8d3e6",
                "0x2da8d3e60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34e70cc2",
            "selector": "0x34e70cc2",
            "calldata_variants": [
                "0x34e70cc2",
                "0x34e70cc20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1157,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1250,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1615,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 17,
    "guards_detected": [],
    "untrusted_call_count": 17
}
high other detector ETH value transfer possible 55 yes yes
view
trace_id: 0x69998046edb62d486686bbc9314c7afbc030436ffa7fc1aaba89ff919e47adb5
call_targets: 0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359, 0xbda109309f9fafa6dd6a9cb9f1df4085b27ee8ef
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x69998046edb62d486686bbc9314c7afbc030436ffa7fc1aaba89ff919e47adb5",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359",
        "0xbda109309f9fafa6dd6a9cb9f1df4085b27ee8ef"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x0434fe0b",
            "selector": "0x0434fe0b",
            "calldata_variants": [
                "0x0434fe0b",
                "0x0434fe0b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x071bafb5",
            "selector": "0x071bafb5",
            "calldata_variants": [
                "0x071bafb5",
                "0x071bafb50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0f8a771e",
            "selector": "0x0f8a771e",
            "calldata_variants": [
                "0x0f8a771e",
                "0x0f8a771e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13af4035",
            "selector": "0x13af4035",
            "calldata_variants": [
                "0x13af4035",
                "0x13af40350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1406b921",
            "selector": "0x1406b921",
            "calldata_variants": [
                "0x1406b921",
                "0x1406b9210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x17dc92f5",
            "selector": "0x17dc92f5",
            "calldata_variants": [
                "0x17dc92f5",
                "0x17dc92f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2da8d3e6",
            "selector": "0x2da8d3e6",
            "calldata_variants": [
                "0x2da8d3e6",
                "0x2da8d3e60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34e70cc2",
            "selector": "0x34e70cc2",
            "calldata_variants": [
                "0x34e70cc2",
                "0x34e70cc20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1157,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1250,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1615,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 17,
    "guards_detected": []
}
medium reentrancy codex Reentrancy window on collateral exit can drain gem before burning SKR 75 no
view
evidence_json
{
    "evidence": "`SaiTub.exit(uint wad)` performs `gem.transfer` before `skr.burn`, enabling reentrancy if `gem` is malicious.",
    "locations": [
        "contracts/Contract.sol"
    ],
    "recommendation": "Follow checks-effects-interactions: burn SKR before transferring `gem`, or add a reentrancy guard. Alternatively restrict `gem` to a non-callback ERC20 implementation.",
    "exploit_scenario": "A malicious `gem` token can reenter `exit()` during `gem.transfer(...)` before `skr.burn(...)` executes. The attacker can call `exit()` again using the same SKR balance (not yet burned) to withdraw additional `gem`, draining collateral."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 20
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 17
}