0a08cd3a-51b3-4d5e-80d8-1f93d022131c
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 |
|---|---|---|---|---|
| 30238 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 73612 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 73613 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 73614 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 73615 | capability.graph | complete | 1 / 3 | 1 week ago |
| 73616 | detector.run | complete | 1 / 3 | 1 week ago |
| 73617 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:702878] OpenAI Codex v0.77.0 (research preview)
[codex:702878] --------
[codex:702878] workdir: /tmp/codex-multi-xjawfxgf
[codex:702878] model: gpt-5.2-codex
[codex:702878] provider: openai
[codex:702878] approval: never
[codex:702878] sandbox: read-only
[codex:702878] reasoning effort: xhigh
[codex:702878] reasoning summaries: auto
[codex:702878] session id: 019b6228-fe9d-7930-b489-23f5b5819a73
[codex:702878] --------
[codex:702878] user
[codex:702878] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:702878] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:702878] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:702878]
[codex:702878] Scope rules:
[codex:702878] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:702878] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:702878]
[codex:702878] Output MUST be valid JSON matching the provided schema.
[codex:702878] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:702878] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:702878]
[codex:702878] Output constraints (IMPORTANT):
[codex:702878] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:702878] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:702878] mcp startup: no servers
[codex:702878]
[codex:702878] thinking
[codex:702878] **Preparing to read AUDIT_BUNDLE file**
[codex:702878] exec
[codex:702878] /bin/bash -lc ls in /tmp/codex-multi-xjawfxgf succeeded in 5ms:
[codex:702878] AUDIT_BUNDLE.txt
[codex:702878] codex-output-schema.json
[codex:702878] contracts
[codex:702878]
[codex:702878] thinking
[codex:702878] **Reading AUDIT_BUNDLE file**
[codex:702878] exec
[codex:702878] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-xjawfxgf succeeded in 5ms:
[codex:702878] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:702878]
[codex:702878] ================================================================================
[codex:702878] FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:702878] ================================================================================
[codex:702878] // SPDX-License-Identifier: MIT
[codex:702878] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)
[codex:702878]
[codex:702878] pragma solidity ^0.8.0;
[codex:702878]
[codex:702878] /**
[codex:702878] * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:702878] */
[codex:702878] interface IERC20 {
[codex:702878] /**
[codex:702878] * @dev Returns the amount of tokens in existence.
[codex:702878] */
[codex:702878] function totalSupply() external view returns (uint256);
[codex:702878]
[codex:702878] /**
[codex:702878]
[codex:702878] thinking
[codex:702878] **Analyzing Treasury contract for risks**
[codex:702878] exec
[codex:702878] /bin/bash -lc 'nl -ba contracts/contracts/treasury/Treasury.sol' in /tmp/codex-multi-xjawfxgf succeeded in 6ms:
[codex:702878] 1 // SPDX-License-Identifier: UNLICENSED
[codex:702878] 2 pragma solidity ^0.8.0;
[codex:702878] 3 pragma abicoder v2;
[codex:702878] 4
[codex:702878] 5 // OpenZeppelin v4
[codex:702878] 6 import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:702878] 7 import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:702878] 8 import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:702878] 9 import { AccessControlUpgradeable } from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
[codex:702878] 10
[codex:702878] 11 /**
[codex:702878] 12 * @title Treasury
[codex:702878] 13 * @author Railgun Contributors
[codex:702878] 14 * @notice Stores treasury funds for Railgun
[codex:702878] 15 */
[codex:702878] 16 contract Treasury is Initializable, AccessControlUpgradeable {
[codex:702878] 17 using SafeERC20 for IERC20;
[codex:702878] 18
[codex:702878] 19 bytes32 public constant TRANSFER_ROLE = keccak256("TRANSFER_ROLE");
[codex:702878] 20
[codex:702878]
[codex:702878] thinking
[codex:702878] **Summarizing initialization vulnerability analysis**
[codex:702878]
[codex:702878] I'll produce a clear JSON report highlighting a medium-severity upgradeability risk: if the proxy or implementation is deployed uninitialized, anyone can call the initializer to take over roles and drain funds. I'll detail the exploit scenario, recommendations, and evidence with precise file locations while keeping the output concise and compliant with the specified schema.
[codex:702878] codex
[codex:702878] {"no_findings":false,"summary":"One upgradeability/access-control risk: the initializer is callable by anyone if a proxy/implementation is deployed uninitialized, allowing a takeover and fund drains.","findings":[{"severity":"medium","category":"upgradeability","title":"Initializer allows takeover if proxy/implementation is left uninitialized","exploit_scenario":"If the proxy is deployed without calling `initializeTreasury` in the same transaction (or the implementation is deployed directly and left uninitialized), any address can call the initializer once, grant themselves `DEFAULT_ADMIN_ROLE` and `TRANSFER_ROLE`, then use `transferETH`/`transferERC20` to drain funds held by that contract instance.","recommendation":"Ensure the proxy is initialized atomically at deployment (e.g., pass initializer calldata to the proxy constructor). Add a constructor to the implementation that calls `_disableInitializers()` to lock it, and consider validating `_admin != address(0)` to avoid accidental lockout.","evidence":"`initializeTreasury` is `external initializer` and immediately grants admin and transfer roles to the caller-supplied `_admin`, with no access restriction or initializer lock in the implementation.","locations":["contracts/contracts/treasury/Treasury.sol:25","contracts/contracts/treasury/Treasury.sol:32","contracts/contracts/treasury/Treasury.sol:35"]}]}
[codex:702878] tokens used
[codex:702878] 15,614
[codex:702878] {"no_findings":false,"summary":"One upgradeability/access-control risk: the initializer is callable by anyone if a proxy/implementation is deployed uninitialized, allowing a takeover and fund drains.","findings":[{"severity":"medium","category":"upgradeability","title":"Initializer allows takeover if proxy/implementation is left uninitialized","exploit_scenario":"If the proxy is deployed without calling `initializeTreasury` in the same transaction (or the implementation is deployed directly and left uninitialized), any address can call the initializer once, grant themselves `DEFAULT_ADMIN_ROLE` and `TRANSFER_ROLE`, then use `transferETH`/`transferERC20` to drain funds held by that contract instance.","recommendation":"Ensure the proxy is initialized atomically at deployment (e.g., pass initializer calldata to the proxy constructor). Add a constructor to the implementation that calls `_disableInitializers()` to lock it, and consider validating `_admin != address(0)` to avoid accidental lockout.","evidence":"`initializeTreasury` is `external initializer` and immediately grants admin and transfer roles to the caller-supplied `_admin`, with no access restriction or initializer lock in the implementation.","locations":["contracts/contracts/treasury/Treasury.sol:25","contracts/contracts/treasury/Treasury.sol:32","contracts/contracts/treasury/Treasury.sol:35"]}]}
{
"codex": {
"ran_at": "2025-12-27T23:35:02.875143+00:00",
"returncode": 0
},
"summary": "One upgradeability/access-control risk: the initializer is callable by anyone if a proxy/implementation is deployed uninitialized, allowing a takeover and fund drains.",
"raw_final": {
"summary": "One upgradeability/access-control risk: the initializer is callable by anyone if a proxy/implementation is deployed uninitialized, allowing a takeover and fund drains.",
"findings": [
{
"title": "Initializer allows takeover if proxy/implementation is left uninitialized",
"category": "upgradeability",
"evidence": "`initializeTreasury` is `external initializer` and immediately grants admin and transfer roles to the caller-supplied `_admin`, with no access restriction or initializer lock in the implementation.",
"severity": "medium",
"locations": [
"contracts/contracts/treasury/Treasury.sol:25",
"contracts/contracts/treasury/Treasury.sol:32",
"contracts/contracts/treasury/Treasury.sol:35"
],
"recommendation": "Ensure the proxy is initialized atomically at deployment (e.g., pass initializer calldata to the proxy constructor). Add a constructor to the implementation that calls `_disableInitializers()` to lock it, and consider validating `_admin != address(0)` to avoid accidental lockout.",
"exploit_scenario": "If the proxy is deployed without calling `initializeTreasury` in the same transaction (or the implementation is deployed directly and left uninitialized), any address can call the initializer once, grant themselves `DEFAULT_ADMIN_ROLE` and `TRANSFER_ROLE`, then use `transferETH`/`transferERC20` to drain funds held by that contract instance."
}
],
"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 0x00b4 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x3ed086f4 00000019: GT 0000001a: PUSH2 0x006e 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x9db5dbe4 00000024: GT 00000025: PUSH2 0x004b 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0x9db5dbe4 0000002f: EQ 00000030: PUSH2 0x022a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xa217fddf 0000003a: EQ 0000003b: PUSH2 0x024a 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xd547741f 00000045: EQ 00000046: PUSH2 0x025f 00000049: JUMPI 0000004a: STOP 0000004b: JUMPDEST 0000004c: DUP1 0000004d: PUSH4 0x3ed086f4 00000052: EQ 00000053: PUSH2 0x01a4 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0x7b1a4909 0000005d: EQ 0000005e: PUSH2 0x01c4 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0x91d14854 00000068: EQ 00000069: PUSH2 0x01e4 0000006c: JUMPI 0000006d: STOP 0000006e: JUMPDEST 0000006f: DUP1 00000070: PUSH4 0x248a9ca3 00000075: GT 00000076: PUSH2 0x009c 00000079: JUMPI 0000007a: DUP1 0000007b: PUSH4 0x248a9ca3 00000080: EQ 00000081: PUSH2 0x0134 00000084: JUMPI 00000085: DUP1 00000086: PUSH4 0x2f2ff15d 0000008b: EQ 0000008c: PUSH2 0x0164 0000008f: JUMPI 00000090: DUP1 00000091: PUSH4 0x36568abe 00000096: EQ 00000097: PUSH2 0x0184 0000009a: JUMPI 0000009b: STOP 0000009c: JUMPDEST 0000009d: DUP1 0000009e: PUSH4 0x01ffc9a7 000000a3: EQ 000000a4: PUSH2 0x00bd 000000a7: JUMPI 000000a8: DUP1 000000a9: PUSH4 0x206b60f9 000000ae: EQ 000000af: PUSH2 0x00f2 000000b2: JUMPI 000000b3: STOP 000000b4: JUMPDEST 000000b5: CALLDATASIZE 000000b6: PUSH2 0x00bb 000000b9: JUMPI 000000ba: STOP 000000bb: JUMPDEST 000000bc: STOP 000000bd: JUMPDEST 000000be: CALLVALUE 000000bf: DUP1 000000c0: ISZERO 000000c1: PUSH2 0x00c9 000000c4: JUMPI 000000c5: PUSH1 0x00 000000c7: DUP1 000000c8: REVERT 000000c9: JUMPDEST 000000ca: POP 000000cb: PUSH2 0x00dd 000000ce: PUSH2 0x00d8 000000d1: CALLDATASIZE 000000d2: PUSH1 0x04 000000d4: PUSH2 0x0e27 000000d7: JUMP 000000d8: JUMPDEST 000000d9: PUSH2 0x027f 000000dc: JUMP 000000dd: JUMPDEST 000000de: PUSH1 0x40 000000e0: MLOAD 000000e1: SWAP1 000000e2: ISZERO 000000e3: ISZERO 000000e4: DUP2 000000e5: MSTORE 000000e6: PUSH1 0x20 000000e8: ADD 000000e9: JUMPDEST 000000ea: PUSH1 0x40 000000ec: MLOAD 000000ed: DUP1 000000ee: SWAP2 000000ef: SUB 000000f0: SWAP1 000000f1: RETURN 000000f2: JUMPDEST 000000f3: CALLVALUE 000000f4: DUP1 000000f5: ISZERO 000000f6: PUSH2 0x00fe 000000f9: JUMPI 000000fa: PUSH1 0x00 000000fc: DUP1 000000fd: REVERT 000000fe: JUMPDEST 000000ff: POP 00000100: PUSH2 0x0126 00000103: PUSH32 0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c 00000124: DUP2 00000125: JUMP 00000126: JUMPDEST 00000127: PUSH1 0x40 00000129: MLOAD 0000012a: SWAP1 0000012b: DUP2 0000012c: MSTORE 0000012d: PUSH1 0x20 0000012f: ADD 00000130: PUSH2 0x00e9 00000133: JUMP 00000134: JUMPDEST 00000135: CALLVALUE 00000136: DUP1 00000137: ISZERO 00000138: PUSH2 0x0140 0000013b: JUMPI 0000013c: PUSH1 0x00 0000013e: DUP1 0000013f: REVERT 00000140: JUMPDEST 00000141: POP 00000142: PUSH2 0x0126 00000145: PUSH2 0x014f 00000148: CALLDATASIZE 00000149: PUSH1 0x04 0000014b: PUSH2 0x0e69 0000014e: JUMP 0000014f: JUMPDEST 00000150: PUSH1 0x00 00000152: SWAP1 00000153: DUP2 00000154: MSTORE 00000155: PUSH1 0x65 00000157: PUSH1 0x20 00000159: MSTORE 0000015a: PUSH1 0x40 0000015c: SWAP1 0000015d: KECCAK256 0000015e: PUSH1 0x01 00000160: ADD 00000161: SLOAD 00000162: SWAP1 00000163: JUMP 00000164: JUMPDEST 00000165: CALLVALUE 00000166: DUP1 00000167: ISZERO 00000168: PUSH2 0x0170 0000016b: JUMPI 0000016c: PUSH1 0x00 0000016e: DUP1 0000016f: REVERT 00000170: JUMPDEST 00000171: POP 00000172: PUSH2 0x00bb 00000175: PUSH2 0x017f 00000178: CALLDATASIZE 00000179: PUSH1 0x04 0000017b: PUSH2 0x0e9a 0000017e: JUMP 0000017f: JUMPDEST 00000180: PUSH2 0x0318 00000183: JUMP 00000184: JUMPDEST 00000185: CALLVALUE 00000186: DUP1 00000187: ISZERO 00000188: PUSH2 0x0190 0000018b: JUMPI 0000018c: PUSH1 0x00 0000018e: DUP1 0000018f: REVERT 00000190: JUMPDEST 00000191: POP 00000192: PUSH2 0x00bb 00000195: PUSH2 0x019f 00000198: CALLDATASIZE 00000199: PUSH1 0x04 0000019b: PUSH2 0x0e9a 0000019e: JUMP 0000019f: JUMPDEST 000001a0: PUSH2 0x0343 000001a3: JUMP 000001a4: JUMPDEST 000001a5: CALLVALUE 000001a6: DUP1 000001a7: ISZERO 000001a8: PUSH2 0x01b0 000001ab: JUMPI 000001ac: PUSH1 0x00 000001ae: DUP1 000001af: REVERT 000001b0: JUMPDEST 000001b1: POP 000001b2: PUSH2 0x00bb 000001b5: PUSH2 0x01bf 000001b8: CALLDATASIZE 000001b9: PUSH1 0x04 000001bb: PUSH2 0x0eca 000001be: JUMP 000001bf: JUMPDEST 000001c0: PUSH2 0x03d4 000001c3: JUMP 000001c4: JUMPDEST 000001c5: CALLVALUE 000001c6: DUP1 000001c7: ISZERO 000001c8: PUSH2 0x01d0 000001cb: JUMPI 000001cc: PUSH1 0x00 000001ce: DUP1 000001cf: REVERT 000001d0: JUMPDEST 000001d1: POP 000001d2: PUSH2 0x00bb 000001d5: PUSH2 0x01df 000001d8: CALLDATASIZE 000001d9: PUSH1 0x04 000001db: PUSH2 0x0ee7 000001de: JUMP 000001df: JUMPDEST 000001e0: PUSH2 0x04d9 000001e3: JUMP 000001e4: JUMPDEST 000001e5: CALLVALUE 000001e6: DUP1 000001e7: ISZERO 000001e8: PUSH2 0x01f0 000001eb: JUMPI 000001ec: PUSH1 0x00 000001ee: DUP1 000001ef: REVERT 000001f0: JUMPDEST 000001f1: POP 000001f2: PUSH2 0x00dd 000001f5: PUSH2 0x01ff 000001f8: CALLDATASIZE 000001f9: PUSH1 0x04 000001fb: PUSH2 0x0e9a 000001fe: JUMP 000001ff: JUMPDEST 00000200: PUSH1 0x00 00000202: SWAP2 00000203: DUP3 00000204: MSTORE 00000205: PUSH1 0x65 00000207: PUSH1 0x20 00000209: SWAP1 0000020a: DUP2 0000020b: MSTORE 0000020c: PUSH1 0x40 0000020e: DUP1 0000020f: DUP5 00000210: KECCAK256 00000211: PUSH1 0x01 00000213: PUSH1 0x01 00000215: PUSH1 0xa0 00000217: SHL 00000218: SUB 00000219: SWAP4 0000021a: SWAP1 0000021b: SWAP4 0000021c: AND 0000021d: DUP5 0000021e: MSTORE 0000021f: SWAP2 00000220: SWAP1 00000221: MSTORE 00000222: SWAP1 00000223: KECCAK256 00000224: SLOAD 00000225: PUSH1 0xff 00000227: AND 00000228: SWAP1 00000229: JUMP 0000022a: JUMPDEST 0000022b: CALLVALUE 0000022c: DUP1 0000022d: ISZERO 0000022e: PUSH2 0x0236 00000231: JUMPI 00000232: PUSH1 0x00 00000234: DUP1 00000235: REVERT 00000236: JUMPDEST 00000237: POP 00000238: PUSH2 0x00bb 0000023b: PUSH2 0x0245 0000023e: CALLDATASIZE 0000023f: PUSH1 0x04 00000241: PUSH2 0x0f13 00000244: JUMP 00000245: JUMPDEST 00000246: PUSH2 0x060f 00000249: JUMP 0000024a: JUMPDEST 0000024b: CALLVALUE 0000024c: DUP1 0000024d: ISZERO 0000024e: PUSH2 0x0256 00000251: JUMPI 00000252: PUSH1 0x00 00000254: DUP1 00000255: REVERT 00000256: JUMPDEST 00000257: POP 00000258: PUSH2 0x0126 0000025b: PUSH1 0x00 0000025d: DUP2 0000025e: JUMP 0000025f: JUMPDEST 00000260: CALLVALUE 00000261: DUP1 00000262: ISZERO 00000263: PUSH2 0x026b 00000266: JUMPI 00000267: PUSH1 0x00 00000269: DUP1 0000026a: REVERT 0000026b: JUMPDEST 0000026c: POP 0000026d: PUSH2 0x00bb 00000270: PUSH2 0x027a 00000273: CALLDATASIZE 00000274: PUSH1 0x04 00000276: PUSH2 0x0e9a 00000279: JUMP 0000027a: JUMPDEST 0000027b: PUSH2 0x06b0 0000027e: JUMP 0000027f: JUMPDEST 00000280: PUSH1 0x00 00000282: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000002a3: DUP3 000002a4: AND 000002a5: PUSH32 0x7965db0b00000000000000000000000000000000000000000000000000000000 000002c6: EQ 000002c7: DUP1 000002c8: PUSH2 0x0312 000002cb: JUMPI 000002cc: POP 000002cd: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 000002ee: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000030f: DUP4 00000310: AND 00000311: EQ 00000312: JUMPDEST 00000313: SWAP3 00000314: SWAP2 00000315: POP 00000316: POP 00000317: JUMP 00000318: JUMPDEST 00000319: PUSH1 0x00 0000031b: DUP3 0000031c: DUP2 0000031d: MSTORE 0000031e: PUSH1 0x65 00000320: PUSH1 0x20 00000322: MSTORE 00000323: PUSH1 0x40 00000325: SWAP1 00000326: KECCAK256 00000327: PUSH1 0x01 00000329: ADD 0000032a: SLOAD 0000032b: PUSH2 0x0334 0000032e: DUP2 0000032f: CALLER 00000330: PUSH2 0x06d6 00000333: JUMP 00000334: JUMPDEST 00000335: PUSH2 0x033e 00000338: DUP4 00000339: DUP4 0000033a: PUSH2 0x0756 0000033d: JUMP 0000033e: JUMPDEST 0000033f: POP 00000340: POP 00000341: POP 00000342: JUMP 00000343: JUMPDEST 00000344: PUSH1 0x01 00000346: PUSH1 0x01 00000348: PUSH1 0xa0 0000034a: SHL 0000034b: SUB 0000034c: DUP2 0000034d: AND 0000034e: CALLER 0000034f: EQ 00000350: PUSH2 0x03c6 00000353: JUMPI 00000354: PUSH1 0x40 00000356: MLOAD 00000357: PUSH3 0x461bcd 0000035b: PUSH1 0xe5 0000035d: SHL 0000035e: DUP2 0000035f: MSTORE 00000360: PUSH1 0x20 00000362: PUSH1 0x04 00000364: DUP3 00000365: ADD 00000366: MSTORE 00000367: PUSH1 0x2f 00000369: PUSH1 0x24 0000036b: DUP3 0000036c: ADD 0000036d: MSTORE 0000036e: PUSH32 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365 0000038f: PUSH1 0x44 00000391: DUP3 00000392: ADD 00000393: MSTORE 00000394: PUSH32 0x20726f6c657320666f722073656c660000000000000000000000000000000000 000003b5: PUSH1 0x64 000003b7: DUP3 000003b8: ADD 000003b9: MSTORE 000003ba: PUSH1 0x84 000003bc: ADD 000003bd: JUMPDEST 000003be: PUSH1 0x40 000003c0: MLOAD 000003c1: DUP1 000003c2: SWAP2 000003c3: SUB 000003c4: SWAP1 000003c5: REVERT 000003c6: JUMPDEST 000003c7: PUSH2 0x03d0 000003ca: DUP3 000003cb: DUP3 000003cc: PUSH2 0x07f8 000003cf: JUMP 000003d0: JUMPDEST 000003d1: POP 000003d2: POP 000003d3: JUMP 000003d4: JUMPDEST 000003d5: PUSH1 0x00 000003d7: SLOAD 000003d8: PUSH2 0x0100 000003db: SWAP1 000003dc: DIV 000003dd: PUSH1 0xff 000003df: AND 000003e0: PUSH2 0x03ef 000003e3: JUMPI 000003e4: PUSH1 0x00 000003e6: SLOAD 000003e7: PUSH1 0xff 000003e9: AND 000003ea: ISZERO 000003eb: PUSH2 0x03f3 000003ee: JUMP 000003ef: JUMPDEST 000003f0: ADDRESS 000003f1: EXTCODESIZE 000003f2: ISZERO 000003f3: JUMPDEST 000003f4: PUSH2 0x0465 000003f7: JUMPI 000003f8: PUSH1 0x40 000003fa: MLOAD 000003fb: PUSH3 0x461bcd 000003ff: PUSH1 0xe5 00000401: SHL 00000402: DUP2 00000403: MSTORE 00000404: PUSH1 0x20 00000406: PUSH1 0x04 00000408: DUP3 00000409: ADD 0000040a: MSTORE 0000040b: PUSH1 0x2e 0000040d: PUSH1 0x24 0000040f: DUP3 00000410: ADD 00000411: MSTORE 00000412: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00000433: PUSH1 0x44 00000435: DUP3 00000436: ADD 00000437: MSTORE 00000438: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 00000459: PUSH1 0x64 0000045b: DUP3 0000045c: ADD 0000045d: MSTORE 0000045e: PUSH1 0x84 00000460: ADD 00000461: PUSH2 0x03bd 00000464: JUMP 00000465: JUMPDEST 00000466: PUSH1 0x00 00000468: SLOAD 00000469: PUSH2 0x0100 0000046c: SWAP1 0000046d: DIV 0000046e: PUSH1 0xff 00000470: AND 00000471: ISZERO 00000472: DUP1 00000473: ISZERO 00000474: PUSH2 0x0487 00000477: JUMPI 00000478: PUSH1 0x00 0000047a: DUP1 0000047b: SLOAD 0000047c: PUSH2 0xffff 0000047f: NOT 00000480: AND 00000481: PUSH2 0x0101 00000484: OR 00000485: SWAP1 00000486: SSTORE 00000487: JUMPDEST 00000488: PUSH2 0x048f 0000048b: PUSH2 0x087b 0000048e: JUMP 0000048f: JUMPDEST 00000490: PUSH2 0x049a 00000493: PUSH1 0x00 00000495: DUP4 00000496: PUSH2 0x0756 00000499: JUMP 0000049a: JUMPDEST 0000049b: PUSH2 0x04c4 0000049e: PUSH32 0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c 000004bf: DUP4 000004c0: PUSH2 0x0756 000004c3: JUMP 000004c4: JUMPDEST 000004c5: DUP1 000004c6: ISZERO 000004c7: PUSH2 0x03d0 000004ca: JUMPI 000004cb: PUSH1 0x00 000004cd: DUP1 000004ce: SLOAD 000004cf: PUSH2 0xff00 000004d2: NOT 000004d3: AND 000004d4: SWAP1 000004d5: SSTORE 000004d6: POP 000004d7: POP 000004d8: JUMP 000004d9: JUMPDEST 000004da: PUSH32 0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c 000004fb: PUSH2 0x0504 000004fe: DUP2 000004ff: CALLER 00000500: PUSH2 0x06d6 00000503: JUMP 00000504: JUMPDEST 00000505: PUSH1 0x01 00000507: PUSH1 0x01 00000509: PUSH1 0xa0 0000050b: SHL 0000050c: SUB 0000050d: DUP4 0000050e: AND 0000050f: PUSH2 0x0566 00000512: JUMPI 00000513: PUSH1 0x40 00000515: MLOAD 00000516: PUSH3 0x461bcd 0000051a: PUSH1 0xe5 0000051c: SHL 0000051d: DUP2 0000051e: MSTORE 0000051f: PUSH1 0x20 00000521: PUSH1 0x04 00000523: DUP3 00000524: ADD 00000525: MSTORE 00000526: PUSH1 0x24 00000528: DUP1 00000529: DUP3 0000052a: ADD 0000052b: MSTORE 0000052c: PUSH32 0x54726561737572793a2050726576656e74696e67206163636964656e74616c20 0000054d: PUSH1 0x44 0000054f: DUP3 00000550: ADD 00000551: MSTORE 00000552: PUSH4 0x313ab937 00000557: PUSH1 0xe1 00000559: SHL 0000055a: PUSH1 0x64 0000055c: DUP3 0000055d: ADD 0000055e: MSTORE 0000055f: PUSH1 0x84 00000561: ADD 00000562: PUSH2 0x03bd 00000565: JUMP 00000566: JUMPDEST 00000567: PUSH1 0x00 00000569: DUP4 0000056a: PUSH1 0x01 0000056c: PUSH1 0x01 0000056e: PUSH1 0xa0 00000570: SHL 00000571: SUB 00000572: AND 00000573: DUP4 00000574: PUSH1 0x40 00000576: MLOAD 00000577: PUSH1 0x00 00000579: PUSH1 0x40 0000057b: MLOAD 0000057c: DUP1 0000057d: DUP4 0000057e: SUB 0000057f: DUP2 00000580: DUP6 00000581: DUP8 00000582: GAS 00000583: CALL 00000584: SWAP3 00000585: POP 00000586: POP 00000587: POP 00000588: RETURNDATASIZE 00000589: DUP1 0000058a: PUSH1 0x00 0000058c: DUP2 0000058d: EQ 0000058e: PUSH2 0x05b3 00000591: JUMPI 00000592: PUSH1 0x40 00000594: MLOAD 00000595: SWAP2 00000596: POP 00000597: PUSH1 0x1f 00000599: NOT 0000059a: PUSH1 0x3f 0000059c: RETURNDATASIZE 0000059d: ADD 0000059e: AND 0000059f: DUP3 000005a0: ADD 000005a1: PUSH1 0x40 000005a3: MSTORE 000005a4: RETURNDATASIZE 000005a5: DUP3 000005a6: MSTORE 000005a7: RETURNDATASIZE 000005a8: PUSH1 0x00 000005aa: PUSH1 0x20 000005ac: DUP5 000005ad: ADD 000005ae: RETURNDATACOPY 000005af: PUSH2 0x05b8 000005b2: JUMP 000005b3: JUMPDEST 000005b4: PUSH1 0x60 000005b6: SWAP2 000005b7: POP 000005b8: JUMPDEST 000005b9: POP 000005ba: POP 000005bb: SWAP1 000005bc: POP 000005bd: DUP1 000005be: PUSH2 0x0609 000005c1: JUMPI 000005c2: PUSH1 0x40 000005c4: MLOAD 000005c5: PUSH3 0x461bcd 000005c9: PUSH1 0xe5 000005cb: SHL 000005cc: DUP2 000005cd: MSTORE 000005ce: PUSH1 0x20 000005d0: PUSH1 0x04 000005d2: DUP3 000005d3: ADD 000005d4: MSTORE 000005d5: PUSH1 0x14 000005d7: PUSH1 0x24 000005d9: DUP3 000005da: ADD 000005db: MSTORE 000005dc: PUSH32 0x4661696c656420746f2073656e64204574686572000000000000000000000000 000005fd: PUSH1 0x44 000005ff: DUP3 00000600: ADD 00000601: MSTORE 00000602: PUSH1 0x64 00000604: ADD 00000605: PUSH2 0x03bd 00000608: JUMP 00000609: JUMPDEST 0000060a: POP 0000060b: POP 0000060c: POP 0000060d: POP 0000060e: JUMP 0000060f: JUMPDEST 00000610: PUSH32 0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c 00000631: PUSH2 0x063a 00000634: DUP2 00000635: CALLER 00000636: PUSH2 0x06d6 00000639: JUMP 0000063a: JUMPDEST 0000063b: PUSH1 0x01 0000063d: PUSH1 0x01 0000063f: PUSH1 0xa0 00000641: SHL 00000642: SUB 00000643: DUP4 00000644: AND 00000645: PUSH2 0x069c 00000648: JUMPI 00000649: PUSH1 0x40 0000064b: MLOAD 0000064c: PUSH3 0x461bcd 00000650: PUSH1 0xe5 00000652: SHL 00000653: DUP2 00000654: MSTORE 00000655: PUSH1 0x20 00000657: PUSH1 0x04 00000659: DUP3 0000065a: ADD 0000065b: MSTORE 0000065c: PUSH1 0x24 0000065e: DUP1 0000065f: DUP3 00000660: ADD 00000661: MSTORE 00000662: PUSH32 0x54726561737572793a2050726576656e74696e67206163636964656e74616c20 00000683: PUSH1 0x44 00000685: DUP3 00000686: ADD 00000687: MSTORE 00000688: PUSH4 0x313ab937 0000068d: PUSH1 0xe1 0000068f: SHL 00000690: PUSH1 0x64 00000692: DUP3 00000693: ADD 00000694: MSTORE 00000695: PUSH1 0x84 00000697: ADD 00000698: PUSH2 0x03bd 0000069b: JUMP 0000069c: JUMPDEST 0000069d: PUSH2 0x0609 000006a0: PUSH1 0x01 000006a2: PUSH1 0x01 000006a4: PUSH1 0xa0 000006a6: SHL 000006a7: SUB 000006a8: DUP6 000006a9: AND 000006aa: DUP5 000006ab: DUP5 000006ac: PUSH2 0x08fa 000006af: JUMP 000006b0: JUMPDEST 000006b1: PUSH1 0x00 000006b3: DUP3 000006b4: DUP2 000006b5: MSTORE 000006b6: PUSH1 0x65 000006b8: PUSH1 0x20 000006ba: MSTORE 000006bb: PUSH1 0x40 000006bd: SWAP1 000006be: KECCAK256 000006bf: PUSH1 0x01 000006c1: ADD 000006c2: SLOAD 000006c3: PUSH2 0x06cc 000006c6: DUP2 000006c7: CALLER 000006c8: PUSH2 0x06d6 000006cb: JUMP 000006cc: JUMPDEST 000006cd: PUSH2 0x033e 000006d0: DUP4 000006d1: DUP4 000006d2: PUSH2 0x07f8 000006d5: JUMP 000006d6: JUMPDEST 000006d7: PUSH1 0x00 000006d9: DUP3 000006da: DUP2 000006db: MSTORE 000006dc: PUSH1 0x65 000006de: PUSH1 0x20 000006e0: SWAP1 000006e1: DUP2 000006e2: MSTORE 000006e3: PUSH1 0x40 000006e5: DUP1 000006e6: DUP4 000006e7: KECCAK256 000006e8: PUSH1 0x01 000006ea: PUSH1 0x01 000006ec: PUSH1 0xa0 000006ee: SHL 000006ef: SUB 000006f0: DUP6 000006f1: AND 000006f2: DUP5 000006f3: MSTORE 000006f4: SWAP1 000006f5: SWAP2 000006f6: MSTORE 000006f7: SWAP1 000006f8: KECCAK256 000006f9: SLOAD 000006fa: PUSH1 0xff 000006fc: AND 000006fd: PUSH2 0x03d0 00000700: JUMPI 00000701: PUSH2 0x0714 00000704: DUP2 00000705: PUSH1 0x01 00000707: PUSH1 0x01 00000709: PUSH1 0xa0 0000070b: SHL 0000070c: SUB 0000070d: AND 0000070e: PUSH1 0x14 00000710: PUSH2 0x097a 00000713: JUMP 00000714: JUMPDEST 00000715: PUSH2 0x071f 00000718: DUP4 00000719: PUSH1 0x20 0000071b: PUSH2 0x097a 0000071e: JUMP 0000071f: JUMPDEST 00000720: PUSH1 0x40 00000722: MLOAD 00000723: PUSH1 0x20 00000725: ADD 00000726: PUSH2 0x0730 00000729: SWAP3 0000072a: SWAP2 0000072b: SWAP1 0000072c: PUSH2 0x0f80 0000072f: JUMP 00000730: JUMPDEST 00000731: PUSH1 0x40 00000733: DUP1 00000734: MLOAD 00000735: PUSH1 0x1f 00000737: NOT 00000738: DUP2 00000739: DUP5 0000073a: SUB 0000073b: ADD 0000073c: DUP2 0000073d: MSTORE 0000073e: SWAP1 0000073f: DUP3 00000740: SWAP1 00000741: MSTORE 00000742: PUSH3 0x461bcd 00000746: PUSH1 0xe5 00000748: SHL 00000749: DUP3 0000074a: MSTORE 0000074b: PUSH2 0x03bd 0000074e: SWAP2 0000074f: PUSH1 0x04 00000751: ADD 00000752: PUSH2 0x1001 00000755: JUMP 00000756: JUMPDEST 00000757: PUSH1 0x00 00000759: DUP3 0000075a: DUP2 0000075b: MSTORE 0000075c: PUSH1 0x65 0000075e: PUSH1 0x20 00000760: SWAP1 00000761: DUP2 00000762: MSTORE 00000763: PUSH1 0x40 00000765: DUP1 00000766: DUP4 00000767: KECCAK256 00000768: PUSH1 0x01 0000076a: PUSH1 0x01 0000076c: PUSH1 0xa0 0000076e: SHL 0000076f: SUB 00000770: DUP6 00000771: AND 00000772: DUP5 00000773: MSTORE 00000774: SWAP1 00000775: SWAP2 00000776: MSTORE 00000777: SWAP1 00000778: KECCAK256 00000779: SLOAD 0000077a: PUSH1 0xff 0000077c: AND 0000077d: PUSH2 0x03d0 00000780: JUMPI 00000781: PUSH1 0x00 00000783: DUP3 00000784: DUP2 00000785: MSTORE 00000786: PUSH1 0x65 00000788: PUSH1 0x20 0000078a: SWAP1 0000078b: DUP2 0000078c: MSTORE 0000078d: PUSH1 0x40 0000078f: DUP1 00000790: DUP4 00000791: KECCAK256 00000792: PUSH1 0x01 00000794: PUSH1 0x01 00000796: PUSH1 0xa0 00000798: SHL 00000799: SUB 0000079a: DUP6 0000079b: AND 0000079c: DUP5 0000079d: MSTORE 0000079e: SWAP1 0000079f: SWAP2 000007a0: MSTORE 000007a1: SWAP1 000007a2: KECCAK256 000007a3: DUP1 000007a4: SLOAD 000007a5: PUSH1 0xff 000007a7: NOT 000007a8: AND 000007a9: PUSH1 0x01 000007ab: OR 000007ac: SWAP1 000007ad: SSTORE 000007ae: PUSH2 0x07b4 000007b1: CALLER 000007b2: SWAP1 000007b3: JUMP 000007b4: JUMPDEST 000007b5: PUSH1 0x01 000007b7: PUSH1 0x01 000007b9: PUSH1 0xa0 000007bb: SHL 000007bc: SUB 000007bd: AND 000007be: DUP2 000007bf: PUSH1 0x01 000007c1: PUSH1 0x01 000007c3: PUSH1 0xa0 000007c5: SHL 000007c6: SUB 000007c7: AND 000007c8: DUP4 000007c9: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 000007ea: PUSH1 0x40 000007ec: MLOAD 000007ed: PUSH1 0x40 000007ef: MLOAD 000007f0: DUP1 000007f1: SWAP2 000007f2: SUB 000007f3: SWAP1 000007f4: LOG4 000007f5: POP 000007f6: POP 000007f7: JUMP 000007f8: JUMPDEST 000007f9: PUSH1 0x00 000007fb: DUP3 000007fc: DUP2 000007fd: MSTORE 000007fe: PUSH1 0x65 00000800: PUSH1 0x20 00000802: SWAP1 00000803: DUP2 00000804: MSTORE 00000805: PUSH1 0x40 00000807: DUP1 00000808: DUP4 00000809: KECCAK256 0000080a: PUSH1 0x01 0000080c: PUSH1 0x01 0000080e: PUSH1 0xa0 00000810: SHL 00000811: SUB 00000812: DUP6 00000813: AND 00000814: DUP5 00000815: MSTORE 00000816: SWAP1 00000817: SWAP2 00000818: MSTORE 00000819: SWAP1 0000081a: KECCAK256 0000081b: SLOAD 0000081c: PUSH1 0xff 0000081e: AND 0000081f: ISZERO 00000820: PUSH2 0x03d0 00000823: JUMPI 00000824: PUSH1 0x00 00000826: DUP3 00000827: DUP2 00000828: MSTORE 00000829: PUSH1 0x65 0000082b: PUSH1 0x20 0000082d: SWAP1 0000082e: DUP2 0000082f: MSTORE 00000830: PUSH1 0x40 00000832: DUP1 00000833: DUP4 00000834: KECCAK256 00000835: PUSH1 0x01 00000837: PUSH1 0x01 00000839: PUSH1 0xa0 0000083b: SHL 0000083c: SUB 0000083d: DUP6 0000083e: AND 0000083f: DUP1 00000840: DUP6 00000841: MSTORE 00000842: SWAP3 00000843: MSTORE 00000844: DUP1 00000845: DUP4 00000846: KECCAK256 00000847: DUP1 00000848: SLOAD 00000849: PUSH1 0xff 0000084b: NOT 0000084c: AND 0000084d: SWAP1 0000084e: SSTORE 0000084f: MLOAD 00000850: CALLER 00000851: SWAP3 00000852: DUP6 00000853: SWAP2 00000854: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 00000875: SWAP2 00000876: SWAP1 00000877: LOG4 00000878: POP 00000879: POP 0000087a: JUMP 0000087b: JUMPDEST 0000087c: PUSH1 0x00 0000087e: SLOAD 0000087f: PUSH2 0x0100 00000882: SWAP1 00000883: DIV 00000884: PUSH1 0xff 00000886: AND 00000887: PUSH2 0x08f8 0000088a: JUMPI 0000088b: PUSH1 0x40 0000088d: MLOAD 0000088e: PUSH3 0x461bcd 00000892: PUSH1 0xe5 00000894: SHL 00000895: DUP2 00000896: MSTORE 00000897: PUSH1 0x20 00000899: PUSH1 0x04 0000089b: DUP3 0000089c: ADD 0000089d: MSTORE 0000089e: PUSH1 0x2b 000008a0: PUSH1 0x24 000008a2: DUP3 000008a3: ADD 000008a4: MSTORE 000008a5: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 000008c6: PUSH1 0x44 000008c8: DUP3 000008c9: ADD 000008ca: MSTORE 000008cb: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 000008ec: PUSH1 0x64 000008ee: DUP3 000008ef: ADD 000008f0: MSTORE 000008f1: PUSH1 0x84 000008f3: ADD 000008f4: PUSH2 0x03bd 000008f7: JUMP 000008f8: JUMPDEST 000008f9: JUMP 000008fa: JUMPDEST 000008fb: PUSH1 0x40 000008fd: DUP1 000008fe: MLOAD 000008ff: PUSH1 0x01 00000901: PUSH1 0x01 00000903: PUSH1 0xa0 00000905: SHL 00000906: SUB 00000907: DUP5 00000908: AND 00000909: PUSH1 0x24 0000090b: DUP3 0000090c: ADD 0000090d: MSTORE 0000090e: PUSH1 0x44 00000910: DUP1 00000911: DUP3 00000912: ADD 00000913: DUP5 00000914: SWAP1 00000915: MSTORE 00000916: DUP3 00000917: MLOAD 00000918: DUP1 00000919: DUP4 0000091a: SUB 0000091b: SWAP1 0000091c: SWAP2 0000091d: ADD 0000091e: DUP2 0000091f: MSTORE 00000920: PUSH1 0x64 00000922: SWAP1 00000923: SWAP2 00000924: ADD 00000925: SWAP1 00000926: SWAP2 00000927: MSTORE 00000928: PUSH1 0x20 0000092a: DUP2 0000092b: ADD 0000092c: DUP1 0000092d: MLOAD 0000092e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000094b: AND 0000094c: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 0000096d: OR 0000096e: SWAP1 0000096f: MSTORE 00000970: PUSH2 0x033e 00000973: SWAP1 00000974: DUP5 00000975: SWAP1 00000976: PUSH2 0x0baa 00000979: JUMP 0000097a: JUMPDEST 0000097b: PUSH1 0x60 0000097d: PUSH1 0x00 0000097f: PUSH2 0x0989 00000982: DUP4 00000983: PUSH1 0x02 00000985: PUSH2 0x104a 00000988: JUMP 00000989: JUMPDEST 0000098a: PUSH2 0x0994 0000098d: SWAP1 0000098e: PUSH1 0x02 00000990: PUSH2 0x1069 00000993: JUMP 00000994: JUMPDEST 00000995: PUSH8 0xffffffffffffffff 0000099e: DUP2 0000099f: GT 000009a0: ISZERO 000009a1: PUSH2 0x09ac 000009a4: JUMPI 000009a5: PUSH2 0x09ac 000009a8: PUSH2 0x1081 000009ab: JUMP 000009ac: JUMPDEST 000009ad: PUSH1 0x40 000009af: MLOAD 000009b0: SWAP1 000009b1: DUP1 000009b2: DUP3 000009b3: MSTORE 000009b4: DUP1 000009b5: PUSH1 0x1f 000009b7: ADD 000009b8: PUSH1 0x1f 000009ba: NOT 000009bb: AND 000009bc: PUSH1 0x20 000009be: ADD 000009bf: DUP3 000009c0: ADD 000009c1: PUSH1 0x40 000009c3: MSTORE 000009c4: DUP1 000009c5: ISZERO 000009c6: PUSH2 0x09d6 000009c9: JUMPI 000009ca: PUSH1 0x20 000009cc: DUP3 000009cd: ADD 000009ce: DUP2 000009cf: DUP1 000009d0: CALLDATASIZE 000009d1: DUP4 000009d2: CALLDATACOPY 000009d3: ADD 000009d4: SWAP1 000009d5: POP 000009d6: JUMPDEST 000009d7: POP 000009d8: SWAP1 000009d9: POP 000009da: PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 000009fb: DUP2 000009fc: PUSH1 0x00 000009fe: DUP2 000009ff: MLOAD 00000a00: DUP2 00000a01: LT 00000a02: PUSH2 0x0a0d 00000a05: JUMPI 00000a06: PUSH2 0x0a0d 00000a09: PUSH2 0x1097 00000a0c: JUMP 00000a0d: JUMPDEST 00000a0e: PUSH1 0x20 00000a10: ADD 00000a11: ADD 00000a12: SWAP1 00000a13: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000a33: NOT 00000a34: AND 00000a35: SWAP1 00000a36: DUP2 00000a37: PUSH1 0x00 00000a39: BYTE 00000a3a: SWAP1 00000a3b: MSTORE8 00000a3c: POP 00000a3d: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 00000a5e: DUP2 00000a5f: PUSH1 0x01 00000a61: DUP2 00000a62: MLOAD 00000a63: DUP2 00000a64: LT 00000a65: PUSH2 0x0a70 00000a68: JUMPI 00000a69: PUSH2 0x0a70 00000a6c: PUSH2 0x1097 00000a6f: JUMP 00000a70: JUMPDEST 00000a71: PUSH1 0x20 00000a73: ADD 00000a74: ADD 00000a75: SWAP1 00000a76: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000a96: NOT 00000a97: AND 00000a98: SWAP1 00000a99: DUP2 00000a9a: PUSH1 0x00 00000a9c: BYTE 00000a9d: SWAP1 00000a9e: MSTORE8 00000a9f: POP 00000aa0: PUSH1 0x00 00000aa2: PUSH2 0x0aac 00000aa5: DUP5 00000aa6: PUSH1 0x02 00000aa8: PUSH2 0x104a 00000aab: JUMP 00000aac: JUMPDEST 00000aad: PUSH2 0x0ab7 00000ab0: SWAP1 00000ab1: PUSH1 0x01 00000ab3: PUSH2 0x1069 00000ab6: JUMP 00000ab7: JUMPDEST 00000ab8: SWAP1 00000ab9: POP 00000aba: JUMPDEST 00000abb: PUSH1 0x01 00000abd: DUP2 00000abe: GT 00000abf: ISZERO 00000ac0: PUSH2 0x0b54 00000ac3: JUMPI 00000ac4: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 00000ae5: DUP6 00000ae6: PUSH1 0x0f 00000ae8: AND 00000ae9: PUSH1 0x10 00000aeb: DUP2 00000aec: LT 00000aed: PUSH2 0x0af8 00000af0: JUMPI 00000af1: PUSH2 0x0af8 00000af4: PUSH2 0x1097 00000af7: JUMP 00000af8: JUMPDEST 00000af9: BYTE 00000afa: PUSH1 0xf8 00000afc: SHL 00000afd: DUP3 00000afe: DUP3 00000aff: DUP2 00000b00: MLOAD 00000b01: DUP2 00000b02: LT 00000b03: PUSH2 0x0b0e 00000b06: JUMPI 00000b07: PUSH2 0x0b0e 00000b0a: PUSH2 0x1097 00000b0d: JUMP 00000b0e: JUMPDEST 00000b0f: PUSH1 0x20 00000b11: ADD 00000b12: ADD 00000b13: SWAP1 00000b14: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000b34: NOT 00000b35: AND 00000b36: SWAP1 00000b37: DUP2 00000b38: PUSH1 0x00 00000b3a: BYTE 00000b3b: SWAP1 00000b3c: MSTORE8 00000b3d: POP 00000b3e: PUSH1 0x04 00000b40: SWAP5 00000b41: SWAP1 00000b42: SWAP5 00000b43: SHR 00000b44: SWAP4 00000b45: PUSH2 0x0b4d 00000b48: DUP2 00000b49: PUSH2 0x10ad 00000b4c: JUMP 00000b4d: JUMPDEST 00000b4e: SWAP1 00000b4f: POP 00000b50: PUSH2 0x0aba 00000b53: JUMP 00000b54: JUMPDEST 00000b55: POP 00000b56: DUP4 00000b57: ISZERO 00000b58: PUSH2 0x0ba3 00000b5b: JUMPI 00000b5c: PUSH1 0x40 00000b5e: MLOAD 00000b5f: PUSH3 0x461bcd 00000b63: PUSH1 0xe5 00000b65: SHL 00000b66: DUP2 00000b67: MSTORE 00000b68: PUSH1 0x20 00000b6a: PUSH1 0x04 00000b6c: DUP3 00000b6d: ADD 00000b6e: DUP2 00000b6f: SWAP1 00000b70: MSTORE 00000b71: PUSH1 0x24 00000b73: DUP3 00000b74: ADD 00000b75: MSTORE 00000b76: PUSH32 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74 00000b97: PUSH1 0x44 00000b99: DUP3 00000b9a: ADD 00000b9b: MSTORE 00000b9c: PUSH1 0x64 00000b9e: ADD 00000b9f: PUSH2 0x03bd 00000ba2: JUMP 00000ba3: JUMPDEST 00000ba4: SWAP4 00000ba5: SWAP3 00000ba6: POP 00000ba7: POP 00000ba8: POP 00000ba9: JUMP 00000baa: JUMPDEST 00000bab: PUSH1 0x00 00000bad: PUSH2 0x0bff 00000bb0: DUP3 00000bb1: PUSH1 0x40 00000bb3: MLOAD 00000bb4: DUP1 00000bb5: PUSH1 0x40 00000bb7: ADD 00000bb8: PUSH1 0x40 00000bba: MSTORE 00000bbb: DUP1 00000bbc: PUSH1 0x20 00000bbe: DUP2 00000bbf: MSTORE 00000bc0: PUSH1 0x20 00000bc2: ADD 00000bc3: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00000be4: DUP2 00000be5: MSTORE 00000be6: POP 00000be7: DUP6 00000be8: PUSH1 0x01 00000bea: PUSH1 0x01 00000bec: PUSH1 0xa0 00000bee: SHL 00000bef: SUB 00000bf0: AND 00000bf1: PUSH2 0x0c8f 00000bf4: SWAP1 00000bf5: SWAP3 00000bf6: SWAP2 00000bf7: SWAP1 00000bf8: PUSH4 0xffffffff 00000bfd: AND 00000bfe: JUMP 00000bff: JUMPDEST 00000c00: DUP1 00000c01: MLOAD 00000c02: SWAP1 00000c03: SWAP2 00000c04: POP 00000c05: ISZERO 00000c06: PUSH2 0x033e 00000c09: JUMPI 00000c0a: DUP1 00000c0b: DUP1 00000c0c: PUSH1 0x20 00000c0e: ADD 00000c0f: SWAP1 00000c10: MLOAD 00000c11: DUP2 00000c12: ADD 00000c13: SWAP1 00000c14: PUSH2 0x0c1d 00000c17: SWAP2 00000c18: SWAP1 00000c19: PUSH2 0x10c4 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: PUSH2 0x033e 00000c21: JUMPI 00000c22: PUSH1 0x40 00000c24: MLOAD 00000c25: PUSH3 0x461bcd 00000c29: PUSH1 0xe5 00000c2b: SHL 00000c2c: DUP2 00000c2d: MSTORE 00000c2e: PUSH1 0x20 00000c30: PUSH1 0x04 00000c32: DUP3 00000c33: ADD 00000c34: MSTORE 00000c35: PUSH1 0x2a 00000c37: PUSH1 0x24 00000c39: DUP3 00000c3a: ADD 00000c3b: MSTORE 00000c3c: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00000c5d: PUSH1 0x44 00000c5f: DUP3 00000c60: ADD 00000c61: MSTORE 00000c62: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00000c83: PUSH1 0x64 00000c85: DUP3 00000c86: ADD 00000c87: MSTORE 00000c88: PUSH1 0x84 00000c8a: ADD 00000c8b: PUSH2 0x03bd 00000c8e: JUMP 00000c8f: JUMPDEST 00000c90: PUSH1 0x60 00000c92: PUSH2 0x0c9e 00000c95: DUP5 00000c96: DUP5 00000c97: PUSH1 0x00 00000c99: DUP6 00000c9a: PUSH2 0x0ca6 00000c9d: JUMP 00000c9e: JUMPDEST 00000c9f: SWAP5 00000ca0: SWAP4 00000ca1: POP 00000ca2: POP 00000ca3: POP 00000ca4: POP 00000ca5: JUMP 00000ca6: JUMPDEST 00000ca7: PUSH1 0x60 00000ca9: DUP3 00000caa: SELFBALANCE 00000cab: LT 00000cac: ISZERO 00000cad: PUSH2 0x0d1e 00000cb0: JUMPI 00000cb1: PUSH1 0x40 00000cb3: MLOAD 00000cb4: PUSH3 0x461bcd 00000cb8: PUSH1 0xe5 00000cba: SHL 00000cbb: DUP2 00000cbc: MSTORE 00000cbd: PUSH1 0x20 00000cbf: PUSH1 0x04 00000cc1: DUP3 00000cc2: ADD 00000cc3: MSTORE 00000cc4: PUSH1 0x26 00000cc6: PUSH1 0x24 00000cc8: DUP3 00000cc9: ADD 00000cca: MSTORE 00000ccb: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00000cec: PUSH1 0x44 00000cee: DUP3 00000cef: ADD 00000cf0: MSTORE 00000cf1: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 00000d12: PUSH1 0x64 00000d14: DUP3 00000d15: ADD 00000d16: MSTORE 00000d17: PUSH1 0x84 00000d19: ADD 00000d1a: PUSH2 0x03bd 00000d1d: JUMP 00000d1e: JUMPDEST 00000d1f: PUSH1 0x01 00000d21: PUSH1 0x01 00000d23: PUSH1 0xa0 00000d25: SHL 00000d26: SUB 00000d27: DUP6 00000d28: AND 00000d29: EXTCODESIZE 00000d2a: PUSH2 0x0d75 00000d2d: JUMPI 00000d2e: PUSH1 0x40 00000d30: MLOAD 00000d31: PUSH3 0x461bcd 00000d35: PUSH1 0xe5 00000d37: SHL 00000d38: DUP2 00000d39: MSTORE 00000d3a: PUSH1 0x20 00000d3c: PUSH1 0x04 00000d3e: DUP3 00000d3f: ADD 00000d40: MSTORE 00000d41: PUSH1 0x1d 00000d43: PUSH1 0x24 00000d45: DUP3 00000d46: ADD 00000d47: MSTORE 00000d48: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00000d69: PUSH1 0x44 00000d6b: DUP3 00000d6c: ADD 00000d6d: MSTORE 00000d6e: PUSH1 0x64 00000d70: ADD 00000d71: PUSH2 0x03bd 00000d74: JUMP 00000d75: JUMPDEST 00000d76: PUSH1 0x00 00000d78: DUP1 00000d79: DUP7 00000d7a: PUSH1 0x01 00000d7c: PUSH1 0x01 00000d7e: PUSH1 0xa0 00000d80: SHL 00000d81: SUB 00000d82: AND 00000d83: DUP6 00000d84: DUP8 00000d85: PUSH1 0x40 00000d87: MLOAD 00000d88: PUSH2 0x0d91 00000d8b: SWAP2 00000d8c: SWAP1 00000d8d: PUSH2 0x10e6 00000d90: JUMP 00000d91: JUMPDEST 00000d92: PUSH1 0x00 00000d94: PUSH1 0x40 00000d96: MLOAD 00000d97: DUP1 00000d98: DUP4 00000d99: SUB 00000d9a: DUP2 00000d9b: DUP6 00000d9c: DUP8 00000d9d: GAS 00000d9e: CALL 00000d9f: SWAP3 00000da0: POP 00000da1: POP 00000da2: POP 00000da3: RETURNDATASIZE 00000da4: DUP1 00000da5: PUSH1 0x00 00000da7: DUP2 00000da8: EQ 00000da9: PUSH2 0x0dce 00000dac: JUMPI 00000dad: PUSH1 0x40 00000daf: MLOAD 00000db0: SWAP2 00000db1: POP 00000db2: PUSH1 0x1f 00000db4: NOT 00000db5: PUSH1 0x3f 00000db7: RETURNDATASIZE 00000db8: ADD 00000db9: AND 00000dba: DUP3 00000dbb: ADD 00000dbc: PUSH1 0x40 00000dbe: MSTORE 00000dbf: RETURNDATASIZE 00000dc0: DUP3 00000dc1: MSTORE 00000dc2: RETURNDATASIZE 00000dc3: PUSH1 0x00 00000dc5: PUSH1 0x20 00000dc7: DUP5 00000dc8: ADD 00000dc9: RETURNDATACOPY 00000dca: PUSH2 0x0dd3 00000dcd: JUMP 00000dce: JUMPDEST 00000dcf: PUSH1 0x60 00000dd1: SWAP2 00000dd2: POP 00000dd3: JUMPDEST 00000dd4: POP 00000dd5: SWAP2 00000dd6: POP 00000dd7: SWAP2 00000dd8: POP 00000dd9: PUSH2 0x0de3 00000ddc: DUP3 00000ddd: DUP3 00000dde: DUP7 00000ddf: PUSH2 0x0dee 00000de2: JUMP 00000de3: JUMPDEST 00000de4: SWAP8 00000de5: SWAP7 00000de6: POP 00000de7: POP 00000de8: POP 00000de9: POP 00000dea: POP 00000deb: POP 00000dec: POP 00000ded: JUMP 00000dee: JUMPDEST 00000def: PUSH1 0x60 00000df1: DUP4 00000df2: ISZERO 00000df3: PUSH2 0x0dfd 00000df6: JUMPI 00000df7: POP 00000df8: DUP2 00000df9: PUSH2 0x0ba3 00000dfc: JUMP 00000dfd: JUMPDEST 00000dfe: DUP3 00000dff: MLOAD 00000e00: ISZERO 00000e01: PUSH2 0x0e0d 00000e04: JUMPI 00000e05: DUP3 00000e06: MLOAD 00000e07: DUP1 00000e08: DUP5 00000e09: PUSH1 0x20 00000e0b: ADD 00000e0c: REVERT 00000e0d: JUMPDEST 00000e0e: DUP2 00000e0f: PUSH1 0x40 00000e11: MLOAD 00000e12: PUSH3 0x461bcd 00000e16: PUSH1 0xe5 00000e18: SHL 00000e19: DUP2 00000e1a: MSTORE 00000e1b: PUSH1 0x04 00000e1d: ADD 00000e1e: PUSH2 0x03bd 00000e21: SWAP2 00000e22: SWAP1 00000e23: PUSH2 0x1001 00000e26: JUMP 00000e27: JUMPDEST 00000e28: PUSH1 0x00 00000e2a: PUSH1 0x20 00000e2c: DUP3 00000e2d: DUP5 00000e2e: SUB 00000e2f: SLT 00000e30: ISZERO 00000e31: PUSH2 0x0e39 00000e34: JUMPI 00000e35: PUSH1 0x00 00000e37: DUP1 00000e38: REVERT 00000e39: JUMPDEST 00000e3a: DUP2 00000e3b: CALLDATALOAD 00000e3c: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00000e5d: DUP2 00000e5e: AND 00000e5f: DUP2 00000e60: EQ 00000e61: PUSH2 0x0ba3 00000e64: JUMPI 00000e65: PUSH1 0x00 00000e67: DUP1 00000e68: REVERT 00000e69: JUMPDEST 00000e6a: PUSH1 0x00 00000e6c: PUSH1 0x20 00000e6e: DUP3 00000e6f: DUP5 00000e70: SUB 00000e71: SLT 00000e72: ISZERO 00000e73: PUSH2 0x0e7b 00000e76: JUMPI 00000e77: PUSH1 0x00 00000e79: DUP1 00000e7a: REVERT 00000e7b: JUMPDEST 00000e7c: POP 00000e7d: CALLDATALOAD 00000e7e: SWAP2 00000e7f: SWAP1 00000e80: POP 00000e81: JUMP 00000e82: JUMPDEST 00000e83: PUSH1 0x01 00000e85: PUSH1 0x01 00000e87: PUSH1 0xa0 00000e89: SHL 00000e8a: SUB 00000e8b: DUP2 00000e8c: AND 00000e8d: DUP2 00000e8e: EQ 00000e8f: PUSH2 0x0e97 00000e92: JUMPI 00000e93: PUSH1 0x00 00000e95: DUP1 00000e96: REVERT 00000e97: JUMPDEST 00000e98: POP 00000e99: JUMP 00000e9a: JUMPDEST 00000e9b: PUSH1 0x00 00000e9d: DUP1 00000e9e: PUSH1 0x40 00000ea0: DUP4 00000ea1: DUP6 00000ea2: SUB 00000ea3: SLT 00000ea4: ISZERO 00000ea5: PUSH2 0x0ead 00000ea8: JUMPI 00000ea9: PUSH1 0x00 00000eab: DUP1 00000eac: REVERT 00000ead: JUMPDEST 00000eae: DUP3 00000eaf: CALLDATALOAD 00000eb0: SWAP2 00000eb1: POP 00000eb2: PUSH1 0x20 00000eb4: DUP4 00000eb5: ADD 00000eb6: CALLDATALOAD 00000eb7: PUSH2 0x0ebf 00000eba: DUP2 00000ebb: PUSH2 0x0e82 00000ebe: JUMP 00000ebf: JUMPDEST 00000ec0: DUP1 00000ec1: SWAP2 00000ec2: POP 00000ec3: POP 00000ec4: SWAP3 00000ec5: POP 00000ec6: SWAP3 00000ec7: SWAP1 00000ec8: POP 00000ec9: JUMP 00000eca: JUMPDEST 00000ecb: PUSH1 0x00 00000ecd: PUSH1 0x20 00000ecf: DUP3 00000ed0: DUP5 00000ed1: SUB 00000ed2: SLT 00000ed3: ISZERO 00000ed4: PUSH2 0x0edc 00000ed7: JUMPI 00000ed8: PUSH1 0x00 00000eda: DUP1 00000edb: REVERT 00000edc: JUMPDEST 00000edd: DUP2 00000ede: CALLDATALOAD 00000edf: PUSH2 0x0ba3 00000ee2: DUP2 00000ee3: PUSH2 0x0e82 00000ee6: JUMP 00000ee7: JUMPDEST 00000ee8: PUSH1 0x00 00000eea: DUP1 00000eeb: PUSH1 0x40 00000eed: DUP4 00000eee: DUP6 00000eef: SUB 00000ef0: SLT 00000ef1: ISZERO 00000ef2: PUSH2 0x0efa 00000ef5: JUMPI 00000ef6: PUSH1 0x00 00000ef8: DUP1 00000ef9: REVERT 00000efa: JUMPDEST 00000efb: DUP3 00000efc: CALLDATALOAD 00000efd: PUSH2 0x0f05 00000f00: DUP2 00000f01: PUSH2 0x0e82 00000f04: JUMP 00000f05: JUMPDEST 00000f06: SWAP5 00000f07: PUSH1 0x20 00000f09: SWAP4 00000f0a: SWAP1 00000f0b: SWAP4 00000f0c: ADD 00000f0d: CALLDATALOAD 00000f0e: SWAP4 00000f0f: POP 00000f10: POP 00000f11: POP 00000f12: JUMP 00000f13: JUMPDEST 00000f14: PUSH1 0x00 00000f16: DUP1 00000f17: PUSH1 0x00 00000f19: PUSH1 0x60 00000f1b: DUP5 00000f1c: DUP7 00000f1d: SUB 00000f1e: SLT 00000f1f: ISZERO 00000f20: PUSH2 0x0f28 00000f23: JUMPI 00000f24: PUSH1 0x00 00000f26: DUP1 00000f27: REVERT 00000f28: JUMPDEST 00000f29: DUP4 00000f2a: CALLDATALOAD 00000f2b: PUSH2 0x0f33 00000f2e: DUP2 00000f2f: PUSH2 0x0e82 00000f32: JUMP 00000f33: JUMPDEST 00000f34: SWAP3 00000f35: POP 00000f36: PUSH1 0x20 00000f38: DUP5 00000f39: ADD 00000f3a: CALLDATALOAD 00000f3b: PUSH2 0x0f43 00000f3e: DUP2 00000f3f: PUSH2 0x0e82 00000f42: JUMP 00000f43: JUMPDEST 00000f44: SWAP3 00000f45: SWAP6 00000f46: SWAP3 00000f47: SWAP5 00000f48: POP 00000f49: POP 00000f4a: POP 00000f4b: PUSH1 0x40 00000f4d: SWAP2 00000f4e: SWAP1 00000f4f: SWAP2 00000f50: ADD 00000f51: CALLDATALOAD 00000f52: SWAP1 00000f53: JUMP 00000f54: JUMPDEST 00000f55: PUSH1 0x00 00000f57: JUMPDEST 00000f58: DUP4 00000f59: DUP2 00000f5a: LT 00000f5b: ISZERO 00000f5c: PUSH2 0x0f6f 00000f5f: JUMPI 00000f60: DUP2 00000f61: DUP2 00000f62: ADD 00000f63: MLOAD 00000f64: DUP4 00000f65: DUP3 00000f66: ADD 00000f67: MSTORE 00000f68: PUSH1 0x20 00000f6a: ADD 00000f6b: PUSH2 0x0f57 00000f6e: JUMP 00000f6f: JUMPDEST 00000f70: DUP4 00000f71: DUP2 00000f72: GT 00000f73: ISZERO 00000f74: PUSH2 0x0609 00000f77: JUMPI 00000f78: POP 00000f79: POP 00000f7a: PUSH1 0x00 00000f7c: SWAP2 00000f7d: ADD 00000f7e: MSTORE 00000f7f: JUMP 00000f80: JUMPDEST 00000f81: PUSH32 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000 00000fa2: DUP2 00000fa3: MSTORE 00000fa4: PUSH1 0x00 00000fa6: DUP4 00000fa7: MLOAD 00000fa8: PUSH2 0x0fb8 00000fab: DUP2 00000fac: PUSH1 0x17 00000fae: DUP6 00000faf: ADD 00000fb0: PUSH1 0x20 00000fb2: DUP9 00000fb3: ADD 00000fb4: PUSH2 0x0f54 00000fb7: JUMP 00000fb8: JUMPDEST 00000fb9: PUSH32 0x206973206d697373696e6720726f6c6520000000000000000000000000000000 00000fda: PUSH1 0x17 00000fdc: SWAP2 00000fdd: DUP5 00000fde: ADD 00000fdf: SWAP2 00000fe0: DUP3 00000fe1: ADD 00000fe2: MSTORE 00000fe3: DUP4 00000fe4: MLOAD 00000fe5: PUSH2 0x0ff5 00000fe8: DUP2 00000fe9: PUSH1 0x28 00000feb: DUP5 00000fec: ADD 00000fed: PUSH1 0x20 00000fef: DUP9 00000ff0: ADD 00000ff1: PUSH2 0x0f54 00000ff4: JUMP 00000ff5: JUMPDEST 00000ff6: ADD 00000ff7: PUSH1 0x28 00000ff9: ADD 00000ffa: SWAP5 00000ffb: SWAP4 00000ffc: POP 00000ffd: POP 00000ffe: POP 00000fff: POP 00001000: JUMP 00001001: JUMPDEST 00001002: PUSH1 0x20 00001004: DUP2 00001005: MSTORE 00001006: PUSH1 0x00 00001008: DUP3 00001009: MLOAD 0000100a: DUP1 0000100b: PUSH1 0x20 0000100d: DUP5 0000100e: ADD 0000100f: MSTORE 00001010: PUSH2 0x1020 00001013: DUP2 00001014: PUSH1 0x40 00001016: DUP6 00001017: ADD 00001018: PUSH1 0x20 0000101a: DUP8 0000101b: ADD 0000101c: PUSH2 0x0f54 0000101f: JUMP 00001020: JUMPDEST 00001021: PUSH1 0x1f 00001023: ADD 00001024: PUSH1 0x1f 00001026: NOT 00001027: AND 00001028: SWAP2 00001029: SWAP1 0000102a: SWAP2 0000102b: ADD 0000102c: PUSH1 0x40 0000102e: ADD 0000102f: SWAP3 00001030: SWAP2 00001031: POP 00001032: POP 00001033: JUMP 00001034: JUMPDEST 00001035: PUSH4 0x4e487b71 0000103a: PUSH1 0xe0 0000103c: SHL 0000103d: PUSH1 0x00 0000103f: MSTORE 00001040: PUSH1 0x11 00001042: PUSH1 0x04 00001044: MSTORE 00001045: PUSH1 0x24 00001047: PUSH1 0x00 00001049: REVERT 0000104a: JUMPDEST 0000104b: PUSH1 0x00 0000104d: DUP2 0000104e: PUSH1 0x00 00001050: NOT 00001051: DIV 00001052: DUP4 00001053: GT 00001054: DUP3 00001055: ISZERO 00001056: ISZERO 00001057: AND 00001058: ISZERO 00001059: PUSH2 0x1064 0000105c: JUMPI 0000105d: PUSH2 0x1064 00001060: PUSH2 0x1034 00001063: JUMP 00001064: JUMPDEST 00001065: POP 00001066: MUL 00001067: SWAP1 00001068: JUMP 00001069: JUMPDEST 0000106a: PUSH1 0x00 0000106c: DUP3 0000106d: NOT 0000106e: DUP3 0000106f: GT 00001070: ISZERO 00001071: PUSH2 0x107c 00001074: JUMPI 00001075: PUSH2 0x107c 00001078: PUSH2 0x1034 0000107b: JUMP 0000107c: JUMPDEST 0000107d: POP 0000107e: ADD 0000107f: SWAP1 00001080: JUMP 00001081: JUMPDEST 00001082: PUSH4 0x4e487b71 00001087: PUSH1 0xe0 00001089: SHL 0000108a: PUSH1 0x00 0000108c: MSTORE 0000108d: PUSH1 0x41 0000108f: PUSH1 0x04 00001091: MSTORE 00001092: PUSH1 0x24 00001094: PUSH1 0x00 00001096: REVERT 00001097: JUMPDEST 00001098: PUSH4 0x4e487b71 0000109d: PUSH1 0xe0 0000109f: SHL 000010a0: PUSH1 0x00 000010a2: MSTORE 000010a3: PUSH1 0x32 000010a5: PUSH1 0x04 000010a7: MSTORE 000010a8: PUSH1 0x24 000010aa: PUSH1 0x00 000010ac: REVERT 000010ad: JUMPDEST 000010ae: PUSH1 0x00 000010b0: DUP2 000010b1: PUSH2 0x10bc 000010b4: JUMPI 000010b5: PUSH2 0x10bc 000010b8: PUSH2 0x1034 000010bb: JUMP 000010bc: JUMPDEST 000010bd: POP 000010be: PUSH1 0x00 000010c0: NOT 000010c1: ADD 000010c2: SWAP1 000010c3: JUMP 000010c4: JUMPDEST 000010c5: PUSH1 0x00 000010c7: PUSH1 0x20 000010c9: DUP3 000010ca: DUP5 000010cb: SUB 000010cc: SLT 000010cd: ISZERO 000010ce: PUSH2 0x10d6 000010d1: JUMPI 000010d2: PUSH1 0x00 000010d4: DUP1 000010d5: REVERT 000010d6: JUMPDEST 000010d7: DUP2 000010d8: MLOAD 000010d9: DUP1 000010da: ISZERO 000010db: ISZERO 000010dc: DUP2 000010dd: EQ 000010de: PUSH2 0x0ba3 000010e1: JUMPI 000010e2: PUSH1 0x00 000010e4: DUP1 000010e5: REVERT 000010e6: JUMPDEST 000010e7: PUSH1 0x00 000010e9: DUP3 000010ea: MLOAD 000010eb: PUSH2 0x10f8 000010ee: DUP2 000010ef: DUP5 000010f0: PUSH1 0x20 000010f2: DUP8 000010f3: ADD 000010f4: PUSH2 0x0f54 000010f7: JUMP 000010f8: JUMPDEST 000010f9: SWAP2 000010fa: SWAP1 000010fb: SWAP2 000010fc: ADD 000010fd: SWAP3 000010fe: SWAP2 000010ff: POP 00001100: POP 00001101: JUMP 00001102: INVALID 00001103: LOG2 00001104: PUSH5 0x6970667358 0000110a: UNKNOWN(0x22) 0000110b: SLT 0000110c: KECCAK256 0000110d: OR 0000110e: UNKNOWN(0xED) 0000110f: CALLVALUE 00001110: PC 00001111: UNKNOWN(0xA6) 00001112: TSTORE 00001113: SELFDESTRUCT 00001114: JUMP 00001115: SGT 00001116: UNKNOWN(0xF7) 00001117: LOG3 00001118: UNKNOWN(0xC3) 00001119: NUMBER 0000111a: DUP10 0000111b: SUB 0000111c: RETURNDATACOPY 0000111d: UNKNOWN(0xB2) 0000111e: UNKNOWN(0x2F) 0000111f: PUSH25
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | cast | SELFDESTRUCT present | 85 | no | — |
viewevidence_json{
"notes": "selfdestruct can remove contract code and send funds; review reachability",
"selfdestruct_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xef4fffc4f710e52de2afab33f2be19f9ffbc00fd152234e519f8bb392838d08c
call_targets:
0xa092c7577354ea82a6c7e55b423c3dd80f0df255
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xef4fffc4f710e52de2afab33f2be19f9ffbc00fd152234e519f8bb392838d08c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa092c7577354ea82a6c7e55b423c3dd80f0df255"
],
"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": "0x9db5dbe4",
"selector": "0x9db5dbe4",
"calldata_variants": [
"0x9db5dbe4",
"0x9db5dbe40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa217fddf",
"selector": "0xa217fddf",
"calldata_variants": [
"0xa217fddf",
"0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ed086f4",
"selector": "0x3ed086f4",
"calldata_variants": [
"0x3ed086f4",
"0x3ed086f40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7b1a4909",
"selector": "0x7b1a4909",
"calldata_variants": [
"0x7b1a4909",
"0x7b1a49090000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91d14854",
"selector": "0x91d14854",
"calldata_variants": [
"0x91d14854",
"0x91d148540000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1411,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3486,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xef4fffc4f710e52de2afab33f2be19f9ffbc00fd152234e519f8bb392838d08c
call_targets:
0xa092c7577354ea82a6c7e55b423c3dd80f0df255
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xef4fffc4f710e52de2afab33f2be19f9ffbc00fd152234e519f8bb392838d08c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa092c7577354ea82a6c7e55b423c3dd80f0df255"
],
"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": "0x9db5dbe4",
"selector": "0x9db5dbe4",
"calldata_variants": [
"0x9db5dbe4",
"0x9db5dbe40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa217fddf",
"selector": "0xa217fddf",
"calldata_variants": [
"0xa217fddf",
"0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ed086f4",
"selector": "0x3ed086f4",
"calldata_variants": [
"0x3ed086f4",
"0x3ed086f40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7b1a4909",
"selector": "0x7b1a4909",
"calldata_variants": [
"0x7b1a4909",
"0x7b1a49090000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91d14854",
"selector": "0x91d14854",
"calldata_variants": [
"0x91d14854",
"0x91d148540000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1411,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3486,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| high | other | detector | SELFDESTRUCT reachable | 65 | no | no |
viewtrace_id: 0x27c417d5ec3d5ff29f9caae0ec6524d96284ebff18581ad6bdc95d2fc7d57578
validation_json{
"sink": "SELFDESTRUCT",
"errors": 0,
"status": "unknown",
"attempts": 22,
"trace_id": "0x27c417d5ec3d5ff29f9caae0ec6524d96284ebff18581ad6bdc95d2fc7d57578",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x9db5dbe4",
"selector": "0x9db5dbe4",
"calldata_variants": [
"0x9db5dbe4",
"0x9db5dbe40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa217fddf",
"selector": "0xa217fddf",
"calldata_variants": [
"0xa217fddf",
"0xa217fddf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3ed086f4",
"selector": "0x3ed086f4",
"calldata_variants": [
"0x3ed086f4",
"0x3ed086f40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7b1a4909",
"selector": "0x7b1a4909",
"calldata_variants": [
"0x7b1a4909",
"0x7b1a49090000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91d14854",
"selector": "0x91d14854",
"calldata_variants": [
"0x91d14854",
"0x91d148540000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [],
"selfdestruct_count": 1
}
|
| medium | upgradeability | codex | Initializer allows takeover if proxy/implementation is left uninitialized | 75 | no | — |
viewevidence_json{
"evidence": "`initializeTreasury` is `external initializer` and immediately grants admin and transfer roles to the caller-supplied `_admin`, with no access restriction or initializer lock in the implementation.",
"locations": [
"contracts/contracts/treasury/Treasury.sol:25",
"contracts/contracts/treasury/Treasury.sol:32",
"contracts/contracts/treasury/Treasury.sol:35"
],
"recommendation": "Ensure the proxy is initialized atomically at deployment (e.g., pass initializer calldata to the proxy constructor). Add a constructor to the implementation that calls `_disableInitializers()` to lock it, and consider validating `_admin != address(0)` to avoid accidental lockout.",
"exploit_scenario": "If the proxy is deployed without calling `initializeTreasury` in the same transaction (or the implementation is deployed directly and left uninitialized), any address can call the initializer once, grant themselves `DEFAULT_ADMIN_ROLE` and `TRANSFER_ROLE`, then use `transferETH`/`transferERC20` to drain funds held by that contract instance."
}
|