019ba8f8-3f30-70a7-ac13-16bb4d3c6474
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 |
|---|---|---|---|---|
| 33690 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 33691 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 33692 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 33693 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 33694 | capability.graph | complete | 1 / 3 | 3 months ago |
| 33695 | detector.run | complete | 1 / 3 | 3 months ago |
| 33696 | validation.fork | complete | 1 / 3 | 3 months ago |
| 33816 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Found a reentrancy-based order overfill risk via external AccountLevels calls and an insecure test AccountLevels implementation that allows anyone to self-assign fee rebates if configured.","findings":[{"severity":"medium","category":"reentrancy","title":"Reentrancy via AccountLevels allows order overfill before orderFills update","exploit_scenario":"If accountLevelsAddr points to a malicious or compromised contract, its accountLevel() can reenter DecentrEx.trade() before the outer call updates orderFills. Because each trade checks orderFills before it is incremented, multiple reentrant fills can pass the limit check and push orderFills above amountGet, forcing the maker to trade more than intended at the quoted price.","recommendation":"Avoid external calls before updating order state: update orderFills before tradeBalances or add a reentrancy guard around trade/tradeBalances. Alternatively, restrict accountLevelsAddr to a trusted, non-reentrant contract and consider using a pull model or staticcall semantics when available.","evidence":"trade() checks orderFills then calls tradeBalances, but only increments orderFills after tradeBalances returns; tradeBalances makes an external call to accountLevelsAddr.accountLevel(user).","locations":["contracts/Contract.sol:252","contracts/Contract.sol:260","contracts/Contract.sol:261","contracts/Contract.sol:265","contracts/Contract.sol:269"]},{"severity":"low","category":"access_control","title":"AccountLevelsTest allows anyone to set fee tier if used in production","exploit_scenario":"If the admin configures accountLevelsAddr to AccountLevelsTest (or a similarly unrestricted contract), any user can call setAccountLevel() to assign themselves level 1 or 2, receiving rebates or full taker-fee refunds and effectively bypassing fees, draining feeAccount revenue.","recommendation":"Do not deploy or point to AccountLevelsTest in production; restrict setAccountLevel to an authorized role (e.g., admin) in any production AccountLevels implementation.","evidence":"AccountLevelsTest.setAccountLevel has no access control, and DecentrEx allows admin to set accountLevelsAddr to any contract.","locations":["contracts/Contract.sol:139","contracts/Contract.sol:142","contracts/Contract.sol:186","contracts/Contract.sol:188"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-u0wposb3
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: xhigh
reasoning summaries: auto
session id: 019ba8f9-08dd-75a2-80a1-8901bb2adcfa
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE.txt**
exec
/bin/bash -lc ls in /tmp/codex-u0wposb3 succeeded in 8ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'rg --files' in /tmp/codex-u0wposb3 succeeded in 43ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts/Contract.sol
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-u0wposb3 succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.8;
contract SafeMath {
function safeMul(uint a, uint b) internal returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function safeSub(uint a, uint b) internal returns (uint) {
assert(b <= a);
return a - b;
}
thinking
**Analyzing reentrancy and signature vulnerabilities**
I’m carefully auditing this Solidity 0.4.8 DEX contract for classic reentrancy risks, signature validation issues, and external call patterns. There’s a nuanced reentrancy concern via the external `accountLevels` call during trades, potentially allowing order overfills before state updates finalize, which could let a malicious `accountLevels` contract exploit admin-controlled settings. I’m also looking into withdrawal patterns, ERC20 token interactions, known ERC20 race conditions, and hashing/signature schemes to weigh possible vulnerabilities or economic exploits. The overall picture shows some risks tied to admin privileges and token specifics, but fundamental security mechanisms like safe math and balance checks appear mostly intact.
thinking
**Examining fee settings and external call risks**
I’m reviewing fee adjustment constraints, signature and nonce handling, and reentrancy risks tied to the admin-configured external accountLevels contract. I’m also considering attack scenarios involving token transfers, short address issues, and potential exploits from malicious or misconfigured contracts that interact via external calls during trades or withdrawals. The details highlight subtle risks mostly related to admin privileges and external dependencies rather than widespread user exploits.
thinking
**Confirming reentrancy overfill vulnerability and signature checks**
I’m validating that the main issue is the reentrancy via the external accountLevels call allowing multiple fills before orderFills update, enabling overfill beyond the order’s amountGet limit. This creates a medium-severity vulnerability as makers can be forced to trade more than intended at the same price. I’m also verifying signature construction and nonce usage, finding them consistent and well-checked, while noting minor config risks like access control gaps in test contracts and known ERC20 approve race conditions. This sets a solid basis for detailed findings.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-u0wposb3 succeeded in 7ms:
1 pragma solidity ^0.4.8;
2
3 contract SafeMath {
4 function safeMul(uint a, uint b) internal returns (uint) {
5 uint c = a * b;
6 assert(a == 0 || c / a == b);
7 return c;
8 }
9
10 function safeSub(uint a, uint b) internal returns (uint) {
11 assert(b <= a);
12 return a - b;
13 }
14
15 function safeAdd(uint a, uint b) internal returns (uint) {
16 uint c = a + b;
17 assert(c>=a && c>=b);
18 return c;
19 }
20
thinking
**Summarizing key audit findings**
I’m outlining two main issues: a medium-severity reentrancy risk allowing order overfill through external calls before order fills update, and a low-severity access control problem where the test AccountLevels contract permits anyone to set their account level, potentially enabling fee avoidance if misconfigured in production. I’ll craft precise JSON output detailing severity, category, scenarios, recommendations, and evidence referencing code lines and file paths.
codex
{"no_findings":false,"summary":"Found a reentrancy-based order overfill risk via external AccountLevels calls and an insecure test AccountLevels implementation that allows anyone to self-assign fee rebates if configured.","findings":[{"severity":"medium","category":"reentrancy","title":"Reentrancy via AccountLevels allows order overfill before orderFills update","exploit_scenario":"If accountLevelsAddr points to a malicious or compromised contract, its accountLevel() can reenter DecentrEx.trade() before the outer call updates orderFills. Because each trade checks orderFills before it is incremented, multiple reentrant fills can pass the limit check and push orderFills above amountGet, forcing the maker to trade more than intended at the quoted price.","recommendation":"Avoid external calls before updating order state: update orderFills before tradeBalances or add a reentrancy guard around trade/tradeBalances. Alternatively, restrict accountLevelsAddr to a trusted, non-reentrant contract and consider using a pull model or staticcall semantics when available.","evidence":"trade() checks orderFills then calls tradeBalances, but only increments orderFills after tradeBalances returns; tradeBalances makes an external call to accountLevelsAddr.accountLevel(user).","locations":["contracts/Contract.sol:252","contracts/Contract.sol:260","contracts/Contract.sol:261","contracts/Contract.sol:265","contracts/Contract.sol:269"]},{"severity":"low","category":"access_control","title":"AccountLevelsTest allows anyone to set fee tier if used in production","exploit_scenario":"If the admin configures accountLevelsAddr to AccountLevelsTest (or a similarly unrestricted contract), any user can call setAccountLevel() to assign themselves level 1 or 2, receiving rebates or full taker-fee refunds and effectively bypassing fees, draining feeAccount revenue.","recommendation":"Do not deploy or point to AccountLevelsTest in production; restrict setAccountLevel to an authorized role (e.g., admin) in any production AccountLevels implementation.","evidence":"AccountLevelsTest.setAccountLevel has no access control, and DecentrEx allows admin to set accountLevelsAddr to any contract.","locations":["contracts/Contract.sol:139","contracts/Contract.sol:142","contracts/Contract.sol:186","contracts/Contract.sol:188"]}]}
tokens used
24,362
{
"codex": {
"ran_at": "2026-01-10T17:37:54.927383+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found a reentrancy-based order overfill risk via external AccountLevels calls and an insecure test AccountLevels implementation that allows anyone to self-assign fee rebates if configured.",
"raw_final": {
"summary": "Found a reentrancy-based order overfill risk via external AccountLevels calls and an insecure test AccountLevels implementation that allows anyone to self-assign fee rebates if configured.",
"findings": [
{
"title": "Reentrancy via AccountLevels allows order overfill before orderFills update",
"category": "reentrancy",
"evidence": "trade() checks orderFills then calls tradeBalances, but only increments orderFills after tradeBalances returns; tradeBalances makes an external call to accountLevelsAddr.accountLevel(user).",
"severity": "medium",
"locations": [
"contracts/Contract.sol:252",
"contracts/Contract.sol:260",
"contracts/Contract.sol:261",
"contracts/Contract.sol:265",
"contracts/Contract.sol:269"
],
"recommendation": "Avoid external calls before updating order state: update orderFills before tradeBalances or add a reentrancy guard around trade/tradeBalances. Alternatively, restrict accountLevelsAddr to a trusted, non-reentrant contract and consider using a pull model or staticcall semantics when available.",
"exploit_scenario": "If accountLevelsAddr points to a malicious or compromised contract, its accountLevel() can reenter DecentrEx.trade() before the outer call updates orderFills. Because each trade checks orderFills before it is incremented, multiple reentrant fills can pass the limit check and push orderFills above amountGet, forcing the maker to trade more than intended at the quoted price."
},
{
"title": "AccountLevelsTest allows anyone to set fee tier if used in production",
"category": "access_control",
"evidence": "AccountLevelsTest.setAccountLevel has no access control, and DecentrEx allows admin to set accountLevelsAddr to any contract.",
"severity": "low",
"locations": [
"contracts/Contract.sol:139",
"contracts/Contract.sol:142",
"contracts/Contract.sol:186",
"contracts/Contract.sol:188"
],
"recommendation": "Do not deploy or point to AccountLevelsTest in production; restrict setAccountLevel to an authorized role (e.g., admin) in any production AccountLevels implementation.",
"exploit_scenario": "If the admin configures accountLevelsAddr to AccountLevelsTest (or a similarly unrestricted contract), any user can call setAccountLevel() to assign themselves level 1 or 2, receiving rebates or full taker-fee refunds and effectively bypassing fees, draining feeAccount revenue."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0138 0000000a: JUMPI 0000000b: PUSH4 0xffffffff 00000010: PUSH1 0xe0 00000012: PUSH1 0x02 00000014: EXP 00000015: PUSH1 0x00 00000017: CALLDATALOAD 00000018: DIV 00000019: AND 0000001a: PUSH4 0x0a19b14a 0000001f: DUP2 00000020: EQ 00000021: PUSH2 0x014a 00000024: JUMPI 00000025: DUP1 00000026: PUSH4 0x0b927666 0000002b: EQ 0000002c: PUSH2 0x0193 0000002f: JUMPI 00000030: DUP1 00000031: PUSH4 0x19774d43 00000036: EQ 00000037: PUSH2 0x01c1 0000003a: JUMPI 0000003b: DUP1 0000003c: PUSH4 0x278b8c0e 00000041: EQ 00000042: PUSH2 0x01ef 00000045: JUMPI 00000046: DUP1 00000047: PUSH4 0x2e1a7d4d 0000004c: EQ 0000004d: PUSH2 0x022a 00000050: JUMPI 00000051: DUP1 00000052: PUSH4 0x338b5dea 00000057: EQ 00000058: PUSH2 0x023c 0000005b: JUMPI 0000005c: DUP1 0000005d: PUSH4 0x46be96c3 00000062: EQ 00000063: PUSH2 0x025a 00000066: JUMPI 00000067: DUP1 00000068: PUSH4 0x508493bc 0000006d: EQ 0000006e: PUSH2 0x02af 00000071: JUMPI 00000072: DUP1 00000073: PUSH4 0x54d03b5c 00000078: EQ 00000079: PUSH2 0x02e0 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0x57786394 00000083: EQ 00000084: PUSH2 0x02f2 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x5e1d7ae4 0000008e: EQ 0000008f: PUSH2 0x0311 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x65e17c9d 00000099: EQ 0000009a: PUSH2 0x0323 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x6c86888b 000000a4: EQ 000000a5: PUSH2 0x034c 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x71ffcb16 000000af: EQ 000000b0: PUSH2 0x03b2 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x731c2f81 000000ba: EQ 000000bb: PUSH2 0x03cd 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0x8823a9c0 000000c5: EQ 000000c6: PUSH2 0x03ec 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0x8f283970 000000d0: EQ 000000d1: PUSH2 0x03fe 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0x9e281a98 000000db: EQ 000000dc: PUSH2 0x0419 000000df: JUMPI 000000e0: DUP1 000000e1: PUSH4 0xbb5f4629 000000e6: EQ 000000e7: PUSH2 0x0437 000000ea: JUMPI 000000eb: DUP1 000000ec: PUSH4 0xc281309e 000000f1: EQ 000000f2: PUSH2 0x0467 000000f5: JUMPI 000000f6: DUP1 000000f7: PUSH4 0xd0e30db0 000000fc: EQ 000000fd: PUSH2 0x0486 00000100: JUMPI 00000101: DUP1 00000102: PUSH4 0xe8f6bc2e 00000107: EQ 00000108: PUSH2 0x0490 0000010b: JUMPI 0000010c: DUP1 0000010d: PUSH4 0xf3412942 00000112: EQ 00000113: PUSH2 0x04ab 00000116: JUMPI 00000117: DUP1 00000118: PUSH4 0xf7888aec 0000011d: EQ 0000011e: PUSH2 0x04d4 00000121: JUMPI 00000122: DUP1 00000123: PUSH4 0xf851a440 00000128: EQ 00000129: PUSH2 0x0505 0000012c: JUMPI 0000012d: DUP1 0000012e: PUSH4 0xfb6e155f 00000133: EQ 00000134: PUSH2 0x052e 00000137: JUMPI 00000138: JUMPDEST 00000139: CALLVALUE 0000013a: PUSH2 0x0000 0000013d: JUMPI 0000013e: PUSH2 0x0148 00000141: JUMPDEST 00000142: PUSH2 0x0000 00000145: JUMP 00000146: JUMPDEST 00000147: JUMP 00000148: JUMPDEST 00000149: STOP 0000014a: JUMPDEST 0000014b: CALLVALUE 0000014c: PUSH2 0x0000 0000014f: JUMPI 00000150: PUSH2 0x0148 00000153: PUSH1 0x01 00000155: PUSH1 0xa0 00000157: PUSH1 0x02 00000159: EXP 0000015a: SUB 0000015b: PUSH1 0x04 0000015d: CALLDATALOAD 0000015e: DUP2 0000015f: AND 00000160: SWAP1 00000161: PUSH1 0x24 00000163: CALLDATALOAD 00000164: SWAP1 00000165: PUSH1 0x44 00000167: CALLDATALOAD 00000168: DUP2 00000169: AND 0000016a: SWAP1 0000016b: PUSH1 0x64 0000016d: CALLDATALOAD 0000016e: SWAP1 0000016f: PUSH1 0x84 00000171: CALLDATALOAD 00000172: SWAP1 00000173: PUSH1 0xa4 00000175: CALLDATALOAD 00000176: SWAP1 00000177: PUSH1 0xc4 00000179: CALLDATALOAD 0000017a: AND 0000017b: PUSH1 0xff 0000017d: PUSH1 0xe4 0000017f: CALLDATALOAD 00000180: AND 00000181: PUSH2 0x0104 00000184: CALLDATALOAD 00000185: PUSH2 0x0124 00000188: CALLDATALOAD 00000189: PUSH2 0x0144 0000018c: CALLDATALOAD 0000018d: PUSH2 0x0583 00000190: JUMP 00000191: JUMPDEST 00000192: STOP 00000193: JUMPDEST 00000194: CALLVALUE 00000195: PUSH2 0x0000 00000198: JUMPI 00000199: PUSH2 0x0148 0000019c: PUSH1 0x01 0000019e: PUSH1 0xa0 000001a0: PUSH1 0x02 000001a2: EXP 000001a3: SUB 000001a4: PUSH1 0x04 000001a6: CALLDATALOAD 000001a7: DUP2 000001a8: AND 000001a9: SWAP1 000001aa: PUSH1 0x24 000001ac: CALLDATALOAD 000001ad: SWAP1 000001ae: PUSH1 0x44 000001b0: CALLDATALOAD 000001b1: AND 000001b2: PUSH1 0x64 000001b4: CALLDATALOAD 000001b5: PUSH1 0x84 000001b7: CALLDATALOAD 000001b8: PUSH1 0xa4 000001ba: CALLDATALOAD 000001bb: PUSH2 0x083f 000001be: JUMP 000001bf: JUMPDEST 000001c0: STOP 000001c1: JUMPDEST 000001c2: CALLVALUE 000001c3: PUSH2 0x0000 000001c6: JUMPI 000001c7: PUSH2 0x01dd 000001ca: PUSH1 0x01 000001cc: PUSH1 0xa0 000001ce: PUSH1 0x02 000001d0: EXP 000001d1: SUB 000001d2: PUSH1 0x04 000001d4: CALLDATALOAD 000001d5: AND 000001d6: PUSH1 0x24 000001d8: CALLDATALOAD 000001d9: PUSH2 0x094d 000001dc: JUMP 000001dd: JUMPDEST 000001de: PUSH1 0x40 000001e0: DUP1 000001e1: MLOAD 000001e2: SWAP2 000001e3: DUP3 000001e4: MSTORE 000001e5: MLOAD 000001e6: SWAP1 000001e7: DUP2 000001e8: SWAP1 000001e9: SUB 000001ea: PUSH1 0x20 000001ec: ADD 000001ed: SWAP1 000001ee: RETURN 000001ef: JUMPDEST 000001f0: CALLVALUE 000001f1: PUSH2 0x0000 000001f4: JUMPI 000001f5: PUSH2 0x0148 000001f8: PUSH1 0x01 000001fa: PUSH1 0xa0 000001fc: PUSH1 0x02 000001fe: EXP 000001ff: SUB 00000200: PUSH1 0x04 00000202: CALLDATALOAD 00000203: DUP2 00000204: AND 00000205: SWAP1 00000206: PUSH1 0x24 00000208: CALLDATALOAD 00000209: SWAP1 0000020a: PUSH1 0x44 0000020c: CALLDATALOAD 0000020d: AND 0000020e: PUSH1 0x64 00000210: CALLDATALOAD 00000211: PUSH1 0x84 00000213: CALLDATALOAD 00000214: PUSH1 0xa4 00000216: CALLDATALOAD 00000217: PUSH1 0xff 00000219: PUSH1 0xc4 0000021b: CALLDATALOAD 0000021c: AND 0000021d: PUSH1 0xe4 0000021f: CALLDATALOAD 00000220: PUSH2 0x0104 00000223: CALLDATALOAD 00000224: PUSH2 0x096a 00000227: JUMP 00000228: JUMPDEST 00000229: STOP 0000022a: JUMPDEST 0000022b: CALLVALUE 0000022c: PUSH2 0x0000 0000022f: JUMPI 00000230: PUSH2 0x0148 00000233: PUSH1 0x04 00000235: CALLDATALOAD 00000236: PUSH2 0x0b74 00000239: JUMP 0000023a: JUMPDEST 0000023b: STOP 0000023c: JUMPDEST 0000023d: CALLVALUE 0000023e: PUSH2 0x0000 00000241: JUMPI 00000242: PUSH2 0x0148 00000245: PUSH1 0x01 00000247: PUSH1 0xa0 00000249: PUSH1 0x02 0000024b: EXP 0000024c: SUB 0000024d: PUSH1 0x04 0000024f: CALLDATALOAD 00000250: AND 00000251: PUSH1 0x24 00000253: CALLDATALOAD 00000254: PUSH2 0x0c92 00000257: JUMP 00000258: JUMPDEST 00000259: STOP 0000025a: JUMPDEST 0000025b: CALLVALUE 0000025c: PUSH2 0x0000 0000025f: JUMPI 00000260: PUSH2 0x01dd 00000263: PUSH1 0x01 00000265: PUSH1 0xa0 00000267: PUSH1 0x02 00000269: EXP 0000026a: SUB 0000026b: PUSH1 0x04 0000026d: CALLDATALOAD 0000026e: DUP2 0000026f: AND 00000270: SWAP1 00000271: PUSH1 0x24 00000273: CALLDATALOAD 00000274: SWAP1 00000275: PUSH1 0x44 00000277: CALLDATALOAD 00000278: DUP2 00000279: AND 0000027a: SWAP1 0000027b: PUSH1 0x64 0000027d: CALLDATALOAD 0000027e: SWAP1 0000027f: PUSH1 0x84 00000281: CALLDATALOAD 00000282: SWAP1 00000283: PUSH1 0xa4 00000285: CALLDATALOAD 00000286: SWAP1 00000287: PUSH1 0xc4 00000289: CALLDATALOAD 0000028a: AND 0000028b: PUSH1 0xff 0000028d: PUSH1 0xe4 0000028f: CALLDATALOAD 00000290: AND 00000291: PUSH2 0x0104 00000294: CALLDATALOAD 00000295: PUSH2 0x0124 00000298: CALLDATALOAD 00000299: PUSH2 0x0de0 0000029c: JUMP 0000029d: JUMPDEST 0000029e: PUSH1 0x40 000002a0: DUP1 000002a1: MLOAD 000002a2: SWAP2 000002a3: DUP3 000002a4: MSTORE 000002a5: MLOAD 000002a6: SWAP1 000002a7: DUP2 000002a8: SWAP1 000002a9: SUB 000002aa: PUSH1 0x20 000002ac: ADD 000002ad: SWAP1 000002ae: RETURN 000002af: JUMPDEST 000002b0: CALLVALUE 000002b1: PUSH2 0x0000 000002b4: JUMPI 000002b5: PUSH2 0x01dd 000002b8: PUSH1 0x01 000002ba: PUSH1 0xa0 000002bc: PUSH1 0x02 000002be: EXP 000002bf: SUB 000002c0: PUSH1 0x04 000002c2: CALLDATALOAD 000002c3: DUP2 000002c4: AND 000002c5: SWAP1 000002c6: PUSH1 0x24 000002c8: CALLDATALOAD 000002c9: AND 000002ca: PUSH2 0x0eca 000002cd: JUMP 000002ce: JUMPDEST 000002cf: PUSH1 0x40 000002d1: DUP1 000002d2: MLOAD 000002d3: SWAP2 000002d4: DUP3 000002d5: MSTORE 000002d6: MLOAD 000002d7: SWAP1 000002d8: DUP2 000002d9: SWAP1 000002da: SUB 000002db: PUSH1 0x20 000002dd: ADD 000002de: SWAP1 000002df: RETURN 000002e0: JUMPDEST 000002e1: CALLVALUE 000002e2: PUSH2 0x0000 000002e5: JUMPI 000002e6: PUSH2 0x0148 000002e9: PUSH1 0x04 000002eb: CALLDATALOAD 000002ec: PUSH2 0x0ee7 000002ef: JUMP 000002f0: JUMPDEST 000002f1: STOP 000002f2: JUMPDEST 000002f3: CALLVALUE 000002f4: PUSH2 0x0000 000002f7: JUMPI 000002f8: PUSH2 0x01dd 000002fb: PUSH2 0x0f1a 000002fe: JUMP 000002ff: JUMPDEST 00000300: PUSH1 0x40 00000302: DUP1 00000303: MLOAD 00000304: SWAP2 00000305: DUP3 00000306: MSTORE 00000307: MLOAD 00000308: SWAP1 00000309: DUP2 0000030a: SWAP1 0000030b: SUB 0000030c: PUSH1 0x20 0000030e: ADD 0000030f: SWAP1 00000310: RETURN 00000311: JUMPDEST 00000312: CALLVALUE 00000313: PUSH2 0x0000 00000316: JUMPI 00000317: PUSH2 0x0148 0000031a: PUSH1 0x04 0000031c: CALLDATALOAD 0000031d: PUSH2 0x0f20 00000320: JUMP 00000321: JUMPDEST 00000322: STOP 00000323: JUMPDEST 00000324: CALLVALUE 00000325: PUSH2 0x0000 00000328: JUMPI 00000329: PUSH2 0x0330 0000032c: PUSH2 0x0f5f 0000032f: JUMP 00000330: JUMPDEST 00000331: PUSH1 0x40 00000333: DUP1 00000334: MLOAD 00000335: PUSH1 0x01 00000337: PUSH1 0xa0 00000339: PUSH1 0x02 0000033b: EXP 0000033c: SUB 0000033d: SWAP1 0000033e: SWAP3 0000033f: AND 00000340: DUP3 00000341: MSTORE 00000342: MLOAD 00000343: SWAP1 00000344: DUP2 00000345: SWAP1 00000346: SUB 00000347: PUSH1 0x20 00000349: ADD 0000034a: SWAP1 0000034b: RETURN 0000034c: JUMPDEST 0000034d: CALLVALUE 0000034e: PUSH2 0x0000 00000351: JUMPI 00000352: PUSH2 0x039e 00000355: PUSH1 0x01 00000357: PUSH1 0xa0 00000359: PUSH1 0x02 0000035b: EXP 0000035c: SUB 0000035d: PUSH1 0x04 0000035f: CALLDATALOAD 00000360: DUP2 00000361: AND 00000362: SWAP1 00000363: PUSH1 0x24 00000365: CALLDATALOAD 00000366: SWAP1 00000367: PUSH1 0x44 00000369: CALLDATALOAD 0000036a: DUP2 0000036b: AND 0000036c: SWAP1 0000036d: PUSH1 0x64 0000036f: CALLDATALOAD 00000370: SWAP1 00000371: PUSH1 0x84 00000373: CALLDATALOAD 00000374: SWAP1 00000375: PUSH1 0xa4 00000377: CALLDATALOAD 00000378: SWAP1 00000379: PUSH1 0xc4 0000037b: CALLDATALOAD 0000037c: DUP2 0000037d: AND 0000037e: SWAP1 0000037f: PUSH1 0xff 00000381: PUSH1 0xe4 00000383: CALLDATALOAD 00000384: AND 00000385: SWAP1 00000386: PUSH2 0x0104 00000389: CALLDATALOAD 0000038a: SWAP1 0000038b: PUSH2 0x0124 0000038e: CALLDATALOAD 0000038f: SWAP1 00000390: PUSH2 0x0144 00000393: CALLDATALOAD 00000394: SWAP1 00000395: PUSH2 0x0164 00000398: CALLDATALOAD 00000399: AND 0000039a: PUSH2 0x0f6e 0000039d: JUMP 0000039e: JUMPDEST 0000039f: PUSH1 0x40 000003a1: DUP1 000003a2: MLOAD 000003a3: SWAP2 000003a4: ISZERO 000003a5: ISZERO 000003a6: DUP3 000003a7: MSTORE 000003a8: MLOAD 000003a9: SWAP1 000003aa: DUP2 000003ab: SWAP1 000003ac: SUB 000003ad: PUSH1 0x20 000003af: ADD 000003b0: SWAP1 000003b1: RETURN 000003b2: JUMPDEST 000003b3: CALLVALUE 000003b4: PUSH2 0x0000 000003b7: JUMPI 000003b8: PUSH2 0x0148 000003bb: PUSH1 0x01 000003bd: PUSH1 0xa0 000003bf: PUSH1 0x02 000003c1: EXP 000003c2: SUB 000003c3: PUSH1 0x04 000003c5: CALLDATALOAD 000003c6: AND 000003c7: PUSH2 0x0fd9 000003ca: JUMP 000003cb: JUMPDEST 000003cc: STOP 000003cd: JUMPDEST 000003ce: CALLVALUE 000003cf: PUSH2 0x0000 000003d2: JUMPI 000003d3: PUSH2 0x01dd 000003d6: PUSH2 0x1013 000003d9: JUMP 000003da: JUMPDEST 000003db: PUSH1 0x40 000003dd: DUP1 000003de: MLOAD 000003df: SWAP2 000003e0: DUP3 000003e1: MSTORE 000003e2: MLOAD 000003e3: SWAP1 000003e4: DUP2 000003e5: SWAP1 000003e6: SUB 000003e7: PUSH1 0x20 000003e9: ADD 000003ea: SWAP1 000003eb: RETURN 000003ec: JUMPDEST 000003ed: CALLVALUE 000003ee: PUSH2 0x0000 000003f1: JUMPI 000003f2: PUSH2 0x0148 000003f5: PUSH1 0x04 000003f7: CALLDATALOAD 000003f8: PUSH2 0x1019 000003fb: JUMP 000003fc: JUMPDEST 000003fd: STOP 000003fe: JUMPDEST 000003ff: CALLVALUE 00000400: PUSH2 0x0000 00000403: JUMPI 00000404: PUSH2 0x0148 00000407: PUSH1 0x01 00000409: PUSH1 0xa0 0000040b: PUSH1 0x02 0000040d: EXP 0000040e: SUB 0000040f: PUSH1 0x04 00000411: CALLDATALOAD 00000412: AND 00000413: PUSH2 0x1058 00000416: JUMP 00000417: JUMPDEST 00000418: STOP 00000419: JUMPDEST 0000041a: CALLVALUE 0000041b: PUSH2 0x0000 0000041e: JUMPI 0000041f: PUSH2 0x0148 00000422: PUSH1 0x01 00000424: PUSH1 0xa0 00000426: PUSH1 0x02 00000428: EXP 00000429: SUB 0000042a: PUSH1 0x04 0000042c: CALLDATALOAD 0000042d: AND 0000042e: PUSH1 0x24 00000430: CALLDATALOAD 00000431: PUSH2 0x1092 00000434: JUMP 00000435: JUMPDEST 00000436: STOP 00000437: JUMPDEST 00000438: CALLVALUE 00000439: PUSH2 0x0000 0000043c: JUMPI 0000043d: PUSH2 0x039e 00000440: PUSH1 0x01 00000442: PUSH1 0xa0 00000444: PUSH1 0x02 00000446: EXP 00000447: SUB 00000448: PUSH1 0x04 0000044a: CALLDATALOAD 0000044b: AND 0000044c: PUSH1 0x24 0000044e: CALLDATALOAD 0000044f: PUSH2 0x122a 00000452: JUMP 00000453: JUMPDEST 00000454: PUSH1 0x40 00000456: DUP1 00000457: MLOAD 00000458: SWAP2 00000459: ISZERO 0000045a: ISZERO 0000045b: DUP3 0000045c: MSTORE 0000045d: MLOAD 0000045e: SWAP1 0000045f: DUP2 00000460: SWAP1 00000461: SUB 00000462: PUSH1 0x20 00000464: ADD 00000465: SWAP1 00000466: RETURN 00000467: JUMPDEST 00000468: CALLVALUE 00000469: PUSH2 0x0000 0000046c: JUMPI 0000046d: PUSH2 0x01dd 00000470: PUSH2 0x124a 00000473: JUMP 00000474: JUMPDEST 00000475: PUSH1 0x40 00000477: DUP1 00000478: MLOAD 00000479: SWAP2 0000047a: DUP3 0000047b: MSTORE 0000047c: MLOAD 0000047d: SWAP1 0000047e: DUP2 0000047f: SWAP1 00000480: SUB 00000481: PUSH1 0x20 00000483: ADD 00000484: SWAP1 00000485: RETURN 00000486: JUMPDEST 00000487: PUSH2 0x0148 0000048a: PUSH2 0x1250 0000048d: JUMP 0000048e: JUMPDEST 0000048f: STOP 00000490: JUMPDEST 00000491: CALLVALUE 00000492: PUSH2 0x0000 00000495: JUMPI 00000496: PUSH2 0x0148 00000499: PUSH1 0x01 0000049b: PUSH1 0xa0 0000049d: PUSH1 0x02 0000049f: EXP 000004a0: SUB 000004a1: PUSH1 0x04 000004a3: CALLDATALOAD 000004a4: AND 000004a5: PUSH2 0x12f2 000004a8: JUMP 000004a9: JUMPDEST 000004aa: STOP 000004ab: JUMPDEST 000004ac: CALLVALUE 000004ad: PUSH2 0x0000 000004b0: JUMPI 000004b1: PUSH2 0x0330 000004b4: PUSH2 0x132c 000004b7: JUMP 000004b8: JUMPDEST 000004b9: PUSH1 0x40 000004bb: DUP1 000004bc: MLOAD 000004bd: PUSH1 0x01 000004bf: PUSH1 0xa0 000004c1: PUSH1 0x02 000004c3: EXP 000004c4: SUB 000004c5: SWAP1 000004c6: SWAP3 000004c7: AND 000004c8: DUP3 000004c9: MSTORE 000004ca: MLOAD 000004cb: SWAP1 000004cc: DUP2 000004cd: SWAP1 000004ce: SUB 000004cf: PUSH1 0x20 000004d1: ADD 000004d2: SWAP1 000004d3: RETURN 000004d4: JUMPDEST 000004d5: CALLVALUE 000004d6: PUSH2 0x0000 000004d9: JUMPI 000004da: PUSH2 0x01dd 000004dd: PUSH1 0x01 000004df: PUSH1 0xa0 000004e1: PUSH1 0x02 000004e3: EXP 000004e4: SUB 000004e5: PUSH1 0x04 000004e7: CALLDATALOAD 000004e8: DUP2 000004e9: AND 000004ea: SWAP1 000004eb: PUSH1 0x24 000004ed: CALLDATALOAD 000004ee: AND 000004ef: PUSH2 0x133b 000004f2: JUMP 000004f3: JUMPDEST 000004f4: PUSH1 0x40 000004f6: DUP1 000004f7: MLOAD 000004f8: SWAP2 000004f9: DUP3 000004fa: MSTORE 000004fb: MLOAD 000004fc: SWAP1 000004fd: DUP2 000004fe: SWAP1 000004ff: SUB 00000500: PUSH1 0x20 00000502: ADD 00000503: SWAP1 00000504: RETURN 00000505: JUMPDEST 00000506: CALLVALUE 00000507: PUSH2 0x0000 0000050a: JUMPI 0000050b: PUSH2 0x0330 0000050e: PUSH2 0x1368 00000511: JUMP 00000512: JUMPDEST 00000513: PUSH1 0x40 00000515: DUP1 00000516: MLOAD 00000517: PUSH1 0x01 00000519: PUSH1 0xa0 0000051b: PUSH1 0x02 0000051d: EXP 0000051e: SUB 0000051f: SWAP1 00000520: SWAP3 00000521: AND 00000522: DUP3 00000523: MSTORE 00000524: MLOAD 00000525: SWAP1 00000526: DUP2 00000527: SWAP1 00000528: SUB 00000529: PUSH1 0x20 0000052b: ADD 0000052c: SWAP1 0000052d: RETURN 0000052e: JUMPDEST 0000052f: CALLVALUE 00000530: PUSH2 0x0000 00000533: JUMPI 00000534: PUSH2 0x01dd 00000537: PUSH1 0x01 00000539: PUSH1 0xa0 0000053b: PUSH1 0x02 0000053d: EXP 0000053e: SUB 0000053f: PUSH1 0x04 00000541: CALLDATALOAD 00000542: DUP2 00000543: AND 00000544: SWAP1 00000545: PUSH1 0x24 00000547: CALLDATALOAD 00000548: SWAP1 00000549: PUSH1 0x44 0000054b: CALLDATALOAD 0000054c: DUP2 0000054d: AND 0000054e: SWAP1 0000054f: PUSH1 0x64 00000551: CALLDATALOAD 00000552: SWAP1 00000553: PUSH1 0x84 00000555: CALLDATALOAD 00000556: SWAP1 00000557: PUSH1 0xa4 00000559: CALLDATALOAD 0000055a: SWAP1 0000055b: PUSH1 0xc4 0000055d: CALLDATALOAD 0000055e: AND 0000055f: PUSH1 0xff 00000561: PUSH1 0xe4 00000563: CALLDATALOAD 00000564: AND 00000565: PUSH2 0x0104 00000568: CALLDATALOAD 00000569: PUSH2 0x0124 0000056c: CALLDATALOAD 0000056d: PUSH2 0x1377 00000570: JUMP 00000571: JUMPDEST 00000572: PUSH1 0x40 00000574: DUP1 00000575: MLOAD 00000576: SWAP2 00000577: DUP3 00000578: MSTORE 00000579: MLOAD 0000057a: SWAP1 0000057b: DUP2 0000057c: SWAP1 0000057d: SUB 0000057e: PUSH1 0x20 00000580: ADD 00000581: SWAP1 00000582: RETURN 00000583: JUMPDEST 00000584: PUSH1 0x00 00000586: PUSH1 0x02 00000588: ADDRESS 00000589: DUP14 0000058a: DUP14 0000058b: DUP14 0000058c: DUP14 0000058d: DUP14 0000058e: DUP14 0000058f: PUSH1 0x00 00000591: PUSH1 0x40 00000593: MLOAD 00000594: PUSH1 0x20 00000596: ADD 00000597: MSTORE 00000598: PUSH1 0x40 0000059a: MLOAD 0000059b: DUP1 0000059c: DUP9 0000059d: PUSH1 0x01 0000059f: PUSH1 0xa0 000005a1: PUSH1 0x02 000005a3: EXP 000005a4: SUB 000005a5: AND 000005a6: PUSH1 0x01 000005a8: PUSH1 0xa0 000005aa: PUSH1 0x02 000005ac: EXP 000005ad: SUB 000005ae: AND 000005af: PUSH1 0x60 000005b1: PUSH1 0x02 000005b3: EXP 000005b4: MUL 000005b5: DUP2 000005b6: MSTORE 000005b7: PUSH1 0x14 000005b9: ADD 000005ba: DUP8 000005bb: PUSH1 0x01 000005bd: PUSH1 0xa0 000005bf: PUSH1 0x02 000005c1: EXP 000005c2: SUB 000005c3: AND 000005c4: PUSH1 0x01 000005c6: PUSH1 0xa0 000005c8: PUSH1 0x02 000005ca: EXP 000005cb: SUB 000005cc: AND 000005cd: PUSH1 0x60 000005cf: PUSH1 0x02 000005d1: EXP 000005d2: MUL 000005d3: DUP2 000005d4: MSTORE 000005d5: PUSH1 0x14 000005d7: ADD 000005d8: DUP7 000005d9: DUP2 000005da: MSTORE 000005db: PUSH1 0x20 000005dd: ADD 000005de: DUP6 000005df: PUSH1 0x01 000005e1: PUSH1 0xa0 000005e3: PUSH1 0x02 000005e5: EXP 000005e6: SUB 000005e7: AND 000005e8: PUSH1 0x01 000005ea: PUSH1 0xa0 000005ec: PUSH1 0x02 000005ee: EXP 000005ef: SUB 000005f0: AND 000005f1: PUSH1 0x60 000005f3: PUSH1 0x02 000005f5: EXP 000005f6: MUL 000005f7: DUP2 000005f8: MSTORE 000005f9: PUSH1 0x14 000005fb: ADD 000005fc: DUP5 000005fd: DUP2 000005fe: MSTORE 000005ff: PUSH1 0x20 00000601: ADD 00000602: DUP4 00000603: DUP2 00000604: MSTORE 00000605: PUSH1 0x20 00000607: ADD 00000608: DUP3 00000609: DUP2 0000060a: MSTORE 0000060b: PUSH1 0x20 0000060d: ADD 0000060e: SWAP8 0000060f: POP 00000610: POP 00000611: POP 00000612: POP 00000613: POP 00000614: POP 00000615: POP 00000616: POP 00000617: PUSH1 0x20 00000619: PUSH1 0x40 0000061b: MLOAD 0000061c: DUP1 0000061d: DUP4 0000061e: SUB 0000061f: DUP2 00000620: PUSH1 0x00 00000622: DUP7 00000623: PUSH2 0x61da 00000626: GAS 00000627: SUB 00000628: CALL 00000629: ISZERO 0000062a: PUSH2 0x0000 0000062d: JUMPI 0000062e: POP 0000062f: POP 00000630: PUSH1 0x40 00000632: DUP1 00000633: MLOAD 00000634: MLOAD 00000635: PUSH1 0x01 00000637: PUSH1 0xa0 00000639: PUSH1 0x02 0000063b: EXP 0000063c: SUB 0000063d: DUP9 0000063e: AND 0000063f: PUSH1 0x00 00000641: SWAP1 00000642: DUP2 00000643: MSTORE 00000644: PUSH1 0x07 00000646: PUSH1 0x20 00000648: SWAP1 00000649: DUP2 0000064a: MSTORE 0000064b: DUP4 0000064c: DUP3 0000064d: KECCAK256 0000064e: DUP4 0000064f: DUP4 00000650: MSTORE 00000651: SWAP1 00000652: MSTORE 00000653: SWAP2 00000654: SWAP1 00000655: SWAP2 00000656: KECCAK256 00000657: SLOAD 00000658: SWAP1 00000659: SWAP2 0000065a: POP 0000065b: PUSH1 0xff 0000065d: AND 0000065e: DUP1 0000065f: PUSH2 0x070e 00000662: JUMPI 00000663: POP 00000664: PUSH1 0x40 00000666: DUP1 00000667: MLOAD 00000668: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00000689: DUP2 0000068a: MSTORE 0000068b: PUSH1 0x1c 0000068d: DUP2 0000068e: ADD 0000068f: DUP4 00000690: SWAP1 00000691: MSTORE 00000692: DUP2 00000693: MLOAD 00000694: SWAP1 00000695: DUP2 00000696: SWAP1 00000697: SUB 00000698: PUSH1 0x3c 0000069a: ADD 0000069b: DUP2 0000069c: KECCAK256 0000069d: PUSH1 0x00 0000069f: DUP3 000006a0: DUP2 000006a1: MSTORE 000006a2: PUSH1 0x20 000006a4: DUP4 000006a5: DUP2 000006a6: ADD 000006a7: DUP6 000006a8: MSTORE 000006a9: SWAP3 000006aa: DUP5 000006ab: ADD 000006ac: DUP2 000006ad: SWAP1 000006ae: MSTORE 000006af: DUP4 000006b0: MLOAD 000006b1: SWAP2 000006b2: DUP3 000006b3: MSTORE 000006b4: PUSH1 0xff 000006b6: DUP10 000006b7: AND 000006b8: DUP3 000006b9: DUP5 000006ba: ADD 000006bb: MSTORE 000006bc: DUP2 000006bd: DUP5 000006be: ADD 000006bf: DUP9 000006c0: SWAP1 000006c1: MSTORE 000006c2: PUSH1 0x60 000006c4: DUP3 000006c5: ADD 000006c6: DUP8 000006c7: SWAP1 000006c8: MSTORE 000006c9: SWAP3 000006ca: MLOAD 000006cb: PUSH1 0x01 000006cd: PUSH1 0xa0 000006cf: PUSH1 0x02 000006d1: EXP 000006d2: SUB 000006d3: DUP11 000006d4: AND 000006d5: SWAP4 000006d6: PUSH1 0x01 000006d8: SWAP4 000006d9: PUSH1 0x80 000006db: DUP1 000006dc: DUP6 000006dd: ADD 000006de: SWAP5 000006df: SWAP2 000006e0: SWAP4 000006e1: PUSH1 0x1f 000006e3: NOT 000006e4: DUP2 000006e5: ADD 000006e6: SWAP4 000006e7: SWAP3 000006e8: DUP2 000006e9: SWAP1 000006ea: SUB 000006eb: SWAP1 000006ec: SWAP2 000006ed: ADD 000006ee: SWAP2 000006ef: DUP7 000006f0: PUSH2 0x61da 000006f3: GAS 000006f4: SUB 000006f5: CALL 000006f6: ISZERO 000006f7: PUSH2 0x0000 000006fa: JUMPI 000006fb: POP 000006fc: POP 000006fd: PUSH1 0x20 000006ff: PUSH1 0x40 00000701: MLOAD 00000702: SUB 00000703: MLOAD 00000704: PUSH1 0x01 00000706: PUSH1 0xa0 00000708: PUSH1 0x02 0000070a: EXP 0000070b: SUB 0000070c: AND 0000070d: EQ 0000070e: JUMPDEST 0000070f: DUP1 00000710: ISZERO 00000711: PUSH2 0x071a 00000714: JUMPI 00000715: POP 00000716: DUP8 00000717: NUMBER 00000718: GT 00000719: ISZERO 0000071a: JUMPDEST 0000071b: DUP1 0000071c: ISZERO 0000071d: PUSH2 0x0754 00000720: JUMPI 00000721: POP 00000722: PUSH1 0x01 00000724: PUSH1 0xa0 00000726: PUSH1 0x02 00000728: EXP 00000729: SUB 0000072a: DUP7 0000072b: AND 0000072c: PUSH1 0x00 0000072e: SWAP1 0000072f: DUP2 00000730: MSTORE 00000731: PUSH1 0x08 00000733: PUSH1 0x20 00000735: SWAP1 00000736: DUP2 00000737: MSTORE 00000738: PUSH1 0x40 0000073a: DUP1 0000073b: DUP4 0000073c: KECCAK256 0000073d: DUP5 0000073e: DUP5 0000073f: MSTORE 00000740: SWAP1 00000741: SWAP2 00000742: MSTORE 00000743: SWAP1 00000744: KECCAK256 00000745: SLOAD 00000746: DUP12 00000747: SWAP1 00000748: PUSH2 0x0751 0000074b: SWAP1 0000074c: DUP5 0000074d: PUSH2 0x15b5 00000750: JUMP 00000751: JUMPDEST 00000752: GT 00000753: ISZERO 00000754: JUMPDEST 00000755: ISZERO 00000756: ISZERO 00000757: PUSH2 0x075f 0000075a: JUMPI 0000075b: PUSH2 0x0000 0000075e: JUMP 0000075f: JUMPDEST 00000760: PUSH2 0x076d 00000763: DUP13 00000764: DUP13 00000765: DUP13 00000766: DUP13 00000767: DUP11 00000768: DUP8 00000769: PUSH2 0x15dd 0000076c: JUMP 0000076d: JUMPDEST 0000076e: PUSH1 0x01 00000770: PUSH1 0xa0 00000772: PUSH1 0x02 00000774: EXP 00000775: SUB 00000776: DUP7 00000777: AND 00000778: PUSH1 0x00 0000077a: SWAP1 0000077b: DUP2 0000077c: MSTORE 0000077d: PUSH1 0x08 0000077f: PUSH1 0x20 00000781: SWAP1 00000782: DUP2 00000783: MSTORE 00000784: PUSH1 0x40 00000786: DUP1 00000787: DUP4 00000788: KECCAK256 00000789: DUP5 0000078a: DUP5 0000078b: MSTORE 0000078c: SWAP1 0000078d: SWAP2 0000078e: MSTORE 0000078f: SWAP1 00000790: KECCAK256 00000791: SLOAD 00000792: PUSH2 0x079b 00000795: SWAP1 00000796: DUP4 00000797: PUSH2 0x15b5 0000079a: JUMP 0000079b: JUMPDEST 0000079c: PUSH1 0x01 0000079e: PUSH1 0xa0 000007a0: PUSH1 0x02 000007a2: EXP 000007a3: SUB 000007a4: DUP8 000007a5: AND 000007a6: PUSH1 0x00 000007a8: SWAP1 000007a9: DUP2 000007aa: MSTORE 000007ab: PUSH1 0x08 000007ad: PUSH1 0x20 000007af: SWAP1 000007b0: DUP2 000007b1: MSTORE 000007b2: PUSH1 0x40 000007b4: DUP1 000007b5: DUP4 000007b6: KECCAK256 000007b7: DUP6 000007b8: DUP5 000007b9: MSTORE 000007ba: SWAP1 000007bb: SWAP2 000007bc: MSTORE 000007bd: SWAP1 000007be: KECCAK256 000007bf: SSTORE 000007c0: PUSH32 0x6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d 000007e1: DUP13 000007e2: DUP4 000007e3: DUP13 000007e4: DUP15 000007e5: DUP14 000007e6: DUP4 000007e7: MUL 000007e8: DUP2 000007e9: ISZERO 000007ea: PUSH2 0x0000 000007ed: JUMPI 000007ee: PUSH1 0x40 000007f0: DUP1 000007f1: MLOAD 000007f2: PUSH1 0x01 000007f4: PUSH1 0xa0 000007f6: PUSH1 0x02 000007f8: EXP 000007f9: SUB 000007fa: SWAP7 000007fb: DUP8 000007fc: AND 000007fd: DUP2 000007fe: MSTORE 000007ff: PUSH1 0x20 00000801: DUP2 00000802: ADD 00000803: SWAP6 00000804: SWAP1 00000805: SWAP6 00000806: MSTORE 00000807: SWAP3 00000808: DUP6 00000809: AND 0000080a: DUP5 0000080b: DUP5 0000080c: ADD 0000080d: MSTORE 0000080e: DIV 0000080f: PUSH1 0x60 00000811: DUP4 00000812: ADD 00000813: MSTORE 00000814: DUP3 00000815: DUP11 00000816: AND 00000817: PUSH1 0x80 00000819: DUP4 0000081a: ADD 0000081b: MSTORE 0000081c: CALLER 0000081d: SWAP3 0000081e: SWAP1 0000081f: SWAP3 00000820: AND 00000821: PUSH1 0xa0 00000823: DUP3 00000824: ADD 00000825: MSTORE 00000826: SWAP1 00000827: MLOAD 00000828: SWAP1 00000829: DUP2 0000082a: SWAP1 0000082b: SUB 0000082c: PUSH1 0xc0 0000082e: ADD 0000082f: SWAP1 00000830: LOG1 00000831: JUMPDEST 00000832: POP 00000833: POP 00000834: POP 00000835: POP 00000836: POP 00000837: POP 00000838: POP 00000839: POP 0000083a: POP 0000083b: POP 0000083c: POP 0000083d: POP 0000083e: JUMP 0000083f: JUMPDEST 00000840: PUSH1 0x40 00000842: DUP1 00000843: MLOAD 00000844: PUSH1 0x00 00000846: PUSH1 0x20 00000848: SWAP2 00000849: DUP3 0000084a: ADD 0000084b: DUP2 0000084c: SWAP1 0000084d: MSTORE 0000084e: DUP3 0000084f: MLOAD 00000850: PUSH1 0x60 00000852: PUSH1 0x02 00000854: EXP 00000855: PUSH1 0x01 00000857: PUSH1 0xa0 00000859: PUSH1 0x02 0000085b: EXP 0000085c: SUB 0000085d: ADDRESS 0000085e: DUP2 0000085f: AND 00000860: DUP3 00000861: MUL 00000862: DUP4 00000863: MSTORE 00000864: DUP1 00000865: DUP13 00000866: AND 00000867: DUP3 00000868: MUL 00000869: PUSH1 0x14 0000086b: DUP5 0000086c: ADD 0000086d: MSTORE 0000086e: PUSH1 0x28 00000870: DUP4 00000871: ADD 00000872: DUP12 00000873: SWAP1 00000874: MSTORE 00000875: DUP10 00000876: AND 00000877: MUL 00000878: PUSH1 0x48 0000087a: DUP3 0000087b: ADD 0000087c: MSTORE 0000087d: PUSH1 0x5c 0000087f: DUP2 00000880: ADD 00000881: DUP8 00000882: SWAP1 00000883: MSTORE 00000884: PUSH1 0x7c 00000886: DUP2 00000887: ADD 00000888: DUP7 00000889: SWAP1 0000088a: MSTORE 0000088b: PUSH1 0x9c 0000088d: DUP2 0000088e: ADD 0000088f: DUP6 00000890: SWAP1 00000891: MSTORE 00000892: SWAP3 00000893: MLOAD 00000894: SWAP1 00000895: SWAP3 00000896: PUSH1 0x02 00000898: SWAP3 00000899: PUSH1 0xbc 0000089b: DUP1 0000089c: DUP4 0000089d: ADD 0000089e: SWAP4 0000089f: SWAP2 000008a0: SWAP3 000008a1: DUP3 000008a2: SWAP1 000008a3: SUB 000008a4: ADD 000008a5: DUP2 000008a6: DUP7 000008a7: DUP7 000008a8: PUSH2 0x61da 000008ab: GAS 000008ac: SUB 000008ad: CALL 000008ae: ISZERO 000008af: PUSH2 0x0000 000008b2: JUMPI 000008b3: POP 000008b4: POP 000008b5: PUSH1 0x40 000008b7: DUP1 000008b8: MLOAD 000008b9: DUP1 000008ba: MLOAD 000008bb: PUSH1 0x01 000008bd: PUSH1 0xa0 000008bf: PUSH1 0x02 000008c1: EXP 000008c2: SUB 000008c3: CALLER 000008c4: DUP2 000008c5: AND 000008c6: PUSH1 0x00 000008c8: DUP2 000008c9: DUP2 000008ca: MSTORE 000008cb: PUSH1 0x07 000008cd: PUSH1 0x20 000008cf: SWAP1 000008d0: DUP2 000008d1: MSTORE 000008d2: DUP7 000008d3: DUP3 000008d4: KECCAK256 000008d5: DUP6 000008d6: DUP4 000008d7: MSTORE 000008d8: DUP2 000008d9: MSTORE 000008da: SWAP1 000008db: DUP7 000008dc: SWAP1 000008dd: KECCAK256 000008de: DUP1 000008df: SLOAD 000008e0: PUSH1 0xff 000008e2: NOT 000008e3: AND 000008e4: PUSH1 0x01 000008e6: OR 000008e7: SWAP1 000008e8: SSTORE 000008e9: DUP13 000008ea: DUP4 000008eb: AND 000008ec: DUP6 000008ed: MSTORE 000008ee: DUP5 000008ef: ADD 000008f0: DUP12 000008f1: SWAP1 000008f2: MSTORE 000008f3: SWAP1 000008f4: DUP10 000008f5: AND 000008f6: DUP4 000008f7: DUP6 000008f8: ADD 000008f9: MSTORE 000008fa: PUSH1 0x60 000008fc: DUP4 000008fd: ADD 000008fe: DUP9 000008ff: SWAP1 00000900: MSTORE 00000901: PUSH1 0x80 00000903: DUP4 00000904: ADD 00000905: DUP8 00000906: SWAP1 00000907: MSTORE 00000908: PUSH1 0xa0 0000090a: DUP4 0000090b: ADD 0000090c: DUP7 0000090d: SWAP1 0000090e: MSTORE 0000090f: PUSH1 0xc0 00000911: DUP4 00000912: ADD 00000913: MSTORE 00000914: SWAP2 00000915: MLOAD 00000916: SWAP2 00000917: SWAP3 00000918: POP 00000919: PUSH32 0x3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e85 0000093a: SWAP2 0000093b: SWAP1 0000093c: DUP2 0000093d: SWAP1 0000093e: SUB 0000093f: PUSH1 0xe0 00000941: ADD 00000942: SWAP1 00000943: LOG1 00000944: JUMPDEST 00000945: POP 00000946: POP 00000947: POP 00000948: POP 00000949: POP 0000094a: POP 0000094b: POP 0000094c: JUMP 0000094d: JUMPDEST 0000094e: PUSH1 0x08 00000950: PUSH1 0x20 00000952: SWAP1 00000953: DUP2 00000954: MSTORE 00000955: PUSH1 0x00 00000957: SWAP3 00000958: DUP4 00000959: MSTORE 0000095a: PUSH1 0x40 0000095c: DUP1 0000095d: DUP5 0000095e: KECCAK256 0000095f: SWAP1 00000960: SWAP2 00000961: MSTORE 00000962: SWAP1 00000963: DUP3 00000964: MSTORE 00000965: SWAP1 00000966: KECCAK256 00000967: SLOAD 00000968: DUP2 00000969: JUMP 0000096a: JUMPDEST 0000096b: PUSH1 0x40 0000096d: DUP1 0000096e: MLOAD 0000096f: PUSH1 0x00 00000971: PUSH1 0x20 00000973: SWAP2 00000974: DUP3 00000975: ADD 00000976: DUP2 00000977: SWAP1 00000978: MSTORE 00000979: DUP3 0000097a: MLOAD 0000097b: PUSH1 0x60 0000097d: PUSH1 0x02 0000097f: EXP 00000980: PUSH1 0x01 00000982: PUSH1 0xa0 00000984: PUSH1 0x02 00000986: EXP 00000987: SUB 00000988: ADDRESS 00000989: DUP2 0000098a: AND 0000098b: DUP3 0000098c: MUL 0000098d: DUP4 0000098e: MSTORE 0000098f: DUP1 00000990: DUP16 00000991: AND 00000992: DUP3 00000993: MUL 00000994: PUSH1 0x14 00000996: DUP5 00000997: ADD 00000998: MSTORE 00000999: PUSH1 0x28 0000099b: DUP4 0000099c: ADD 0000099d: DUP15 0000099e: SWAP1 0000099f: MSTORE 000009a0: DUP13 000009a1: AND 000009a2: MUL 000009a3: PUSH1 0x48 000009a5: DUP3 000009a6: ADD 000009a7: MSTORE 000009a8: PUSH1 0x5c 000009aa: DUP2 000009ab: ADD 000009ac: DUP11 000009ad: SWAP1 000009ae: MSTORE 000009af: PUSH1 0x7c 000009b1: DUP2 000009b2: ADD 000009b3: DUP10 000009b4: SWAP1 000009b5: MSTORE 000009b6: PUSH1 0x9c 000009b8: DUP2 000009b9: ADD 000009ba: DUP9 000009bb: SWAP1 000009bc: MSTORE 000009bd: SWAP3 000009be: MLOAD 000009bf: SWAP1 000009c0: SWAP3 000009c1: PUSH1 0x02 000009c3: SWAP3 000009c4: PUSH1 0xbc 000009c6: DUP1 000009c7: DUP4 000009c8: ADD 000009c9: SWAP4 000009ca: SWAP2 000009cb: SWAP3 000009cc: DUP3 000009cd: SWAP1 000009ce: SUB 000009cf: ADD 000009d0: DUP2 000009d1: DUP7 000009d2: DUP7 000009d3: PUSH2 0x61da 000009d6: GAS 000009d7: SUB 000009d8: CALL 000009d9: ISZERO 000009da: PUSH2 0x0000 000009dd: JUMPI 000009de: POP 000009df: POP 000009e0: PUSH1 0x40 000009e2: DUP1 000009e3: MLOAD 000009e4: MLOAD 000009e5: PUSH1 0x01 000009e7: PUSH1 0xa0 000009e9: PUSH1 0x02 000009eb: EXP 000009ec: SUB 000009ed: CALLER 000009ee: AND 000009ef: PUSH1 0x00 000009f1: SWAP1 000009f2: DUP2 000009f3: MSTORE 000009f4: PUSH1 0x07 000009f6: PUSH1 0x20 000009f8: SWAP1 000009f9: DUP2 000009fa: MSTORE 000009fb: DUP4 000009fc: DUP3 000009fd: KECCAK256 000009fe: DUP4 000009ff: DUP4 00000a00: MSTORE 00000a01: SWAP1 00000a02: MSTORE 00000a03: SWAP2 00000a04: SWAP1 00000a05: SWAP2 00000a06: KECCAK256 00000a07: SLOAD 00000a08: SWAP1 00000a09: SWAP2 00000a0a: POP 00000a0b: PUSH1 0xff 00000a0d: AND 00000a0e: DUP1 00000a0f: PUSH2 0x0abe 00000a12: JUMPI 00000a13: POP 00000a14: PUSH1 0x40 00000a16: DUP1 00000a17: MLOAD 00000a18: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00000a39: DUP2 00000a3a: MSTORE 00000a3b: PUSH1 0x1c 00000a3d: DUP2 00000a3e: ADD 00000a3f: DUP4 00000a40: SWAP1 00000a41: MSTORE 00000a42: DUP2 00000a43: MLOAD 00000a44: SWAP1 00000a45: DUP2 00000a46: SWAP1 00000a47: SUB 00000a48: PUSH1 0x3c 00000a4a: ADD 00000a4b: DUP2 00000a4c: KECCAK256 00000a4d: PUSH1 0x00 00000a4f: DUP3 00000a50: DUP2 00000a51: MSTORE 00000a52: PUSH1 0x20 00000a54: DUP4 00000a55: DUP2 00000a56: ADD 00000a57: DUP6 00000a58: MSTORE 00000a59: SWAP3 00000a5a: DUP5 00000a5b: ADD 00000a5c: DUP2 00000a5d: SWAP1 00000a5e: MSTORE 00000a5f: DUP4 00000a60: MLOAD 00000a61: SWAP2 00000a62: DUP3 00000a63: MSTORE 00000a64: PUSH1 0xff 00000a66: DUP9 00000a67: AND 00000a68: DUP3 00000a69: DUP5 00000a6a: ADD 00000a6b: MSTORE 00000a6c: DUP2 00000a6d: DUP5 00000a6e: ADD 00000a6f: DUP8 00000a70: SWAP1 00000a71: MSTORE 00000a72: PUSH1 0x60 00000a74: DUP3 00000a75: ADD 00000a76: DUP7 00000a77: SWAP1 00000a78: MSTORE 00000a79: SWAP3 00000a7a: MLOAD 00000a7b: PUSH1 0x01 00000a7d: PUSH1 0xa0 00000a7f: PUSH1 0x02 00000a81: EXP 00000a82: SUB 00000a83: CALLER 00000a84: AND 00000a85: SWAP4 00000a86: PUSH1 0x01 00000a88: SWAP4 00000a89: PUSH1 0x80 00000a8b: DUP1 00000a8c: DUP6 00000a8d: ADD 00000a8e: SWAP5 00000a8f: SWAP2 00000a90: SWAP4 00000a91: PUSH1 0x1f 00000a93: NOT 00000a94: DUP2 00000a95: ADD 00000a96: SWAP4 00000a97: SWAP3 00000a98: DUP2 00000a99: SWAP1 00000a9a: SUB 00000a9b: SWAP1 00000a9c: SWAP2 00000a9d: ADD 00000a9e: SWAP2 00000a9f: DUP7 00000aa0: PUSH2 0x61da 00000aa3: GAS 00000aa4: SUB 00000aa5: CALL 00000aa6: ISZERO 00000aa7: PUSH2 0x0000 00000aaa: JUMPI 00000aab: POP 00000aac: POP 00000aad: PUSH1 0x20 00000aaf: PUSH1 0x40 00000ab1: MLOAD 00000ab2: SUB 00000ab3: MLOAD 00000ab4: PUSH1 0x01 00000ab6: PUSH1 0xa0 00000ab8: PUSH1 0x02 00000aba: EXP 00000abb: SUB 00000abc: AND 00000abd: EQ 00000abe: JUMPDEST 00000abf: ISZERO 00000ac0: ISZERO 00000ac1: PUSH2 0x0ac9 00000ac4: JUMPI 00000ac5: PUSH2 0x0000 00000ac8: JUMP 00000ac9: JUMPDEST 00000aca: PUSH1 0x01 00000acc: PUSH1 0xa0 00000ace: PUSH1 0x02 00000ad0: EXP 00000ad1: SUB 00000ad2: CALLER 00000ad3: DUP2 00000ad4: AND 00000ad5: PUSH1 0x00 00000ad7: DUP2 00000ad8: DUP2 00000ad9: MSTORE 00000ada: PUSH1 0x08 00000adc: PUSH1 0x20 00000ade: SWAP1 00000adf: DUP2 00000ae0: MSTORE 00000ae1: PUSH1 0x40 00000ae3: DUP1 00000ae4: DUP4 00000ae5: KECCAK256 00000ae6: DUP7 00000ae7: DUP5 00000ae8: MSTORE 00000ae9: DUP3 00000aea: MSTORE 00000aeb: SWAP2 00000aec: DUP3 00000aed: SWAP1 00000aee: KECCAK256 00000aef: DUP14 00000af0: SWAP1 00000af1: SSTORE 00000af2: DUP2 00000af3: MLOAD 00000af4: DUP15 00000af5: DUP6 00000af6: AND 00000af7: DUP2 00000af8: MSTORE 00000af9: SWAP1 00000afa: DUP2 00000afb: ADD 00000afc: DUP14 00000afd: SWAP1 00000afe: MSTORE 00000aff: SWAP3 00000b00: DUP12 00000b01: AND 00000b02: DUP4 00000b03: DUP3 00000b04: ADD 00000b05: MSTORE 00000b06: PUSH1 0x60 00000b08: DUP4 00000b09: ADD 00000b0a: DUP11 00000b0b: SWAP1 00000b0c: MSTORE 00000b0d: PUSH1 0x80 00000b0f: DUP4 00000b10: ADD 00000b11: DUP10 00000b12: SWAP1 00000b13: MSTORE 00000b14: PUSH1 0xa0 00000b16: DUP4 00000b17: ADD 00000b18: DUP9 00000b19: SWAP1 00000b1a: MSTORE 00000b1b: PUSH1 0xc0 00000b1d: DUP4 00000b1e: ADD 00000b1f: SWAP2 00000b20: SWAP1 00000b21: SWAP2 00000b22: MSTORE 00000b23: PUSH1 0xff 00000b25: DUP7 00000b26: AND 00000b27: PUSH1 0xe0 00000b29: DUP4 00000b2a: ADD 00000b2b: MSTORE 00000b2c: PUSH2 0x0100 00000b2f: DUP3 00000b30: ADD 00000b31: DUP6 00000b32: SWAP1 00000b33: MSTORE 00000b34: PUSH2 0x0120 00000b37: DUP3 00000b38: ADD 00000b39: DUP5 00000b3a: SWAP1 00000b3b: MSTORE 00000b3c: MLOAD 00000b3d: PUSH32 0x1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b0 00000b5e: SWAP2 00000b5f: DUP2 00000b60: SWAP1 00000b61: SUB 00000b62: PUSH2 0x0140 00000b65: ADD 00000b66: SWAP1 00000b67: LOG1 00000b68: JUMPDEST 00000b69: POP 00000b6a: POP 00000b6b: POP 00000b6c: POP 00000b6d: POP 00000b6e: POP 00000b6f: POP 00000b70: POP 00000b71: POP 00000b72: POP 00000b73: JUMP 00000b74: JUMPDEST 00000b75: CALLER 00000b76: PUSH1 0x01 00000b78: PUSH1 0xa0 00000b7a: PUSH1 0x02 00000b7c: EXP 00000b7d: SUB 00000b7e: AND 00000b7f: PUSH1 0x00 00000b81: SWAP1 00000b82: DUP2 00000b83: MSTORE 00000b84: PUSH1 0x00 00000b86: DUP1 00000b87: MLOAD 00000b88: PUSH1 0x20 00000b8a: PUSH2 0x18fa 00000b8d: DUP4 00000b8e: CODECOPY 00000b8f: DUP2 00000b90: MLOAD 00000b91: SWAP2 00000b92: MSTORE 00000b93: PUSH1 0x20 00000b95: MSTORE 00000b96: PUSH1 0x40 00000b98: SWAP1 00000b99: KECCAK256 00000b9a: SLOAD 00000b9b: DUP2 00000b9c: SWAP1 00000b9d: LT 00000b9e: ISZERO 00000b9f: PUSH2 0x0ba7 00000ba2: JUMPI 00000ba3: PUSH2 0x0000 00000ba6: JUMP 00000ba7: JUMPDEST 00000ba8: CALLER 00000ba9: PUSH1 0x01 00000bab: PUSH1 0xa0 00000bad: PUSH1 0x02 00000baf: EXP 00000bb0: SUB 00000bb1: AND 00000bb2: PUSH1 0x00 00000bb4: SWAP1 00000bb5: DUP2 00000bb6: MSTORE 00000bb7: PUSH1 0x00 00000bb9: DUP1 00000bba: MLOAD 00000bbb: PUSH1 0x20 00000bbd: PUSH2 0x18fa 00000bc0: DUP4 00000bc1: CODECOPY 00000bc2: DUP2 00000bc3: MLOAD 00000bc4: SWAP2 00000bc5: MSTORE 00000bc6: PUSH1 0x20 00000bc8: MSTORE 00000bc9: PUSH1 0x40 00000bcb: SWAP1 00000bcc: KECCAK256 00000bcd: SLOAD 00000bce: PUSH2 0x0bd7 00000bd1: SWAP1 00000bd2: DUP3 00000bd3: PUSH2 0x18a4 00000bd6: JUMP 00000bd7: JUMPDEST 00000bd8: CALLER 00000bd9: PUSH1 0x01 00000bdb: PUSH1 0xa0 00000bdd: PUSH1 0x02 00000bdf: EXP 00000be0: SUB 00000be1: AND 00000be2: PUSH1 0x00 00000be4: DUP2 00000be5: DUP2 00000be6: MSTORE 00000be7: PUSH1 0x00 00000be9: DUP1 00000bea: MLOAD 00000beb: PUSH1 0x20 00000bed: PUSH2 0x18fa 00000bf0: DUP4 00000bf1: CODECOPY 00000bf2: DUP2 00000bf3: MLOAD 00000bf4: SWAP2 00000bf5: MSTORE 00000bf6: PUSH1 0x20 00000bf8: MSTORE 00000bf9: PUSH1 0x40 00000bfb: DUP1 00000bfc: DUP3 00000bfd: KECCAK256 00000bfe: SWAP4 00000bff: SWAP1 00000c00: SWAP4 00000c01: SSTORE 00000c02: SWAP2 00000c03: MLOAD 00000c04: SWAP1 00000c05: SWAP2 00000c06: DUP4 00000c07: SWAP2 00000c08: SWAP1 00000c09: DUP2 00000c0a: DUP2 00000c0b: DUP2 00000c0c: DUP6 00000c0d: DUP8 00000c0e: PUSH2 0x8502 00000c11: GAS 00000c12: SUB 00000c13: CALL 00000c14: SWAP3 00000c15: POP 00000c16: POP 00000c17: POP 00000c18: ISZERO 00000c19: ISZERO 00000c1a: PUSH2 0x0c22 00000c1d: JUMPI 00000c1e: PUSH2 0x0000 00000c21: JUMP 00000c22: JUMPDEST 00000c23: PUSH1 0x01 00000c25: PUSH1 0xa0 00000c27: PUSH1 0x02 00000c29: EXP 00000c2a: SUB 00000c2b: CALLER 00000c2c: AND 00000c2d: PUSH1 0x00 00000c2f: DUP2 00000c30: DUP2 00000c31: MSTORE 00000c32: PUSH1 0x00 00000c34: DUP1 00000c35: MLOAD 00000c36: PUSH1 0x20 00000c38: PUSH2 0x18fa 00000c3b: DUP4 00000c3c: CODECOPY 00000c3d: DUP2 00000c3e: MLOAD 00000c3f: SWAP2 00000c40: MSTORE 00000c41: PUSH1 0x20 00000c43: SWAP1 00000c44: DUP2 00000c45: MSTORE 00000c46: PUSH1 0x40 00000c48: DUP1 00000c49: DUP4 00000c4a: KECCAK256 00000c4b: SLOAD 00000c4c: DUP2 00000c4d: MLOAD 00000c4e: SWAP4 00000c4f: DUP5 00000c50: MSTORE 00000c51: SWAP2 00000c52: DUP4 00000c53: ADD 00000c54: SWAP4 00000c55: SWAP1 00000c56: SWAP4 00000c57: MSTORE 00000c58: DUP2 00000c59: DUP4 00000c5a: ADD 00000c5b: DUP5 00000c5c: SWAP1 00000c5d: MSTORE 00000c5e: PUSH1 0x60 00000c60: DUP3 00000c61: ADD 00000c62: MSTORE 00000c63: SWAP1 00000c64: MLOAD 00000c65: PUSH32 0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567 00000c86: SWAP2 00000c87: DUP2 00000c88: SWAP1 00000c89: SUB 00000c8a: PUSH1 0x80 00000c8c: ADD 00000c8d: SWAP1 00000c8e: LOG1 00000c8f: JUMPDEST 00000c90: POP 00000c91: JUMP 00000c92: JUMPDEST 00000c93: PUSH1 0x01 00000c95: PUSH1 0xa0 00000c97: PUSH1 0x02 00000c99: EXP 00000c9a: SUB 00000c9b: DUP3 00000c9c: AND 00000c9d: ISZERO 00000c9e: ISZERO 00000c9f: PUSH2 0x0ca7 00000ca2: JUMPI 00000ca3: PUSH2 0x0000 00000ca6: JUMP 00000ca7: JUMPDEST 00000ca8: PUSH1 0x40 00000caa: DUP1 00000cab: MLOAD 00000cac: PUSH1 0x00 00000cae: PUSH1 0x20 00000cb0: SWAP2 00000cb1: DUP3 00000cb2: ADD 00000cb3: DUP2 00000cb4: SWAP1 00000cb5: MSTORE 00000cb6: DUP3 00000cb7: MLOAD 00000cb8: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00000cd9: DUP2 00000cda: MSTORE 00000cdb: PUSH1 0x01 00000cdd: PUSH1 0xa0 00000cdf: PUSH1 0x02 00000ce1: EXP 00000ce2: SUB 00000ce3: CALLER 00000ce4: DUP2 00000ce5: AND 00000ce6: PUSH1 0x04 00000ce8: DUP4 00000ce9: ADD 00000cea: MSTORE 00000ceb: ADDRESS 00000cec: DUP2 00000ced: AND 00000cee: PUSH1 0x24 00000cf0: DUP4 00000cf1: ADD 00000cf2: MSTORE 00000cf3: PUSH1 0x44 00000cf5: DUP3 00000cf6: ADD 00000cf7: DUP7 00000cf8: SWAP1 00000cf9: MSTORE 00000cfa: SWAP4 00000cfb: MLOAD 00000cfc: SWAP4 00000cfd: DUP7 00000cfe: AND 00000cff: SWAP4 00000d00: PUSH4 0x23b872dd 00000d05: SWAP4 00000d06: PUSH1 0x64 00000d08: DUP1 00000d09: DUP5 00000d0a: ADD 00000d0b: SWAP5 00000d0c: SWAP2 00000d0d: SWAP4 00000d0e: DUP4 00000d0f: SWAP1 00000d10: SUB 00000d11: ADD 00000d12: SWAP1 00000d13: DUP3 00000d14: SWAP1 00000d15: DUP8 00000d16: DUP1 00000d17: EXTCODESIZE 00000d18: ISZERO 00000d19: PUSH2 0x0000 00000d1c: JUMPI 00000d1d: PUSH1 0x32 00000d1f: GAS 00000d20: SUB 00000d21: CALL 00000d22: ISZERO 00000d23: PUSH2 0x0000 00000d26: JUMPI 00000d27: POP 00000d28: POP 00000d29: PUSH1 0x40 00000d2b: MLOAD 00000d2c: MLOAD 00000d2d: ISZERO 00000d2e: ISZERO 00000d2f: SWAP1 00000d30: POP 00000d31: PUSH2 0x0d39 00000d34: JUMPI 00000d35: PUSH2 0x0000 00000d38: JUMP 00000d39: JUMPDEST 00000d3a: PUSH1 0x01 00000d3c: PUSH1 0xa0 00000d3e: PUSH1 0x02 00000d40: EXP 00000d41: SUB 00000d42: DUP1 00000d43: DUP4 00000d44: AND 00000d45: PUSH1 0x00 00000d47: SWAP1 00000d48: DUP2 00000d49: MSTORE 00000d4a: PUSH1 0x06 00000d4c: PUSH1 0x20 00000d4e: SWAP1 00000d4f: DUP2 00000d50: MSTORE 00000d51: PUSH1 0x40 00000d53: DUP1 00000d54: DUP4 00000d55: KECCAK256 00000d56: CALLER 00000d57: SWAP1 00000d58: SWAP5 00000d59: AND 00000d5a: DUP4 00000d5b: MSTORE 00000d5c: SWAP3 00000d5d: SWAP1 00000d5e: MSTORE 00000d5f: KECCAK256 00000d60: SLOAD 00000d61: PUSH2 0x0d6a 00000d64: SWAP1 00000d65: DUP3 00000d66: PUSH2 0x15b5 00000d69: JUMP 00000d6a: JUMPDEST 00000d6b: PUSH1 0x01 00000d6d: PUSH1 0xa0 00000d6f: PUSH1 0x02 00000d71: EXP 00000d72: SUB 00000d73: DUP4 00000d74: DUP2 00000d75: AND 00000d76: PUSH1 0x00 00000d78: DUP2 00000d79: DUP2 00000d7a: MSTORE 00000d7b: PUSH1 0x06 00000d7d: PUSH1 0x20 00000d7f: SWAP1 00000d80: DUP2 00000d81: MSTORE 00000d82: PUSH1 0x40 00000d84: DUP1 00000d85: DUP4 00000d86: KECCAK256 00000d87: CALLER 00000d88: SWAP1 00000d89: SWAP6 00000d8a: AND 00000d8b: DUP1 00000d8c: DUP5 00000d8d: MSTORE 00000d8e: SWAP5 00000d8f: DUP3 00000d90: MSTORE 00000d91: SWAP2 00000d92: DUP3 00000d93: SWAP1 00000d94: KECCAK256 00000d95: DUP6 00000d96: SWAP1 00000d97: SSTORE 00000d98: DUP2 00000d99: MLOAD 00000d9a: SWAP3 00000d9b: DUP4 00000d9c: MSTORE 00000d9d: DUP3 00000d9e: ADD 00000d9f: SWAP3 00000da0: SWAP1 00000da1: SWAP3 00000da2: MSTORE 00000da3: DUP1 00000da4: DUP3 00000da5: ADD 00000da6: DUP5 00000da7: SWAP1 00000da8: MSTORE 00000da9: PUSH1 0x60 00000dab: DUP2 00000dac: ADD 00000dad: SWAP3 00000dae: SWAP1 00000daf: SWAP3 00000db0: MSTORE 00000db1: MLOAD 00000db2: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 00000dd3: SWAP2 00000dd4: DUP2 00000dd5: SWAP1 00000dd6: SUB 00000dd7: PUSH1 0x80 00000dd9: ADD 00000dda: SWAP1 00000ddb: LOG1 00000ddc: JUMPDEST 00000ddd: POP 00000dde: POP 00000ddf: JUMP 00000de0: JUMPDEST 00000de1: PUSH1 0x00 00000de3: PUSH1 0x00 00000de5: PUSH1 0x02 00000de7: ADDRESS 00000de8: DUP14 00000de9: DUP14 00000dea: DUP14 00000deb: DUP14 00000dec: DUP14 00000ded: DUP14 00000dee: PUSH1 0x00 00000df0: PUSH1 0x40 00000df2: MLOAD 00000df3: PUSH1 0x20 00000df5: ADD 00000df6: MSTORE 00000df7: PUSH1 0x40 00000df9: MLOAD 00000dfa: DUP1 00000dfb: DUP9 00000dfc: PUSH1 0x01 00000dfe: PUSH1 0xa0 00000e00: PUSH1 0x02 00000e02: EXP 00000e03: SUB 00000e04: AND 00000e05: PUSH1 0x01 00000e07: PUSH1 0xa0 00000e09: PUSH1 0x02 00000e0b: EXP 00000e0c: SUB 00000e0d: AND 00000e0e: PUSH1 0x60 00000e10: PUSH1 0x02 00000e12: EXP 00000e13: MUL 00000e14: DUP2 00000e15: MSTORE 00000e16: PUSH1 0x14 00000e18: ADD 00000e19: DUP8 00000e1a: PUSH1 0x01 00000e1c: PUSH1 0xa0 00000e1e: PUSH1 0x02 00000e20: EXP 00000e21: SUB 00000e22: AND 00000e23: PUSH1 0x01 00000e25: PUSH1 0xa0 00000e27: PUSH1 0x02 00000e29: EXP 00000e2a: SUB 00000e2b: AND 00000e2c: PUSH1 0x60 00000e2e: PUSH1 0x02 00000e30: EXP 00000e31: MUL 00000e32: DUP2 00000e33: MSTORE 00000e34: PUSH1 0x14 00000e36: ADD 00000e37: DUP7 00000e38: DUP2 00000e39: MSTORE 00000e3a: PUSH1 0x20 00000e3c: ADD 00000e3d: DUP6 00000e3e: PUSH1 0x01 00000e40: PUSH1 0xa0 00000e42: PUSH1 0x02 00000e44: EXP 00000e45: SUB 00000e46: AND 00000e47: PUSH1 0x01 00000e49: PUSH1 0xa0 00000e4b: PUSH1 0x02 00000e4d: EXP 00000e4e: SUB 00000e4f: AND 00000e50: PUSH1 0x60 00000e52: PUSH1 0x02 00000e54: EXP 00000e55: MUL 00000e56: DUP2 00000e57: MSTORE 00000e58: PUSH1 0x14 00000e5a: ADD 00000e5b: DUP5 00000e5c: DUP2 00000e5d: MSTORE 00000e5e: PUSH1 0x20 00000e60: ADD 00000e61: DUP4 00000e62: DUP2 00000e63: MSTORE 00000e64: PUSH1 0x20 00000e66: ADD 00000e67: DUP3 00000e68: DUP2 00000e69: MSTORE 00000e6a: PUSH1 0x20 00000e6c: ADD 00000e6d: SWAP8 00000e6e: POP 00000e6f: POP 00000e70: POP 00000e71: POP 00000e72: POP 00000e73: POP 00000e74: POP 00000e75: POP 00000e76: PUSH1 0x20 00000e78: PUSH1 0x40 00000e7a: MLOAD 00000e7b: DUP1 00000e7c: DUP4 00000e7d: SUB 00000e7e: DUP2 00000e7f: PUSH1 0x00 00000e81: DUP7 00000e82: PUSH2 0x61da 00000e85: GAS 00000e86: SUB 00000e87: CALL 00000e88: ISZERO 00000e89: PUSH2 0x0000 00000e8c: JUMPI 00000e8d: POP 00000e8e: POP 00000e8f: PUSH1 0x40 00000e91: DUP1 00000e92: MLOAD 00000e93: MLOAD 00000e94: PUSH1 0x01 00000e96: PUSH1 0xa0 00000e98: PUSH1 0x02 00000e9a: EXP 00000e9b: SUB 00000e9c: DUP9 00000e9d: AND 00000e9e: PUSH1 0x00 00000ea0: SWAP1 00000ea1: DUP2 00000ea2: MSTORE 00000ea3: PUSH1 0x08 00000ea5: PUSH1 0x20 00000ea7: SWAP1 00000ea8: DUP2 00000ea9: MSTORE 00000eaa: DUP4 00000eab: DUP3 00000eac: KECCAK256 00000ead: DUP4 00000eae: DUP4 00000eaf: MSTORE 00000eb0: SWAP1 00000eb1: MSTORE 00000eb2: SWAP2 00000eb3: SWAP1 00000eb4: SWAP2 00000eb5: KECCAK256 00000eb6: SLOAD 00000eb7: SWAP3 00000eb8: POP 00000eb9: SWAP1 00000eba: POP 00000ebb: JUMPDEST 00000ebc: POP 00000ebd: SWAP11 00000ebe: SWAP10 00000ebf: POP 00000ec0: POP 00000ec1: POP 00000ec2: POP 00000ec3: POP 00000ec4: POP 00000ec5: POP 00000ec6: POP 00000ec7: POP 00000ec8: POP 00000ec9: JUMP 00000eca: JUMPDEST 00000ecb: PUSH1 0x06 00000ecd: PUSH1 0x20 00000ecf: SWAP1 00000ed0: DUP2 00000ed1: MSTORE 00000ed2: PUSH1 0x00 00000ed4: SWAP3 00000ed5: DUP4 00000ed6: MSTORE 00000ed7: PUSH1 0x40 00000ed9: DUP1 00000eda: DUP5 00000edb: KECCAK256 00000edc: SWAP1 00000edd: SWAP2 00000ede: MSTORE 00000edf: SWAP1 00000ee0: DUP3 00000ee1: MSTORE 00000ee2: SWAP1 00000ee3: KECCAK256 00000ee4: SLOAD 00000ee5: DUP2 00000ee6: JUMP 00000ee7: JUMPDEST 00000ee8: PUSH1 0x00 00000eea: SLOAD 00000eeb: CALLER 00000eec: PUSH1 0x01 00000eee: PUSH1 0xa0 00000ef0: PUSH1 0x02 00000ef2: EXP 00000ef3: SUB 00000ef4: SWAP1 00000ef5: DUP2 00000ef6: AND 00000ef7: SWAP2 00000ef8: AND 00000ef9: EQ 00000efa: PUSH2 0x0f02 00000efd: JUMPI 00000efe: PUSH2 0x0000 00000f01: JUMP 00000f02: JUMPDEST 00000f03: PUSH1 0x03 00000f05: SLOAD 00000f06: DUP2 00000f07: GT 00000f08: ISZERO 00000f09: PUSH2 0x0f11 00000f0c: JUMPI 00000f0d: PUSH2 0x0000 00000f10: JUMP 00000f11: JUMPDEST 00000f12: PUSH1 0x03 00000f14: DUP2 00000f15: SWAP1 00000f16: SSTORE 00000f17: JUMPDEST 00000f18: POP 00000f19: JUMP 00000f1a: JUMPDEST 00000f1b: PUSH1 0x03 00000f1d: SLOAD 00000f1e: DUP2 00000f1f: JUMP 00000f20: JUMPDEST 00000f21: PUSH1 0x00 00000f23: SLOAD 00000f24: CALLER 00000f25: PUSH1 0x01 00000f27: PUSH1 0xa0 00000f29: PUSH1 0x02 00000f2b: EXP 00000f2c: SUB 00000f2d: SWAP1 00000f2e: DUP2 00000f2f: AND 00000f30: SWAP2 00000f31: AND 00000f32: EQ 00000f33: PUSH2 0x0f3b 00000f36: JUMPI 00000f37: PUSH2 0x0000 00000f3a: JUMP 00000f3b: JUMPDEST 00000f3c: PUSH1 0x05 00000f3e: SLOAD 00000f3f: DUP2 00000f40: LT 00000f41: DUP1 00000f42: PUSH2 0x0f4c 00000f45: JUMPI 00000f46: POP 00000f47: PUSH1 0x04 00000f49: SLOAD 00000f4a: DUP2 00000f4b: GT 00000f4c: JUMPDEST 00000f4d: ISZERO 00000f4e: PUSH2 0x0f56 00000f51: JUMPI 00000f52: PUSH2 0x0000 00000f55: JUMP 00000f56: JUMPDEST 00000f57: PUSH1 0x05 00000f59: DUP2 00000f5a: SWAP1 00000f5b: SSTORE 00000f5c: JUMPDEST 00000f5d: POP 00000f5e: JUMP 00000f5f: JUMPDEST 00000f60: PUSH1 0x01 00000f62: SLOAD 00000f63: PUSH1 0x01 00000f65: PUSH1 0xa0 00000f67: PUSH1 0x02 00000f69: EXP 00000f6a: SUB 00000f6b: AND 00000f6c: DUP2 00000f6d: JUMP 00000f6e: JUMPDEST 00000f6f: PUSH1 0x01 00000f71: PUSH1 0xa0 00000f73: PUSH1 0x02 00000f75: EXP 00000f76: SUB 00000f77: DUP1 00000f78: DUP14 00000f79: AND 00000f7a: PUSH1 0x00 00000f7c: SWAP1 00000f7d: DUP2 00000f7e: MSTORE 00000f7f: PUSH1 0x06 00000f81: PUSH1 0x20 00000f83: SWAP1 00000f84: DUP2 00000f85: MSTORE 00000f86: PUSH1 0x40 00000f88: DUP1 00000f89: DUP4 00000f8a: KECCAK256 00000f8b: SWAP4 00000f8c: DUP6 00000f8d: AND 00000f8e: DUP4 00000f8f: MSTORE 00000f90: SWAP3 00000f91: SWAP1 00000f92: MSTORE 00000f93: SWAP1 00000f94: DUP2 00000f95: KECCAK256 00000f96: SLOAD 00000f97: DUP4 00000f98: SWAP1 00000f99: LT 00000f9a: DUP1 00000f9b: ISZERO 00000f9c: SWAP1 00000f9d: PUSH2 0x0fb7 00000fa0: JUMPI 00000fa1: POP 00000fa2: DUP3 00000fa3: PUSH2 0x0fb4 00000fa6: DUP15 00000fa7: DUP15 00000fa8: DUP15 00000fa9: DUP15 00000faa: DUP15 00000fab: DUP15 00000fac: DUP15 00000fad: DUP15 00000fae: DUP15 00000faf: DUP15 00000fb0: PUSH2 0x1377 00000fb3: JUMP 00000fb4: JUMPDEST 00000fb5: LT 00000fb6: ISZERO 00000fb7: JUMPDEST 00000fb8: ISZERO 00000fb9: ISZERO 00000fba: PUSH2 0x0fc5 00000fbd: JUMPI 00000fbe: POP 00000fbf: PUSH1 0x00 00000fc1: PUSH2 0x0fc9 00000fc4: JUMP 00000fc5: JUMPDEST 00000fc6: POP 00000fc7: PUSH1 0x01 00000fc9: JUMPDEST 00000fca: SWAP13 00000fcb: SWAP12 00000fcc: POP 00000fcd: POP 00000fce: POP 00000fcf: POP 00000fd0: POP 00000fd1: POP 00000fd2: POP 00000fd3: POP 00000fd4: POP 00000fd5: POP 00000fd6: POP 00000fd7: POP 00000fd8: JUMP 00000fd9: JUMPDEST 00000fda: PUSH1 0x00 00000fdc: SLOAD 00000fdd: CALLER 00000fde: PUSH1 0x01 00000fe0: PUSH1 0xa0 00000fe2: PUSH1 0x02 00000fe4: EXP 00000fe5: SUB 00000fe6: SWAP1 00000fe7: DUP2 00000fe8: AND 00000fe9: SWAP2 00000fea: AND 00000feb: EQ 00000fec: PUSH2 0x0ff4 00000fef: JUMPI 00000ff0: PUSH2 0x0000 00000ff3: JUMP 00000ff4: JUMPDEST 00000ff5: PUSH1 0x01 00000ff7: DUP1 00000ff8: SLOAD 00000ff9: PUSH1 0x01 00000ffb: PUSH1 0xa0 00000ffd: PUSH1 0x02 00000fff: EXP 00001000: SUB 00001001: NOT 00001002: AND 00001003: PUSH1 0x01 00001005: PUSH1 0xa0 00001007: PUSH1 0x02 00001009: EXP 0000100a: SUB 0000100b: DUP4 0000100c: AND 0000100d: OR 0000100e: SWAP1 0000100f: SSTORE 00001010: JUMPDEST 00001011: POP 00001012: JUMP 00001013: JUMPDEST 00001014: PUSH1 0x05 00001016: SLOAD 00001017: DUP2 00001018: JUMP 00001019: JUMPDEST 0000101a: PUSH1 0x00 0000101c: SLOAD 0000101d: CALLER 0000101e: PUSH1 0x01 00001020: PUSH1 0xa0 00001022: PUSH1 0x02 00001024: EXP 00001025: SUB 00001026: SWAP1 00001027: DUP2 00001028: AND 00001029: SWAP2 0000102a: AND 0000102b: EQ 0000102c: PUSH2 0x1034 0000102f: JUMPI 00001030: PUSH2 0x0000 00001033: JUMP 00001034: JUMPDEST 00001035: PUSH1 0x04 00001037: SLOAD 00001038: DUP2 00001039: GT 0000103a: DUP1 0000103b: PUSH2 0x1045 0000103e: JUMPI 0000103f: POP 00001040: PUSH1 0x05 00001042: SLOAD 00001043: DUP2 00001044: LT 00001045: JUMPDEST 00001046: ISZERO 00001047: PUSH2 0x104f 0000104a: JUMPI 0000104b: PUSH2 0x0000 0000104e: JUMP 0000104f: JUMPDEST 00001050: PUSH1 0x04 00001052: DUP2 00001053: SWAP1 00001054: SSTORE 00001055: JUMPDEST 00001056: POP 00001057: JUMP 00001058: JUMPDEST 00001059: PUSH1 0x00 0000105b: SLOAD 0000105c: CALLER 0000105d: PUSH1 0x01 0000105f: PUSH1 0xa0 00001061: PUSH1 0x02 00001063: EXP 00001064: SUB 00001065: SWAP1 00001066: DUP2 00001067: AND 00001068: SWAP2 00001069: AND 0000106a: EQ 0000106b: PUSH2 0x1073 0000106e: JUMPI 0000106f: PUSH2 0x0000 00001072: JUMP 00001073: JUMPDEST 00001074: PUSH1 0x00 00001076: DUP1 00001077: SLOAD 00001078: PUSH1 0x01 0000107a: PUSH1 0xa0 0000107c: PUSH1 0x02 0000107e: EXP 0000107f: SUB 00001080: NOT 00001081: AND 00001082: PUSH1 0x01 00001084: PUSH1 0xa0 00001086: PUSH1 0x02 00001088: EXP 00001089: SUB 0000108a: DUP4 0000108b: AND 0000108c: OR 0000108d: SWAP1 0000108e: SSTORE 0000108f: JUMPDEST 00001090: POP 00001091: JUMP 00001092: JUMPDEST 00001093: PUSH1 0x01 00001095: PUSH1 0xa0 00001097: PUSH1 0x02 00001099: EXP 0000109a: SUB 0000109b: DUP3 0000109c: AND 0000109d: ISZERO 0000109e: ISZERO 0000109f: PUSH2 0x10a7 000010a2: JUMPI 000010a3: PUSH2 0x0000 000010a6: JUMP 000010a7: JUMPDEST 000010a8: PUSH1 0x01 000010aa: PUSH1 0xa0 000010ac: PUSH1 0x02 000010ae: EXP 000010af: SUB 000010b0: DUP1 000010b1: DUP4 000010b2: AND 000010b3: PUSH1 0x00 000010b5: SWAP1 000010b6: DUP2 000010b7: MSTORE 000010b8: PUSH1 0x06 000010ba: PUSH1 0x20 000010bc: SWAP1 000010bd: DUP2 000010be: MSTORE 000010bf: PUSH1 0x40 000010c1: DUP1 000010c2: DUP4 000010c3: KECCAK256 000010c4: CALLER 000010c5: SWAP1 000010c6: SWAP5 000010c7: AND 000010c8: DUP4 000010c9: MSTORE 000010ca: SWAP3 000010cb: SWAP1 000010cc: MSTORE 000010cd: KECCAK256 000010ce: SLOAD 000010cf: DUP2 000010d0: SWAP1 000010d1: LT 000010d2: ISZERO 000010d3: PUSH2 0x10db 000010d6: JUMPI 000010d7: PUSH2 0x0000 000010da: JUMP 000010db: JUMPDEST 000010dc: PUSH1 0x01 000010de: PUSH1 0xa0 000010e0: PUSH1 0x02 000010e2: EXP 000010e3: SUB 000010e4: DUP1 000010e5: DUP4 000010e6: AND 000010e7: PUSH1 0x00 000010e9: SWAP1 000010ea: DUP2 000010eb: MSTORE 000010ec: PUSH1 0x06 000010ee: PUSH1 0x20 000010f0: SWAP1 000010f1: DUP2 000010f2: MSTORE 000010f3: PUSH1 0x40 000010f5: DUP1 000010f6: DUP4 000010f7: KECCAK256 000010f8: CALLER 000010f9: SWAP1 000010fa: SWAP5 000010fb: AND 000010fc: DUP4 000010fd: MSTORE 000010fe: SWAP3 000010ff: SWAP1 00001100: MSTORE 00001101: KECCAK256 00001102: SLOAD 00001103: PUSH2 0x110c 00001106: SWAP1 00001107: DUP3 00001108: PUSH2 0x18a4 0000110b: JUMP 0000110c: JUMPDEST 0000110d: PUSH1 0x01 0000110f: PUSH1 0xa0 00001111: PUSH1 0x02 00001113: EXP 00001114: SUB 00001115: DUP1 00001116: DUP5 00001117: AND 00001118: PUSH1 0x00 0000111a: DUP2 0000111b: DUP2 0000111c: MSTORE 0000111d: PUSH1 0x06 0000111f: PUSH1 0x20 00001121: SWAP1 00001122: DUP2 00001123: MSTORE 00001124: PUSH1 0x40 00001126: DUP1 00001127: DUP4 00001128: KECCAK256 00001129: CALLER 0000112a: SWAP1 0000112b: SWAP6 0000112c: AND 0000112d: DUP1 0000112e: DUP5 0000112f: MSTORE 00001130: SWAP5 00001131: DUP3 00001132: MSTORE 00001133: DUP1 00001134: DUP4 00001135: KECCAK256 00001136: SWAP6 00001137: SWAP1 00001138: SWAP6 00001139: SSTORE 0000113a: DUP5 0000113b: MLOAD 0000113c: DUP2 0000113d: ADD 0000113e: DUP3 0000113f: SWAP1 00001140: MSTORE 00001141: DUP5 00001142: MLOAD 00001143: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001164: DUP2 00001165: MSTORE 00001166: PUSH1 0x04 00001168: DUP2 00001169: ADD 0000116a: SWAP5 0000116b: SWAP1 0000116c: SWAP5 0000116d: MSTORE 0000116e: PUSH1 0x24 00001170: DUP5 00001171: ADD 00001172: DUP7 00001173: SWAP1 00001174: MSTORE 00001175: SWAP4 00001176: MLOAD 00001177: SWAP2 00001178: SWAP4 00001179: PUSH4 0xa9059cbb 0000117e: SWAP4 0000117f: PUSH1 0x44 00001181: DUP1 00001182: DUP3 00001183: ADD 00001184: SWAP5 00001185: SWAP3 00001186: SWAP4 00001187: SWAP2 00001188: DUP4 00001189: SWAP1 0000118a: SUB 0000118b: ADD 0000118c: SWAP1 0000118d: DUP3 0000118e: SWAP1 0000118f: DUP8 00001190: DUP1 00001191: EXTCODESIZE 00001192: ISZERO 00001193: PUSH2 0x0000 00001196: JUMPI 00001197: PUSH1 0x32 00001199: GAS 0000119a: SUB 0000119b: CALL 0000119c: ISZERO 0000119d: PUSH2 0x0000 000011a0: JUMPI 000011a1: POP 000011a2: POP 000011a3: PUSH1 0x40 000011a5: MLOAD 000011a6: MLOAD 000011a7: ISZERO 000011a8: ISZERO 000011a9: SWAP1 000011aa: POP 000011ab: PUSH2 0x11b3 000011ae: JUMPI 000011af: PUSH2 0x0000 000011b2: JUMP 000011b3: JUMPDEST 000011b4: PUSH1 0x01 000011b6: PUSH1 0xa0 000011b8: PUSH1 0x02 000011ba: EXP 000011bb: SUB 000011bc: DUP1 000011bd: DUP4 000011be: AND 000011bf: PUSH1 0x00 000011c1: DUP2 000011c2: DUP2 000011c3: MSTORE 000011c4: PUSH1 0x06 000011c6: PUSH1 0x20 000011c8: SWAP1 000011c9: DUP2 000011ca: MSTORE 000011cb: PUSH1 0x40 000011cd: DUP1 000011ce: DUP4 000011cf: KECCAK256 000011d0: CALLER 000011d1: SWAP6 000011d2: SWAP1 000011d3: SWAP6 000011d4: AND 000011d5: DUP1 000011d6: DUP5 000011d7: MSTORE 000011d8: SWAP5 000011d9: DUP3 000011da: MSTORE 000011db: SWAP2 000011dc: DUP3 000011dd: SWAP1 000011de: KECCAK256 000011df: SLOAD 000011e0: DUP3 000011e1: MLOAD 000011e2: SWAP4 000011e3: DUP5 000011e4: MSTORE 000011e5: SWAP1 000011e6: DUP4 000011e7: ADD 000011e8: SWAP4 000011e9: SWAP1 000011ea: SWAP4 000011eb: MSTORE 000011ec: DUP2 000011ed: DUP2 000011ee: ADD 000011ef: DUP5 000011f0: SWAP1 000011f1: MSTORE 000011f2: PUSH1 0x60 000011f4: DUP3 000011f5: ADD 000011f6: SWAP3 000011f7: SWAP1 000011f8: SWAP3 000011f9: MSTORE 000011fa: SWAP1 000011fb: MLOAD 000011fc: PUSH32 0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567 0000121d: SWAP2 0000121e: DUP2 0000121f: SWAP1 00001220: SUB 00001221: PUSH1 0x80 00001223: ADD 00001224: SWAP1 00001225: LOG1 00001226: JUMPDEST 00001227: POP 00001228: POP 00001229: JUMP 0000122a: JUMPDEST 0000122b: PUSH1 0x07 0000122d: PUSH1 0x20 0000122f: SWAP1 00001230: DUP2 00001231: MSTORE 00001232: PUSH1 0x00 00001234: SWAP3 00001235: DUP4 00001236: MSTORE 00001237: PUSH1 0x40 00001239: DUP1 0000123a: DUP5 0000123b: KECCAK256 0000123c: SWAP1 0000123d: SWAP2 0000123e: MSTORE 0000123f: SWAP1 00001240: DUP3 00001241: MSTORE 00001242: SWAP1 00001243: KECCAK256 00001244: SLOAD 00001245: PUSH1 0xff 00001247: AND 00001248: DUP2 00001249: JUMP 0000124a: JUMPDEST 0000124b: PUSH1 0x04 0000124d: SLOAD 0000124e: DUP2 0000124f: JUMP 00001250: JUMPDEST 00001251: CALLER 00001252: PUSH1 0x01 00001254: PUSH1 0xa0 00001256: PUSH1 0x02 00001258: EXP 00001259: SUB 0000125a: AND 0000125b: PUSH1 0x00 0000125d: SWAP1 0000125e: DUP2 0000125f: MSTORE 00001260: PUSH1 0x00 00001262: DUP1 00001263: MLOAD 00001264: PUSH1 0x20 00001266: PUSH2 0x18fa 00001269: DUP4 0000126a: CODECOPY 0000126b: DUP2 0000126c: MLOAD 0000126d: SWAP2 0000126e: MSTORE 0000126f: PUSH1 0x20 00001271: MSTORE 00001272: PUSH1 0x40 00001274: SWAP1 00001275: KECCAK256 00001276: SLOAD 00001277: PUSH2 0x1280 0000127a: SWAP1 0000127b: CALLVALUE 0000127c: PUSH2 0x15b5 0000127f: JUMP 00001280: JUMPDEST 00001281: CALLER 00001282: PUSH1 0x01 00001284: PUSH1 0xa0 00001286: PUSH1 0x02 00001288: EXP 00001289: SUB 0000128a: AND 0000128b: PUSH1 0x00 0000128d: DUP2 0000128e: DUP2 0000128f: MSTORE 00001290: PUSH1 0x00 00001292: DUP1 00001293: MLOAD 00001294: PUSH1 0x20 00001296: PUSH2 0x18fa 00001299: DUP4 0000129a: CODECOPY 0000129b: DUP2 0000129c: MLOAD 0000129d: SWAP2 0000129e: MSTORE 0000129f: PUSH1 0x20 000012a1: SWAP1 000012a2: DUP2 000012a3: MSTORE 000012a4: PUSH1 0x40 000012a6: DUP1 000012a7: DUP4 000012a8: KECCAK256 000012a9: DUP6 000012aa: SWAP1 000012ab: SSTORE 000012ac: DUP1 000012ad: MLOAD 000012ae: SWAP3 000012af: DUP4 000012b0: MSTORE 000012b1: SWAP1 000012b2: DUP3 000012b3: ADD 000012b4: SWAP3 000012b5: SWAP1 000012b6: SWAP3 000012b7: MSTORE 000012b8: CALLVALUE 000012b9: DUP2 000012ba: DUP4 000012bb: ADD 000012bc: MSTORE 000012bd: PUSH1 0x60 000012bf: DUP2 000012c0: ADD 000012c1: SWAP3 000012c2: SWAP1 000012c3: SWAP3 000012c4: MSTORE 000012c5: MLOAD 000012c6: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 000012e7: SWAP2 000012e8: DUP2 000012e9: SWAP1 000012ea: SUB 000012eb: PUSH1 0x80 000012ed: ADD 000012ee: SWAP1 000012ef: LOG1 000012f0: JUMPDEST 000012f1: JUMP 000012f2: JUMPDEST 000012f3: PUSH1 0x00 000012f5: SLOAD 000012f6: CALLER 000012f7: PUSH1 0x01 000012f9: PUSH1 0xa0 000012fb: PUSH1 0x02 000012fd: EXP 000012fe: SUB 000012ff: SWAP1 00001300: DUP2 00001301: AND 00001302: SWAP2 00001303: AND 00001304: EQ 00001305: PUSH2 0x130d 00001308: JUMPI 00001309: PUSH2 0x0000 0000130c: JUMP 0000130d: JUMPDEST 0000130e: PUSH1 0x02 00001310: DUP1 00001311: SLOAD 00001312: PUSH1 0x01 00001314: PUSH1 0xa0 00001316: PUSH1 0x02 00001318: EXP 00001319: SUB 0000131a: NOT 0000131b: AND 0000131c: PUSH1 0x01 0000131e: PUSH1 0xa0 00001320: PUSH1 0x02 00001322: EXP 00001323: SUB 00001324: DUP4 00001325: AND 00001326: OR 00001327: SWAP1 00001328: SSTORE 00001329: JUMPDEST 0000132a: POP 0000132b: JUMP 0000132c: JUMPDEST 0000132d: PUSH1 0x02 0000132f: SLOAD 00001330: PUSH1 0x01 00001332: PUSH1 0xa0 00001334: PUSH1 0x02 00001336: EXP 00001337: SUB 00001338: AND 00001339: DUP2 0000133a: JUMP 0000133b: JUMPDEST 0000133c: PUSH1 0x01 0000133e: PUSH1 0xa0 00001340: PUSH1 0x02 00001342: EXP 00001343: SUB 00001344: DUP1 00001345: DUP4 00001346: AND 00001347: PUSH1 0x00 00001349: SWAP1 0000134a: DUP2 0000134b: MSTORE 0000134c: PUSH1 0x06 0000134e: PUSH1 0x20 00001350: SWAP1 00001351: DUP2 00001352: MSTORE 00001353: PUSH1 0x40 00001355: DUP1 00001356: DUP4 00001357: KECCAK256 00001358: SWAP4 00001359: DUP6 0000135a: AND 0000135b: DUP4 0000135c: MSTORE 0000135d: SWAP3 0000135e: SWAP1 0000135f: MSTORE 00001360: KECCAK256 00001361: SLOAD 00001362: JUMPDEST 00001363: SWAP3 00001364: SWAP2 00001365: POP 00001366: POP 00001367: JUMP 00001368: JUMPDEST 00001369: PUSH1 0x00 0000136b: SLOAD 0000136c: PUSH1 0x01 0000136e: PUSH1 0xa0 00001370: PUSH1 0x02 00001372: EXP 00001373: SUB 00001374: AND 00001375: DUP2 00001376: JUMP 00001377: JUMPDEST 00001378: PUSH1 0x00 0000137a: PUSH1 0x00 0000137c: PUSH1 0x00 0000137e: PUSH1 0x00 00001380: PUSH1 0x02 00001382: ADDRESS 00001383: DUP16 00001384: DUP16 00001385: DUP16 00001386: DUP16 00001387: DUP16 00001388: DUP16 00001389: PUSH1 0x00 0000138b: PUSH1 0x40 0000138d: MLOAD 0000138e: PUSH1 0x20 00001390: ADD 00001391: MSTORE 00001392: PUSH1 0x40 00001394: MLOAD 00001395: DUP1 00001396: DUP9 00001397: PUSH1 0x01 00001399: PUSH1 0xa0 0000139b: PUSH1 0x02 0000139d: EXP 0000139e: SUB 0000139f: AND 000013a0: PUSH1 0x01 000013a2: PUSH1 0xa0 000013a4: PUSH1 0x02 000013a6: EXP 000013a7: SUB 000013a8: AND 000013a9: PUSH1 0x60 000013ab: PUSH1 0x02 000013ad: EXP 000013ae: MUL 000013af: DUP2 000013b0: MSTORE 000013b1: PUSH1 0x14 000013b3: ADD 000013b4: DUP8 000013b5: PUSH1 0x01 000013b7: PUSH1 0xa0 000013b9: PUSH1 0x02 000013bb: EXP 000013bc: SUB 000013bd: AND 000013be: PUSH1 0x01 000013c0: PUSH1 0xa0 000013c2: PUSH1 0x02 000013c4: EXP 000013c5: SUB 000013c6: AND 000013c7: PUSH1 0x60 000013c9: PUSH1 0x02 000013cb: EXP 000013cc: MUL 000013cd: DUP2 000013ce: MSTORE 000013cf: PUSH1 0x14 000013d1: ADD 000013d2: DUP7 000013d3: DUP2 000013d4: MSTORE 000013d5: PUSH1 0x20 000013d7: ADD 000013d8: DUP6 000013d9: PUSH1 0x01 000013db: PUSH1 0xa0 000013dd: PUSH1 0x02 000013df: EXP 000013e0: SUB 000013e1: AND 000013e2: PUSH1 0x01 000013e4: PUSH1 0xa0 000013e6: PUSH1 0x02 000013e8: EXP 000013e9: SUB 000013ea: AND 000013eb: PUSH1 0x60 000013ed: PUSH1 0x02 000013ef: EXP 000013f0: MUL 000013f1: DUP2 000013f2: MSTORE 000013f3: PUSH1 0x14 000013f5: ADD 000013f6: DUP5 000013f7: DUP2 000013f8: MSTORE 000013f9: PUSH1 0x20 000013fb: ADD 000013fc: DUP4 000013fd: DUP2 000013fe: MSTORE 000013ff: PUSH1 0x20 00001401: ADD 00001402: DUP3 00001403: DUP2 00001404: MSTORE 00001405: PUSH1 0x20 00001407: ADD 00001408: SWAP8 00001409: POP 0000140a: POP 0000140b: POP 0000140c: POP 0000140d: POP 0000140e: POP 0000140f: POP 00001410: POP 00001411: PUSH1 0x20 00001413: PUSH1 0x40 00001415: MLOAD 00001416: DUP1 00001417: DUP4 00001418: SUB 00001419: DUP2 0000141a: PUSH1 0x00 0000141c: DUP7 0000141d: PUSH2 0x61da 00001420: GAS 00001421: SUB 00001422: CALL 00001423: ISZERO 00001424: PUSH2 0x0000 00001427: JUMPI 00001428: POP 00001429: POP 0000142a: PUSH1 0x40 0000142c: DUP1 0000142d: MLOAD 0000142e: MLOAD 0000142f: PUSH1 0x01 00001431: PUSH1 0xa0 00001433: PUSH1 0x02 00001435: EXP 00001436: SUB 00001437: DUP11 00001438: AND 00001439: PUSH1 0x00 0000143b: SWAP1 0000143c: DUP2 0000143d: MSTORE 0000143e: PUSH1 0x07 00001440: PUSH1 0x20 00001442: SWAP1 00001443: DUP2 00001444: MSTORE 00001445: DUP4 00001446: DUP3 00001447: KECCAK256 00001448: DUP4 00001449: DUP4 0000144a: MSTORE 0000144b: SWAP1 0000144c: MSTORE 0000144d: SWAP2 0000144e: SWAP1 0000144f: SWAP2 00001450: KECCAK256 00001451: SLOAD 00001452: SWAP1 00001453: SWAP4 00001454: POP 00001455: PUSH1 0xff 00001457: AND 00001458: DUP1 00001459: PUSH2 0x1508 0000145c: JUMPI 0000145d: POP 0000145e: PUSH1 0x40 00001460: DUP1 00001461: MLOAD 00001462: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00001483: DUP2 00001484: MSTORE 00001485: PUSH1 0x1c 00001487: DUP2 00001488: ADD 00001489: DUP6 0000148a: SWAP1 0000148b: MSTORE 0000148c: DUP2 0000148d: MLOAD 0000148e: SWAP1 0000148f: DUP2 00001490: SWAP1 00001491: SUB 00001492: PUSH1 0x3c 00001494: ADD 00001495: DUP2 00001496: KECCAK256 00001497: PUSH1 0x00 00001499: DUP3 0000149a: DUP2 0000149b: MSTORE 0000149c: PUSH1 0x20 0000149e: DUP4 0000149f: DUP2 000014a0: ADD 000014a1: DUP6 000014a2: MSTORE 000014a3: SWAP3 000014a4: DUP5 000014a5: ADD 000014a6: DUP2 000014a7: SWAP1 000014a8: MSTORE 000014a9: DUP4 000014aa: MLOAD 000014ab: SWAP2 000014ac: DUP3 000014ad: MSTORE 000014ae: PUSH1 0xff 000014b0: DUP12 000014b1: AND 000014b2: DUP3 000014b3: DUP5 000014b4: ADD 000014b5: MSTORE 000014b6: DUP2 000014b7: DUP5 000014b8: ADD 000014b9: DUP11 000014ba: SWAP1 000014bb: MSTORE 000014bc: PUSH1 0x60 000014be: DUP3 000014bf: ADD 000014c0: DUP10 000014c1: SWAP1 000014c2: MSTORE 000014c3: SWAP3 000014c4: MLOAD 000014c5: PUSH1 0x01 000014c7: PUSH1 0xa0 000014c9: PUSH1 0x02 000014cb: EXP 000014cc: SUB 000014cd: DUP13 000014ce: AND 000014cf: SWAP4 000014d0: PUSH1 0x01 000014d2: SWAP4 000014d3: PUSH1 0x80 000014d5: DUP1 000014d6: DUP6 000014d7: ADD 000014d8: SWAP5 000014d9: SWAP2 000014da: SWAP4 000014db: PUSH1 0x1f 000014dd: NOT 000014de: DUP2 000014df: ADD 000014e0: SWAP4 000014e1: SWAP3 000014e2: DUP2 000014e3: SWAP1 000014e4: SUB 000014e5: SWAP1 000014e6: SWAP2 000014e7: ADD 000014e8: SWAP2 000014e9: DUP7 000014ea: PUSH2 0x61da 000014ed: GAS 000014ee: SUB 000014ef: CALL 000014f0: ISZERO 000014f1: PUSH2 0x0000 000014f4: JUMPI 000014f5: POP 000014f6: POP 000014f7: PUSH1 0x20 000014f9: PUSH1 0x40 000014fb: MLOAD 000014fc: SUB 000014fd: MLOAD 000014fe: PUSH1 0x01 00001500: PUSH1 0xa0 00001502: PUSH1 0x02 00001504: EXP 00001505: SUB 00001506: AND 00001507: EQ 00001508: JUMPDEST 00001509: DUP1 0000150a: ISZERO 0000150b: PUSH2 0x1514 0000150e: JUMPI 0000150f: POP 00001510: DUP10 00001511: NUMBER 00001512: GT 00001513: ISZERO 00001514: JUMPDEST 00001515: ISZERO 00001516: ISZERO 00001517: PUSH2 0x1523 0000151a: JUMPI 0000151b: PUSH1 0x00 0000151d: SWAP4 0000151e: POP 0000151f: PUSH2 0x15a4 00001522: JUMP 00001523: JUMPDEST 00001524: PUSH1 0x01 00001526: PUSH1 0xa0 00001528: PUSH1 0x02 0000152a: EXP 0000152b: SUB 0000152c: DUP9 0000152d: AND 0000152e: PUSH1 0x00 00001530: SWAP1 00001531: DUP2 00001532: MSTORE 00001533: PUSH1 0x08 00001535: PUSH1 0x20 00001537: SWAP1 00001538: DUP2 00001539: MSTORE 0000153a: PUSH1 0x40 0000153c: DUP1 0000153d: DUP4 0000153e: KECCAK256 0000153f: DUP7 00001540: DUP5 00001541: MSTORE 00001542: SWAP1 00001543: SWAP2 00001544: MSTORE 00001545: SWAP1 00001546: KECCAK256 00001547: SLOAD 00001548: PUSH2 0x1552 0000154b: SWAP1 0000154c: DUP15 0000154d: SWAP1 0000154e: PUSH2 0x18a4 00001551: JUMP 00001552: JUMPDEST 00001553: PUSH1 0x01 00001555: PUSH1 0xa0 00001557: PUSH1 0x02 00001559: EXP 0000155a: SUB 0000155b: DUP1 0000155c: DUP15 0000155d: AND 0000155e: PUSH1 0x00 00001560: SWAP1 00001561: DUP2 00001562: MSTORE 00001563: PUSH1 0x06 00001565: PUSH1 0x20 00001567: SWAP1 00001568: DUP2 00001569: MSTORE 0000156a: PUSH1 0x40 0000156c: DUP1 0000156d: DUP4 0000156e: KECCAK256 0000156f: SWAP4 00001570: DUP14 00001571: AND 00001572: DUP4 00001573: MSTORE 00001574: SWAP3 00001575: SWAP1 00001576: MSTORE 00001577: KECCAK256 00001578: SLOAD 00001579: SWAP1 0000157a: SWAP3 0000157b: POP 0000157c: DUP12 0000157d: SWAP1 0000157e: PUSH2 0x1587 00001581: SWAP1 00001582: DUP16 00001583: PUSH2 0x18bd 00001586: JUMP 00001587: JUMPDEST 00001588: DUP2 00001589: ISZERO 0000158a: PUSH2 0x0000 0000158d: JUMPI 0000158e: DIV 0000158f: SWAP1 00001590: POP 00001591: DUP1 00001592: DUP3 00001593: LT 00001594: ISZERO 00001595: PUSH2 0x15a0 00001598: JUMPI 00001599: DUP2 0000159a: SWAP4 0000159b: POP 0000159c: PUSH2 0x15a4 0000159f: JUMP 000015a0: JUMPDEST 000015a1: DUP1 000015a2: SWAP4 000015a3: POP 000015a4: JUMPDEST 000015a5: POP 000015a6: POP 000015a7: POP 000015a8: SWAP11 000015a9: SWAP10 000015aa: POP 000015ab: POP 000015ac: POP 000015ad: POP 000015ae: POP 000015af: POP 000015b0: POP 000015b1: POP 000015b2: POP 000015b3: POP 000015b4: JUMP 000015b5: JUMPDEST 000015b6: PUSH1 0x00 000015b8: DUP3 000015b9: DUP3 000015ba: ADD 000015bb: PUSH2 0x15d2 000015be: DUP5 000015bf: DUP3 000015c0: LT 000015c1: DUP1 000015c2: ISZERO 000015c3: SWAP1 000015c4: PUSH2 0x15cd 000015c7: JUMPI 000015c8: POP 000015c9: DUP4 000015ca: DUP3 000015cb: LT 000015cc: ISZERO 000015cd: JUMPDEST 000015ce: PUSH2 0x18e9 000015d1: JUMP 000015d2: JUMPDEST 000015d3: DUP1 000015d4: SWAP2 000015d5: POP 000015d6: JUMPDEST 000015d7: POP 000015d8: SWAP3 000015d9: SWAP2 000015da: POP 000015db: POP 000015dc: JUMP 000015dd: JUMPDEST 000015de: PUSH1 0x00 000015e0: PUSH1 0x00 000015e2: PUSH1 0x00 000015e4: PUSH1 0x00 000015e6: PUSH8 0x0de0b6b3a7640000 000015ef: PUSH2 0x15fa 000015f2: DUP7 000015f3: PUSH1 0x03 000015f5: SLOAD 000015f6: PUSH2 0x18bd 000015f9: JUMP 000015fa: JUMPDEST 000015fb: DUP2 000015fc: ISZERO 000015fd: PUSH2 0x0000 00001600: JUMPI 00001601: DIV 00001602: SWAP4 00001603: POP 00001604: PUSH8 0x0de0b6b3a7640000 0000160d: PUSH2 0x1618 00001610: DUP7 00001611: PUSH1 0x04 00001613: SLOAD 00001614: PUSH2 0x18bd 00001617: JUMP 00001618: JUMPDEST 00001619: DUP2 0000161a: ISZERO 0000161b: PUSH2 0x0000 0000161e: JUMPI 0000161f: PUSH1 0x02 00001621: SLOAD 00001622: SWAP2 00001623: SWAP1 00001624: DIV 00001625: SWAP4 00001626: POP 00001627: PUSH1 0x00 00001629: SWAP3 0000162a: POP 0000162b: PUSH1 0x01 0000162d: PUSH1 0xa0 0000162f: PUSH1 0x02 00001631: EXP 00001632: SUB 00001633: AND 00001634: ISZERO 00001635: PUSH2 0x16eb 00001638: JUMPI 00001639: PUSH1 0x02 0000163b: SLOAD 0000163c: PUSH1 0x40 0000163e: DUP1 0000163f: MLOAD 00001640: PUSH1 0x00 00001642: PUSH1 0x20 00001644: SWAP2 00001645: DUP3 00001646: ADD 00001647: DUP2 00001648: SWAP1 00001649: MSTORE 0000164a: DUP3 0000164b: MLOAD 0000164c: PUSH32 0x1cbd051900000000000000000000000000000000000000000000000000000000 0000166d: DUP2 0000166e: MSTORE 0000166f: PUSH1 0x01 00001671: PUSH1 0xa0 00001673: PUSH1 0x02 00001675: EXP 00001676: SUB 00001677: DUP12 00001678: DUP2 00001679: AND 0000167a: PUSH1 0x04 0000167c: DUP4 0000167d: ADD 0000167e: MSTORE 0000167f: SWAP4 00001680: MLOAD 00001681: SWAP4 00001682: SWAP1 00001683: SWAP5 00001684: AND 00001685: SWAP4 00001686: PUSH4 0x1cbd0519 0000168b: SWAP4 0000168c: PUSH1 0x24 0000168e: DUP1 0000168f: DUP4 00001690: ADD 00001691: SWAP5 00001692: SWAP4 00001693: SWAP2 00001694: SWAP3 00001695: DUP4 00001696: SWAP1 00001697: SUB 00001698: ADD 00001699: SWAP1 0000169a: DUP3 0000169b: SWAP1 0000169c: DUP8 0000169d: DUP1 0000169e: EXTCODESIZE 0000169f: ISZERO 000016a0: PUSH2 0x0000 000016a3: JUMPI 000016a4: PUSH1 0x32 000016a6: GAS 000016a7: SUB 000016a8: CALL 000016a9: ISZERO 000016aa: PUSH2 0x0000 000016ad: JUMPI 000016ae: POP 000016af: POP 000016b0: PUSH1 0x40 000016b2: MLOAD 000016b3: MLOAD 000016b4: SWAP2 000016b5: POP 000016b6: POP 000016b7: PUSH1 0x01 000016b9: DUP2 000016ba: EQ 000016bb: ISZERO 000016bc: PUSH2 0x16de 000016bf: JUMPI 000016c0: PUSH8 0x0de0b6b3a7640000 000016c9: PUSH2 0x16d4 000016cc: DUP7 000016cd: PUSH1 0x05 000016cf: SLOAD 000016d0: PUSH2 0x18bd 000016d3: JUMP 000016d4: JUMPDEST 000016d5: DUP2 000016d6: ISZERO 000016d7: PUSH2 0x0000 000016da: JUMPI 000016db: DIV 000016dc: SWAP2 000016dd: POP 000016de: JUMPDEST 000016df: DUP1 000016e0: PUSH1 0x02 000016e2: EQ 000016e3: ISZERO 000016e4: PUSH2 0x16eb 000016e7: JUMPI 000016e8: DUP3 000016e9: SWAP2 000016ea: POP 000016eb: JUMPDEST 000016ec: JUMPDEST 000016ed: PUSH1 0x01 000016ef: PUSH1 0xa0 000016f1: PUSH1 0x02 000016f3: EXP 000016f4: SUB 000016f5: DUP1 000016f6: DUP12 000016f7: AND 000016f8: PUSH1 0x00 000016fa: SWAP1 000016fb: DUP2 000016fc: MSTORE 000016fd: PUSH1 0x06 000016ff: PUSH1 0x20 00001701: SWAP1 00001702: DUP2 00001703: MSTORE 00001704: PUSH1 0x40 00001706: DUP1 00001707: DUP4 00001708: KECCAK256 00001709: CALLER 0000170a: SWAP1 0000170b: SWAP5 0000170c: AND 0000170d: DUP4 0000170e: MSTORE 0000170f: SWAP3 00001710: SWAP1 00001711: MSTORE 00001712: KECCAK256 00001713: SLOAD 00001714: PUSH2 0x1726 00001717: SWAP1 00001718: PUSH2 0x1721 0000171b: DUP8 0000171c: DUP7 0000171d: PUSH2 0x15b5 00001720: JUMP 00001721: JUMPDEST 00001722: PUSH2 0x18a4 00001725: JUMP 00001726: JUMPDEST 00001727: PUSH1 0x01 00001729: PUSH1 0xa0 0000172b: PUSH1 0x02 0000172d: EXP 0000172e: SUB 0000172f: DUP12 00001730: DUP2 00001731: AND 00001732: PUSH1 0x00 00001734: SWAP1 00001735: DUP2 00001736: MSTORE 00001737: PUSH1 0x06 00001739: PUSH1 0x20 0000173b: SWAP1 0000173c: DUP2 0000173d: MSTORE 0000173e: PUSH1 0x40 00001740: DUP1 00001741: DUP4 00001742: KECCAK256 00001743: CALLER 00001744: DUP6 00001745: AND 00001746: DUP5 00001747: MSTORE 00001748: SWAP1 00001749: SWAP2 0000174a: MSTORE 0000174b: DUP1 0000174c: DUP3 0000174d: KECCAK256 0000174e: SWAP4 0000174f: SWAP1 00001750: SWAP4 00001751: SSTORE 00001752: SWAP1 00001753: DUP9 00001754: AND 00001755: DUP2 00001756: MSTORE 00001757: KECCAK256 00001758: SLOAD 00001759: PUSH2 0x1774 0000175c: SWAP1 0000175d: PUSH2 0x176f 00001760: PUSH2 0x1769 00001763: DUP9 00001764: DUP7 00001765: PUSH2 0x15b5 00001768: JUMP 00001769: JUMPDEST 0000176a: DUP8 0000176b: PUSH2 0x18a4 0000176e: JUMP 0000176f: JUMPDEST 00001770: PUSH2 0x15b5 00001773: JUMP 00001774: JUMPDEST 00001775: PUSH1 0x01 00001777: PUSH1 0xa0 00001779: PUSH1 0x02 0000177b: EXP 0000177c: SUB 0000177d: DUP12 0000177e: DUP2 0000177f: AND 00001780: PUSH1 0x00 00001782: SWAP1 00001783: DUP2 00001784: MSTORE 00001785: PUSH1 0x06 00001787: PUSH1 0x20 00001789: SWAP1 0000178a: DUP2 0000178b: MSTORE 0000178c: PUSH1 0x40 0000178e: DUP1 0000178f: DUP4 00001790: KECCAK256 00001791: DUP12 00001792: DUP6 00001793: AND 00001794: DUP5 00001795: MSTORE 00001796: SWAP1 00001797: SWAP2 00001798: MSTORE 00001799: DUP1 0000179a: DUP3 0000179b: KECCAK256 0000179c: SWAP4 0000179d: SWAP1 0000179e: SWAP4 0000179f: SSTORE 000017a0: PUSH1 0x01 000017a2: SLOAD 000017a3: SWAP1 000017a4: SWAP2 000017a5: AND 000017a6: DUP2 000017a7: MSTORE 000017a8: KECCAK256 000017a9: SLOAD 000017aa: PUSH2 0x17c5 000017ad: SWAP1 000017ae: PUSH2 0x176f 000017b1: PUSH2 0x17ba 000017b4: DUP8 000017b5: DUP8 000017b6: PUSH2 0x15b5 000017b9: JUMP 000017ba: JUMPDEST 000017bb: DUP6 000017bc: PUSH2 0x18a4 000017bf: JUMP 000017c0: JUMPDEST 000017c1: PUSH2 0x15b5 000017c4: JUMP 000017c5: JUMPDEST 000017c6: PUSH1 0x01 000017c8: PUSH1 0xa0 000017ca: PUSH1 0x02 000017cc: EXP 000017cd: SUB 000017ce: DUP1 000017cf: DUP13 000017d0: AND 000017d1: PUSH1 0x00 000017d3: SWAP1 000017d4: DUP2 000017d5: MSTORE 000017d6: PUSH1 0x06 000017d8: PUSH1 0x20 000017da: DUP2 000017db: DUP2 000017dc: MSTORE 000017dd: PUSH1 0x40 000017df: DUP1 000017e0: DUP5 000017e1: KECCAK256 000017e2: PUSH1 0x01 000017e4: SLOAD 000017e5: DUP7 000017e6: AND 000017e7: DUP6 000017e8: MSTORE 000017e9: DUP3 000017ea: MSTORE 000017eb: DUP1 000017ec: DUP5 000017ed: KECCAK256 000017ee: SWAP6 000017ef: SWAP1 000017f0: SWAP6 000017f1: SSTORE 000017f2: DUP13 000017f3: DUP5 000017f4: AND 000017f5: DUP4 000017f6: MSTORE 000017f7: SWAP1 000017f8: DUP2 000017f9: MSTORE 000017fa: DUP4 000017fb: DUP3 000017fc: KECCAK256 000017fd: SWAP3 000017fe: DUP11 000017ff: AND 00001800: DUP3 00001801: MSTORE 00001802: SWAP2 00001803: SWAP1 00001804: SWAP2 00001805: MSTORE 00001806: KECCAK256 00001807: SLOAD 00001808: PUSH2 0x1822 0000180b: SWAP1 0000180c: DUP11 0000180d: PUSH2 0x1816 00001810: DUP11 00001811: DUP10 00001812: PUSH2 0x18bd 00001815: JUMP 00001816: JUMPDEST 00001817: DUP2 00001818: ISZERO 00001819: PUSH2 0x0000 0000181c: JUMPI 0000181d: DIV 0000181e: PUSH2 0x18a4 00001821: JUMP 00001822: JUMPDEST 00001823: PUSH1 0x01 00001825: PUSH1 0xa0 00001827: PUSH1 0x02 00001829: EXP 0000182a: SUB 0000182b: DUP10 0000182c: DUP2 0000182d: AND 0000182e: PUSH1 0x00 00001830: SWAP1 00001831: DUP2 00001832: MSTORE 00001833: PUSH1 0x06 00001835: PUSH1 0x20 00001837: SWAP1 00001838: DUP2 00001839: MSTORE 0000183a: PUSH1 0x40 0000183c: DUP1 0000183d: DUP4 0000183e: KECCAK256 0000183f: DUP12 00001840: DUP6 00001841: AND 00001842: DUP5 00001843: MSTORE 00001844: SWAP1 00001845: SWAP2 00001846: MSTORE 00001847: DUP1 00001848: DUP3 00001849: KECCAK256 0000184a: SWAP4 0000184b: SWAP1 0000184c: SWAP4 0000184d: SSTORE 0000184e: CALLER 0000184f: SWAP1 00001850: SWAP2 00001851: AND 00001852: DUP2 00001853: MSTORE 00001854: KECCAK256 00001855: SLOAD 00001856: PUSH2 0x1870 00001859: SWAP1 0000185a: DUP11 0000185b: PUSH2 0x1864 0000185e: DUP11 0000185f: DUP10 00001860: PUSH2 0x18bd 00001863: JUMP 00001864: JUMPDEST 00001865: DUP2 00001866: ISZERO 00001867: PUSH2 0x0000 0000186a: JUMPI 0000186b: DIV 0000186c: PUSH2 0x15b5 0000186f: JUMP 00001870: JUMPDEST 00001871: PUSH1 0x01 00001873: PUSH1 0xa0 00001875: PUSH1 0x02 00001877: EXP 00001878: SUB 00001879: DUP1 0000187a: DUP11 0000187b: AND 0000187c: PUSH1 0x00 0000187e: SWAP1 0000187f: DUP2 00001880: MSTORE 00001881: PUSH1 0x06 00001883: PUSH1 0x20 00001885: SWAP1 00001886: DUP2 00001887: MSTORE 00001888: PUSH1 0x40 0000188a: DUP1 0000188b: DUP4 0000188c: KECCAK256 0000188d: CALLER 0000188e: SWAP1 0000188f: SWAP5 00001890: AND 00001891: DUP4 00001892: MSTORE 00001893: SWAP3 00001894: SWAP1 00001895: MSTORE 00001896: KECCAK256 00001897: SSTORE 00001898: JUMPDEST 00001899: POP 0000189a: POP 0000189b: POP 0000189c: POP 0000189d: POP 0000189e: POP 0000189f: POP 000018a0: POP 000018a1: POP 000018a2: POP 000018a3: JUMP 000018a4: JUMPDEST 000018a5: PUSH1 0x00 000018a7: PUSH2 0x18b2 000018aa: DUP4 000018ab: DUP4 000018ac: GT 000018ad: ISZERO 000018ae: PUSH2 0x18e9 000018b1: JUMP 000018b2: JUMPDEST 000018b3: POP 000018b4: DUP1 000018b5: DUP3 000018b6: SUB 000018b7: JUMPDEST 000018b8: SWAP3 000018b9: SWAP2 000018ba: POP 000018bb: POP 000018bc: JUMP 000018bd: JUMPDEST 000018be: PUSH1 0x00 000018c0: DUP3 000018c1: DUP3 000018c2: MUL 000018c3: PUSH2 0x15d2 000018c6: DUP5 000018c7: ISZERO 000018c8: DUP1 000018c9: PUSH2 0x15cd 000018cc: JUMPI 000018cd: POP 000018ce: DUP4 000018cf: DUP6 000018d0: DUP4 000018d1: DUP2 000018d2: ISZERO 000018d3: PUSH2 0x0000 000018d6: JUMPI 000018d7: DIV 000018d8: EQ 000018d9: JUMPDEST 000018da: PUSH2 0x18e9 000018dd: JUMP 000018de: JUMPDEST 000018df: DUP1 000018e0: SWAP2 000018e1: POP 000018e2: JUMPDEST 000018e3: POP 000018e4: SWAP3 000018e5: SWAP2 000018e6: POP 000018e7: POP 000018e8: JUMP 000018e9: JUMPDEST 000018ea: DUP1 000018eb: ISZERO 000018ec: ISZERO 000018ed: PUSH2 0x0c8f 000018f0: JUMPI 000018f1: PUSH2 0x0000 000018f4: JUMP 000018f5: JUMPDEST 000018f6: JUMPDEST 000018f7: POP 000018f8: JUMP 000018f9: STOP 000018fa: SLOAD 000018fb: UNKNOWN(0xCD) 000018fc: UNKNOWN(0xD3) 000018fd: PUSH10 0xe4e8a8515e52ca72ec81 00001908: PUSH13 0x2101831ad1f18bf44102ed1714 00001916: MSIZE 00001917: UNKNOWN(0xC9) 00001918: UNKNOWN(0xB4) 00001919: UNKNOWN(0xF8) 0000191a: LOG1 0000191b: PUSH6 0x627a7a723058 00001922: KECCAK256 00001923: PUSH9 0xb8d75990c02744ad9b 0000192d: ADD 0000192e: GASLIMIT 0000192f: LT 00001930: ADDRESS 00001931: CALL 00001932: LOG0 00001933: UNKNOWN(0xAC) 00001934: STOP 00001935: UNKNOWN(0x4F) 00001936: UNKNOWN(0xFB) 00001937: CREATE 00001938: UNKNOWN(0xF6) 00001939: PUSH16
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0x8aec2b79509711793d6af8c105c9f7f3f1ff17770a6c5140528284fbc12edf56
call_targets:
0x0000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000002, 0xbf29685856fae1e228878dfb35b280c0adcc3b05
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x8aec2b79509711793d6af8c105c9f7f3f1ff17770a6c5140528284fbc12edf56",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000002",
"0xbf29685856fae1e228878dfb35b280c0adcc3b05"
],
"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": "0x0a19b14a",
"selector": "0x0a19b14a",
"calldata_variants": [
"0x0a19b14a",
"0x0a19b14a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0b927666",
"selector": "0x0b927666",
"calldata_variants": [
"0x0b927666",
"0x0b9276660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19774d43",
"selector": "0x19774d43",
"calldata_variants": [
"0x19774d43",
"0x19774d430000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x278b8c0e",
"selector": "0x278b8c0e",
"calldata_variants": [
"0x278b8c0e",
"0x278b8c0e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e1a7d4d",
"selector": "0x2e1a7d4d",
"calldata_variants": [
"0x2e1a7d4d",
"0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x338b5dea",
"selector": "0x338b5dea",
"calldata_variants": [
"0x338b5dea",
"0x338b5dea0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x46be96c3",
"selector": "0x46be96c3",
"calldata_variants": [
"0x46be96c3",
"0x46be96c30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x508493bc",
"selector": "0x508493bc",
"calldata_variants": [
"0x508493bc",
"0x508493bc0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1576,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1781,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2221,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 13,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0x8aec2b79509711793d6af8c105c9f7f3f1ff17770a6c5140528284fbc12edf56
call_targets:
0x0000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000002, 0xbf29685856fae1e228878dfb35b280c0adcc3b05
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x8aec2b79509711793d6af8c105c9f7f3f1ff17770a6c5140528284fbc12edf56",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000002",
"0xbf29685856fae1e228878dfb35b280c0adcc3b05"
],
"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": "0x0a19b14a",
"selector": "0x0a19b14a",
"calldata_variants": [
"0x0a19b14a",
"0x0a19b14a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0b927666",
"selector": "0x0b927666",
"calldata_variants": [
"0x0b927666",
"0x0b9276660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19774d43",
"selector": "0x19774d43",
"calldata_variants": [
"0x19774d43",
"0x19774d430000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x278b8c0e",
"selector": "0x278b8c0e",
"calldata_variants": [
"0x278b8c0e",
"0x278b8c0e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e1a7d4d",
"selector": "0x2e1a7d4d",
"calldata_variants": [
"0x2e1a7d4d",
"0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x338b5dea",
"selector": "0x338b5dea",
"calldata_variants": [
"0x338b5dea",
"0x338b5dea0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x46be96c3",
"selector": "0x46be96c3",
"calldata_variants": [
"0x46be96c3",
"0x46be96c30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x508493bc",
"selector": "0x508493bc",
"calldata_variants": [
"0x508493bc",
"0x508493bc0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1576,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1781,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2221,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 13,
"guards_detected": [],
"untrusted_call_count": 13
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x609027fd880e4231b5d2cabfbd317085e7c07ad345e1ab044ca859ceffaeef37
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x609027fd880e4231b5d2cabfbd317085e7c07ad345e1ab044ca859ceffaeef37",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x0a19b14a",
"selector": "0x0a19b14a",
"calldata_variants": [
"0x0a19b14a",
"0x0a19b14a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0b927666",
"selector": "0x0b927666",
"calldata_variants": [
"0x0b927666",
"0x0b9276660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x19774d43",
"selector": "0x19774d43",
"calldata_variants": [
"0x19774d43",
"0x19774d430000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x278b8c0e",
"selector": "0x278b8c0e",
"calldata_variants": [
"0x278b8c0e",
"0x278b8c0e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e1a7d4d",
"selector": "0x2e1a7d4d",
"calldata_variants": [
"0x2e1a7d4d",
"0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x338b5dea",
"selector": "0x338b5dea",
"calldata_variants": [
"0x338b5dea",
"0x338b5dea0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x46be96c3",
"selector": "0x46be96c3",
"calldata_variants": [
"0x46be96c3",
"0x46be96c30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x508493bc",
"selector": "0x508493bc",
"calldata_variants": [
"0x508493bc",
"0x508493bc0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| medium | reentrancy | codex | Reentrancy via AccountLevels allows order overfill before orderFills update | 75 | no | — |
viewevidence_json{
"evidence": "trade() checks orderFills then calls tradeBalances, but only increments orderFills after tradeBalances returns; tradeBalances makes an external call to accountLevelsAddr.accountLevel(user).",
"locations": [
"contracts/Contract.sol:252",
"contracts/Contract.sol:260",
"contracts/Contract.sol:261",
"contracts/Contract.sol:265",
"contracts/Contract.sol:269"
],
"recommendation": "Avoid external calls before updating order state: update orderFills before tradeBalances or add a reentrancy guard around trade/tradeBalances. Alternatively, restrict accountLevelsAddr to a trusted, non-reentrant contract and consider using a pull model or staticcall semantics when available.",
"exploit_scenario": "If accountLevelsAddr points to a malicious or compromised contract, its accountLevel() can reenter DecentrEx.trade() before the outer call updates orderFills. Because each trade checks orderFills before it is incremented, multiple reentrant fills can pass the limit check and push orderFills above amountGet, forcing the maker to trade more than intended at the quoted price."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 0
}
|
| low | access_control | codex | AccountLevelsTest allows anyone to set fee tier if used in production | 65 | no | — |
viewevidence_json{
"evidence": "AccountLevelsTest.setAccountLevel has no access control, and DecentrEx allows admin to set accountLevelsAddr to any contract.",
"locations": [
"contracts/Contract.sol:139",
"contracts/Contract.sol:142",
"contracts/Contract.sol:186",
"contracts/Contract.sol:188"
],
"recommendation": "Do not deploy or point to AccountLevelsTest in production; restrict setAccountLevel to an authorized role (e.g., admin) in any production AccountLevels implementation.",
"exploit_scenario": "If the admin configures accountLevelsAddr to AccountLevelsTest (or a similarly unrestricted contract), any user can call setAccountLevel() to assign themselves level 1 or 2, receiving rebates or full taker-fee refunds and effectively bypassing fees, draining feeAccount revenue."
}
|
| 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": 13
}
|