019ba90f-831c-7330-83d3-a716e466e1d0
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 |
|---|---|---|---|---|
| 34687 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 34688 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 34689 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 34690 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 34691 | capability.graph | complete | 1 / 3 | 3 months ago |
| 34692 | detector.run | complete | 1 / 3 | 3 months ago |
| 34693 | validation.fork | complete | 1 / 3 | 3 months ago |
| 34848 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Found 3 issues: reentrancy via accountLevelsAddr can overfill orders, AccountLevelsTest is unrestricted, and StandardToken approve has an allowance race condition.","findings":[{"severity":"medium","category":"reentrancy","title":"External accountLevels call enables reentrancy and order overfill","exploit_scenario":"If the admin sets accountLevelsAddr to a malicious or compromised contract, its accountLevel() can reenter Bitcratic.trade() before orderFills is updated, allowing multiple fills of the same order and exceeding amountGet. The maker can be forced to trade more than intended.","recommendation":"Prevent reentrancy in trade/tradeBalances (e.g., mutex) and move orderFills updates before any external call, or cache account levels in storage and avoid external calls on the trade path.","evidence":"tradeBalances() calls AccountLevels(accountLevelsAddr).accountLevel(user) before balances are updated, and orderFills is incremented only after tradeBalances returns.","locations":["contracts/Contract.sol:265","contracts/Contract.sol:270","contracts/Contract.sol:260","contracts/Contract.sol:261"]},{"severity":"low","category":"access_control","title":"AccountLevelsTest allows arbitrary fee tier assignment","exploit_scenario":"If Bitcratic is configured to use AccountLevelsTest, any user can call setAccountLevel to grant themselves level 1/2 and receive fee rebates, reducing or eliminating fees.","recommendation":"Add access control (e.g., owner-only) to setAccountLevel or ensure this test contract is never used in production.","evidence":"setAccountLevel has no sender checks and writes accountLevels[user] directly.","locations":["contracts/Contract.sol:139","contracts/Contract.sol:142","contracts/Contract.sol:143"]},{"severity":"low","category":"auth","title":"ERC20 approve race condition","exploit_scenario":"A spender can front-run an allowance change from X to Y and spend both the old and new allowances, as approve overwrites the allowance directly.","recommendation":"Require setting allowance to 0 before changing it, or implement increase/decrease allowance functions.","evidence":"approve() sets allowed[msg.sender][_spender] = _value without requiring a zero reset.","locations":["contracts/Contract.sol:96","contracts/Contract.sol:97"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-bd_ma9dv
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: xhigh
reasoning summaries: auto
session id: 019ba910-3740-7e10-942f-318917b18f78
--------
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
**Preparing to locate AUDIT_BUNDLE.txt**
exec
/bin/bash -lc ls in /tmp/codex-bd_ma9dv succeeded in 9ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
thinking
**Checking AUDIT_BUNDLE.txt**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-bd_ma9dv succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.11;
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 contract for vulnerabilities**
I’m auditing the contract's code carefully, focusing on external calls, signature handling, reentrancy risks, and arithmetic checks. There’s a subtle reentrancy vulnerability if the admin sets a malicious accountLevels contract since an external call happens before critical state updates, potentially allowing order overfills. Other areas like token transfers, signature malleability, and zero-value trades seem mostly safe or result in harmless failures. This deep dive helps me pinpoint the most concerning risks to highlight.
thinking
**Continuing detailed vulnerability evaluation**
I'm digging further into encoding nuances, signature schemes, and various contract functions like AccountLevelsTest and StandardToken. The most notable risks include unrestricted account level changes in test contracts possibly misused if deployed, reentrancy through external calls, and known token approval race conditions. Overall, I’m compiling findings with severity and context for clear output.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1,260p'" in /tmp/codex-bd_ma9dv succeeded in 11ms:
1 pragma solidity ^0.4.11;
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
**Continuing to review tradeBalances lines**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '260,520p'" in /tmp/codex-bd_ma9dv succeeded in 7ms:
260 tradeBalances(tokenGet, amountGet, tokenGive, amountGive, user, amount);
261 orderFills[user][hash] = safeAdd(orderFills[user][hash], amount);
262 Trade(tokenGet, amount, tokenGive, amountGive * amount / amountGet, user, msg.sender);
263 }
264
265 function tradeBalances(address tokenGet, uint amountGet, address tokenGive, uint amountGive, address user, uint amount) private {
266 uint feeMakeXfer = safeMul(amount, feeMake) / (1 ether);
267 uint feeTakeXfer = safeMul(amount, feeTake) / (1 ether);
268 uint feeRebateXfer = 0;
269 if (accountLevelsAddr != 0x0) {
270 uint accountLevel = AccountLevels(accountLevelsAddr).accountLevel(user);
271 if (accountLevel==1) feeRebateXfer = safeMul(amount, feeRebate) / (1 ether);
272 if (accountLevel==2) feeRebateXfer = feeTakeXfer;
273 }
274 tokens[tokenGet][msg.sender] = safeSub(tokens[tokenGet][msg.sender], safeAdd(amount, feeTakeXfer));
275 tokens[tokenGet][user] = safeAdd(tokens[tokenGet][user], safeSub(safeAdd(amount, feeRebateXfer), feeMakeXfer));
276 tokens[tokenGet][feeAccount] = safeAdd(tokens[tokenGet][feeAccount], safeSub(safeAdd(feeMakeXfer, feeTakeXfer), feeRebateXfer));
277 tokens[tokenGive][user] = safeSub(tokens[tokenGive][user], safeMul(amountGive, amount) / amountGet);
278 tokens[tokenGive][msg.sender] = safeAdd(tokens[tokenGive][msg.sender], safeMul(amountGive, amount) / amountGet);
279 }
thinking
**Summarizing vulnerability findings in JSON**
I'm gathering detailed vulnerability findings about reentrancy risks with accountLevelsAddr causing order overfill, access control issues with AccountLevelsTest, and a known ERC20 approve race condition. I'll prepare JSON output with clear severities, scenarios, recommendations, and code locations. Let’s make sure it’s concise and actionable!
thinking
{
"no_findings": false,
"summary": "Found 3 issues: reentrancy via accountLevelsAddr can overfill orders, AccountLevelsTest is unrestricted, and StandardToken approve has an allowance race condition.",
"findings": [
{
"severity": "medium",
"category": "reentrancy",
"title": "External accountLevels call enables reentrancy and order overfill",
"exploit_scenario": "If the admin sets accountLevelsAddr to a malicious or compromised contract, its accountLevel() can reenter Bitcratic.trade() before orderFills is updated, allowing multiple fills of the same order and exceeding amountGet. The maker can be forced to trade more than intended.",
"recommendation": "Prevent reentrancy in trade/tradeBalances (e.g., mutex) and move orderFills updates before any external call, or cache account levels in storage and avoid external calls on the trade path.",
"evidence": "tradeBalances() calls AccountLevels(accountLevelsAddr).accountLevel(user) before balances are updated, and orderFills is incremented only after tradeBalances returns.",
"locations": [
"contracts/Contract.sol:265",
"contracts/Contract.sol:270",
"contracts/Contract.sol:260",
"contracts/Contract.sol:261"
]
},
{
"severity": "low",
"category": "access_control",
"title": "AccountLevelsTest allows arbitrary fee tier assignment",
"exploit_scenario": "If Bitcratic is configured to use AccountLevelsTest, any user can call setAccountLevel to grant themselves level 1/2 and receive fee rebates, reducing or eliminating fees.",
"recommendation": "Add access control (e.g., owner-only) to setAccountLevel or ensure this test contract is never used in production.",
"evidence": "setAccountLevel has no sender checks and writes accountLevels[user] directly.",
"locations": [
"contracts/Contract.sol:139",
"contracts/Contract.sol:142",
"contracts/Contract.sol:143"
]
},
{
"severity": "low",
"category": "auth",
"title": "ERC20 approve race condition",
"exploit_scenario": "A spender can front-run an allowance change from X to Y and spend both the old and new allowances, as approve overwrites the allowance directly.",
"recommendation": "Require setting allowance to 0 before changing it, or implement increase/decrease allowance functions.",
"evidence": "approve() sets allowed[msg.sender][_spender] = _value without requiring a zero reset.",
"locations": [
"contracts/Contract.sol:96",
"contracts/Contract.sol:97"
]
}
]
}
codex
{"no_findings":false,"summary":"Found 3 issues: reentrancy via accountLevelsAddr can overfill orders, AccountLevelsTest is unrestricted, and StandardToken approve has an allowance race condition.","findings":[{"severity":"medium","category":"reentrancy","title":"External accountLevels call enables reentrancy and order overfill","exploit_scenario":"If the admin sets accountLevelsAddr to a malicious or compromised contract, its accountLevel() can reenter Bitcratic.trade() before orderFills is updated, allowing multiple fills of the same order and exceeding amountGet. The maker can be forced to trade more than intended.","recommendation":"Prevent reentrancy in trade/tradeBalances (e.g., mutex) and move orderFills updates before any external call, or cache account levels in storage and avoid external calls on the trade path.","evidence":"tradeBalances() calls AccountLevels(accountLevelsAddr).accountLevel(user) before balances are updated, and orderFills is incremented only after tradeBalances returns.","locations":["contracts/Contract.sol:265","contracts/Contract.sol:270","contracts/Contract.sol:260","contracts/Contract.sol:261"]},{"severity":"low","category":"access_control","title":"AccountLevelsTest allows arbitrary fee tier assignment","exploit_scenario":"If Bitcratic is configured to use AccountLevelsTest, any user can call setAccountLevel to grant themselves level 1/2 and receive fee rebates, reducing or eliminating fees.","recommendation":"Add access control (e.g., owner-only) to setAccountLevel or ensure this test contract is never used in production.","evidence":"setAccountLevel has no sender checks and writes accountLevels[user] directly.","locations":["contracts/Contract.sol:139","contracts/Contract.sol:142","contracts/Contract.sol:143"]},{"severity":"low","category":"auth","title":"ERC20 approve race condition","exploit_scenario":"A spender can front-run an allowance change from X to Y and spend both the old and new allowances, as approve overwrites the allowance directly.","recommendation":"Require setting allowance to 0 before changing it, or implement increase/decrease allowance functions.","evidence":"approve() sets allowed[msg.sender][_spender] = _value without requiring a zero reset.","locations":["contracts/Contract.sol:96","contracts/Contract.sol:97"]}]}
tokens used
24,302
{
"codex": {
"ran_at": "2026-01-10T18:03:09.628893+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found 3 issues: reentrancy via accountLevelsAddr can overfill orders, AccountLevelsTest is unrestricted, and StandardToken approve has an allowance race condition.",
"raw_final": {
"summary": "Found 3 issues: reentrancy via accountLevelsAddr can overfill orders, AccountLevelsTest is unrestricted, and StandardToken approve has an allowance race condition.",
"findings": [
{
"title": "External accountLevels call enables reentrancy and order overfill",
"category": "reentrancy",
"evidence": "tradeBalances() calls AccountLevels(accountLevelsAddr).accountLevel(user) before balances are updated, and orderFills is incremented only after tradeBalances returns.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:265",
"contracts/Contract.sol:270",
"contracts/Contract.sol:260",
"contracts/Contract.sol:261"
],
"recommendation": "Prevent reentrancy in trade/tradeBalances (e.g., mutex) and move orderFills updates before any external call, or cache account levels in storage and avoid external calls on the trade path.",
"exploit_scenario": "If the admin sets accountLevelsAddr to a malicious or compromised contract, its accountLevel() can reenter Bitcratic.trade() before orderFills is updated, allowing multiple fills of the same order and exceeding amountGet. The maker can be forced to trade more than intended."
},
{
"title": "AccountLevelsTest allows arbitrary fee tier assignment",
"category": "access_control",
"evidence": "setAccountLevel has no sender checks and writes accountLevels[user] directly.",
"severity": "low",
"locations": [
"contracts/Contract.sol:139",
"contracts/Contract.sol:142",
"contracts/Contract.sol:143"
],
"recommendation": "Add access control (e.g., owner-only) to setAccountLevel or ensure this test contract is never used in production.",
"exploit_scenario": "If Bitcratic is configured to use AccountLevelsTest, any user can call setAccountLevel to grant themselves level 1/2 and receive fee rebates, reducing or eliminating fees."
},
{
"title": "ERC20 approve race condition",
"category": "auth",
"evidence": "approve() sets allowed[msg.sender][_spender] = _value without requiring a zero reset.",
"severity": "low",
"locations": [
"contracts/Contract.sol:96",
"contracts/Contract.sol:97"
],
"recommendation": "Require setting allowance to 0 before changing it, or implement increase/decrease allowance functions.",
"exploit_scenario": "A spender can front-run an allowance change from X to Y and spend both the old and new allowances, as approve overwrites the allowance directly."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0151 0000000a: JUMPI 0000000b: PUSH4 0xffffffff 00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002e: PUSH1 0x00 00000030: CALLDATALOAD 00000031: DIV 00000032: AND 00000033: PUSH4 0x0a19b14a 00000038: DUP2 00000039: EQ 0000003a: PUSH2 0x0167 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0x0b927666 00000044: EQ 00000045: PUSH2 0x01b3 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0x19774d43 0000004f: EQ 00000050: PUSH2 0x01e4 00000053: JUMPI 00000054: DUP1 00000055: PUSH4 0x278b8c0e 0000005a: EQ 0000005b: PUSH2 0x0215 0000005e: JUMPI 0000005f: DUP1 00000060: PUSH4 0x2e1a7d4d 00000065: EQ 00000066: PUSH2 0x0253 00000069: JUMPI 0000006a: DUP1 0000006b: PUSH4 0x338b5dea 00000070: EQ 00000071: PUSH2 0x0268 00000074: JUMPI 00000075: DUP1 00000076: PUSH4 0x46be96c3 0000007b: EQ 0000007c: PUSH2 0x0289 0000007f: JUMPI 00000080: DUP1 00000081: PUSH4 0x508493bc 00000086: EQ 00000087: PUSH2 0x02e1 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0x54d03b5c 00000091: EQ 00000092: PUSH2 0x0315 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x57786394 0000009c: EQ 0000009d: PUSH2 0x032a 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x5e1d7ae4 000000a7: EQ 000000a8: PUSH2 0x034c 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x65e17c9d 000000b2: EQ 000000b3: PUSH2 0x0361 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x6c86888b 000000bd: EQ 000000be: PUSH2 0x038d 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x71ffcb16 000000c8: EQ 000000c9: PUSH2 0x03f6 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x731c2f81 000000d3: EQ 000000d4: PUSH2 0x0414 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0x8823a9c0 000000de: EQ 000000df: PUSH2 0x0436 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0x8f283970 000000e9: EQ 000000ea: PUSH2 0x044b 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0x9e281a98 000000f4: EQ 000000f5: PUSH2 0x0469 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0xbb5f4629 000000ff: EQ 00000100: PUSH2 0x048a 00000103: JUMPI 00000104: DUP1 00000105: PUSH4 0xc281309e 0000010a: EQ 0000010b: PUSH2 0x04bd 0000010e: JUMPI 0000010f: DUP1 00000110: PUSH4 0xd0e30db0 00000115: EQ 00000116: PUSH2 0x04df 00000119: JUMPI 0000011a: DUP1 0000011b: PUSH4 0xe8f6bc2e 00000120: EQ 00000121: PUSH2 0x04e9 00000124: JUMPI 00000125: DUP1 00000126: PUSH4 0xf3412942 0000012b: EQ 0000012c: PUSH2 0x0507 0000012f: JUMPI 00000130: DUP1 00000131: PUSH4 0xf7888aec 00000136: EQ 00000137: PUSH2 0x0533 0000013a: JUMPI 0000013b: DUP1 0000013c: PUSH4 0xf851a440 00000141: EQ 00000142: PUSH2 0x0567 00000145: JUMPI 00000146: DUP1 00000147: PUSH4 0xfb6e155f 0000014c: EQ 0000014d: PUSH2 0x0593 00000150: JUMPI 00000151: JUMPDEST 00000152: CALLVALUE 00000153: ISZERO 00000154: PUSH2 0x0159 00000157: JUMPI 00000158: INVALID 00000159: JUMPDEST 0000015a: PUSH2 0x0165 0000015d: JUMPDEST 0000015e: PUSH1 0x00 00000160: PUSH1 0x00 00000162: REVERT 00000163: JUMPDEST 00000164: JUMP 00000165: JUMPDEST 00000166: STOP 00000167: JUMPDEST 00000168: CALLVALUE 00000169: ISZERO 0000016a: PUSH2 0x016f 0000016d: JUMPI 0000016e: INVALID 0000016f: JUMPDEST 00000170: PUSH2 0x0165 00000173: PUSH1 0x01 00000175: PUSH1 0xa0 00000177: PUSH1 0x02 00000179: EXP 0000017a: SUB 0000017b: PUSH1 0x04 0000017d: CALLDATALOAD 0000017e: DUP2 0000017f: AND 00000180: SWAP1 00000181: PUSH1 0x24 00000183: CALLDATALOAD 00000184: SWAP1 00000185: PUSH1 0x44 00000187: CALLDATALOAD 00000188: DUP2 00000189: AND 0000018a: SWAP1 0000018b: PUSH1 0x64 0000018d: CALLDATALOAD 0000018e: SWAP1 0000018f: PUSH1 0x84 00000191: CALLDATALOAD 00000192: SWAP1 00000193: PUSH1 0xa4 00000195: CALLDATALOAD 00000196: SWAP1 00000197: PUSH1 0xc4 00000199: CALLDATALOAD 0000019a: AND 0000019b: PUSH1 0xff 0000019d: PUSH1 0xe4 0000019f: CALLDATALOAD 000001a0: AND 000001a1: PUSH2 0x0104 000001a4: CALLDATALOAD 000001a5: PUSH2 0x0124 000001a8: CALLDATALOAD 000001a9: PUSH2 0x0144 000001ac: CALLDATALOAD 000001ad: PUSH2 0x05eb 000001b0: JUMP 000001b1: JUMPDEST 000001b2: STOP 000001b3: JUMPDEST 000001b4: CALLVALUE 000001b5: ISZERO 000001b6: PUSH2 0x01bb 000001b9: JUMPI 000001ba: INVALID 000001bb: JUMPDEST 000001bc: PUSH2 0x0165 000001bf: PUSH1 0x01 000001c1: PUSH1 0xa0 000001c3: PUSH1 0x02 000001c5: EXP 000001c6: SUB 000001c7: PUSH1 0x04 000001c9: CALLDATALOAD 000001ca: DUP2 000001cb: AND 000001cc: SWAP1 000001cd: PUSH1 0x24 000001cf: CALLDATALOAD 000001d0: SWAP1 000001d1: PUSH1 0x44 000001d3: CALLDATALOAD 000001d4: AND 000001d5: PUSH1 0x64 000001d7: CALLDATALOAD 000001d8: PUSH1 0x84 000001da: CALLDATALOAD 000001db: PUSH1 0xa4 000001dd: CALLDATALOAD 000001de: PUSH2 0x08b1 000001e1: JUMP 000001e2: JUMPDEST 000001e3: STOP 000001e4: JUMPDEST 000001e5: CALLVALUE 000001e6: ISZERO 000001e7: PUSH2 0x01ec 000001ea: JUMPI 000001eb: INVALID 000001ec: JUMPDEST 000001ed: PUSH2 0x0203 000001f0: PUSH1 0x01 000001f2: PUSH1 0xa0 000001f4: PUSH1 0x02 000001f6: EXP 000001f7: SUB 000001f8: PUSH1 0x04 000001fa: CALLDATALOAD 000001fb: AND 000001fc: PUSH1 0x24 000001fe: CALLDATALOAD 000001ff: PUSH2 0x09c2 00000202: JUMP 00000203: JUMPDEST 00000204: PUSH1 0x40 00000206: DUP1 00000207: MLOAD 00000208: SWAP2 00000209: DUP3 0000020a: MSTORE 0000020b: MLOAD 0000020c: SWAP1 0000020d: DUP2 0000020e: SWAP1 0000020f: SUB 00000210: PUSH1 0x20 00000212: ADD 00000213: SWAP1 00000214: RETURN 00000215: JUMPDEST 00000216: CALLVALUE 00000217: ISZERO 00000218: PUSH2 0x021d 0000021b: JUMPI 0000021c: INVALID 0000021d: JUMPDEST 0000021e: PUSH2 0x0165 00000221: PUSH1 0x01 00000223: PUSH1 0xa0 00000225: PUSH1 0x02 00000227: EXP 00000228: SUB 00000229: PUSH1 0x04 0000022b: CALLDATALOAD 0000022c: DUP2 0000022d: AND 0000022e: SWAP1 0000022f: PUSH1 0x24 00000231: CALLDATALOAD 00000232: SWAP1 00000233: PUSH1 0x44 00000235: CALLDATALOAD 00000236: AND 00000237: PUSH1 0x64 00000239: CALLDATALOAD 0000023a: PUSH1 0x84 0000023c: CALLDATALOAD 0000023d: PUSH1 0xa4 0000023f: CALLDATALOAD 00000240: PUSH1 0xff 00000242: PUSH1 0xc4 00000244: CALLDATALOAD 00000245: AND 00000246: PUSH1 0xe4 00000248: CALLDATALOAD 00000249: PUSH2 0x0104 0000024c: CALLDATALOAD 0000024d: PUSH2 0x09df 00000250: JUMP 00000251: JUMPDEST 00000252: STOP 00000253: JUMPDEST 00000254: CALLVALUE 00000255: ISZERO 00000256: PUSH2 0x025b 00000259: JUMPI 0000025a: INVALID 0000025b: JUMPDEST 0000025c: PUSH2 0x0165 0000025f: PUSH1 0x04 00000261: CALLDATALOAD 00000262: PUSH2 0x0bf0 00000265: JUMP 00000266: JUMPDEST 00000267: STOP 00000268: JUMPDEST 00000269: CALLVALUE 0000026a: ISZERO 0000026b: PUSH2 0x0270 0000026e: JUMPI 0000026f: INVALID 00000270: JUMPDEST 00000271: PUSH2 0x0165 00000274: PUSH1 0x01 00000276: PUSH1 0xa0 00000278: PUSH1 0x02 0000027a: EXP 0000027b: SUB 0000027c: PUSH1 0x04 0000027e: CALLDATALOAD 0000027f: AND 00000280: PUSH1 0x24 00000282: CALLDATALOAD 00000283: PUSH2 0x0d10 00000286: JUMP 00000287: JUMPDEST 00000288: STOP 00000289: JUMPDEST 0000028a: CALLVALUE 0000028b: ISZERO 0000028c: PUSH2 0x0291 0000028f: JUMPI 00000290: INVALID 00000291: JUMPDEST 00000292: PUSH2 0x0203 00000295: PUSH1 0x01 00000297: PUSH1 0xa0 00000299: PUSH1 0x02 0000029b: EXP 0000029c: SUB 0000029d: PUSH1 0x04 0000029f: CALLDATALOAD 000002a0: DUP2 000002a1: AND 000002a2: SWAP1 000002a3: PUSH1 0x24 000002a5: CALLDATALOAD 000002a6: SWAP1 000002a7: PUSH1 0x44 000002a9: CALLDATALOAD 000002aa: DUP2 000002ab: AND 000002ac: SWAP1 000002ad: PUSH1 0x64 000002af: CALLDATALOAD 000002b0: SWAP1 000002b1: PUSH1 0x84 000002b3: CALLDATALOAD 000002b4: SWAP1 000002b5: PUSH1 0xa4 000002b7: CALLDATALOAD 000002b8: SWAP1 000002b9: PUSH1 0xc4 000002bb: CALLDATALOAD 000002bc: AND 000002bd: PUSH1 0xff 000002bf: PUSH1 0xe4 000002c1: CALLDATALOAD 000002c2: AND 000002c3: PUSH2 0x0104 000002c6: CALLDATALOAD 000002c7: PUSH2 0x0124 000002ca: CALLDATALOAD 000002cb: PUSH2 0x0e67 000002ce: JUMP 000002cf: JUMPDEST 000002d0: PUSH1 0x40 000002d2: DUP1 000002d3: MLOAD 000002d4: SWAP2 000002d5: DUP3 000002d6: MSTORE 000002d7: MLOAD 000002d8: SWAP1 000002d9: DUP2 000002da: SWAP1 000002db: SUB 000002dc: PUSH1 0x20 000002de: ADD 000002df: SWAP1 000002e0: RETURN 000002e1: JUMPDEST 000002e2: CALLVALUE 000002e3: ISZERO 000002e4: PUSH2 0x02e9 000002e7: JUMPI 000002e8: INVALID 000002e9: JUMPDEST 000002ea: PUSH2 0x0203 000002ed: PUSH1 0x01 000002ef: PUSH1 0xa0 000002f1: PUSH1 0x02 000002f3: EXP 000002f4: SUB 000002f5: PUSH1 0x04 000002f7: CALLDATALOAD 000002f8: DUP2 000002f9: AND 000002fa: SWAP1 000002fb: PUSH1 0x24 000002fd: CALLDATALOAD 000002fe: AND 000002ff: PUSH2 0x0f54 00000302: JUMP 00000303: JUMPDEST 00000304: PUSH1 0x40 00000306: DUP1 00000307: MLOAD 00000308: SWAP2 00000309: DUP3 0000030a: MSTORE 0000030b: MLOAD 0000030c: SWAP1 0000030d: DUP2 0000030e: SWAP1 0000030f: SUB 00000310: PUSH1 0x20 00000312: ADD 00000313: SWAP1 00000314: RETURN 00000315: JUMPDEST 00000316: CALLVALUE 00000317: ISZERO 00000318: PUSH2 0x031d 0000031b: JUMPI 0000031c: INVALID 0000031d: JUMPDEST 0000031e: PUSH2 0x0165 00000321: PUSH1 0x04 00000323: CALLDATALOAD 00000324: PUSH2 0x0f71 00000327: JUMP 00000328: JUMPDEST 00000329: STOP 0000032a: JUMPDEST 0000032b: CALLVALUE 0000032c: ISZERO 0000032d: PUSH2 0x0332 00000330: JUMPI 00000331: INVALID 00000332: JUMPDEST 00000333: PUSH2 0x0203 00000336: PUSH2 0x0fa6 00000339: JUMP 0000033a: JUMPDEST 0000033b: PUSH1 0x40 0000033d: DUP1 0000033e: MLOAD 0000033f: SWAP2 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: ISZERO 0000034f: PUSH2 0x0354 00000352: JUMPI 00000353: INVALID 00000354: JUMPDEST 00000355: PUSH2 0x0165 00000358: PUSH1 0x04 0000035a: CALLDATALOAD 0000035b: PUSH2 0x0fac 0000035e: JUMP 0000035f: JUMPDEST 00000360: STOP 00000361: JUMPDEST 00000362: CALLVALUE 00000363: ISZERO 00000364: PUSH2 0x0369 00000367: JUMPI 00000368: INVALID 00000369: JUMPDEST 0000036a: PUSH2 0x0371 0000036d: PUSH2 0x0fed 00000370: JUMP 00000371: JUMPDEST 00000372: PUSH1 0x40 00000374: DUP1 00000375: MLOAD 00000376: PUSH1 0x01 00000378: PUSH1 0xa0 0000037a: PUSH1 0x02 0000037c: EXP 0000037d: SUB 0000037e: SWAP1 0000037f: SWAP3 00000380: AND 00000381: DUP3 00000382: MSTORE 00000383: MLOAD 00000384: SWAP1 00000385: DUP2 00000386: SWAP1 00000387: SUB 00000388: PUSH1 0x20 0000038a: ADD 0000038b: SWAP1 0000038c: RETURN 0000038d: JUMPDEST 0000038e: CALLVALUE 0000038f: ISZERO 00000390: PUSH2 0x0395 00000393: JUMPI 00000394: INVALID 00000395: JUMPDEST 00000396: PUSH2 0x03e2 00000399: PUSH1 0x01 0000039b: PUSH1 0xa0 0000039d: PUSH1 0x02 0000039f: EXP 000003a0: SUB 000003a1: PUSH1 0x04 000003a3: CALLDATALOAD 000003a4: DUP2 000003a5: AND 000003a6: SWAP1 000003a7: PUSH1 0x24 000003a9: CALLDATALOAD 000003aa: SWAP1 000003ab: PUSH1 0x44 000003ad: CALLDATALOAD 000003ae: DUP2 000003af: AND 000003b0: SWAP1 000003b1: PUSH1 0x64 000003b3: CALLDATALOAD 000003b4: SWAP1 000003b5: PUSH1 0x84 000003b7: CALLDATALOAD 000003b8: SWAP1 000003b9: PUSH1 0xa4 000003bb: CALLDATALOAD 000003bc: SWAP1 000003bd: PUSH1 0xc4 000003bf: CALLDATALOAD 000003c0: DUP2 000003c1: AND 000003c2: SWAP1 000003c3: PUSH1 0xff 000003c5: PUSH1 0xe4 000003c7: CALLDATALOAD 000003c8: AND 000003c9: SWAP1 000003ca: PUSH2 0x0104 000003cd: CALLDATALOAD 000003ce: SWAP1 000003cf: PUSH2 0x0124 000003d2: CALLDATALOAD 000003d3: SWAP1 000003d4: PUSH2 0x0144 000003d7: CALLDATALOAD 000003d8: SWAP1 000003d9: PUSH2 0x0164 000003dc: CALLDATALOAD 000003dd: AND 000003de: PUSH2 0x0ffc 000003e1: JUMP 000003e2: JUMPDEST 000003e3: PUSH1 0x40 000003e5: DUP1 000003e6: MLOAD 000003e7: SWAP2 000003e8: ISZERO 000003e9: ISZERO 000003ea: DUP3 000003eb: MSTORE 000003ec: MLOAD 000003ed: SWAP1 000003ee: DUP2 000003ef: SWAP1 000003f0: SUB 000003f1: PUSH1 0x20 000003f3: ADD 000003f4: SWAP1 000003f5: RETURN 000003f6: JUMPDEST 000003f7: CALLVALUE 000003f8: ISZERO 000003f9: PUSH2 0x03fe 000003fc: JUMPI 000003fd: INVALID 000003fe: JUMPDEST 000003ff: PUSH2 0x0165 00000402: PUSH1 0x01 00000404: PUSH1 0xa0 00000406: PUSH1 0x02 00000408: EXP 00000409: SUB 0000040a: PUSH1 0x04 0000040c: CALLDATALOAD 0000040d: AND 0000040e: PUSH2 0x1067 00000411: JUMP 00000412: JUMPDEST 00000413: STOP 00000414: JUMPDEST 00000415: CALLVALUE 00000416: ISZERO 00000417: PUSH2 0x041c 0000041a: JUMPI 0000041b: INVALID 0000041c: JUMPDEST 0000041d: PUSH2 0x0203 00000420: PUSH2 0x10af 00000423: JUMP 00000424: JUMPDEST 00000425: PUSH1 0x40 00000427: DUP1 00000428: MLOAD 00000429: SWAP2 0000042a: DUP3 0000042b: MSTORE 0000042c: MLOAD 0000042d: SWAP1 0000042e: DUP2 0000042f: SWAP1 00000430: SUB 00000431: PUSH1 0x20 00000433: ADD 00000434: SWAP1 00000435: RETURN 00000436: JUMPDEST 00000437: CALLVALUE 00000438: ISZERO 00000439: PUSH2 0x043e 0000043c: JUMPI 0000043d: INVALID 0000043e: JUMPDEST 0000043f: PUSH2 0x0165 00000442: PUSH1 0x04 00000444: CALLDATALOAD 00000445: PUSH2 0x10b5 00000448: JUMP 00000449: JUMPDEST 0000044a: STOP 0000044b: JUMPDEST 0000044c: CALLVALUE 0000044d: ISZERO 0000044e: PUSH2 0x0453 00000451: JUMPI 00000452: INVALID 00000453: JUMPDEST 00000454: PUSH2 0x0165 00000457: PUSH1 0x01 00000459: PUSH1 0xa0 0000045b: PUSH1 0x02 0000045d: EXP 0000045e: SUB 0000045f: PUSH1 0x04 00000461: CALLDATALOAD 00000462: AND 00000463: PUSH2 0x10f6 00000466: JUMP 00000467: JUMPDEST 00000468: STOP 00000469: JUMPDEST 0000046a: CALLVALUE 0000046b: ISZERO 0000046c: PUSH2 0x0471 0000046f: JUMPI 00000470: INVALID 00000471: JUMPDEST 00000472: PUSH2 0x0165 00000475: PUSH1 0x01 00000477: PUSH1 0xa0 00000479: PUSH1 0x02 0000047b: EXP 0000047c: SUB 0000047d: PUSH1 0x04 0000047f: CALLDATALOAD 00000480: AND 00000481: PUSH1 0x24 00000483: CALLDATALOAD 00000484: PUSH2 0x113e 00000487: JUMP 00000488: JUMPDEST 00000489: STOP 0000048a: JUMPDEST 0000048b: CALLVALUE 0000048c: ISZERO 0000048d: PUSH2 0x0492 00000490: JUMPI 00000491: INVALID 00000492: JUMPDEST 00000493: PUSH2 0x03e2 00000496: PUSH1 0x01 00000498: PUSH1 0xa0 0000049a: PUSH1 0x02 0000049c: EXP 0000049d: SUB 0000049e: PUSH1 0x04 000004a0: CALLDATALOAD 000004a1: AND 000004a2: PUSH1 0x24 000004a4: CALLDATALOAD 000004a5: PUSH2 0x12e0 000004a8: JUMP 000004a9: JUMPDEST 000004aa: PUSH1 0x40 000004ac: DUP1 000004ad: MLOAD 000004ae: SWAP2 000004af: ISZERO 000004b0: ISZERO 000004b1: DUP3 000004b2: MSTORE 000004b3: MLOAD 000004b4: SWAP1 000004b5: DUP2 000004b6: SWAP1 000004b7: SUB 000004b8: PUSH1 0x20 000004ba: ADD 000004bb: SWAP1 000004bc: RETURN 000004bd: JUMPDEST 000004be: CALLVALUE 000004bf: ISZERO 000004c0: PUSH2 0x04c5 000004c3: JUMPI 000004c4: INVALID 000004c5: JUMPDEST 000004c6: PUSH2 0x0203 000004c9: PUSH2 0x1300 000004cc: JUMP 000004cd: JUMPDEST 000004ce: PUSH1 0x40 000004d0: DUP1 000004d1: MLOAD 000004d2: SWAP2 000004d3: DUP3 000004d4: MSTORE 000004d5: MLOAD 000004d6: SWAP1 000004d7: DUP2 000004d8: SWAP1 000004d9: SUB 000004da: PUSH1 0x20 000004dc: ADD 000004dd: SWAP1 000004de: RETURN 000004df: JUMPDEST 000004e0: PUSH2 0x0165 000004e3: PUSH2 0x1306 000004e6: JUMP 000004e7: JUMPDEST 000004e8: STOP 000004e9: JUMPDEST 000004ea: CALLVALUE 000004eb: ISZERO 000004ec: PUSH2 0x04f1 000004ef: JUMPI 000004f0: INVALID 000004f1: JUMPDEST 000004f2: PUSH2 0x0165 000004f5: PUSH1 0x01 000004f7: PUSH1 0xa0 000004f9: PUSH1 0x02 000004fb: EXP 000004fc: SUB 000004fd: PUSH1 0x04 000004ff: CALLDATALOAD 00000500: AND 00000501: PUSH2 0x13a8 00000504: JUMP 00000505: JUMPDEST 00000506: STOP 00000507: JUMPDEST 00000508: CALLVALUE 00000509: ISZERO 0000050a: PUSH2 0x050f 0000050d: JUMPI 0000050e: INVALID 0000050f: JUMPDEST 00000510: PUSH2 0x0371 00000513: PUSH2 0x13f0 00000516: JUMP 00000517: JUMPDEST 00000518: PUSH1 0x40 0000051a: DUP1 0000051b: MLOAD 0000051c: PUSH1 0x01 0000051e: PUSH1 0xa0 00000520: PUSH1 0x02 00000522: EXP 00000523: SUB 00000524: SWAP1 00000525: SWAP3 00000526: AND 00000527: DUP3 00000528: MSTORE 00000529: MLOAD 0000052a: SWAP1 0000052b: DUP2 0000052c: SWAP1 0000052d: SUB 0000052e: PUSH1 0x20 00000530: ADD 00000531: SWAP1 00000532: RETURN 00000533: JUMPDEST 00000534: CALLVALUE 00000535: ISZERO 00000536: PUSH2 0x053b 00000539: JUMPI 0000053a: INVALID 0000053b: JUMPDEST 0000053c: PUSH2 0x0203 0000053f: PUSH1 0x01 00000541: PUSH1 0xa0 00000543: PUSH1 0x02 00000545: EXP 00000546: SUB 00000547: PUSH1 0x04 00000549: CALLDATALOAD 0000054a: DUP2 0000054b: AND 0000054c: SWAP1 0000054d: PUSH1 0x24 0000054f: CALLDATALOAD 00000550: AND 00000551: PUSH2 0x13ff 00000554: JUMP 00000555: JUMPDEST 00000556: PUSH1 0x40 00000558: DUP1 00000559: MLOAD 0000055a: SWAP2 0000055b: DUP3 0000055c: MSTORE 0000055d: MLOAD 0000055e: SWAP1 0000055f: DUP2 00000560: SWAP1 00000561: SUB 00000562: PUSH1 0x20 00000564: ADD 00000565: SWAP1 00000566: RETURN 00000567: JUMPDEST 00000568: CALLVALUE 00000569: ISZERO 0000056a: PUSH2 0x056f 0000056d: JUMPI 0000056e: INVALID 0000056f: JUMPDEST 00000570: PUSH2 0x0371 00000573: PUSH2 0x142c 00000576: JUMP 00000577: JUMPDEST 00000578: PUSH1 0x40 0000057a: DUP1 0000057b: MLOAD 0000057c: PUSH1 0x01 0000057e: PUSH1 0xa0 00000580: PUSH1 0x02 00000582: EXP 00000583: SUB 00000584: SWAP1 00000585: SWAP3 00000586: AND 00000587: DUP3 00000588: MSTORE 00000589: MLOAD 0000058a: SWAP1 0000058b: DUP2 0000058c: SWAP1 0000058d: SUB 0000058e: PUSH1 0x20 00000590: ADD 00000591: SWAP1 00000592: RETURN 00000593: JUMPDEST 00000594: CALLVALUE 00000595: ISZERO 00000596: PUSH2 0x059b 00000599: JUMPI 0000059a: INVALID 0000059b: JUMPDEST 0000059c: PUSH2 0x0203 0000059f: PUSH1 0x01 000005a1: PUSH1 0xa0 000005a3: PUSH1 0x02 000005a5: EXP 000005a6: SUB 000005a7: PUSH1 0x04 000005a9: CALLDATALOAD 000005aa: DUP2 000005ab: AND 000005ac: SWAP1 000005ad: PUSH1 0x24 000005af: CALLDATALOAD 000005b0: SWAP1 000005b1: PUSH1 0x44 000005b3: CALLDATALOAD 000005b4: DUP2 000005b5: AND 000005b6: SWAP1 000005b7: PUSH1 0x64 000005b9: CALLDATALOAD 000005ba: SWAP1 000005bb: PUSH1 0x84 000005bd: CALLDATALOAD 000005be: SWAP1 000005bf: PUSH1 0xa4 000005c1: CALLDATALOAD 000005c2: SWAP1 000005c3: PUSH1 0xc4 000005c5: CALLDATALOAD 000005c6: AND 000005c7: PUSH1 0xff 000005c9: PUSH1 0xe4 000005cb: CALLDATALOAD 000005cc: AND 000005cd: PUSH2 0x0104 000005d0: CALLDATALOAD 000005d1: PUSH2 0x0124 000005d4: CALLDATALOAD 000005d5: PUSH2 0x143b 000005d8: JUMP 000005d9: JUMPDEST 000005da: PUSH1 0x40 000005dc: DUP1 000005dd: MLOAD 000005de: SWAP2 000005df: DUP3 000005e0: MSTORE 000005e1: MLOAD 000005e2: SWAP1 000005e3: DUP2 000005e4: SWAP1 000005e5: SUB 000005e6: PUSH1 0x20 000005e8: ADD 000005e9: SWAP1 000005ea: RETURN 000005eb: JUMPDEST 000005ec: PUSH1 0x00 000005ee: PUSH1 0x02 000005f0: ADDRESS 000005f1: DUP14 000005f2: DUP14 000005f3: DUP14 000005f4: DUP14 000005f5: DUP14 000005f6: DUP14 000005f7: PUSH1 0x00 000005f9: PUSH1 0x40 000005fb: MLOAD 000005fc: PUSH1 0x20 000005fe: ADD 000005ff: MSTORE 00000600: PUSH1 0x40 00000602: MLOAD 00000603: DUP1 00000604: DUP9 00000605: PUSH1 0x01 00000607: PUSH1 0xa0 00000609: PUSH1 0x02 0000060b: EXP 0000060c: SUB 0000060d: AND 0000060e: PUSH1 0x01 00000610: PUSH1 0xa0 00000612: PUSH1 0x02 00000614: EXP 00000615: SUB 00000616: AND 00000617: PUSH1 0x60 00000619: PUSH1 0x02 0000061b: EXP 0000061c: MUL 0000061d: DUP2 0000061e: MSTORE 0000061f: PUSH1 0x14 00000621: ADD 00000622: DUP8 00000623: PUSH1 0x01 00000625: PUSH1 0xa0 00000627: PUSH1 0x02 00000629: EXP 0000062a: SUB 0000062b: AND 0000062c: PUSH1 0x01 0000062e: PUSH1 0xa0 00000630: PUSH1 0x02 00000632: EXP 00000633: SUB 00000634: AND 00000635: PUSH1 0x60 00000637: PUSH1 0x02 00000639: EXP 0000063a: MUL 0000063b: DUP2 0000063c: MSTORE 0000063d: PUSH1 0x14 0000063f: ADD 00000640: DUP7 00000641: DUP2 00000642: MSTORE 00000643: PUSH1 0x20 00000645: ADD 00000646: DUP6 00000647: PUSH1 0x01 00000649: PUSH1 0xa0 0000064b: PUSH1 0x02 0000064d: EXP 0000064e: SUB 0000064f: AND 00000650: PUSH1 0x01 00000652: PUSH1 0xa0 00000654: PUSH1 0x02 00000656: EXP 00000657: SUB 00000658: AND 00000659: PUSH1 0x60 0000065b: PUSH1 0x02 0000065d: EXP 0000065e: MUL 0000065f: DUP2 00000660: MSTORE 00000661: PUSH1 0x14 00000663: ADD 00000664: DUP5 00000665: DUP2 00000666: MSTORE 00000667: PUSH1 0x20 00000669: ADD 0000066a: DUP4 0000066b: DUP2 0000066c: MSTORE 0000066d: PUSH1 0x20 0000066f: ADD 00000670: DUP3 00000671: DUP2 00000672: MSTORE 00000673: PUSH1 0x20 00000675: ADD 00000676: SWAP8 00000677: POP 00000678: POP 00000679: POP 0000067a: POP 0000067b: POP 0000067c: POP 0000067d: POP 0000067e: POP 0000067f: PUSH1 0x20 00000681: PUSH1 0x40 00000683: MLOAD 00000684: DUP1 00000685: DUP4 00000686: SUB 00000687: DUP2 00000688: PUSH1 0x00 0000068a: DUP7 0000068b: PUSH2 0x646e 0000068e: GAS 0000068f: SUB 00000690: CALL 00000691: ISZERO 00000692: ISZERO 00000693: PUSH2 0x0698 00000696: JUMPI 00000697: INVALID 00000698: JUMPDEST 00000699: POP 0000069a: POP 0000069b: PUSH1 0x40 0000069d: DUP1 0000069e: MLOAD 0000069f: MLOAD 000006a0: PUSH1 0x01 000006a2: PUSH1 0xa0 000006a4: PUSH1 0x02 000006a6: EXP 000006a7: SUB 000006a8: DUP9 000006a9: AND 000006aa: PUSH1 0x00 000006ac: SWAP1 000006ad: DUP2 000006ae: MSTORE 000006af: PUSH1 0x07 000006b1: PUSH1 0x20 000006b3: SWAP1 000006b4: DUP2 000006b5: MSTORE 000006b6: DUP4 000006b7: DUP3 000006b8: KECCAK256 000006b9: DUP4 000006ba: DUP4 000006bb: MSTORE 000006bc: SWAP1 000006bd: MSTORE 000006be: SWAP2 000006bf: SWAP1 000006c0: SWAP2 000006c1: KECCAK256 000006c2: SLOAD 000006c3: SWAP1 000006c4: SWAP2 000006c5: POP 000006c6: PUSH1 0xff 000006c8: AND 000006c9: DUP1 000006ca: PUSH2 0x077c 000006cd: JUMPI 000006ce: POP 000006cf: PUSH1 0x40 000006d1: DUP1 000006d2: MLOAD 000006d3: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 000006f4: DUP2 000006f5: MSTORE 000006f6: PUSH1 0x1c 000006f8: DUP2 000006f9: ADD 000006fa: DUP4 000006fb: SWAP1 000006fc: MSTORE 000006fd: DUP2 000006fe: MLOAD 000006ff: SWAP1 00000700: DUP2 00000701: SWAP1 00000702: SUB 00000703: PUSH1 0x3c 00000705: ADD 00000706: DUP2 00000707: KECCAK256 00000708: PUSH1 0x00 0000070a: DUP3 0000070b: DUP2 0000070c: MSTORE 0000070d: PUSH1 0x20 0000070f: DUP4 00000710: DUP2 00000711: ADD 00000712: DUP6 00000713: MSTORE 00000714: SWAP3 00000715: DUP5 00000716: ADD 00000717: DUP2 00000718: SWAP1 00000719: MSTORE 0000071a: DUP4 0000071b: MLOAD 0000071c: SWAP2 0000071d: DUP3 0000071e: MSTORE 0000071f: PUSH1 0xff 00000721: DUP10 00000722: AND 00000723: DUP3 00000724: DUP5 00000725: ADD 00000726: MSTORE 00000727: DUP2 00000728: DUP5 00000729: ADD 0000072a: DUP9 0000072b: SWAP1 0000072c: MSTORE 0000072d: PUSH1 0x60 0000072f: DUP3 00000730: ADD 00000731: DUP8 00000732: SWAP1 00000733: MSTORE 00000734: SWAP3 00000735: MLOAD 00000736: PUSH1 0x01 00000738: PUSH1 0xa0 0000073a: PUSH1 0x02 0000073c: EXP 0000073d: SUB 0000073e: DUP11 0000073f: AND 00000740: SWAP4 00000741: PUSH1 0x01 00000743: SWAP4 00000744: PUSH1 0x80 00000746: DUP1 00000747: DUP6 00000748: ADD 00000749: SWAP5 0000074a: SWAP2 0000074b: SWAP4 0000074c: PUSH1 0x1f 0000074e: NOT 0000074f: DUP2 00000750: ADD 00000751: SWAP4 00000752: SWAP3 00000753: DUP2 00000754: SWAP1 00000755: SUB 00000756: SWAP1 00000757: SWAP2 00000758: ADD 00000759: SWAP2 0000075a: DUP7 0000075b: PUSH2 0x646e 0000075e: GAS 0000075f: SUB 00000760: CALL 00000761: ISZERO 00000762: ISZERO 00000763: PUSH2 0x0768 00000766: JUMPI 00000767: INVALID 00000768: JUMPDEST 00000769: POP 0000076a: POP 0000076b: PUSH1 0x20 0000076d: PUSH1 0x40 0000076f: MLOAD 00000770: SUB 00000771: MLOAD 00000772: PUSH1 0x01 00000774: PUSH1 0xa0 00000776: PUSH1 0x02 00000778: EXP 00000779: SUB 0000077a: AND 0000077b: EQ 0000077c: JUMPDEST 0000077d: DUP1 0000077e: ISZERO 0000077f: PUSH2 0x0788 00000782: JUMPI 00000783: POP 00000784: DUP8 00000785: NUMBER 00000786: GT 00000787: ISZERO 00000788: JUMPDEST 00000789: DUP1 0000078a: ISZERO 0000078b: PUSH2 0x07c2 0000078e: JUMPI 0000078f: POP 00000790: PUSH1 0x01 00000792: PUSH1 0xa0 00000794: PUSH1 0x02 00000796: EXP 00000797: SUB 00000798: DUP7 00000799: AND 0000079a: PUSH1 0x00 0000079c: SWAP1 0000079d: DUP2 0000079e: MSTORE 0000079f: PUSH1 0x08 000007a1: PUSH1 0x20 000007a3: SWAP1 000007a4: DUP2 000007a5: MSTORE 000007a6: PUSH1 0x40 000007a8: DUP1 000007a9: DUP4 000007aa: KECCAK256 000007ab: DUP5 000007ac: DUP5 000007ad: MSTORE 000007ae: SWAP1 000007af: SWAP2 000007b0: MSTORE 000007b1: SWAP1 000007b2: KECCAK256 000007b3: SLOAD 000007b4: DUP12 000007b5: SWAP1 000007b6: PUSH2 0x07bf 000007b9: SWAP1 000007ba: DUP5 000007bb: PUSH2 0x1682 000007be: JUMP 000007bf: JUMPDEST 000007c0: GT 000007c1: ISZERO 000007c2: JUMPDEST 000007c3: ISZERO 000007c4: ISZERO 000007c5: PUSH2 0x07ce 000007c8: JUMPI 000007c9: PUSH1 0x00 000007cb: PUSH1 0x00 000007cd: REVERT 000007ce: JUMPDEST 000007cf: PUSH2 0x07dc 000007d2: DUP13 000007d3: DUP13 000007d4: DUP13 000007d5: DUP13 000007d6: DUP11 000007d7: DUP8 000007d8: PUSH2 0x16aa 000007db: JUMP 000007dc: JUMPDEST 000007dd: PUSH1 0x01 000007df: PUSH1 0xa0 000007e1: PUSH1 0x02 000007e3: EXP 000007e4: SUB 000007e5: DUP7 000007e6: AND 000007e7: PUSH1 0x00 000007e9: SWAP1 000007ea: DUP2 000007eb: MSTORE 000007ec: PUSH1 0x08 000007ee: PUSH1 0x20 000007f0: SWAP1 000007f1: DUP2 000007f2: MSTORE 000007f3: PUSH1 0x40 000007f5: DUP1 000007f6: DUP4 000007f7: KECCAK256 000007f8: DUP5 000007f9: DUP5 000007fa: MSTORE 000007fb: SWAP1 000007fc: SWAP2 000007fd: MSTORE 000007fe: SWAP1 000007ff: KECCAK256 00000800: SLOAD 00000801: PUSH2 0x080a 00000804: SWAP1 00000805: DUP4 00000806: PUSH2 0x1682 00000809: JUMP 0000080a: JUMPDEST 0000080b: PUSH1 0x01 0000080d: PUSH1 0xa0 0000080f: PUSH1 0x02 00000811: EXP 00000812: SUB 00000813: DUP8 00000814: AND 00000815: PUSH1 0x00 00000817: SWAP1 00000818: DUP2 00000819: MSTORE 0000081a: PUSH1 0x08 0000081c: PUSH1 0x20 0000081e: SWAP1 0000081f: DUP2 00000820: MSTORE 00000821: PUSH1 0x40 00000823: DUP1 00000824: DUP4 00000825: KECCAK256 00000826: DUP6 00000827: DUP5 00000828: MSTORE 00000829: SWAP1 0000082a: SWAP2 0000082b: MSTORE 0000082c: SWAP1 0000082d: KECCAK256 0000082e: SSTORE 0000082f: PUSH32 0x6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d 00000850: DUP13 00000851: DUP4 00000852: DUP13 00000853: DUP15 00000854: DUP14 00000855: DUP4 00000856: MUL 00000857: DUP2 00000858: ISZERO 00000859: ISZERO 0000085a: PUSH2 0x085f 0000085d: JUMPI 0000085e: INVALID 0000085f: JUMPDEST 00000860: PUSH1 0x40 00000862: DUP1 00000863: MLOAD 00000864: PUSH1 0x01 00000866: PUSH1 0xa0 00000868: PUSH1 0x02 0000086a: EXP 0000086b: SUB 0000086c: SWAP7 0000086d: DUP8 0000086e: AND 0000086f: DUP2 00000870: MSTORE 00000871: PUSH1 0x20 00000873: DUP2 00000874: ADD 00000875: SWAP6 00000876: SWAP1 00000877: SWAP6 00000878: MSTORE 00000879: SWAP3 0000087a: DUP6 0000087b: AND 0000087c: DUP5 0000087d: DUP5 0000087e: ADD 0000087f: MSTORE 00000880: DIV 00000881: PUSH1 0x60 00000883: DUP4 00000884: ADD 00000885: MSTORE 00000886: DUP3 00000887: DUP11 00000888: AND 00000889: PUSH1 0x80 0000088b: DUP4 0000088c: ADD 0000088d: MSTORE 0000088e: CALLER 0000088f: SWAP3 00000890: SWAP1 00000891: SWAP3 00000892: AND 00000893: PUSH1 0xa0 00000895: DUP3 00000896: ADD 00000897: MSTORE 00000898: SWAP1 00000899: MLOAD 0000089a: SWAP1 0000089b: DUP2 0000089c: SWAP1 0000089d: SUB 0000089e: PUSH1 0xc0 000008a0: ADD 000008a1: SWAP1 000008a2: LOG1 000008a3: JUMPDEST 000008a4: POP 000008a5: POP 000008a6: POP 000008a7: POP 000008a8: POP 000008a9: POP 000008aa: POP 000008ab: POP 000008ac: POP 000008ad: POP 000008ae: POP 000008af: POP 000008b0: JUMP 000008b1: JUMPDEST 000008b2: PUSH1 0x40 000008b4: DUP1 000008b5: MLOAD 000008b6: PUSH1 0x00 000008b8: PUSH1 0x20 000008ba: SWAP2 000008bb: DUP3 000008bc: ADD 000008bd: DUP2 000008be: SWAP1 000008bf: MSTORE 000008c0: DUP3 000008c1: MLOAD 000008c2: PUSH1 0x60 000008c4: PUSH1 0x02 000008c6: EXP 000008c7: PUSH1 0x01 000008c9: PUSH1 0xa0 000008cb: PUSH1 0x02 000008cd: EXP 000008ce: SUB 000008cf: ADDRESS 000008d0: DUP2 000008d1: AND 000008d2: DUP3 000008d3: MUL 000008d4: DUP4 000008d5: MSTORE 000008d6: DUP1 000008d7: DUP13 000008d8: AND 000008d9: DUP3 000008da: MUL 000008db: PUSH1 0x14 000008dd: DUP5 000008de: ADD 000008df: MSTORE 000008e0: PUSH1 0x28 000008e2: DUP4 000008e3: ADD 000008e4: DUP12 000008e5: SWAP1 000008e6: MSTORE 000008e7: DUP10 000008e8: AND 000008e9: MUL 000008ea: PUSH1 0x48 000008ec: DUP3 000008ed: ADD 000008ee: MSTORE 000008ef: PUSH1 0x5c 000008f1: DUP2 000008f2: ADD 000008f3: DUP8 000008f4: SWAP1 000008f5: MSTORE 000008f6: PUSH1 0x7c 000008f8: DUP2 000008f9: ADD 000008fa: DUP7 000008fb: SWAP1 000008fc: MSTORE 000008fd: PUSH1 0x9c 000008ff: DUP2 00000900: ADD 00000901: DUP6 00000902: SWAP1 00000903: MSTORE 00000904: SWAP3 00000905: MLOAD 00000906: SWAP1 00000907: SWAP3 00000908: PUSH1 0x02 0000090a: SWAP3 0000090b: PUSH1 0xbc 0000090d: DUP1 0000090e: DUP4 0000090f: ADD 00000910: SWAP4 00000911: SWAP2 00000912: SWAP3 00000913: DUP3 00000914: SWAP1 00000915: SUB 00000916: ADD 00000917: DUP2 00000918: DUP7 00000919: DUP7 0000091a: PUSH2 0x646e 0000091d: GAS 0000091e: SUB 0000091f: CALL 00000920: ISZERO 00000921: ISZERO 00000922: PUSH2 0x0927 00000925: JUMPI 00000926: INVALID 00000927: JUMPDEST 00000928: POP 00000929: POP 0000092a: PUSH1 0x40 0000092c: DUP1 0000092d: MLOAD 0000092e: DUP1 0000092f: MLOAD 00000930: PUSH1 0x01 00000932: PUSH1 0xa0 00000934: PUSH1 0x02 00000936: EXP 00000937: SUB 00000938: CALLER 00000939: DUP2 0000093a: AND 0000093b: PUSH1 0x00 0000093d: DUP2 0000093e: DUP2 0000093f: MSTORE 00000940: PUSH1 0x07 00000942: PUSH1 0x20 00000944: SWAP1 00000945: DUP2 00000946: MSTORE 00000947: DUP7 00000948: DUP3 00000949: KECCAK256 0000094a: DUP6 0000094b: DUP4 0000094c: MSTORE 0000094d: DUP2 0000094e: MSTORE 0000094f: SWAP1 00000950: DUP7 00000951: SWAP1 00000952: KECCAK256 00000953: DUP1 00000954: SLOAD 00000955: PUSH1 0xff 00000957: NOT 00000958: AND 00000959: PUSH1 0x01 0000095b: OR 0000095c: SWAP1 0000095d: SSTORE 0000095e: DUP13 0000095f: DUP4 00000960: AND 00000961: DUP6 00000962: MSTORE 00000963: DUP5 00000964: ADD 00000965: DUP12 00000966: SWAP1 00000967: MSTORE 00000968: SWAP1 00000969: DUP10 0000096a: AND 0000096b: DUP4 0000096c: DUP6 0000096d: ADD 0000096e: MSTORE 0000096f: PUSH1 0x60 00000971: DUP4 00000972: ADD 00000973: DUP9 00000974: SWAP1 00000975: MSTORE 00000976: PUSH1 0x80 00000978: DUP4 00000979: ADD 0000097a: DUP8 0000097b: SWAP1 0000097c: MSTORE 0000097d: PUSH1 0xa0 0000097f: DUP4 00000980: ADD 00000981: DUP7 00000982: SWAP1 00000983: MSTORE 00000984: PUSH1 0xc0 00000986: DUP4 00000987: ADD 00000988: MSTORE 00000989: SWAP2 0000098a: MLOAD 0000098b: SWAP2 0000098c: SWAP3 0000098d: POP 0000098e: PUSH32 0x3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e85 000009af: SWAP2 000009b0: SWAP1 000009b1: DUP2 000009b2: SWAP1 000009b3: SUB 000009b4: PUSH1 0xe0 000009b6: ADD 000009b7: SWAP1 000009b8: LOG1 000009b9: JUMPDEST 000009ba: POP 000009bb: POP 000009bc: POP 000009bd: POP 000009be: POP 000009bf: POP 000009c0: POP 000009c1: JUMP 000009c2: JUMPDEST 000009c3: PUSH1 0x08 000009c5: PUSH1 0x20 000009c7: SWAP1 000009c8: DUP2 000009c9: MSTORE 000009ca: PUSH1 0x00 000009cc: SWAP3 000009cd: DUP4 000009ce: MSTORE 000009cf: PUSH1 0x40 000009d1: DUP1 000009d2: DUP5 000009d3: KECCAK256 000009d4: SWAP1 000009d5: SWAP2 000009d6: MSTORE 000009d7: SWAP1 000009d8: DUP3 000009d9: MSTORE 000009da: SWAP1 000009db: KECCAK256 000009dc: SLOAD 000009dd: DUP2 000009de: JUMP 000009df: JUMPDEST 000009e0: PUSH1 0x40 000009e2: DUP1 000009e3: MLOAD 000009e4: PUSH1 0x00 000009e6: PUSH1 0x20 000009e8: SWAP2 000009e9: DUP3 000009ea: ADD 000009eb: DUP2 000009ec: SWAP1 000009ed: MSTORE 000009ee: DUP3 000009ef: MLOAD 000009f0: PUSH1 0x60 000009f2: PUSH1 0x02 000009f4: EXP 000009f5: PUSH1 0x01 000009f7: PUSH1 0xa0 000009f9: PUSH1 0x02 000009fb: EXP 000009fc: SUB 000009fd: ADDRESS 000009fe: DUP2 000009ff: AND 00000a00: DUP3 00000a01: MUL 00000a02: DUP4 00000a03: MSTORE 00000a04: DUP1 00000a05: DUP16 00000a06: AND 00000a07: DUP3 00000a08: MUL 00000a09: PUSH1 0x14 00000a0b: DUP5 00000a0c: ADD 00000a0d: MSTORE 00000a0e: PUSH1 0x28 00000a10: DUP4 00000a11: ADD 00000a12: DUP15 00000a13: SWAP1 00000a14: MSTORE 00000a15: DUP13 00000a16: AND 00000a17: MUL 00000a18: PUSH1 0x48 00000a1a: DUP3 00000a1b: ADD 00000a1c: MSTORE 00000a1d: PUSH1 0x5c 00000a1f: DUP2 00000a20: ADD 00000a21: DUP11 00000a22: SWAP1 00000a23: MSTORE 00000a24: PUSH1 0x7c 00000a26: DUP2 00000a27: ADD 00000a28: DUP10 00000a29: SWAP1 00000a2a: MSTORE 00000a2b: PUSH1 0x9c 00000a2d: DUP2 00000a2e: ADD 00000a2f: DUP9 00000a30: SWAP1 00000a31: MSTORE 00000a32: SWAP3 00000a33: MLOAD 00000a34: SWAP1 00000a35: SWAP3 00000a36: PUSH1 0x02 00000a38: SWAP3 00000a39: PUSH1 0xbc 00000a3b: DUP1 00000a3c: DUP4 00000a3d: ADD 00000a3e: SWAP4 00000a3f: SWAP2 00000a40: SWAP3 00000a41: DUP3 00000a42: SWAP1 00000a43: SUB 00000a44: ADD 00000a45: DUP2 00000a46: DUP7 00000a47: DUP7 00000a48: PUSH2 0x646e 00000a4b: GAS 00000a4c: SUB 00000a4d: CALL 00000a4e: ISZERO 00000a4f: ISZERO 00000a50: PUSH2 0x0a55 00000a53: JUMPI 00000a54: INVALID 00000a55: JUMPDEST 00000a56: POP 00000a57: POP 00000a58: PUSH1 0x40 00000a5a: DUP1 00000a5b: MLOAD 00000a5c: MLOAD 00000a5d: PUSH1 0x01 00000a5f: PUSH1 0xa0 00000a61: PUSH1 0x02 00000a63: EXP 00000a64: SUB 00000a65: CALLER 00000a66: AND 00000a67: PUSH1 0x00 00000a69: SWAP1 00000a6a: DUP2 00000a6b: MSTORE 00000a6c: PUSH1 0x07 00000a6e: PUSH1 0x20 00000a70: SWAP1 00000a71: DUP2 00000a72: MSTORE 00000a73: DUP4 00000a74: DUP3 00000a75: KECCAK256 00000a76: DUP4 00000a77: DUP4 00000a78: MSTORE 00000a79: SWAP1 00000a7a: MSTORE 00000a7b: SWAP2 00000a7c: SWAP1 00000a7d: SWAP2 00000a7e: KECCAK256 00000a7f: SLOAD 00000a80: SWAP1 00000a81: SWAP2 00000a82: POP 00000a83: PUSH1 0xff 00000a85: AND 00000a86: DUP1 00000a87: PUSH2 0x0b39 00000a8a: JUMPI 00000a8b: POP 00000a8c: PUSH1 0x40 00000a8e: DUP1 00000a8f: MLOAD 00000a90: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00000ab1: DUP2 00000ab2: MSTORE 00000ab3: PUSH1 0x1c 00000ab5: DUP2 00000ab6: ADD 00000ab7: DUP4 00000ab8: SWAP1 00000ab9: MSTORE 00000aba: DUP2 00000abb: MLOAD 00000abc: SWAP1 00000abd: DUP2 00000abe: SWAP1 00000abf: SUB 00000ac0: PUSH1 0x3c 00000ac2: ADD 00000ac3: DUP2 00000ac4: KECCAK256 00000ac5: PUSH1 0x00 00000ac7: DUP3 00000ac8: DUP2 00000ac9: MSTORE 00000aca: PUSH1 0x20 00000acc: DUP4 00000acd: DUP2 00000ace: ADD 00000acf: DUP6 00000ad0: MSTORE 00000ad1: SWAP3 00000ad2: DUP5 00000ad3: ADD 00000ad4: DUP2 00000ad5: SWAP1 00000ad6: MSTORE 00000ad7: DUP4 00000ad8: MLOAD 00000ad9: SWAP2 00000ada: DUP3 00000adb: MSTORE 00000adc: PUSH1 0xff 00000ade: DUP9 00000adf: AND 00000ae0: DUP3 00000ae1: DUP5 00000ae2: ADD 00000ae3: MSTORE 00000ae4: DUP2 00000ae5: DUP5 00000ae6: ADD 00000ae7: DUP8 00000ae8: SWAP1 00000ae9: MSTORE 00000aea: PUSH1 0x60 00000aec: DUP3 00000aed: ADD 00000aee: DUP7 00000aef: SWAP1 00000af0: MSTORE 00000af1: SWAP3 00000af2: MLOAD 00000af3: PUSH1 0x01 00000af5: PUSH1 0xa0 00000af7: PUSH1 0x02 00000af9: EXP 00000afa: SUB 00000afb: CALLER 00000afc: AND 00000afd: SWAP4 00000afe: PUSH1 0x01 00000b00: SWAP4 00000b01: PUSH1 0x80 00000b03: DUP1 00000b04: DUP6 00000b05: ADD 00000b06: SWAP5 00000b07: SWAP2 00000b08: SWAP4 00000b09: PUSH1 0x1f 00000b0b: NOT 00000b0c: DUP2 00000b0d: ADD 00000b0e: SWAP4 00000b0f: SWAP3 00000b10: DUP2 00000b11: SWAP1 00000b12: SUB 00000b13: SWAP1 00000b14: SWAP2 00000b15: ADD 00000b16: SWAP2 00000b17: DUP7 00000b18: PUSH2 0x646e 00000b1b: GAS 00000b1c: SUB 00000b1d: CALL 00000b1e: ISZERO 00000b1f: ISZERO 00000b20: PUSH2 0x0b25 00000b23: JUMPI 00000b24: INVALID 00000b25: JUMPDEST 00000b26: POP 00000b27: POP 00000b28: PUSH1 0x20 00000b2a: PUSH1 0x40 00000b2c: MLOAD 00000b2d: SUB 00000b2e: MLOAD 00000b2f: PUSH1 0x01 00000b31: PUSH1 0xa0 00000b33: PUSH1 0x02 00000b35: EXP 00000b36: SUB 00000b37: AND 00000b38: EQ 00000b39: JUMPDEST 00000b3a: ISZERO 00000b3b: ISZERO 00000b3c: PUSH2 0x0b45 00000b3f: JUMPI 00000b40: PUSH1 0x00 00000b42: PUSH1 0x00 00000b44: REVERT 00000b45: JUMPDEST 00000b46: PUSH1 0x01 00000b48: PUSH1 0xa0 00000b4a: PUSH1 0x02 00000b4c: EXP 00000b4d: SUB 00000b4e: CALLER 00000b4f: DUP2 00000b50: AND 00000b51: PUSH1 0x00 00000b53: DUP2 00000b54: DUP2 00000b55: MSTORE 00000b56: PUSH1 0x08 00000b58: PUSH1 0x20 00000b5a: SWAP1 00000b5b: DUP2 00000b5c: MSTORE 00000b5d: PUSH1 0x40 00000b5f: DUP1 00000b60: DUP4 00000b61: KECCAK256 00000b62: DUP7 00000b63: DUP5 00000b64: MSTORE 00000b65: DUP3 00000b66: MSTORE 00000b67: SWAP2 00000b68: DUP3 00000b69: SWAP1 00000b6a: KECCAK256 00000b6b: DUP14 00000b6c: SWAP1 00000b6d: SSTORE 00000b6e: DUP2 00000b6f: MLOAD 00000b70: DUP15 00000b71: DUP6 00000b72: AND 00000b73: DUP2 00000b74: MSTORE 00000b75: SWAP1 00000b76: DUP2 00000b77: ADD 00000b78: DUP14 00000b79: SWAP1 00000b7a: MSTORE 00000b7b: SWAP3 00000b7c: DUP12 00000b7d: AND 00000b7e: DUP4 00000b7f: DUP3 00000b80: ADD 00000b81: MSTORE 00000b82: PUSH1 0x60 00000b84: DUP4 00000b85: ADD 00000b86: DUP11 00000b87: SWAP1 00000b88: MSTORE 00000b89: PUSH1 0x80 00000b8b: DUP4 00000b8c: ADD 00000b8d: DUP10 00000b8e: SWAP1 00000b8f: MSTORE 00000b90: PUSH1 0xa0 00000b92: DUP4 00000b93: ADD 00000b94: DUP9 00000b95: SWAP1 00000b96: MSTORE 00000b97: PUSH1 0xc0 00000b99: DUP4 00000b9a: ADD 00000b9b: SWAP2 00000b9c: SWAP1 00000b9d: SWAP2 00000b9e: MSTORE 00000b9f: PUSH1 0xff 00000ba1: DUP7 00000ba2: AND 00000ba3: PUSH1 0xe0 00000ba5: DUP4 00000ba6: ADD 00000ba7: MSTORE 00000ba8: PUSH2 0x0100 00000bab: DUP3 00000bac: ADD 00000bad: DUP6 00000bae: SWAP1 00000baf: MSTORE 00000bb0: PUSH2 0x0120 00000bb3: DUP3 00000bb4: ADD 00000bb5: DUP5 00000bb6: SWAP1 00000bb7: MSTORE 00000bb8: MLOAD 00000bb9: PUSH32 0x1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b0 00000bda: SWAP2 00000bdb: DUP2 00000bdc: SWAP1 00000bdd: SUB 00000bde: PUSH2 0x0140 00000be1: ADD 00000be2: SWAP1 00000be3: LOG1 00000be4: JUMPDEST 00000be5: POP 00000be6: POP 00000be7: POP 00000be8: POP 00000be9: POP 00000bea: POP 00000beb: POP 00000bec: POP 00000bed: POP 00000bee: POP 00000bef: JUMP 00000bf0: JUMPDEST 00000bf1: CALLER 00000bf2: PUSH1 0x01 00000bf4: PUSH1 0xa0 00000bf6: PUSH1 0x02 00000bf8: EXP 00000bf9: SUB 00000bfa: AND 00000bfb: PUSH1 0x00 00000bfd: SWAP1 00000bfe: DUP2 00000bff: MSTORE 00000c00: PUSH1 0x00 00000c02: DUP1 00000c03: MLOAD 00000c04: PUSH1 0x20 00000c06: PUSH2 0x19e1 00000c09: DUP4 00000c0a: CODECOPY 00000c0b: DUP2 00000c0c: MLOAD 00000c0d: SWAP2 00000c0e: MSTORE 00000c0f: PUSH1 0x20 00000c11: MSTORE 00000c12: PUSH1 0x40 00000c14: SWAP1 00000c15: KECCAK256 00000c16: SLOAD 00000c17: DUP2 00000c18: SWAP1 00000c19: LT 00000c1a: ISZERO 00000c1b: PUSH2 0x0c24 00000c1e: JUMPI 00000c1f: PUSH1 0x00 00000c21: PUSH1 0x00 00000c23: REVERT 00000c24: JUMPDEST 00000c25: CALLER 00000c26: PUSH1 0x01 00000c28: PUSH1 0xa0 00000c2a: PUSH1 0x02 00000c2c: EXP 00000c2d: SUB 00000c2e: AND 00000c2f: PUSH1 0x00 00000c31: SWAP1 00000c32: DUP2 00000c33: MSTORE 00000c34: PUSH1 0x00 00000c36: DUP1 00000c37: MLOAD 00000c38: PUSH1 0x20 00000c3a: PUSH2 0x19e1 00000c3d: DUP4 00000c3e: CODECOPY 00000c3f: DUP2 00000c40: MLOAD 00000c41: SWAP2 00000c42: MSTORE 00000c43: PUSH1 0x20 00000c45: MSTORE 00000c46: PUSH1 0x40 00000c48: SWAP1 00000c49: KECCAK256 00000c4a: SLOAD 00000c4b: PUSH2 0x0c54 00000c4e: SWAP1 00000c4f: DUP3 00000c50: PUSH2 0x1987 00000c53: JUMP 00000c54: JUMPDEST 00000c55: CALLER 00000c56: PUSH1 0x01 00000c58: PUSH1 0xa0 00000c5a: PUSH1 0x02 00000c5c: EXP 00000c5d: SUB 00000c5e: AND 00000c5f: PUSH1 0x00 00000c61: DUP2 00000c62: DUP2 00000c63: MSTORE 00000c64: PUSH1 0x00 00000c66: DUP1 00000c67: MLOAD 00000c68: PUSH1 0x20 00000c6a: PUSH2 0x19e1 00000c6d: DUP4 00000c6e: CODECOPY 00000c6f: DUP2 00000c70: MLOAD 00000c71: SWAP2 00000c72: MSTORE 00000c73: PUSH1 0x20 00000c75: MSTORE 00000c76: PUSH1 0x40 00000c78: DUP1 00000c79: DUP3 00000c7a: KECCAK256 00000c7b: SWAP4 00000c7c: SWAP1 00000c7d: SWAP4 00000c7e: SSTORE 00000c7f: SWAP2 00000c80: MLOAD 00000c81: SWAP1 00000c82: SWAP2 00000c83: DUP4 00000c84: SWAP2 00000c85: SWAP1 00000c86: DUP2 00000c87: DUP2 00000c88: DUP2 00000c89: DUP6 00000c8a: DUP8 00000c8b: PUSH2 0x8796 00000c8e: GAS 00000c8f: SUB 00000c90: CALL 00000c91: SWAP3 00000c92: POP 00000c93: POP 00000c94: POP 00000c95: ISZERO 00000c96: ISZERO 00000c97: PUSH2 0x0ca0 00000c9a: JUMPI 00000c9b: PUSH1 0x00 00000c9d: PUSH1 0x00 00000c9f: REVERT 00000ca0: JUMPDEST 00000ca1: PUSH1 0x01 00000ca3: PUSH1 0xa0 00000ca5: PUSH1 0x02 00000ca7: EXP 00000ca8: SUB 00000ca9: CALLER 00000caa: AND 00000cab: PUSH1 0x00 00000cad: DUP2 00000cae: DUP2 00000caf: MSTORE 00000cb0: PUSH1 0x00 00000cb2: DUP1 00000cb3: MLOAD 00000cb4: PUSH1 0x20 00000cb6: PUSH2 0x19e1 00000cb9: DUP4 00000cba: CODECOPY 00000cbb: DUP2 00000cbc: MLOAD 00000cbd: SWAP2 00000cbe: MSTORE 00000cbf: PUSH1 0x20 00000cc1: SWAP1 00000cc2: DUP2 00000cc3: MSTORE 00000cc4: PUSH1 0x40 00000cc6: DUP1 00000cc7: DUP4 00000cc8: KECCAK256 00000cc9: SLOAD 00000cca: DUP2 00000ccb: MLOAD 00000ccc: SWAP4 00000ccd: DUP5 00000cce: MSTORE 00000ccf: SWAP2 00000cd0: DUP4 00000cd1: ADD 00000cd2: SWAP4 00000cd3: SWAP1 00000cd4: SWAP4 00000cd5: MSTORE 00000cd6: DUP2 00000cd7: DUP4 00000cd8: ADD 00000cd9: DUP5 00000cda: SWAP1 00000cdb: MSTORE 00000cdc: PUSH1 0x60 00000cde: DUP3 00000cdf: ADD 00000ce0: MSTORE 00000ce1: SWAP1 00000ce2: MLOAD 00000ce3: PUSH32 0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567 00000d04: SWAP2 00000d05: DUP2 00000d06: SWAP1 00000d07: SUB 00000d08: PUSH1 0x80 00000d0a: ADD 00000d0b: SWAP1 00000d0c: LOG1 00000d0d: JUMPDEST 00000d0e: POP 00000d0f: JUMP 00000d10: JUMPDEST 00000d11: PUSH1 0x01 00000d13: PUSH1 0xa0 00000d15: PUSH1 0x02 00000d17: EXP 00000d18: SUB 00000d19: DUP3 00000d1a: AND 00000d1b: ISZERO 00000d1c: ISZERO 00000d1d: PUSH2 0x0d26 00000d20: JUMPI 00000d21: PUSH1 0x00 00000d23: PUSH1 0x00 00000d25: REVERT 00000d26: JUMPDEST 00000d27: PUSH1 0x40 00000d29: DUP1 00000d2a: MLOAD 00000d2b: PUSH1 0x00 00000d2d: PUSH1 0x20 00000d2f: SWAP2 00000d30: DUP3 00000d31: ADD 00000d32: DUP2 00000d33: SWAP1 00000d34: MSTORE 00000d35: DUP3 00000d36: MLOAD 00000d37: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00000d58: DUP2 00000d59: MSTORE 00000d5a: PUSH1 0x01 00000d5c: PUSH1 0xa0 00000d5e: PUSH1 0x02 00000d60: EXP 00000d61: SUB 00000d62: CALLER 00000d63: DUP2 00000d64: AND 00000d65: PUSH1 0x04 00000d67: DUP4 00000d68: ADD 00000d69: MSTORE 00000d6a: ADDRESS 00000d6b: DUP2 00000d6c: AND 00000d6d: PUSH1 0x24 00000d6f: DUP4 00000d70: ADD 00000d71: MSTORE 00000d72: PUSH1 0x44 00000d74: DUP3 00000d75: ADD 00000d76: DUP7 00000d77: SWAP1 00000d78: MSTORE 00000d79: SWAP4 00000d7a: MLOAD 00000d7b: SWAP4 00000d7c: DUP7 00000d7d: AND 00000d7e: SWAP4 00000d7f: PUSH4 0x23b872dd 00000d84: SWAP4 00000d85: PUSH1 0x64 00000d87: DUP1 00000d88: DUP5 00000d89: ADD 00000d8a: SWAP5 00000d8b: SWAP2 00000d8c: SWAP4 00000d8d: DUP4 00000d8e: SWAP1 00000d8f: SUB 00000d90: ADD 00000d91: SWAP1 00000d92: DUP3 00000d93: SWAP1 00000d94: DUP8 00000d95: DUP1 00000d96: EXTCODESIZE 00000d97: ISZERO 00000d98: ISZERO 00000d99: PUSH2 0x0d9e 00000d9c: JUMPI 00000d9d: INVALID 00000d9e: JUMPDEST 00000d9f: PUSH2 0x02c6 00000da2: GAS 00000da3: SUB 00000da4: CALL 00000da5: ISZERO 00000da6: ISZERO 00000da7: PUSH2 0x0dac 00000daa: JUMPI 00000dab: INVALID 00000dac: JUMPDEST 00000dad: POP 00000dae: POP 00000daf: PUSH1 0x40 00000db1: MLOAD 00000db2: MLOAD 00000db3: ISZERO 00000db4: ISZERO 00000db5: SWAP1 00000db6: POP 00000db7: PUSH2 0x0dc0 00000dba: JUMPI 00000dbb: PUSH1 0x00 00000dbd: PUSH1 0x00 00000dbf: REVERT 00000dc0: JUMPDEST 00000dc1: PUSH1 0x01 00000dc3: PUSH1 0xa0 00000dc5: PUSH1 0x02 00000dc7: EXP 00000dc8: SUB 00000dc9: DUP1 00000dca: DUP4 00000dcb: AND 00000dcc: PUSH1 0x00 00000dce: SWAP1 00000dcf: DUP2 00000dd0: MSTORE 00000dd1: PUSH1 0x06 00000dd3: PUSH1 0x20 00000dd5: SWAP1 00000dd6: DUP2 00000dd7: MSTORE 00000dd8: PUSH1 0x40 00000dda: DUP1 00000ddb: DUP4 00000ddc: KECCAK256 00000ddd: CALLER 00000dde: SWAP1 00000ddf: SWAP5 00000de0: AND 00000de1: DUP4 00000de2: MSTORE 00000de3: SWAP3 00000de4: SWAP1 00000de5: MSTORE 00000de6: KECCAK256 00000de7: SLOAD 00000de8: PUSH2 0x0df1 00000deb: SWAP1 00000dec: DUP3 00000ded: PUSH2 0x1682 00000df0: JUMP 00000df1: JUMPDEST 00000df2: PUSH1 0x01 00000df4: PUSH1 0xa0 00000df6: PUSH1 0x02 00000df8: EXP 00000df9: SUB 00000dfa: DUP4 00000dfb: DUP2 00000dfc: AND 00000dfd: PUSH1 0x00 00000dff: DUP2 00000e00: DUP2 00000e01: MSTORE 00000e02: PUSH1 0x06 00000e04: PUSH1 0x20 00000e06: SWAP1 00000e07: DUP2 00000e08: MSTORE 00000e09: PUSH1 0x40 00000e0b: DUP1 00000e0c: DUP4 00000e0d: KECCAK256 00000e0e: CALLER 00000e0f: SWAP1 00000e10: SWAP6 00000e11: AND 00000e12: DUP1 00000e13: DUP5 00000e14: MSTORE 00000e15: SWAP5 00000e16: DUP3 00000e17: MSTORE 00000e18: SWAP2 00000e19: DUP3 00000e1a: SWAP1 00000e1b: KECCAK256 00000e1c: DUP6 00000e1d: SWAP1 00000e1e: SSTORE 00000e1f: DUP2 00000e20: MLOAD 00000e21: SWAP3 00000e22: DUP4 00000e23: MSTORE 00000e24: DUP3 00000e25: ADD 00000e26: SWAP3 00000e27: SWAP1 00000e28: SWAP3 00000e29: MSTORE 00000e2a: DUP1 00000e2b: DUP3 00000e2c: ADD 00000e2d: DUP5 00000e2e: SWAP1 00000e2f: MSTORE 00000e30: PUSH1 0x60 00000e32: DUP2 00000e33: ADD 00000e34: SWAP3 00000e35: SWAP1 00000e36: SWAP3 00000e37: MSTORE 00000e38: MLOAD 00000e39: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 00000e5a: SWAP2 00000e5b: DUP2 00000e5c: SWAP1 00000e5d: SUB 00000e5e: PUSH1 0x80 00000e60: ADD 00000e61: SWAP1 00000e62: LOG1 00000e63: JUMPDEST 00000e64: POP 00000e65: POP 00000e66: JUMP 00000e67: JUMPDEST 00000e68: PUSH1 0x00 00000e6a: PUSH1 0x00 00000e6c: PUSH1 0x02 00000e6e: ADDRESS 00000e6f: DUP14 00000e70: DUP14 00000e71: DUP14 00000e72: DUP14 00000e73: DUP14 00000e74: DUP14 00000e75: PUSH1 0x00 00000e77: PUSH1 0x40 00000e79: MLOAD 00000e7a: PUSH1 0x20 00000e7c: ADD 00000e7d: MSTORE 00000e7e: PUSH1 0x40 00000e80: MLOAD 00000e81: DUP1 00000e82: DUP9 00000e83: PUSH1 0x01 00000e85: PUSH1 0xa0 00000e87: PUSH1 0x02 00000e89: EXP 00000e8a: SUB 00000e8b: AND 00000e8c: PUSH1 0x01 00000e8e: PUSH1 0xa0 00000e90: PUSH1 0x02 00000e92: EXP 00000e93: SUB 00000e94: AND 00000e95: PUSH1 0x60 00000e97: PUSH1 0x02 00000e99: EXP 00000e9a: MUL 00000e9b: DUP2 00000e9c: MSTORE 00000e9d: PUSH1 0x14 00000e9f: ADD 00000ea0: DUP8 00000ea1: PUSH1 0x01 00000ea3: PUSH1 0xa0 00000ea5: PUSH1 0x02 00000ea7: EXP 00000ea8: SUB 00000ea9: AND 00000eaa: PUSH1 0x01 00000eac: PUSH1 0xa0 00000eae: PUSH1 0x02 00000eb0: EXP 00000eb1: SUB 00000eb2: AND 00000eb3: PUSH1 0x60 00000eb5: PUSH1 0x02 00000eb7: EXP 00000eb8: MUL 00000eb9: DUP2 00000eba: MSTORE 00000ebb: PUSH1 0x14 00000ebd: ADD 00000ebe: DUP7 00000ebf: DUP2 00000ec0: MSTORE 00000ec1: PUSH1 0x20 00000ec3: ADD 00000ec4: DUP6 00000ec5: PUSH1 0x01 00000ec7: PUSH1 0xa0 00000ec9: PUSH1 0x02 00000ecb: EXP 00000ecc: SUB 00000ecd: AND 00000ece: PUSH1 0x01 00000ed0: PUSH1 0xa0 00000ed2: PUSH1 0x02 00000ed4: EXP 00000ed5: SUB 00000ed6: AND 00000ed7: PUSH1 0x60 00000ed9: PUSH1 0x02 00000edb: EXP 00000edc: MUL 00000edd: DUP2 00000ede: MSTORE 00000edf: PUSH1 0x14 00000ee1: ADD 00000ee2: DUP5 00000ee3: DUP2 00000ee4: MSTORE 00000ee5: PUSH1 0x20 00000ee7: ADD 00000ee8: DUP4 00000ee9: DUP2 00000eea: MSTORE 00000eeb: PUSH1 0x20 00000eed: ADD 00000eee: DUP3 00000eef: DUP2 00000ef0: MSTORE 00000ef1: PUSH1 0x20 00000ef3: ADD 00000ef4: SWAP8 00000ef5: POP 00000ef6: POP 00000ef7: POP 00000ef8: POP 00000ef9: POP 00000efa: POP 00000efb: POP 00000efc: POP 00000efd: PUSH1 0x20 00000eff: PUSH1 0x40 00000f01: MLOAD 00000f02: DUP1 00000f03: DUP4 00000f04: SUB 00000f05: DUP2 00000f06: PUSH1 0x00 00000f08: DUP7 00000f09: PUSH2 0x646e 00000f0c: GAS 00000f0d: SUB 00000f0e: CALL 00000f0f: ISZERO 00000f10: ISZERO 00000f11: PUSH2 0x0f16 00000f14: JUMPI 00000f15: INVALID 00000f16: JUMPDEST 00000f17: POP 00000f18: POP 00000f19: PUSH1 0x40 00000f1b: DUP1 00000f1c: MLOAD 00000f1d: MLOAD 00000f1e: PUSH1 0x01 00000f20: PUSH1 0xa0 00000f22: PUSH1 0x02 00000f24: EXP 00000f25: SUB 00000f26: DUP9 00000f27: AND 00000f28: PUSH1 0x00 00000f2a: SWAP1 00000f2b: DUP2 00000f2c: MSTORE 00000f2d: PUSH1 0x08 00000f2f: PUSH1 0x20 00000f31: SWAP1 00000f32: DUP2 00000f33: MSTORE 00000f34: DUP4 00000f35: DUP3 00000f36: KECCAK256 00000f37: DUP4 00000f38: DUP4 00000f39: MSTORE 00000f3a: SWAP1 00000f3b: MSTORE 00000f3c: SWAP2 00000f3d: SWAP1 00000f3e: SWAP2 00000f3f: KECCAK256 00000f40: SLOAD 00000f41: SWAP3 00000f42: POP 00000f43: SWAP1 00000f44: POP 00000f45: JUMPDEST 00000f46: POP 00000f47: SWAP11 00000f48: SWAP10 00000f49: POP 00000f4a: POP 00000f4b: POP 00000f4c: POP 00000f4d: POP 00000f4e: POP 00000f4f: POP 00000f50: POP 00000f51: POP 00000f52: POP 00000f53: JUMP 00000f54: JUMPDEST 00000f55: PUSH1 0x06 00000f57: PUSH1 0x20 00000f59: SWAP1 00000f5a: DUP2 00000f5b: MSTORE 00000f5c: PUSH1 0x00 00000f5e: SWAP3 00000f5f: DUP4 00000f60: MSTORE 00000f61: PUSH1 0x40 00000f63: DUP1 00000f64: DUP5 00000f65: KECCAK256 00000f66: SWAP1 00000f67: SWAP2 00000f68: MSTORE 00000f69: SWAP1 00000f6a: DUP3 00000f6b: MSTORE 00000f6c: SWAP1 00000f6d: KECCAK256 00000f6e: SLOAD 00000f6f: DUP2 00000f70: JUMP 00000f71: JUMPDEST 00000f72: PUSH1 0x00 00000f74: SLOAD 00000f75: CALLER 00000f76: PUSH1 0x01 00000f78: PUSH1 0xa0 00000f7a: PUSH1 0x02 00000f7c: EXP 00000f7d: SUB 00000f7e: SWAP1 00000f7f: DUP2 00000f80: AND 00000f81: SWAP2 00000f82: AND 00000f83: EQ 00000f84: PUSH2 0x0f8d 00000f87: JUMPI 00000f88: PUSH1 0x00 00000f8a: PUSH1 0x00 00000f8c: REVERT 00000f8d: JUMPDEST 00000f8e: PUSH1 0x03 00000f90: SLOAD 00000f91: DUP2 00000f92: GT 00000f93: ISZERO 00000f94: PUSH2 0x0f9d 00000f97: JUMPI 00000f98: PUSH1 0x00 00000f9a: PUSH1 0x00 00000f9c: REVERT 00000f9d: JUMPDEST 00000f9e: PUSH1 0x03 00000fa0: DUP2 00000fa1: SWAP1 00000fa2: SSTORE 00000fa3: JUMPDEST 00000fa4: POP 00000fa5: JUMP 00000fa6: JUMPDEST 00000fa7: PUSH1 0x03 00000fa9: SLOAD 00000faa: DUP2 00000fab: JUMP 00000fac: JUMPDEST 00000fad: PUSH1 0x00 00000faf: SLOAD 00000fb0: CALLER 00000fb1: PUSH1 0x01 00000fb3: PUSH1 0xa0 00000fb5: PUSH1 0x02 00000fb7: EXP 00000fb8: SUB 00000fb9: SWAP1 00000fba: DUP2 00000fbb: AND 00000fbc: SWAP2 00000fbd: AND 00000fbe: EQ 00000fbf: PUSH2 0x0fc8 00000fc2: JUMPI 00000fc3: PUSH1 0x00 00000fc5: PUSH1 0x00 00000fc7: REVERT 00000fc8: JUMPDEST 00000fc9: PUSH1 0x05 00000fcb: SLOAD 00000fcc: DUP2 00000fcd: LT 00000fce: DUP1 00000fcf: PUSH2 0x0fd9 00000fd2: JUMPI 00000fd3: POP 00000fd4: PUSH1 0x04 00000fd6: SLOAD 00000fd7: DUP2 00000fd8: GT 00000fd9: JUMPDEST 00000fda: ISZERO 00000fdb: PUSH2 0x0fe4 00000fde: JUMPI 00000fdf: PUSH1 0x00 00000fe1: PUSH1 0x00 00000fe3: REVERT 00000fe4: JUMPDEST 00000fe5: PUSH1 0x05 00000fe7: DUP2 00000fe8: SWAP1 00000fe9: SSTORE 00000fea: JUMPDEST 00000feb: POP 00000fec: JUMP 00000fed: JUMPDEST 00000fee: PUSH1 0x01 00000ff0: SLOAD 00000ff1: PUSH1 0x01 00000ff3: PUSH1 0xa0 00000ff5: PUSH1 0x02 00000ff7: EXP 00000ff8: SUB 00000ff9: AND 00000ffa: DUP2 00000ffb: JUMP 00000ffc: JUMPDEST 00000ffd: PUSH1 0x01 00000fff: PUSH1 0xa0 00001001: PUSH1 0x02 00001003: EXP 00001004: SUB 00001005: DUP1 00001006: DUP14 00001007: AND 00001008: PUSH1 0x00 0000100a: SWAP1 0000100b: DUP2 0000100c: MSTORE 0000100d: PUSH1 0x06 0000100f: PUSH1 0x20 00001011: SWAP1 00001012: DUP2 00001013: MSTORE 00001014: PUSH1 0x40 00001016: DUP1 00001017: DUP4 00001018: KECCAK256 00001019: SWAP4 0000101a: DUP6 0000101b: AND 0000101c: DUP4 0000101d: MSTORE 0000101e: SWAP3 0000101f: SWAP1 00001020: MSTORE 00001021: SWAP1 00001022: DUP2 00001023: KECCAK256 00001024: SLOAD 00001025: DUP4 00001026: SWAP1 00001027: LT 00001028: DUP1 00001029: ISZERO 0000102a: SWAP1 0000102b: PUSH2 0x1045 0000102e: JUMPI 0000102f: POP 00001030: DUP3 00001031: PUSH2 0x1042 00001034: DUP15 00001035: DUP15 00001036: DUP15 00001037: DUP15 00001038: DUP15 00001039: DUP15 0000103a: DUP15 0000103b: DUP15 0000103c: DUP15 0000103d: DUP15 0000103e: PUSH2 0x143b 00001041: JUMP 00001042: JUMPDEST 00001043: LT 00001044: ISZERO 00001045: JUMPDEST 00001046: ISZERO 00001047: ISZERO 00001048: PUSH2 0x1053 0000104b: JUMPI 0000104c: POP 0000104d: PUSH1 0x00 0000104f: PUSH2 0x1057 00001052: JUMP 00001053: JUMPDEST 00001054: POP 00001055: PUSH1 0x01 00001057: JUMPDEST 00001058: SWAP13 00001059: SWAP12 0000105a: POP 0000105b: POP 0000105c: POP 0000105d: POP 0000105e: POP 0000105f: POP 00001060: POP 00001061: POP 00001062: POP 00001063: POP 00001064: POP 00001065: POP 00001066: JUMP 00001067: JUMPDEST 00001068: PUSH1 0x00 0000106a: SLOAD 0000106b: CALLER 0000106c: PUSH1 0x01 0000106e: PUSH1 0xa0 00001070: PUSH1 0x02 00001072: EXP 00001073: SUB 00001074: SWAP1 00001075: DUP2 00001076: AND 00001077: SWAP2 00001078: AND 00001079: EQ 0000107a: PUSH2 0x1083 0000107d: JUMPI 0000107e: PUSH1 0x00 00001080: PUSH1 0x00 00001082: REVERT 00001083: JUMPDEST 00001084: PUSH1 0x01 00001086: DUP1 00001087: SLOAD 00001088: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000109d: NOT 0000109e: AND 0000109f: PUSH1 0x01 000010a1: PUSH1 0xa0 000010a3: PUSH1 0x02 000010a5: EXP 000010a6: SUB 000010a7: DUP4 000010a8: AND 000010a9: OR 000010aa: SWAP1 000010ab: SSTORE 000010ac: JUMPDEST 000010ad: POP 000010ae: JUMP 000010af: JUMPDEST 000010b0: PUSH1 0x05 000010b2: SLOAD 000010b3: DUP2 000010b4: JUMP 000010b5: JUMPDEST 000010b6: PUSH1 0x00 000010b8: SLOAD 000010b9: CALLER 000010ba: PUSH1 0x01 000010bc: PUSH1 0xa0 000010be: PUSH1 0x02 000010c0: EXP 000010c1: SUB 000010c2: SWAP1 000010c3: DUP2 000010c4: AND 000010c5: SWAP2 000010c6: AND 000010c7: EQ 000010c8: PUSH2 0x10d1 000010cb: JUMPI 000010cc: PUSH1 0x00 000010ce: PUSH1 0x00 000010d0: REVERT 000010d1: JUMPDEST 000010d2: PUSH1 0x04 000010d4: SLOAD 000010d5: DUP2 000010d6: GT 000010d7: DUP1 000010d8: PUSH2 0x10e2 000010db: JUMPI 000010dc: POP 000010dd: PUSH1 0x05 000010df: SLOAD 000010e0: DUP2 000010e1: LT 000010e2: JUMPDEST 000010e3: ISZERO 000010e4: PUSH2 0x10ed 000010e7: JUMPI 000010e8: PUSH1 0x00 000010ea: PUSH1 0x00 000010ec: REVERT 000010ed: JUMPDEST 000010ee: PUSH1 0x04 000010f0: DUP2 000010f1: SWAP1 000010f2: SSTORE 000010f3: JUMPDEST 000010f4: POP 000010f5: JUMP 000010f6: JUMPDEST 000010f7: PUSH1 0x00 000010f9: SLOAD 000010fa: CALLER 000010fb: PUSH1 0x01 000010fd: PUSH1 0xa0 000010ff: PUSH1 0x02 00001101: EXP 00001102: SUB 00001103: SWAP1 00001104: DUP2 00001105: AND 00001106: SWAP2 00001107: AND 00001108: EQ 00001109: PUSH2 0x1112 0000110c: JUMPI 0000110d: PUSH1 0x00 0000110f: PUSH1 0x00 00001111: REVERT 00001112: JUMPDEST 00001113: PUSH1 0x00 00001115: DUP1 00001116: SLOAD 00001117: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000112c: NOT 0000112d: AND 0000112e: PUSH1 0x01 00001130: PUSH1 0xa0 00001132: PUSH1 0x02 00001134: EXP 00001135: SUB 00001136: DUP4 00001137: AND 00001138: OR 00001139: SWAP1 0000113a: SSTORE 0000113b: JUMPDEST 0000113c: POP 0000113d: JUMP 0000113e: JUMPDEST 0000113f: PUSH1 0x01 00001141: PUSH1 0xa0 00001143: PUSH1 0x02 00001145: EXP 00001146: SUB 00001147: DUP3 00001148: AND 00001149: ISZERO 0000114a: ISZERO 0000114b: PUSH2 0x1154 0000114e: JUMPI 0000114f: PUSH1 0x00 00001151: PUSH1 0x00 00001153: REVERT 00001154: JUMPDEST 00001155: PUSH1 0x01 00001157: PUSH1 0xa0 00001159: PUSH1 0x02 0000115b: EXP 0000115c: SUB 0000115d: DUP1 0000115e: DUP4 0000115f: AND 00001160: PUSH1 0x00 00001162: SWAP1 00001163: DUP2 00001164: MSTORE 00001165: PUSH1 0x06 00001167: PUSH1 0x20 00001169: SWAP1 0000116a: DUP2 0000116b: MSTORE 0000116c: PUSH1 0x40 0000116e: DUP1 0000116f: DUP4 00001170: KECCAK256 00001171: CALLER 00001172: SWAP1 00001173: SWAP5 00001174: AND 00001175: DUP4 00001176: MSTORE 00001177: SWAP3 00001178: SWAP1 00001179: MSTORE 0000117a: KECCAK256 0000117b: SLOAD 0000117c: DUP2 0000117d: SWAP1 0000117e: LT 0000117f: ISZERO 00001180: PUSH2 0x1189 00001183: JUMPI 00001184: PUSH1 0x00 00001186: PUSH1 0x00 00001188: REVERT 00001189: JUMPDEST 0000118a: PUSH1 0x01 0000118c: PUSH1 0xa0 0000118e: PUSH1 0x02 00001190: EXP 00001191: SUB 00001192: DUP1 00001193: DUP4 00001194: AND 00001195: PUSH1 0x00 00001197: SWAP1 00001198: DUP2 00001199: MSTORE 0000119a: PUSH1 0x06 0000119c: PUSH1 0x20 0000119e: SWAP1 0000119f: DUP2 000011a0: MSTORE 000011a1: PUSH1 0x40 000011a3: DUP1 000011a4: DUP4 000011a5: KECCAK256 000011a6: CALLER 000011a7: SWAP1 000011a8: SWAP5 000011a9: AND 000011aa: DUP4 000011ab: MSTORE 000011ac: SWAP3 000011ad: SWAP1 000011ae: MSTORE 000011af: KECCAK256 000011b0: SLOAD 000011b1: PUSH2 0x11ba 000011b4: SWAP1 000011b5: DUP3 000011b6: PUSH2 0x1987 000011b9: JUMP 000011ba: JUMPDEST 000011bb: PUSH1 0x01 000011bd: PUSH1 0xa0 000011bf: PUSH1 0x02 000011c1: EXP 000011c2: SUB 000011c3: DUP1 000011c4: DUP5 000011c5: AND 000011c6: PUSH1 0x00 000011c8: DUP2 000011c9: DUP2 000011ca: MSTORE 000011cb: PUSH1 0x06 000011cd: PUSH1 0x20 000011cf: SWAP1 000011d0: DUP2 000011d1: MSTORE 000011d2: PUSH1 0x40 000011d4: DUP1 000011d5: DUP4 000011d6: KECCAK256 000011d7: CALLER 000011d8: SWAP1 000011d9: SWAP6 000011da: AND 000011db: DUP1 000011dc: DUP5 000011dd: MSTORE 000011de: SWAP5 000011df: DUP3 000011e0: MSTORE 000011e1: DUP1 000011e2: DUP4 000011e3: KECCAK256 000011e4: SWAP6 000011e5: SWAP1 000011e6: SWAP6 000011e7: SSTORE 000011e8: DUP5 000011e9: MLOAD 000011ea: DUP2 000011eb: ADD 000011ec: DUP3 000011ed: SWAP1 000011ee: MSTORE 000011ef: DUP5 000011f0: MLOAD 000011f1: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001212: DUP2 00001213: MSTORE 00001214: PUSH1 0x04 00001216: DUP2 00001217: ADD 00001218: SWAP5 00001219: SWAP1 0000121a: SWAP5 0000121b: MSTORE 0000121c: PUSH1 0x24 0000121e: DUP5 0000121f: ADD 00001220: DUP7 00001221: SWAP1 00001222: MSTORE 00001223: SWAP4 00001224: MLOAD 00001225: SWAP2 00001226: SWAP4 00001227: PUSH4 0xa9059cbb 0000122c: SWAP4 0000122d: PUSH1 0x44 0000122f: DUP1 00001230: DUP3 00001231: ADD 00001232: SWAP5 00001233: SWAP3 00001234: SWAP4 00001235: SWAP2 00001236: DUP4 00001237: SWAP1 00001238: SUB 00001239: ADD 0000123a: SWAP1 0000123b: DUP3 0000123c: SWAP1 0000123d: DUP8 0000123e: DUP1 0000123f: EXTCODESIZE 00001240: ISZERO 00001241: ISZERO 00001242: PUSH2 0x1247 00001245: JUMPI 00001246: INVALID 00001247: JUMPDEST 00001248: PUSH2 0x02c6 0000124b: GAS 0000124c: SUB 0000124d: CALL 0000124e: ISZERO 0000124f: ISZERO 00001250: PUSH2 0x1255 00001253: JUMPI 00001254: INVALID 00001255: JUMPDEST 00001256: POP 00001257: POP 00001258: PUSH1 0x40 0000125a: MLOAD 0000125b: MLOAD 0000125c: ISZERO 0000125d: ISZERO 0000125e: SWAP1 0000125f: POP 00001260: PUSH2 0x1269 00001263: JUMPI 00001264: PUSH1 0x00 00001266: PUSH1 0x00 00001268: REVERT 00001269: JUMPDEST 0000126a: PUSH1 0x01 0000126c: PUSH1 0xa0 0000126e: PUSH1 0x02 00001270: EXP 00001271: SUB 00001272: DUP1 00001273: DUP4 00001274: AND 00001275: PUSH1 0x00 00001277: DUP2 00001278: DUP2 00001279: MSTORE 0000127a: PUSH1 0x06 0000127c: PUSH1 0x20 0000127e: SWAP1 0000127f: DUP2 00001280: MSTORE 00001281: PUSH1 0x40 00001283: DUP1 00001284: DUP4 00001285: KECCAK256 00001286: CALLER 00001287: SWAP6 00001288: SWAP1 00001289: SWAP6 0000128a: AND 0000128b: DUP1 0000128c: DUP5 0000128d: MSTORE 0000128e: SWAP5 0000128f: DUP3 00001290: MSTORE 00001291: SWAP2 00001292: DUP3 00001293: SWAP1 00001294: KECCAK256 00001295: SLOAD 00001296: DUP3 00001297: MLOAD 00001298: SWAP4 00001299: DUP5 0000129a: MSTORE 0000129b: SWAP1 0000129c: DUP4 0000129d: ADD 0000129e: SWAP4 0000129f: SWAP1 000012a0: SWAP4 000012a1: MSTORE 000012a2: DUP2 000012a3: DUP2 000012a4: ADD 000012a5: DUP5 000012a6: SWAP1 000012a7: MSTORE 000012a8: PUSH1 0x60 000012aa: DUP3 000012ab: ADD 000012ac: SWAP3 000012ad: SWAP1 000012ae: SWAP3 000012af: MSTORE 000012b0: SWAP1 000012b1: MLOAD 000012b2: PUSH32 0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567 000012d3: SWAP2 000012d4: DUP2 000012d5: SWAP1 000012d6: SUB 000012d7: PUSH1 0x80 000012d9: ADD 000012da: SWAP1 000012db: LOG1 000012dc: JUMPDEST 000012dd: POP 000012de: POP 000012df: JUMP 000012e0: JUMPDEST 000012e1: PUSH1 0x07 000012e3: PUSH1 0x20 000012e5: SWAP1 000012e6: DUP2 000012e7: MSTORE 000012e8: PUSH1 0x00 000012ea: SWAP3 000012eb: DUP4 000012ec: MSTORE 000012ed: PUSH1 0x40 000012ef: DUP1 000012f0: DUP5 000012f1: KECCAK256 000012f2: SWAP1 000012f3: SWAP2 000012f4: MSTORE 000012f5: SWAP1 000012f6: DUP3 000012f7: MSTORE 000012f8: SWAP1 000012f9: KECCAK256 000012fa: SLOAD 000012fb: PUSH1 0xff 000012fd: AND 000012fe: DUP2 000012ff: JUMP 00001300: JUMPDEST 00001301: PUSH1 0x04 00001303: SLOAD 00001304: DUP2 00001305: JUMP 00001306: JUMPDEST 00001307: CALLER 00001308: PUSH1 0x01 0000130a: PUSH1 0xa0 0000130c: PUSH1 0x02 0000130e: EXP 0000130f: SUB 00001310: AND 00001311: PUSH1 0x00 00001313: SWAP1 00001314: DUP2 00001315: MSTORE 00001316: PUSH1 0x00 00001318: DUP1 00001319: MLOAD 0000131a: PUSH1 0x20 0000131c: PUSH2 0x19e1 0000131f: DUP4 00001320: CODECOPY 00001321: DUP2 00001322: MLOAD 00001323: SWAP2 00001324: MSTORE 00001325: PUSH1 0x20 00001327: MSTORE 00001328: PUSH1 0x40 0000132a: SWAP1 0000132b: KECCAK256 0000132c: SLOAD 0000132d: PUSH2 0x1336 00001330: SWAP1 00001331: CALLVALUE 00001332: PUSH2 0x1682 00001335: JUMP 00001336: JUMPDEST 00001337: CALLER 00001338: PUSH1 0x01 0000133a: PUSH1 0xa0 0000133c: PUSH1 0x02 0000133e: EXP 0000133f: SUB 00001340: AND 00001341: PUSH1 0x00 00001343: DUP2 00001344: DUP2 00001345: MSTORE 00001346: PUSH1 0x00 00001348: DUP1 00001349: MLOAD 0000134a: PUSH1 0x20 0000134c: PUSH2 0x19e1 0000134f: DUP4 00001350: CODECOPY 00001351: DUP2 00001352: MLOAD 00001353: SWAP2 00001354: MSTORE 00001355: PUSH1 0x20 00001357: SWAP1 00001358: DUP2 00001359: MSTORE 0000135a: PUSH1 0x40 0000135c: DUP1 0000135d: DUP4 0000135e: KECCAK256 0000135f: DUP6 00001360: SWAP1 00001361: SSTORE 00001362: DUP1 00001363: MLOAD 00001364: SWAP3 00001365: DUP4 00001366: MSTORE 00001367: SWAP1 00001368: DUP3 00001369: ADD 0000136a: SWAP3 0000136b: SWAP1 0000136c: SWAP3 0000136d: MSTORE 0000136e: CALLVALUE 0000136f: DUP2 00001370: DUP4 00001371: ADD 00001372: MSTORE 00001373: PUSH1 0x60 00001375: DUP2 00001376: ADD 00001377: SWAP3 00001378: SWAP1 00001379: SWAP3 0000137a: MSTORE 0000137b: MLOAD 0000137c: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 0000139d: SWAP2 0000139e: DUP2 0000139f: SWAP1 000013a0: SUB 000013a1: PUSH1 0x80 000013a3: ADD 000013a4: SWAP1 000013a5: LOG1 000013a6: JUMPDEST 000013a7: JUMP 000013a8: JUMPDEST 000013a9: PUSH1 0x00 000013ab: SLOAD 000013ac: CALLER 000013ad: PUSH1 0x01 000013af: PUSH1 0xa0 000013b1: PUSH1 0x02 000013b3: EXP 000013b4: SUB 000013b5: SWAP1 000013b6: DUP2 000013b7: AND 000013b8: SWAP2 000013b9: AND 000013ba: EQ 000013bb: PUSH2 0x13c4 000013be: JUMPI 000013bf: PUSH1 0x00 000013c1: PUSH1 0x00 000013c3: REVERT 000013c4: JUMPDEST 000013c5: PUSH1 0x02 000013c7: DUP1 000013c8: SLOAD 000013c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013de: NOT 000013df: AND 000013e0: PUSH1 0x01 000013e2: PUSH1 0xa0 000013e4: PUSH1 0x02 000013e6: EXP 000013e7: SUB 000013e8: DUP4 000013e9: AND 000013ea: OR 000013eb: SWAP1 000013ec: SSTORE 000013ed: JUMPDEST 000013ee: POP 000013ef: JUMP 000013f0: JUMPDEST 000013f1: PUSH1 0x02 000013f3: SLOAD 000013f4: PUSH1 0x01 000013f6: PUSH1 0xa0 000013f8: PUSH1 0x02 000013fa: EXP 000013fb: SUB 000013fc: AND 000013fd: DUP2 000013fe: JUMP 000013ff: JUMPDEST 00001400: PUSH1 0x01 00001402: PUSH1 0xa0 00001404: PUSH1 0x02 00001406: EXP 00001407: SUB 00001408: DUP1 00001409: DUP4 0000140a: AND 0000140b: PUSH1 0x00 0000140d: SWAP1 0000140e: DUP2 0000140f: MSTORE 00001410: PUSH1 0x06 00001412: PUSH1 0x20 00001414: SWAP1 00001415: DUP2 00001416: MSTORE 00001417: PUSH1 0x40 00001419: DUP1 0000141a: DUP4 0000141b: KECCAK256 0000141c: SWAP4 0000141d: DUP6 0000141e: AND 0000141f: DUP4 00001420: MSTORE 00001421: SWAP3 00001422: SWAP1 00001423: MSTORE 00001424: KECCAK256 00001425: SLOAD 00001426: JUMPDEST 00001427: SWAP3 00001428: SWAP2 00001429: POP 0000142a: POP 0000142b: JUMP 0000142c: JUMPDEST 0000142d: PUSH1 0x00 0000142f: SLOAD 00001430: PUSH1 0x01 00001432: PUSH1 0xa0 00001434: PUSH1 0x02 00001436: EXP 00001437: SUB 00001438: AND 00001439: DUP2 0000143a: JUMP 0000143b: JUMPDEST 0000143c: PUSH1 0x00 0000143e: PUSH1 0x00 00001440: PUSH1 0x00 00001442: PUSH1 0x00 00001444: PUSH1 0x02 00001446: ADDRESS 00001447: DUP16 00001448: DUP16 00001449: DUP16 0000144a: DUP16 0000144b: DUP16 0000144c: DUP16 0000144d: PUSH1 0x00 0000144f: PUSH1 0x40 00001451: MLOAD 00001452: PUSH1 0x20 00001454: ADD 00001455: MSTORE 00001456: PUSH1 0x40 00001458: MLOAD 00001459: DUP1 0000145a: DUP9 0000145b: PUSH1 0x01 0000145d: PUSH1 0xa0 0000145f: PUSH1 0x02 00001461: EXP 00001462: SUB 00001463: AND 00001464: PUSH1 0x01 00001466: PUSH1 0xa0 00001468: PUSH1 0x02 0000146a: EXP 0000146b: SUB 0000146c: AND 0000146d: PUSH1 0x60 0000146f: PUSH1 0x02 00001471: EXP 00001472: MUL 00001473: DUP2 00001474: MSTORE 00001475: PUSH1 0x14 00001477: ADD 00001478: DUP8 00001479: PUSH1 0x01 0000147b: PUSH1 0xa0 0000147d: PUSH1 0x02 0000147f: EXP 00001480: SUB 00001481: AND 00001482: PUSH1 0x01 00001484: PUSH1 0xa0 00001486: PUSH1 0x02 00001488: EXP 00001489: SUB 0000148a: AND 0000148b: PUSH1 0x60 0000148d: PUSH1 0x02 0000148f: EXP 00001490: MUL 00001491: DUP2 00001492: MSTORE 00001493: PUSH1 0x14 00001495: ADD 00001496: DUP7 00001497: DUP2 00001498: MSTORE 00001499: PUSH1 0x20 0000149b: ADD 0000149c: DUP6 0000149d: PUSH1 0x01 0000149f: PUSH1 0xa0 000014a1: PUSH1 0x02 000014a3: EXP 000014a4: SUB 000014a5: AND 000014a6: PUSH1 0x01 000014a8: PUSH1 0xa0 000014aa: PUSH1 0x02 000014ac: EXP 000014ad: SUB 000014ae: AND 000014af: PUSH1 0x60 000014b1: PUSH1 0x02 000014b3: EXP 000014b4: MUL 000014b5: DUP2 000014b6: MSTORE 000014b7: PUSH1 0x14 000014b9: ADD 000014ba: DUP5 000014bb: DUP2 000014bc: MSTORE 000014bd: PUSH1 0x20 000014bf: ADD 000014c0: DUP4 000014c1: DUP2 000014c2: MSTORE 000014c3: PUSH1 0x20 000014c5: ADD 000014c6: DUP3 000014c7: DUP2 000014c8: MSTORE 000014c9: PUSH1 0x20 000014cb: ADD 000014cc: SWAP8 000014cd: POP 000014ce: POP 000014cf: POP 000014d0: POP 000014d1: POP 000014d2: POP 000014d3: POP 000014d4: POP 000014d5: PUSH1 0x20 000014d7: PUSH1 0x40 000014d9: MLOAD 000014da: DUP1 000014db: DUP4 000014dc: SUB 000014dd: DUP2 000014de: PUSH1 0x00 000014e0: DUP7 000014e1: PUSH2 0x646e 000014e4: GAS 000014e5: SUB 000014e6: CALL 000014e7: ISZERO 000014e8: ISZERO 000014e9: PUSH2 0x14ee 000014ec: JUMPI 000014ed: INVALID 000014ee: JUMPDEST 000014ef: POP 000014f0: POP 000014f1: PUSH1 0x40 000014f3: DUP1 000014f4: MLOAD 000014f5: MLOAD 000014f6: PUSH1 0x01 000014f8: PUSH1 0xa0 000014fa: PUSH1 0x02 000014fc: EXP 000014fd: SUB 000014fe: DUP11 000014ff: AND 00001500: PUSH1 0x00 00001502: SWAP1 00001503: DUP2 00001504: MSTORE 00001505: PUSH1 0x07 00001507: PUSH1 0x20 00001509: SWAP1 0000150a: DUP2 0000150b: MSTORE 0000150c: DUP4 0000150d: DUP3 0000150e: KECCAK256 0000150f: DUP4 00001510: DUP4 00001511: MSTORE 00001512: SWAP1 00001513: MSTORE 00001514: SWAP2 00001515: SWAP1 00001516: SWAP2 00001517: KECCAK256 00001518: SLOAD 00001519: SWAP1 0000151a: SWAP4 0000151b: POP 0000151c: PUSH1 0xff 0000151e: AND 0000151f: DUP1 00001520: PUSH2 0x15d2 00001523: JUMPI 00001524: POP 00001525: PUSH1 0x40 00001527: DUP1 00001528: MLOAD 00001529: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 0000154a: DUP2 0000154b: MSTORE 0000154c: PUSH1 0x1c 0000154e: DUP2 0000154f: ADD 00001550: DUP6 00001551: SWAP1 00001552: MSTORE 00001553: DUP2 00001554: MLOAD 00001555: SWAP1 00001556: DUP2 00001557: SWAP1 00001558: SUB 00001559: PUSH1 0x3c 0000155b: ADD 0000155c: DUP2 0000155d: KECCAK256 0000155e: PUSH1 0x00 00001560: DUP3 00001561: DUP2 00001562: MSTORE 00001563: PUSH1 0x20 00001565: DUP4 00001566: DUP2 00001567: ADD 00001568: DUP6 00001569: MSTORE 0000156a: SWAP3 0000156b: DUP5 0000156c: ADD 0000156d: DUP2 0000156e: SWAP1 0000156f: MSTORE 00001570: DUP4 00001571: MLOAD 00001572: SWAP2 00001573: DUP3 00001574: MSTORE 00001575: PUSH1 0xff 00001577: DUP12 00001578: AND 00001579: DUP3 0000157a: DUP5 0000157b: ADD 0000157c: MSTORE 0000157d: DUP2 0000157e: DUP5 0000157f: ADD 00001580: DUP11 00001581: SWAP1 00001582: MSTORE 00001583: PUSH1 0x60 00001585: DUP3 00001586: ADD 00001587: DUP10 00001588: SWAP1 00001589: MSTORE 0000158a: SWAP3 0000158b: MLOAD 0000158c: PUSH1 0x01 0000158e: PUSH1 0xa0 00001590: PUSH1 0x02 00001592: EXP 00001593: SUB 00001594: DUP13 00001595: AND 00001596: SWAP4 00001597: PUSH1 0x01 00001599: SWAP4 0000159a: PUSH1 0x80 0000159c: DUP1 0000159d: DUP6 0000159e: ADD 0000159f: SWAP5 000015a0: SWAP2 000015a1: SWAP4 000015a2: PUSH1 0x1f 000015a4: NOT 000015a5: DUP2 000015a6: ADD 000015a7: SWAP4 000015a8: SWAP3 000015a9: DUP2 000015aa: SWAP1 000015ab: SUB 000015ac: SWAP1 000015ad: SWAP2 000015ae: ADD 000015af: SWAP2 000015b0: DUP7 000015b1: PUSH2 0x646e 000015b4: GAS 000015b5: SUB 000015b6: CALL 000015b7: ISZERO 000015b8: ISZERO 000015b9: PUSH2 0x15be 000015bc: JUMPI 000015bd: INVALID 000015be: JUMPDEST 000015bf: POP 000015c0: POP 000015c1: PUSH1 0x20 000015c3: PUSH1 0x40 000015c5: MLOAD 000015c6: SUB 000015c7: MLOAD 000015c8: PUSH1 0x01 000015ca: PUSH1 0xa0 000015cc: PUSH1 0x02 000015ce: EXP 000015cf: SUB 000015d0: AND 000015d1: EQ 000015d2: JUMPDEST 000015d3: DUP1 000015d4: ISZERO 000015d5: PUSH2 0x15de 000015d8: JUMPI 000015d9: POP 000015da: DUP10 000015db: NUMBER 000015dc: GT 000015dd: ISZERO 000015de: JUMPDEST 000015df: ISZERO 000015e0: ISZERO 000015e1: PUSH2 0x15ed 000015e4: JUMPI 000015e5: PUSH1 0x00 000015e7: SWAP4 000015e8: POP 000015e9: PUSH2 0x1671 000015ec: JUMP 000015ed: JUMPDEST 000015ee: PUSH1 0x01 000015f0: PUSH1 0xa0 000015f2: PUSH1 0x02 000015f4: EXP 000015f5: SUB 000015f6: DUP9 000015f7: AND 000015f8: PUSH1 0x00 000015fa: SWAP1 000015fb: DUP2 000015fc: MSTORE 000015fd: PUSH1 0x08 000015ff: PUSH1 0x20 00001601: SWAP1 00001602: DUP2 00001603: MSTORE 00001604: PUSH1 0x40 00001606: DUP1 00001607: DUP4 00001608: KECCAK256 00001609: DUP7 0000160a: DUP5 0000160b: MSTORE 0000160c: SWAP1 0000160d: SWAP2 0000160e: MSTORE 0000160f: SWAP1 00001610: KECCAK256 00001611: SLOAD 00001612: PUSH2 0x161c 00001615: SWAP1 00001616: DUP15 00001617: SWAP1 00001618: PUSH2 0x1987 0000161b: JUMP 0000161c: JUMPDEST 0000161d: PUSH1 0x01 0000161f: PUSH1 0xa0 00001621: PUSH1 0x02 00001623: EXP 00001624: SUB 00001625: DUP1 00001626: DUP15 00001627: AND 00001628: PUSH1 0x00 0000162a: SWAP1 0000162b: DUP2 0000162c: MSTORE 0000162d: PUSH1 0x06 0000162f: PUSH1 0x20 00001631: SWAP1 00001632: DUP2 00001633: MSTORE 00001634: PUSH1 0x40 00001636: DUP1 00001637: DUP4 00001638: KECCAK256 00001639: SWAP4 0000163a: DUP14 0000163b: AND 0000163c: DUP4 0000163d: MSTORE 0000163e: SWAP3 0000163f: SWAP1 00001640: MSTORE 00001641: KECCAK256 00001642: SLOAD 00001643: SWAP1 00001644: SWAP3 00001645: POP 00001646: DUP12 00001647: SWAP1 00001648: PUSH2 0x1651 0000164b: SWAP1 0000164c: DUP16 0000164d: PUSH2 0x19a0 00001650: JUMP 00001651: JUMPDEST 00001652: DUP2 00001653: ISZERO 00001654: ISZERO 00001655: PUSH2 0x165a 00001658: JUMPI 00001659: INVALID 0000165a: JUMPDEST 0000165b: DIV 0000165c: SWAP1 0000165d: POP 0000165e: DUP1 0000165f: DUP3 00001660: LT 00001661: ISZERO 00001662: PUSH2 0x166d 00001665: JUMPI 00001666: DUP2 00001667: SWAP4 00001668: POP 00001669: PUSH2 0x1671 0000166c: JUMP 0000166d: JUMPDEST 0000166e: DUP1 0000166f: SWAP4 00001670: POP 00001671: JUMPDEST 00001672: POP 00001673: POP 00001674: POP 00001675: SWAP11 00001676: SWAP10 00001677: POP 00001678: POP 00001679: POP 0000167a: POP 0000167b: POP 0000167c: POP 0000167d: POP 0000167e: POP 0000167f: POP 00001680: POP 00001681: JUMP 00001682: JUMPDEST 00001683: PUSH1 0x00 00001685: DUP3 00001686: DUP3 00001687: ADD 00001688: PUSH2 0x169f 0000168b: DUP5 0000168c: DUP3 0000168d: LT 0000168e: DUP1 0000168f: ISZERO 00001690: SWAP1 00001691: PUSH2 0x169a 00001694: JUMPI 00001695: POP 00001696: DUP4 00001697: DUP3 00001698: LT 00001699: ISZERO 0000169a: JUMPDEST 0000169b: PUSH2 0x19cf 0000169e: JUMP 0000169f: JUMPDEST 000016a0: DUP1 000016a1: SWAP2 000016a2: POP 000016a3: JUMPDEST 000016a4: POP 000016a5: SWAP3 000016a6: SWAP2 000016a7: POP 000016a8: POP 000016a9: JUMP 000016aa: JUMPDEST 000016ab: PUSH1 0x00 000016ad: PUSH1 0x00 000016af: PUSH1 0x00 000016b1: PUSH1 0x00 000016b3: PUSH8 0x0de0b6b3a7640000 000016bc: PUSH2 0x16c7 000016bf: DUP7 000016c0: PUSH1 0x03 000016c2: SLOAD 000016c3: PUSH2 0x19a0 000016c6: JUMP 000016c7: JUMPDEST 000016c8: DUP2 000016c9: ISZERO 000016ca: ISZERO 000016cb: PUSH2 0x16d0 000016ce: JUMPI 000016cf: INVALID 000016d0: JUMPDEST 000016d1: DIV 000016d2: SWAP4 000016d3: POP 000016d4: PUSH8 0x0de0b6b3a7640000 000016dd: PUSH2 0x16e8 000016e0: DUP7 000016e1: PUSH1 0x04 000016e3: SLOAD 000016e4: PUSH2 0x19a0 000016e7: JUMP 000016e8: JUMPDEST 000016e9: DUP2 000016ea: ISZERO 000016eb: ISZERO 000016ec: PUSH2 0x16f1 000016ef: JUMPI 000016f0: INVALID 000016f1: JUMPDEST 000016f2: PUSH1 0x02 000016f4: SLOAD 000016f5: SWAP2 000016f6: SWAP1 000016f7: DIV 000016f8: SWAP4 000016f9: POP 000016fa: PUSH1 0x00 000016fc: SWAP3 000016fd: POP 000016fe: PUSH1 0x01 00001700: PUSH1 0xa0 00001702: PUSH1 0x02 00001704: EXP 00001705: SUB 00001706: AND 00001707: ISZERO 00001708: PUSH2 0x17c8 0000170b: JUMPI 0000170c: PUSH1 0x02 0000170e: SLOAD 0000170f: PUSH1 0x40 00001711: DUP1 00001712: MLOAD 00001713: PUSH1 0x00 00001715: PUSH1 0x20 00001717: SWAP2 00001718: DUP3 00001719: ADD 0000171a: DUP2 0000171b: SWAP1 0000171c: MSTORE 0000171d: DUP3 0000171e: MLOAD 0000171f: PUSH32 0x1cbd051900000000000000000000000000000000000000000000000000000000 00001740: DUP2 00001741: MSTORE 00001742: PUSH1 0x01 00001744: PUSH1 0xa0 00001746: PUSH1 0x02 00001748: EXP 00001749: SUB 0000174a: DUP12 0000174b: DUP2 0000174c: AND 0000174d: PUSH1 0x04 0000174f: DUP4 00001750: ADD 00001751: MSTORE 00001752: SWAP4 00001753: MLOAD 00001754: SWAP4 00001755: SWAP1 00001756: SWAP5 00001757: AND 00001758: SWAP4 00001759: PUSH4 0x1cbd0519 0000175e: SWAP4 0000175f: PUSH1 0x24 00001761: DUP1 00001762: DUP4 00001763: ADD 00001764: SWAP5 00001765: SWAP4 00001766: SWAP2 00001767: SWAP3 00001768: DUP4 00001769: SWAP1 0000176a: SUB 0000176b: ADD 0000176c: SWAP1 0000176d: DUP3 0000176e: SWAP1 0000176f: DUP8 00001770: DUP1 00001771: EXTCODESIZE 00001772: ISZERO 00001773: ISZERO 00001774: PUSH2 0x1779 00001777: JUMPI 00001778: INVALID 00001779: JUMPDEST 0000177a: PUSH2 0x02c6 0000177d: GAS 0000177e: SUB 0000177f: CALL 00001780: ISZERO 00001781: ISZERO 00001782: PUSH2 0x1787 00001785: JUMPI 00001786: INVALID 00001787: JUMPDEST 00001788: POP 00001789: POP 0000178a: PUSH1 0x40 0000178c: MLOAD 0000178d: MLOAD 0000178e: SWAP2 0000178f: POP 00001790: POP 00001791: PUSH1 0x01 00001793: DUP2 00001794: EQ 00001795: ISZERO 00001796: PUSH2 0x17bb 00001799: JUMPI 0000179a: PUSH8 0x0de0b6b3a7640000 000017a3: PUSH2 0x17ae 000017a6: DUP7 000017a7: PUSH1 0x05 000017a9: SLOAD 000017aa: PUSH2 0x19a0 000017ad: JUMP 000017ae: JUMPDEST 000017af: DUP2 000017b0: ISZERO 000017b1: ISZERO 000017b2: PUSH2 0x17b7 000017b5: JUMPI 000017b6: INVALID 000017b7: JUMPDEST 000017b8: DIV 000017b9: SWAP2 000017ba: POP 000017bb: JUMPDEST 000017bc: DUP1 000017bd: PUSH1 0x02 000017bf: EQ 000017c0: ISZERO 000017c1: PUSH2 0x17c8 000017c4: JUMPI 000017c5: DUP3 000017c6: SWAP2 000017c7: POP 000017c8: JUMPDEST 000017c9: JUMPDEST 000017ca: PUSH1 0x01 000017cc: PUSH1 0xa0 000017ce: PUSH1 0x02 000017d0: EXP 000017d1: SUB 000017d2: DUP1 000017d3: DUP12 000017d4: AND 000017d5: PUSH1 0x00 000017d7: SWAP1 000017d8: DUP2 000017d9: MSTORE 000017da: PUSH1 0x06 000017dc: PUSH1 0x20 000017de: SWAP1 000017df: DUP2 000017e0: MSTORE 000017e1: PUSH1 0x40 000017e3: DUP1 000017e4: DUP4 000017e5: KECCAK256 000017e6: CALLER 000017e7: SWAP1 000017e8: SWAP5 000017e9: AND 000017ea: DUP4 000017eb: MSTORE 000017ec: SWAP3 000017ed: SWAP1 000017ee: MSTORE 000017ef: KECCAK256 000017f0: SLOAD 000017f1: PUSH2 0x1803 000017f4: SWAP1 000017f5: PUSH2 0x17fe 000017f8: DUP8 000017f9: DUP7 000017fa: PUSH2 0x1682 000017fd: JUMP 000017fe: JUMPDEST 000017ff: PUSH2 0x1987 00001802: JUMP 00001803: JUMPDEST 00001804: PUSH1 0x01 00001806: PUSH1 0xa0 00001808: PUSH1 0x02 0000180a: EXP 0000180b: SUB 0000180c: DUP12 0000180d: DUP2 0000180e: AND 0000180f: PUSH1 0x00 00001811: SWAP1 00001812: DUP2 00001813: MSTORE 00001814: PUSH1 0x06 00001816: PUSH1 0x20 00001818: SWAP1 00001819: DUP2 0000181a: MSTORE 0000181b: PUSH1 0x40 0000181d: DUP1 0000181e: DUP4 0000181f: KECCAK256 00001820: CALLER 00001821: DUP6 00001822: AND 00001823: DUP5 00001824: MSTORE 00001825: SWAP1 00001826: SWAP2 00001827: MSTORE 00001828: DUP1 00001829: DUP3 0000182a: KECCAK256 0000182b: SWAP4 0000182c: SWAP1 0000182d: SWAP4 0000182e: SSTORE 0000182f: SWAP1 00001830: DUP9 00001831: AND 00001832: DUP2 00001833: MSTORE 00001834: KECCAK256 00001835: SLOAD 00001836: PUSH2 0x1851 00001839: SWAP1 0000183a: PUSH2 0x184c 0000183d: PUSH2 0x1846 00001840: DUP9 00001841: DUP7 00001842: PUSH2 0x1682 00001845: JUMP 00001846: JUMPDEST 00001847: DUP8 00001848: PUSH2 0x1987 0000184b: JUMP 0000184c: JUMPDEST 0000184d: PUSH2 0x1682 00001850: JUMP 00001851: JUMPDEST 00001852: PUSH1 0x01 00001854: PUSH1 0xa0 00001856: PUSH1 0x02 00001858: EXP 00001859: SUB 0000185a: DUP12 0000185b: DUP2 0000185c: AND 0000185d: PUSH1 0x00 0000185f: SWAP1 00001860: DUP2 00001861: MSTORE 00001862: PUSH1 0x06 00001864: PUSH1 0x20 00001866: SWAP1 00001867: DUP2 00001868: MSTORE 00001869: PUSH1 0x40 0000186b: DUP1 0000186c: DUP4 0000186d: KECCAK256 0000186e: DUP12 0000186f: DUP6 00001870: AND 00001871: DUP5 00001872: MSTORE 00001873: SWAP1 00001874: SWAP2 00001875: MSTORE 00001876: DUP1 00001877: DUP3 00001878: KECCAK256 00001879: SWAP4 0000187a: SWAP1 0000187b: SWAP4 0000187c: SSTORE 0000187d: PUSH1 0x01 0000187f: SLOAD 00001880: SWAP1 00001881: SWAP2 00001882: AND 00001883: DUP2 00001884: MSTORE 00001885: KECCAK256 00001886: SLOAD 00001887: PUSH2 0x18a2 0000188a: SWAP1 0000188b: PUSH2 0x184c 0000188e: PUSH2 0x1897 00001891: DUP8 00001892: DUP8 00001893: PUSH2 0x1682 00001896: JUMP 00001897: JUMPDEST 00001898: DUP6 00001899: PUSH2 0x1987 0000189c: JUMP 0000189d: JUMPDEST 0000189e: PUSH2 0x1682 000018a1: JUMP 000018a2: JUMPDEST 000018a3: PUSH1 0x01 000018a5: PUSH1 0xa0 000018a7: PUSH1 0x02 000018a9: EXP 000018aa: SUB 000018ab: DUP1 000018ac: DUP13 000018ad: AND 000018ae: PUSH1 0x00 000018b0: SWAP1 000018b1: DUP2 000018b2: MSTORE 000018b3: PUSH1 0x06 000018b5: PUSH1 0x20 000018b7: DUP2 000018b8: DUP2 000018b9: MSTORE 000018ba: PUSH1 0x40 000018bc: DUP1 000018bd: DUP5 000018be: KECCAK256 000018bf: PUSH1 0x01 000018c1: SLOAD 000018c2: DUP7 000018c3: AND 000018c4: DUP6 000018c5: MSTORE 000018c6: DUP3 000018c7: MSTORE 000018c8: DUP1 000018c9: DUP5 000018ca: KECCAK256 000018cb: SWAP6 000018cc: SWAP1 000018cd: SWAP6 000018ce: SSTORE 000018cf: DUP13 000018d0: DUP5 000018d1: AND 000018d2: DUP4 000018d3: MSTORE 000018d4: SWAP1 000018d5: DUP2 000018d6: MSTORE 000018d7: DUP4 000018d8: DUP3 000018d9: KECCAK256 000018da: SWAP3 000018db: DUP11 000018dc: AND 000018dd: DUP3 000018de: MSTORE 000018df: SWAP2 000018e0: SWAP1 000018e1: SWAP2 000018e2: MSTORE 000018e3: KECCAK256 000018e4: SLOAD 000018e5: PUSH2 0x1902 000018e8: SWAP1 000018e9: DUP11 000018ea: PUSH2 0x18f3 000018ed: DUP11 000018ee: DUP10 000018ef: PUSH2 0x19a0 000018f2: JUMP 000018f3: JUMPDEST 000018f4: DUP2 000018f5: ISZERO 000018f6: ISZERO 000018f7: PUSH2 0x18fc 000018fa: JUMPI 000018fb: INVALID 000018fc: JUMPDEST 000018fd: DIV 000018fe: PUSH2 0x1987 00001901: JUMP 00001902: JUMPDEST 00001903: PUSH1 0x01 00001905: PUSH1 0xa0 00001907: PUSH1 0x02 00001909: EXP 0000190a: SUB 0000190b: DUP10 0000190c: DUP2 0000190d: AND 0000190e: PUSH1 0x00 00001910: SWAP1 00001911: DUP2 00001912: MSTORE 00001913: PUSH1 0x06 00001915: PUSH1 0x20 00001917: SWAP1 00001918: DUP2 00001919: MSTORE 0000191a: PUSH1 0x40 0000191c: DUP1 0000191d: DUP4 0000191e: KECCAK256 0000191f: DUP12 00001920: DUP6 00001921: AND 00001922: DUP5 00001923: MSTORE 00001924: SWAP1 00001925: SWAP2 00001926: MSTORE 00001927: DUP1 00001928: DUP3 00001929: KECCAK256 0000192a: SWAP4 0000192b: SWAP1 0000192c: SWAP4 0000192d: SSTORE 0000192e: CALLER 0000192f: SWAP1 00001930: SWAP2 00001931: AND 00001932: DUP2 00001933: MSTORE 00001934: KECCAK256 00001935: SLOAD 00001936: PUSH2 0x1953 00001939: SWAP1 0000193a: DUP11 0000193b: PUSH2 0x1944 0000193e: DUP11 0000193f: DUP10 00001940: PUSH2 0x19a0 00001943: JUMP 00001944: JUMPDEST 00001945: DUP2 00001946: ISZERO 00001947: ISZERO 00001948: PUSH2 0x194d 0000194b: JUMPI 0000194c: INVALID 0000194d: JUMPDEST 0000194e: DIV 0000194f: PUSH2 0x1682 00001952: JUMP 00001953: JUMPDEST 00001954: PUSH1 0x01 00001956: PUSH1 0xa0 00001958: PUSH1 0x02 0000195a: EXP 0000195b: SUB 0000195c: DUP1 0000195d: DUP11 0000195e: AND 0000195f: PUSH1 0x00 00001961: SWAP1 00001962: DUP2 00001963: MSTORE 00001964: PUSH1 0x06 00001966: PUSH1 0x20 00001968: SWAP1 00001969: DUP2 0000196a: MSTORE 0000196b: PUSH1 0x40 0000196d: DUP1 0000196e: DUP4 0000196f: KECCAK256 00001970: CALLER 00001971: SWAP1 00001972: SWAP5 00001973: AND 00001974: DUP4 00001975: MSTORE 00001976: SWAP3 00001977: SWAP1 00001978: MSTORE 00001979: KECCAK256 0000197a: SSTORE 0000197b: JUMPDEST 0000197c: POP 0000197d: POP 0000197e: POP 0000197f: POP 00001980: POP 00001981: POP 00001982: POP 00001983: POP 00001984: POP 00001985: POP 00001986: JUMP 00001987: JUMPDEST 00001988: PUSH1 0x00 0000198a: PUSH2 0x1995 0000198d: DUP4 0000198e: DUP4 0000198f: GT 00001990: ISZERO 00001991: PUSH2 0x19cf 00001994: JUMP 00001995: JUMPDEST 00001996: POP 00001997: DUP1 00001998: DUP3 00001999: SUB 0000199a: JUMPDEST 0000199b: SWAP3 0000199c: SWAP2 0000199d: POP 0000199e: POP 0000199f: JUMP 000019a0: JUMPDEST 000019a1: PUSH1 0x00 000019a3: DUP3 000019a4: DUP3 000019a5: MUL 000019a6: PUSH2 0x169f 000019a9: DUP5 000019aa: ISZERO 000019ab: DUP1 000019ac: PUSH2 0x169a 000019af: JUMPI 000019b0: POP 000019b1: DUP4 000019b2: DUP6 000019b3: DUP4 000019b4: DUP2 000019b5: ISZERO 000019b6: ISZERO 000019b7: PUSH2 0x19bc 000019ba: JUMPI 000019bb: INVALID 000019bc: JUMPDEST 000019bd: DIV 000019be: EQ 000019bf: JUMPDEST 000019c0: PUSH2 0x19cf 000019c3: JUMP 000019c4: JUMPDEST 000019c5: DUP1 000019c6: SWAP2 000019c7: POP 000019c8: JUMPDEST 000019c9: POP 000019ca: SWAP3 000019cb: SWAP2 000019cc: POP 000019cd: POP 000019ce: JUMP 000019cf: JUMPDEST 000019d0: DUP1 000019d1: ISZERO 000019d2: ISZERO 000019d3: PUSH2 0x0d0d 000019d6: JUMPI 000019d7: PUSH1 0x00 000019d9: PUSH1 0x00 000019db: REVERT 000019dc: JUMPDEST 000019dd: JUMPDEST 000019de: POP 000019df: JUMP 000019e0: STOP 000019e1: SLOAD 000019e2: UNKNOWN(0xCD) 000019e3: UNKNOWN(0xD3) 000019e4: PUSH10 0xe4e8a8515e52ca72ec81 000019ef: PUSH13 0x2101831ad1f18bf44102ed1714 000019fd: MSIZE 000019fe: UNKNOWN(0xC9) 000019ff: UNKNOWN(0xB4) 00001a00: UNKNOWN(0xF8) 00001a01: LOG1 00001a02: PUSH6 0x627a7a723058 00001a09: KECCAK256 00001a0a: MSIZE 00001a0b: JUMPDEST 00001a0c: UNKNOWN(0xEA) 00001a0d: SWAP14 00001a0e: LOG1 00001a0f: SDIV 00001a10: UNKNOWN(0xB4) 00001a11: LOG3 00001a12: UNKNOWN(0xF6) 00001a13: UNKNOWN(0xF7) 00001a14: UNKNOWN(0xC8) 00001a15: UNKNOWN(0x4E) 00001a16: TIMESTAMP 00001a17: BYTE 00001a18: UNKNOWN(0xCB) 00001a19: CODECOPY 00001a1a: UNKNOWN(0xB2) 00001a1b: PUSH15 0x736f391bcc3cc25de3266a68042c00 00001a2b: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0x61fd9a3e042d35d0969648eadfd0297b36a2391277af93a7d53ff061325a8240
call_targets:
0x0000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000002, 0x3c020e014069df790d4f4e63fd297ba4e1c8e51f
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x61fd9a3e042d35d0969648eadfd0297b36a2391277af93a7d53ff061325a8240",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000002",
"0x3c020e014069df790d4f4e63fd297ba4e1c8e51f"
],
"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": 1680,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1888,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2335,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 12,
"guards_detected": [],
"untrusted_call_count": 12
}
|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0x61fd9a3e042d35d0969648eadfd0297b36a2391277af93a7d53ff061325a8240
call_targets:
0x0000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000002, 0x3c020e014069df790d4f4e63fd297ba4e1c8e51f
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x61fd9a3e042d35d0969648eadfd0297b36a2391277af93a7d53ff061325a8240",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000002",
"0x3c020e014069df790d4f4e63fd297ba4e1c8e51f"
],
"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": 1680,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1888,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2335,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 12,
"guards_detected": []
}
|
| medium | reentrancy | codex | External accountLevels call enables reentrancy and order overfill | 75 | no | — |
viewevidence_json{
"evidence": "tradeBalances() calls AccountLevels(accountLevelsAddr).accountLevel(user) before balances are updated, and orderFills is incremented only after tradeBalances returns.",
"locations": [
"contracts/Contract.sol:265",
"contracts/Contract.sol:270",
"contracts/Contract.sol:260",
"contracts/Contract.sol:261"
],
"recommendation": "Prevent reentrancy in trade/tradeBalances (e.g., mutex) and move orderFills updates before any external call, or cache account levels in storage and avoid external calls on the trade path.",
"exploit_scenario": "If the admin sets accountLevelsAddr to a malicious or compromised contract, its accountLevel() can reenter Bitcratic.trade() before orderFills is updated, allowing multiple fills of the same order and exceeding amountGet. The maker can be forced to trade more than intended."
}
|
| low | access_control | codex | AccountLevelsTest allows arbitrary fee tier assignment | 65 | no | — |
viewevidence_json{
"evidence": "setAccountLevel has no sender checks and writes accountLevels[user] directly.",
"locations": [
"contracts/Contract.sol:139",
"contracts/Contract.sol:142",
"contracts/Contract.sol:143"
],
"recommendation": "Add access control (e.g., owner-only) to setAccountLevel or ensure this test contract is never used in production.",
"exploit_scenario": "If Bitcratic is configured to use AccountLevelsTest, any user can call setAccountLevel to grant themselves level 1/2 and receive fee rebates, reducing or eliminating fees."
}
|
| low | auth | codex | ERC20 approve race condition | 65 | no | — |
viewevidence_json{
"evidence": "approve() sets allowed[msg.sender][_spender] = _value without requiring a zero reset.",
"locations": [
"contracts/Contract.sol:96",
"contracts/Contract.sol:97"
],
"recommendation": "Require setting allowance to 0 before changing it, or implement increase/decrease allowance functions.",
"exploit_scenario": "A spender can front-run an allowance change from X to Y and spend both the old and new allowances, as approve overwrites the allowance directly."
}
|
| 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": 12
}
|