019ba9bc-ec4f-704e-b7dc-fc8e546adf06
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 |
|---|---|---|---|---|
| 37748 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 37749 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 37750 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 37751 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 37752 | capability.graph | complete | 1 / 3 | 3 months ago |
| 37753 | detector.run | complete | 1 / 3 | 3 months ago |
| 37754 | validation.fork | complete | 1 / 3 | 3 months ago |
| 37899 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Found 1 low-severity access-control issue: the ambassador phase can be bypassed by forcing ETH into the contract to flip the whitelist gate.","findings":[{"severity":"low","category":"access_control","title":"Ambassador whitelist can be bypassed via forced ETH transfers","exploit_scenario":"An attacker can deploy a helper contract and `selfdestruct` it to force-send ETH to `ETHPlatinum`, increasing `address(this).balance`. Once the pre-balance exceeds `ambassadorQuota_`, the next call to `purchaseTokens` hits the `else` branch, sets `onlyAmbassadors = false`, and allows non-ambassador purchases even though the whitelist period should still be active. This bypass can be done with minimal cost if the balance is already near the quota.","recommendation":"Do not use `address(this).balance` to gate the ambassador phase. Track progress using internal accounting (e.g., cumulative purchases) or require an explicit admin action to end the phase; also consider a separate boolean that is not influenced by forced ETH.","evidence":"`antiEarlyWhale` checks `totalEthereumBalance() - _amountOfEthereum` to decide whether to enforce ambassador restrictions and flips `onlyAmbassadors` to false; `totalEthereumBalance()` returns `this.balance`, which can be increased via forced ETH.","locations":["contracts/Contract.sol:51","contracts/Contract.sol:400"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-0kk9252u
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: xhigh
reasoning summaries: auto
session id: 019ba9d3-beeb-7522-b0d7-1e7cca018f01
--------
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 read AUDIT_BUNDLE.txt**
exec
/bin/bash -lc ls in /tmp/codex-0kk9252u succeeded in 12ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-0kk9252u succeeded in 10ms:
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.25;
/*
*ETH Platinum is a community-based social project and it is not controlled by any person and can never be turned off. You can withdraw all your funds at any time and you are in total control. As people move in and out of this project, you earn dividends in Ethereum, which you can withdraw or reinvest at any time.
* www.ethplatinum.io - Official Website
* www.ethplatinum.club - Backup Website
*/
contract Ownable {
address public owner;
constructor() public {
thinking
**Analyzing contract for key vulnerabilities**
thinking
**Evaluating edge cases and potential risks**
I’m carefully examining the early-stage ambassador gating and how the contract’s ETH balance impacts purchase permissions, especially around owner-controlled flags and possible bypasses using ETH sent directly to the contract. There are some subtle centralization and availability risks where the contract might remain permanently restricted to ambassadors without owner intervention, and scenarios where selfdestruct deposits could bypass early buyer limits. Though these don't present exploitable financial vulnerabilities, they reveal interesting governance and access-control nuances worth noting.
thinking
**Identifying subtle access control weaknesses**
I’m examining complex interactions around ambassador phase gating, constructor style, and owner permissions. The key finding is the ability for forced ETH transfers to bypass ambassador-only restrictions by inflating contract balance, letting non-ambassadors purchase early at personal cost. Also, the ambassador phase can become stuck indefinitely since ambassador purchases max out their quota without flipping the phase flag, requiring owner action to resume public buys. These represent nuanced access control and availability issues rather than direct financial exploits.
thinking
**Highlighting persistent ambassador phase and balance manipulation risks**
I'm focusing on how the ambassador phase depends on contract balance, which can be manipulated by forced ETH transfers to bypass or prematurely end the phase; since ambassador quotas cap purchases exactly at the threshold, the phase may never end automatically without admin action. This creates risks of indefinite purchase locking or unintended early public buying, representing nuanced access control and logic vulnerabilities worth flagging.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-0kk9252u succeeded in 8ms:
1 pragma solidity ^0.4.25;
2
3 /*
4 *ETH Platinum is a community-based social project and it is not controlled by any person and can never be turned off. You can withdraw all your funds at any time and you are in total control. As people move in and out of this project, you earn dividends in Ethereum, which you can withdraw or reinvest at any time.
5 * www.ethplatinum.io - Official Website
6 * www.ethplatinum.club - Backup Website
7 */
8
9
10 contract Ownable {
11
12 address public owner;
13
14 constructor() public {
15 owner = msg.sender;
16 }
17 }
18
19
20 contract ETHPlatinum is Ownable{
thinking
**Preparing vulnerability report JSON**
codex
{"no_findings":false,"summary":"Found 1 low-severity access-control issue: the ambassador phase can be bypassed by forcing ETH into the contract to flip the whitelist gate.","findings":[{"severity":"low","category":"access_control","title":"Ambassador whitelist can be bypassed via forced ETH transfers","exploit_scenario":"An attacker can deploy a helper contract and `selfdestruct` it to force-send ETH to `ETHPlatinum`, increasing `address(this).balance`. Once the pre-balance exceeds `ambassadorQuota_`, the next call to `purchaseTokens` hits the `else` branch, sets `onlyAmbassadors = false`, and allows non-ambassador purchases even though the whitelist period should still be active. This bypass can be done with minimal cost if the balance is already near the quota.","recommendation":"Do not use `address(this).balance` to gate the ambassador phase. Track progress using internal accounting (e.g., cumulative purchases) or require an explicit admin action to end the phase; also consider a separate boolean that is not influenced by forced ETH.","evidence":"`antiEarlyWhale` checks `totalEthereumBalance() - _amountOfEthereum` to decide whether to enforce ambassador restrictions and flips `onlyAmbassadors` to false; `totalEthereumBalance()` returns `this.balance`, which can be increased via forced ETH.","locations":["contracts/Contract.sol:51","contracts/Contract.sol:400"]}]}
tokens used
31,908
{
"codex": {
"ran_at": "2026-01-10T21:37:34.415025+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found 1 low-severity access-control issue: the ambassador phase can be bypassed by forcing ETH into the contract to flip the whitelist gate.",
"raw_final": {
"summary": "Found 1 low-severity access-control issue: the ambassador phase can be bypassed by forcing ETH into the contract to flip the whitelist gate.",
"findings": [
{
"title": "Ambassador whitelist can be bypassed via forced ETH transfers",
"category": "access_control",
"evidence": "`antiEarlyWhale` checks `totalEthereumBalance() - _amountOfEthereum` to decide whether to enforce ambassador restrictions and flips `onlyAmbassadors` to false; `totalEthereumBalance()` returns `this.balance`, which can be increased via forced ETH.",
"severity": "low",
"locations": [
"contracts/Contract.sol:51",
"contracts/Contract.sol:400"
],
"recommendation": "Do not use `address(this).balance` to gate the ambassador phase. Track progress using internal accounting (e.g., cumulative purchases) or require an explicit admin action to end the phase; also consider a separate boolean that is not influenced by forced ETH.",
"exploit_scenario": "An attacker can deploy a helper contract and `selfdestruct` it to force-send ETH to `ETHPlatinum`, increasing `address(this).balance`. Once the pre-balance exceeds `ambassadorQuota_`, the next call to `purchaseTokens` hits the `else` branch, sets `onlyAmbassadors = false`, and allows non-ambassador purchases even though the whitelist period should still be active. This bypass can be done with minimal cost if the balance is already near the quota."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0168 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000030: PUSH1 0x00 00000032: CALLDATALOAD 00000033: DIV 00000034: AND 00000035: PUSH3 0x65318b 00000039: DUP2 0000003a: EQ 0000003b: PUSH2 0x0185 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0x040d50d4 00000045: EQ 00000046: PUSH2 0x01b8 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0x06fdde03 00000050: EQ 00000051: PUSH2 0x01d2 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0x10d0ffdd 0000005b: EQ 0000005c: PUSH2 0x025c 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0x18160ddd 00000066: EQ 00000067: PUSH2 0x0274 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0x22609373 00000071: EQ 00000072: PUSH2 0x0289 00000075: JUMPI 00000076: DUP1 00000077: PUSH4 0x27defa1f 0000007c: EQ 0000007d: PUSH2 0x02a1 00000080: JUMPI 00000081: DUP1 00000082: PUSH4 0x313ce567 00000087: EQ 00000088: PUSH2 0x02ca 0000008b: JUMPI 0000008c: DUP1 0000008d: PUSH4 0x3ccfd60b 00000092: EQ 00000093: PUSH2 0x02f5 00000096: JUMPI 00000097: DUP1 00000098: PUSH4 0x4b750334 0000009d: EQ 0000009e: PUSH2 0x030a 000000a1: JUMPI 000000a2: DUP1 000000a3: PUSH4 0x56d399e8 000000a8: EQ 000000a9: PUSH2 0x031f 000000ac: JUMPI 000000ad: DUP1 000000ae: PUSH4 0x688abbf7 000000b3: EQ 000000b4: PUSH2 0x0334 000000b7: JUMPI 000000b8: DUP1 000000b9: PUSH4 0x6b2f4632 000000be: EQ 000000bf: PUSH2 0x034e 000000c2: JUMPI 000000c3: DUP1 000000c4: PUSH4 0x70a08231 000000c9: EQ 000000ca: PUSH2 0x0363 000000cd: JUMPI 000000ce: DUP1 000000cf: PUSH4 0x8328b610 000000d4: EQ 000000d5: PUSH2 0x0384 000000d8: JUMPI 000000d9: DUP1 000000da: PUSH4 0x8620410b 000000df: EQ 000000e0: PUSH2 0x039c 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0x8da5cb5b 000000ea: EQ 000000eb: PUSH2 0x03b1 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x949e8acd 000000f5: EQ 000000f6: PUSH2 0x03e2 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x95d89b41 00000100: EQ 00000101: PUSH2 0x03f7 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0xa8e04f34 0000010b: EQ 0000010c: PUSH2 0x040c 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0xa9059cbb 00000116: EQ 00000117: PUSH2 0x0421 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0xb84c8246 00000121: EQ 00000122: PUSH2 0x0445 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0xc47f0027 0000012c: EQ 0000012d: PUSH2 0x049e 00000130: JUMPI 00000131: DUP1 00000132: PUSH4 0xe4849b32 00000137: EQ 00000138: PUSH2 0x04f7 0000013b: JUMPI 0000013c: DUP1 0000013d: PUSH4 0xe9fad8ee 00000142: EQ 00000143: PUSH2 0x050f 00000146: JUMPI 00000147: DUP1 00000148: PUSH4 0xf088d547 0000014d: EQ 0000014e: PUSH2 0x0524 00000151: JUMPI 00000152: DUP1 00000153: PUSH4 0xf7085ec7 00000158: EQ 00000159: PUSH2 0x0538 0000015c: JUMPI 0000015d: DUP1 0000015e: PUSH4 0xfdb5a03e 00000163: EQ 00000164: PUSH2 0x054d 00000167: JUMPI 00000168: JUMPDEST 00000169: PUSH1 0x03 0000016b: SLOAD 0000016c: TIMESTAMP 0000016d: LT 0000016e: ISZERO 0000016f: PUSH2 0x0177 00000172: JUMPI 00000173: PUSH1 0x00 00000175: DUP1 00000176: REVERT 00000177: JUMPDEST 00000178: PUSH2 0x0182 0000017b: CALLVALUE 0000017c: PUSH1 0x00 0000017e: PUSH2 0x0562 00000181: JUMP 00000182: JUMPDEST 00000183: POP 00000184: STOP 00000185: JUMPDEST 00000186: CALLVALUE 00000187: DUP1 00000188: ISZERO 00000189: PUSH2 0x0191 0000018c: JUMPI 0000018d: PUSH1 0x00 0000018f: DUP1 00000190: REVERT 00000191: JUMPDEST 00000192: POP 00000193: PUSH2 0x01a6 00000196: PUSH1 0x01 00000198: PUSH1 0xa0 0000019a: PUSH1 0x02 0000019c: EXP 0000019d: SUB 0000019e: PUSH1 0x04 000001a0: CALLDATALOAD 000001a1: AND 000001a2: PUSH2 0x0b37 000001a5: JUMP 000001a6: JUMPDEST 000001a7: PUSH1 0x40 000001a9: DUP1 000001aa: MLOAD 000001ab: SWAP2 000001ac: DUP3 000001ad: MSTORE 000001ae: MLOAD 000001af: SWAP1 000001b0: DUP2 000001b1: SWAP1 000001b2: SUB 000001b3: PUSH1 0x20 000001b5: ADD 000001b6: SWAP1 000001b7: RETURN 000001b8: JUMPDEST 000001b9: CALLVALUE 000001ba: DUP1 000001bb: ISZERO 000001bc: PUSH2 0x01c4 000001bf: JUMPI 000001c0: PUSH1 0x00 000001c2: DUP1 000001c3: REVERT 000001c4: JUMPDEST 000001c5: POP 000001c6: PUSH2 0x01d0 000001c9: PUSH1 0x04 000001cb: CALLDATALOAD 000001cc: PUSH2 0x0b72 000001cf: JUMP 000001d0: JUMPDEST 000001d1: STOP 000001d2: JUMPDEST 000001d3: CALLVALUE 000001d4: DUP1 000001d5: ISZERO 000001d6: PUSH2 0x01de 000001d9: JUMPI 000001da: PUSH1 0x00 000001dc: DUP1 000001dd: REVERT 000001de: JUMPDEST 000001df: POP 000001e0: PUSH2 0x01e7 000001e3: PUSH2 0x0b8e 000001e6: JUMP 000001e7: JUMPDEST 000001e8: PUSH1 0x40 000001ea: DUP1 000001eb: MLOAD 000001ec: PUSH1 0x20 000001ee: DUP1 000001ef: DUP3 000001f0: MSTORE 000001f1: DUP4 000001f2: MLOAD 000001f3: DUP2 000001f4: DUP4 000001f5: ADD 000001f6: MSTORE 000001f7: DUP4 000001f8: MLOAD 000001f9: SWAP2 000001fa: SWAP3 000001fb: DUP4 000001fc: SWAP3 000001fd: SWAP1 000001fe: DUP4 000001ff: ADD 00000200: SWAP2 00000201: DUP6 00000202: ADD 00000203: SWAP1 00000204: DUP1 00000205: DUP4 00000206: DUP4 00000207: PUSH1 0x00 00000209: JUMPDEST 0000020a: DUP4 0000020b: DUP2 0000020c: LT 0000020d: ISZERO 0000020e: PUSH2 0x0221 00000211: JUMPI 00000212: DUP2 00000213: DUP2 00000214: ADD 00000215: MLOAD 00000216: DUP4 00000217: DUP3 00000218: ADD 00000219: MSTORE 0000021a: PUSH1 0x20 0000021c: ADD 0000021d: PUSH2 0x0209 00000220: JUMP 00000221: JUMPDEST 00000222: POP 00000223: POP 00000224: POP 00000225: POP 00000226: SWAP1 00000227: POP 00000228: SWAP1 00000229: DUP2 0000022a: ADD 0000022b: SWAP1 0000022c: PUSH1 0x1f 0000022e: AND 0000022f: DUP1 00000230: ISZERO 00000231: PUSH2 0x024e 00000234: JUMPI 00000235: DUP1 00000236: DUP3 00000237: SUB 00000238: DUP1 00000239: MLOAD 0000023a: PUSH1 0x01 0000023c: DUP4 0000023d: PUSH1 0x20 0000023f: SUB 00000240: PUSH2 0x0100 00000243: EXP 00000244: SUB 00000245: NOT 00000246: AND 00000247: DUP2 00000248: MSTORE 00000249: PUSH1 0x20 0000024b: ADD 0000024c: SWAP2 0000024d: POP 0000024e: JUMPDEST 0000024f: POP 00000250: SWAP3 00000251: POP 00000252: POP 00000253: POP 00000254: PUSH1 0x40 00000256: MLOAD 00000257: DUP1 00000258: SWAP2 00000259: SUB 0000025a: SWAP1 0000025b: RETURN 0000025c: JUMPDEST 0000025d: CALLVALUE 0000025e: DUP1 0000025f: ISZERO 00000260: PUSH2 0x0268 00000263: JUMPI 00000264: PUSH1 0x00 00000266: DUP1 00000267: REVERT 00000268: JUMPDEST 00000269: POP 0000026a: PUSH2 0x01a6 0000026d: PUSH1 0x04 0000026f: CALLDATALOAD 00000270: PUSH2 0x0c1b 00000273: JUMP 00000274: JUMPDEST 00000275: CALLVALUE 00000276: DUP1 00000277: ISZERO 00000278: PUSH2 0x0280 0000027b: JUMPI 0000027c: PUSH1 0x00 0000027e: DUP1 0000027f: REVERT 00000280: JUMPDEST 00000281: POP 00000282: PUSH2 0x01a6 00000285: PUSH2 0x0c4b 00000288: JUMP 00000289: JUMPDEST 0000028a: CALLVALUE 0000028b: DUP1 0000028c: ISZERO 0000028d: PUSH2 0x0295 00000290: JUMPI 00000291: PUSH1 0x00 00000293: DUP1 00000294: REVERT 00000295: JUMPDEST 00000296: POP 00000297: PUSH2 0x01a6 0000029a: PUSH1 0x04 0000029c: CALLDATALOAD 0000029d: PUSH2 0x0c52 000002a0: JUMP 000002a1: JUMPDEST 000002a2: CALLVALUE 000002a3: DUP1 000002a4: ISZERO 000002a5: PUSH2 0x02ad 000002a8: JUMPI 000002a9: PUSH1 0x00 000002ab: DUP1 000002ac: REVERT 000002ad: JUMPDEST 000002ae: POP 000002af: PUSH2 0x02b6 000002b2: PUSH2 0x0c8b 000002b5: JUMP 000002b6: JUMPDEST 000002b7: PUSH1 0x40 000002b9: DUP1 000002ba: MLOAD 000002bb: SWAP2 000002bc: ISZERO 000002bd: ISZERO 000002be: DUP3 000002bf: MSTORE 000002c0: MLOAD 000002c1: SWAP1 000002c2: DUP2 000002c3: SWAP1 000002c4: SUB 000002c5: PUSH1 0x20 000002c7: ADD 000002c8: SWAP1 000002c9: RETURN 000002ca: JUMPDEST 000002cb: CALLVALUE 000002cc: DUP1 000002cd: ISZERO 000002ce: PUSH2 0x02d6 000002d1: JUMPI 000002d2: PUSH1 0x00 000002d4: DUP1 000002d5: REVERT 000002d6: JUMPDEST 000002d7: POP 000002d8: PUSH2 0x02df 000002db: PUSH2 0x0c94 000002de: JUMP 000002df: JUMPDEST 000002e0: PUSH1 0x40 000002e2: DUP1 000002e3: MLOAD 000002e4: PUSH1 0xff 000002e6: SWAP1 000002e7: SWAP3 000002e8: AND 000002e9: DUP3 000002ea: MSTORE 000002eb: MLOAD 000002ec: SWAP1 000002ed: DUP2 000002ee: SWAP1 000002ef: SUB 000002f0: PUSH1 0x20 000002f2: ADD 000002f3: SWAP1 000002f4: RETURN 000002f5: JUMPDEST 000002f6: CALLVALUE 000002f7: DUP1 000002f8: ISZERO 000002f9: PUSH2 0x0301 000002fc: JUMPI 000002fd: PUSH1 0x00 000002ff: DUP1 00000300: REVERT 00000301: JUMPDEST 00000302: POP 00000303: PUSH2 0x01d0 00000306: PUSH2 0x0c99 00000309: JUMP 0000030a: JUMPDEST 0000030b: CALLVALUE 0000030c: DUP1 0000030d: ISZERO 0000030e: PUSH2 0x0316 00000311: JUMPI 00000312: PUSH1 0x00 00000314: DUP1 00000315: REVERT 00000316: JUMPDEST 00000317: POP 00000318: PUSH2 0x01a6 0000031b: PUSH2 0x0d6c 0000031e: JUMP 0000031f: JUMPDEST 00000320: CALLVALUE 00000321: DUP1 00000322: ISZERO 00000323: PUSH2 0x032b 00000326: JUMPI 00000327: PUSH1 0x00 00000329: DUP1 0000032a: REVERT 0000032b: JUMPDEST 0000032c: POP 0000032d: PUSH2 0x01a6 00000330: PUSH2 0x0dc0 00000333: JUMP 00000334: JUMPDEST 00000335: CALLVALUE 00000336: DUP1 00000337: ISZERO 00000338: PUSH2 0x0340 0000033b: JUMPI 0000033c: PUSH1 0x00 0000033e: DUP1 0000033f: REVERT 00000340: JUMPDEST 00000341: POP 00000342: PUSH2 0x01a6 00000345: PUSH1 0x04 00000347: CALLDATALOAD 00000348: ISZERO 00000349: ISZERO 0000034a: PUSH2 0x0dc6 0000034d: JUMP 0000034e: JUMPDEST 0000034f: CALLVALUE 00000350: DUP1 00000351: ISZERO 00000352: PUSH2 0x035a 00000355: JUMPI 00000356: PUSH1 0x00 00000358: DUP1 00000359: REVERT 0000035a: JUMPDEST 0000035b: POP 0000035c: PUSH2 0x01a6 0000035f: PUSH2 0x0e09 00000362: JUMP 00000363: JUMPDEST 00000364: CALLVALUE 00000365: DUP1 00000366: ISZERO 00000367: PUSH2 0x036f 0000036a: JUMPI 0000036b: PUSH1 0x00 0000036d: DUP1 0000036e: REVERT 0000036f: JUMPDEST 00000370: POP 00000371: PUSH2 0x01a6 00000374: PUSH1 0x01 00000376: PUSH1 0xa0 00000378: PUSH1 0x02 0000037a: EXP 0000037b: SUB 0000037c: PUSH1 0x04 0000037e: CALLDATALOAD 0000037f: AND 00000380: PUSH2 0x0e0e 00000383: JUMP 00000384: JUMPDEST 00000385: CALLVALUE 00000386: DUP1 00000387: ISZERO 00000388: PUSH2 0x0390 0000038b: JUMPI 0000038c: PUSH1 0x00 0000038e: DUP1 0000038f: REVERT 00000390: JUMPDEST 00000391: POP 00000392: PUSH2 0x01d0 00000395: PUSH1 0x04 00000397: CALLDATALOAD 00000398: PUSH2 0x0e29 0000039b: JUMP 0000039c: JUMPDEST 0000039d: CALLVALUE 0000039e: DUP1 0000039f: ISZERO 000003a0: PUSH2 0x03a8 000003a3: JUMPI 000003a4: PUSH1 0x00 000003a6: DUP1 000003a7: REVERT 000003a8: JUMPDEST 000003a9: POP 000003aa: PUSH2 0x01a6 000003ad: PUSH2 0x0e45 000003b0: JUMP 000003b1: JUMPDEST 000003b2: CALLVALUE 000003b3: DUP1 000003b4: ISZERO 000003b5: PUSH2 0x03bd 000003b8: JUMPI 000003b9: PUSH1 0x00 000003bb: DUP1 000003bc: REVERT 000003bd: JUMPDEST 000003be: POP 000003bf: PUSH2 0x03c6 000003c2: PUSH2 0x0e8d 000003c5: JUMP 000003c6: JUMPDEST 000003c7: PUSH1 0x40 000003c9: DUP1 000003ca: MLOAD 000003cb: PUSH1 0x01 000003cd: PUSH1 0xa0 000003cf: PUSH1 0x02 000003d1: EXP 000003d2: SUB 000003d3: SWAP1 000003d4: SWAP3 000003d5: AND 000003d6: DUP3 000003d7: MSTORE 000003d8: MLOAD 000003d9: SWAP1 000003da: DUP2 000003db: SWAP1 000003dc: SUB 000003dd: PUSH1 0x20 000003df: ADD 000003e0: SWAP1 000003e1: RETURN 000003e2: JUMPDEST 000003e3: CALLVALUE 000003e4: DUP1 000003e5: ISZERO 000003e6: PUSH2 0x03ee 000003e9: JUMPI 000003ea: PUSH1 0x00 000003ec: DUP1 000003ed: REVERT 000003ee: JUMPDEST 000003ef: POP 000003f0: PUSH2 0x01a6 000003f3: PUSH2 0x0e9c 000003f6: JUMP 000003f7: JUMPDEST 000003f8: CALLVALUE 000003f9: DUP1 000003fa: ISZERO 000003fb: PUSH2 0x0403 000003fe: JUMPI 000003ff: PUSH1 0x00 00000401: DUP1 00000402: REVERT 00000403: JUMPDEST 00000404: POP 00000405: PUSH2 0x01e7 00000408: PUSH2 0x0eaf 0000040b: JUMP 0000040c: JUMPDEST 0000040d: CALLVALUE 0000040e: DUP1 0000040f: ISZERO 00000410: PUSH2 0x0418 00000413: JUMPI 00000414: PUSH1 0x00 00000416: DUP1 00000417: REVERT 00000418: JUMPDEST 00000419: POP 0000041a: PUSH2 0x01d0 0000041d: PUSH2 0x0f07 00000420: JUMP 00000421: JUMPDEST 00000422: CALLVALUE 00000423: DUP1 00000424: ISZERO 00000425: PUSH2 0x042d 00000428: JUMPI 00000429: PUSH1 0x00 0000042b: DUP1 0000042c: REVERT 0000042d: JUMPDEST 0000042e: POP 0000042f: PUSH2 0x02b6 00000432: PUSH1 0x01 00000434: PUSH1 0xa0 00000436: PUSH1 0x02 00000438: EXP 00000439: SUB 0000043a: PUSH1 0x04 0000043c: CALLDATALOAD 0000043d: AND 0000043e: PUSH1 0x24 00000440: CALLDATALOAD 00000441: PUSH2 0x0f2a 00000444: JUMP 00000445: JUMPDEST 00000446: CALLVALUE 00000447: DUP1 00000448: ISZERO 00000449: PUSH2 0x0451 0000044c: JUMPI 0000044d: PUSH1 0x00 0000044f: DUP1 00000450: REVERT 00000451: JUMPDEST 00000452: POP 00000453: PUSH1 0x40 00000455: DUP1 00000456: MLOAD 00000457: PUSH1 0x20 00000459: PUSH1 0x04 0000045b: DUP1 0000045c: CALLDATALOAD 0000045d: DUP1 0000045e: DUP3 0000045f: ADD 00000460: CALLDATALOAD 00000461: PUSH1 0x1f 00000463: DUP2 00000464: ADD 00000465: DUP5 00000466: SWAP1 00000467: DIV 00000468: DUP5 00000469: MUL 0000046a: DUP6 0000046b: ADD 0000046c: DUP5 0000046d: ADD 0000046e: SWAP1 0000046f: SWAP6 00000470: MSTORE 00000471: DUP5 00000472: DUP5 00000473: MSTORE 00000474: PUSH2 0x01d0 00000477: SWAP5 00000478: CALLDATASIZE 00000479: SWAP5 0000047a: SWAP3 0000047b: SWAP4 0000047c: PUSH1 0x24 0000047e: SWAP4 0000047f: SWAP3 00000480: DUP5 00000481: ADD 00000482: SWAP2 00000483: SWAP1 00000484: DUP2 00000485: SWAP1 00000486: DUP5 00000487: ADD 00000488: DUP4 00000489: DUP3 0000048a: DUP1 0000048b: DUP3 0000048c: DUP5 0000048d: CALLDATACOPY 0000048e: POP 0000048f: SWAP5 00000490: SWAP8 00000491: POP 00000492: PUSH2 0x10e4 00000495: SWAP7 00000496: POP 00000497: POP 00000498: POP 00000499: POP 0000049a: POP 0000049b: POP 0000049c: POP 0000049d: JUMP 0000049e: JUMPDEST 0000049f: CALLVALUE 000004a0: DUP1 000004a1: ISZERO 000004a2: PUSH2 0x04aa 000004a5: JUMPI 000004a6: PUSH1 0x00 000004a8: DUP1 000004a9: REVERT 000004aa: JUMPDEST 000004ab: POP 000004ac: PUSH1 0x40 000004ae: DUP1 000004af: MLOAD 000004b0: PUSH1 0x20 000004b2: PUSH1 0x04 000004b4: DUP1 000004b5: CALLDATALOAD 000004b6: DUP1 000004b7: DUP3 000004b8: ADD 000004b9: CALLDATALOAD 000004ba: PUSH1 0x1f 000004bc: DUP2 000004bd: ADD 000004be: DUP5 000004bf: SWAP1 000004c0: DIV 000004c1: DUP5 000004c2: MUL 000004c3: DUP6 000004c4: ADD 000004c5: DUP5 000004c6: ADD 000004c7: SWAP1 000004c8: SWAP6 000004c9: MSTORE 000004ca: DUP5 000004cb: DUP5 000004cc: MSTORE 000004cd: PUSH2 0x01d0 000004d0: SWAP5 000004d1: CALLDATASIZE 000004d2: SWAP5 000004d3: SWAP3 000004d4: SWAP4 000004d5: PUSH1 0x24 000004d7: SWAP4 000004d8: SWAP3 000004d9: DUP5 000004da: ADD 000004db: SWAP2 000004dc: SWAP1 000004dd: DUP2 000004de: SWAP1 000004df: DUP5 000004e0: ADD 000004e1: DUP4 000004e2: DUP3 000004e3: DUP1 000004e4: DUP3 000004e5: DUP5 000004e6: CALLDATACOPY 000004e7: POP 000004e8: SWAP5 000004e9: SWAP8 000004ea: POP 000004eb: PUSH2 0x1112 000004ee: SWAP7 000004ef: POP 000004f0: POP 000004f1: POP 000004f2: POP 000004f3: POP 000004f4: POP 000004f5: POP 000004f6: JUMP 000004f7: JUMPDEST 000004f8: CALLVALUE 000004f9: DUP1 000004fa: ISZERO 000004fb: PUSH2 0x0503 000004fe: JUMPI 000004ff: PUSH1 0x00 00000501: DUP1 00000502: REVERT 00000503: JUMPDEST 00000504: POP 00000505: PUSH2 0x01d0 00000508: PUSH1 0x04 0000050a: CALLDATALOAD 0000050b: PUSH2 0x113c 0000050e: JUMP 0000050f: JUMPDEST 00000510: CALLVALUE 00000511: DUP1 00000512: ISZERO 00000513: PUSH2 0x051b 00000516: JUMPI 00000517: PUSH1 0x00 00000519: DUP1 0000051a: REVERT 0000051b: JUMPDEST 0000051c: POP 0000051d: PUSH2 0x01d0 00000520: PUSH2 0x128d 00000523: JUMP 00000524: JUMPDEST 00000525: PUSH2 0x01a6 00000528: PUSH1 0x01 0000052a: PUSH1 0xa0 0000052c: PUSH1 0x02 0000052e: EXP 0000052f: SUB 00000530: PUSH1 0x04 00000532: CALLDATALOAD 00000533: AND 00000534: PUSH2 0x12b6 00000537: JUMP 00000538: JUMPDEST 00000539: CALLVALUE 0000053a: DUP1 0000053b: ISZERO 0000053c: PUSH2 0x0544 0000053f: JUMPI 00000540: PUSH1 0x00 00000542: DUP1 00000543: REVERT 00000544: JUMPDEST 00000545: POP 00000546: PUSH2 0x01a6 00000549: PUSH2 0x12d2 0000054c: JUMP 0000054d: JUMPDEST 0000054e: CALLVALUE 0000054f: DUP1 00000550: ISZERO 00000551: PUSH2 0x0559 00000554: JUMPI 00000555: PUSH1 0x00 00000557: DUP1 00000558: REVERT 00000559: JUMPDEST 0000055a: POP 0000055b: PUSH2 0x01d0 0000055e: PUSH2 0x12d8 00000561: JUMP 00000562: JUMPDEST 00000563: PUSH1 0x00 00000565: DUP1 00000566: PUSH1 0x00 00000568: DUP1 00000569: PUSH1 0x00 0000056b: DUP1 0000056c: PUSH1 0x00 0000056e: DUP1 0000056f: PUSH1 0x00 00000571: DUP11 00000572: PUSH1 0x00 00000574: CALLER 00000575: SWAP1 00000576: POP 00000577: PUSH1 0x0c 00000579: PUSH1 0x00 0000057b: SWAP1 0000057c: SLOAD 0000057d: SWAP1 0000057e: PUSH2 0x0100 00000581: EXP 00000582: SWAP1 00000583: DIV 00000584: PUSH1 0xff 00000586: AND 00000587: DUP1 00000588: ISZERO 00000589: PUSH2 0x05a3 0000058c: JUMPI 0000058d: POP 0000058e: PUSH8 0x4563918244f40000 00000597: DUP3 00000598: PUSH2 0x059f 0000059b: PUSH2 0x0e09 0000059e: JUMP 0000059f: JUMPDEST 000005a0: SUB 000005a1: GT 000005a2: ISZERO 000005a3: JUMPDEST 000005a4: ISZERO 000005a5: PUSH2 0x08b0 000005a8: JUMPI 000005a9: PUSH1 0x01 000005ab: PUSH1 0xa0 000005ad: PUSH1 0x02 000005af: EXP 000005b0: SUB 000005b1: DUP2 000005b2: AND 000005b3: PUSH1 0x00 000005b5: SWAP1 000005b6: DUP2 000005b7: MSTORE 000005b8: PUSH1 0x05 000005ba: PUSH1 0x20 000005bc: MSTORE 000005bd: PUSH1 0x40 000005bf: SWAP1 000005c0: KECCAK256 000005c1: SLOAD 000005c2: PUSH1 0xff 000005c4: AND 000005c5: ISZERO 000005c6: ISZERO 000005c7: PUSH1 0x01 000005c9: EQ 000005ca: DUP1 000005cb: ISZERO 000005cc: PUSH2 0x05f8 000005cf: JUMPI 000005d0: POP 000005d1: PUSH1 0x01 000005d3: PUSH1 0xa0 000005d5: PUSH1 0x02 000005d7: EXP 000005d8: SUB 000005d9: DUP2 000005da: AND 000005db: PUSH1 0x00 000005dd: SWAP1 000005de: DUP2 000005df: MSTORE 000005e0: PUSH1 0x09 000005e2: PUSH1 0x20 000005e4: MSTORE 000005e5: PUSH1 0x40 000005e7: SWAP1 000005e8: KECCAK256 000005e9: SLOAD 000005ea: PUSH8 0x0de0b6b3a7640000 000005f3: SWAP1 000005f4: DUP4 000005f5: ADD 000005f6: GT 000005f7: ISZERO 000005f8: JUMPDEST 000005f9: ISZERO 000005fa: ISZERO 000005fb: PUSH2 0x0603 000005fe: JUMPI 000005ff: PUSH1 0x00 00000601: DUP1 00000602: REVERT 00000603: JUMPDEST 00000604: PUSH1 0x01 00000606: PUSH1 0xa0 00000608: PUSH1 0x02 0000060a: EXP 0000060b: SUB 0000060c: DUP2 0000060d: AND 0000060e: PUSH1 0x00 00000610: SWAP1 00000611: DUP2 00000612: MSTORE 00000613: PUSH1 0x09 00000615: PUSH1 0x20 00000617: MSTORE 00000618: PUSH1 0x40 0000061a: SWAP1 0000061b: KECCAK256 0000061c: SLOAD 0000061d: PUSH2 0x0626 00000620: SWAP1 00000621: DUP4 00000622: PUSH2 0x138e 00000625: JUMP 00000626: JUMPDEST 00000627: PUSH1 0x01 00000629: PUSH1 0xa0 0000062b: PUSH1 0x02 0000062d: EXP 0000062e: SUB 0000062f: DUP3 00000630: AND 00000631: PUSH1 0x00 00000633: SWAP1 00000634: DUP2 00000635: MSTORE 00000636: PUSH1 0x09 00000638: PUSH1 0x20 0000063a: MSTORE 0000063b: PUSH1 0x40 0000063d: SWAP1 0000063e: KECCAK256 0000063f: SSTORE 00000640: CALLER 00000641: SWAP10 00000642: POP 00000643: PUSH2 0x064d 00000646: DUP14 00000647: PUSH1 0x0a 00000649: PUSH2 0x13a4 0000064c: JUMP 0000064d: JUMPDEST 0000064e: SWAP9 0000064f: POP 00000650: PUSH2 0x065a 00000653: DUP10 00000654: PUSH1 0x02 00000656: PUSH2 0x13a4 00000659: JUMP 0000065a: JUMPDEST 0000065b: SWAP8 0000065c: POP 0000065d: PUSH2 0x0666 00000660: DUP10 00000661: DUP10 00000662: PUSH2 0x13bb 00000665: JUMP 00000666: JUMPDEST 00000667: SWAP7 00000668: POP 00000669: PUSH2 0x0672 0000066c: DUP14 0000066d: DUP11 0000066e: PUSH2 0x13bb 00000671: JUMP 00000672: JUMPDEST 00000673: SWAP6 00000674: POP 00000675: PUSH2 0x067d 00000678: DUP7 00000679: PUSH2 0x13cd 0000067c: JUMP 0000067d: JUMPDEST 0000067e: SWAP5 0000067f: POP 00000680: PUSH9 0x010000000000000000 0000068a: DUP8 0000068b: MUL 0000068c: SWAP4 0000068d: POP 0000068e: PUSH1 0x00 00000690: DUP6 00000691: GT 00000692: DUP1 00000693: ISZERO 00000694: PUSH2 0x06a7 00000697: JUMPI 00000698: POP 00000699: PUSH1 0x0a 0000069b: SLOAD 0000069c: PUSH2 0x06a5 0000069f: DUP7 000006a0: DUP3 000006a1: PUSH2 0x138e 000006a4: JUMP 000006a5: JUMPDEST 000006a6: GT 000006a7: JUMPDEST 000006a8: ISZERO 000006a9: ISZERO 000006aa: PUSH2 0x06b2 000006ad: JUMPI 000006ae: PUSH1 0x00 000006b0: DUP1 000006b1: REVERT 000006b2: JUMPDEST 000006b3: PUSH1 0x01 000006b5: PUSH1 0xa0 000006b7: PUSH1 0x02 000006b9: EXP 000006ba: SUB 000006bb: DUP13 000006bc: AND 000006bd: ISZERO 000006be: DUP1 000006bf: ISZERO 000006c0: SWAP1 000006c1: PUSH2 0x06dc 000006c4: JUMPI 000006c5: POP 000006c6: DUP10 000006c7: PUSH1 0x01 000006c9: PUSH1 0xa0 000006cb: PUSH1 0x02 000006cd: EXP 000006ce: SUB 000006cf: AND 000006d0: DUP13 000006d1: PUSH1 0x01 000006d3: PUSH1 0xa0 000006d5: PUSH1 0x02 000006d7: EXP 000006d8: SUB 000006d9: AND 000006da: EQ 000006db: ISZERO 000006dc: JUMPDEST 000006dd: DUP1 000006de: ISZERO 000006df: PUSH2 0x0702 000006e2: JUMPI 000006e3: POP 000006e4: PUSH1 0x04 000006e6: SLOAD 000006e7: PUSH1 0x01 000006e9: PUSH1 0xa0 000006eb: PUSH1 0x02 000006ed: EXP 000006ee: SUB 000006ef: DUP14 000006f0: AND 000006f1: PUSH1 0x00 000006f3: SWAP1 000006f4: DUP2 000006f5: MSTORE 000006f6: PUSH1 0x06 000006f8: PUSH1 0x20 000006fa: MSTORE 000006fb: PUSH1 0x40 000006fd: SWAP1 000006fe: KECCAK256 000006ff: SLOAD 00000700: LT 00000701: ISZERO 00000702: JUMPDEST 00000703: ISZERO 00000704: PUSH2 0x0748 00000707: JUMPI 00000708: PUSH1 0x01 0000070a: PUSH1 0xa0 0000070c: PUSH1 0x02 0000070e: EXP 0000070f: SUB 00000710: DUP13 00000711: AND 00000712: PUSH1 0x00 00000714: SWAP1 00000715: DUP2 00000716: MSTORE 00000717: PUSH1 0x07 00000719: PUSH1 0x20 0000071b: MSTORE 0000071c: PUSH1 0x40 0000071e: SWAP1 0000071f: KECCAK256 00000720: SLOAD 00000721: PUSH2 0x072a 00000724: SWAP1 00000725: DUP10 00000726: PUSH2 0x138e 00000729: JUMP 0000072a: JUMPDEST 0000072b: PUSH1 0x01 0000072d: PUSH1 0xa0 0000072f: PUSH1 0x02 00000731: EXP 00000732: SUB 00000733: DUP14 00000734: AND 00000735: PUSH1 0x00 00000737: SWAP1 00000738: DUP2 00000739: MSTORE 0000073a: PUSH1 0x07 0000073c: PUSH1 0x20 0000073e: MSTORE 0000073f: PUSH1 0x40 00000741: SWAP1 00000742: KECCAK256 00000743: SSTORE 00000744: PUSH2 0x0763 00000747: JUMP 00000748: JUMPDEST 00000749: PUSH2 0x0752 0000074c: DUP8 0000074d: DUP10 0000074e: PUSH2 0x138e 00000751: JUMP 00000752: JUMPDEST 00000753: SWAP7 00000754: POP 00000755: PUSH9 0x010000000000000000 0000075f: DUP8 00000760: MUL 00000761: SWAP4 00000762: POP 00000763: JUMPDEST 00000764: PUSH1 0x00 00000766: PUSH1 0x0a 00000768: SLOAD 00000769: GT 0000076a: ISZERO 0000076b: PUSH2 0x07c7 0000076e: JUMPI 0000076f: PUSH2 0x077a 00000772: PUSH1 0x0a 00000774: SLOAD 00000775: DUP7 00000776: PUSH2 0x138e 00000779: JUMP 0000077a: JUMPDEST 0000077b: PUSH1 0x0a 0000077d: DUP2 0000077e: SWAP1 0000077f: SSTORE 00000780: PUSH9 0x010000000000000000 0000078a: DUP9 0000078b: MUL 0000078c: DUP2 0000078d: ISZERO 0000078e: ISZERO 0000078f: PUSH2 0x0794 00000792: JUMPI 00000793: INVALID 00000794: JUMPDEST 00000795: PUSH1 0x0b 00000797: DUP1 00000798: SLOAD 00000799: SWAP3 0000079a: SWAP1 0000079b: SWAP2 0000079c: DIV 0000079d: SWAP1 0000079e: SWAP2 0000079f: ADD 000007a0: SWAP1 000007a1: SSTORE 000007a2: PUSH1 0x0a 000007a4: SLOAD 000007a5: PUSH9 0x010000000000000000 000007af: DUP9 000007b0: MUL 000007b1: DUP2 000007b2: ISZERO 000007b3: ISZERO 000007b4: PUSH2 0x07b9 000007b7: JUMPI 000007b8: INVALID 000007b9: JUMPDEST 000007ba: DIV 000007bb: DUP6 000007bc: MUL 000007bd: DUP5 000007be: SUB 000007bf: DUP5 000007c0: SUB 000007c1: SWAP4 000007c2: POP 000007c3: PUSH2 0x07cd 000007c6: JUMP 000007c7: JUMPDEST 000007c8: PUSH1 0x0a 000007ca: DUP6 000007cb: SWAP1 000007cc: SSTORE 000007cd: JUMPDEST 000007ce: PUSH1 0x01 000007d0: PUSH1 0xa0 000007d2: PUSH1 0x02 000007d4: EXP 000007d5: SUB 000007d6: DUP11 000007d7: AND 000007d8: PUSH1 0x00 000007da: SWAP1 000007db: DUP2 000007dc: MSTORE 000007dd: PUSH1 0x06 000007df: PUSH1 0x20 000007e1: MSTORE 000007e2: PUSH1 0x40 000007e4: SWAP1 000007e5: KECCAK256 000007e6: SLOAD 000007e7: PUSH2 0x07f0 000007ea: SWAP1 000007eb: DUP7 000007ec: PUSH2 0x138e 000007ef: JUMP 000007f0: JUMPDEST 000007f1: PUSH1 0x06 000007f3: PUSH1 0x00 000007f5: DUP13 000007f6: PUSH1 0x01 000007f8: PUSH1 0xa0 000007fa: PUSH1 0x02 000007fc: EXP 000007fd: SUB 000007fe: AND 000007ff: PUSH1 0x01 00000801: PUSH1 0xa0 00000803: PUSH1 0x02 00000805: EXP 00000806: SUB 00000807: AND 00000808: DUP2 00000809: MSTORE 0000080a: PUSH1 0x20 0000080c: ADD 0000080d: SWAP1 0000080e: DUP2 0000080f: MSTORE 00000810: PUSH1 0x20 00000812: ADD 00000813: PUSH1 0x00 00000815: KECCAK256 00000816: DUP2 00000817: SWAP1 00000818: SSTORE 00000819: POP 0000081a: DUP4 0000081b: DUP6 0000081c: PUSH1 0x0b 0000081e: SLOAD 0000081f: MUL 00000820: SUB 00000821: SWAP3 00000822: POP 00000823: DUP3 00000824: PUSH1 0x08 00000826: PUSH1 0x00 00000828: DUP13 00000829: PUSH1 0x01 0000082b: PUSH1 0xa0 0000082d: PUSH1 0x02 0000082f: EXP 00000830: SUB 00000831: AND 00000832: PUSH1 0x01 00000834: PUSH1 0xa0 00000836: PUSH1 0x02 00000838: EXP 00000839: SUB 0000083a: AND 0000083b: DUP2 0000083c: MSTORE 0000083d: PUSH1 0x20 0000083f: ADD 00000840: SWAP1 00000841: DUP2 00000842: MSTORE 00000843: PUSH1 0x20 00000845: ADD 00000846: PUSH1 0x00 00000848: KECCAK256 00000849: PUSH1 0x00 0000084b: DUP3 0000084c: DUP3 0000084d: SLOAD 0000084e: ADD 0000084f: SWAP3 00000850: POP 00000851: POP 00000852: DUP2 00000853: SWAP1 00000854: SSTORE 00000855: POP 00000856: DUP12 00000857: PUSH1 0x01 00000859: PUSH1 0xa0 0000085b: PUSH1 0x02 0000085d: EXP 0000085e: SUB 0000085f: AND 00000860: DUP11 00000861: PUSH1 0x01 00000863: PUSH1 0xa0 00000865: PUSH1 0x02 00000867: EXP 00000868: SUB 00000869: AND 0000086a: PUSH32 0x022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5 0000088b: DUP16 0000088c: DUP9 0000088d: PUSH1 0x40 0000088f: MLOAD 00000890: DUP1 00000891: DUP4 00000892: DUP2 00000893: MSTORE 00000894: PUSH1 0x20 00000896: ADD 00000897: DUP3 00000898: DUP2 00000899: MSTORE 0000089a: PUSH1 0x20 0000089c: ADD 0000089d: SWAP3 0000089e: POP 0000089f: POP 000008a0: POP 000008a1: PUSH1 0x40 000008a3: MLOAD 000008a4: DUP1 000008a5: SWAP2 000008a6: SUB 000008a7: SWAP1 000008a8: LOG3 000008a9: DUP5 000008aa: SWAP11 000008ab: POP 000008ac: PUSH2 0x0b27 000008af: JUMP 000008b0: JUMPDEST 000008b1: PUSH1 0x0c 000008b3: DUP1 000008b4: SLOAD 000008b5: PUSH1 0xff 000008b7: NOT 000008b8: AND 000008b9: SWAP1 000008ba: SSTORE 000008bb: CALLER 000008bc: SWAP10 000008bd: POP 000008be: PUSH2 0x08c8 000008c1: DUP14 000008c2: PUSH1 0x0a 000008c4: PUSH2 0x13a4 000008c7: JUMP 000008c8: JUMPDEST 000008c9: SWAP9 000008ca: POP 000008cb: PUSH2 0x08d5 000008ce: DUP10 000008cf: PUSH1 0x02 000008d1: PUSH2 0x13a4 000008d4: JUMP 000008d5: JUMPDEST 000008d6: SWAP8 000008d7: POP 000008d8: PUSH2 0x08e1 000008db: DUP10 000008dc: DUP10 000008dd: PUSH2 0x13bb 000008e0: JUMP 000008e1: JUMPDEST 000008e2: SWAP7 000008e3: POP 000008e4: PUSH2 0x08ed 000008e7: DUP14 000008e8: DUP11 000008e9: PUSH2 0x13bb 000008ec: JUMP 000008ed: JUMPDEST 000008ee: SWAP6 000008ef: POP 000008f0: PUSH2 0x08f8 000008f3: DUP7 000008f4: PUSH2 0x13cd 000008f7: JUMP 000008f8: JUMPDEST 000008f9: SWAP5 000008fa: POP 000008fb: PUSH9 0x010000000000000000 00000905: DUP8 00000906: MUL 00000907: SWAP4 00000908: POP 00000909: PUSH1 0x00 0000090b: DUP6 0000090c: GT 0000090d: DUP1 0000090e: ISZERO 0000090f: PUSH2 0x0922 00000912: JUMPI 00000913: POP 00000914: PUSH1 0x0a 00000916: SLOAD 00000917: PUSH2 0x0920 0000091a: DUP7 0000091b: DUP3 0000091c: PUSH2 0x138e 0000091f: JUMP 00000920: JUMPDEST 00000921: GT 00000922: JUMPDEST 00000923: ISZERO 00000924: ISZERO 00000925: PUSH2 0x092d 00000928: JUMPI 00000929: PUSH1 0x00 0000092b: DUP1 0000092c: REVERT 0000092d: JUMPDEST 0000092e: PUSH1 0x01 00000930: PUSH1 0xa0 00000932: PUSH1 0x02 00000934: EXP 00000935: SUB 00000936: DUP13 00000937: AND 00000938: ISZERO 00000939: DUP1 0000093a: ISZERO 0000093b: SWAP1 0000093c: PUSH2 0x0957 0000093f: JUMPI 00000940: POP 00000941: DUP10 00000942: PUSH1 0x01 00000944: PUSH1 0xa0 00000946: PUSH1 0x02 00000948: EXP 00000949: SUB 0000094a: AND 0000094b: DUP13 0000094c: PUSH1 0x01 0000094e: PUSH1 0xa0 00000950: PUSH1 0x02 00000952: EXP 00000953: SUB 00000954: AND 00000955: EQ 00000956: ISZERO 00000957: JUMPDEST 00000958: DUP1 00000959: ISZERO 0000095a: PUSH2 0x097d 0000095d: JUMPI 0000095e: POP 0000095f: PUSH1 0x04 00000961: SLOAD 00000962: PUSH1 0x01 00000964: PUSH1 0xa0 00000966: PUSH1 0x02 00000968: EXP 00000969: SUB 0000096a: DUP14 0000096b: AND 0000096c: PUSH1 0x00 0000096e: SWAP1 0000096f: DUP2 00000970: MSTORE 00000971: PUSH1 0x06 00000973: PUSH1 0x20 00000975: MSTORE 00000976: PUSH1 0x40 00000978: SWAP1 00000979: KECCAK256 0000097a: SLOAD 0000097b: LT 0000097c: ISZERO 0000097d: JUMPDEST 0000097e: ISZERO 0000097f: PUSH2 0x09c3 00000982: JUMPI 00000983: PUSH1 0x01 00000985: PUSH1 0xa0 00000987: PUSH1 0x02 00000989: EXP 0000098a: SUB 0000098b: DUP13 0000098c: AND 0000098d: PUSH1 0x00 0000098f: SWAP1 00000990: DUP2 00000991: MSTORE 00000992: PUSH1 0x07 00000994: PUSH1 0x20 00000996: MSTORE 00000997: PUSH1 0x40 00000999: SWAP1 0000099a: KECCAK256 0000099b: SLOAD 0000099c: PUSH2 0x09a5 0000099f: SWAP1 000009a0: DUP10 000009a1: PUSH2 0x138e 000009a4: JUMP 000009a5: JUMPDEST 000009a6: PUSH1 0x01 000009a8: PUSH1 0xa0 000009aa: PUSH1 0x02 000009ac: EXP 000009ad: SUB 000009ae: DUP14 000009af: AND 000009b0: PUSH1 0x00 000009b2: SWAP1 000009b3: DUP2 000009b4: MSTORE 000009b5: PUSH1 0x07 000009b7: PUSH1 0x20 000009b9: MSTORE 000009ba: PUSH1 0x40 000009bc: SWAP1 000009bd: KECCAK256 000009be: SSTORE 000009bf: PUSH2 0x09de 000009c2: JUMP 000009c3: JUMPDEST 000009c4: PUSH2 0x09cd 000009c7: DUP8 000009c8: DUP10 000009c9: PUSH2 0x138e 000009cc: JUMP 000009cd: JUMPDEST 000009ce: SWAP7 000009cf: POP 000009d0: PUSH9 0x010000000000000000 000009da: DUP8 000009db: MUL 000009dc: SWAP4 000009dd: POP 000009de: JUMPDEST 000009df: PUSH1 0x00 000009e1: PUSH1 0x0a 000009e3: SLOAD 000009e4: GT 000009e5: ISZERO 000009e6: PUSH2 0x0a42 000009e9: JUMPI 000009ea: PUSH2 0x09f5 000009ed: PUSH1 0x0a 000009ef: SLOAD 000009f0: DUP7 000009f1: PUSH2 0x138e 000009f4: JUMP 000009f5: JUMPDEST 000009f6: PUSH1 0x0a 000009f8: DUP2 000009f9: SWAP1 000009fa: SSTORE 000009fb: PUSH9 0x010000000000000000 00000a05: DUP9 00000a06: MUL 00000a07: DUP2 00000a08: ISZERO 00000a09: ISZERO 00000a0a: PUSH2 0x0a0f 00000a0d: JUMPI 00000a0e: INVALID 00000a0f: JUMPDEST 00000a10: PUSH1 0x0b 00000a12: DUP1 00000a13: SLOAD 00000a14: SWAP3 00000a15: SWAP1 00000a16: SWAP2 00000a17: DIV 00000a18: SWAP1 00000a19: SWAP2 00000a1a: ADD 00000a1b: SWAP1 00000a1c: SSTORE 00000a1d: PUSH1 0x0a 00000a1f: SLOAD 00000a20: PUSH9 0x010000000000000000 00000a2a: DUP9 00000a2b: MUL 00000a2c: DUP2 00000a2d: ISZERO 00000a2e: ISZERO 00000a2f: PUSH2 0x0a34 00000a32: JUMPI 00000a33: INVALID 00000a34: JUMPDEST 00000a35: DIV 00000a36: DUP6 00000a37: MUL 00000a38: DUP5 00000a39: SUB 00000a3a: DUP5 00000a3b: SUB 00000a3c: SWAP4 00000a3d: POP 00000a3e: PUSH2 0x0a48 00000a41: JUMP 00000a42: JUMPDEST 00000a43: PUSH1 0x0a 00000a45: DUP6 00000a46: SWAP1 00000a47: SSTORE 00000a48: JUMPDEST 00000a49: PUSH1 0x01 00000a4b: PUSH1 0xa0 00000a4d: PUSH1 0x02 00000a4f: EXP 00000a50: SUB 00000a51: DUP11 00000a52: AND 00000a53: PUSH1 0x00 00000a55: SWAP1 00000a56: DUP2 00000a57: MSTORE 00000a58: PUSH1 0x06 00000a5a: PUSH1 0x20 00000a5c: MSTORE 00000a5d: PUSH1 0x40 00000a5f: SWAP1 00000a60: KECCAK256 00000a61: SLOAD 00000a62: PUSH2 0x0a6b 00000a65: SWAP1 00000a66: DUP7 00000a67: PUSH2 0x138e 00000a6a: JUMP 00000a6b: JUMPDEST 00000a6c: PUSH1 0x06 00000a6e: PUSH1 0x00 00000a70: DUP13 00000a71: PUSH1 0x01 00000a73: PUSH1 0xa0 00000a75: PUSH1 0x02 00000a77: EXP 00000a78: SUB 00000a79: AND 00000a7a: PUSH1 0x01 00000a7c: PUSH1 0xa0 00000a7e: PUSH1 0x02 00000a80: EXP 00000a81: SUB 00000a82: AND 00000a83: DUP2 00000a84: MSTORE 00000a85: PUSH1 0x20 00000a87: ADD 00000a88: SWAP1 00000a89: DUP2 00000a8a: MSTORE 00000a8b: PUSH1 0x20 00000a8d: ADD 00000a8e: PUSH1 0x00 00000a90: KECCAK256 00000a91: DUP2 00000a92: SWAP1 00000a93: SSTORE 00000a94: POP 00000a95: DUP4 00000a96: DUP6 00000a97: PUSH1 0x0b 00000a99: SLOAD 00000a9a: MUL 00000a9b: SUB 00000a9c: SWAP3 00000a9d: POP 00000a9e: DUP3 00000a9f: PUSH1 0x08 00000aa1: PUSH1 0x00 00000aa3: DUP13 00000aa4: PUSH1 0x01 00000aa6: PUSH1 0xa0 00000aa8: PUSH1 0x02 00000aaa: EXP 00000aab: SUB 00000aac: AND 00000aad: PUSH1 0x01 00000aaf: PUSH1 0xa0 00000ab1: PUSH1 0x02 00000ab3: EXP 00000ab4: SUB 00000ab5: AND 00000ab6: DUP2 00000ab7: MSTORE 00000ab8: PUSH1 0x20 00000aba: ADD 00000abb: SWAP1 00000abc: DUP2 00000abd: MSTORE 00000abe: PUSH1 0x20 00000ac0: ADD 00000ac1: PUSH1 0x00 00000ac3: KECCAK256 00000ac4: PUSH1 0x00 00000ac6: DUP3 00000ac7: DUP3 00000ac8: SLOAD 00000ac9: ADD 00000aca: SWAP3 00000acb: POP 00000acc: POP 00000acd: DUP2 00000ace: SWAP1 00000acf: SSTORE 00000ad0: POP 00000ad1: DUP12 00000ad2: PUSH1 0x01 00000ad4: PUSH1 0xa0 00000ad6: PUSH1 0x02 00000ad8: EXP 00000ad9: SUB 00000ada: AND 00000adb: DUP11 00000adc: PUSH1 0x01 00000ade: PUSH1 0xa0 00000ae0: PUSH1 0x02 00000ae2: EXP 00000ae3: SUB 00000ae4: AND 00000ae5: PUSH32 0x022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5 00000b06: DUP16 00000b07: DUP9 00000b08: PUSH1 0x40 00000b0a: MLOAD 00000b0b: DUP1 00000b0c: DUP4 00000b0d: DUP2 00000b0e: MSTORE 00000b0f: PUSH1 0x20 00000b11: ADD 00000b12: DUP3 00000b13: DUP2 00000b14: MSTORE 00000b15: PUSH1 0x20 00000b17: ADD 00000b18: SWAP3 00000b19: POP 00000b1a: POP 00000b1b: POP 00000b1c: PUSH1 0x40 00000b1e: MLOAD 00000b1f: DUP1 00000b20: SWAP2 00000b21: SUB 00000b22: SWAP1 00000b23: LOG3 00000b24: DUP5 00000b25: SWAP11 00000b26: POP 00000b27: JUMPDEST 00000b28: POP 00000b29: POP 00000b2a: POP 00000b2b: POP 00000b2c: POP 00000b2d: POP 00000b2e: POP 00000b2f: POP 00000b30: POP 00000b31: POP 00000b32: SWAP3 00000b33: SWAP2 00000b34: POP 00000b35: POP 00000b36: JUMP 00000b37: JUMPDEST 00000b38: PUSH1 0x01 00000b3a: PUSH1 0xa0 00000b3c: PUSH1 0x02 00000b3e: EXP 00000b3f: SUB 00000b40: AND 00000b41: PUSH1 0x00 00000b43: SWAP1 00000b44: DUP2 00000b45: MSTORE 00000b46: PUSH1 0x08 00000b48: PUSH1 0x20 00000b4a: SWAP1 00000b4b: DUP2 00000b4c: MSTORE 00000b4d: PUSH1 0x40 00000b4f: DUP1 00000b50: DUP4 00000b51: KECCAK256 00000b52: SLOAD 00000b53: PUSH1 0x06 00000b55: SWAP1 00000b56: SWAP3 00000b57: MSTORE 00000b58: SWAP1 00000b59: SWAP2 00000b5a: KECCAK256 00000b5b: SLOAD 00000b5c: PUSH1 0x0b 00000b5e: SLOAD 00000b5f: PUSH9 0x010000000000000000 00000b69: SWAP2 00000b6a: MUL 00000b6b: SWAP2 00000b6c: SWAP1 00000b6d: SWAP2 00000b6e: SUB 00000b6f: DIV 00000b70: SWAP1 00000b71: JUMP 00000b72: JUMPDEST 00000b73: PUSH1 0x00 00000b75: SLOAD 00000b76: PUSH1 0x01 00000b78: PUSH1 0xa0 00000b7a: PUSH1 0x02 00000b7c: EXP 00000b7d: SUB 00000b7e: AND 00000b7f: CALLER 00000b80: EQ 00000b81: PUSH2 0x0b89 00000b84: JUMPI 00000b85: PUSH1 0x00 00000b87: DUP1 00000b88: REVERT 00000b89: JUMPDEST 00000b8a: PUSH1 0x03 00000b8c: SSTORE 00000b8d: JUMP 00000b8e: JUMPDEST 00000b8f: PUSH1 0x01 00000b91: DUP1 00000b92: SLOAD 00000b93: PUSH1 0x40 00000b95: DUP1 00000b96: MLOAD 00000b97: PUSH1 0x20 00000b99: PUSH1 0x02 00000b9b: DUP5 00000b9c: DUP7 00000b9d: AND 00000b9e: ISZERO 00000b9f: PUSH2 0x0100 00000ba2: MUL 00000ba3: PUSH1 0x00 00000ba5: NOT 00000ba6: ADD 00000ba7: SWAP1 00000ba8: SWAP5 00000ba9: AND 00000baa: SWAP4 00000bab: SWAP1 00000bac: SWAP4 00000bad: DIV 00000bae: PUSH1 0x1f 00000bb0: DUP2 00000bb1: ADD 00000bb2: DUP5 00000bb3: SWAP1 00000bb4: DIV 00000bb5: DUP5 00000bb6: MUL 00000bb7: DUP3 00000bb8: ADD 00000bb9: DUP5 00000bba: ADD 00000bbb: SWAP1 00000bbc: SWAP3 00000bbd: MSTORE 00000bbe: DUP2 00000bbf: DUP2 00000bc0: MSTORE 00000bc1: SWAP3 00000bc2: SWAP2 00000bc3: DUP4 00000bc4: ADD 00000bc5: DUP3 00000bc6: DUP3 00000bc7: DUP1 00000bc8: ISZERO 00000bc9: PUSH2 0x0c13 00000bcc: JUMPI 00000bcd: DUP1 00000bce: PUSH1 0x1f 00000bd0: LT 00000bd1: PUSH2 0x0be8 00000bd4: JUMPI 00000bd5: PUSH2 0x0100 00000bd8: DUP1 00000bd9: DUP4 00000bda: SLOAD 00000bdb: DIV 00000bdc: MUL 00000bdd: DUP4 00000bde: MSTORE 00000bdf: SWAP2 00000be0: PUSH1 0x20 00000be2: ADD 00000be3: SWAP2 00000be4: PUSH2 0x0c13 00000be7: JUMP 00000be8: JUMPDEST 00000be9: DUP3 00000bea: ADD 00000beb: SWAP2 00000bec: SWAP1 00000bed: PUSH1 0x00 00000bef: MSTORE 00000bf0: PUSH1 0x20 00000bf2: PUSH1 0x00 00000bf4: KECCAK256 00000bf5: SWAP1 00000bf6: JUMPDEST 00000bf7: DUP2 00000bf8: SLOAD 00000bf9: DUP2 00000bfa: MSTORE 00000bfb: SWAP1 00000bfc: PUSH1 0x01 00000bfe: ADD 00000bff: SWAP1 00000c00: PUSH1 0x20 00000c02: ADD 00000c03: DUP1 00000c04: DUP4 00000c05: GT 00000c06: PUSH2 0x0bf6 00000c09: JUMPI 00000c0a: DUP3 00000c0b: SWAP1 00000c0c: SUB 00000c0d: PUSH1 0x1f 00000c0f: AND 00000c10: DUP3 00000c11: ADD 00000c12: SWAP2 00000c13: JUMPDEST 00000c14: POP 00000c15: POP 00000c16: POP 00000c17: POP 00000c18: POP 00000c19: DUP2 00000c1a: JUMP 00000c1b: JUMPDEST 00000c1c: PUSH1 0x00 00000c1e: DUP1 00000c1f: DUP1 00000c20: DUP1 00000c21: PUSH2 0x0c2b 00000c24: DUP6 00000c25: PUSH1 0x0a 00000c27: PUSH2 0x13a4 00000c2a: JUMP 00000c2b: JUMPDEST 00000c2c: SWAP3 00000c2d: POP 00000c2e: PUSH2 0x0c37 00000c31: DUP6 00000c32: DUP5 00000c33: PUSH2 0x13bb 00000c36: JUMP 00000c37: JUMPDEST 00000c38: SWAP2 00000c39: POP 00000c3a: PUSH2 0x0c42 00000c3d: DUP3 00000c3e: PUSH2 0x13cd 00000c41: JUMP 00000c42: JUMPDEST 00000c43: SWAP6 00000c44: SWAP5 00000c45: POP 00000c46: POP 00000c47: POP 00000c48: POP 00000c49: POP 00000c4a: JUMP 00000c4b: JUMPDEST 00000c4c: PUSH1 0x0a 00000c4e: SLOAD 00000c4f: JUMPDEST 00000c50: SWAP1 00000c51: JUMP 00000c52: JUMPDEST 00000c53: PUSH1 0x00 00000c55: DUP1 00000c56: PUSH1 0x00 00000c58: DUP1 00000c59: PUSH1 0x0a 00000c5b: SLOAD 00000c5c: DUP6 00000c5d: GT 00000c5e: ISZERO 00000c5f: ISZERO 00000c60: ISZERO 00000c61: PUSH2 0x0c69 00000c64: JUMPI 00000c65: PUSH1 0x00 00000c67: DUP1 00000c68: REVERT 00000c69: JUMPDEST 00000c6a: PUSH2 0x0c72 00000c6d: DUP6 00000c6e: PUSH2 0x1465 00000c71: JUMP 00000c72: JUMPDEST 00000c73: SWAP3 00000c74: POP 00000c75: PUSH2 0x0c7f 00000c78: DUP4 00000c79: PUSH1 0x0a 00000c7b: PUSH2 0x13a4 00000c7e: JUMP 00000c7f: JUMPDEST 00000c80: SWAP2 00000c81: POP 00000c82: PUSH2 0x0c42 00000c85: DUP4 00000c86: DUP4 00000c87: PUSH2 0x13bb 00000c8a: JUMP 00000c8b: JUMPDEST 00000c8c: PUSH1 0x0c 00000c8e: SLOAD 00000c8f: PUSH1 0xff 00000c91: AND 00000c92: DUP2 00000c93: JUMP 00000c94: JUMPDEST 00000c95: PUSH1 0x12 00000c97: DUP2 00000c98: JUMP 00000c99: JUMPDEST 00000c9a: PUSH1 0x00 00000c9c: DUP1 00000c9d: PUSH1 0x00 00000c9f: PUSH2 0x0ca8 00000ca2: PUSH1 0x01 00000ca4: PUSH2 0x0dc6 00000ca7: JUMP 00000ca8: JUMPDEST 00000ca9: GT 00000caa: PUSH2 0x0cb2 00000cad: JUMPI 00000cae: PUSH1 0x00 00000cb0: DUP1 00000cb1: REVERT 00000cb2: JUMPDEST 00000cb3: CALLER 00000cb4: SWAP2 00000cb5: POP 00000cb6: PUSH2 0x0cbf 00000cb9: PUSH1 0x00 00000cbb: PUSH2 0x0dc6 00000cbe: JUMP 00000cbf: JUMPDEST 00000cc0: PUSH1 0x01 00000cc2: PUSH1 0xa0 00000cc4: PUSH1 0x02 00000cc6: EXP 00000cc7: SUB 00000cc8: DUP4 00000cc9: AND 00000cca: PUSH1 0x00 00000ccc: DUP2 00000ccd: DUP2 00000cce: MSTORE 00000ccf: PUSH1 0x08 00000cd1: PUSH1 0x20 00000cd3: SWAP1 00000cd4: DUP2 00000cd5: MSTORE 00000cd6: PUSH1 0x40 00000cd8: DUP1 00000cd9: DUP4 00000cda: KECCAK256 00000cdb: DUP1 00000cdc: SLOAD 00000cdd: PUSH9 0x010000000000000000 00000ce7: DUP8 00000ce8: MUL 00000ce9: ADD 00000cea: SWAP1 00000ceb: SSTORE 00000cec: PUSH1 0x07 00000cee: SWAP1 00000cef: SWAP2 00000cf0: MSTORE 00000cf1: DUP1 00000cf2: DUP3 00000cf3: KECCAK256 00000cf4: DUP1 00000cf5: SLOAD 00000cf6: SWAP1 00000cf7: DUP4 00000cf8: SWAP1 00000cf9: SSTORE 00000cfa: SWAP1 00000cfb: MLOAD 00000cfc: SWAP4 00000cfd: ADD 00000cfe: SWAP4 00000cff: POP 00000d00: SWAP1 00000d01: SWAP2 00000d02: DUP4 00000d03: ISZERO 00000d04: PUSH2 0x08fc 00000d07: MUL 00000d08: SWAP2 00000d09: DUP5 00000d0a: SWAP2 00000d0b: SWAP1 00000d0c: DUP2 00000d0d: DUP2 00000d0e: DUP2 00000d0f: DUP6 00000d10: DUP9 00000d11: DUP9 00000d12: CALL 00000d13: SWAP4 00000d14: POP 00000d15: POP 00000d16: POP 00000d17: POP 00000d18: ISZERO 00000d19: DUP1 00000d1a: ISZERO 00000d1b: PUSH2 0x0d28 00000d1e: JUMPI 00000d1f: RETURNDATASIZE 00000d20: PUSH1 0x00 00000d22: DUP1 00000d23: RETURNDATACOPY 00000d24: RETURNDATASIZE 00000d25: PUSH1 0x00 00000d27: REVERT 00000d28: JUMPDEST 00000d29: POP 00000d2a: PUSH1 0x40 00000d2c: DUP1 00000d2d: MLOAD 00000d2e: DUP3 00000d2f: DUP2 00000d30: MSTORE 00000d31: SWAP1 00000d32: MLOAD 00000d33: PUSH1 0x01 00000d35: PUSH1 0xa0 00000d37: PUSH1 0x02 00000d39: EXP 00000d3a: SUB 00000d3b: DUP5 00000d3c: AND 00000d3d: SWAP2 00000d3e: PUSH32 0xccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc 00000d5f: SWAP2 00000d60: SWAP1 00000d61: DUP2 00000d62: SWAP1 00000d63: SUB 00000d64: PUSH1 0x20 00000d66: ADD 00000d67: SWAP1 00000d68: LOG2 00000d69: POP 00000d6a: POP 00000d6b: JUMP 00000d6c: JUMPDEST 00000d6d: PUSH1 0x00 00000d6f: DUP1 00000d70: PUSH1 0x00 00000d72: DUP1 00000d73: PUSH1 0x0a 00000d75: SLOAD 00000d76: PUSH1 0x00 00000d78: EQ 00000d79: ISZERO 00000d7a: PUSH2 0x0d8a 00000d7d: JUMPI 00000d7e: PUSH5 0x14f46b0400 00000d84: SWAP4 00000d85: POP 00000d86: PUSH2 0x0dba 00000d89: JUMP 00000d8a: JUMPDEST 00000d8b: PUSH2 0x0d9b 00000d8e: PUSH8 0x0de0b6b3a7640000 00000d97: PUSH2 0x1465 00000d9a: JUMP 00000d9b: JUMPDEST 00000d9c: SWAP3 00000d9d: POP 00000d9e: PUSH2 0x0da8 00000da1: DUP4 00000da2: PUSH1 0x0a 00000da4: PUSH2 0x13a4 00000da7: JUMP 00000da8: JUMPDEST 00000da9: SWAP2 00000daa: POP 00000dab: PUSH2 0x0db4 00000dae: DUP4 00000daf: DUP4 00000db0: PUSH2 0x13bb 00000db3: JUMP 00000db4: JUMPDEST 00000db5: SWAP1 00000db6: POP 00000db7: DUP1 00000db8: SWAP4 00000db9: POP 00000dba: JUMPDEST 00000dbb: POP 00000dbc: POP 00000dbd: POP 00000dbe: SWAP1 00000dbf: JUMP 00000dc0: JUMPDEST 00000dc1: PUSH1 0x04 00000dc3: SLOAD 00000dc4: DUP2 00000dc5: JUMP 00000dc6: JUMPDEST 00000dc7: PUSH1 0x00 00000dc9: CALLER 00000dca: DUP3 00000dcb: PUSH2 0x0ddc 00000dce: JUMPI 00000dcf: PUSH2 0x0dd7 00000dd2: DUP2 00000dd3: PUSH2 0x0b37 00000dd6: JUMP 00000dd7: JUMPDEST 00000dd8: PUSH2 0x0e00 00000ddb: JUMP 00000ddc: JUMPDEST 00000ddd: PUSH1 0x01 00000ddf: PUSH1 0xa0 00000de1: PUSH1 0x02 00000de3: EXP 00000de4: SUB 00000de5: DUP2 00000de6: AND 00000de7: PUSH1 0x00 00000de9: SWAP1 00000dea: DUP2 00000deb: MSTORE 00000dec: PUSH1 0x07 00000dee: PUSH1 0x20 00000df0: MSTORE 00000df1: PUSH1 0x40 00000df3: SWAP1 00000df4: KECCAK256 00000df5: SLOAD 00000df6: PUSH2 0x0dfe 00000df9: DUP3 00000dfa: PUSH2 0x0b37 00000dfd: JUMP 00000dfe: JUMPDEST 00000dff: ADD 00000e00: JUMPDEST 00000e01: SWAP2 00000e02: POP 00000e03: JUMPDEST 00000e04: POP 00000e05: SWAP2 00000e06: SWAP1 00000e07: POP 00000e08: JUMP 00000e09: JUMPDEST 00000e0a: ADDRESS 00000e0b: BALANCE 00000e0c: SWAP1 00000e0d: JUMP 00000e0e: JUMPDEST 00000e0f: PUSH1 0x01 00000e11: PUSH1 0xa0 00000e13: PUSH1 0x02 00000e15: EXP 00000e16: SUB 00000e17: AND 00000e18: PUSH1 0x00 00000e1a: SWAP1 00000e1b: DUP2 00000e1c: MSTORE 00000e1d: PUSH1 0x06 00000e1f: PUSH1 0x20 00000e21: MSTORE 00000e22: PUSH1 0x40 00000e24: SWAP1 00000e25: KECCAK256 00000e26: SLOAD 00000e27: SWAP1 00000e28: JUMP 00000e29: JUMPDEST 00000e2a: PUSH1 0x00 00000e2c: SLOAD 00000e2d: PUSH1 0x01 00000e2f: PUSH1 0xa0 00000e31: PUSH1 0x02 00000e33: EXP 00000e34: SUB 00000e35: AND 00000e36: CALLER 00000e37: EQ 00000e38: PUSH2 0x0e40 00000e3b: JUMPI 00000e3c: PUSH1 0x00 00000e3e: DUP1 00000e3f: REVERT 00000e40: JUMPDEST 00000e41: PUSH1 0x04 00000e43: SSTORE 00000e44: JUMP 00000e45: JUMPDEST 00000e46: PUSH1 0x00 00000e48: DUP1 00000e49: PUSH1 0x00 00000e4b: DUP1 00000e4c: PUSH1 0x0a 00000e4e: SLOAD 00000e4f: PUSH1 0x00 00000e51: EQ 00000e52: ISZERO 00000e53: PUSH2 0x0e63 00000e56: JUMPI 00000e57: PUSH5 0x199c82cc00 00000e5d: SWAP4 00000e5e: POP 00000e5f: PUSH2 0x0dba 00000e62: JUMP 00000e63: JUMPDEST 00000e64: PUSH2 0x0e74 00000e67: PUSH8 0x0de0b6b3a7640000 00000e70: PUSH2 0x1465 00000e73: JUMP 00000e74: JUMPDEST 00000e75: SWAP3 00000e76: POP 00000e77: PUSH2 0x0e81 00000e7a: DUP4 00000e7b: PUSH1 0x0a 00000e7d: PUSH2 0x13a4 00000e80: JUMP 00000e81: JUMPDEST 00000e82: SWAP2 00000e83: POP 00000e84: PUSH2 0x0db4 00000e87: DUP4 00000e88: DUP4 00000e89: PUSH2 0x138e 00000e8c: JUMP 00000e8d: JUMPDEST 00000e8e: PUSH1 0x00 00000e90: SLOAD 00000e91: PUSH1 0x01 00000e93: PUSH1 0xa0 00000e95: PUSH1 0x02 00000e97: EXP 00000e98: SUB 00000e99: AND 00000e9a: DUP2 00000e9b: JUMP 00000e9c: JUMPDEST 00000e9d: PUSH1 0x00 00000e9f: CALLER 00000ea0: PUSH2 0x0ea8 00000ea3: DUP2 00000ea4: PUSH2 0x0e0e 00000ea7: JUMP 00000ea8: JUMPDEST 00000ea9: SWAP2 00000eaa: POP 00000eab: JUMPDEST 00000eac: POP 00000ead: SWAP1 00000eae: JUMP 00000eaf: JUMPDEST 00000eb0: PUSH1 0x02 00000eb2: DUP1 00000eb3: SLOAD 00000eb4: PUSH1 0x40 00000eb6: DUP1 00000eb7: MLOAD 00000eb8: PUSH1 0x20 00000eba: PUSH1 0x01 00000ebc: DUP5 00000ebd: AND 00000ebe: ISZERO 00000ebf: PUSH2 0x0100 00000ec2: MUL 00000ec3: PUSH1 0x00 00000ec5: NOT 00000ec6: ADD 00000ec7: SWAP1 00000ec8: SWAP4 00000ec9: AND 00000eca: DUP5 00000ecb: SWAP1 00000ecc: DIV 00000ecd: PUSH1 0x1f 00000ecf: DUP2 00000ed0: ADD 00000ed1: DUP5 00000ed2: SWAP1 00000ed3: DIV 00000ed4: DUP5 00000ed5: MUL 00000ed6: DUP3 00000ed7: ADD 00000ed8: DUP5 00000ed9: ADD 00000eda: SWAP1 00000edb: SWAP3 00000edc: MSTORE 00000edd: DUP2 00000ede: DUP2 00000edf: MSTORE 00000ee0: SWAP3 00000ee1: SWAP2 00000ee2: DUP4 00000ee3: ADD 00000ee4: DUP3 00000ee5: DUP3 00000ee6: DUP1 00000ee7: ISZERO 00000ee8: PUSH2 0x0c13 00000eeb: JUMPI 00000eec: DUP1 00000eed: PUSH1 0x1f 00000eef: LT 00000ef0: PUSH2 0x0be8 00000ef3: JUMPI 00000ef4: PUSH2 0x0100 00000ef7: DUP1 00000ef8: DUP4 00000ef9: SLOAD 00000efa: DIV 00000efb: MUL 00000efc: DUP4 00000efd: MSTORE 00000efe: SWAP2 00000eff: PUSH1 0x20 00000f01: ADD 00000f02: SWAP2 00000f03: PUSH2 0x0c13 00000f06: JUMP 00000f07: JUMPDEST 00000f08: PUSH1 0x00 00000f0a: SLOAD 00000f0b: PUSH1 0x01 00000f0d: PUSH1 0xa0 00000f0f: PUSH1 0x02 00000f11: EXP 00000f12: SUB 00000f13: AND 00000f14: CALLER 00000f15: EQ 00000f16: PUSH2 0x0f1e 00000f19: JUMPI 00000f1a: PUSH1 0x00 00000f1c: DUP1 00000f1d: REVERT 00000f1e: JUMPDEST 00000f1f: PUSH1 0x0c 00000f21: DUP1 00000f22: SLOAD 00000f23: PUSH1 0xff 00000f25: NOT 00000f26: AND 00000f27: SWAP1 00000f28: SSTORE 00000f29: JUMP 00000f2a: JUMPDEST 00000f2b: PUSH1 0x00 00000f2d: DUP1 00000f2e: PUSH1 0x00 00000f30: DUP1 00000f31: PUSH1 0x00 00000f33: DUP1 00000f34: PUSH2 0x0f3b 00000f37: PUSH2 0x0e9c 00000f3a: JUMP 00000f3b: JUMPDEST 00000f3c: GT 00000f3d: PUSH2 0x0f45 00000f40: JUMPI 00000f41: PUSH1 0x00 00000f43: DUP1 00000f44: REVERT 00000f45: JUMPDEST 00000f46: PUSH1 0x0c 00000f48: SLOAD 00000f49: CALLER 00000f4a: SWAP5 00000f4b: POP 00000f4c: PUSH1 0xff 00000f4e: AND 00000f4f: ISZERO 00000f50: DUP1 00000f51: ISZERO 00000f52: PUSH2 0x0f73 00000f55: JUMPI 00000f56: POP 00000f57: PUSH1 0x01 00000f59: PUSH1 0xa0 00000f5b: PUSH1 0x02 00000f5d: EXP 00000f5e: SUB 00000f5f: DUP5 00000f60: AND 00000f61: PUSH1 0x00 00000f63: SWAP1 00000f64: DUP2 00000f65: MSTORE 00000f66: PUSH1 0x06 00000f68: PUSH1 0x20 00000f6a: MSTORE 00000f6b: PUSH1 0x40 00000f6d: SWAP1 00000f6e: KECCAK256 00000f6f: SLOAD 00000f70: DUP7 00000f71: GT 00000f72: ISZERO 00000f73: JUMPDEST 00000f74: ISZERO 00000f75: ISZERO 00000f76: PUSH2 0x0f7e 00000f79: JUMPI 00000f7a: PUSH1 0x00 00000f7c: DUP1 00000f7d: REVERT 00000f7e: JUMPDEST 00000f7f: PUSH1 0x00 00000f81: PUSH2 0x0f8a 00000f84: PUSH1 0x01 00000f86: PUSH2 0x0dc6 00000f89: JUMP 00000f8a: JUMPDEST 00000f8b: GT 00000f8c: ISZERO 00000f8d: PUSH2 0x0f98 00000f90: JUMPI 00000f91: PUSH2 0x0f98 00000f94: PUSH2 0x0c99 00000f97: JUMP 00000f98: JUMPDEST 00000f99: PUSH2 0x0fa3 00000f9c: DUP7 00000f9d: PUSH1 0x0a 00000f9f: PUSH2 0x13a4 00000fa2: JUMP 00000fa3: JUMPDEST 00000fa4: SWAP3 00000fa5: POP 00000fa6: PUSH2 0x0faf 00000fa9: DUP7 00000faa: DUP5 00000fab: PUSH2 0x13bb 00000fae: JUMP 00000faf: JUMPDEST 00000fb0: SWAP2 00000fb1: POP 00000fb2: PUSH2 0x0fba 00000fb5: DUP4 00000fb6: PUSH2 0x1465 00000fb9: JUMP 00000fba: JUMPDEST 00000fbb: SWAP1 00000fbc: POP 00000fbd: PUSH2 0x0fc8 00000fc0: PUSH1 0x0a 00000fc2: SLOAD 00000fc3: DUP5 00000fc4: PUSH2 0x13bb 00000fc7: JUMP 00000fc8: JUMPDEST 00000fc9: PUSH1 0x0a 00000fcb: SSTORE 00000fcc: PUSH1 0x01 00000fce: PUSH1 0xa0 00000fd0: PUSH1 0x02 00000fd2: EXP 00000fd3: SUB 00000fd4: DUP5 00000fd5: AND 00000fd6: PUSH1 0x00 00000fd8: SWAP1 00000fd9: DUP2 00000fda: MSTORE 00000fdb: PUSH1 0x06 00000fdd: PUSH1 0x20 00000fdf: MSTORE 00000fe0: PUSH1 0x40 00000fe2: SWAP1 00000fe3: KECCAK256 00000fe4: SLOAD 00000fe5: PUSH2 0x0fee 00000fe8: SWAP1 00000fe9: DUP8 00000fea: PUSH2 0x13bb 00000fed: JUMP 00000fee: JUMPDEST 00000fef: PUSH1 0x01 00000ff1: PUSH1 0xa0 00000ff3: PUSH1 0x02 00000ff5: EXP 00000ff6: SUB 00000ff7: DUP1 00000ff8: DUP7 00000ff9: AND 00000ffa: PUSH1 0x00 00000ffc: SWAP1 00000ffd: DUP2 00000ffe: MSTORE 00000fff: PUSH1 0x06 00001001: PUSH1 0x20 00001003: MSTORE 00001004: PUSH1 0x40 00001006: DUP1 00001007: DUP3 00001008: KECCAK256 00001009: SWAP4 0000100a: SWAP1 0000100b: SWAP4 0000100c: SSTORE 0000100d: SWAP1 0000100e: DUP10 0000100f: AND 00001010: DUP2 00001011: MSTORE 00001012: KECCAK256 00001013: SLOAD 00001014: PUSH2 0x101d 00001017: SWAP1 00001018: DUP4 00001019: PUSH2 0x138e 0000101c: JUMP 0000101d: JUMPDEST 0000101e: PUSH1 0x01 00001020: PUSH1 0xa0 00001022: PUSH1 0x02 00001024: EXP 00001025: SUB 00001026: DUP9 00001027: DUP2 00001028: AND 00001029: PUSH1 0x00 0000102b: DUP2 0000102c: DUP2 0000102d: MSTORE 0000102e: PUSH1 0x06 00001030: PUSH1 0x20 00001032: SWAP1 00001033: DUP2 00001034: MSTORE 00001035: PUSH1 0x40 00001037: DUP1 00001038: DUP4 00001039: KECCAK256 0000103a: SWAP6 0000103b: SWAP1 0000103c: SWAP6 0000103d: SSTORE 0000103e: PUSH1 0x0b 00001040: DUP1 00001041: SLOAD 00001042: SWAP5 00001043: DUP11 00001044: AND 00001045: DUP4 00001046: MSTORE 00001047: PUSH1 0x08 00001049: SWAP1 0000104a: SWAP2 0000104b: MSTORE 0000104c: DUP5 0000104d: DUP3 0000104e: KECCAK256 0000104f: DUP1 00001050: SLOAD 00001051: SWAP5 00001052: DUP13 00001053: MUL 00001054: SWAP1 00001055: SWAP5 00001056: SUB 00001057: SWAP1 00001058: SWAP4 00001059: SSTORE 0000105a: DUP3 0000105b: SLOAD 0000105c: SWAP2 0000105d: DUP2 0000105e: MSTORE 0000105f: SWAP3 00001060: SWAP1 00001061: SWAP3 00001062: KECCAK256 00001063: DUP1 00001064: SLOAD 00001065: SWAP3 00001066: DUP6 00001067: MUL 00001068: SWAP1 00001069: SWAP3 0000106a: ADD 0000106b: SWAP1 0000106c: SWAP2 0000106d: SSTORE 0000106e: SLOAD 0000106f: PUSH1 0x0a 00001071: SLOAD 00001072: PUSH2 0x1091 00001075: SWAP2 00001076: SWAP1 00001077: PUSH9 0x010000000000000000 00001081: DUP5 00001082: MUL 00001083: DUP2 00001084: ISZERO 00001085: ISZERO 00001086: PUSH2 0x108b 00001089: JUMPI 0000108a: INVALID 0000108b: JUMPDEST 0000108c: DIV 0000108d: PUSH2 0x138e 00001090: JUMP 00001091: JUMPDEST 00001092: PUSH1 0x0b 00001094: SSTORE 00001095: PUSH1 0x40 00001097: DUP1 00001098: MLOAD 00001099: DUP4 0000109a: DUP2 0000109b: MSTORE 0000109c: SWAP1 0000109d: MLOAD 0000109e: PUSH1 0x01 000010a0: PUSH1 0xa0 000010a2: PUSH1 0x02 000010a4: EXP 000010a5: SUB 000010a6: DUP1 000010a7: DUP11 000010a8: AND 000010a9: SWAP3 000010aa: SWAP1 000010ab: DUP8 000010ac: AND 000010ad: SWAP2 000010ae: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000010cf: SWAP2 000010d0: DUP2 000010d1: SWAP1 000010d2: SUB 000010d3: PUSH1 0x20 000010d5: ADD 000010d6: SWAP1 000010d7: LOG3 000010d8: POP 000010d9: PUSH1 0x01 000010db: SWAP7 000010dc: SWAP6 000010dd: POP 000010de: POP 000010df: POP 000010e0: POP 000010e1: POP 000010e2: POP 000010e3: JUMP 000010e4: JUMPDEST 000010e5: PUSH1 0x00 000010e7: SLOAD 000010e8: PUSH1 0x01 000010ea: PUSH1 0xa0 000010ec: PUSH1 0x02 000010ee: EXP 000010ef: SUB 000010f0: AND 000010f1: CALLER 000010f2: EQ 000010f3: PUSH2 0x10fb 000010f6: JUMPI 000010f7: PUSH1 0x00 000010f9: DUP1 000010fa: REVERT 000010fb: JUMPDEST 000010fc: DUP1 000010fd: MLOAD 000010fe: PUSH2 0x110e 00001101: SWAP1 00001102: PUSH1 0x02 00001104: SWAP1 00001105: PUSH1 0x20 00001107: DUP5 00001108: ADD 00001109: SWAP1 0000110a: PUSH2 0x1506 0000110d: JUMP 0000110e: JUMPDEST 0000110f: POP 00001110: POP 00001111: JUMP 00001112: JUMPDEST 00001113: PUSH1 0x00 00001115: SLOAD 00001116: PUSH1 0x01 00001118: PUSH1 0xa0 0000111a: PUSH1 0x02 0000111c: EXP 0000111d: SUB 0000111e: AND 0000111f: CALLER 00001120: EQ 00001121: PUSH2 0x1129 00001124: JUMPI 00001125: PUSH1 0x00 00001127: DUP1 00001128: REVERT 00001129: JUMPDEST 0000112a: DUP1 0000112b: MLOAD 0000112c: PUSH2 0x110e 0000112f: SWAP1 00001130: PUSH1 0x01 00001132: SWAP1 00001133: PUSH1 0x20 00001135: DUP5 00001136: ADD 00001137: SWAP1 00001138: PUSH2 0x1506 0000113b: JUMP 0000113c: JUMPDEST 0000113d: PUSH1 0x00 0000113f: DUP1 00001140: PUSH1 0x00 00001142: DUP1 00001143: PUSH1 0x00 00001145: DUP1 00001146: PUSH1 0x00 00001148: PUSH2 0x114f 0000114b: PUSH2 0x0e9c 0000114e: JUMP 0000114f: JUMPDEST 00001150: GT 00001151: PUSH2 0x1159 00001154: JUMPI 00001155: PUSH1 0x00 00001157: DUP1 00001158: REVERT 00001159: JUMPDEST 0000115a: CALLER 0000115b: PUSH1 0x00 0000115d: DUP2 0000115e: DUP2 0000115f: MSTORE 00001160: PUSH1 0x06 00001162: PUSH1 0x20 00001164: MSTORE 00001165: PUSH1 0x40 00001167: SWAP1 00001168: KECCAK256 00001169: SLOAD 0000116a: SWAP1 0000116b: SWAP7 0000116c: POP 0000116d: DUP8 0000116e: GT 0000116f: ISZERO 00001170: PUSH2 0x1178 00001173: JUMPI 00001174: PUSH1 0x00 00001176: DUP1 00001177: REVERT 00001178: JUMPDEST 00001179: DUP7 0000117a: SWAP5 0000117b: POP 0000117c: PUSH2 0x1184 0000117f: DUP6 00001180: PUSH2 0x1465 00001183: JUMP 00001184: JUMPDEST 00001185: SWAP4 00001186: POP 00001187: PUSH2 0x1191 0000118a: DUP5 0000118b: PUSH1 0x0a 0000118d: PUSH2 0x13a4 00001190: JUMP 00001191: JUMPDEST 00001192: SWAP3 00001193: POP 00001194: PUSH2 0x119d 00001197: DUP5 00001198: DUP5 00001199: PUSH2 0x13bb 0000119c: JUMP 0000119d: JUMPDEST 0000119e: SWAP2 0000119f: POP 000011a0: PUSH2 0x11ab 000011a3: PUSH1 0x0a 000011a5: SLOAD 000011a6: DUP7 000011a7: PUSH2 0x13bb 000011aa: JUMP 000011ab: JUMPDEST 000011ac: PUSH1 0x0a 000011ae: SSTORE 000011af: PUSH1 0x01 000011b1: PUSH1 0xa0 000011b3: PUSH1 0x02 000011b5: EXP 000011b6: SUB 000011b7: DUP7 000011b8: AND 000011b9: PUSH1 0x00 000011bb: SWAP1 000011bc: DUP2 000011bd: MSTORE 000011be: PUSH1 0x06 000011c0: PUSH1 0x20 000011c2: MSTORE 000011c3: PUSH1 0x40 000011c5: SWAP1 000011c6: KECCAK256 000011c7: SLOAD 000011c8: PUSH2 0x11d1 000011cb: SWAP1 000011cc: DUP7 000011cd: PUSH2 0x13bb 000011d0: JUMP 000011d1: JUMPDEST 000011d2: PUSH1 0x01 000011d4: PUSH1 0xa0 000011d6: PUSH1 0x02 000011d8: EXP 000011d9: SUB 000011da: DUP8 000011db: AND 000011dc: PUSH1 0x00 000011de: SWAP1 000011df: DUP2 000011e0: MSTORE 000011e1: PUSH1 0x06 000011e3: PUSH1 0x20 000011e5: SWAP1 000011e6: DUP2 000011e7: MSTORE 000011e8: PUSH1 0x40 000011ea: DUP1 000011eb: DUP4 000011ec: KECCAK256 000011ed: SWAP4 000011ee: SWAP1 000011ef: SWAP4 000011f0: SSTORE 000011f1: PUSH1 0x0b 000011f3: SLOAD 000011f4: PUSH1 0x08 000011f6: SWAP1 000011f7: SWAP2 000011f8: MSTORE 000011f9: SWAP2 000011fa: DUP2 000011fb: KECCAK256 000011fc: DUP1 000011fd: SLOAD 000011fe: SWAP3 000011ff: DUP9 00001200: MUL 00001201: PUSH9 0x010000000000000000 0000120b: DUP7 0000120c: MUL 0000120d: ADD 0000120e: SWAP3 0000120f: DUP4 00001210: SWAP1 00001211: SUB 00001212: SWAP1 00001213: SSTORE 00001214: PUSH1 0x0a 00001216: SLOAD 00001217: SWAP2 00001218: SWAP3 00001219: POP 0000121a: LT 0000121b: ISZERO 0000121c: PUSH2 0x1241 0000121f: JUMPI 00001220: PUSH2 0x123d 00001223: PUSH1 0x0b 00001225: SLOAD 00001226: PUSH1 0x0a 00001228: SLOAD 00001229: PUSH9 0x010000000000000000 00001233: DUP7 00001234: MUL 00001235: DUP2 00001236: ISZERO 00001237: ISZERO 00001238: PUSH2 0x108b 0000123b: JUMPI 0000123c: INVALID 0000123d: JUMPDEST 0000123e: PUSH1 0x0b 00001240: SSTORE 00001241: JUMPDEST 00001242: PUSH1 0x40 00001244: DUP1 00001245: MLOAD 00001246: DUP7 00001247: DUP2 00001248: MSTORE 00001249: PUSH1 0x20 0000124b: DUP2 0000124c: ADD 0000124d: DUP5 0000124e: SWAP1 0000124f: MSTORE 00001250: DUP2 00001251: MLOAD 00001252: PUSH1 0x01 00001254: PUSH1 0xa0 00001256: PUSH1 0x02 00001258: EXP 00001259: SUB 0000125a: DUP10 0000125b: AND 0000125c: SWAP3 0000125d: PUSH32 0xc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139 0000127e: SWAP3 0000127f: DUP3 00001280: SWAP1 00001281: SUB 00001282: ADD 00001283: SWAP1 00001284: LOG2 00001285: POP 00001286: POP 00001287: POP 00001288: POP 00001289: POP 0000128a: POP 0000128b: POP 0000128c: JUMP 0000128d: JUMPDEST 0000128e: CALLER 0000128f: PUSH1 0x00 00001291: DUP2 00001292: DUP2 00001293: MSTORE 00001294: PUSH1 0x06 00001296: PUSH1 0x20 00001298: MSTORE 00001299: PUSH1 0x40 0000129b: DUP2 0000129c: KECCAK256 0000129d: SLOAD 0000129e: SWAP1 0000129f: DUP2 000012a0: GT 000012a1: ISZERO 000012a2: PUSH2 0x12ae 000012a5: JUMPI 000012a6: PUSH2 0x12ae 000012a9: DUP2 000012aa: PUSH2 0x113c 000012ad: JUMP 000012ae: JUMPDEST 000012af: PUSH2 0x110e 000012b2: PUSH2 0x0c99 000012b5: JUMP 000012b6: JUMPDEST 000012b7: PUSH1 0x03 000012b9: SLOAD 000012ba: PUSH1 0x00 000012bc: SWAP1 000012bd: TIMESTAMP 000012be: LT 000012bf: ISZERO 000012c0: PUSH2 0x12c8 000012c3: JUMPI 000012c4: PUSH1 0x00 000012c6: DUP1 000012c7: REVERT 000012c8: JUMPDEST 000012c9: PUSH2 0x0e03 000012cc: CALLVALUE 000012cd: DUP4 000012ce: PUSH2 0x0562 000012d1: JUMP 000012d2: JUMPDEST 000012d3: PUSH1 0x03 000012d5: SLOAD 000012d6: DUP2 000012d7: JUMP 000012d8: JUMPDEST 000012d9: PUSH1 0x00 000012db: DUP1 000012dc: PUSH1 0x00 000012de: DUP1 000012df: PUSH2 0x12e8 000012e2: PUSH1 0x01 000012e4: PUSH2 0x0dc6 000012e7: JUMP 000012e8: JUMPDEST 000012e9: GT 000012ea: PUSH2 0x12f2 000012ed: JUMPI 000012ee: PUSH1 0x00 000012f0: DUP1 000012f1: REVERT 000012f2: JUMPDEST 000012f3: PUSH2 0x12fc 000012f6: PUSH1 0x00 000012f8: PUSH2 0x0dc6 000012fb: JUMP 000012fc: JUMPDEST 000012fd: CALLER 000012fe: PUSH1 0x00 00001300: DUP2 00001301: DUP2 00001302: MSTORE 00001303: PUSH1 0x08 00001305: PUSH1 0x20 00001307: SWAP1 00001308: DUP2 00001309: MSTORE 0000130a: PUSH1 0x40 0000130c: DUP1 0000130d: DUP4 0000130e: KECCAK256 0000130f: DUP1 00001310: SLOAD 00001311: PUSH9 0x010000000000000000 0000131b: DUP8 0000131c: MUL 0000131d: ADD 0000131e: SWAP1 0000131f: SSTORE 00001320: PUSH1 0x07 00001322: SWAP1 00001323: SWAP2 00001324: MSTORE 00001325: DUP2 00001326: KECCAK256 00001327: DUP1 00001328: SLOAD 00001329: SWAP1 0000132a: DUP3 0000132b: SWAP1 0000132c: SSTORE 0000132d: SWAP1 0000132e: SWAP3 0000132f: ADD 00001330: SWAP5 00001331: POP 00001332: SWAP3 00001333: POP 00001334: PUSH2 0x133e 00001337: SWAP1 00001338: DUP5 00001339: SWAP1 0000133a: PUSH2 0x0562 0000133d: JUMP 0000133e: JUMPDEST 0000133f: SWAP1 00001340: POP 00001341: DUP2 00001342: PUSH1 0x01 00001344: PUSH1 0xa0 00001346: PUSH1 0x02 00001348: EXP 00001349: SUB 0000134a: AND 0000134b: PUSH32 0xbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458 0000136c: DUP5 0000136d: DUP4 0000136e: PUSH1 0x40 00001370: MLOAD 00001371: DUP1 00001372: DUP4 00001373: DUP2 00001374: MSTORE 00001375: PUSH1 0x20 00001377: ADD 00001378: DUP3 00001379: DUP2 0000137a: MSTORE 0000137b: PUSH1 0x20 0000137d: ADD 0000137e: SWAP3 0000137f: POP 00001380: POP 00001381: POP 00001382: PUSH1 0x40 00001384: MLOAD 00001385: DUP1 00001386: SWAP2 00001387: SUB 00001388: SWAP1 00001389: LOG2 0000138a: POP 0000138b: POP 0000138c: POP 0000138d: JUMP 0000138e: JUMPDEST 0000138f: PUSH1 0x00 00001391: DUP3 00001392: DUP3 00001393: ADD 00001394: DUP4 00001395: DUP2 00001396: LT 00001397: ISZERO 00001398: PUSH2 0x139d 0000139b: JUMPI 0000139c: INVALID 0000139d: JUMPDEST 0000139e: SWAP4 0000139f: SWAP3 000013a0: POP 000013a1: POP 000013a2: POP 000013a3: JUMP 000013a4: JUMPDEST 000013a5: PUSH1 0x00 000013a7: DUP1 000013a8: DUP3 000013a9: DUP5 000013aa: DUP2 000013ab: ISZERO 000013ac: ISZERO 000013ad: PUSH2 0x13b2 000013b0: JUMPI 000013b1: INVALID 000013b2: JUMPDEST 000013b3: DIV 000013b4: SWAP5 000013b5: SWAP4 000013b6: POP 000013b7: POP 000013b8: POP 000013b9: POP 000013ba: JUMP 000013bb: JUMPDEST 000013bc: PUSH1 0x00 000013be: DUP3 000013bf: DUP3 000013c0: GT 000013c1: ISZERO 000013c2: PUSH2 0x13c7 000013c5: JUMPI 000013c6: INVALID 000013c7: JUMPDEST 000013c8: POP 000013c9: SWAP1 000013ca: SUB 000013cb: SWAP1 000013cc: JUMP 000013cd: JUMPDEST 000013ce: PUSH1 0x0a 000013d0: SLOAD 000013d1: PUSH1 0x00 000013d3: SWAP1 000013d4: PUSH13 0x01431e0fae6d7217caa0000000 000013e2: SWAP1 000013e3: DUP3 000013e4: SWAP1 000013e5: PUSH5 0x02540be400 000013eb: PUSH2 0x1452 000013ee: PUSH2 0x144c 000013f1: PUSH20 0x0380d4bd8a8678c1bb542c80deb4800000000000 00001406: DUP9 00001407: MUL 00001408: PUSH9 0x056bc75e2d63100000 00001412: PUSH1 0x02 00001414: DUP7 00001415: EXP 00001416: MUL 00001417: ADD 00001418: PUSH17 0x05e0a1fd2712875988becaad0000000000 0000142a: DUP6 0000142b: MUL 0000142c: ADD 0000142d: PUSH25 0x0197d4df19d605767337e9f14d3eec8920e400000000000000 00001447: ADD 00001448: PUSH2 0x14d1 0000144b: JUMP 0000144c: JUMPDEST 0000144d: DUP6 0000144e: PUSH2 0x13bb 00001451: JUMP 00001452: JUMPDEST 00001453: DUP2 00001454: ISZERO 00001455: ISZERO 00001456: PUSH2 0x145b 00001459: JUMPI 0000145a: INVALID 0000145b: JUMPDEST 0000145c: DIV 0000145d: SUB 0000145e: SWAP5 0000145f: SWAP4 00001460: POP 00001461: POP 00001462: POP 00001463: POP 00001464: JUMP 00001465: JUMPDEST 00001466: PUSH1 0x0a 00001468: SLOAD 00001469: PUSH1 0x00 0000146b: SWAP1 0000146c: PUSH8 0x0de0b6b3a7640000 00001475: DUP4 00001476: DUP2 00001477: ADD 00001478: SWAP2 00001479: DUP2 0000147a: ADD 0000147b: SWAP1 0000147c: DUP4 0000147d: SWAP1 0000147e: PUSH2 0x14be 00001481: PUSH5 0x14f46b0400 00001487: DUP3 00001488: DUP6 00001489: DIV 0000148a: PUSH5 0x02540be400 00001490: MUL 00001491: ADD 00001492: DUP8 00001493: MUL 00001494: PUSH1 0x02 00001496: DUP4 00001497: PUSH8 0x0de0b6b3a763ffff 000014a0: NOT 000014a1: DUP3 000014a2: DUP10 000014a3: EXP 000014a4: DUP12 000014a5: SWAP1 000014a6: SUB 000014a7: ADD 000014a8: DIV 000014a9: PUSH5 0x02540be400 000014af: MUL 000014b0: DUP2 000014b1: ISZERO 000014b2: ISZERO 000014b3: PUSH2 0x14b8 000014b6: JUMPI 000014b7: INVALID 000014b8: JUMPDEST 000014b9: DIV 000014ba: PUSH2 0x13bb 000014bd: JUMP 000014be: JUMPDEST 000014bf: DUP2 000014c0: ISZERO 000014c1: ISZERO 000014c2: PUSH2 0x14c7 000014c5: JUMPI 000014c6: INVALID 000014c7: JUMPDEST 000014c8: DIV 000014c9: SWAP6 000014ca: SWAP5 000014cb: POP 000014cc: POP 000014cd: POP 000014ce: POP 000014cf: POP 000014d0: JUMP 000014d1: JUMPDEST 000014d2: DUP1 000014d3: PUSH1 0x02 000014d5: PUSH1 0x01 000014d7: DUP3 000014d8: ADD 000014d9: DIV 000014da: JUMPDEST 000014db: DUP2 000014dc: DUP2 000014dd: LT 000014de: ISZERO 000014df: PUSH2 0x0e03 000014e2: JUMPI 000014e3: DUP1 000014e4: SWAP2 000014e5: POP 000014e6: PUSH1 0x02 000014e8: DUP2 000014e9: DUP3 000014ea: DUP6 000014eb: DUP2 000014ec: ISZERO 000014ed: ISZERO 000014ee: PUSH2 0x14f3 000014f1: JUMPI 000014f2: INVALID 000014f3: JUMPDEST 000014f4: DIV 000014f5: ADD 000014f6: DUP2 000014f7: ISZERO 000014f8: ISZERO 000014f9: PUSH2 0x14fe 000014fc: JUMPI 000014fd: INVALID 000014fe: JUMPDEST 000014ff: DIV 00001500: SWAP1 00001501: POP 00001502: PUSH2 0x14da 00001505: JUMP 00001506: JUMPDEST 00001507: DUP3 00001508: DUP1 00001509: SLOAD 0000150a: PUSH1 0x01 0000150c: DUP2 0000150d: PUSH1 0x01 0000150f: AND 00001510: ISZERO 00001511: PUSH2 0x0100 00001514: MUL 00001515: SUB 00001516: AND 00001517: PUSH1 0x02 00001519: SWAP1 0000151a: DIV 0000151b: SWAP1 0000151c: PUSH1 0x00 0000151e: MSTORE 0000151f: PUSH1 0x20 00001521: PUSH1 0x00 00001523: KECCAK256 00001524: SWAP1 00001525: PUSH1 0x1f 00001527: ADD 00001528: PUSH1 0x20 0000152a: SWAP1 0000152b: DIV 0000152c: DUP2 0000152d: ADD 0000152e: SWAP3 0000152f: DUP3 00001530: PUSH1 0x1f 00001532: LT 00001533: PUSH2 0x1547 00001536: JUMPI 00001537: DUP1 00001538: MLOAD 00001539: PUSH1 0xff 0000153b: NOT 0000153c: AND 0000153d: DUP4 0000153e: DUP1 0000153f: ADD 00001540: OR 00001541: DUP6 00001542: SSTORE 00001543: PUSH2 0x1574 00001546: JUMP 00001547: JUMPDEST 00001548: DUP3 00001549: DUP1 0000154a: ADD 0000154b: PUSH1 0x01 0000154d: ADD 0000154e: DUP6 0000154f: SSTORE 00001550: DUP3 00001551: ISZERO 00001552: PUSH2 0x1574 00001555: JUMPI 00001556: SWAP2 00001557: DUP3 00001558: ADD 00001559: JUMPDEST 0000155a: DUP3 0000155b: DUP2 0000155c: GT 0000155d: ISZERO 0000155e: PUSH2 0x1574 00001561: JUMPI 00001562: DUP3 00001563: MLOAD 00001564: DUP3 00001565: SSTORE 00001566: SWAP2 00001567: PUSH1 0x20 00001569: ADD 0000156a: SWAP2 0000156b: SWAP1 0000156c: PUSH1 0x01 0000156e: ADD 0000156f: SWAP1 00001570: PUSH2 0x1559 00001573: JUMP 00001574: JUMPDEST 00001575: POP 00001576: PUSH2 0x0eab 00001579: SWAP3 0000157a: PUSH2 0x0c4f 0000157d: SWAP3 0000157e: POP 0000157f: SWAP1 00001580: JUMPDEST 00001581: DUP1 00001582: DUP3 00001583: GT 00001584: ISZERO 00001585: PUSH2 0x0eab 00001588: JUMPI 00001589: PUSH1 0x00 0000158b: DUP2 0000158c: SSTORE 0000158d: PUSH1 0x01 0000158f: ADD 00001590: PUSH2 0x1580 00001593: JUMP 00001594: STOP 00001595: LOG1 00001596: PUSH6 0x627a7a723058 0000159d: KECCAK256 0000159e: ISZERO 0000159f: SWAP16 000015a0: PUSH4 0xefe0c7c6 000015a5: DELEGATECALL 000015a6: UNKNOWN(0x2D) 000015a7: PUSH16 0x34ee0531718c3bb16c521d951b926d35 000015b8: UNKNOWN(0xB2) 000015b9: BASEFEE 000015ba: SWAP6 000015bb: UNKNOWN(0xBC) 000015bc: UNKNOWN(0xAB) 000015bd: UNKNOWN(0xE9) 000015be: STOP 000015bf: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0x800a58afdfcf86694903d81f3fbc3838a6ef627d3ac7be2b845b768b8451c038
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x800a58afdfcf86694903d81f3fbc3838a6ef627d3ac7be2b845b768b8451c038",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x040d50d4",
"selector": "0x040d50d4",
"calldata_variants": [
"0x040d50d4",
"0x040d50d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x10d0ffdd",
"selector": "0x10d0ffdd",
"calldata_variants": [
"0x10d0ffdd",
"0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x22609373",
"selector": "0x22609373",
"calldata_variants": [
"0x22609373",
"0x226093730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x27defa1f",
"selector": "0x27defa1f",
"calldata_variants": [
"0x27defa1f",
"0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5541,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x87f376d648c7fa9b2d72098c63ef9c188f256768e173a6c0929b68ebc4a1f9d7
call_targets:
0x510f9a9642ac14ded91629a1aad552be4b24b5f0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x87f376d648c7fa9b2d72098c63ef9c188f256768e173a6c0929b68ebc4a1f9d7",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x510f9a9642ac14ded91629a1aad552be4b24b5f0"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x040d50d4",
"selector": "0x040d50d4",
"calldata_variants": [
"0x040d50d4",
"0x040d50d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x10d0ffdd",
"selector": "0x10d0ffdd",
"calldata_variants": [
"0x10d0ffdd",
"0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x22609373",
"selector": "0x22609373",
"calldata_variants": [
"0x22609373",
"0x226093730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x27defa1f",
"selector": "0x27defa1f",
"calldata_variants": [
"0x27defa1f",
"0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3346,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x87f376d648c7fa9b2d72098c63ef9c188f256768e173a6c0929b68ebc4a1f9d7
call_targets:
0x510f9a9642ac14ded91629a1aad552be4b24b5f0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x87f376d648c7fa9b2d72098c63ef9c188f256768e173a6c0929b68ebc4a1f9d7",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x510f9a9642ac14ded91629a1aad552be4b24b5f0"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x040d50d4",
"selector": "0x040d50d4",
"calldata_variants": [
"0x040d50d4",
"0x040d50d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x10d0ffdd",
"selector": "0x10d0ffdd",
"calldata_variants": [
"0x10d0ffdd",
"0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x22609373",
"selector": "0x22609373",
"calldata_variants": [
"0x22609373",
"0x226093730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x27defa1f",
"selector": "0x27defa1f",
"calldata_variants": [
"0x27defa1f",
"0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ccfd60b",
"selector": "0x3ccfd60b",
"calldata_variants": [
"0x3ccfd60b",
"0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3346,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| low | access_control | codex | Ambassador whitelist can be bypassed via forced ETH transfers | 65 | no | — |
viewevidence_json{
"evidence": "`antiEarlyWhale` checks `totalEthereumBalance() - _amountOfEthereum` to decide whether to enforce ambassador restrictions and flips `onlyAmbassadors` to false; `totalEthereumBalance()` returns `this.balance`, which can be increased via forced ETH.",
"locations": [
"contracts/Contract.sol:51",
"contracts/Contract.sol:400"
],
"recommendation": "Do not use `address(this).balance` to gate the ambassador phase. Track progress using internal accounting (e.g., cumulative purchases) or require an explicit admin action to end the phase; also consider a separate boolean that is not influenced by forced ETH.",
"exploit_scenario": "An attacker can deploy a helper contract and `selfdestruct` it to force-send ETH to `ETHPlatinum`, increasing `address(this).balance`. Once the pre-balance exceeds `ambassadorQuota_`, the next call to `purchaseTokens` hits the `else` branch, sets `onlyAmbassadors = false`, and allows non-ambassador purchases even though the whitelist period should still be active. This bypass can be done with minimal cost if the balance is already near the quota."
}
|