f58f1e0d-d765-4f42-8774-1b1e4abc5a43
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
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: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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | access_control | codex | Unprotected tap assignment allows attacker to seize liquidation/tax flows | 85 | no | — |
viewevidence_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 17
}
|