00827adf-489d-4605-a887-6e6ea5b81451
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 |
|---|---|---|---|---|
| 30147 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 93481 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 93482 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 93483 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 93484 | capability.graph | complete | 1 / 3 | 1 week ago |
| 93485 | detector.run | complete | 1 / 3 | 1 week ago |
| 93486 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:533482] OpenAI Codex v0.77.0 (research preview)
[codex:533482] --------
[codex:533482] workdir: /tmp/codex-multi-umu0_5c_
[codex:533482] model: gpt-5.2-codex
[codex:533482] provider: openai
[codex:533482] approval: never
[codex:533482] sandbox: read-only
[codex:533482] reasoning effort: none
[codex:533482] reasoning summaries: auto
[codex:533482] session id: 019b4dd4-4c37-71c3-82ba-336196a6513c
[codex:533482] --------
[codex:533482] user
[codex:533482] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:533482] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:533482] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:533482]
[codex:533482] Scope rules:
[codex:533482] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:533482] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:533482]
[codex:533482] Output MUST be valid JSON matching the provided schema.
[codex:533482] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:533482] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:533482]
[codex:533482] Output constraints (IMPORTANT):
[codex:533482] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:533482] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:533482] mcp startup: no servers
[codex:533482]
[codex:533482] thinking
[codex:533482] **Viewing AUDIT_BUNDLE contents**
[codex:533482] exec
[codex:533482] /bin/bash -lc ls in /tmp/codex-multi-umu0_5c_ succeeded in 5ms:
[codex:533482] AUDIT_BUNDLE.txt
[codex:533482] codex-output-schema.json
[codex:533482] contracts
[codex:533482] exec
[codex:533482] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-umu0_5c_ succeeded in 5ms:
[codex:533482] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:533482]
[codex:533482] ================================================================================
[codex:533482] FILE: contracts/BlockDirectCall.sol
[codex:533482] ================================================================================
[codex:533482] /*
[codex:533482] Copyright 2019,2020 StarkWare Industries Ltd.
[codex:533482]
[codex:533482] Licensed under the Apache License, Version 2.0 (the "License").
[codex:533482] You may not use this file except in compliance with the License.
[codex:533482] You may obtain a copy of the License at
[codex:533482]
[codex:533482] https://www.starkware.co/open-source-license/
[codex:533482]
[codex:533482] Unless required by applicable law or agreed to in writing,
[codex:533482] software distributed under the License is distributed on an "AS IS" BASIS,
[codex:533482] WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
[codex:533482] See the License for the specific language governing permissions
[codex:533482] and limitations under the License.
[codex:533482] */
[codex:533482]
[codex:533482] thinking
[codex:533482] **Analyzing dispatcher initialization vulnerabilities**
[codex:533482] exec
[codex:533482] /bin/bash -lc "nl -ba contracts/MainDispatcherBase.sol | sed -n '80,220p'" in /tmp/codex-multi-umu0_5c_ succeeded in 6ms:
[codex:533482] 80 If the external initializer contract is used, all the remaining init data is passed to it,
[codex:533482] 81 and internal initialization will not occur.
[codex:533482] 82
[codex:533482] 83 External Initialization Contract
[codex:533482] 84 --------------------------------
[codex:533482] 85 External Initialization Contract (EIC) is a hook for custom initialization.
[codex:533482] 86 Typically in an upgrade flow, the expected initialization contains only the addresses of
[codex:533482] 87 the sub-contracts. Normal initialization of the sub-contracts is such that is not needed
[codex:533482] 88 in an upgrade, and actually may be very dangerous, as changing of state on a working system
[codex:533482] 89 may corrupt it.
[codex:533482] 90
[codex:533482] 91 In the event that some state initialization is required, the EIC is a hook that allows this.
[codex:533482] 92 It may be deployed and called specifically for this purpose.
[codex:533482] 93
[codex:533482] 94 The address of the EIC must be provided (if at all) when a new implementation is added to
[codex:533482] 95 a Proxy contract (as part of the initialization vector).
[codex:533482] 96 Hence, it is considered part of the code open to reviewers prior to a time-locked upgrade.
[codex:533482] 97
[codex:533482] 98 When a custom initialization is performed using an EIC,
[codex:533482] 99 the main dispatcher initialize extracts and stores the sub-contracts addresses, and then
[codex:533482] exec
[codex:533482] /bin/bash -lc "nl -ba contracts/MainDispatcherBase.sol | sed -n '220,340p'" in /tmp/codex-multi-umu0_5c_ succeeded in 6ms:
[codex:533482] 220 add(subContractInitData, trgOffset),
[codex:533482] 221 mload(add(add(data, trgOffset), initDataContractsOffset))
[codex:533482] 222 )
[codex:533482] 223 }
[codex:533482] 224 }
[codex:533482] 225
[codex:533482] 226 // Call sub-contract initializer.
[codex:533482] 227 // NOLINTNEXTLINE: low-level-calls.
[codex:533482] 228 (success, returndata) = contractAddress.delegatecall(
[codex:533482] 229 abi.encodeWithSelector(this.initialize.selector, subContractInitData)
[codex:533482] 230 );
[codex:533482] 231 require(success, string(returndata));
[codex:533482] 232 totalInitSizes += initSize;
[codex:533482] 233 initDataContractsOffset += initSize;
[codex:533482] 234 }
[codex:533482] 235 require(
[codex:533482] 236 additionalDataSize == totalInitSizes,
[codex:533482] 237 "MISMATCHING_INIT_DATA_SIZE");
[codex:533482] 238 }
[codex:533482] 239
[codex:533482]
[codex:533482] thinking
[codex:533482] **Analyzing initialize function vulnerabilities**
[codex:533482] codex
[codex:533482] {"no_findings":false,"summary":"Public initializer can be called by anyone to replace subcontracts and/or execute arbitrary delegatecall logic, enabling full takeover.","findings":[{"severity":"critical","category":"access_control","title":"Unprotected initializer allows arbitrary subcontract replacement and delegatecall execution","exploit_scenario":"Any external account can call `initialize` on the dispatcher/proxy with crafted data. Because there is no access control, the caller can set `subContracts` to attacker-controlled implementations (passing `identify()` checks) and immediately hijack all delegated function calls. Alternatively, the caller can supply a non-zero external initializer address and trigger `delegatecall` into attacker code, gaining full control over storage (e.g., governance, asset mappings, balances) and potentially draining funds.","recommendation":"Restrict `initialize` to a trusted governance/upgrade authority and enforce a one-time (or versioned) initialization flag. Also ensure the “no additional data” path cannot be used to reconfigure subcontracts without explicit authorization (e.g., always require an initialization sentinel or `initialized` guard). Consider validating external initializer addresses against an allowlist in upgrades.","evidence":"`initialize` is `public` with no access control; it sets `subContracts` from calldata and returns early when `additionalDataSize == 0`, allowing reconfiguration without the sentinel guard. It also allows arbitrary `externalInitializerAddr` delegatecall from calldata.","locations":["contracts/MainDispatcherBase.sol:126","contracts/MainDispatcherBase.sol:148","contracts/MainDispatcherBase.sol:171","contracts/MainDispatcherBase.sol:179","contracts/MainDispatcherBase.sol:270"]}]}
[codex:533482] tokens used
[codex:533482] 14,794
[codex:533482] {"no_findings":false,"summary":"Public initializer can be called by anyone to replace subcontracts and/or execute arbitrary delegatecall logic, enabling full takeover.","findings":[{"severity":"critical","category":"access_control","title":"Unprotected initializer allows arbitrary subcontract replacement and delegatecall execution","exploit_scenario":"Any external account can call `initialize` on the dispatcher/proxy with crafted data. Because there is no access control, the caller can set `subContracts` to attacker-controlled implementations (passing `identify()` checks) and immediately hijack all delegated function calls. Alternatively, the caller can supply a non-zero external initializer address and trigger `delegatecall` into attacker code, gaining full control over storage (e.g., governance, asset mappings, balances) and potentially draining funds.","recommendation":"Restrict `initialize` to a trusted governance/upgrade authority and enforce a one-time (or versioned) initialization flag. Also ensure the “no additional data” path cannot be used to reconfigure subcontracts without explicit authorization (e.g., always require an initialization sentinel or `initialized` guard). Consider validating external initializer addresses against an allowlist in upgrades.","evidence":"`initialize` is `public` with no access control; it sets `subContracts` from calldata and returns early when `additionalDataSize == 0`, allowing reconfiguration without the sentinel guard. It also allows arbitrary `externalInitializerAddr` delegatecall from calldata.","locations":["contracts/MainDispatcherBase.sol:126","contracts/MainDispatcherBase.sol:148","contracts/MainDispatcherBase.sol:171","contracts/MainDispatcherBase.sol:179","contracts/MainDispatcherBase.sol:270"]}]}
{
"codex": {
"ran_at": "2025-12-24T00:49:26.108333+00:00",
"returncode": 0
},
"summary": "Public initializer can be called by anyone to replace subcontracts and/or execute arbitrary delegatecall logic, enabling full takeover.",
"raw_final": {
"summary": "Public initializer can be called by anyone to replace subcontracts and/or execute arbitrary delegatecall logic, enabling full takeover.",
"findings": [
{
"title": "Unprotected initializer allows arbitrary subcontract replacement and delegatecall execution",
"category": "access_control",
"evidence": "`initialize` is `public` with no access control; it sets `subContracts` from calldata and returns early when `additionalDataSize == 0`, allowing reconfiguration without the sentinel guard. It also allows arbitrary `externalInitializerAddr` delegatecall from calldata.",
"severity": "critical",
"locations": [
"contracts/MainDispatcherBase.sol:126",
"contracts/MainDispatcherBase.sol:148",
"contracts/MainDispatcherBase.sol:171",
"contracts/MainDispatcherBase.sol:179",
"contracts/MainDispatcherBase.sol:270"
],
"recommendation": "Restrict `initialize` to a trusted governance/upgrade authority and enforce a one-time (or versioned) initialization flag. Also ensure the \u201cno additional data\u201d path cannot be used to reconfigure subcontracts without explicit authorization (e.g., always require an initialization sentinel or `initialized` guard). Consider validating external initializer addresses against an allowlist in upgrades.",
"exploit_scenario": "Any external account can call `initialize` on the dispatcher/proxy with crafted data. Because there is no access control, the caller can set `subContracts` to attacker-controlled implementations (passing `identify()` checks) and immediately hijack all delegated function calls. Alternatively, the caller can supply a non-zero external initializer address and trigger `delegatecall` into attacker code, gaining full control over storage (e.g., governance, asset mappings, balances) and potentially draining funds."
}
],
"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 0x004e 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x439fab91 00000019: EQ 0000001a: PUSH2 0x0133 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xadac3e15 00000024: EQ 00000025: PUSH2 0x01e6 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xc1a85130 0000002f: EQ 00000030: PUSH2 0x020d 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xf2011f66 0000003a: EQ 0000003b: PUSH2 0x0222 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xffa1ad74 00000045: EQ 00000046: PUSH2 0x024c 00000049: JUMPI 0000004a: PUSH2 0x00a0 0000004d: JUMP 0000004e: JUMPDEST 0000004f: CALLDATASIZE 00000050: PUSH2 0x00a0 00000053: JUMPI 00000054: PUSH1 0x40 00000056: DUP1 00000057: MLOAD 00000058: PUSH3 0x461bcd 0000005c: PUSH1 0xe5 0000005e: SHL 0000005f: DUP2 00000060: MSTORE 00000061: PUSH1 0x20 00000063: PUSH1 0x04 00000065: DUP3 00000066: ADD 00000067: DUP2 00000068: SWAP1 00000069: MSTORE 0000006a: PUSH1 0x24 0000006c: DUP3 0000006d: ADD 0000006e: MSTORE 0000006f: PUSH32 0x434f4e54524143545f4e4f545f45585045435445445f544f5f52454345495645 00000090: PUSH1 0x44 00000092: DUP3 00000093: ADD 00000094: MSTORE 00000095: SWAP1 00000096: MLOAD 00000097: SWAP1 00000098: DUP2 00000099: SWAP1 0000009a: SUB 0000009b: PUSH1 0x64 0000009d: ADD 0000009e: SWAP1 0000009f: REVERT 000000a0: JUMPDEST 000000a1: PUSH1 0x00 000000a3: PUSH2 0x00b7 000000a6: PUSH1 0x00 000000a8: CALLDATALOAD 000000a9: PUSH1 0x01 000000ab: PUSH1 0x01 000000ad: PUSH1 0xe0 000000af: SHL 000000b0: SUB 000000b1: NOT 000000b2: AND 000000b3: PUSH2 0x02d6 000000b6: JUMP 000000b7: JUMPDEST 000000b8: SWAP1 000000b9: POP 000000ba: PUSH1 0x01 000000bc: PUSH1 0x01 000000be: PUSH1 0xa0 000000c0: SHL 000000c1: SUB 000000c2: DUP2 000000c3: AND 000000c4: PUSH2 0x010f 000000c7: JUMPI 000000c8: PUSH1 0x40 000000ca: DUP1 000000cb: MLOAD 000000cc: PUSH3 0x461bcd 000000d0: PUSH1 0xe5 000000d2: SHL 000000d3: DUP2 000000d4: MSTORE 000000d5: PUSH1 0x20 000000d7: PUSH1 0x04 000000d9: DUP3 000000da: ADD 000000db: MSTORE 000000dc: PUSH1 0x18 000000de: PUSH1 0x24 000000e0: DUP3 000000e1: ADD 000000e2: MSTORE 000000e3: PUSH24 0x2727afa1a7a72a2920a1aa2fa327a92fa32aa721aa24a7a7 000000fc: PUSH1 0x41 000000fe: SHL 000000ff: PUSH1 0x44 00000101: DUP3 00000102: ADD 00000103: MSTORE 00000104: SWAP1 00000105: MLOAD 00000106: SWAP1 00000107: DUP2 00000108: SWAP1 00000109: SUB 0000010a: PUSH1 0x64 0000010c: ADD 0000010d: SWAP1 0000010e: REVERT 0000010f: JUMPDEST 00000110: CALLDATASIZE 00000111: PUSH1 0x00 00000113: DUP1 00000114: CALLDATACOPY 00000115: PUSH1 0x00 00000117: DUP1 00000118: CALLDATASIZE 00000119: PUSH1 0x00 0000011b: DUP5 0000011c: GAS 0000011d: DELEGATECALL 0000011e: RETURNDATASIZE 0000011f: PUSH1 0x00 00000121: DUP1 00000122: RETURNDATACOPY 00000123: DUP1 00000124: DUP1 00000125: ISZERO 00000126: PUSH2 0x012e 00000129: JUMPI 0000012a: RETURNDATASIZE 0000012b: PUSH1 0x00 0000012d: RETURN 0000012e: JUMPDEST 0000012f: RETURNDATASIZE 00000130: PUSH1 0x00 00000132: REVERT 00000133: JUMPDEST 00000134: CALLVALUE 00000135: DUP1 00000136: ISZERO 00000137: PUSH2 0x013f 0000013a: JUMPI 0000013b: PUSH1 0x00 0000013d: DUP1 0000013e: REVERT 0000013f: JUMPDEST 00000140: POP 00000141: PUSH2 0x01e4 00000144: PUSH1 0x04 00000146: DUP1 00000147: CALLDATASIZE 00000148: SUB 00000149: PUSH1 0x20 0000014b: DUP2 0000014c: LT 0000014d: ISZERO 0000014e: PUSH2 0x0156 00000151: JUMPI 00000152: PUSH1 0x00 00000154: DUP1 00000155: REVERT 00000156: JUMPDEST 00000157: DUP2 00000158: ADD 00000159: SWAP1 0000015a: PUSH1 0x20 0000015c: DUP2 0000015d: ADD 0000015e: DUP2 0000015f: CALLDATALOAD 00000160: PUSH1 0x01 00000162: PUSH1 0x20 00000164: SHL 00000165: DUP2 00000166: GT 00000167: ISZERO 00000168: PUSH2 0x0170 0000016b: JUMPI 0000016c: PUSH1 0x00 0000016e: DUP1 0000016f: REVERT 00000170: JUMPDEST 00000171: DUP3 00000172: ADD 00000173: DUP4 00000174: PUSH1 0x20 00000176: DUP3 00000177: ADD 00000178: GT 00000179: ISZERO 0000017a: PUSH2 0x0182 0000017d: JUMPI 0000017e: PUSH1 0x00 00000180: DUP1 00000181: REVERT 00000182: JUMPDEST 00000183: DUP1 00000184: CALLDATALOAD 00000185: SWAP1 00000186: PUSH1 0x20 00000188: ADD 00000189: SWAP2 0000018a: DUP5 0000018b: PUSH1 0x01 0000018d: DUP4 0000018e: MUL 0000018f: DUP5 00000190: ADD 00000191: GT 00000192: PUSH1 0x01 00000194: PUSH1 0x20 00000196: SHL 00000197: DUP4 00000198: GT 00000199: OR 0000019a: ISZERO 0000019b: PUSH2 0x01a3 0000019e: JUMPI 0000019f: PUSH1 0x00 000001a1: DUP1 000001a2: REVERT 000001a3: JUMPDEST 000001a4: SWAP2 000001a5: SWAP1 000001a6: DUP1 000001a7: DUP1 000001a8: PUSH1 0x1f 000001aa: ADD 000001ab: PUSH1 0x20 000001ad: DUP1 000001ae: SWAP2 000001af: DIV 000001b0: MUL 000001b1: PUSH1 0x20 000001b3: ADD 000001b4: PUSH1 0x40 000001b6: MLOAD 000001b7: SWAP1 000001b8: DUP2 000001b9: ADD 000001ba: PUSH1 0x40 000001bc: MSTORE 000001bd: DUP1 000001be: SWAP4 000001bf: SWAP3 000001c0: SWAP2 000001c1: SWAP1 000001c2: DUP2 000001c3: DUP2 000001c4: MSTORE 000001c5: PUSH1 0x20 000001c7: ADD 000001c8: DUP4 000001c9: DUP4 000001ca: DUP1 000001cb: DUP3 000001cc: DUP5 000001cd: CALLDATACOPY 000001ce: PUSH1 0x00 000001d0: SWAP3 000001d1: ADD 000001d2: SWAP2 000001d3: SWAP1 000001d4: SWAP2 000001d5: MSTORE 000001d6: POP 000001d7: SWAP3 000001d8: SWAP6 000001d9: POP 000001da: PUSH2 0x0362 000001dd: SWAP5 000001de: POP 000001df: POP 000001e0: POP 000001e1: POP 000001e2: POP 000001e3: JUMP 000001e4: JUMPDEST 000001e5: STOP 000001e6: JUMPDEST 000001e7: CALLVALUE 000001e8: DUP1 000001e9: ISZERO 000001ea: PUSH2 0x01f2 000001ed: JUMPI 000001ee: PUSH1 0x00 000001f0: DUP1 000001f1: REVERT 000001f2: JUMPDEST 000001f3: POP 000001f4: PUSH2 0x01fb 000001f7: PUSH2 0x09cb 000001fa: JUMP 000001fb: JUMPDEST 000001fc: PUSH1 0x40 000001fe: DUP1 000001ff: MLOAD 00000200: SWAP2 00000201: DUP3 00000202: MSTORE 00000203: MLOAD 00000204: SWAP1 00000205: DUP2 00000206: SWAP1 00000207: SUB 00000208: PUSH1 0x20 0000020a: ADD 0000020b: SWAP1 0000020c: RETURN 0000020d: JUMPDEST 0000020e: CALLVALUE 0000020f: DUP1 00000210: ISZERO 00000211: PUSH2 0x0219 00000214: JUMPI 00000215: PUSH1 0x00 00000217: DUP1 00000218: REVERT 00000219: JUMPDEST 0000021a: POP 0000021b: PUSH2 0x01fb 0000021e: PUSH2 0x09d9 00000221: JUMP 00000222: JUMPDEST 00000223: CALLVALUE 00000224: DUP1 00000225: ISZERO 00000226: PUSH2 0x022e 00000229: JUMPI 0000022a: PUSH1 0x00 0000022c: DUP1 0000022d: REVERT 0000022e: JUMPDEST 0000022f: POP 00000230: PUSH2 0x01fb 00000233: PUSH1 0x04 00000235: DUP1 00000236: CALLDATASIZE 00000237: SUB 00000238: PUSH1 0x20 0000023a: DUP2 0000023b: LT 0000023c: ISZERO 0000023d: PUSH2 0x0245 00000240: JUMPI 00000241: PUSH1 0x00 00000243: DUP1 00000244: REVERT 00000245: JUMPDEST 00000246: POP 00000247: CALLDATALOAD 00000248: PUSH2 0x09e7 0000024b: JUMP 0000024c: JUMPDEST 0000024d: CALLVALUE 0000024e: DUP1 0000024f: ISZERO 00000250: PUSH2 0x0258 00000253: JUMPI 00000254: PUSH1 0x00 00000256: DUP1 00000257: REVERT 00000258: JUMPDEST 00000259: POP 0000025a: PUSH2 0x0261 0000025d: PUSH2 0x0a01 00000260: JUMP 00000261: JUMPDEST 00000262: PUSH1 0x40 00000264: DUP1 00000265: MLOAD 00000266: PUSH1 0x20 00000268: DUP1 00000269: DUP3 0000026a: MSTORE 0000026b: DUP4 0000026c: MLOAD 0000026d: DUP2 0000026e: DUP4 0000026f: ADD 00000270: MSTORE 00000271: DUP4 00000272: MLOAD 00000273: SWAP2 00000274: SWAP3 00000275: DUP4 00000276: SWAP3 00000277: SWAP1 00000278: DUP4 00000279: ADD 0000027a: SWAP2 0000027b: DUP6 0000027c: ADD 0000027d: SWAP1 0000027e: DUP1 0000027f: DUP4 00000280: DUP4 00000281: PUSH1 0x00 00000283: JUMPDEST 00000284: DUP4 00000285: DUP2 00000286: LT 00000287: ISZERO 00000288: PUSH2 0x029b 0000028b: JUMPI 0000028c: DUP2 0000028d: DUP2 0000028e: ADD 0000028f: MLOAD 00000290: DUP4 00000291: DUP3 00000292: ADD 00000293: MSTORE 00000294: PUSH1 0x20 00000296: ADD 00000297: PUSH2 0x0283 0000029a: JUMP 0000029b: JUMPDEST 0000029c: POP 0000029d: POP 0000029e: POP 0000029f: POP 000002a0: SWAP1 000002a1: POP 000002a2: SWAP1 000002a3: DUP2 000002a4: ADD 000002a5: SWAP1 000002a6: PUSH1 0x1f 000002a8: AND 000002a9: DUP1 000002aa: ISZERO 000002ab: PUSH2 0x02c8 000002ae: JUMPI 000002af: DUP1 000002b0: DUP3 000002b1: SUB 000002b2: DUP1 000002b3: MLOAD 000002b4: PUSH1 0x01 000002b6: DUP4 000002b7: PUSH1 0x20 000002b9: SUB 000002ba: PUSH2 0x0100 000002bd: EXP 000002be: SUB 000002bf: NOT 000002c0: AND 000002c1: DUP2 000002c2: MSTORE 000002c3: PUSH1 0x20 000002c5: ADD 000002c6: SWAP2 000002c7: POP 000002c8: JUMPDEST 000002c9: POP 000002ca: SWAP3 000002cb: POP 000002cc: POP 000002cd: POP 000002ce: PUSH1 0x40 000002d0: MLOAD 000002d1: DUP1 000002d2: SWAP2 000002d3: SUB 000002d4: SWAP1 000002d5: RETURN 000002d6: JUMPDEST 000002d7: PUSH1 0x00 000002d9: DUP1 000002da: DUP3 000002db: PUSH2 0x02e2 000002de: PUSH2 0x0a22 000002e1: JUMP 000002e2: JUMPDEST 000002e3: PUSH1 0x40 000002e5: DUP1 000002e6: MLOAD 000002e7: PUSH1 0x01 000002e9: PUSH1 0x01 000002eb: PUSH1 0xe0 000002ed: SHL 000002ee: SUB 000002ef: NOT 000002f0: SWAP1 000002f1: SWAP4 000002f2: AND 000002f3: PUSH1 0x20 000002f5: DUP1 000002f6: DUP6 000002f7: ADD 000002f8: SWAP2 000002f9: SWAP1 000002fa: SWAP2 000002fb: MSTORE 000002fc: PUSH1 0x24 000002fe: DUP1 000002ff: DUP6 00000300: ADD 00000301: SWAP4 00000302: SWAP1 00000303: SWAP4 00000304: MSTORE 00000305: DUP2 00000306: MLOAD 00000307: DUP1 00000308: DUP6 00000309: SUB 0000030a: SWAP1 0000030b: SWAP4 0000030c: ADD 0000030d: DUP4 0000030e: MSTORE 0000030f: PUSH1 0x44 00000311: SWAP1 00000312: SWAP4 00000313: ADD 00000314: SWAP1 00000315: MSTORE 00000316: DUP1 00000317: MLOAD 00000318: SWAP2 00000319: ADD 0000031a: KECCAK256 0000031b: PUSH1 0xff 0000031d: AND 0000031e: SWAP1 0000031f: POP 00000320: PUSH1 0x00 00000322: DUP1 00000323: PUSH2 0x0100 00000326: PUSH1 0x04 00000328: DUP5 00000329: MUL 0000032a: MOD 0000032b: SWAP1 0000032c: POP 0000032d: DUP1 0000032e: PUSH2 0x033a 00000331: PUSH1 0x06 00000333: DUP6 00000334: SWAP1 00000335: SHR 00000336: PUSH2 0x0a28 00000339: JUMP 0000033a: JUMPDEST 0000033b: PUSH1 0x0f 0000033d: SWAP2 0000033e: SHR 0000033f: AND 00000340: PUSH1 0x00 00000342: SWAP1 00000343: DUP2 00000344: MSTORE 00000345: PUSH1 0x1e 00000347: PUSH1 0x20 00000349: MSTORE 0000034a: PUSH1 0x40 0000034c: SWAP1 0000034d: KECCAK256 0000034e: SLOAD 0000034f: PUSH1 0x01 00000351: PUSH1 0x01 00000353: PUSH1 0xa0 00000355: SHL 00000356: SUB 00000357: AND 00000358: SWAP4 00000359: POP 0000035a: POP 0000035b: POP 0000035c: POP 0000035d: JUMPDEST 0000035e: SWAP2 0000035f: SWAP1 00000360: POP 00000361: JUMP 00000362: JUMPDEST 00000363: PUSH32 0xa8be027c40582873fe725a541de3bd3b732b003dc1a1a6df763248c6df60208d 00000384: DUP1 00000385: SLOAD 00000386: SWAP1 00000387: DUP2 00000388: ISZERO 00000389: PUSH2 0x03d2 0000038c: JUMPI 0000038d: PUSH1 0x40 0000038f: DUP1 00000390: MLOAD 00000391: PUSH3 0x461bcd 00000395: PUSH1 0xe5 00000397: SHL 00000398: DUP2 00000399: MSTORE 0000039a: PUSH1 0x20 0000039c: PUSH1 0x04 0000039e: DUP3 0000039f: ADD 000003a0: MSTORE 000003a1: PUSH1 0x16 000003a3: PUSH1 0x24 000003a5: DUP3 000003a6: ADD 000003a7: MSTORE 000003a8: PUSH22 0x1112549150d517d0d0531317d11254d0531313d5d151 000003bf: PUSH1 0x52 000003c1: SHL 000003c2: PUSH1 0x44 000003c4: DUP3 000003c5: ADD 000003c6: MSTORE 000003c7: SWAP1 000003c8: MLOAD 000003c9: SWAP1 000003ca: DUP2 000003cb: SWAP1 000003cc: SUB 000003cd: PUSH1 0x64 000003cf: ADD 000003d0: SWAP1 000003d1: REVERT 000003d2: JUMPDEST 000003d3: POP 000003d4: POP 000003d5: PUSH1 0x00 000003d7: PUSH2 0x03de 000003da: PUSH2 0x0b20 000003dd: JUMP 000003de: JUMPDEST 000003df: SWAP1 000003e0: POP 000003e1: PUSH1 0x0f 000003e3: DUP2 000003e4: GT 000003e5: ISZERO 000003e6: PUSH2 0x042f 000003e9: JUMPI 000003ea: PUSH1 0x40 000003ec: DUP1 000003ed: MLOAD 000003ee: PUSH3 0x461bcd 000003f2: PUSH1 0xe5 000003f4: SHL 000003f5: DUP2 000003f6: MSTORE 000003f7: PUSH1 0x20 000003f9: PUSH1 0x04 000003fb: DUP3 000003fc: ADD 000003fd: MSTORE 000003fe: PUSH1 0x16 00000400: PUSH1 0x24 00000402: DUP3 00000403: ADD 00000404: MSTORE 00000405: PUSH22 0x544f4f5f4d414e595f5355425f434f4e545241435453 0000041c: PUSH1 0x50 0000041e: SHL 0000041f: PUSH1 0x44 00000421: DUP3 00000422: ADD 00000423: MSTORE 00000424: SWAP1 00000425: MLOAD 00000426: SWAP1 00000427: DUP2 00000428: SWAP1 00000429: SUB 0000042a: PUSH1 0x64 0000042c: ADD 0000042d: SWAP1 0000042e: REVERT 0000042f: JUMPDEST 00000430: DUP1 00000431: PUSH1 0x01 00000433: ADD 00000434: PUSH1 0x20 00000436: MUL 00000437: DUP3 00000438: MLOAD 00000439: LT 0000043a: ISZERO 0000043b: PUSH2 0x048b 0000043e: JUMPI 0000043f: PUSH1 0x40 00000441: DUP1 00000442: MLOAD 00000443: PUSH3 0x461bcd 00000447: PUSH1 0xe5 00000449: SHL 0000044a: DUP2 0000044b: MSTORE 0000044c: PUSH1 0x20 0000044e: PUSH1 0x04 00000450: DUP3 00000451: ADD 00000452: MSTORE 00000453: PUSH1 0x1a 00000455: PUSH1 0x24 00000457: DUP3 00000458: ADD 00000459: MSTORE 0000045a: PUSH32 0x5355425f434f4e5452414354535f4e4f545f50524f5649444544000000000000 0000047b: PUSH1 0x44 0000047d: DUP3 0000047e: ADD 0000047f: MSTORE 00000480: SWAP1 00000481: MLOAD 00000482: SWAP1 00000483: DUP2 00000484: SWAP1 00000485: SUB 00000486: PUSH1 0x64 00000488: ADD 00000489: SWAP1 0000048a: REVERT 0000048b: JUMPDEST 0000048c: DUP2 0000048d: MLOAD 0000048e: PUSH1 0x01 00000490: DUP3 00000491: DUP2 00000492: ADD 00000493: PUSH1 0x20 00000495: MUL 00000496: SWAP2 00000497: DUP3 00000498: SWAP1 00000499: SUB 0000049a: SWAP2 0000049b: PUSH1 0x00 0000049d: SWAP2 0000049e: JUMPDEST 0000049f: DUP5 000004a0: DUP2 000004a1: GT 000004a2: PUSH2 0x04c9 000004a5: JUMPI 000004a6: PUSH1 0x20 000004a8: DUP2 000004a9: MUL 000004aa: DUP7 000004ab: ADD 000004ac: MLOAD 000004ad: PUSH2 0x04b6 000004b0: DUP3 000004b1: DUP3 000004b2: PUSH2 0x0b25 000004b5: JUMP 000004b6: JUMPDEST 000004b7: PUSH2 0x04c0 000004ba: DUP3 000004bb: DUP3 000004bc: PUSH2 0x0d78 000004bf: JUMP 000004c0: JUMPDEST 000004c1: POP 000004c2: PUSH1 0x01 000004c4: ADD 000004c5: PUSH2 0x049e 000004c8: JUMP 000004c9: JUMPDEST 000004ca: POP 000004cb: PUSH1 0x20 000004cd: PUSH1 0x01 000004cf: DUP6 000004d0: ADD 000004d1: MUL 000004d2: DUP6 000004d3: ADD 000004d4: MLOAD 000004d5: PUSH1 0x01 000004d7: PUSH1 0x01 000004d9: PUSH1 0xa0 000004db: SHL 000004dc: SUB 000004dd: DUP2 000004de: AND 000004df: ISZERO 000004e0: PUSH2 0x04f8 000004e3: JUMPI 000004e4: PUSH2 0x04ee 000004e7: DUP7 000004e8: DUP3 000004e9: DUP7 000004ea: PUSH2 0x0da6 000004ed: JUMP 000004ee: JUMPDEST 000004ef: POP 000004f0: POP 000004f1: POP 000004f2: POP 000004f3: POP 000004f4: PUSH2 0x09c8 000004f7: JUMP 000004f8: JUMPDEST 000004f9: DUP4 000004fa: PUSH2 0x0507 000004fd: JUMPI 000004fe: POP 000004ff: POP 00000500: POP 00000501: POP 00000502: POP 00000503: PUSH2 0x09c8 00000506: JUMP 00000507: JUMPDEST 00000508: PUSH1 0x01 0000050a: PUSH1 0x01 0000050c: PUSH1 0xa0 0000050e: SHL 0000050f: SUB 00000510: DUP2 00000511: AND 00000512: ISZERO 00000513: PUSH2 0x0518 00000516: JUMPI 00000517: INVALID 00000518: JUMPDEST 00000519: PUSH2 0x0520 0000051c: PUSH2 0x10b5 0000051f: JUMP 00000520: JUMPDEST 00000521: PUSH1 0x01 00000523: JUMPDEST 00000524: DUP6 00000525: DUP2 00000526: GT 00000527: PUSH2 0x096d 0000052a: JUMPI 0000052b: PUSH1 0x20 0000052d: DUP1 0000052e: DUP3 0000052f: MUL 00000530: DUP9 00000531: ADD 00000532: MLOAD 00000533: PUSH1 0x40 00000535: DUP1 00000536: MLOAD 00000537: PUSH1 0x04 00000539: DUP2 0000053a: MSTORE 0000053b: PUSH1 0x24 0000053d: DUP2 0000053e: ADD 0000053f: DUP3 00000540: MSTORE 00000541: SWAP3 00000542: DUP4 00000543: ADD 00000544: DUP1 00000545: MLOAD 00000546: PUSH1 0x01 00000548: PUSH1 0x01 0000054a: PUSH1 0xe0 0000054c: SHL 0000054d: SUB 0000054e: AND 0000054f: PUSH4 0x3cc660ad 00000554: PUSH1 0xe0 00000556: SHL 00000557: OR 00000558: DUP2 00000559: MSTORE 0000055a: SWAP1 0000055b: MLOAD 0000055c: DUP4 0000055d: MLOAD 0000055e: SWAP3 0000055f: SWAP4 00000560: PUSH1 0x00 00000562: SWAP4 00000563: PUSH1 0x60 00000565: SWAP4 00000566: PUSH1 0x01 00000568: PUSH1 0x01 0000056a: PUSH1 0xa0 0000056c: SHL 0000056d: SUB 0000056e: DUP8 0000056f: AND 00000570: SWAP4 00000571: SWAP2 00000572: DUP3 00000573: SWAP2 00000574: SWAP1 00000575: DUP1 00000576: DUP4 00000577: DUP4 00000578: JUMPDEST 00000579: PUSH1 0x20 0000057b: DUP4 0000057c: LT 0000057d: PUSH2 0x0597 00000580: JUMPI 00000581: DUP1 00000582: MLOAD 00000583: DUP3 00000584: MSTORE 00000585: PUSH1 0x1f 00000587: NOT 00000588: SWAP1 00000589: SWAP3 0000058a: ADD 0000058b: SWAP2 0000058c: PUSH1 0x20 0000058e: SWAP2 0000058f: DUP3 00000590: ADD 00000591: SWAP2 00000592: ADD 00000593: PUSH2 0x0578 00000596: JUMP 00000597: JUMPDEST 00000598: PUSH1 0x01 0000059a: DUP4 0000059b: PUSH1 0x20 0000059d: SUB 0000059e: PUSH2 0x0100 000005a1: EXP 000005a2: SUB 000005a3: DUP1 000005a4: NOT 000005a5: DUP3 000005a6: MLOAD 000005a7: AND 000005a8: DUP2 000005a9: DUP5 000005aa: MLOAD 000005ab: AND 000005ac: DUP1 000005ad: DUP3 000005ae: OR 000005af: DUP6 000005b0: MSTORE 000005b1: POP 000005b2: POP 000005b3: POP 000005b4: POP 000005b5: POP 000005b6: POP 000005b7: SWAP1 000005b8: POP 000005b9: ADD 000005ba: SWAP2 000005bb: POP 000005bc: POP 000005bd: PUSH1 0x00 000005bf: PUSH1 0x40 000005c1: MLOAD 000005c2: DUP1 000005c3: DUP4 000005c4: SUB 000005c5: DUP2 000005c6: DUP6 000005c7: GAS 000005c8: DELEGATECALL 000005c9: SWAP2 000005ca: POP 000005cb: POP 000005cc: RETURNDATASIZE 000005cd: DUP1 000005ce: PUSH1 0x00 000005d0: DUP2 000005d1: EQ 000005d2: PUSH2 0x05f7 000005d5: JUMPI 000005d6: PUSH1 0x40 000005d8: MLOAD 000005d9: SWAP2 000005da: POP 000005db: PUSH1 0x1f 000005dd: NOT 000005de: PUSH1 0x3f 000005e0: RETURNDATASIZE 000005e1: ADD 000005e2: AND 000005e3: DUP3 000005e4: ADD 000005e5: PUSH1 0x40 000005e7: MSTORE 000005e8: RETURNDATASIZE 000005e9: DUP3 000005ea: MSTORE 000005eb: RETURNDATASIZE 000005ec: PUSH1 0x00 000005ee: PUSH1 0x20 000005f0: DUP5 000005f1: ADD 000005f2: RETURNDATACOPY 000005f3: PUSH2 0x05fc 000005f6: JUMP 000005f7: JUMPDEST 000005f8: PUSH1 0x60 000005fa: SWAP2 000005fb: POP 000005fc: JUMPDEST 000005fd: POP 000005fe: SWAP2 000005ff: POP 00000600: SWAP2 00000601: POP 00000602: DUP2 00000603: DUP2 00000604: SWAP1 00000605: PUSH2 0x068c 00000608: JUMPI 00000609: PUSH1 0x40 0000060b: MLOAD 0000060c: PUSH3 0x461bcd 00000610: PUSH1 0xe5 00000612: SHL 00000613: DUP2 00000614: MSTORE 00000615: PUSH1 0x04 00000617: ADD 00000618: DUP1 00000619: DUP1 0000061a: PUSH1 0x20 0000061c: ADD 0000061d: DUP3 0000061e: DUP2 0000061f: SUB 00000620: DUP3 00000621: MSTORE 00000622: DUP4 00000623: DUP2 00000624: DUP2 00000625: MLOAD 00000626: DUP2 00000627: MSTORE 00000628: PUSH1 0x20 0000062a: ADD 0000062b: SWAP2 0000062c: POP 0000062d: DUP1 0000062e: MLOAD 0000062f: SWAP1 00000630: PUSH1 0x20 00000632: ADD 00000633: SWAP1 00000634: DUP1 00000635: DUP4 00000636: DUP4 00000637: PUSH1 0x00 00000639: JUMPDEST 0000063a: DUP4 0000063b: DUP2 0000063c: LT 0000063d: ISZERO 0000063e: PUSH2 0x0651 00000641: JUMPI 00000642: DUP2 00000643: DUP2 00000644: ADD 00000645: MLOAD 00000646: DUP4 00000647: DUP3 00000648: ADD 00000649: MSTORE 0000064a: PUSH1 0x20 0000064c: ADD 0000064d: PUSH2 0x0639 00000650: JUMP 00000651: JUMPDEST 00000652: POP 00000653: POP 00000654: POP 00000655: POP 00000656: SWAP1 00000657: POP 00000658: SWAP1 00000659: DUP2 0000065a: ADD 0000065b: SWAP1 0000065c: PUSH1 0x1f 0000065e: AND 0000065f: DUP1 00000660: ISZERO 00000661: PUSH2 0x067e 00000664: JUMPI 00000665: DUP1 00000666: DUP3 00000667: SUB 00000668: DUP1 00000669: MLOAD 0000066a: PUSH1 0x01 0000066c: DUP4 0000066d: PUSH1 0x20 0000066f: SUB 00000670: PUSH2 0x0100 00000673: EXP 00000674: SUB 00000675: NOT 00000676: AND 00000677: DUP2 00000678: MSTORE 00000679: PUSH1 0x20 0000067b: ADD 0000067c: SWAP2 0000067d: POP 0000067e: JUMPDEST 0000067f: POP 00000680: SWAP3 00000681: POP 00000682: POP 00000683: POP 00000684: PUSH1 0x40 00000686: MLOAD 00000687: DUP1 00000688: SWAP2 00000689: SUB 0000068a: SWAP1 0000068b: REVERT 0000068c: JUMPDEST 0000068d: POP 0000068e: PUSH1 0x00 00000690: DUP2 00000691: DUP1 00000692: PUSH1 0x20 00000694: ADD 00000695: SWAP1 00000696: MLOAD 00000697: PUSH1 0x20 00000699: DUP2 0000069a: LT 0000069b: ISZERO 0000069c: PUSH2 0x06a4 0000069f: JUMPI 000006a0: PUSH1 0x00 000006a2: DUP1 000006a3: REVERT 000006a4: JUMPDEST 000006a5: POP 000006a6: MLOAD 000006a7: SWAP1 000006a8: POP 000006a9: DUP9 000006aa: DUP2 000006ab: GT 000006ac: ISZERO 000006ad: PUSH2 0x06f8 000006b0: JUMPI 000006b1: PUSH1 0x40 000006b3: DUP1 000006b4: MLOAD 000006b5: PUSH3 0x461bcd 000006b9: PUSH1 0xe5 000006bb: SHL 000006bc: DUP2 000006bd: MSTORE 000006be: PUSH1 0x20 000006c0: PUSH1 0x04 000006c2: DUP3 000006c3: ADD 000006c4: MSTORE 000006c5: PUSH1 0x18 000006c7: PUSH1 0x24 000006c9: DUP3 000006ca: ADD 000006cb: MSTORE 000006cc: PUSH24 0x494e56414c49445f494e495449414c495a45525f53495a45 000006e5: PUSH1 0x40 000006e7: SHL 000006e8: PUSH1 0x44 000006ea: DUP3 000006eb: ADD 000006ec: MSTORE 000006ed: SWAP1 000006ee: MLOAD 000006ef: SWAP1 000006f0: DUP2 000006f1: SWAP1 000006f2: SUB 000006f3: PUSH1 0x64 000006f5: ADD 000006f6: SWAP1 000006f7: REVERT 000006f8: JUMPDEST 000006f9: DUP9 000006fa: DUP2 000006fb: DUP10 000006fc: ADD 000006fd: GT 000006fe: ISZERO 000006ff: PUSH2 0x074a 00000702: JUMPI 00000703: PUSH1 0x40 00000705: DUP1 00000706: MLOAD 00000707: PUSH3 0x461bcd 0000070b: PUSH1 0xe5 0000070d: SHL 0000070e: DUP2 0000070f: MSTORE 00000710: PUSH1 0x20 00000712: PUSH1 0x04 00000714: DUP3 00000715: ADD 00000716: MSTORE 00000717: PUSH1 0x18 00000719: PUSH1 0x24 0000071b: DUP3 0000071c: ADD 0000071d: MSTORE 0000071e: PUSH24 0x494e56414c49445f494e495449414c495a45525f53495a45 00000737: PUSH1 0x40 00000739: SHL 0000073a: PUSH1 0x44 0000073c: DUP3 0000073d: ADD 0000073e: MSTORE 0000073f: SWAP1 00000740: MLOAD 00000741: SWAP1 00000742: DUP2 00000743: SWAP1 00000744: SUB 00000745: PUSH1 0x64 00000747: ADD 00000748: SWAP1 00000749: REVERT 0000074a: JUMPDEST 0000074b: DUP1 0000074c: PUSH2 0x0758 0000074f: JUMPI 00000750: POP 00000751: POP 00000752: POP 00000753: POP 00000754: PUSH2 0x0965 00000757: JUMP 00000758: JUMPDEST 00000759: PUSH1 0x60 0000075b: DUP2 0000075c: PUSH8 0xffffffffffffffff 00000765: DUP2 00000766: GT 00000767: DUP1 00000768: ISZERO 00000769: PUSH2 0x0771 0000076c: JUMPI 0000076d: PUSH1 0x00 0000076f: DUP1 00000770: REVERT 00000771: JUMPDEST 00000772: POP 00000773: PUSH1 0x40 00000775: MLOAD 00000776: SWAP1 00000777: DUP1 00000778: DUP3 00000779: MSTORE 0000077a: DUP1 0000077b: PUSH1 0x1f 0000077d: ADD 0000077e: PUSH1 0x1f 00000780: NOT 00000781: AND 00000782: PUSH1 0x20 00000784: ADD 00000785: DUP3 00000786: ADD 00000787: PUSH1 0x40 00000789: MSTORE 0000078a: DUP1 0000078b: ISZERO 0000078c: PUSH2 0x079c 0000078f: JUMPI 00000790: PUSH1 0x20 00000792: DUP3 00000793: ADD 00000794: DUP2 00000795: DUP1 00000796: CALLDATASIZE 00000797: DUP4 00000798: CALLDATACOPY 00000799: ADD 0000079a: SWAP1 0000079b: POP 0000079c: JUMPDEST 0000079d: POP 0000079e: SWAP1 0000079f: POP 000007a0: PUSH1 0x20 000007a2: JUMPDEST 000007a3: DUP3 000007a4: DUP2 000007a5: GT 000007a6: PUSH2 0x07bb 000007a9: JUMPI 000007aa: DUP13 000007ab: DUP2 000007ac: ADD 000007ad: DUP10 000007ae: ADD 000007af: MLOAD 000007b0: DUP3 000007b1: DUP3 000007b2: ADD 000007b3: MSTORE 000007b4: PUSH1 0x20 000007b6: ADD 000007b7: PUSH2 0x07a2 000007ba: JUMP 000007bb: JUMPDEST 000007bc: POP 000007bd: PUSH1 0x40 000007bf: MLOAD 000007c0: PUSH1 0x20 000007c2: PUSH1 0x24 000007c4: DUP3 000007c5: ADD 000007c6: DUP2 000007c7: DUP2 000007c8: MSTORE 000007c9: DUP4 000007ca: MLOAD 000007cb: PUSH1 0x44 000007cd: DUP5 000007ce: ADD 000007cf: MSTORE 000007d0: DUP4 000007d1: MLOAD 000007d2: PUSH1 0x01 000007d4: PUSH1 0x01 000007d6: PUSH1 0xa0 000007d8: SHL 000007d9: SUB 000007da: DUP10 000007db: AND 000007dc: SWAP4 000007dd: PUSH4 0x439fab91 000007e2: PUSH1 0xe0 000007e4: SHL 000007e5: SWAP4 000007e6: DUP7 000007e7: SWAP4 000007e8: SWAP3 000007e9: DUP4 000007ea: SWAP3 000007eb: PUSH1 0x64 000007ed: ADD 000007ee: SWAP2 000007ef: DUP6 000007f0: ADD 000007f1: SWAP1 000007f2: DUP1 000007f3: DUP4 000007f4: DUP4 000007f5: PUSH1 0x00 000007f7: JUMPDEST 000007f8: DUP4 000007f9: DUP2 000007fa: LT 000007fb: ISZERO 000007fc: PUSH2 0x080f 000007ff: JUMPI 00000800: DUP2 00000801: DUP2 00000802: ADD 00000803: MLOAD 00000804: DUP4 00000805: DUP3 00000806: ADD 00000807: MSTORE 00000808: PUSH1 0x20 0000080a: ADD 0000080b: PUSH2 0x07f7 0000080e: JUMP 0000080f: JUMPDEST 00000810: POP 00000811: POP 00000812: POP 00000813: POP 00000814: SWAP1 00000815: POP 00000816: SWAP1 00000817: DUP2 00000818: ADD 00000819: SWAP1 0000081a: PUSH1 0x1f 0000081c: AND 0000081d: DUP1 0000081e: ISZERO 0000081f: PUSH2 0x083c 00000822: JUMPI 00000823: DUP1 00000824: DUP3 00000825: SUB 00000826: DUP1 00000827: MLOAD 00000828: PUSH1 0x01 0000082a: DUP4 0000082b: PUSH1 0x20 0000082d: SUB 0000082e: PUSH2 0x0100 00000831: EXP 00000832: SUB 00000833: NOT 00000834: AND 00000835: DUP2 00000836: MSTORE 00000837: PUSH1 0x20 00000839: ADD 0000083a: SWAP2 0000083b: POP 0000083c: JUMPDEST 0000083d: POP 0000083e: PUSH1 0x40 00000840: DUP1 00000841: MLOAD 00000842: PUSH1 0x1f 00000844: NOT 00000845: DUP2 00000846: DUP5 00000847: SUB 00000848: ADD 00000849: DUP2 0000084a: MSTORE 0000084b: SWAP2 0000084c: DUP2 0000084d: MSTORE 0000084e: PUSH1 0x20 00000850: DUP3 00000851: ADD 00000852: DUP1 00000853: MLOAD 00000854: PUSH1 0x01 00000856: PUSH1 0x01 00000858: PUSH1 0xe0 0000085a: SHL 0000085b: SUB 0000085c: AND 0000085d: PUSH1 0x01 0000085f: PUSH1 0x01 00000861: PUSH1 0xe0 00000863: SHL 00000864: SUB 00000865: NOT 00000866: SWAP1 00000867: SWAP8 00000868: AND 00000869: SWAP7 0000086a: SWAP1 0000086b: SWAP7 0000086c: OR 0000086d: DUP7 0000086e: MSTORE 0000086f: MLOAD 00000870: DUP2 00000871: MLOAD 00000872: SWAP2 00000873: SWAP6 00000874: SWAP1 00000875: SWAP5 00000876: POP 00000877: DUP5 00000878: SWAP4 00000879: POP 0000087a: SWAP2 0000087b: POP 0000087c: DUP1 0000087d: DUP4 0000087e: DUP4 0000087f: JUMPDEST 00000880: PUSH1 0x20 00000882: DUP4 00000883: LT 00000884: PUSH2 0x089e 00000887: JUMPI 00000888: DUP1 00000889: MLOAD 0000088a: DUP3 0000088b: MSTORE 0000088c: PUSH1 0x1f 0000088e: NOT 0000088f: SWAP1 00000890: SWAP3 00000891: ADD 00000892: SWAP2 00000893: PUSH1 0x20 00000895: SWAP2 00000896: DUP3 00000897: ADD 00000898: SWAP2 00000899: ADD 0000089a: PUSH2 0x087f 0000089d: JUMP 0000089e: JUMPDEST 0000089f: PUSH1 0x01 000008a1: DUP4 000008a2: PUSH1 0x20 000008a4: SUB 000008a5: PUSH2 0x0100 000008a8: EXP 000008a9: SUB 000008aa: DUP1 000008ab: NOT 000008ac: DUP3 000008ad: MLOAD 000008ae: AND 000008af: DUP2 000008b0: DUP5 000008b1: MLOAD 000008b2: AND 000008b3: DUP1 000008b4: DUP3 000008b5: OR 000008b6: DUP6 000008b7: MSTORE 000008b8: POP 000008b9: POP 000008ba: POP 000008bb: POP 000008bc: POP 000008bd: POP 000008be: SWAP1 000008bf: POP 000008c0: ADD 000008c1: SWAP2 000008c2: POP 000008c3: POP 000008c4: PUSH1 0x00 000008c6: PUSH1 0x40 000008c8: MLOAD 000008c9: DUP1 000008ca: DUP4 000008cb: SUB 000008cc: DUP2 000008cd: DUP6 000008ce: GAS 000008cf: DELEGATECALL 000008d0: SWAP2 000008d1: POP 000008d2: POP 000008d3: RETURNDATASIZE 000008d4: DUP1 000008d5: PUSH1 0x00 000008d7: DUP2 000008d8: EQ 000008d9: PUSH2 0x08fe 000008dc: JUMPI 000008dd: PUSH1 0x40 000008df: MLOAD 000008e0: SWAP2 000008e1: POP 000008e2: PUSH1 0x1f 000008e4: NOT 000008e5: PUSH1 0x3f 000008e7: RETURNDATASIZE 000008e8: ADD 000008e9: AND 000008ea: DUP3 000008eb: ADD 000008ec: PUSH1 0x40 000008ee: MSTORE 000008ef: RETURNDATASIZE 000008f0: DUP3 000008f1: MSTORE 000008f2: RETURNDATASIZE 000008f3: PUSH1 0x00 000008f5: PUSH1 0x20 000008f7: DUP5 000008f8: ADD 000008f9: RETURNDATACOPY 000008fa: PUSH2 0x0903 000008fd: JUMP 000008fe: JUMPDEST 000008ff: PUSH1 0x60 00000901: SWAP2 00000902: POP 00000903: JUMPDEST 00000904: POP 00000905: SWAP1 00000906: SWAP5 00000907: POP 00000908: SWAP3 00000909: POP 0000090a: DUP3 0000090b: DUP5 0000090c: PUSH2 0x0956 0000090f: JUMPI 00000910: PUSH1 0x40 00000912: MLOAD 00000913: PUSH3 0x461bcd 00000917: PUSH1 0xe5 00000919: SHL 0000091a: DUP2 0000091b: MSTORE 0000091c: PUSH1 0x20 0000091e: PUSH1 0x04 00000920: DUP3 00000921: ADD 00000922: DUP2 00000923: DUP2 00000924: MSTORE 00000925: DUP4 00000926: MLOAD 00000927: PUSH1 0x24 00000929: DUP5 0000092a: ADD 0000092b: MSTORE 0000092c: DUP4 0000092d: MLOAD 0000092e: SWAP1 0000092f: SWAP3 00000930: DUP4 00000931: SWAP3 00000932: PUSH1 0x44 00000934: SWAP1 00000935: SWAP2 00000936: ADD 00000937: SWAP2 00000938: SWAP1 00000939: DUP6 0000093a: ADD 0000093b: SWAP1 0000093c: DUP1 0000093d: DUP4 0000093e: DUP4 0000093f: PUSH1 0x00 00000941: DUP4 00000942: ISZERO 00000943: PUSH2 0x0651 00000946: JUMPI 00000947: DUP2 00000948: DUP2 00000949: ADD 0000094a: MLOAD 0000094b: DUP4 0000094c: DUP3 0000094d: ADD 0000094e: MSTORE 0000094f: PUSH1 0x20 00000951: ADD 00000952: PUSH2 0x0639 00000955: JUMP 00000956: JUMPDEST 00000957: POP 00000958: POP 00000959: SWAP7 0000095a: DUP8 0000095b: ADD 0000095c: SWAP7 0000095d: SWAP6 0000095e: SWAP1 0000095f: SWAP6 00000960: ADD 00000961: SWAP5 00000962: POP 00000963: POP 00000964: POP 00000965: JUMPDEST 00000966: PUSH1 0x01 00000968: ADD 00000969: PUSH2 0x0523 0000096c: JUMP 0000096d: JUMPDEST 0000096e: POP 0000096f: DUP3 00000970: DUP5 00000971: EQ 00000972: PUSH2 0x09c2 00000975: JUMPI 00000976: PUSH1 0x40 00000978: DUP1 00000979: MLOAD 0000097a: PUSH3 0x461bcd 0000097e: PUSH1 0xe5 00000980: SHL 00000981: DUP2 00000982: MSTORE 00000983: PUSH1 0x20 00000985: PUSH1 0x04 00000987: DUP3 00000988: ADD 00000989: MSTORE 0000098a: PUSH1 0x1a 0000098c: PUSH1 0x24 0000098e: DUP3 0000098f: ADD 00000990: MSTORE 00000991: PUSH32 0x4d49534d41544348494e475f494e49545f444154415f53495a45000000000000 000009b2: PUSH1 0x44 000009b4: DUP3 000009b5: ADD 000009b6: MSTORE 000009b7: SWAP1 000009b8: MLOAD 000009b9: SWAP1 000009ba: DUP2 000009bb: SWAP1 000009bc: SUB 000009bd: PUSH1 0x64 000009bf: ADD 000009c0: SWAP1 000009c1: REVERT 000009c2: JUMPDEST 000009c3: POP 000009c4: POP 000009c5: POP 000009c6: POP 000009c7: POP 000009c8: JUMPDEST 000009c9: POP 000009ca: JUMP 000009cb: JUMPDEST 000009cc: PUSH9 0x010000000000000001 000009d6: SLOAD 000009d7: DUP2 000009d8: JUMP 000009d9: JUMPDEST 000009da: PUSH9 0x010000000000000004 000009e4: SLOAD 000009e5: DUP2 000009e6: JUMP 000009e7: JUMPDEST 000009e8: PUSH9 0x010000000000000002 000009f2: PUSH1 0x20 000009f4: MSTORE 000009f5: PUSH1 0x00 000009f7: SWAP1 000009f8: DUP2 000009f9: MSTORE 000009fa: PUSH1 0x40 000009fc: SWAP1 000009fd: KECCAK256 000009fe: SLOAD 000009ff: DUP2 00000a00: JUMP 00000a01: JUMPDEST 00000a02: PUSH1 0x40 00000a04: MLOAD 00000a05: DUP1 00000a06: PUSH1 0x40 00000a08: ADD 00000a09: PUSH1 0x40 00000a0b: MSTORE 00000a0c: DUP1 00000a0d: PUSH1 0x05 00000a0f: DUP2 00000a10: MSTORE 00000a11: PUSH1 0x20 00000a13: ADD 00000a14: PUSH5 0x0312e302e3 00000a1a: PUSH1 0xdc 00000a1c: SHL 00000a1d: DUP2 00000a1e: MSTORE 00000a1f: POP 00000a20: DUP2 00000a21: JUMP 00000a22: JUMPDEST 00000a23: PUSH2 0x60ac 00000a26: SWAP1 00000a27: JUMP 00000a28: JUMPDEST 00000a29: PUSH1 0x00 00000a2b: DUP2 00000a2c: PUSH2 0x0a56 00000a2f: JUMPI 00000a30: POP 00000a31: PUSH32 0x3000100000203000002010004002012003003200010000001222000021002010 00000a52: PUSH2 0x035d 00000a55: JUMP 00000a56: JUMPDEST 00000a57: DUP2 00000a58: PUSH1 0x01 00000a5a: EQ 00000a5b: ISZERO 00000a5c: PUSH2 0x0a80 00000a5f: JUMPI 00000a60: POP 00000a61: PUSH26 0x4300000140200010000000001000030000300100000222303302 00000a7c: PUSH2 0x035d 00000a7f: JUMP 00000a80: JUMPDEST 00000a81: DUP2 00000a82: PUSH1 0x02 00000a84: EQ 00000a85: ISZERO 00000a86: PUSH2 0x0aaf 00000a89: JUMPI 00000a8a: POP 00000a8b: PUSH31 0x10001300000020200020000220001002020000320000020031100030020012 00000aab: PUSH2 0x035d 00000aae: JUMP 00000aaf: JUMPDEST 00000ab0: DUP2 00000ab1: PUSH1 0x03 00000ab3: EQ 00000ab4: ISZERO 00000ab5: PUSH2 0x0add 00000ab8: JUMPI 00000ab9: POP 00000aba: PUSH30 0x120300002000000000000100000000202001002000040101130302000000 00000ad9: PUSH2 0x035d 00000adc: JUMP 00000add: JUMPDEST 00000ade: PUSH1 0x40 00000ae0: DUP1 00000ae1: MLOAD 00000ae2: PUSH3 0x461bcd 00000ae6: PUSH1 0xe5 00000ae8: SHL 00000ae9: DUP2 00000aea: MSTORE 00000aeb: PUSH1 0x20 00000aed: PUSH1 0x04 00000aef: DUP3 00000af0: ADD 00000af1: MSTORE 00000af2: PUSH1 0x13 00000af4: PUSH1 0x24 00000af6: DUP3 00000af7: ADD 00000af8: MSTORE 00000af9: PUSH19 0x2120a22fa4a22c2fa6a0a82fa9a2a1aa24a7a7 00000b0d: PUSH1 0x69 00000b0f: SHL 00000b10: PUSH1 0x44 00000b12: DUP3 00000b13: ADD 00000b14: MSTORE 00000b15: SWAP1 00000b16: MLOAD 00000b17: SWAP1 00000b18: DUP2 00000b19: SWAP1 00000b1a: SUB 00000b1b: PUSH1 0x64 00000b1d: ADD 00000b1e: SWAP1 00000b1f: REVERT 00000b20: JUMPDEST 00000b21: PUSH1 0x04 00000b23: SWAP1 00000b24: JUMP 00000b25: JUMPDEST 00000b26: PUSH1 0x60 00000b28: DUP2 00000b29: PUSH1 0x01 00000b2b: PUSH1 0x01 00000b2d: PUSH1 0xa0 00000b2f: SHL 00000b30: SUB 00000b31: AND 00000b32: PUSH4 0xeeb72866 00000b37: PUSH1 0x40 00000b39: MLOAD 00000b3a: DUP2 00000b3b: PUSH4 0xffffffff 00000b40: AND 00000b41: PUSH1 0xe0 00000b43: SHL 00000b44: DUP2 00000b45: MSTORE 00000b46: PUSH1 0x04 00000b48: ADD 00000b49: PUSH1 0x00 00000b4b: PUSH1 0x40 00000b4d: MLOAD 00000b4e: DUP1 00000b4f: DUP4 00000b50: SUB 00000b51: DUP2 00000b52: DUP7 00000b53: DUP1 00000b54: EXTCODESIZE 00000b55: ISZERO 00000b56: DUP1 00000b57: ISZERO 00000b58: PUSH2 0x0b60 00000b5b: JUMPI 00000b5c: PUSH1 0x00 00000b5e: DUP1 00000b5f: REVERT 00000b60: JUMPDEST 00000b61: POP 00000b62: GAS 00000b63: STATICCALL 00000b64: ISZERO 00000b65: DUP1 00000b66: ISZERO 00000b67: PUSH2 0x0b74 00000b6a: JUMPI 00000b6b: RETURNDATASIZE 00000b6c: PUSH1 0x00 00000b6e: DUP1 00000b6f: RETURNDATACOPY 00000b70: RETURNDATASIZE 00000b71: PUSH1 0x00 00000b73: REVERT 00000b74: JUMPDEST 00000b75: POP 00000b76: POP 00000b77: POP 00000b78: POP 00000b79: PUSH1 0x40 00000b7b: MLOAD 00000b7c: RETURNDATASIZE 00000b7d: PUSH1 0x00 00000b7f: DUP3 00000b80: RETURNDATACOPY 00000b81: PUSH1 0x1f 00000b83: RETURNDATASIZE 00000b84: SWAP1 00000b85: DUP2 00000b86: ADD 00000b87: PUSH1 0x1f 00000b89: NOT 00000b8a: AND 00000b8b: DUP3 00000b8c: ADD 00000b8d: PUSH1 0x40 00000b8f: MSTORE 00000b90: PUSH1 0x20 00000b92: DUP2 00000b93: LT 00000b94: ISZERO 00000b95: PUSH2 0x0b9d 00000b98: JUMPI 00000b99: PUSH1 0x00 00000b9b: DUP1 00000b9c: REVERT 00000b9d: JUMPDEST 00000b9e: DUP2 00000b9f: ADD 00000ba0: SWAP1 00000ba1: DUP1 00000ba2: DUP1 00000ba3: MLOAD 00000ba4: PUSH1 0x40 00000ba6: MLOAD 00000ba7: SWAP4 00000ba8: SWAP3 00000ba9: SWAP2 00000baa: SWAP1 00000bab: DUP5 00000bac: PUSH1 0x01 00000bae: PUSH1 0x20 00000bb0: SHL 00000bb1: DUP3 00000bb2: GT 00000bb3: ISZERO 00000bb4: PUSH2 0x0bbc 00000bb7: JUMPI 00000bb8: PUSH1 0x00 00000bba: DUP1 00000bbb: REVERT 00000bbc: JUMPDEST 00000bbd: SWAP1 00000bbe: DUP4 00000bbf: ADD 00000bc0: SWAP1 00000bc1: PUSH1 0x20 00000bc3: DUP3 00000bc4: ADD 00000bc5: DUP6 00000bc6: DUP2 00000bc7: GT 00000bc8: ISZERO 00000bc9: PUSH2 0x0bd1 00000bcc: JUMPI 00000bcd: PUSH1 0x00 00000bcf: DUP1 00000bd0: REVERT 00000bd1: JUMPDEST 00000bd2: DUP3 00000bd3: MLOAD 00000bd4: PUSH1 0x01 00000bd6: PUSH1 0x20 00000bd8: SHL 00000bd9: DUP2 00000bda: GT 00000bdb: DUP3 00000bdc: DUP3 00000bdd: ADD 00000bde: DUP9 00000bdf: LT 00000be0: OR 00000be1: ISZERO 00000be2: PUSH2 0x0bea 00000be5: JUMPI 00000be6: PUSH1 0x00 00000be8: DUP1 00000be9: REVERT 00000bea: JUMPDEST 00000beb: DUP3 00000bec: MSTORE 00000bed: POP 00000bee: DUP2 00000bef: MLOAD 00000bf0: PUSH1 0x20 00000bf2: SWAP2 00000bf3: DUP3 00000bf4: ADD 00000bf5: SWAP3 00000bf6: SWAP1 00000bf7: SWAP2 00000bf8: ADD 00000bf9: SWAP1 00000bfa: DUP1 00000bfb: DUP4 00000bfc: DUP4 00000bfd: PUSH1 0x00 00000bff: JUMPDEST 00000c00: DUP4 00000c01: DUP2 00000c02: LT 00000c03: ISZERO 00000c04: PUSH2 0x0c17 00000c07: JUMPI 00000c08: DUP2 00000c09: DUP2 00000c0a: ADD 00000c0b: MLOAD 00000c0c: DUP4 00000c0d: DUP3 00000c0e: ADD 00000c0f: MSTORE 00000c10: PUSH1 0x20 00000c12: ADD 00000c13: PUSH2 0x0bff 00000c16: JUMP 00000c17: JUMPDEST 00000c18: POP 00000c19: POP 00000c1a: POP 00000c1b: POP 00000c1c: SWAP1 00000c1d: POP 00000c1e: SWAP1 00000c1f: DUP2 00000c20: ADD 00000c21: SWAP1 00000c22: PUSH1 0x1f 00000c24: AND 00000c25: DUP1 00000c26: ISZERO 00000c27: PUSH2 0x0c44 00000c2a: JUMPI 00000c2b: DUP1 00000c2c: DUP3 00000c2d: SUB 00000c2e: DUP1 00000c2f: MLOAD 00000c30: PUSH1 0x01 00000c32: DUP4 00000c33: PUSH1 0x20 00000c35: SUB 00000c36: PUSH2 0x0100 00000c39: EXP 00000c3a: SUB 00000c3b: NOT 00000c3c: AND 00000c3d: DUP2 00000c3e: MSTORE 00000c3f: PUSH1 0x20 00000c41: ADD 00000c42: SWAP2 00000c43: POP 00000c44: JUMPDEST 00000c45: POP 00000c46: PUSH1 0x40 00000c48: MSTORE 00000c49: POP 00000c4a: POP 00000c4b: POP 00000c4c: SWAP1 00000c4d: POP 00000c4e: PUSH1 0x00 00000c50: PUSH2 0x0c58 00000c53: DUP5 00000c54: PUSH2 0x11ee 00000c57: JUMP 00000c58: JUMPDEST 00000c59: PUSH1 0x40 00000c5b: MLOAD 00000c5c: PUSH1 0x20 00000c5e: ADD 00000c5f: DUP1 00000c60: DUP3 00000c61: DUP1 00000c62: MLOAD 00000c63: SWAP1 00000c64: PUSH1 0x20 00000c66: ADD 00000c67: SWAP1 00000c68: DUP1 00000c69: DUP4 00000c6a: DUP4 00000c6b: JUMPDEST 00000c6c: PUSH1 0x20 00000c6e: DUP4 00000c6f: LT 00000c70: PUSH2 0x0c8a 00000c73: JUMPI 00000c74: DUP1 00000c75: MLOAD 00000c76: DUP3 00000c77: MSTORE 00000c78: PUSH1 0x1f 00000c7a: NOT 00000c7b: SWAP1 00000c7c: SWAP3 00000c7d: ADD 00000c7e: SWAP2 00000c7f: PUSH1 0x20 00000c81: SWAP2 00000c82: DUP3 00000c83: ADD 00000c84: SWAP2 00000c85: ADD 00000c86: PUSH2 0x0c6b 00000c89: JUMP 00000c8a: JUMPDEST 00000c8b: PUSH1 0x01 00000c8d: DUP4 00000c8e: PUSH1 0x20 00000c90: SUB 00000c91: PUSH2 0x0100 00000c94: EXP 00000c95: SUB 00000c96: DUP1 00000c97: NOT 00000c98: DUP3 00000c99: MLOAD 00000c9a: AND 00000c9b: DUP2 00000c9c: DUP5 00000c9d: MLOAD 00000c9e: AND 00000c9f: DUP1 00000ca0: DUP3 00000ca1: OR 00000ca2: DUP6 00000ca3: MSTORE 00000ca4: POP 00000ca5: POP 00000ca6: POP 00000ca7: POP 00000ca8: POP 00000ca9: POP 00000caa: SWAP1 00000cab: POP 00000cac: ADD 00000cad: SWAP2 00000cae: POP 00000caf: POP 00000cb0: PUSH1 0x40 00000cb2: MLOAD 00000cb3: PUSH1 0x20 00000cb5: DUP2 00000cb6: DUP4 00000cb7: SUB 00000cb8: SUB 00000cb9: DUP2 00000cba: MSTORE 00000cbb: SWAP1 00000cbc: PUSH1 0x40 00000cbe: MSTORE 00000cbf: DUP1 00000cc0: MLOAD 00000cc1: SWAP1 00000cc2: PUSH1 0x20 00000cc4: ADD 00000cc5: KECCAK256 00000cc6: SWAP1 00000cc7: POP 00000cc8: DUP2 00000cc9: PUSH1 0x40 00000ccb: MLOAD 00000ccc: PUSH1 0x20 00000cce: ADD 00000ccf: DUP1 00000cd0: DUP3 00000cd1: DUP1 00000cd2: MLOAD 00000cd3: SWAP1 00000cd4: PUSH1 0x20 00000cd6: ADD 00000cd7: SWAP1 00000cd8: DUP1 00000cd9: DUP4 00000cda: DUP4 00000cdb: JUMPDEST 00000cdc: PUSH1 0x20 00000cde: DUP4 00000cdf: LT 00000ce0: PUSH2 0x0cfa 00000ce3: JUMPI 00000ce4: DUP1 00000ce5: MLOAD 00000ce6: DUP3 00000ce7: MSTORE 00000ce8: PUSH1 0x1f 00000cea: NOT 00000ceb: SWAP1 00000cec: SWAP3 00000ced: ADD 00000cee: SWAP2 00000cef: PUSH1 0x20 00000cf1: SWAP2 00000cf2: DUP3 00000cf3: ADD 00000cf4: SWAP2 00000cf5: ADD 00000cf6: PUSH2 0x0cdb 00000cf9: JUMP 00000cfa: JUMPDEST 00000cfb: PUSH1 0x01 00000cfd: DUP4 00000cfe: PUSH1 0x20 00000d00: SUB 00000d01: PUSH2 0x0100 00000d04: EXP 00000d05: SUB 00000d06: DUP1 00000d07: NOT 00000d08: DUP3 00000d09: MLOAD 00000d0a: AND 00000d0b: DUP2 00000d0c: DUP5 00000d0d: MLOAD 00000d0e: AND 00000d0f: DUP1 00000d10: DUP3 00000d11: OR 00000d12: DUP6 00000d13: MSTORE 00000d14: POP 00000d15: POP 00000d16: POP 00000d17: POP 00000d18: POP 00000d19: POP 00000d1a: SWAP1 00000d1b: POP 00000d1c: ADD 00000d1d: SWAP2 00000d1e: POP 00000d1f: POP 00000d20: PUSH1 0x40 00000d22: MLOAD 00000d23: PUSH1 0x20 00000d25: DUP2 00000d26: DUP4 00000d27: SUB 00000d28: SUB 00000d29: DUP2 00000d2a: MSTORE 00000d2b: SWAP1 00000d2c: PUSH1 0x40 00000d2e: MSTORE 00000d2f: DUP1 00000d30: MLOAD 00000d31: SWAP1 00000d32: PUSH1 0x20 00000d34: ADD 00000d35: KECCAK256 00000d36: DUP2 00000d37: EQ 00000d38: PUSH2 0x0d72 00000d3b: JUMPI 00000d3c: PUSH1 0x40 00000d3e: MLOAD 00000d3f: PUSH3 0x461bcd 00000d43: PUSH1 0xe5 00000d45: SHL 00000d46: DUP2 00000d47: MSTORE 00000d48: PUSH1 0x04 00000d4a: ADD 00000d4b: DUP1 00000d4c: DUP1 00000d4d: PUSH1 0x20 00000d4f: ADD 00000d50: DUP3 00000d51: DUP2 00000d52: SUB 00000d53: DUP3 00000d54: MSTORE 00000d55: PUSH1 0x22 00000d57: DUP2 00000d58: MSTORE 00000d59: PUSH1 0x20 00000d5b: ADD 00000d5c: DUP1 00000d5d: PUSH2 0x1360 00000d60: PUSH1 0x22 00000d62: SWAP2 00000d63: CODECOPY 00000d64: PUSH1 0x40 00000d66: ADD 00000d67: SWAP2 00000d68: POP 00000d69: POP 00000d6a: PUSH1 0x40 00000d6c: MLOAD 00000d6d: DUP1 00000d6e: SWAP2 00000d6f: SUB 00000d70: SWAP1 00000d71: REVERT 00000d72: JUMPDEST 00000d73: POP 00000d74: POP 00000d75: POP 00000d76: POP 00000d77: JUMP 00000d78: JUMPDEST 00000d79: PUSH1 0x00 00000d7b: SWAP2 00000d7c: DUP3 00000d7d: MSTORE 00000d7e: PUSH1 0x1e 00000d80: PUSH1 0x20 00000d82: MSTORE 00000d83: PUSH1 0x40 00000d85: SWAP1 00000d86: SWAP2 00000d87: KECCAK256 00000d88: DUP1 00000d89: SLOAD 00000d8a: PUSH1 0x01 00000d8c: PUSH1 0x01 00000d8e: PUSH1 0xa0 00000d90: SHL 00000d91: SUB 00000d92: NOT 00000d93: AND 00000d94: PUSH1 0x01 00000d96: PUSH1 0x01 00000d98: PUSH1 0xa0 00000d9a: SHL 00000d9b: SUB 00000d9c: SWAP1 00000d9d: SWAP3 00000d9e: AND 00000d9f: SWAP2 00000da0: SWAP1 00000da1: SWAP2 00000da2: OR 00000da3: SWAP1 00000da4: SSTORE 00000da5: JUMP 00000da6: JUMPDEST 00000da7: PUSH2 0x0db8 00000daa: DUP3 00000dab: PUSH1 0x01 00000dad: PUSH1 0x01 00000daf: PUSH1 0xa0 00000db1: SHL 00000db2: SUB 00000db3: AND 00000db4: PUSH2 0x1308 00000db7: JUMP 00000db8: JUMPDEST 00000db9: PUSH2 0x0dfa 00000dbc: JUMPI 00000dbd: PUSH1 0x40 00000dbf: DUP1 00000dc0: MLOAD 00000dc1: PUSH3 0x461bcd 00000dc5: PUSH1 0xe5 00000dc7: SHL 00000dc8: DUP2 00000dc9: MSTORE 00000dca: PUSH1 0x20 00000dcc: PUSH1 0x04 00000dce: DUP3 00000dcf: ADD 00000dd0: MSTORE 00000dd1: PUSH1 0x0e 00000dd3: PUSH1 0x24 00000dd5: DUP3 00000dd6: ADD 00000dd7: MSTORE 00000dd8: PUSH14 0x1393d517d057d0d3d395149050d5 00000de7: PUSH1 0x92 00000de9: SHL 00000dea: PUSH1 0x44 00000dec: DUP3 00000ded: ADD 00000dee: MSTORE 00000def: SWAP1 00000df0: MLOAD 00000df1: SWAP1 00000df2: DUP2 00000df3: SWAP1 00000df4: SUB 00000df5: PUSH1 0x64 00000df7: ADD 00000df8: SWAP1 00000df9: REVERT 00000dfa: JUMPDEST 00000dfb: DUP3 00000dfc: MLOAD 00000dfd: DUP2 00000dfe: GT 00000dff: ISZERO 00000e00: PUSH2 0x0e44 00000e03: JUMPI 00000e04: PUSH1 0x40 00000e06: DUP1 00000e07: MLOAD 00000e08: PUSH3 0x461bcd 00000e0c: PUSH1 0xe5 00000e0e: SHL 00000e0f: DUP2 00000e10: MSTORE 00000e11: PUSH1 0x20 00000e13: PUSH1 0x04 00000e15: DUP3 00000e16: ADD 00000e17: MSTORE 00000e18: PUSH1 0x11 00000e1a: PUSH1 0x24 00000e1c: DUP3 00000e1d: ADD 00000e1e: MSTORE 00000e1f: PUSH17 0x494e56414c49445f444154415f53495a45 00000e31: PUSH1 0x78 00000e33: SHL 00000e34: PUSH1 0x44 00000e36: DUP3 00000e37: ADD 00000e38: MSTORE 00000e39: SWAP1 00000e3a: MLOAD 00000e3b: SWAP1 00000e3c: DUP2 00000e3d: SWAP1 00000e3e: SUB 00000e3f: PUSH1 0x64 00000e41: ADD 00000e42: SWAP1 00000e43: REVERT 00000e44: JUMPDEST 00000e45: PUSH1 0x60 00000e47: DUP2 00000e48: PUSH8 0xffffffffffffffff 00000e51: DUP2 00000e52: GT 00000e53: DUP1 00000e54: ISZERO 00000e55: PUSH2 0x0e5d 00000e58: JUMPI 00000e59: PUSH1 0x00 00000e5b: DUP1 00000e5c: REVERT 00000e5d: JUMPDEST 00000e5e: POP 00000e5f: PUSH1 0x40 00000e61: MLOAD 00000e62: SWAP1 00000e63: DUP1 00000e64: DUP3 00000e65: MSTORE 00000e66: DUP1 00000e67: PUSH1 0x1f 00000e69: ADD 00000e6a: PUSH1 0x1f 00000e6c: NOT 00000e6d: AND 00000e6e: PUSH1 0x20 00000e70: ADD 00000e71: DUP3 00000e72: ADD 00000e73: PUSH1 0x40 00000e75: MSTORE 00000e76: DUP1 00000e77: ISZERO 00000e78: PUSH2 0x0e88 00000e7b: JUMPI 00000e7c: PUSH1 0x20 00000e7e: DUP3 00000e7f: ADD 00000e80: DUP2 00000e81: DUP1 00000e82: CALLDATASIZE 00000e83: DUP4 00000e84: CALLDATACOPY 00000e85: ADD 00000e86: SWAP1 00000e87: POP 00000e88: JUMPDEST 00000e89: POP 00000e8a: DUP5 00000e8b: MLOAD 00000e8c: SWAP1 00000e8d: SWAP2 00000e8e: POP 00000e8f: DUP3 00000e90: SWAP1 00000e91: SUB 00000e92: PUSH1 0x20 00000e94: DUP2 00000e95: DUP2 00000e96: ADD 00000e97: SWAP2 00000e98: DUP7 00000e99: ADD 00000e9a: DUP2 00000e9b: ADD 00000e9c: SWAP1 00000e9d: DUP4 00000e9e: ADD 00000e9f: PUSH1 0x00 00000ea1: JUMPDEST 00000ea2: DUP6 00000ea3: DUP2 00000ea4: LT 00000ea5: ISZERO 00000ea6: PUSH2 0x0eb9 00000ea9: JUMPI 00000eaa: DUP3 00000eab: DUP2 00000eac: ADD 00000ead: MLOAD 00000eae: DUP3 00000eaf: DUP3 00000eb0: ADD 00000eb1: MSTORE 00000eb2: PUSH1 0x20 00000eb4: ADD 00000eb5: PUSH2 0x0ea1 00000eb8: JUMP 00000eb9: JUMPDEST 00000eba: POP 00000ebb: PUSH1 0x00 00000ebd: PUSH1 0x60 00000ebf: DUP8 00000ec0: PUSH1 0x01 00000ec2: PUSH1 0x01 00000ec4: PUSH1 0xa0 00000ec6: SHL 00000ec7: SUB 00000ec8: AND 00000ec9: PUSH4 0x439fab91 00000ece: PUSH1 0xe0 00000ed0: SHL 00000ed1: DUP8 00000ed2: PUSH1 0x40 00000ed4: MLOAD 00000ed5: PUSH1 0x24 00000ed7: ADD 00000ed8: DUP1 00000ed9: DUP1 00000eda: PUSH1 0x20 00000edc: ADD 00000edd: DUP3 00000ede: DUP2 00000edf: SUB 00000ee0: DUP3 00000ee1: MSTORE 00000ee2: DUP4 00000ee3: DUP2 00000ee4: DUP2 00000ee5: MLOAD 00000ee6: DUP2 00000ee7: MSTORE 00000ee8: PUSH1 0x20 00000eea: ADD 00000eeb: SWAP2 00000eec: POP 00000eed: DUP1 00000eee: MLOAD 00000eef: SWAP1 00000ef0: PUSH1 0x20 00000ef2: ADD 00000ef3: SWAP1 00000ef4: DUP1 00000ef5: DUP4 00000ef6: DUP4 00000ef7: PUSH1 0x00 00000ef9: JUMPDEST 00000efa: DUP4 00000efb: DUP2 00000efc: LT 00000efd: ISZERO 00000efe: PUSH2 0x0f11 00000f01: JUMPI 00000f02: DUP2 00000f03: DUP2 00000f04: ADD 00000f05: MLOAD 00000f06: DUP4 00000f07: DUP3 00000f08: ADD 00000f09: MSTORE 00000f0a: PUSH1 0x20 00000f0c: ADD 00000f0d: PUSH2 0x0ef9 00000f10: JUMP 00000f11: JUMPDEST 00000f12: POP 00000f13: POP 00000f14: POP 00000f15: POP 00000f16: SWAP1 00000f17: POP 00000f18: SWAP1 00000f19: DUP2 00000f1a: ADD 00000f1b: SWAP1 00000f1c: PUSH1 0x1f 00000f1e: AND 00000f1f: DUP1 00000f20: ISZERO 00000f21: PUSH2 0x0f3e 00000f24: JUMPI 00000f25: DUP1 00000f26: DUP3 00000f27: SUB 00000f28: DUP1 00000f29: MLOAD 00000f2a: PUSH1 0x01 00000f2c: DUP4 00000f2d: PUSH1 0x20 00000f2f: SUB 00000f30: PUSH2 0x0100 00000f33: EXP 00000f34: SUB 00000f35: NOT 00000f36: AND 00000f37: DUP2 00000f38: MSTORE 00000f39: PUSH1 0x20 00000f3b: ADD 00000f3c: SWAP2 00000f3d: POP 00000f3e: JUMPDEST 00000f3f: POP 00000f40: PUSH1 0x40 00000f42: DUP1 00000f43: MLOAD 00000f44: PUSH1 0x1f 00000f46: NOT 00000f47: DUP2 00000f48: DUP5 00000f49: SUB 00000f4a: ADD 00000f4b: DUP2 00000f4c: MSTORE 00000f4d: SWAP2 00000f4e: DUP2 00000f4f: MSTORE 00000f50: PUSH1 0x20 00000f52: DUP3 00000f53: ADD 00000f54: DUP1 00000f55: MLOAD 00000f56: PUSH1 0x01 00000f58: PUSH1 0x01 00000f5a: PUSH1 0xe0 00000f5c: SHL 00000f5d: SUB 00000f5e: AND 00000f5f: PUSH1 0x01 00000f61: PUSH1 0x01 00000f63: PUSH1 0xe0 00000f65: SHL 00000f66: SUB 00000f67: NOT 00000f68: SWAP1 00000f69: SWAP8 00000f6a: AND 00000f6b: SWAP7 00000f6c: SWAP1 00000f6d: SWAP7 00000f6e: OR 00000f6f: DUP7 00000f70: MSTORE 00000f71: MLOAD 00000f72: DUP2 00000f73: MLOAD 00000f74: SWAP2 00000f75: SWAP6 00000f76: SWAP1 00000f77: SWAP5 00000f78: POP 00000f79: DUP5 00000f7a: SWAP4 00000f7b: POP 00000f7c: SWAP2 00000f7d: POP 00000f7e: DUP1 00000f7f: DUP4 00000f80: DUP4 00000f81: JUMPDEST 00000f82: PUSH1 0x20 00000f84: DUP4 00000f85: LT 00000f86: PUSH2 0x0fa0 00000f89: JUMPI 00000f8a: DUP1 00000f8b: MLOAD 00000f8c: DUP3 00000f8d: MSTORE 00000f8e: PUSH1 0x1f 00000f90: NOT 00000f91: SWAP1 00000f92: SWAP3 00000f93: ADD 00000f94: SWAP2 00000f95: PUSH1 0x20 00000f97: SWAP2 00000f98: DUP3 00000f99: ADD 00000f9a: SWAP2 00000f9b: ADD 00000f9c: PUSH2 0x0f81 00000f9f: JUMP 00000fa0: JUMPDEST 00000fa1: PUSH1 0x01 00000fa3: DUP4 00000fa4: PUSH1 0x20 00000fa6: SUB 00000fa7: PUSH2 0x0100 00000faa: EXP 00000fab: SUB 00000fac: DUP1 00000fad: NOT 00000fae: DUP3 00000faf: MLOAD 00000fb0: AND 00000fb1: DUP2 00000fb2: DUP5 00000fb3: MLOAD 00000fb4: AND 00000fb5: DUP1 00000fb6: DUP3 00000fb7: OR 00000fb8: DUP6 00000fb9: MSTORE 00000fba: POP 00000fbb: POP 00000fbc: POP 00000fbd: POP 00000fbe: POP 00000fbf: POP 00000fc0: SWAP1 00000fc1: POP 00000fc2: ADD 00000fc3: SWAP2 00000fc4: POP 00000fc5: POP 00000fc6: PUSH1 0x00 00000fc8: PUSH1 0x40 00000fca: MLOAD 00000fcb: DUP1 00000fcc: DUP4 00000fcd: SUB 00000fce: DUP2 00000fcf: DUP6 00000fd0: GAS 00000fd1: DELEGATECALL 00000fd2: SWAP2 00000fd3: POP 00000fd4: POP 00000fd5: RETURNDATASIZE 00000fd6: DUP1 00000fd7: PUSH1 0x00 00000fd9: DUP2 00000fda: EQ 00000fdb: PUSH2 0x1000 00000fde: JUMPI 00000fdf: PUSH1 0x40 00000fe1: MLOAD 00000fe2: SWAP2 00000fe3: POP 00000fe4: PUSH1 0x1f 00000fe6: NOT 00000fe7: PUSH1 0x3f 00000fe9: RETURNDATASIZE 00000fea: ADD 00000feb: AND 00000fec: DUP3 00000fed: ADD 00000fee: PUSH1 0x40 00000ff0: MSTORE 00000ff1: RETURNDATASIZE 00000ff2: DUP3 00000ff3: MSTORE 00000ff4: RETURNDATASIZE 00000ff5: PUSH1 0x00 00000ff7: PUSH1 0x20 00000ff9: DUP5 00000ffa: ADD 00000ffb: RETURNDATACOPY 00000ffc: PUSH2 0x1005 00000fff: JUMP 00001000: JUMPDEST 00001001: PUSH1 0x60 00001003: SWAP2 00001004: POP 00001005: JUMPDEST 00001006: POP 00001007: SWAP2 00001008: POP 00001009: SWAP2 0000100a: POP 0000100b: DUP2 0000100c: DUP2 0000100d: SWAP1 0000100e: PUSH2 0x1058 00001011: JUMPI 00001012: PUSH1 0x40 00001014: MLOAD 00001015: PUSH3 0x461bcd 00001019: PUSH1 0xe5 0000101b: SHL 0000101c: DUP2 0000101d: MSTORE 0000101e: PUSH1 0x20 00001020: PUSH1 0x04 00001022: DUP3 00001023: ADD 00001024: DUP2 00001025: DUP2 00001026: MSTORE 00001027: DUP4 00001028: MLOAD 00001029: PUSH1 0x24 0000102b: DUP5 0000102c: ADD 0000102d: MSTORE 0000102e: DUP4 0000102f: MLOAD 00001030: SWAP1 00001031: SWAP3 00001032: DUP4 00001033: SWAP3 00001034: PUSH1 0x44 00001036: SWAP1 00001037: SWAP2 00001038: ADD 00001039: SWAP2 0000103a: SWAP1 0000103b: DUP6 0000103c: ADD 0000103d: SWAP1 0000103e: DUP1 0000103f: DUP4 00001040: DUP4 00001041: PUSH1 0x00 00001043: DUP4 00001044: ISZERO 00001045: PUSH2 0x0651 00001048: JUMPI 00001049: DUP2 0000104a: DUP2 0000104b: ADD 0000104c: MLOAD 0000104d: DUP4 0000104e: DUP3 0000104f: ADD 00001050: MSTORE 00001051: PUSH1 0x20 00001053: ADD 00001054: PUSH2 0x0639 00001057: JUMP 00001058: JUMPDEST 00001059: POP 0000105a: DUP1 0000105b: MLOAD 0000105c: DUP2 0000105d: SWAP1 0000105e: ISZERO 0000105f: PUSH2 0x10a9 00001062: JUMPI 00001063: PUSH1 0x40 00001065: MLOAD 00001066: PUSH3 0x461bcd 0000106a: PUSH1 0xe5 0000106c: SHL 0000106d: DUP2 0000106e: MSTORE 0000106f: PUSH1 0x20 00001071: PUSH1 0x04 00001073: DUP3 00001074: ADD 00001075: DUP2 00001076: DUP2 00001077: MSTORE 00001078: DUP4 00001079: MLOAD 0000107a: PUSH1 0x24 0000107c: DUP5 0000107d: ADD 0000107e: MSTORE 0000107f: DUP4 00001080: MLOAD 00001081: SWAP1 00001082: SWAP3 00001083: DUP4 00001084: SWAP3 00001085: PUSH1 0x44 00001087: SWAP1 00001088: SWAP2 00001089: ADD 0000108a: SWAP2 0000108b: SWAP1 0000108c: DUP6 0000108d: ADD 0000108e: SWAP1 0000108f: DUP1 00001090: DUP4 00001091: DUP4 00001092: PUSH1 0x00 00001094: DUP4 00001095: ISZERO 00001096: PUSH2 0x0651 00001099: JUMPI 0000109a: DUP2 0000109b: DUP2 0000109c: ADD 0000109d: MLOAD 0000109e: DUP4 0000109f: DUP3 000010a0: ADD 000010a1: MSTORE 000010a2: PUSH1 0x20 000010a4: ADD 000010a5: PUSH2 0x0639 000010a8: JUMP 000010a9: JUMPDEST 000010aa: POP 000010ab: POP 000010ac: POP 000010ad: POP 000010ae: POP 000010af: POP 000010b0: POP 000010b1: POP 000010b2: POP 000010b3: POP 000010b4: JUMP 000010b5: JUMPDEST 000010b6: PUSH1 0x40 000010b8: DUP1 000010b9: MLOAD 000010ba: DUP1 000010bb: DUP3 000010bc: ADD 000010bd: SWAP1 000010be: SWAP2 000010bf: MSTORE 000010c0: PUSH1 0x16 000010c2: DUP2 000010c3: MSTORE 000010c4: PUSH22 0x12539255125053125690551253d397d09313d0d2d151 000010db: PUSH1 0x52 000010dd: SHL 000010de: PUSH1 0x20 000010e0: DUP3 000010e1: ADD 000010e2: MSTORE 000010e3: PUSH9 0x010000000000000003 000010ed: SLOAD 000010ee: DUP2 000010ef: SWAP1 000010f0: ISZERO 000010f1: PUSH2 0x113b 000010f4: JUMPI 000010f5: PUSH1 0x40 000010f7: MLOAD 000010f8: PUSH3 0x461bcd 000010fc: PUSH1 0xe5 000010fe: SHL 000010ff: DUP2 00001100: MSTORE 00001101: PUSH1 0x20 00001103: PUSH1 0x04 00001105: DUP3 00001106: ADD 00001107: DUP2 00001108: DUP2 00001109: MSTORE 0000110a: DUP4 0000110b: MLOAD 0000110c: PUSH1 0x24 0000110e: DUP5 0000110f: ADD 00001110: MSTORE 00001111: DUP4 00001112: MLOAD 00001113: SWAP1 00001114: SWAP3 00001115: DUP4 00001116: SWAP3 00001117: PUSH1 0x44 00001119: SWAP1 0000111a: SWAP2 0000111b: ADD 0000111c: SWAP2 0000111d: SWAP1 0000111e: DUP6 0000111f: ADD 00001120: SWAP1 00001121: DUP1 00001122: DUP4 00001123: DUP4 00001124: PUSH1 0x00 00001126: DUP4 00001127: ISZERO 00001128: PUSH2 0x0651 0000112b: JUMPI 0000112c: DUP2 0000112d: DUP2 0000112e: ADD 0000112f: MLOAD 00001130: DUP4 00001131: DUP3 00001132: ADD 00001133: MSTORE 00001134: PUSH1 0x20 00001136: ADD 00001137: PUSH2 0x0639 0000113a: JUMP 0000113b: JUMPDEST 0000113c: POP 0000113d: PUSH9 0x010000000000000001 00001147: SLOAD 00001148: DUP2 00001149: SWAP1 0000114a: ISZERO 0000114b: PUSH2 0x1195 0000114e: JUMPI 0000114f: PUSH1 0x40 00001151: MLOAD 00001152: PUSH3 0x461bcd 00001156: PUSH1 0xe5 00001158: SHL 00001159: DUP2 0000115a: MSTORE 0000115b: PUSH1 0x20 0000115d: PUSH1 0x04 0000115f: DUP3 00001160: ADD 00001161: DUP2 00001162: DUP2 00001163: MSTORE 00001164: DUP4 00001165: MLOAD 00001166: PUSH1 0x24 00001168: DUP5 00001169: ADD 0000116a: MSTORE 0000116b: DUP4 0000116c: MLOAD 0000116d: SWAP1 0000116e: SWAP3 0000116f: DUP4 00001170: SWAP3 00001171: PUSH1 0x44 00001173: SWAP1 00001174: SWAP2 00001175: ADD 00001176: SWAP2 00001177: SWAP1 00001178: DUP6 00001179: ADD 0000117a: SWAP1 0000117b: DUP1 0000117c: DUP4 0000117d: DUP4 0000117e: PUSH1 0x00 00001180: DUP4 00001181: ISZERO 00001182: PUSH2 0x0651 00001185: JUMPI 00001186: DUP2 00001187: DUP2 00001188: ADD 00001189: MLOAD 0000118a: DUP4 0000118b: DUP3 0000118c: ADD 0000118d: MSTORE 0000118e: PUSH1 0x20 00001190: ADD 00001191: PUSH2 0x0639 00001194: JUMP 00001195: JUMPDEST 00001196: POP 00001197: PUSH1 0x01 00001199: PUSH1 0x40 0000119b: SHL 0000119c: SLOAD 0000119d: DUP2 0000119e: SWAP1 0000119f: ISZERO 000011a0: PUSH2 0x11ea 000011a3: JUMPI 000011a4: PUSH1 0x40 000011a6: MLOAD 000011a7: PUSH3 0x461bcd 000011ab: PUSH1 0xe5 000011ad: SHL 000011ae: DUP2 000011af: MSTORE 000011b0: PUSH1 0x20 000011b2: PUSH1 0x04 000011b4: DUP3 000011b5: ADD 000011b6: DUP2 000011b7: DUP2 000011b8: MSTORE 000011b9: DUP4 000011ba: MLOAD 000011bb: PUSH1 0x24 000011bd: DUP5 000011be: ADD 000011bf: MSTORE 000011c0: DUP4 000011c1: MLOAD 000011c2: SWAP1 000011c3: SWAP3 000011c4: DUP4 000011c5: SWAP3 000011c6: PUSH1 0x44 000011c8: SWAP1 000011c9: SWAP2 000011ca: ADD 000011cb: SWAP2 000011cc: SWAP1 000011cd: DUP6 000011ce: ADD 000011cf: SWAP1 000011d0: DUP1 000011d1: DUP4 000011d2: DUP4 000011d3: PUSH1 0x00 000011d5: DUP4 000011d6: ISZERO 000011d7: PUSH2 0x0651 000011da: JUMPI 000011db: DUP2 000011dc: DUP2 000011dd: ADD 000011de: MLOAD 000011df: DUP4 000011e0: DUP3 000011e1: ADD 000011e2: MSTORE 000011e3: PUSH1 0x20 000011e5: ADD 000011e6: PUSH2 0x0639 000011e9: JUMP 000011ea: JUMPDEST 000011eb: POP 000011ec: POP 000011ed: JUMP 000011ee: JUMPDEST 000011ef: PUSH1 0x60 000011f1: DUP2 000011f2: PUSH1 0x01 000011f4: EQ 000011f5: ISZERO 000011f6: PUSH2 0x1233 000011f9: JUMPI 000011fa: POP 000011fb: PUSH1 0x40 000011fd: DUP1 000011fe: MLOAD 000011ff: DUP1 00001200: DUP3 00001201: ADD 00001202: SWAP1 00001203: SWAP2 00001204: MSTORE 00001205: PUSH1 0x1d 00001207: DUP2 00001208: MSTORE 00001209: PUSH32 0x537461726b576172655f416c6c5665726966696572735f323032305f31000000 0000122a: PUSH1 0x20 0000122c: DUP3 0000122d: ADD 0000122e: MSTORE 0000122f: PUSH2 0x035d 00001232: JUMP 00001233: JUMPDEST 00001234: DUP2 00001235: PUSH1 0x02 00001237: EQ 00001238: ISZERO 00001239: PUSH2 0x125c 0000123c: JUMPI 0000123d: PUSH1 0x40 0000123f: MLOAD 00001240: DUP1 00001241: PUSH1 0x60 00001243: ADD 00001244: PUSH1 0x40 00001246: MSTORE 00001247: DUP1 00001248: PUSH1 0x2a 0000124a: DUP2 0000124b: MSTORE 0000124c: PUSH1 0x20 0000124e: ADD 0000124f: PUSH2 0x1336 00001252: PUSH1 0x2a 00001254: SWAP2 00001255: CODECOPY 00001256: SWAP1 00001257: POP 00001258: PUSH2 0x035d 0000125b: JUMP 0000125c: JUMPDEST 0000125d: DUP2 0000125e: PUSH1 0x03 00001260: EQ 00001261: ISZERO 00001262: PUSH2 0x129f 00001265: JUMPI 00001266: POP 00001267: PUSH1 0x40 00001269: DUP1 0000126a: MLOAD 0000126b: DUP1 0000126c: DUP3 0000126d: ADD 0000126e: SWAP1 0000126f: SWAP2 00001270: MSTORE 00001271: PUSH1 0x1f 00001273: DUP2 00001274: MSTORE 00001275: PUSH32 0x537461726b576172655f50657270657475616c53746174655f323032305f3100 00001296: PUSH1 0x20 00001298: DUP3 00001299: ADD 0000129a: MSTORE 0000129b: PUSH2 0x035d 0000129e: JUMP 0000129f: JUMPDEST 000012a0: DUP2 000012a1: PUSH1 0x04 000012a3: EQ 000012a4: ISZERO 000012a5: PUSH2 0x12c8 000012a8: JUMPI 000012a9: PUSH1 0x40 000012ab: MLOAD 000012ac: DUP1 000012ad: PUSH1 0x60 000012af: ADD 000012b0: PUSH1 0x40 000012b2: MSTORE 000012b3: DUP1 000012b4: PUSH1 0x27 000012b6: DUP2 000012b7: MSTORE 000012b8: PUSH1 0x20 000012ba: ADD 000012bb: PUSH2 0x130f 000012be: PUSH1 0x27 000012c0: SWAP2 000012c1: CODECOPY 000012c2: SWAP1 000012c3: POP 000012c4: PUSH2 0x035d 000012c7: JUMP 000012c8: JUMPDEST 000012c9: PUSH1 0x40 000012cb: DUP1 000012cc: MLOAD 000012cd: PUSH3 0x461bcd 000012d1: PUSH1 0xe5 000012d3: SHL 000012d4: DUP2 000012d5: MSTORE 000012d6: PUSH1 0x20 000012d8: PUSH1 0x04 000012da: DUP3 000012db: ADD 000012dc: MSTORE 000012dd: PUSH1 0x10 000012df: PUSH1 0x24 000012e1: DUP3 000012e2: ADD 000012e3: MSTORE 000012e4: PUSH16 0x0aa9c8ab0a08a86a88a88be929c888ab 000012f5: PUSH1 0x83 000012f7: SHL 000012f8: PUSH1 0x44 000012fa: DUP3 000012fb: ADD 000012fc: MSTORE 000012fd: SWAP1 000012fe: MLOAD 000012ff: SWAP1 00001300: DUP2 00001301: SWAP1 00001302: SUB 00001303: PUSH1 0x64 00001305: ADD 00001306: SWAP1 00001307: REVERT 00001308: JUMPDEST 00001309: EXTCODESIZE 0000130a: ISZERO 0000130b: ISZERO 0000130c: SWAP1 0000130d: JUMP 0000130e: INVALID 0000130f: MSTORE8 00001310: PUSH21 0x61726b576172655f50657270657475616c466f7263 00001326: PUSH6 0x64416374696f 0000132d: PUSH15 0x735f323032305f31537461726b5761 0000133d: PUSH19 0x655f50657270657475616c546f6b656e73416e 00001351: PUSH5 0x52616d7069 00001357: PUSH15 0x675f323032305f314d4953504c4143 00001367: GASLIMIT 00001368: DIFFICULTY 00001369: PUSH0 0000136a: BLOBHASH 0000136b: UNKNOWN(0x4E) 0000136c: DIFFICULTY 0000136d: GASLIMIT 0000136e: PC 0000136f: PUSH0 00001370: UNKNOWN(0x4F) 00001371: MSTORE 00001372: PUSH0 00001373: TIMESTAMP 00001374: COINBASE 00001375: DIFFICULTY 00001376: PUSH0 00001377: NUMBER 00001378: UNKNOWN(0x4F) 00001379: UNKNOWN(0x4E) 0000137a: SLOAD 0000137b: MSTORE 0000137c: COINBASE 0000137d: NUMBER 0000137e: SLOAD 0000137f: PUSH0 00001380: BLOBHASH 00001381: DIFFICULTY 00001382: LOG2 00001383: PUSH5 0x6970667358 00001389: UNKNOWN(0x22) 0000138a: SLT 0000138b: KECCAK256 0000138c: SDIV 0000138d: UNKNOWN(0xE8) 0000138e: UNKNOWN(0xB7) 0000138f: LOG1 00001390: PUSH0 00001391: SWAP4 00001392: UNKNOWN(0xAC) 00001393: UNKNOWN(0xCE) 00001394: OR 00001395: UNKNOWN(0xB8) 00001396: UNKNOWN(0xB7) 00001397: GAS 00001398: UNKNOWN(0x4D) 00001399: UNKNOWN(0x4B) 0000139a: UNKNOWN(0xDF) 0000139b: DIV 0000139c: UNKNOWN(0xA6) 0000139d: LOG2 0000139e: UNKNOWN(0x22) 0000139f: SIGNEXTEND 000013a0: SWAP1 000013a1: DUP9 000013a2: BLOBHASH 000013a3: UNKNOWN(0xEA) 000013a4: RETURNDATACOPY 000013a5: COINBASE 000013a6: PC 000013a7: DUP12 000013a8: UNKNOWN(0xE7) 000013a9: UNKNOWN(0xE3) 000013aa: PUSH23
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | access_control | codex | Unprotected initializer allows arbitrary subcontract replacement and delegatecall execution | 90 | no | — |
viewevidence_json{
"evidence": "`initialize` is `public` with no access control; it sets `subContracts` from calldata and returns early when `additionalDataSize == 0`, allowing reconfiguration without the sentinel guard. It also allows arbitrary `externalInitializerAddr` delegatecall from calldata.",
"locations": [
"contracts/MainDispatcherBase.sol:126",
"contracts/MainDispatcherBase.sol:148",
"contracts/MainDispatcherBase.sol:171",
"contracts/MainDispatcherBase.sol:179",
"contracts/MainDispatcherBase.sol:270"
],
"recommendation": "Restrict `initialize` to a trusted governance/upgrade authority and enforce a one-time (or versioned) initialization flag. Also ensure the \u201cno additional data\u201d path cannot be used to reconfigure subcontracts without explicit authorization (e.g., always require an initialization sentinel or `initialized` guard). Consider validating external initializer addresses against an allowlist in upgrades.",
"exploit_scenario": "Any external account can call `initialize` on the dispatcher/proxy with crafted data. Because there is no access control, the caller can set `subContracts` to attacker-controlled implementations (passing `identify()` checks) and immediately hijack all delegated function calls. Alternatively, the caller can supply a non-zero external initializer address and trigger `delegatecall` into attacker code, gaining full control over storage (e.g., governance, asset mappings, balances) and potentially draining funds."
}
|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0xef6b2947733a5958ec902ab6afbd0013935f272119feffbf8e6061e3af66b661
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 60,
"trace_id": "0xef6b2947733a5958ec902ab6afbd0013935f272119feffbf8e6061e3af66b661",
"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": "0x439fab91",
"selector": "0x439fab91",
"calldata_variants": [
"0x439fab91",
"0x439fab910000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xadac3e15",
"selector": "0xadac3e15",
"calldata_variants": [
"0xadac3e15",
"0xadac3e150000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc1a85130",
"selector": "0xc1a85130",
"calldata_variants": [
"0xc1a85130",
"0xc1a851300000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2011f66",
"selector": "0xf2011f66",
"calldata_variants": [
"0xf2011f66",
"0xf2011f660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xffa1ad74",
"selector": "0xffa1ad74",
"calldata_variants": [
"0xffa1ad74",
"0xffa1ad740000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 285,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 1480,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 2255,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 4,
"untrusted_delegatecall_count": 4
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 4
}
|