019c0eac-1141-73a4-bb86-3f06ad5c30a9
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 |
|---|---|---|---|---|
| 42467 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 42468 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 42469 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 42470 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 42471 | capability.graph | complete | 1 / 3 | 2 months ago |
| 42472 | detector.run | complete | 1 / 3 | 2 months ago |
| 42473 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42507 | report.consolidate | complete | 1 / 6 | 2 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.","findings":[{"severity":"medium","category":"access_control","title":"Initializer appears publicly callable; critical storage can be set by anyone once","exploit_scenario":"If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed.","recommendation":"Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.","evidence":"Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.","locations":["selector:0xc4d66de8","pc:0x08cc","pc:0x0969","pc:0x0a15"]},{"severity":"low","category":"reentrancy","title":"Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface","exploit_scenario":"If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain.","recommendation":"Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.","evidence":"Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.","locations":["pc:0x0613","pc:0x0c85","pc:0x0f72"]},{"severity":"low","category":"other","title":"SELFDESTRUCT opcode present in runtime bytecode (appears unreachable)","exploit_scenario":"If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain.","recommendation":"Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.","evidence":"SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.","locations":["pc:0x1f75"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-pxdcqe3y
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0fd6-a913-7342-8608-e6e5bf9edb3c
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers
thinking
**Choosing file read method**
Deciding to read BYTECODE_BUNDLE.json using a simple shell command with cat for a straightforward and sandbox-safe file read.
exec
/bin/bash -lc ls in /tmp/codex-pxdcqe3y succeeded in 8ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-pxdcqe3y succeeded in 8ms:
{
"analysis_artifact": {
"address": "0x5018cc0d628fb322b2a040cfcd269a36c60b1538",
"artifact_hash": "0x34f4107ed4c6e9c6513f97e9505ebdc3100fd27a870a227a5bc63f04ac0fa890",
"artifact_json": {
"auth": {
"guards": [
{
"pc": 1138,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1642,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2818,
"type": "msg_sender_eq_const",
thinking
**Analyzing detector findings**
Detected issues include untrusted call targets, possible ETH transfers, and reachable selfdestruct calls; call targets seem constant and may point to self-calls, with three relevant CALL instructions identified. I'll search for "selfdestruct" or its opcode in the evidence bundle to gather more context before assessing risks.
exec
/bin/bash -lc 'rg -n "SELFDESTRUCT|selfdestruct" BYTECODE_BUNDLE.json' in /tmp/codex-pxdcqe3y succeeded in 6ms:
8134: "SELFDESTRUCT"
10421: "selfdestruct": 1,
10491: "selfdestruct": 1,
10561: "selfdestruct": 1,
10631: "selfdestruct": 1,
10701: "selfdestruct": 1,
10771: "selfdestruct": 1,
10841: "selfdestruct": 1,
10911: "selfdestruct": 1,
10981: "selfdestruct": 1,
11051: "selfdestruct": 1,
11121: "selfdestruct": 1,
11185: "selfdestruct": 1,
17500: "selfdestruct_count": 1
17503: "sink": "SELFDESTRUCT"
17506: "title": "SELFDESTRUCT reachable",
17515: "sink": "SELFDESTRUCT",
17527: "selfdestruct_present"
17529: "selfdestruct_count": 1
thinking
**Scanning for SELFDESTRUCT usage**
I'm checking around line 8134 to understand the context, expecting a basic block involving SELFDESTRUCT to clarify its role.
exec
/bin/bash -lc "sed -n '8100,8165p' BYTECODE_BUNDLE.json" in /tmp/codex-pxdcqe3y succeeded in 8ms:
{
"end_pc": 8037,
"hash": "0xcc8de6ddc3dcba22c317ce845ec6683a3e0e40712645f00bb1418bc0369692ce",
"opcodes": [
"INVALID"
],
"start_pc": 8037
},
{
"end_pc": 8052,
"hash": "0x1b6d50562338c343771d170c52c4a521bf2e2b3fcd221b199a60a334b42110bf",
"opcodes": [
"OP_A2",
"PUSH5",
"OP_22",
"SLT",
"SHA3",
"OP_BF",
"OP_95",
"OP_9E",
thinking
**Analyzing opcode reachability and metadata**
The selfdestruct opcode appears in a bytecode region with invalid opcodes and possible appended metadata, suggesting it's likely unreachable or non-executable data. Callsite analysis shows self-calls via CALL (not DELEGATECALL) with constant targets matching the contract, which is unusual and may indicate reentrancy—this needs careful evidence-based validation to inform vulnerability reporting.
thinking
**Evaluating self-calls and guard heuristics**
CALLs targeting the contract itself likely pose low reentrancy risk since msg.sender resets internally, but the analysis shows conflicting target trust levels, warranting conservative low-risk reporting. Guard heuristics detecting impossible msg.sender constants suggest unreachable code or placeholders; no delegatecalls appear, so proxy patterns seem absent. The presence of SELFDESTRUCT in runtime bytecode lacks clear access control or reachability evidence, so it should be noted with low severity due to uncertainty. Further callsite and storage slot inspections are needed to clarify external call risks and potential admin controls.
exec
/bin/bash -lc 'rg -n "EIP-1967|eip1967|proxy|beacon|implementation" BYTECODE_BUNDLE.json' in /tmp/codex-pxdcqe3y succeeded in 6ms:
11253: "link_type": "implementation",
11255: "implementation": "0x5018cc0d628fb322b2a040cfcd269a36c60b1538",
11256: "method": "beacon",
11257: "onchain_method": "beacon",
11282: "implementation": null,
11284: "proxy": "0",
11289: "proxy_evidence": {
11290: "status": "not_proxy"
11293: "implementation_address": null,
11294: "is_proxy": false,
thinking
**Inspecting beacon use for link_type**
I'm investigating the implementation of link_type by examining the code around line 11240 to confirm if it uses beacon for this feature.
exec
/bin/bash -lc "sed -n '11230,11310p' BYTECODE_BUNDLE.json" in /tmp/codex-pxdcqe3y succeeded in 7ms:
},
"version": "analysis_artifact_v1"
},
"block_number": null,
"chain_id": 1,
"codehash": "0x029d5286de44f8aa9f7c5681998a4cc731020d1dff70032159ad43326ceeaccf",
"created_at": "2026-01-10T03:36:48.000000Z",
"id": 37,
"updated_at": "2026-01-30T15:40:16.000000Z",
"version": "analysis_artifact_v1"
},
"analysis_run": {
"address": "0x5018cc0d628fb322b2a040cfcd269a36c60b1538",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2026-01-30T11:31:23.000000Z",
"id": "019c0eac-1141-73a4-bb86-3f06ad5c30a9",
"parent_links": [
{
thinking
**Analyzing runtime bytecode for insights**
The runtime bytecode includes detailed function logic, reverts, error strings, and ERC721-related features plus ETH and ERC20 transfer handling. I'll inspect callsites and disassemble parts of the runtime bytecode to understand call patterns and identify key behaviors or issues.
thinking
**Mapping function selectors to behaviors**
I've identified key function selectors like owner, supportsInterface, and ERC721 hooks, tied to storage slot 2 as owner or token address. External calls include ERC721 ownerOf and ERC20 transferFrom, plus ETH transfers using low-level call with value and revert strings like "Failed to send Ether." I'll parse callsites in basic blocks by mapping call PCs to functions to reconstruct critical flows and check for potential reentrancy or authorization issues.
exec
/bin/bash -lc "python - <<'PY'
import json
import sys
from pathlib import Path
p=Path('BYTECODE_BUNDLE.json')
with p.open() as f:
data=json.load(f)
bbs=data['analysis_artifact']['artifact_json'].get('basic_blocks',[])
pcs=[1555,3205,3954,8053]
for pc in pcs:
# find block containing pc
found=[b for b in bbs if b.get('start_pc') is not None and b.get('end_pc') is not None and b['start_pc']<=pc<=b['end_pc']]
print('pc',pc,'blocks',len(found))
for b in found[:3]:
print(' start',b['start_pc'],'end',b['end_pc'],'opcodes',b.get('opcodes'))
PY" in /tmp/codex-pxdcqe3y succeeded in 47ms:
pc 1555 blocks 1
start 1552 end 1562 opcodes ['JUMPDEST', 'POP', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
pc 3205 blocks 1
start 3192 end 3219 opcodes ['JUMPDEST', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
pc 3954 blocks 1
start 3941 end 3968 opcodes ['JUMPDEST', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
pc 8053 blocks 1
start 8053 end 8058 opcodes ['OP_BB', 'PC', 'RETURNDATASIZE', 'OP_9D', 'OP_A7', 'SELFDESTRUCT']
thinking
**Planning disassembler for runtime bytecode**
I'm deciding to implement a simple disassembler to parse runtime bytecode hex into opcodes with program counters to better analyze callsites and surrounding instructions, since existing function entry data seems unreliable or hashed. This will help locate function boundaries and call targets.
thinking
**Implementing simple EVM disassembler**
I'm creating a Python opcode map to decode the full runtime bytecode into instructions with program counters, focusing on printing code around the call at pc 1555 to understand call targets by inspecting preceding pushes.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# simple opcode map
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
# names
for i in range(0x00,0x10):
opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]
opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})
# read bytecode
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)
# disassemble to list of (pc, op, imm)
ins=[]
pc=0
while pc < len(code):
op=code[pc]
name=opcodes.get(op,f'OP_{op:02X}')
imm=None
pc0=pc
pc+=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
imm=code[pc:pc+n]
pc+=n
ins.append((pc0,name,imm))
# helper to print around a pc
pcs=[1555,3205,3954]
for target in pcs:
# find index where pc==target
idx=None
for i,(pc0,name,imm) in enumerate(ins):
if pc0==target:
idx=i;break
print('\\n-- around pc',target,'--')
if idx is None:
print('not found');
continue
for j in range(max(0,idx-10), min(len(ins), idx+15)):
pc0,name,imm=ins[j]
if imm is not None:
imm_hex='0x'+imm.hex()
print(f'{pc0:04x}: {name} {imm_hex}')
else:
print(f'{pc0:04x}: {name}')
PY" in /tmp/codex-pxdcqe3y succeeded in 40ms:
-- around pc 1555 --
0606: DUP1
0607: ISZERO
0608: PUSH2 0x0610
060b: JUMPI
060c: PUSH1 0x00
060e: DUP1
060f: REVERT
0610: JUMPDEST
0611: POP
0612: GAS
0613: CALL
0614: ISZERO
0615: DUP1
0616: ISZERO
0617: PUSH2 0x0624
061a: JUMPI
061b: RETURNDATASIZE
061c: PUSH1 0x00
thinking
**Extending context around callsite**
I'm checking about 30 instructions before pc 1555 to capture relevant pushes and better identify the target and value for the low-level call with value.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# disassemble same as before
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
for i in range(0x00,0x10):
opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]
opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)
ins=[]
pc=0
while pc < len(code):
op=code[pc]
name=opcodes.get(op,f'OP_{op:02X}')
imm=None
pc0=pc
pc+=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
imm=code[pc:pc+n]
pc+=n
ins.append((pc0,name,imm))
# build index
index={pc:i for i,(pc,_,_) in enumerate(ins)}
def dump(target, before=40, after=40):
idx=index.get(target)
print('\\n-- pc',target,'--')
if idx is None:
print('not found')
return
for j in range(max(0,idx-before), min(len(ins), idx+after)):
pc0,name,imm=ins[j]
if imm is not None:
print(f'{pc0:04x}: {name} 0x{imm.hex()}')
else:
print(f'{pc0:04x}: {name}')
for t in [1555,3205,3954]:
dump(t)
PY" in /tmp/codex-pxdcqe3y succeeded in 61ms:
-- pc 1555 --
05db: MLOAD
05dc: DUP5
05dd: PUSH4 0xffffffff
05e2: AND
05e3: PUSH1 0xe0
05e5: SHL
05e6: DUP2
05e7: MSTORE
05e8: PUSH1 0x04
05ea: ADD
05eb: PUSH2 0x05f6
05ee: SWAP4
05ef: SWAP3
05f0: SWAP2
05f1: SWAP1
05f2: PUSH2 0x194e
05f5: JUMP
05f6: JUMPDEST
thinking
**Analyzing CALL instruction patterns**
CALL usage involves EXTCODESIZE checks to ensure the target is a contract, with stack setups matching Address.functionCall styles calling non-view functions, often building calldata via jumps before the CALL, implying wrappers managing call targets and values.
thinking
**Highlighting external calls with value and unreachable selfdestruct**
External CALLs with ETH value appear guarded by an owner check, reducing risk though reentrancy can’t be fully excluded; a SELFDESTRUCT opcode exists but is unreachable in execution, so no active threat is evident.
thinking
**Noting public initializer without sender restrictions**
The contract includes a public initializer guarded only by an initialization flag, allowing anyone to set ownership if uninitialized—typical in upgradeable patterns but risky if deployed directly without proper initialization.
exec
/bin/bash -lc "python - <<'PY'
import json
# disassemble similar as before
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
for i in range(0x00,0x10):
opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]
opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)
ins=[]
pc=0
while pc < len(code):
op=code[pc]
name=opcodes.get(op,f'OP_{op:02X}')
imm=None
pc0=pc
pc+=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
imm=code[pc:pc+n]
pc+=n
ins.append((pc0,name,imm))
# find sstore locations
sstore_pcs=[pc for pc,name,imm in ins if name=='SSTORE']
print('SSTORE pcs',sstore_pcs)
# dump around first few sstores
for pc in sstore_pcs[:5]:
print('\\n-- around sstore',pc,'--')
# find index
idx=next(i for i,(p,_,_) in enumerate(ins) if p==pc)
for j in range(max(0,idx-20), min(len(ins), idx+10)):
p,name,imm=ins[j]
if imm is not None:
print(f'{p:04x}: {name} 0x{imm.hex()}')
else:
print(f'{p:04x}: {name}')
PY" in /tmp/codex-pxdcqe3y succeeded in 48ms:
SSTORE pcs [2435, 2468, 2645, 2677]
-- around sstore 2435 --
0969: JUMPDEST
096a: PUSH1 0x01
096c: PUSH1 0x00
096e: DUP1
096f: PUSH2 0x0100
0972: EXP
0973: DUP2
0974: SLOAD
0975: DUP2
0976: PUSH1 0xff
0978: MUL
0979: NOT
097a: AND
097b: SWAP1
097c: DUP4
097d: PUSH1 0xff
097f: AND
thinking
**Investigating storage writes and access control**
SSTORE instructions indicate setting initialization booleans and owner address without immediate access control; next step is dumping earlier bytecode near pc 0x08d0 to look for caller restrictions.
exec
/bin/bash -lc "python - <<'PY'
import json
# disassemble
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
for i in range(0x00,0x10):
opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]
opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)
ins=[]
pc=0
while pc < len(code):
op=code[pc]
name=opcodes.get(op,f'OP_{op:02X}')
imm=None
pc0=pc
pc+=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
imm=code[pc:pc+n]
pc+=n
ins.append((pc0,name,imm))
# dump around 0x0900
start=0x08b0
end=0x0ab0
for pc0,name,imm in ins:
if start <= pc0 <= end:
if imm is not None:
print(f'{pc0:04x}: {name} 0x{imm.hex()}')
else:
print(f'{pc0:04x}: {name}')
PY" in /tmp/codex-pxdcqe3y succeeded in 42ms:
08b4: AND
08b5: DUP2
08b6: JUMP
08b7: JUMPDEST
08b8: PUSH1 0x00
08ba: PUSH4 0xbc197c81
08bf: PUSH1 0xe0
08c1: SHL
08c2: SWAP1
08c3: POP
08c4: SWAP6
08c5: SWAP5
08c6: POP
08c7: POP
08c8: POP
08c9: POP
08ca: POP
08cb: JUMP
08cc: JUMPDEST
08cd: PUSH1 0x00
thinking
**Analyzing initializer security risks**
I confirmed the initializer allows any account to call it once if not initialized, posing a risk if the implementation contract is left uninitialized—this could let third parties claim ownership or selfdestruct it. The proxy pattern mitigates direct risk since storage is separate, but uninitialized implementation contracts remain vulnerable. The use of `Address.isContract` in the initializer could allow reinitialization during construction, raising subtle concerns.
thinking
**Confirming public initializer risks with detailed evidence**
I mapped the initializer to selector 0xc4d66de8 at pc 0x08cc confirming it’s publicly callable without caller checks, allowing ownership or config to be set once if uninitialized. This supports delivering a medium-severity access control finding with precise evidence locations.
codex
{"no_findings":false,"summary":"Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.","findings":[{"severity":"medium","category":"access_control","title":"Initializer appears publicly callable; critical storage can be set by anyone once","exploit_scenario":"If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed.","recommendation":"Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.","evidence":"Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.","locations":["selector:0xc4d66de8","pc:0x08cc","pc:0x0969","pc:0x0a15"]},{"severity":"low","category":"reentrancy","title":"Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface","exploit_scenario":"If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain.","recommendation":"Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.","evidence":"Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.","locations":["pc:0x0613","pc:0x0c85","pc:0x0f72"]},{"severity":"low","category":"other","title":"SELFDESTRUCT opcode present in runtime bytecode (appears unreachable)","exploit_scenario":"If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain.","recommendation":"Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.","evidence":"SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.","locations":["pc:0x1f75"]}]}
tokens used
64,485
{
"codex": {
"ran_at": "2026-01-30T17:04:22.015660+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 16184,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.",
"raw_final": {
"summary": "Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.",
"findings": [
{
"title": "Initializer appears publicly callable; critical storage can be set by anyone once",
"category": "access_control",
"evidence": "Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.",
"severity": "medium",
"locations": [
"selector:0xc4d66de8",
"pc:0x08cc",
"pc:0x0969",
"pc:0x0a15"
],
"recommendation": "Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.",
"exploit_scenario": "If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed."
},
{
"title": "Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface",
"category": "reentrancy",
"evidence": "Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.",
"severity": "low",
"locations": [
"pc:0x0613",
"pc:0x0c85",
"pc:0x0f72"
],
"recommendation": "Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.",
"exploit_scenario": "If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain."
},
{
"title": "SELFDESTRUCT opcode present in runtime bytecode (appears unreachable)",
"category": "other",
"evidence": "SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.",
"severity": "low",
"locations": [
"pc:0x1f75"
],
"recommendation": "Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.",
"exploit_scenario": "If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain."
}
],
"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 0x00aa 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x71629b97 00000019: GT 0000001a: PUSH2 0x0064 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x71629b97 00000024: EQ 00000025: PUSH2 0x01fb 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0x8da5cb5b 0000002f: EQ 00000030: PUSH2 0x0238 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xbc197c81 0000003a: EQ 0000003b: PUSH2 0x0263 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xc4d66de8 00000045: EQ 00000046: PUSH2 0x02a0 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf23a6e61 00000050: EQ 00000051: PUSH2 0x02bc 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf3fef3a3 0000005b: EQ 0000005c: PUSH2 0x02f9 0000005f: JUMPI 00000060: PUSH2 0x00b1 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH3 0x95b910 0000006a: EQ 0000006b: PUSH2 0x00b3 0000006e: JUMPI 0000006f: DUP1 00000070: PUSH4 0x01ffc9a7 00000075: EQ 00000076: PUSH2 0x00f0 00000079: JUMPI 0000007a: DUP1 0000007b: PUSH4 0x150b7a02 00000080: EQ 00000081: PUSH2 0x012d 00000084: JUMPI 00000085: DUP1 00000086: PUSH4 0x4025feb2 0000008b: EQ 0000008c: PUSH2 0x016a 0000008f: JUMPI 00000090: DUP1 00000091: PUSH4 0x44004cc1 00000096: EQ 00000097: PUSH2 0x0193 0000009a: JUMPI 0000009b: DUP1 0000009c: PUSH4 0x6f9fb98a 000000a1: EQ 000000a2: PUSH2 0x01d0 000000a5: JUMPI 000000a6: PUSH2 0x00b1 000000a9: JUMP 000000aa: JUMPDEST 000000ab: CALLDATASIZE 000000ac: PUSH2 0x00b1 000000af: JUMPI 000000b0: STOP 000000b1: JUMPDEST 000000b2: STOP 000000b3: JUMPDEST 000000b4: CALLVALUE 000000b5: DUP1 000000b6: ISZERO 000000b7: PUSH2 0x00bf 000000ba: JUMPI 000000bb: PUSH1 0x00 000000bd: DUP1 000000be: REVERT 000000bf: JUMPDEST 000000c0: POP 000000c1: PUSH2 0x00da 000000c4: PUSH1 0x04 000000c6: DUP1 000000c7: CALLDATASIZE 000000c8: SUB 000000c9: DUP2 000000ca: ADD 000000cb: SWAP1 000000cc: PUSH2 0x00d5 000000cf: SWAP2 000000d0: SWAP1 000000d1: PUSH2 0x111e 000000d4: JUMP 000000d5: JUMPDEST 000000d6: PUSH2 0x0322 000000d9: JUMP 000000da: JUMPDEST 000000db: PUSH1 0x40 000000dd: MLOAD 000000de: PUSH2 0x00e7 000000e1: SWAP2 000000e2: SWAP1 000000e3: PUSH2 0x1164 000000e6: JUMP 000000e7: JUMPDEST 000000e8: PUSH1 0x40 000000ea: MLOAD 000000eb: DUP1 000000ec: SWAP2 000000ed: SUB 000000ee: SWAP1 000000ef: RETURN 000000f0: JUMPDEST 000000f1: CALLVALUE 000000f2: DUP1 000000f3: ISZERO 000000f4: PUSH2 0x00fc 000000f7: JUMPI 000000f8: PUSH1 0x00 000000fa: DUP1 000000fb: REVERT 000000fc: JUMPDEST 000000fd: POP 000000fe: PUSH2 0x0117 00000101: PUSH1 0x04 00000103: DUP1 00000104: CALLDATASIZE 00000105: SUB 00000106: DUP2 00000107: ADD 00000108: SWAP1 00000109: PUSH2 0x0112 0000010c: SWAP2 0000010d: SWAP1 0000010e: PUSH2 0x11d7 00000111: JUMP 00000112: JUMPDEST 00000113: PUSH2 0x03aa 00000116: JUMP 00000117: JUMPDEST 00000118: PUSH1 0x40 0000011a: MLOAD 0000011b: PUSH2 0x0124 0000011e: SWAP2 0000011f: SWAP1 00000120: PUSH2 0x121f 00000123: JUMP 00000124: JUMPDEST 00000125: PUSH1 0x40 00000127: MLOAD 00000128: DUP1 00000129: SWAP2 0000012a: SUB 0000012b: SWAP1 0000012c: RETURN 0000012d: JUMPDEST 0000012e: CALLVALUE 0000012f: DUP1 00000130: ISZERO 00000131: PUSH2 0x0139 00000134: JUMPI 00000135: PUSH1 0x00 00000137: DUP1 00000138: REVERT 00000139: JUMPDEST 0000013a: POP 0000013b: PUSH2 0x0154 0000013e: PUSH1 0x04 00000140: DUP1 00000141: CALLDATASIZE 00000142: SUB 00000143: DUP2 00000144: ADD 00000145: SWAP1 00000146: PUSH2 0x014f 00000149: SWAP2 0000014a: SWAP1 0000014b: PUSH2 0x13ac 0000014e: JUMP 0000014f: JUMPDEST 00000150: PUSH2 0x0424 00000153: JUMP 00000154: JUMPDEST 00000155: PUSH1 0x40 00000157: MLOAD 00000158: PUSH2 0x0161 0000015b: SWAP2 0000015c: SWAP1 0000015d: PUSH2 0x143e 00000160: JUMP 00000161: JUMPDEST 00000162: PUSH1 0x40 00000164: MLOAD 00000165: DUP1 00000166: SWAP2 00000167: SUB 00000168: SWAP1 00000169: RETURN 0000016a: JUMPDEST 0000016b: CALLVALUE 0000016c: DUP1 0000016d: ISZERO 0000016e: PUSH2 0x0176 00000171: JUMPI 00000172: PUSH1 0x00 00000174: DUP1 00000175: REVERT 00000176: JUMPDEST 00000177: POP 00000178: PUSH2 0x0191 0000017b: PUSH1 0x04 0000017d: DUP1 0000017e: CALLDATASIZE 0000017f: SUB 00000180: DUP2 00000181: ADD 00000182: SWAP1 00000183: PUSH2 0x018c 00000186: SWAP2 00000187: SWAP1 00000188: PUSH2 0x1497 0000018b: JUMP 0000018c: JUMPDEST 0000018d: PUSH2 0x0438 00000190: JUMP 00000191: JUMPDEST 00000192: STOP 00000193: JUMPDEST 00000194: CALLVALUE 00000195: DUP1 00000196: ISZERO 00000197: PUSH2 0x019f 0000019a: JUMPI 0000019b: PUSH1 0x00 0000019d: DUP1 0000019e: REVERT 0000019f: JUMPDEST 000001a0: POP 000001a1: PUSH2 0x01ba 000001a4: PUSH1 0x04 000001a6: DUP1 000001a7: CALLDATASIZE 000001a8: SUB 000001a9: DUP2 000001aa: ADD 000001ab: SWAP1 000001ac: PUSH2 0x01b5 000001af: SWAP2 000001b0: SWAP1 000001b1: PUSH2 0x1497 000001b4: JUMP 000001b5: JUMPDEST 000001b6: PUSH2 0x062f 000001b9: JUMP 000001ba: JUMPDEST 000001bb: PUSH1 0x40 000001bd: MLOAD 000001be: PUSH2 0x01c7 000001c1: SWAP2 000001c2: SWAP1 000001c3: PUSH2 0x121f 000001c6: JUMP 000001c7: JUMPDEST 000001c8: PUSH1 0x40 000001ca: MLOAD 000001cb: DUP1 000001cc: SWAP2 000001cd: SUB 000001ce: SWAP1 000001cf: RETURN 000001d0: JUMPDEST 000001d1: CALLVALUE 000001d2: DUP1 000001d3: ISZERO 000001d4: PUSH2 0x01dc 000001d7: JUMPI 000001d8: PUSH1 0x00 000001da: DUP1 000001db: REVERT 000001dc: JUMPDEST 000001dd: POP 000001de: PUSH2 0x01e5 000001e1: PUSH2 0x0801 000001e4: JUMP 000001e5: JUMPDEST 000001e6: PUSH1 0x40 000001e8: MLOAD 000001e9: PUSH2 0x01f2 000001ec: SWAP2 000001ed: SWAP1 000001ee: PUSH2 0x1164 000001f1: JUMP 000001f2: JUMPDEST 000001f3: PUSH1 0x40 000001f5: MLOAD 000001f6: DUP1 000001f7: SWAP2 000001f8: SUB 000001f9: SWAP1 000001fa: RETURN 000001fb: JUMPDEST 000001fc: CALLVALUE 000001fd: DUP1 000001fe: ISZERO 000001ff: PUSH2 0x0207 00000202: JUMPI 00000203: PUSH1 0x00 00000205: DUP1 00000206: REVERT 00000207: JUMPDEST 00000208: POP 00000209: PUSH2 0x0222 0000020c: PUSH1 0x04 0000020e: DUP1 0000020f: CALLDATASIZE 00000210: SUB 00000211: DUP2 00000212: ADD 00000213: SWAP1 00000214: PUSH2 0x021d 00000217: SWAP2 00000218: SWAP1 00000219: PUSH2 0x111e 0000021c: JUMP 0000021d: JUMPDEST 0000021e: PUSH2 0x0809 00000221: JUMP 00000222: JUMPDEST 00000223: PUSH1 0x40 00000225: MLOAD 00000226: PUSH2 0x022f 00000229: SWAP2 0000022a: SWAP1 0000022b: PUSH2 0x1164 0000022e: JUMP 0000022f: JUMPDEST 00000230: PUSH1 0x40 00000232: MLOAD 00000233: DUP1 00000234: SWAP2 00000235: SUB 00000236: SWAP1 00000237: RETURN 00000238: JUMPDEST 00000239: CALLVALUE 0000023a: DUP1 0000023b: ISZERO 0000023c: PUSH2 0x0244 0000023f: JUMPI 00000240: PUSH1 0x00 00000242: DUP1 00000243: REVERT 00000244: JUMPDEST 00000245: POP 00000246: PUSH2 0x024d 00000249: PUSH2 0x0891 0000024c: JUMP 0000024d: JUMPDEST 0000024e: PUSH1 0x40 00000250: MLOAD 00000251: PUSH2 0x025a 00000254: SWAP2 00000255: SWAP1 00000256: PUSH2 0x14f9 00000259: JUMP 0000025a: JUMPDEST 0000025b: PUSH1 0x40 0000025d: MLOAD 0000025e: DUP1 0000025f: SWAP2 00000260: SUB 00000261: SWAP1 00000262: RETURN 00000263: JUMPDEST 00000264: CALLVALUE 00000265: DUP1 00000266: ISZERO 00000267: PUSH2 0x026f 0000026a: JUMPI 0000026b: PUSH1 0x00 0000026d: DUP1 0000026e: REVERT 0000026f: JUMPDEST 00000270: POP 00000271: PUSH2 0x028a 00000274: PUSH1 0x04 00000276: DUP1 00000277: CALLDATASIZE 00000278: SUB 00000279: DUP2 0000027a: ADD 0000027b: SWAP1 0000027c: PUSH2 0x0285 0000027f: SWAP2 00000280: SWAP1 00000281: PUSH2 0x15dc 00000284: JUMP 00000285: JUMPDEST 00000286: PUSH2 0x08b7 00000289: JUMP 0000028a: JUMPDEST 0000028b: PUSH1 0x40 0000028d: MLOAD 0000028e: PUSH2 0x0297 00000291: SWAP2 00000292: SWAP1 00000293: PUSH2 0x143e 00000296: JUMP 00000297: JUMPDEST 00000298: PUSH1 0x40 0000029a: MLOAD 0000029b: DUP1 0000029c: SWAP2 0000029d: SUB 0000029e: SWAP1 0000029f: RETURN 000002a0: JUMPDEST 000002a1: PUSH2 0x02ba 000002a4: PUSH1 0x04 000002a6: DUP1 000002a7: CALLDATASIZE 000002a8: SUB 000002a9: DUP2 000002aa: ADD 000002ab: SWAP1 000002ac: PUSH2 0x02b5 000002af: SWAP2 000002b0: SWAP1 000002b1: PUSH2 0x111e 000002b4: JUMP 000002b5: JUMPDEST 000002b6: PUSH2 0x08cc 000002b9: JUMP 000002ba: JUMPDEST 000002bb: STOP 000002bc: JUMPDEST 000002bd: CALLVALUE 000002be: DUP1 000002bf: ISZERO 000002c0: PUSH2 0x02c8 000002c3: JUMPI 000002c4: PUSH1 0x00 000002c6: DUP1 000002c7: REVERT 000002c8: JUMPDEST 000002c9: POP 000002ca: PUSH2 0x02e3 000002cd: PUSH1 0x04 000002cf: DUP1 000002d0: CALLDATASIZE 000002d1: SUB 000002d2: DUP2 000002d3: ADD 000002d4: SWAP1 000002d5: PUSH2 0x02de 000002d8: SWAP2 000002d9: SWAP1 000002da: PUSH2 0x16ab 000002dd: JUMP 000002de: JUMPDEST 000002df: PUSH2 0x0ab3 000002e2: JUMP 000002e3: JUMPDEST 000002e4: PUSH1 0x40 000002e6: MLOAD 000002e7: PUSH2 0x02f0 000002ea: SWAP2 000002eb: SWAP1 000002ec: PUSH2 0x143e 000002ef: JUMP 000002f0: JUMPDEST 000002f1: PUSH1 0x40 000002f3: MLOAD 000002f4: DUP1 000002f5: SWAP2 000002f6: SUB 000002f7: SWAP1 000002f8: RETURN 000002f9: JUMPDEST 000002fa: CALLVALUE 000002fb: DUP1 000002fc: ISZERO 000002fd: PUSH2 0x0305 00000300: JUMPI 00000301: PUSH1 0x00 00000303: DUP1 00000304: REVERT 00000305: JUMPDEST 00000306: POP 00000307: PUSH2 0x0320 0000030a: PUSH1 0x04 0000030c: DUP1 0000030d: CALLDATASIZE 0000030e: SUB 0000030f: DUP2 00000310: ADD 00000311: SWAP1 00000312: PUSH2 0x031b 00000315: SWAP2 00000316: SWAP1 00000317: PUSH2 0x1742 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH2 0x0ac8 0000031f: JUMP 00000320: JUMPDEST 00000321: STOP 00000322: JUMPDEST 00000323: PUSH1 0x00 00000325: DUP1 00000326: DUP3 00000327: SWAP1 00000328: POP 00000329: DUP1 0000032a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000033f: AND 00000340: PUSH4 0x70a08231 00000345: ADDRESS 00000346: PUSH1 0x40 00000348: MLOAD 00000349: DUP3 0000034a: PUSH4 0xffffffff 0000034f: AND 00000350: PUSH1 0xe0 00000352: SHL 00000353: DUP2 00000354: MSTORE 00000355: PUSH1 0x04 00000357: ADD 00000358: PUSH2 0x0361 0000035b: SWAP2 0000035c: SWAP1 0000035d: PUSH2 0x14f9 00000360: JUMP 00000361: JUMPDEST 00000362: PUSH1 0x20 00000364: PUSH1 0x40 00000366: MLOAD 00000367: DUP1 00000368: DUP4 00000369: SUB 0000036a: DUP2 0000036b: DUP7 0000036c: GAS 0000036d: STATICCALL 0000036e: ISZERO 0000036f: DUP1 00000370: ISZERO 00000371: PUSH2 0x037e 00000374: JUMPI 00000375: RETURNDATASIZE 00000376: PUSH1 0x00 00000378: DUP1 00000379: RETURNDATACOPY 0000037a: RETURNDATASIZE 0000037b: PUSH1 0x00 0000037d: REVERT 0000037e: JUMPDEST 0000037f: POP 00000380: POP 00000381: POP 00000382: POP 00000383: PUSH1 0x40 00000385: MLOAD 00000386: RETURNDATASIZE 00000387: PUSH1 0x1f 00000389: NOT 0000038a: PUSH1 0x1f 0000038c: DUP3 0000038d: ADD 0000038e: AND 0000038f: DUP3 00000390: ADD 00000391: DUP1 00000392: PUSH1 0x40 00000394: MSTORE 00000395: POP 00000396: DUP2 00000397: ADD 00000398: SWAP1 00000399: PUSH2 0x03a2 0000039c: SWAP2 0000039d: SWAP1 0000039e: PUSH2 0x1797 000003a1: JUMP 000003a2: JUMPDEST 000003a3: SWAP2 000003a4: POP 000003a5: POP 000003a6: SWAP2 000003a7: SWAP1 000003a8: POP 000003a9: JUMP 000003aa: JUMPDEST 000003ab: PUSH1 0x00 000003ad: PUSH32 0x4e2312e000000000000000000000000000000000000000000000000000000000 000003ce: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000003eb: NOT 000003ec: AND 000003ed: DUP3 000003ee: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000040b: NOT 0000040c: AND 0000040d: EQ 0000040e: DUP1 0000040f: PUSH2 0x041d 00000412: JUMPI 00000413: POP 00000414: PUSH2 0x041c 00000417: DUP3 00000418: PUSH2 0x0d04 0000041b: JUMP 0000041c: JUMPDEST 0000041d: JUMPDEST 0000041e: SWAP1 0000041f: POP 00000420: SWAP2 00000421: SWAP1 00000422: POP 00000423: JUMP 00000424: JUMPDEST 00000425: PUSH1 0x00 00000427: PUSH4 0x150b7a02 0000042c: PUSH1 0xe0 0000042e: SHL 0000042f: SWAP1 00000430: POP 00000431: SWAP5 00000432: SWAP4 00000433: POP 00000434: POP 00000435: POP 00000436: POP 00000437: JUMP 00000438: JUMPDEST 00000439: PUSH1 0x00 0000043b: PUSH1 0x02 0000043d: SWAP1 0000043e: SLOAD 0000043f: SWAP1 00000440: PUSH2 0x0100 00000443: EXP 00000444: SWAP1 00000445: DIV 00000446: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000045b: AND 0000045c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000471: AND 00000472: CALLER 00000473: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000488: AND 00000489: EQ 0000048a: PUSH2 0x04c8 0000048d: JUMPI 0000048e: PUSH1 0x40 00000490: MLOAD 00000491: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000004b2: DUP2 000004b3: MSTORE 000004b4: PUSH1 0x04 000004b6: ADD 000004b7: PUSH2 0x04bf 000004ba: SWAP1 000004bb: PUSH2 0x1821 000004be: JUMP 000004bf: JUMPDEST 000004c0: PUSH1 0x40 000004c2: MLOAD 000004c3: DUP1 000004c4: SWAP2 000004c5: SUB 000004c6: SWAP1 000004c7: REVERT 000004c8: JUMPDEST 000004c9: PUSH1 0x00 000004cb: DUP3 000004cc: SWAP1 000004cd: POP 000004ce: PUSH1 0x00 000004d0: DUP2 000004d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004e6: AND 000004e7: PUSH4 0x6352211e 000004ec: DUP5 000004ed: PUSH1 0x40 000004ef: MLOAD 000004f0: DUP3 000004f1: PUSH4 0xffffffff 000004f6: AND 000004f7: PUSH1 0xe0 000004f9: SHL 000004fa: DUP2 000004fb: MSTORE 000004fc: PUSH1 0x04 000004fe: ADD 000004ff: PUSH2 0x0508 00000502: SWAP2 00000503: SWAP1 00000504: PUSH2 0x1164 00000507: JUMP 00000508: JUMPDEST 00000509: PUSH1 0x20 0000050b: PUSH1 0x40 0000050d: MLOAD 0000050e: DUP1 0000050f: DUP4 00000510: SUB 00000511: DUP2 00000512: DUP7 00000513: GAS 00000514: STATICCALL 00000515: ISZERO 00000516: DUP1 00000517: ISZERO 00000518: PUSH2 0x0525 0000051b: JUMPI 0000051c: RETURNDATASIZE 0000051d: PUSH1 0x00 0000051f: DUP1 00000520: RETURNDATACOPY 00000521: RETURNDATASIZE 00000522: PUSH1 0x00 00000524: REVERT 00000525: JUMPDEST 00000526: POP 00000527: POP 00000528: POP 00000529: POP 0000052a: PUSH1 0x40 0000052c: MLOAD 0000052d: RETURNDATASIZE 0000052e: PUSH1 0x1f 00000530: NOT 00000531: PUSH1 0x1f 00000533: DUP3 00000534: ADD 00000535: AND 00000536: DUP3 00000537: ADD 00000538: DUP1 00000539: PUSH1 0x40 0000053b: MSTORE 0000053c: POP 0000053d: DUP2 0000053e: ADD 0000053f: SWAP1 00000540: PUSH2 0x0549 00000543: SWAP2 00000544: SWAP1 00000545: PUSH2 0x1856 00000548: JUMP 00000549: JUMPDEST 0000054a: SWAP1 0000054b: POP 0000054c: ADDRESS 0000054d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000562: AND 00000563: DUP2 00000564: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000579: AND 0000057a: EQ 0000057b: PUSH2 0x05b9 0000057e: JUMPI 0000057f: PUSH1 0x40 00000581: MLOAD 00000582: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000005a3: DUP2 000005a4: MSTORE 000005a5: PUSH1 0x04 000005a7: ADD 000005a8: PUSH2 0x05b0 000005ab: SWAP1 000005ac: PUSH2 0x18cf 000005af: JUMP 000005b0: JUMPDEST 000005b1: PUSH1 0x40 000005b3: MLOAD 000005b4: DUP1 000005b5: SWAP2 000005b6: SUB 000005b7: SWAP1 000005b8: REVERT 000005b9: JUMPDEST 000005ba: DUP2 000005bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005d0: AND 000005d1: PUSH4 0x23b872dd 000005d6: ADDRESS 000005d7: DUP8 000005d8: DUP7 000005d9: PUSH1 0x40 000005db: MLOAD 000005dc: DUP5 000005dd: PUSH4 0xffffffff 000005e2: AND 000005e3: PUSH1 0xe0 000005e5: SHL 000005e6: DUP2 000005e7: MSTORE 000005e8: PUSH1 0x04 000005ea: ADD 000005eb: PUSH2 0x05f6 000005ee: SWAP4 000005ef: SWAP3 000005f0: SWAP2 000005f1: SWAP1 000005f2: PUSH2 0x194e 000005f5: JUMP 000005f6: JUMPDEST 000005f7: PUSH1 0x00 000005f9: PUSH1 0x40 000005fb: MLOAD 000005fc: DUP1 000005fd: DUP4 000005fe: SUB 000005ff: DUP2 00000600: PUSH1 0x00 00000602: DUP8 00000603: DUP1 00000604: EXTCODESIZE 00000605: ISZERO 00000606: DUP1 00000607: ISZERO 00000608: PUSH2 0x0610 0000060b: JUMPI 0000060c: PUSH1 0x00 0000060e: DUP1 0000060f: REVERT 00000610: JUMPDEST 00000611: POP 00000612: GAS 00000613: CALL 00000614: ISZERO 00000615: DUP1 00000616: ISZERO 00000617: PUSH2 0x0624 0000061a: JUMPI 0000061b: RETURNDATASIZE 0000061c: PUSH1 0x00 0000061e: DUP1 0000061f: RETURNDATACOPY 00000620: RETURNDATASIZE 00000621: PUSH1 0x00 00000623: REVERT 00000624: JUMPDEST 00000625: POP 00000626: POP 00000627: POP 00000628: POP 00000629: POP 0000062a: POP 0000062b: POP 0000062c: POP 0000062d: POP 0000062e: JUMP 0000062f: JUMPDEST 00000630: PUSH1 0x00 00000632: DUP1 00000633: PUSH1 0x02 00000635: SWAP1 00000636: SLOAD 00000637: SWAP1 00000638: PUSH2 0x0100 0000063b: EXP 0000063c: SWAP1 0000063d: DIV 0000063e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000653: AND 00000654: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000669: AND 0000066a: CALLER 0000066b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000680: AND 00000681: EQ 00000682: PUSH2 0x06c0 00000685: JUMPI 00000686: PUSH1 0x40 00000688: MLOAD 00000689: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006aa: DUP2 000006ab: MSTORE 000006ac: PUSH1 0x04 000006ae: ADD 000006af: PUSH2 0x06b7 000006b2: SWAP1 000006b3: PUSH2 0x1821 000006b6: JUMP 000006b7: JUMPDEST 000006b8: PUSH1 0x40 000006ba: MLOAD 000006bb: DUP1 000006bc: SWAP2 000006bd: SUB 000006be: SWAP1 000006bf: REVERT 000006c0: JUMPDEST 000006c1: PUSH1 0x00 000006c3: DUP4 000006c4: SWAP1 000006c5: POP 000006c6: PUSH1 0x00 000006c8: DUP2 000006c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006de: AND 000006df: PUSH4 0x70a08231 000006e4: ADDRESS 000006e5: PUSH1 0x40 000006e7: MLOAD 000006e8: DUP3 000006e9: PUSH4 0xffffffff 000006ee: AND 000006ef: PUSH1 0xe0 000006f1: SHL 000006f2: DUP2 000006f3: MSTORE 000006f4: PUSH1 0x04 000006f6: ADD 000006f7: PUSH2 0x0700 000006fa: SWAP2 000006fb: SWAP1 000006fc: PUSH2 0x14f9 000006ff: JUMP 00000700: JUMPDEST 00000701: PUSH1 0x20 00000703: PUSH1 0x40 00000705: MLOAD 00000706: DUP1 00000707: DUP4 00000708: SUB 00000709: DUP2 0000070a: DUP7 0000070b: GAS 0000070c: STATICCALL 0000070d: ISZERO 0000070e: DUP1 0000070f: ISZERO 00000710: PUSH2 0x071d 00000713: JUMPI 00000714: RETURNDATASIZE 00000715: PUSH1 0x00 00000717: DUP1 00000718: RETURNDATACOPY 00000719: RETURNDATASIZE 0000071a: PUSH1 0x00 0000071c: REVERT 0000071d: JUMPDEST 0000071e: POP 0000071f: POP 00000720: POP 00000721: POP 00000722: PUSH1 0x40 00000724: MLOAD 00000725: RETURNDATASIZE 00000726: PUSH1 0x1f 00000728: NOT 00000729: PUSH1 0x1f 0000072b: DUP3 0000072c: ADD 0000072d: AND 0000072e: DUP3 0000072f: ADD 00000730: DUP1 00000731: PUSH1 0x40 00000733: MSTORE 00000734: POP 00000735: DUP2 00000736: ADD 00000737: SWAP1 00000738: PUSH2 0x0741 0000073b: SWAP2 0000073c: SWAP1 0000073d: PUSH2 0x1797 00000740: JUMP 00000741: JUMPDEST 00000742: SWAP1 00000743: POP 00000744: PUSH1 0x00 00000746: DUP2 00000747: GT 00000748: PUSH2 0x0786 0000074b: JUMPI 0000074c: PUSH1 0x40 0000074e: MLOAD 0000074f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000770: DUP2 00000771: MSTORE 00000772: PUSH1 0x04 00000774: ADD 00000775: PUSH2 0x077d 00000778: SWAP1 00000779: PUSH2 0x19d1 0000077c: JUMP 0000077d: JUMPDEST 0000077e: PUSH1 0x40 00000780: MLOAD 00000781: DUP1 00000782: SWAP2 00000783: SUB 00000784: SWAP1 00000785: REVERT 00000786: JUMPDEST 00000787: DUP4 00000788: DUP2 00000789: LT 0000078a: ISZERO 0000078b: PUSH2 0x07c9 0000078e: JUMPI 0000078f: PUSH1 0x40 00000791: MLOAD 00000792: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000007b3: DUP2 000007b4: MSTORE 000007b5: PUSH1 0x04 000007b7: ADD 000007b8: PUSH2 0x07c0 000007bb: SWAP1 000007bc: PUSH2 0x1a3d 000007bf: JUMP 000007c0: JUMPDEST 000007c1: PUSH1 0x40 000007c3: MLOAD 000007c4: DUP1 000007c5: SWAP2 000007c6: SUB 000007c7: SWAP1 000007c8: REVERT 000007c9: JUMPDEST 000007ca: PUSH2 0x07f4 000007cd: DUP7 000007ce: DUP6 000007cf: DUP5 000007d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007e5: AND 000007e6: PUSH2 0x0d6e 000007e9: SWAP1 000007ea: SWAP3 000007eb: SWAP2 000007ec: SWAP1 000007ed: PUSH4 0xffffffff 000007f2: AND 000007f3: JUMP 000007f4: JUMPDEST 000007f5: PUSH1 0x01 000007f7: SWAP3 000007f8: POP 000007f9: POP 000007fa: POP 000007fb: SWAP4 000007fc: SWAP3 000007fd: POP 000007fe: POP 000007ff: POP 00000800: JUMP 00000801: JUMPDEST 00000802: PUSH1 0x00 00000804: SELFBALANCE 00000805: SWAP1 00000806: POP 00000807: SWAP1 00000808: JUMP 00000809: JUMPDEST 0000080a: PUSH1 0x00 0000080c: DUP1 0000080d: DUP3 0000080e: SWAP1 0000080f: POP 00000810: DUP1 00000811: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000826: AND 00000827: PUSH4 0x70a08231 0000082c: ADDRESS 0000082d: PUSH1 0x40 0000082f: MLOAD 00000830: DUP3 00000831: PUSH4 0xffffffff 00000836: AND 00000837: PUSH1 0xe0 00000839: SHL 0000083a: DUP2 0000083b: MSTORE 0000083c: PUSH1 0x04 0000083e: ADD 0000083f: PUSH2 0x0848 00000842: SWAP2 00000843: SWAP1 00000844: PUSH2 0x14f9 00000847: JUMP 00000848: JUMPDEST 00000849: PUSH1 0x20 0000084b: PUSH1 0x40 0000084d: MLOAD 0000084e: DUP1 0000084f: DUP4 00000850: SUB 00000851: DUP2 00000852: DUP7 00000853: GAS 00000854: STATICCALL 00000855: ISZERO 00000856: DUP1 00000857: ISZERO 00000858: PUSH2 0x0865 0000085b: JUMPI 0000085c: RETURNDATASIZE 0000085d: PUSH1 0x00 0000085f: DUP1 00000860: RETURNDATACOPY 00000861: RETURNDATASIZE 00000862: PUSH1 0x00 00000864: REVERT 00000865: JUMPDEST 00000866: POP 00000867: POP 00000868: POP 00000869: POP 0000086a: PUSH1 0x40 0000086c: MLOAD 0000086d: RETURNDATASIZE 0000086e: PUSH1 0x1f 00000870: NOT 00000871: PUSH1 0x1f 00000873: DUP3 00000874: ADD 00000875: AND 00000876: DUP3 00000877: ADD 00000878: DUP1 00000879: PUSH1 0x40 0000087b: MSTORE 0000087c: POP 0000087d: DUP2 0000087e: ADD 0000087f: SWAP1 00000880: PUSH2 0x0889 00000883: SWAP2 00000884: SWAP1 00000885: PUSH2 0x1797 00000888: JUMP 00000889: JUMPDEST 0000088a: SWAP2 0000088b: POP 0000088c: POP 0000088d: SWAP2 0000088e: SWAP1 0000088f: POP 00000890: JUMP 00000891: JUMPDEST 00000892: PUSH1 0x00 00000894: PUSH1 0x02 00000896: SWAP1 00000897: SLOAD 00000898: SWAP1 00000899: PUSH2 0x0100 0000089c: EXP 0000089d: SWAP1 0000089e: DIV 0000089f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b4: AND 000008b5: DUP2 000008b6: JUMP 000008b7: JUMPDEST 000008b8: PUSH1 0x00 000008ba: PUSH4 0xbc197c81 000008bf: PUSH1 0xe0 000008c1: SHL 000008c2: SWAP1 000008c3: POP 000008c4: SWAP6 000008c5: SWAP5 000008c6: POP 000008c7: POP 000008c8: POP 000008c9: POP 000008ca: POP 000008cb: JUMP 000008cc: JUMPDEST 000008cd: PUSH1 0x00 000008cf: DUP1 000008d0: PUSH1 0x01 000008d2: SWAP1 000008d3: SLOAD 000008d4: SWAP1 000008d5: PUSH2 0x0100 000008d8: EXP 000008d9: SWAP1 000008da: DIV 000008db: PUSH1 0xff 000008dd: AND 000008de: ISZERO 000008df: SWAP1 000008e0: POP 000008e1: DUP1 000008e2: DUP1 000008e3: ISZERO 000008e4: PUSH2 0x08fd 000008e7: JUMPI 000008e8: POP 000008e9: PUSH1 0x01 000008eb: PUSH1 0x00 000008ed: DUP1 000008ee: SLOAD 000008ef: SWAP1 000008f0: PUSH2 0x0100 000008f3: EXP 000008f4: SWAP1 000008f5: DIV 000008f6: PUSH1 0xff 000008f8: AND 000008f9: PUSH1 0xff 000008fb: AND 000008fc: LT 000008fd: JUMPDEST 000008fe: DUP1 000008ff: PUSH2 0x092a 00000902: JUMPI 00000903: POP 00000904: PUSH2 0x090c 00000907: ADDRESS 00000908: PUSH2 0x0df4 0000090b: JUMP 0000090c: JUMPDEST 0000090d: ISZERO 0000090e: DUP1 0000090f: ISZERO 00000910: PUSH2 0x0929 00000913: JUMPI 00000914: POP 00000915: PUSH1 0x01 00000917: PUSH1 0x00 00000919: DUP1 0000091a: SLOAD 0000091b: SWAP1 0000091c: PUSH2 0x0100 0000091f: EXP 00000920: SWAP1 00000921: DIV 00000922: PUSH1 0xff 00000924: AND 00000925: PUSH1 0xff 00000927: AND 00000928: EQ 00000929: JUMPDEST 0000092a: JUMPDEST 0000092b: PUSH2 0x0969 0000092e: JUMPI 0000092f: PUSH1 0x40 00000931: MLOAD 00000932: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000953: DUP2 00000954: MSTORE 00000955: PUSH1 0x04 00000957: ADD 00000958: PUSH2 0x0960 0000095b: SWAP1 0000095c: PUSH2 0x1acf 0000095f: JUMP 00000960: JUMPDEST 00000961: PUSH1 0x40 00000963: MLOAD 00000964: DUP1 00000965: SWAP2 00000966: SUB 00000967: SWAP1 00000968: REVERT 00000969: JUMPDEST 0000096a: PUSH1 0x01 0000096c: PUSH1 0x00 0000096e: DUP1 0000096f: PUSH2 0x0100 00000972: EXP 00000973: DUP2 00000974: SLOAD 00000975: DUP2 00000976: PUSH1 0xff 00000978: MUL 00000979: NOT 0000097a: AND 0000097b: SWAP1 0000097c: DUP4 0000097d: PUSH1 0xff 0000097f: AND 00000980: MUL 00000981: OR 00000982: SWAP1 00000983: SSTORE 00000984: POP 00000985: DUP1 00000986: ISZERO 00000987: PUSH2 0x09a6 0000098a: JUMPI 0000098b: PUSH1 0x01 0000098d: PUSH1 0x00 0000098f: PUSH1 0x01 00000991: PUSH2 0x0100 00000994: EXP 00000995: DUP2 00000996: SLOAD 00000997: DUP2 00000998: PUSH1 0xff 0000099a: MUL 0000099b: NOT 0000099c: AND 0000099d: SWAP1 0000099e: DUP4 0000099f: ISZERO 000009a0: ISZERO 000009a1: MUL 000009a2: OR 000009a3: SWAP1 000009a4: SSTORE 000009a5: POP 000009a6: JUMPDEST 000009a7: PUSH1 0x00 000009a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009be: AND 000009bf: DUP3 000009c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009d5: AND 000009d6: SUB 000009d7: PUSH2 0x0a15 000009da: JUMPI 000009db: PUSH1 0x40 000009dd: MLOAD 000009de: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009ff: DUP2 00000a00: MSTORE 00000a01: PUSH1 0x04 00000a03: ADD 00000a04: PUSH2 0x0a0c 00000a07: SWAP1 00000a08: PUSH2 0x1b3b 00000a0b: JUMP 00000a0c: JUMPDEST 00000a0d: PUSH1 0x40 00000a0f: MLOAD 00000a10: DUP1 00000a11: SWAP2 00000a12: SUB 00000a13: SWAP1 00000a14: REVERT 00000a15: JUMPDEST 00000a16: DUP2 00000a17: PUSH1 0x00 00000a19: PUSH1 0x02 00000a1b: PUSH2 0x0100 00000a1e: EXP 00000a1f: DUP2 00000a20: SLOAD 00000a21: DUP2 00000a22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a37: MUL 00000a38: NOT 00000a39: AND 00000a3a: SWAP1 00000a3b: DUP4 00000a3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a51: AND 00000a52: MUL 00000a53: OR 00000a54: SWAP1 00000a55: SSTORE 00000a56: POP 00000a57: DUP1 00000a58: ISZERO 00000a59: PUSH2 0x0aaf 00000a5c: JUMPI 00000a5d: PUSH1 0x00 00000a5f: DUP1 00000a60: PUSH1 0x01 00000a62: PUSH2 0x0100 00000a65: EXP 00000a66: DUP2 00000a67: SLOAD 00000a68: DUP2 00000a69: PUSH1 0xff 00000a6b: MUL 00000a6c: NOT 00000a6d: AND 00000a6e: SWAP1 00000a6f: DUP4 00000a70: ISZERO 00000a71: ISZERO 00000a72: MUL 00000a73: OR 00000a74: SWAP1 00000a75: SSTORE 00000a76: POP 00000a77: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00000a98: PUSH1 0x01 00000a9a: PUSH1 0x40 00000a9c: MLOAD 00000a9d: PUSH2 0x0aa6 00000aa0: SWAP2 00000aa1: SWAP1 00000aa2: PUSH2 0x1ba3 00000aa5: JUMP 00000aa6: JUMPDEST 00000aa7: PUSH1 0x40 00000aa9: MLOAD 00000aaa: DUP1 00000aab: SWAP2 00000aac: SUB 00000aad: SWAP1 00000aae: LOG1 00000aaf: JUMPDEST 00000ab0: POP 00000ab1: POP 00000ab2: JUMP 00000ab3: JUMPDEST 00000ab4: PUSH1 0x00 00000ab6: PUSH4 0xf23a6e61 00000abb: PUSH1 0xe0 00000abd: SHL 00000abe: SWAP1 00000abf: POP 00000ac0: SWAP6 00000ac1: SWAP5 00000ac2: POP 00000ac3: POP 00000ac4: POP 00000ac5: POP 00000ac6: POP 00000ac7: JUMP 00000ac8: JUMPDEST 00000ac9: PUSH1 0x00 00000acb: PUSH1 0x02 00000acd: SWAP1 00000ace: SLOAD 00000acf: SWAP1 00000ad0: PUSH2 0x0100 00000ad3: EXP 00000ad4: SWAP1 00000ad5: DIV 00000ad6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aeb: AND 00000aec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b01: AND 00000b02: CALLER 00000b03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b18: AND 00000b19: EQ 00000b1a: PUSH2 0x0b58 00000b1d: JUMPI 00000b1e: PUSH1 0x40 00000b20: MLOAD 00000b21: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b42: DUP2 00000b43: MSTORE 00000b44: PUSH1 0x04 00000b46: ADD 00000b47: PUSH2 0x0b4f 00000b4a: SWAP1 00000b4b: PUSH2 0x1821 00000b4e: JUMP 00000b4f: JUMPDEST 00000b50: PUSH1 0x40 00000b52: MLOAD 00000b53: DUP1 00000b54: SWAP2 00000b55: SUB 00000b56: SWAP1 00000b57: REVERT 00000b58: JUMPDEST 00000b59: PUSH1 0x00 00000b5b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b70: AND 00000b71: DUP3 00000b72: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b87: AND 00000b88: SUB 00000b89: PUSH2 0x0bc7 00000b8c: JUMPI 00000b8d: PUSH1 0x40 00000b8f: MLOAD 00000b90: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000bb1: DUP2 00000bb2: MSTORE 00000bb3: PUSH1 0x04 00000bb5: ADD 00000bb6: PUSH2 0x0bbe 00000bb9: SWAP1 00000bba: PUSH2 0x1b3b 00000bbd: JUMP 00000bbe: JUMPDEST 00000bbf: PUSH1 0x40 00000bc1: MLOAD 00000bc2: DUP1 00000bc3: SWAP2 00000bc4: SUB 00000bc5: SWAP1 00000bc6: REVERT 00000bc7: JUMPDEST 00000bc8: PUSH1 0x00 00000bca: SELFBALANCE 00000bcb: SWAP1 00000bcc: POP 00000bcd: PUSH1 0x00 00000bcf: DUP2 00000bd0: GT 00000bd1: PUSH2 0x0c0f 00000bd4: JUMPI 00000bd5: PUSH1 0x40 00000bd7: MLOAD 00000bd8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000bf9: DUP2 00000bfa: MSTORE 00000bfb: PUSH1 0x04 00000bfd: ADD 00000bfe: PUSH2 0x0c06 00000c01: SWAP1 00000c02: PUSH2 0x19d1 00000c05: JUMP 00000c06: JUMPDEST 00000c07: PUSH1 0x40 00000c09: MLOAD 00000c0a: DUP1 00000c0b: SWAP2 00000c0c: SUB 00000c0d: SWAP1 00000c0e: REVERT 00000c0f: JUMPDEST 00000c10: DUP2 00000c11: DUP2 00000c12: LT 00000c13: ISZERO 00000c14: PUSH2 0x0c52 00000c17: JUMPI 00000c18: PUSH1 0x40 00000c1a: MLOAD 00000c1b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c3c: DUP2 00000c3d: MSTORE 00000c3e: PUSH1 0x04 00000c40: ADD 00000c41: PUSH2 0x0c49 00000c44: SWAP1 00000c45: PUSH2 0x1a3d 00000c48: JUMP 00000c49: JUMPDEST 00000c4a: PUSH1 0x40 00000c4c: MLOAD 00000c4d: DUP1 00000c4e: SWAP2 00000c4f: SUB 00000c50: SWAP1 00000c51: REVERT 00000c52: JUMPDEST 00000c53: PUSH1 0x00 00000c55: DUP4 00000c56: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c6b: AND 00000c6c: DUP4 00000c6d: PUSH1 0x40 00000c6f: MLOAD 00000c70: PUSH2 0x0c78 00000c73: SWAP1 00000c74: PUSH2 0x1bef 00000c77: JUMP 00000c78: JUMPDEST 00000c79: PUSH1 0x00 00000c7b: PUSH1 0x40 00000c7d: MLOAD 00000c7e: DUP1 00000c7f: DUP4 00000c80: SUB 00000c81: DUP2 00000c82: DUP6 00000c83: DUP8 00000c84: GAS 00000c85: CALL 00000c86: SWAP3 00000c87: POP 00000c88: POP 00000c89: POP 00000c8a: RETURNDATASIZE 00000c8b: DUP1 00000c8c: PUSH1 0x00 00000c8e: DUP2 00000c8f: EQ 00000c90: PUSH2 0x0cb5 00000c93: JUMPI 00000c94: PUSH1 0x40 00000c96: MLOAD 00000c97: SWAP2 00000c98: POP 00000c99: PUSH1 0x1f 00000c9b: NOT 00000c9c: PUSH1 0x3f 00000c9e: RETURNDATASIZE 00000c9f: ADD 00000ca0: AND 00000ca1: DUP3 00000ca2: ADD 00000ca3: PUSH1 0x40 00000ca5: MSTORE 00000ca6: RETURNDATASIZE 00000ca7: DUP3 00000ca8: MSTORE 00000ca9: RETURNDATASIZE 00000caa: PUSH1 0x00 00000cac: PUSH1 0x20 00000cae: DUP5 00000caf: ADD 00000cb0: RETURNDATACOPY 00000cb1: PUSH2 0x0cba 00000cb4: JUMP 00000cb5: JUMPDEST 00000cb6: PUSH1 0x60 00000cb8: SWAP2 00000cb9: POP 00000cba: JUMPDEST 00000cbb: POP 00000cbc: POP 00000cbd: SWAP1 00000cbe: POP 00000cbf: DUP1 00000cc0: PUSH2 0x0cfe 00000cc3: JUMPI 00000cc4: PUSH1 0x40 00000cc6: MLOAD 00000cc7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ce8: DUP2 00000ce9: MSTORE 00000cea: PUSH1 0x04 00000cec: ADD 00000ced: PUSH2 0x0cf5 00000cf0: SWAP1 00000cf1: PUSH2 0x1c50 00000cf4: JUMP 00000cf5: JUMPDEST 00000cf6: PUSH1 0x40 00000cf8: MLOAD 00000cf9: DUP1 00000cfa: SWAP2 00000cfb: SUB 00000cfc: SWAP1 00000cfd: REVERT 00000cfe: JUMPDEST 00000cff: POP 00000d00: POP 00000d01: POP 00000d02: POP 00000d03: JUMP 00000d04: JUMPDEST 00000d05: PUSH1 0x00 00000d07: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 00000d28: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000d45: NOT 00000d46: AND 00000d47: DUP3 00000d48: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000d65: NOT 00000d66: AND 00000d67: EQ 00000d68: SWAP1 00000d69: POP 00000d6a: SWAP2 00000d6b: SWAP1 00000d6c: POP 00000d6d: JUMP 00000d6e: JUMPDEST 00000d6f: PUSH2 0x0def 00000d72: DUP4 00000d73: PUSH4 0xa9059cbb 00000d78: PUSH1 0xe0 00000d7a: SHL 00000d7b: DUP5 00000d7c: DUP5 00000d7d: PUSH1 0x40 00000d7f: MLOAD 00000d80: PUSH1 0x24 00000d82: ADD 00000d83: PUSH2 0x0d8d 00000d86: SWAP3 00000d87: SWAP2 00000d88: SWAP1 00000d89: PUSH2 0x1c70 00000d8c: JUMP 00000d8d: JUMPDEST 00000d8e: PUSH1 0x40 00000d90: MLOAD 00000d91: PUSH1 0x20 00000d93: DUP2 00000d94: DUP4 00000d95: SUB 00000d96: SUB 00000d97: DUP2 00000d98: MSTORE 00000d99: SWAP1 00000d9a: PUSH1 0x40 00000d9c: MSTORE 00000d9d: SWAP1 00000d9e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000dbb: NOT 00000dbc: AND 00000dbd: PUSH1 0x20 00000dbf: DUP3 00000dc0: ADD 00000dc1: DUP1 00000dc2: MLOAD 00000dc3: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000de0: DUP4 00000de1: DUP2 00000de2: DUP4 00000de3: AND 00000de4: OR 00000de5: DUP4 00000de6: MSTORE 00000de7: POP 00000de8: POP 00000de9: POP 00000dea: POP 00000deb: PUSH2 0x0e17 00000dee: JUMP 00000def: JUMPDEST 00000df0: POP 00000df1: POP 00000df2: POP 00000df3: JUMP 00000df4: JUMPDEST 00000df5: PUSH1 0x00 00000df7: DUP1 00000df8: DUP3 00000df9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e0e: AND 00000e0f: EXTCODESIZE 00000e10: GT 00000e11: SWAP1 00000e12: POP 00000e13: SWAP2 00000e14: SWAP1 00000e15: POP 00000e16: JUMP 00000e17: JUMPDEST 00000e18: PUSH1 0x00 00000e1a: PUSH2 0x0e79 00000e1d: DUP3 00000e1e: PUSH1 0x40 00000e20: MLOAD 00000e21: DUP1 00000e22: PUSH1 0x40 00000e24: ADD 00000e25: PUSH1 0x40 00000e27: MSTORE 00000e28: DUP1 00000e29: PUSH1 0x20 00000e2b: DUP2 00000e2c: MSTORE 00000e2d: PUSH1 0x20 00000e2f: ADD 00000e30: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00000e51: DUP2 00000e52: MSTORE 00000e53: POP 00000e54: DUP6 00000e55: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e6a: AND 00000e6b: PUSH2 0x0edf 00000e6e: SWAP1 00000e6f: SWAP3 00000e70: SWAP2 00000e71: SWAP1 00000e72: PUSH4 0xffffffff 00000e77: AND 00000e78: JUMP 00000e79: JUMPDEST 00000e7a: SWAP1 00000e7b: POP 00000e7c: PUSH1 0x00 00000e7e: DUP2 00000e7f: MLOAD 00000e80: EQ 00000e81: DUP1 00000e82: PUSH2 0x0e9b 00000e85: JUMPI 00000e86: POP 00000e87: DUP1 00000e88: DUP1 00000e89: PUSH1 0x20 00000e8b: ADD 00000e8c: SWAP1 00000e8d: MLOAD 00000e8e: DUP2 00000e8f: ADD 00000e90: SWAP1 00000e91: PUSH2 0x0e9a 00000e94: SWAP2 00000e95: SWAP1 00000e96: PUSH2 0x1cc5 00000e99: JUMP 00000e9a: JUMPDEST 00000e9b: JUMPDEST 00000e9c: PUSH2 0x0eda 00000e9f: JUMPI 00000ea0: PUSH1 0x40 00000ea2: MLOAD 00000ea3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ec4: DUP2 00000ec5: MSTORE 00000ec6: PUSH1 0x04 00000ec8: ADD 00000ec9: PUSH2 0x0ed1 00000ecc: SWAP1 00000ecd: PUSH2 0x1d64 00000ed0: JUMP 00000ed1: JUMPDEST 00000ed2: PUSH1 0x40 00000ed4: MLOAD 00000ed5: DUP1 00000ed6: SWAP2 00000ed7: SUB 00000ed8: SWAP1 00000ed9: REVERT 00000eda: JUMPDEST 00000edb: POP 00000edc: POP 00000edd: POP 00000ede: JUMP 00000edf: JUMPDEST 00000ee0: PUSH1 0x60 00000ee2: PUSH2 0x0eee 00000ee5: DUP5 00000ee6: DUP5 00000ee7: PUSH1 0x00 00000ee9: DUP6 00000eea: PUSH2 0x0ef7 00000eed: JUMP 00000eee: JUMPDEST 00000eef: SWAP1 00000ef0: POP 00000ef1: SWAP4 00000ef2: SWAP3 00000ef3: POP 00000ef4: POP 00000ef5: POP 00000ef6: JUMP 00000ef7: JUMPDEST 00000ef8: PUSH1 0x60 00000efa: DUP3 00000efb: SELFBALANCE 00000efc: LT 00000efd: ISZERO 00000efe: PUSH2 0x0f3c 00000f01: JUMPI 00000f02: PUSH1 0x40 00000f04: MLOAD 00000f05: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f26: DUP2 00000f27: MSTORE 00000f28: PUSH1 0x04 00000f2a: ADD 00000f2b: PUSH2 0x0f33 00000f2e: SWAP1 00000f2f: PUSH2 0x1df6 00000f32: JUMP 00000f33: JUMPDEST 00000f34: PUSH1 0x40 00000f36: MLOAD 00000f37: DUP1 00000f38: SWAP2 00000f39: SUB 00000f3a: SWAP1 00000f3b: REVERT 00000f3c: JUMPDEST 00000f3d: PUSH1 0x00 00000f3f: DUP1 00000f40: DUP7 00000f41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f56: AND 00000f57: DUP6 00000f58: DUP8 00000f59: PUSH1 0x40 00000f5b: MLOAD 00000f5c: PUSH2 0x0f65 00000f5f: SWAP2 00000f60: SWAP1 00000f61: PUSH2 0x1e7c 00000f64: JUMP 00000f65: JUMPDEST 00000f66: PUSH1 0x00 00000f68: PUSH1 0x40 00000f6a: MLOAD 00000f6b: DUP1 00000f6c: DUP4 00000f6d: SUB 00000f6e: DUP2 00000f6f: DUP6 00000f70: DUP8 00000f71: GAS 00000f72: CALL 00000f73: SWAP3 00000f74: POP 00000f75: POP 00000f76: POP 00000f77: RETURNDATASIZE 00000f78: DUP1 00000f79: PUSH1 0x00 00000f7b: DUP2 00000f7c: EQ 00000f7d: PUSH2 0x0fa2 00000f80: JUMPI 00000f81: PUSH1 0x40 00000f83: MLOAD 00000f84: SWAP2 00000f85: POP 00000f86: PUSH1 0x1f 00000f88: NOT 00000f89: PUSH1 0x3f 00000f8b: RETURNDATASIZE 00000f8c: ADD 00000f8d: AND 00000f8e: DUP3 00000f8f: ADD 00000f90: PUSH1 0x40 00000f92: MSTORE 00000f93: RETURNDATASIZE 00000f94: DUP3 00000f95: MSTORE 00000f96: RETURNDATASIZE 00000f97: PUSH1 0x00 00000f99: PUSH1 0x20 00000f9b: DUP5 00000f9c: ADD 00000f9d: RETURNDATACOPY 00000f9e: PUSH2 0x0fa7 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: PUSH1 0x60 00000fa5: SWAP2 00000fa6: POP 00000fa7: JUMPDEST 00000fa8: POP 00000fa9: SWAP2 00000faa: POP 00000fab: SWAP2 00000fac: POP 00000fad: PUSH2 0x0fb8 00000fb0: DUP8 00000fb1: DUP4 00000fb2: DUP4 00000fb3: DUP8 00000fb4: PUSH2 0x0fc4 00000fb7: JUMP 00000fb8: JUMPDEST 00000fb9: SWAP3 00000fba: POP 00000fbb: POP 00000fbc: POP 00000fbd: SWAP5 00000fbe: SWAP4 00000fbf: POP 00000fc0: POP 00000fc1: POP 00000fc2: POP 00000fc3: JUMP 00000fc4: JUMPDEST 00000fc5: PUSH1 0x60 00000fc7: DUP4 00000fc8: ISZERO 00000fc9: PUSH2 0x1026 00000fcc: JUMPI 00000fcd: PUSH1 0x00 00000fcf: DUP4 00000fd0: MLOAD 00000fd1: SUB 00000fd2: PUSH2 0x101e 00000fd5: JUMPI 00000fd6: PUSH2 0x0fde 00000fd9: DUP6 00000fda: PUSH2 0x1039 00000fdd: JUMP 00000fde: JUMPDEST 00000fdf: PUSH2 0x101d 00000fe2: JUMPI 00000fe3: PUSH1 0x40 00000fe5: MLOAD 00000fe6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001007: DUP2 00001008: MSTORE 00001009: PUSH1 0x04 0000100b: ADD 0000100c: PUSH2 0x1014 0000100f: SWAP1 00001010: PUSH2 0x1edf 00001013: JUMP 00001014: JUMPDEST 00001015: PUSH1 0x40 00001017: MLOAD 00001018: DUP1 00001019: SWAP2 0000101a: SUB 0000101b: SWAP1 0000101c: REVERT 0000101d: JUMPDEST 0000101e: JUMPDEST 0000101f: DUP3 00001020: SWAP1 00001021: POP 00001022: PUSH2 0x1031 00001025: JUMP 00001026: JUMPDEST 00001027: PUSH2 0x1030 0000102a: DUP4 0000102b: DUP4 0000102c: PUSH2 0x105c 0000102f: JUMP 00001030: JUMPDEST 00001031: JUMPDEST 00001032: SWAP5 00001033: SWAP4 00001034: POP 00001035: POP 00001036: POP 00001037: POP 00001038: JUMP 00001039: JUMPDEST 0000103a: PUSH1 0x00 0000103c: DUP1 0000103d: DUP3 0000103e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001053: AND 00001054: EXTCODESIZE 00001055: GT 00001056: SWAP1 00001057: POP 00001058: SWAP2 00001059: SWAP1 0000105a: POP 0000105b: JUMP 0000105c: JUMPDEST 0000105d: PUSH1 0x00 0000105f: DUP3 00001060: MLOAD 00001061: GT 00001062: ISZERO 00001063: PUSH2 0x106f 00001066: JUMPI 00001067: DUP2 00001068: MLOAD 00001069: DUP1 0000106a: DUP4 0000106b: PUSH1 0x20 0000106d: ADD 0000106e: REVERT 0000106f: JUMPDEST 00001070: DUP1 00001071: PUSH1 0x40 00001073: MLOAD 00001074: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001095: DUP2 00001096: MSTORE 00001097: PUSH1 0x04 00001099: ADD 0000109a: PUSH2 0x10a3 0000109d: SWAP2 0000109e: SWAP1 0000109f: PUSH2 0x1f43 000010a2: JUMP 000010a3: JUMPDEST 000010a4: PUSH1 0x40 000010a6: MLOAD 000010a7: DUP1 000010a8: SWAP2 000010a9: SUB 000010aa: SWAP1 000010ab: REVERT 000010ac: JUMPDEST 000010ad: PUSH1 0x00 000010af: PUSH1 0x40 000010b1: MLOAD 000010b2: SWAP1 000010b3: POP 000010b4: SWAP1 000010b5: JUMP 000010b6: JUMPDEST 000010b7: PUSH1 0x00 000010b9: DUP1 000010ba: REVERT 000010bb: JUMPDEST 000010bc: PUSH1 0x00 000010be: DUP1 000010bf: REVERT 000010c0: JUMPDEST 000010c1: PUSH1 0x00 000010c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010d8: DUP3 000010d9: AND 000010da: SWAP1 000010db: POP 000010dc: SWAP2 000010dd: SWAP1 000010de: POP 000010df: JUMP 000010e0: JUMPDEST 000010e1: PUSH1 0x00 000010e3: PUSH2 0x10eb 000010e6: DUP3 000010e7: PUSH2 0x10c0 000010ea: JUMP 000010eb: JUMPDEST 000010ec: SWAP1 000010ed: POP 000010ee: SWAP2 000010ef: SWAP1 000010f0: POP 000010f1: JUMP 000010f2: JUMPDEST 000010f3: PUSH2 0x10fb 000010f6: DUP2 000010f7: PUSH2 0x10e0 000010fa: JUMP 000010fb: JUMPDEST 000010fc: DUP2 000010fd: EQ 000010fe: PUSH2 0x1106 00001101: JUMPI 00001102: PUSH1 0x00 00001104: DUP1 00001105: REVERT 00001106: JUMPDEST 00001107: POP 00001108: JUMP 00001109: JUMPDEST 0000110a: PUSH1 0x00 0000110c: DUP2 0000110d: CALLDATALOAD 0000110e: SWAP1 0000110f: POP 00001110: PUSH2 0x1118 00001113: DUP2 00001114: PUSH2 0x10f2 00001117: JUMP 00001118: JUMPDEST 00001119: SWAP3 0000111a: SWAP2 0000111b: POP 0000111c: POP 0000111d: JUMP 0000111e: JUMPDEST 0000111f: PUSH1 0x00 00001121: PUSH1 0x20 00001123: DUP3 00001124: DUP5 00001125: SUB 00001126: SLT 00001127: ISZERO 00001128: PUSH2 0x1134 0000112b: JUMPI 0000112c: PUSH2 0x1133 0000112f: PUSH2 0x10b6 00001132: JUMP 00001133: JUMPDEST 00001134: JUMPDEST 00001135: PUSH1 0x00 00001137: PUSH2 0x1142 0000113a: DUP5 0000113b: DUP3 0000113c: DUP6 0000113d: ADD 0000113e: PUSH2 0x1109 00001141: JUMP 00001142: JUMPDEST 00001143: SWAP2 00001144: POP 00001145: POP 00001146: SWAP3 00001147: SWAP2 00001148: POP 00001149: POP 0000114a: JUMP 0000114b: JUMPDEST 0000114c: PUSH1 0x00 0000114e: DUP2 0000114f: SWAP1 00001150: POP 00001151: SWAP2 00001152: SWAP1 00001153: POP 00001154: JUMP 00001155: JUMPDEST 00001156: PUSH2 0x115e 00001159: DUP2 0000115a: PUSH2 0x114b 0000115d: JUMP 0000115e: JUMPDEST 0000115f: DUP3 00001160: MSTORE 00001161: POP 00001162: POP 00001163: JUMP 00001164: JUMPDEST 00001165: PUSH1 0x00 00001167: PUSH1 0x20 00001169: DUP3 0000116a: ADD 0000116b: SWAP1 0000116c: POP 0000116d: PUSH2 0x1179 00001170: PUSH1 0x00 00001172: DUP4 00001173: ADD 00001174: DUP5 00001175: PUSH2 0x1155 00001178: JUMP 00001179: JUMPDEST 0000117a: SWAP3 0000117b: SWAP2 0000117c: POP 0000117d: POP 0000117e: JUMP 0000117f: JUMPDEST 00001180: PUSH1 0x00 00001182: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000011a3: DUP3 000011a4: AND 000011a5: SWAP1 000011a6: POP 000011a7: SWAP2 000011a8: SWAP1 000011a9: POP 000011aa: JUMP 000011ab: JUMPDEST 000011ac: PUSH2 0x11b4 000011af: DUP2 000011b0: PUSH2 0x117f 000011b3: JUMP 000011b4: JUMPDEST 000011b5: DUP2 000011b6: EQ 000011b7: PUSH2 0x11bf 000011ba: JUMPI 000011bb: PUSH1 0x00 000011bd: DUP1 000011be: REVERT 000011bf: JUMPDEST 000011c0: POP 000011c1: JUMP 000011c2: JUMPDEST 000011c3: PUSH1 0x00 000011c5: DUP2 000011c6: CALLDATALOAD 000011c7: SWAP1 000011c8: POP 000011c9: PUSH2 0x11d1 000011cc: DUP2 000011cd: PUSH2 0x11ab 000011d0: JUMP 000011d1: JUMPDEST 000011d2: SWAP3 000011d3: SWAP2 000011d4: POP 000011d5: POP 000011d6: JUMP 000011d7: JUMPDEST 000011d8: PUSH1 0x00 000011da: PUSH1 0x20 000011dc: DUP3 000011dd: DUP5 000011de: SUB 000011df: SLT 000011e0: ISZERO 000011e1: PUSH2 0x11ed 000011e4: JUMPI 000011e5: PUSH2 0x11ec 000011e8: PUSH2 0x10b6 000011eb: JUMP 000011ec: JUMPDEST 000011ed: JUMPDEST 000011ee: PUSH1 0x00 000011f0: PUSH2 0x11fb 000011f3: DUP5 000011f4: DUP3 000011f5: DUP6 000011f6: ADD 000011f7: PUSH2 0x11c2 000011fa: JUMP 000011fb: JUMPDEST 000011fc: SWAP2 000011fd: POP 000011fe: POP 000011ff: SWAP3 00001200: SWAP2 00001201: POP 00001202: POP 00001203: JUMP 00001204: JUMPDEST 00001205: PUSH1 0x00 00001207: DUP2 00001208: ISZERO 00001209: ISZERO 0000120a: SWAP1 0000120b: POP 0000120c: SWAP2 0000120d: SWAP1 0000120e: POP 0000120f: JUMP 00001210: JUMPDEST 00001211: PUSH2 0x1219 00001214: DUP2 00001215: PUSH2 0x1204 00001218: JUMP 00001219: JUMPDEST 0000121a: DUP3 0000121b: MSTORE 0000121c: POP 0000121d: POP 0000121e: JUMP 0000121f: JUMPDEST 00001220: PUSH1 0x00 00001222: PUSH1 0x20 00001224: DUP3 00001225: ADD 00001226: SWAP1 00001227: POP 00001228: PUSH2 0x1234 0000122b: PUSH1 0x00 0000122d: DUP4 0000122e: ADD 0000122f: DUP5 00001230: PUSH2 0x1210 00001233: JUMP 00001234: JUMPDEST 00001235: SWAP3 00001236: SWAP2 00001237: POP 00001238: POP 00001239: JUMP 0000123a: JUMPDEST 0000123b: PUSH2 0x1243 0000123e: DUP2 0000123f: PUSH2 0x114b 00001242: JUMP 00001243: JUMPDEST 00001244: DUP2 00001245: EQ 00001246: PUSH2 0x124e 00001249: JUMPI 0000124a: PUSH1 0x00 0000124c: DUP1 0000124d: REVERT 0000124e: JUMPDEST 0000124f: POP 00001250: JUMP 00001251: JUMPDEST 00001252: PUSH1 0x00 00001254: DUP2 00001255: CALLDATALOAD 00001256: SWAP1 00001257: POP 00001258: PUSH2 0x1260 0000125b: DUP2 0000125c: PUSH2 0x123a 0000125f: JUMP 00001260: JUMPDEST 00001261: SWAP3 00001262: SWAP2 00001263: POP 00001264: POP 00001265: JUMP 00001266: JUMPDEST 00001267: PUSH1 0x00 00001269: DUP1 0000126a: REVERT 0000126b: JUMPDEST 0000126c: PUSH1 0x00 0000126e: DUP1 0000126f: REVERT 00001270: JUMPDEST 00001271: PUSH1 0x00 00001273: PUSH1 0x1f 00001275: NOT 00001276: PUSH1 0x1f 00001278: DUP4 00001279: ADD 0000127a: AND 0000127b: SWAP1 0000127c: POP 0000127d: SWAP2 0000127e: SWAP1 0000127f: POP 00001280: JUMP 00001281: JUMPDEST 00001282: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000012a3: PUSH1 0x00 000012a5: MSTORE 000012a6: PUSH1 0x41 000012a8: PUSH1 0x04 000012aa: MSTORE 000012ab: PUSH1 0x24 000012ad: PUSH1 0x00 000012af: REVERT 000012b0: JUMPDEST 000012b1: PUSH2 0x12b9 000012b4: DUP3 000012b5: PUSH2 0x1270 000012b8: JUMP 000012b9: JUMPDEST 000012ba: DUP2 000012bb: ADD 000012bc: DUP2 000012bd: DUP2 000012be: LT 000012bf: PUSH8 0xffffffffffffffff 000012c8: DUP3 000012c9: GT 000012ca: OR 000012cb: ISZERO 000012cc: PUSH2 0x12d8 000012cf: JUMPI 000012d0: PUSH2 0x12d7 000012d3: PUSH2 0x1281 000012d6: JUMP 000012d7: JUMPDEST 000012d8: JUMPDEST 000012d9: DUP1 000012da: PUSH1 0x40 000012dc: MSTORE 000012dd: POP 000012de: POP 000012df: POP 000012e0: JUMP 000012e1: JUMPDEST 000012e2: PUSH1 0x00 000012e4: PUSH2 0x12eb 000012e7: PUSH2 0x10ac 000012ea: JUMP 000012eb: JUMPDEST 000012ec: SWAP1 000012ed: POP 000012ee: PUSH2 0x12f7 000012f1: DUP3 000012f2: DUP3 000012f3: PUSH2 0x12b0 000012f6: JUMP 000012f7: JUMPDEST 000012f8: SWAP2 000012f9: SWAP1 000012fa: POP 000012fb: JUMP 000012fc: JUMPDEST 000012fd: PUSH1 0x00 000012ff: PUSH8 0xffffffffffffffff 00001308: DUP3 00001309: GT 0000130a: ISZERO 0000130b: PUSH2 0x1317 0000130e: JUMPI 0000130f: PUSH2 0x1316 00001312: PUSH2 0x1281 00001315: JUMP 00001316: JUMPDEST 00001317: JUMPDEST 00001318: PUSH2 0x1320 0000131b: DUP3 0000131c: PUSH2 0x1270 0000131f: JUMP 00001320: JUMPDEST 00001321: SWAP1 00001322: POP 00001323: PUSH1 0x20 00001325: DUP2 00001326: ADD 00001327: SWAP1 00001328: POP 00001329: SWAP2 0000132a: SWAP1 0000132b: POP 0000132c: JUMP 0000132d: JUMPDEST 0000132e: DUP3 0000132f: DUP2 00001330: DUP4 00001331: CALLDATACOPY 00001332: PUSH1 0x00 00001334: DUP4 00001335: DUP4 00001336: ADD 00001337: MSTORE 00001338: POP 00001339: POP 0000133a: POP 0000133b: JUMP 0000133c: JUMPDEST 0000133d: PUSH1 0x00 0000133f: PUSH2 0x134f 00001342: PUSH2 0x134a 00001345: DUP5 00001346: PUSH2 0x12fc 00001349: JUMP 0000134a: JUMPDEST 0000134b: PUSH2 0x12e1 0000134e: JUMP 0000134f: JUMPDEST 00001350: SWAP1 00001351: POP 00001352: DUP3 00001353: DUP2 00001354: MSTORE 00001355: PUSH1 0x20 00001357: DUP2 00001358: ADD 00001359: DUP5 0000135a: DUP5 0000135b: DUP5 0000135c: ADD 0000135d: GT 0000135e: ISZERO 0000135f: PUSH2 0x136b 00001362: JUMPI 00001363: PUSH2 0x136a 00001366: PUSH2 0x126b 00001369: JUMP 0000136a: JUMPDEST 0000136b: JUMPDEST 0000136c: PUSH2 0x1376 0000136f: DUP5 00001370: DUP3 00001371: DUP6 00001372: PUSH2 0x132d 00001375: JUMP 00001376: JUMPDEST 00001377: POP 00001378: SWAP4 00001379: SWAP3 0000137a: POP 0000137b: POP 0000137c: POP 0000137d: JUMP 0000137e: JUMPDEST 0000137f: PUSH1 0x00 00001381: DUP3 00001382: PUSH1 0x1f 00001384: DUP4 00001385: ADD 00001386: SLT 00001387: PUSH2 0x1393 0000138a: JUMPI 0000138b: PUSH2 0x1392 0000138e: PUSH2 0x1266 00001391: JUMP 00001392: JUMPDEST 00001393: JUMPDEST 00001394: DUP2 00001395: CALLDATALOAD 00001396: PUSH2 0x13a3 00001399: DUP5 0000139a: DUP3 0000139b: PUSH1 0x20 0000139d: DUP7 0000139e: ADD 0000139f: PUSH2 0x133c 000013a2: JUMP 000013a3: JUMPDEST 000013a4: SWAP2 000013a5: POP 000013a6: POP 000013a7: SWAP3 000013a8: SWAP2 000013a9: POP 000013aa: POP 000013ab: JUMP 000013ac: JUMPDEST 000013ad: PUSH1 0x00 000013af: DUP1 000013b0: PUSH1 0x00 000013b2: DUP1 000013b3: PUSH1 0x80 000013b5: DUP6 000013b6: DUP8 000013b7: SUB 000013b8: SLT 000013b9: ISZERO 000013ba: PUSH2 0x13c6 000013bd: JUMPI 000013be: PUSH2 0x13c5 000013c1: PUSH2 0x10b6 000013c4: JUMP 000013c5: JUMPDEST 000013c6: JUMPDEST 000013c7: PUSH1 0x00 000013c9: PUSH2 0x13d4 000013cc: DUP8 000013cd: DUP3 000013ce: DUP9 000013cf: ADD 000013d0: PUSH2 0x1109 000013d3: JUMP 000013d4: JUMPDEST 000013d5: SWAP5 000013d6: POP 000013d7: POP 000013d8: PUSH1 0x20 000013da: PUSH2 0x13e5 000013dd: DUP8 000013de: DUP3 000013df: DUP9 000013e0: ADD 000013e1: PUSH2 0x1109 000013e4: JUMP 000013e5: JUMPDEST 000013e6: SWAP4 000013e7: POP 000013e8: POP 000013e9: PUSH1 0x40 000013eb: PUSH2 0x13f6 000013ee: DUP8 000013ef: DUP3 000013f0: DUP9 000013f1: ADD 000013f2: PUSH2 0x1251 000013f5: JUMP 000013f6: JUMPDEST 000013f7: SWAP3 000013f8: POP 000013f9: POP 000013fa: PUSH1 0x60 000013fc: DUP6 000013fd: ADD 000013fe: CALLDATALOAD 000013ff: PUSH8 0xffffffffffffffff 00001408: DUP2 00001409: GT 0000140a: ISZERO 0000140b: PUSH2 0x1417 0000140e: JUMPI 0000140f: PUSH2 0x1416 00001412: PUSH2 0x10bb 00001415: JUMP 00001416: JUMPDEST 00001417: JUMPDEST 00001418: PUSH2 0x1423 0000141b: DUP8 0000141c: DUP3 0000141d: DUP9 0000141e: ADD 0000141f: PUSH2 0x137e 00001422: JUMP 00001423: JUMPDEST 00001424: SWAP2 00001425: POP 00001426: POP 00001427: SWAP3 00001428: SWAP6 00001429: SWAP2 0000142a: SWAP5 0000142b: POP 0000142c: SWAP3 0000142d: POP 0000142e: JUMP 0000142f: JUMPDEST 00001430: PUSH2 0x1438 00001433: DUP2 00001434: PUSH2 0x117f 00001437: JUMP 00001438: JUMPDEST 00001439: DUP3 0000143a: MSTORE 0000143b: POP 0000143c: POP 0000143d: JUMP 0000143e: JUMPDEST 0000143f: PUSH1 0x00 00001441: PUSH1 0x20 00001443: DUP3 00001444: ADD 00001445: SWAP1 00001446: POP 00001447: PUSH2 0x1453 0000144a: PUSH1 0x00 0000144c: DUP4 0000144d: ADD 0000144e: DUP5 0000144f: PUSH2 0x142f 00001452: JUMP 00001453: JUMPDEST 00001454: SWAP3 00001455: SWAP2 00001456: POP 00001457: POP 00001458: JUMP 00001459: JUMPDEST 0000145a: PUSH1 0x00 0000145c: PUSH2 0x1464 0000145f: DUP3 00001460: PUSH2 0x10c0 00001463: JUMP 00001464: JUMPDEST 00001465: SWAP1 00001466: POP 00001467: SWAP2 00001468: SWAP1 00001469: POP 0000146a: JUMP 0000146b: JUMPDEST 0000146c: PUSH2 0x1474 0000146f: DUP2 00001470: PUSH2 0x1459 00001473: JUMP 00001474: JUMPDEST 00001475: DUP2 00001476: EQ 00001477: PUSH2 0x147f 0000147a: JUMPI 0000147b: PUSH1 0x00 0000147d: DUP1 0000147e: REVERT 0000147f: JUMPDEST 00001480: POP 00001481: JUMP 00001482: JUMPDEST 00001483: PUSH1 0x00 00001485: DUP2 00001486: CALLDATALOAD 00001487: SWAP1 00001488: POP 00001489: PUSH2 0x1491 0000148c: DUP2 0000148d: PUSH2 0x146b 00001490: JUMP 00001491: JUMPDEST 00001492: SWAP3 00001493: SWAP2 00001494: POP 00001495: POP 00001496: JUMP 00001497: JUMPDEST 00001498: PUSH1 0x00 0000149a: DUP1 0000149b: PUSH1 0x00 0000149d: PUSH1 0x60 0000149f: DUP5 000014a0: DUP7 000014a1: SUB 000014a2: SLT 000014a3: ISZERO 000014a4: PUSH2 0x14b0 000014a7: JUMPI 000014a8: PUSH2 0x14af 000014ab: PUSH2 0x10b6 000014ae: JUMP 000014af: JUMPDEST 000014b0: JUMPDEST 000014b1: PUSH1 0x00 000014b3: PUSH2 0x14be 000014b6: DUP7 000014b7: DUP3 000014b8: DUP8 000014b9: ADD 000014ba: PUSH2 0x1482 000014bd: JUMP 000014be: JUMPDEST 000014bf: SWAP4 000014c0: POP 000014c1: POP 000014c2: PUSH1 0x20 000014c4: PUSH2 0x14cf 000014c7: DUP7 000014c8: DUP3 000014c9: DUP8 000014ca: ADD 000014cb: PUSH2 0x1109 000014ce: JUMP 000014cf: JUMPDEST 000014d0: SWAP3 000014d1: POP 000014d2: POP 000014d3: PUSH1 0x40 000014d5: PUSH2 0x14e0 000014d8: DUP7 000014d9: DUP3 000014da: DUP8 000014db: ADD 000014dc: PUSH2 0x1251 000014df: JUMP 000014e0: JUMPDEST 000014e1: SWAP2 000014e2: POP 000014e3: POP 000014e4: SWAP3 000014e5: POP 000014e6: SWAP3 000014e7: POP 000014e8: SWAP3 000014e9: JUMP 000014ea: JUMPDEST 000014eb: PUSH2 0x14f3 000014ee: DUP2 000014ef: PUSH2 0x10e0 000014f2: JUMP 000014f3: JUMPDEST 000014f4: DUP3 000014f5: MSTORE 000014f6: POP 000014f7: POP 000014f8: JUMP 000014f9: JUMPDEST 000014fa: PUSH1 0x00 000014fc: PUSH1 0x20 000014fe: DUP3 000014ff: ADD 00001500: SWAP1 00001501: POP 00001502: PUSH2 0x150e 00001505: PUSH1 0x00 00001507: DUP4 00001508: ADD 00001509: DUP5 0000150a: PUSH2 0x14ea 0000150d: JUMP 0000150e: JUMPDEST 0000150f: SWAP3 00001510: SWAP2 00001511: POP 00001512: POP 00001513: JUMP 00001514: JUMPDEST 00001515: PUSH1 0x00 00001517: PUSH8 0xffffffffffffffff 00001520: DUP3 00001521: GT 00001522: ISZERO 00001523: PUSH2 0x152f 00001526: JUMPI 00001527: PUSH2 0x152e 0000152a: PUSH2 0x1281 0000152d: JUMP 0000152e: JUMPDEST 0000152f: JUMPDEST 00001530: PUSH1 0x20 00001532: DUP3 00001533: MUL 00001534: SWAP1 00001535: POP 00001536: PUSH1 0x20 00001538: DUP2 00001539: ADD 0000153a: SWAP1 0000153b: POP 0000153c: SWAP2 0000153d: SWAP1 0000153e: POP 0000153f: JUMP 00001540: JUMPDEST 00001541: PUSH1 0x00 00001543: DUP1 00001544: REVERT 00001545: JUMPDEST 00001546: PUSH1 0x00 00001548: PUSH2 0x1558 0000154b: PUSH2 0x1553 0000154e: DUP5 0000154f: PUSH2 0x1514 00001552: JUMP 00001553: JUMPDEST 00001554: PUSH2 0x12e1 00001557: JUMP 00001558: JUMPDEST 00001559: SWAP1 0000155a: POP 0000155b: DUP1 0000155c: DUP4 0000155d: DUP3 0000155e: MSTORE 0000155f: PUSH1 0x20 00001561: DUP3 00001562: ADD 00001563: SWAP1 00001564: POP 00001565: PUSH1 0x20 00001567: DUP5 00001568: MUL 00001569: DUP4 0000156a: ADD 0000156b: DUP6 0000156c: DUP2 0000156d: GT 0000156e: ISZERO 0000156f: PUSH2 0x157b 00001572: JUMPI 00001573: PUSH2 0x157a 00001576: PUSH2 0x1540 00001579: JUMP 0000157a: JUMPDEST 0000157b: JUMPDEST 0000157c: DUP4 0000157d: JUMPDEST 0000157e: DUP2 0000157f: DUP2 00001580: LT 00001581: ISZERO 00001582: PUSH2 0x15a4 00001585: JUMPI 00001586: DUP1 00001587: PUSH2 0x1590 0000158a: DUP9 0000158b: DUP3 0000158c: PUSH2 0x1251 0000158f: JUMP 00001590: JUMPDEST 00001591: DUP5 00001592: MSTORE 00001593: PUSH1 0x20 00001595: DUP5 00001596: ADD 00001597: SWAP4 00001598: POP 00001599: POP 0000159a: PUSH1 0x20 0000159c: DUP2 0000159d: ADD 0000159e: SWAP1 0000159f: POP 000015a0: PUSH2 0x157d 000015a3: JUMP 000015a4: JUMPDEST 000015a5: POP 000015a6: POP 000015a7: POP 000015a8: SWAP4 000015a9: SWAP3 000015aa: POP 000015ab: POP 000015ac: POP 000015ad: JUMP 000015ae: JUMPDEST 000015af: PUSH1 0x00 000015b1: DUP3 000015b2: PUSH1 0x1f 000015b4: DUP4 000015b5: ADD 000015b6: SLT 000015b7: PUSH2 0x15c3 000015ba: JUMPI 000015bb: PUSH2 0x15c2 000015be: PUSH2 0x1266 000015c1: JUMP 000015c2: JUMPDEST 000015c3: JUMPDEST 000015c4: DUP2 000015c5: CALLDATALOAD 000015c6: PUSH2 0x15d3 000015c9: DUP5 000015ca: DUP3 000015cb: PUSH1 0x20 000015cd: DUP7 000015ce: ADD 000015cf: PUSH2 0x1545 000015d2: JUMP 000015d3: JUMPDEST 000015d4: SWAP2 000015d5: POP 000015d6: POP 000015d7: SWAP3 000015d8: SWAP2 000015d9: POP 000015da: POP 000015db: JUMP 000015dc: JUMPDEST 000015dd: PUSH1 0x00 000015df: DUP1 000015e0: PUSH1 0x00 000015e2: DUP1 000015e3: PUSH1 0x00 000015e5: PUSH1 0xa0 000015e7: DUP7 000015e8: DUP9 000015e9: SUB 000015ea: SLT 000015eb: ISZERO 000015ec: PUSH2 0x15f8 000015ef: JUMPI 000015f0: PUSH2 0x15f7 000015f3: PUSH2 0x10b6 000015f6: JUMP 000015f7: JUMPDEST 000015f8: JUMPDEST 000015f9: PUSH1 0x00 000015fb: PUSH2 0x1606 000015fe: DUP9 000015ff: DUP3 00001600: DUP10 00001601: ADD 00001602: PUSH2 0x1109 00001605: JUMP 00001606: JUMPDEST 00001607: SWAP6 00001608: POP 00001609: POP 0000160a: PUSH1 0x20 0000160c: PUSH2 0x1617 0000160f: DUP9 00001610: DUP3 00001611: DUP10 00001612: ADD 00001613: PUSH2 0x1109 00001616: JUMP 00001617: JUMPDEST 00001618: SWAP5 00001619: POP 0000161a: POP 0000161b: PUSH1 0x40 0000161d: DUP7 0000161e: ADD 0000161f: CALLDATALOAD 00001620: PUSH8 0xffffffffffffffff 00001629: DUP2 0000162a: GT 0000162b: ISZERO 0000162c: PUSH2 0x1638 0000162f: JUMPI 00001630: PUSH2 0x1637 00001633: PUSH2 0x10bb 00001636: JUMP 00001637: JUMPDEST 00001638: JUMPDEST 00001639: PUSH2 0x1644 0000163c: DUP9 0000163d: DUP3 0000163e: DUP10 0000163f: ADD 00001640: PUSH2 0x15ae 00001643: JUMP 00001644: JUMPDEST 00001645: SWAP4 00001646: POP 00001647: POP 00001648: PUSH1 0x60 0000164a: DUP7 0000164b: ADD 0000164c: CALLDATALOAD 0000164d: PUSH8 0xffffffffffffffff 00001656: DUP2 00001657: GT 00001658: ISZERO 00001659: PUSH2 0x1665 0000165c: JUMPI 0000165d: PUSH2 0x1664 00001660: PUSH2 0x10bb 00001663: JUMP 00001664: JUMPDEST 00001665: JUMPDEST 00001666: PUSH2 0x1671 00001669: DUP9 0000166a: DUP3 0000166b: DUP10 0000166c: ADD 0000166d: PUSH2 0x15ae 00001670: JUMP 00001671: JUMPDEST 00001672: SWAP3 00001673: POP 00001674: POP 00001675: PUSH1 0x80 00001677: DUP7 00001678: ADD 00001679: CALLDATALOAD 0000167a: PUSH8 0xffffffffffffffff 00001683: DUP2 00001684: GT 00001685: ISZERO 00001686: PUSH2 0x1692 00001689: JUMPI 0000168a: PUSH2 0x1691 0000168d: PUSH2 0x10bb 00001690: JUMP 00001691: JUMPDEST 00001692: JUMPDEST 00001693: PUSH2 0x169e 00001696: DUP9 00001697: DUP3 00001698: DUP10 00001699: ADD 0000169a: PUSH2 0x137e 0000169d: JUMP 0000169e: JUMPDEST 0000169f: SWAP2 000016a0: POP 000016a1: POP 000016a2: SWAP3 000016a3: SWAP6 000016a4: POP 000016a5: SWAP3 000016a6: SWAP6 000016a7: SWAP1 000016a8: SWAP4 000016a9: POP 000016aa: JUMP 000016ab: JUMPDEST 000016ac: PUSH1 0x00 000016ae: DUP1 000016af: PUSH1 0x00 000016b1: DUP1 000016b2: PUSH1 0x00 000016b4: PUSH1 0xa0 000016b6: DUP7 000016b7: DUP9 000016b8: SUB 000016b9: SLT 000016ba: ISZERO 000016bb: PUSH2 0x16c7 000016be: JUMPI 000016bf: PUSH2 0x16c6 000016c2: PUSH2 0x10b6 000016c5: JUMP 000016c6: JUMPDEST 000016c7: JUMPDEST 000016c8: PUSH1 0x00 000016ca: PUSH2 0x16d5 000016cd: DUP9 000016ce: DUP3 000016cf: DUP10 000016d0: ADD 000016d1: PUSH2 0x1109 000016d4: JUMP 000016d5: JUMPDEST 000016d6: SWAP6 000016d7: POP 000016d8: POP 000016d9: PUSH1 0x20 000016db: PUSH2 0x16e6 000016de: DUP9 000016df: DUP3 000016e0: DUP10 000016e1: ADD 000016e2: PUSH2 0x1109 000016e5: JUMP 000016e6: JUMPDEST 000016e7: SWAP5 000016e8: POP 000016e9: POP 000016ea: PUSH1 0x40 000016ec: PUSH2 0x16f7 000016ef: DUP9 000016f0: DUP3 000016f1: DUP10 000016f2: ADD 000016f3: PUSH2 0x1251 000016f6: JUMP 000016f7: JUMPDEST 000016f8: SWAP4 000016f9: POP 000016fa: POP 000016fb: PUSH1 0x60 000016fd: PUSH2 0x1708 00001700: DUP9 00001701: DUP3 00001702: DUP10 00001703: ADD 00001704: PUSH2 0x1251 00001707: JUMP 00001708: JUMPDEST 00001709: SWAP3 0000170a: POP 0000170b: POP 0000170c: PUSH1 0x80 0000170e: DUP7 0000170f: ADD 00001710: CALLDATALOAD 00001711: PUSH8 0xffffffffffffffff 0000171a: DUP2 0000171b: GT 0000171c: ISZERO 0000171d: PUSH2 0x1729 00001720: JUMPI 00001721: PUSH2 0x1728 00001724: PUSH2 0x10bb 00001727: JUMP 00001728: JUMPDEST 00001729: JUMPDEST 0000172a: PUSH2 0x1735 0000172d: DUP9 0000172e: DUP3 0000172f: DUP10 00001730: ADD 00001731: PUSH2 0x137e 00001734: JUMP 00001735: JUMPDEST 00001736: SWAP2 00001737: POP 00001738: POP 00001739: SWAP3 0000173a: SWAP6 0000173b: POP 0000173c: SWAP3 0000173d: SWAP6 0000173e: SWAP1 0000173f: SWAP4 00001740: POP 00001741: JUMP 00001742: JUMPDEST 00001743: PUSH1 0x00 00001745: DUP1 00001746: PUSH1 0x40 00001748: DUP4 00001749: DUP6 0000174a: SUB 0000174b: SLT 0000174c: ISZERO 0000174d: PUSH2 0x1759 00001750: JUMPI 00001751: PUSH2 0x1758 00001754: PUSH2 0x10b6 00001757: JUMP 00001758: JUMPDEST 00001759: JUMPDEST 0000175a: PUSH1 0x00 0000175c: PUSH2 0x1767 0000175f: DUP6 00001760: DUP3 00001761: DUP7 00001762: ADD 00001763: PUSH2 0x1482 00001766: JUMP 00001767: JUMPDEST 00001768: SWAP3 00001769: POP 0000176a: POP 0000176b: PUSH1 0x20 0000176d: PUSH2 0x1778 00001770: DUP6 00001771: DUP3 00001772: DUP7 00001773: ADD 00001774: PUSH2 0x1251 00001777: JUMP 00001778: JUMPDEST 00001779: SWAP2 0000177a: POP 0000177b: POP 0000177c: SWAP3 0000177d: POP 0000177e: SWAP3 0000177f: SWAP1 00001780: POP 00001781: JUMP 00001782: JUMPDEST 00001783: PUSH1 0x00 00001785: DUP2 00001786: MLOAD 00001787: SWAP1 00001788: POP 00001789: PUSH2 0x1791 0000178c: DUP2 0000178d: PUSH2 0x123a 00001790: JUMP 00001791: JUMPDEST 00001792: SWAP3 00001793: SWAP2 00001794: POP 00001795: POP 00001796: JUMP 00001797: JUMPDEST 00001798: PUSH1 0x00 0000179a: PUSH1 0x20 0000179c: DUP3 0000179d: DUP5 0000179e: SUB 0000179f: SLT 000017a0: ISZERO 000017a1: PUSH2 0x17ad 000017a4: JUMPI 000017a5: PUSH2 0x17ac 000017a8: PUSH2 0x10b6 000017ab: JUMP 000017ac: JUMPDEST 000017ad: JUMPDEST 000017ae: PUSH1 0x00 000017b0: PUSH2 0x17bb 000017b3: DUP5 000017b4: DUP3 000017b5: DUP6 000017b6: ADD 000017b7: PUSH2 0x1782 000017ba: JUMP 000017bb: JUMPDEST 000017bc: SWAP2 000017bd: POP 000017be: POP 000017bf: SWAP3 000017c0: SWAP2 000017c1: POP 000017c2: POP 000017c3: JUMP 000017c4: JUMPDEST 000017c5: PUSH1 0x00 000017c7: DUP3 000017c8: DUP3 000017c9: MSTORE 000017ca: PUSH1 0x20 000017cc: DUP3 000017cd: ADD 000017ce: SWAP1 000017cf: POP 000017d0: SWAP3 000017d1: SWAP2 000017d2: POP 000017d3: POP 000017d4: JUMP 000017d5: JUMPDEST 000017d6: PUSH32 0x53656e646572206973206e6f7420746865206f776e6572000000000000000000 000017f7: PUSH1 0x00 000017f9: DUP3 000017fa: ADD 000017fb: MSTORE 000017fc: POP 000017fd: JUMP 000017fe: JUMPDEST 000017ff: PUSH1 0x00 00001801: PUSH2 0x180b 00001804: PUSH1 0x17 00001806: DUP4 00001807: PUSH2 0x17c4 0000180a: JUMP 0000180b: JUMPDEST 0000180c: SWAP2 0000180d: POP 0000180e: PUSH2 0x1816 00001811: DUP3 00001812: PUSH2 0x17d5 00001815: JUMP 00001816: JUMPDEST 00001817: PUSH1 0x20 00001819: DUP3 0000181a: ADD 0000181b: SWAP1 0000181c: POP 0000181d: SWAP2 0000181e: SWAP1 0000181f: POP 00001820: JUMP 00001821: JUMPDEST 00001822: PUSH1 0x00 00001824: PUSH1 0x20 00001826: DUP3 00001827: ADD 00001828: SWAP1 00001829: POP 0000182a: DUP2 0000182b: DUP2 0000182c: SUB 0000182d: PUSH1 0x00 0000182f: DUP4 00001830: ADD 00001831: MSTORE 00001832: PUSH2 0x183a 00001835: DUP2 00001836: PUSH2 0x17fe 00001839: JUMP 0000183a: JUMPDEST 0000183b: SWAP1 0000183c: POP 0000183d: SWAP2 0000183e: SWAP1 0000183f: POP 00001840: JUMP 00001841: JUMPDEST 00001842: PUSH1 0x00 00001844: DUP2 00001845: MLOAD 00001846: SWAP1 00001847: POP 00001848: PUSH2 0x1850 0000184b: DUP2 0000184c: PUSH2 0x10f2 0000184f: JUMP 00001850: JUMPDEST 00001851: SWAP3 00001852: SWAP2 00001853: POP 00001854: POP 00001855: JUMP 00001856: JUMPDEST 00001857: PUSH1 0x00 00001859: PUSH1 0x20 0000185b: DUP3 0000185c: DUP5 0000185d: SUB 0000185e: SLT 0000185f: ISZERO 00001860: PUSH2 0x186c 00001863: JUMPI 00001864: PUSH2 0x186b 00001867: PUSH2 0x10b6 0000186a: JUMP 0000186b: JUMPDEST 0000186c: JUMPDEST 0000186d: PUSH1 0x00 0000186f: PUSH2 0x187a 00001872: DUP5 00001873: DUP3 00001874: DUP6 00001875: ADD 00001876: PUSH2 0x1841 00001879: JUMP 0000187a: JUMPDEST 0000187b: SWAP2 0000187c: POP 0000187d: POP 0000187e: SWAP3 0000187f: SWAP2 00001880: POP 00001881: POP 00001882: JUMP 00001883: JUMPDEST 00001884: PUSH32 0x4e6f745468654e66744f776e6572000000000000000000000000000000000000 000018a5: PUSH1 0x00 000018a7: DUP3 000018a8: ADD 000018a9: MSTORE 000018aa: POP 000018ab: JUMP 000018ac: JUMPDEST 000018ad: PUSH1 0x00 000018af: PUSH2 0x18b9 000018b2: PUSH1 0x0e 000018b4: DUP4 000018b5: PUSH2 0x17c4 000018b8: JUMP 000018b9: JUMPDEST 000018ba: SWAP2 000018bb: POP 000018bc: PUSH2 0x18c4 000018bf: DUP3 000018c0: PUSH2 0x1883 000018c3: JUMP 000018c4: JUMPDEST 000018c5: PUSH1 0x20 000018c7: DUP3 000018c8: ADD 000018c9: SWAP1 000018ca: POP 000018cb: SWAP2 000018cc: SWAP1 000018cd: POP 000018ce: JUMP 000018cf: JUMPDEST 000018d0: PUSH1 0x00 000018d2: PUSH1 0x20 000018d4: DUP3 000018d5: ADD 000018d6: SWAP1 000018d7: POP 000018d8: DUP2 000018d9: DUP2 000018da: SUB 000018db: PUSH1 0x00 000018dd: DUP4 000018de: ADD 000018df: MSTORE 000018e0: PUSH2 0x18e8 000018e3: DUP2 000018e4: PUSH2 0x18ac 000018e7: JUMP 000018e8: JUMPDEST 000018e9: SWAP1 000018ea: POP 000018eb: SWAP2 000018ec: SWAP1 000018ed: POP 000018ee: JUMP 000018ef: JUMPDEST 000018f0: PUSH1 0x00 000018f2: DUP2 000018f3: SWAP1 000018f4: POP 000018f5: SWAP2 000018f6: SWAP1 000018f7: POP 000018f8: JUMP 000018f9: JUMPDEST 000018fa: PUSH1 0x00 000018fc: PUSH2 0x1914 000018ff: PUSH2 0x190f 00001902: PUSH2 0x190a 00001905: DUP5 00001906: PUSH2 0x10c0 00001909: JUMP 0000190a: JUMPDEST 0000190b: PUSH2 0x18ef 0000190e: JUMP 0000190f: JUMPDEST 00001910: PUSH2 0x10c0 00001913: JUMP 00001914: JUMPDEST 00001915: SWAP1 00001916: POP 00001917: SWAP2 00001918: SWAP1 00001919: POP 0000191a: JUMP 0000191b: JUMPDEST 0000191c: PUSH1 0x00 0000191e: PUSH2 0x1926 00001921: DUP3 00001922: PUSH2 0x18f9 00001925: JUMP 00001926: JUMPDEST 00001927: SWAP1 00001928: POP 00001929: SWAP2 0000192a: SWAP1 0000192b: POP 0000192c: JUMP 0000192d: JUMPDEST 0000192e: PUSH1 0x00 00001930: PUSH2 0x1938 00001933: DUP3 00001934: PUSH2 0x191b 00001937: JUMP 00001938: JUMPDEST 00001939: SWAP1 0000193a: POP 0000193b: SWAP2 0000193c: SWAP1 0000193d: POP 0000193e: JUMP 0000193f: JUMPDEST 00001940: PUSH2 0x1948 00001943: DUP2 00001944: PUSH2 0x192d 00001947: JUMP 00001948: JUMPDEST 00001949: DUP3 0000194a: MSTORE 0000194b: POP 0000194c: POP 0000194d: JUMP 0000194e: JUMPDEST 0000194f: PUSH1 0x00 00001951: PUSH1 0x60 00001953: DUP3 00001954: ADD 00001955: SWAP1 00001956: POP 00001957: PUSH2 0x1963 0000195a: PUSH1 0x00 0000195c: DUP4 0000195d: ADD 0000195e: DUP7 0000195f: PUSH2 0x14ea 00001962: JUMP 00001963: JUMPDEST 00001964: PUSH2 0x1970 00001967: PUSH1 0x20 00001969: DUP4 0000196a: ADD 0000196b: DUP6 0000196c: PUSH2 0x193f 0000196f: JUMP 00001970: JUMPDEST 00001971: PUSH2 0x197d 00001974: PUSH1 0x40 00001976: DUP4 00001977: ADD 00001978: DUP5 00001979: PUSH2 0x1155 0000197c: JUMP 0000197d: JUMPDEST 0000197e: SWAP5 0000197f: SWAP4 00001980: POP 00001981: POP 00001982: POP 00001983: POP 00001984: JUMP 00001985: JUMPDEST 00001986: PUSH32 0x456d70747942616c616e63650000000000000000000000000000000000000000 000019a7: PUSH1 0x00 000019a9: DUP3 000019aa: ADD 000019ab: MSTORE 000019ac: POP 000019ad: JUMP 000019ae: JUMPDEST 000019af: PUSH1 0x00 000019b1: PUSH2 0x19bb 000019b4: PUSH1 0x0c 000019b6: DUP4 000019b7: PUSH2 0x17c4 000019ba: JUMP 000019bb: JUMPDEST 000019bc: SWAP2 000019bd: POP 000019be: PUSH2 0x19c6 000019c1: DUP3 000019c2: PUSH2 0x1985 000019c5: JUMP 000019c6: JUMPDEST 000019c7: PUSH1 0x20 000019c9: DUP3 000019ca: ADD 000019cb: SWAP1 000019cc: POP 000019cd: SWAP2 000019ce: SWAP1 000019cf: POP 000019d0: JUMP 000019d1: JUMPDEST 000019d2: PUSH1 0x00 000019d4: PUSH1 0x20 000019d6: DUP3 000019d7: ADD 000019d8: SWAP1 000019d9: POP 000019da: DUP2 000019db: DUP2 000019dc: SUB 000019dd: PUSH1 0x00 000019df: DUP4 000019e0: ADD 000019e1: MSTORE 000019e2: PUSH2 0x19ea 000019e5: DUP2 000019e6: PUSH2 0x19ae 000019e9: JUMP 000019ea: JUMPDEST 000019eb: SWAP1 000019ec: POP 000019ed: SWAP2 000019ee: SWAP1 000019ef: POP 000019f0: JUMP 000019f1: JUMPDEST 000019f2: PUSH32 0x4e6f74456e6f75676846756e6473000000000000000000000000000000000000 00001a13: PUSH1 0x00 00001a15: DUP3 00001a16: ADD 00001a17: MSTORE 00001a18: POP 00001a19: JUMP 00001a1a: JUMPDEST 00001a1b: PUSH1 0x00 00001a1d: PUSH2 0x1a27 00001a20: PUSH1 0x0e 00001a22: DUP4 00001a23: PUSH2 0x17c4 00001a26: JUMP 00001a27: JUMPDEST 00001a28: SWAP2 00001a29: POP 00001a2a: PUSH2 0x1a32 00001a2d: DUP3 00001a2e: PUSH2 0x19f1 00001a31: JUMP 00001a32: JUMPDEST 00001a33: PUSH1 0x20 00001a35: DUP3 00001a36: ADD 00001a37: SWAP1 00001a38: POP 00001a39: SWAP2 00001a3a: SWAP1 00001a3b: POP 00001a3c: JUMP 00001a3d: JUMPDEST 00001a3e: PUSH1 0x00 00001a40: PUSH1 0x20 00001a42: DUP3 00001a43: ADD 00001a44: SWAP1 00001a45: POP 00001a46: DUP2 00001a47: DUP2 00001a48: SUB 00001a49: PUSH1 0x00 00001a4b: DUP4 00001a4c: ADD 00001a4d: MSTORE 00001a4e: PUSH2 0x1a56 00001a51: DUP2 00001a52: PUSH2 0x1a1a 00001a55: JUMP 00001a56: JUMPDEST 00001a57: SWAP1 00001a58: POP 00001a59: SWAP2 00001a5a: SWAP1 00001a5b: POP 00001a5c: JUMP 00001a5d: JUMPDEST 00001a5e: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00001a7f: PUSH1 0x00 00001a81: DUP3 00001a82: ADD 00001a83: MSTORE 00001a84: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 00001aa5: PUSH1 0x20 00001aa7: DUP3 00001aa8: ADD 00001aa9: MSTORE 00001aaa: POP 00001aab: JUMP 00001aac: JUMPDEST 00001aad: PUSH1 0x00 00001aaf: PUSH2 0x1ab9 00001ab2: PUSH1 0x2e 00001ab4: DUP4 00001ab5: PUSH2 0x17c4 00001ab8: JUMP 00001ab9: JUMPDEST 00001aba: SWAP2 00001abb: POP 00001abc: PUSH2 0x1ac4 00001abf: DUP3 00001ac0: PUSH2 0x1a5d 00001ac3: JUMP 00001ac4: JUMPDEST 00001ac5: PUSH1 0x40 00001ac7: DUP3 00001ac8: ADD 00001ac9: SWAP1 00001aca: POP 00001acb: SWAP2 00001acc: SWAP1 00001acd: POP 00001ace: JUMP 00001acf: JUMPDEST 00001ad0: PUSH1 0x00 00001ad2: PUSH1 0x20 00001ad4: DUP3 00001ad5: ADD 00001ad6: SWAP1 00001ad7: POP 00001ad8: DUP2 00001ad9: DUP2 00001ada: SUB 00001adb: PUSH1 0x00 00001add: DUP4 00001ade: ADD 00001adf: MSTORE 00001ae0: PUSH2 0x1ae8 00001ae3: DUP2 00001ae4: PUSH2 0x1aac 00001ae7: JUMP 00001ae8: JUMPDEST 00001ae9: SWAP1 00001aea: POP 00001aeb: SWAP2 00001aec: SWAP1 00001aed: POP 00001aee: JUMP 00001aef: JUMPDEST 00001af0: PUSH32 0x5a65726f20616464726573730000000000000000000000000000000000000000 00001b11: PUSH1 0x00 00001b13: DUP3 00001b14: ADD 00001b15: MSTORE 00001b16: POP 00001b17: JUMP 00001b18: JUMPDEST 00001b19: PUSH1 0x00 00001b1b: PUSH2 0x1b25 00001b1e: PUSH1 0x0c 00001b20: DUP4 00001b21: PUSH2 0x17c4 00001b24: JUMP 00001b25: JUMPDEST 00001b26: SWAP2 00001b27: POP 00001b28: PUSH2 0x1b30 00001b2b: DUP3 00001b2c: PUSH2 0x1aef 00001b2f: JUMP 00001b30: JUMPDEST 00001b31: PUSH1 0x20 00001b33: DUP3 00001b34: ADD 00001b35: SWAP1 00001b36: POP 00001b37: SWAP2 00001b38: SWAP1 00001b39: POP 00001b3a: JUMP 00001b3b: JUMPDEST 00001b3c: PUSH1 0x00 00001b3e: PUSH1 0x20 00001b40: DUP3 00001b41: ADD 00001b42: SWAP1 00001b43: POP 00001b44: DUP2 00001b45: DUP2 00001b46: SUB 00001b47: PUSH1 0x00 00001b49: DUP4 00001b4a: ADD 00001b4b: MSTORE 00001b4c: PUSH2 0x1b54 00001b4f: DUP2 00001b50: PUSH2 0x1b18 00001b53: JUMP 00001b54: JUMPDEST 00001b55: SWAP1 00001b56: POP 00001b57: SWAP2 00001b58: SWAP1 00001b59: POP 00001b5a: JUMP 00001b5b: JUMPDEST 00001b5c: PUSH1 0x00 00001b5e: DUP2 00001b5f: SWAP1 00001b60: POP 00001b61: SWAP2 00001b62: SWAP1 00001b63: POP 00001b64: JUMP 00001b65: JUMPDEST 00001b66: PUSH1 0x00 00001b68: PUSH1 0xff 00001b6a: DUP3 00001b6b: AND 00001b6c: SWAP1 00001b6d: POP 00001b6e: SWAP2 00001b6f: SWAP1 00001b70: POP 00001b71: JUMP 00001b72: JUMPDEST 00001b73: PUSH1 0x00 00001b75: PUSH2 0x1b8d 00001b78: PUSH2 0x1b88 00001b7b: PUSH2 0x1b83 00001b7e: DUP5 00001b7f: PUSH2 0x1b5b 00001b82: JUMP 00001b83: JUMPDEST 00001b84: PUSH2 0x18ef 00001b87: JUMP 00001b88: JUMPDEST 00001b89: PUSH2 0x1b65 00001b8c: JUMP 00001b8d: JUMPDEST 00001b8e: SWAP1 00001b8f: POP 00001b90: SWAP2 00001b91: SWAP1 00001b92: POP 00001b93: JUMP 00001b94: JUMPDEST 00001b95: PUSH2 0x1b9d 00001b98: DUP2 00001b99: PUSH2 0x1b72 00001b9c: JUMP 00001b9d: JUMPDEST 00001b9e: DUP3 00001b9f: MSTORE 00001ba0: POP 00001ba1: POP 00001ba2: JUMP 00001ba3: JUMPDEST 00001ba4: PUSH1 0x00 00001ba6: PUSH1 0x20 00001ba8: DUP3 00001ba9: ADD 00001baa: SWAP1 00001bab: POP 00001bac: PUSH2 0x1bb8 00001baf: PUSH1 0x00 00001bb1: DUP4 00001bb2: ADD 00001bb3: DUP5 00001bb4: PUSH2 0x1b94 00001bb7: JUMP 00001bb8: JUMPDEST 00001bb9: SWAP3 00001bba: SWAP2 00001bbb: POP 00001bbc: POP 00001bbd: JUMP 00001bbe: JUMPDEST 00001bbf: PUSH1 0x00 00001bc1: DUP2 00001bc2: SWAP1 00001bc3: POP 00001bc4: SWAP3 00001bc5: SWAP2 00001bc6: POP 00001bc7: POP 00001bc8: JUMP 00001bc9: JUMPDEST 00001bca: POP 00001bcb: JUMP 00001bcc: JUMPDEST 00001bcd: PUSH1 0x00 00001bcf: PUSH2 0x1bd9 00001bd2: PUSH1 0x00 00001bd4: DUP4 00001bd5: PUSH2 0x1bbe 00001bd8: JUMP 00001bd9: JUMPDEST 00001bda: SWAP2 00001bdb: POP 00001bdc: PUSH2 0x1be4 00001bdf: DUP3 00001be0: PUSH2 0x1bc9 00001be3: JUMP 00001be4: JUMPDEST 00001be5: PUSH1 0x00 00001be7: DUP3 00001be8: ADD 00001be9: SWAP1 00001bea: POP 00001beb: SWAP2 00001bec: SWAP1 00001bed: POP 00001bee: JUMP 00001bef: JUMPDEST 00001bf0: PUSH1 0x00 00001bf2: PUSH2 0x1bfa 00001bf5: DUP3 00001bf6: PUSH2 0x1bcc 00001bf9: JUMP 00001bfa: JUMPDEST 00001bfb: SWAP2 00001bfc: POP 00001bfd: DUP2 00001bfe: SWAP1 00001bff: POP 00001c00: SWAP2 00001c01: SWAP1 00001c02: POP 00001c03: JUMP 00001c04: JUMPDEST 00001c05: PUSH32 0x4661696c656420746f2073656e64204574686572000000000000000000000000 00001c26: PUSH1 0x00 00001c28: DUP3 00001c29: ADD 00001c2a: MSTORE 00001c2b: POP 00001c2c: JUMP 00001c2d: JUMPDEST 00001c2e: PUSH1 0x00 00001c30: PUSH2 0x1c3a 00001c33: PUSH1 0x14 00001c35: DUP4 00001c36: PUSH2 0x17c4 00001c39: JUMP 00001c3a: JUMPDEST 00001c3b: SWAP2 00001c3c: POP 00001c3d: PUSH2 0x1c45 00001c40: DUP3 00001c41: PUSH2 0x1c04 00001c44: JUMP 00001c45: JUMPDEST 00001c46: PUSH1 0x20 00001c48: DUP3 00001c49: ADD 00001c4a: SWAP1 00001c4b: POP 00001c4c: SWAP2 00001c4d: SWAP1 00001c4e: POP 00001c4f: JUMP 00001c50: JUMPDEST 00001c51: PUSH1 0x00 00001c53: PUSH1 0x20 00001c55: DUP3 00001c56: ADD 00001c57: SWAP1 00001c58: POP 00001c59: DUP2 00001c5a: DUP2 00001c5b: SUB 00001c5c: PUSH1 0x00 00001c5e: DUP4 00001c5f: ADD 00001c60: MSTORE 00001c61: PUSH2 0x1c69 00001c64: DUP2 00001c65: PUSH2 0x1c2d 00001c68: JUMP 00001c69: JUMPDEST 00001c6a: SWAP1 00001c6b: POP 00001c6c: SWAP2 00001c6d: SWAP1 00001c6e: POP 00001c6f: JUMP 00001c70: JUMPDEST 00001c71: PUSH1 0x00 00001c73: PUSH1 0x40 00001c75: DUP3 00001c76: ADD 00001c77: SWAP1 00001c78: POP 00001c79: PUSH2 0x1c85 00001c7c: PUSH1 0x00 00001c7e: DUP4 00001c7f: ADD 00001c80: DUP6 00001c81: PUSH2 0x14ea 00001c84: JUMP 00001c85: JUMPDEST 00001c86: PUSH2 0x1c92 00001c89: PUSH1 0x20 00001c8b: DUP4 00001c8c: ADD 00001c8d: DUP5 00001c8e: PUSH2 0x1155 00001c91: JUMP 00001c92: JUMPDEST 00001c93: SWAP4 00001c94: SWAP3 00001c95: POP 00001c96: POP 00001c97: POP 00001c98: JUMP 00001c99: JUMPDEST 00001c9a: PUSH2 0x1ca2 00001c9d: DUP2 00001c9e: PUSH2 0x1204 00001ca1: JUMP 00001ca2: JUMPDEST 00001ca3: DUP2 00001ca4: EQ 00001ca5: PUSH2 0x1cad 00001ca8: JUMPI 00001ca9: PUSH1 0x00 00001cab: DUP1 00001cac: REVERT 00001cad: JUMPDEST 00001cae: POP 00001caf: JUMP 00001cb0: JUMPDEST 00001cb1: PUSH1 0x00 00001cb3: DUP2 00001cb4: MLOAD 00001cb5: SWAP1 00001cb6: POP 00001cb7: PUSH2 0x1cbf 00001cba: DUP2 00001cbb: PUSH2 0x1c99 00001cbe: JUMP 00001cbf: JUMPDEST 00001cc0: SWAP3 00001cc1: SWAP2 00001cc2: POP 00001cc3: POP 00001cc4: JUMP 00001cc5: JUMPDEST 00001cc6: PUSH1 0x00 00001cc8: PUSH1 0x20 00001cca: DUP3 00001ccb: DUP5 00001ccc: SUB 00001ccd: SLT 00001cce: ISZERO 00001ccf: PUSH2 0x1cdb 00001cd2: JUMPI 00001cd3: PUSH2 0x1cda 00001cd6: PUSH2 0x10b6 00001cd9: JUMP 00001cda: JUMPDEST 00001cdb: JUMPDEST 00001cdc: PUSH1 0x00 00001cde: PUSH2 0x1ce9 00001ce1: DUP5 00001ce2: DUP3 00001ce3: DUP6 00001ce4: ADD 00001ce5: PUSH2 0x1cb0 00001ce8: JUMP 00001ce9: JUMPDEST 00001cea: SWAP2 00001ceb: POP 00001cec: POP 00001ced: SWAP3 00001cee: SWAP2 00001cef: POP 00001cf0: POP 00001cf1: JUMP 00001cf2: JUMPDEST 00001cf3: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00001d14: PUSH1 0x00 00001d16: DUP3 00001d17: ADD 00001d18: MSTORE 00001d19: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00001d3a: PUSH1 0x20 00001d3c: DUP3 00001d3d: ADD 00001d3e: MSTORE 00001d3f: POP 00001d40: JUMP 00001d41: JUMPDEST 00001d42: PUSH1 0x00 00001d44: PUSH2 0x1d4e 00001d47: PUSH1 0x2a 00001d49: DUP4 00001d4a: PUSH2 0x17c4 00001d4d: JUMP 00001d4e: JUMPDEST 00001d4f: SWAP2 00001d50: POP 00001d51: PUSH2 0x1d59 00001d54: DUP3 00001d55: PUSH2 0x1cf2 00001d58: JUMP 00001d59: JUMPDEST 00001d5a: PUSH1 0x40 00001d5c: DUP3 00001d5d: ADD 00001d5e: SWAP1 00001d5f: POP 00001d60: SWAP2 00001d61: SWAP1 00001d62: POP 00001d63: JUMP 00001d64: JUMPDEST 00001d65: PUSH1 0x00 00001d67: PUSH1 0x20 00001d69: DUP3 00001d6a: ADD 00001d6b: SWAP1 00001d6c: POP 00001d6d: DUP2 00001d6e: DUP2 00001d6f: SUB 00001d70: PUSH1 0x00 00001d72: DUP4 00001d73: ADD 00001d74: MSTORE 00001d75: PUSH2 0x1d7d 00001d78: DUP2 00001d79: PUSH2 0x1d41 00001d7c: JUMP 00001d7d: JUMPDEST 00001d7e: SWAP1 00001d7f: POP 00001d80: SWAP2 00001d81: SWAP1 00001d82: POP 00001d83: JUMP 00001d84: JUMPDEST 00001d85: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00001da6: PUSH1 0x00 00001da8: DUP3 00001da9: ADD 00001daa: MSTORE 00001dab: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 00001dcc: PUSH1 0x20 00001dce: DUP3 00001dcf: ADD 00001dd0: MSTORE 00001dd1: POP 00001dd2: JUMP 00001dd3: JUMPDEST 00001dd4: PUSH1 0x00 00001dd6: PUSH2 0x1de0 00001dd9: PUSH1 0x26 00001ddb: DUP4 00001ddc: PUSH2 0x17c4 00001ddf: JUMP 00001de0: JUMPDEST 00001de1: SWAP2 00001de2: POP 00001de3: PUSH2 0x1deb 00001de6: DUP3 00001de7: PUSH2 0x1d84 00001dea: JUMP 00001deb: JUMPDEST 00001dec: PUSH1 0x40 00001dee: DUP3 00001def: ADD 00001df0: SWAP1 00001df1: POP 00001df2: SWAP2 00001df3: SWAP1 00001df4: POP 00001df5: JUMP 00001df6: JUMPDEST 00001df7: PUSH1 0x00 00001df9: PUSH1 0x20 00001dfb: DUP3 00001dfc: ADD 00001dfd: SWAP1 00001dfe: POP 00001dff: DUP2 00001e00: DUP2 00001e01: SUB 00001e02: PUSH1 0x00 00001e04: DUP4 00001e05: ADD 00001e06: MSTORE 00001e07: PUSH2 0x1e0f 00001e0a: DUP2 00001e0b: PUSH2 0x1dd3 00001e0e: JUMP 00001e0f: JUMPDEST 00001e10: SWAP1 00001e11: POP 00001e12: SWAP2 00001e13: SWAP1 00001e14: POP 00001e15: JUMP 00001e16: JUMPDEST 00001e17: PUSH1 0x00 00001e19: DUP2 00001e1a: MLOAD 00001e1b: SWAP1 00001e1c: POP 00001e1d: SWAP2 00001e1e: SWAP1 00001e1f: POP 00001e20: JUMP 00001e21: JUMPDEST 00001e22: PUSH1 0x00 00001e24: JUMPDEST 00001e25: DUP4 00001e26: DUP2 00001e27: LT 00001e28: ISZERO 00001e29: PUSH2 0x1e3f 00001e2c: JUMPI 00001e2d: DUP1 00001e2e: DUP3 00001e2f: ADD 00001e30: MLOAD 00001e31: DUP2 00001e32: DUP5 00001e33: ADD 00001e34: MSTORE 00001e35: PUSH1 0x20 00001e37: DUP2 00001e38: ADD 00001e39: SWAP1 00001e3a: POP 00001e3b: PUSH2 0x1e24 00001e3e: JUMP 00001e3f: JUMPDEST 00001e40: PUSH1 0x00 00001e42: DUP5 00001e43: DUP5 00001e44: ADD 00001e45: MSTORE 00001e46: POP 00001e47: POP 00001e48: POP 00001e49: POP 00001e4a: JUMP 00001e4b: JUMPDEST 00001e4c: PUSH1 0x00 00001e4e: PUSH2 0x1e56 00001e51: DUP3 00001e52: PUSH2 0x1e16 00001e55: JUMP 00001e56: JUMPDEST 00001e57: PUSH2 0x1e60 00001e5a: DUP2 00001e5b: DUP6 00001e5c: PUSH2 0x1bbe 00001e5f: JUMP 00001e60: JUMPDEST 00001e61: SWAP4 00001e62: POP 00001e63: PUSH2 0x1e70 00001e66: DUP2 00001e67: DUP6 00001e68: PUSH1 0x20 00001e6a: DUP7 00001e6b: ADD 00001e6c: PUSH2 0x1e21 00001e6f: JUMP 00001e70: JUMPDEST 00001e71: DUP1 00001e72: DUP5 00001e73: ADD 00001e74: SWAP2 00001e75: POP 00001e76: POP 00001e77: SWAP3 00001e78: SWAP2 00001e79: POP 00001e7a: POP 00001e7b: JUMP 00001e7c: JUMPDEST 00001e7d: PUSH1 0x00 00001e7f: PUSH2 0x1e88 00001e82: DUP3 00001e83: DUP5 00001e84: PUSH2 0x1e4b 00001e87: JUMP 00001e88: JUMPDEST 00001e89: SWAP2 00001e8a: POP 00001e8b: DUP2 00001e8c: SWAP1 00001e8d: POP 00001e8e: SWAP3 00001e8f: SWAP2 00001e90: POP 00001e91: POP 00001e92: JUMP 00001e93: JUMPDEST 00001e94: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00001eb5: PUSH1 0x00 00001eb7: DUP3 00001eb8: ADD 00001eb9: MSTORE 00001eba: POP 00001ebb: JUMP 00001ebc: JUMPDEST 00001ebd: PUSH1 0x00 00001ebf: PUSH2 0x1ec9 00001ec2: PUSH1 0x1d 00001ec4: DUP4 00001ec5: PUSH2 0x17c4 00001ec8: JUMP 00001ec9: JUMPDEST 00001eca: SWAP2 00001ecb: POP 00001ecc: PUSH2 0x1ed4 00001ecf: DUP3 00001ed0: PUSH2 0x1e93 00001ed3: JUMP 00001ed4: JUMPDEST 00001ed5: PUSH1 0x20 00001ed7: DUP3 00001ed8: ADD 00001ed9: SWAP1 00001eda: POP 00001edb: SWAP2 00001edc: SWAP1 00001edd: POP 00001ede: JUMP 00001edf: JUMPDEST 00001ee0: PUSH1 0x00 00001ee2: PUSH1 0x20 00001ee4: DUP3 00001ee5: ADD 00001ee6: SWAP1 00001ee7: POP 00001ee8: DUP2 00001ee9: DUP2 00001eea: SUB 00001eeb: PUSH1 0x00 00001eed: DUP4 00001eee: ADD 00001eef: MSTORE 00001ef0: PUSH2 0x1ef8 00001ef3: DUP2 00001ef4: PUSH2 0x1ebc 00001ef7: JUMP 00001ef8: JUMPDEST 00001ef9: SWAP1 00001efa: POP 00001efb: SWAP2 00001efc: SWAP1 00001efd: POP 00001efe: JUMP 00001eff: JUMPDEST 00001f00: PUSH1 0x00 00001f02: DUP2 00001f03: MLOAD 00001f04: SWAP1 00001f05: POP 00001f06: SWAP2 00001f07: SWAP1 00001f08: POP 00001f09: JUMP 00001f0a: JUMPDEST 00001f0b: PUSH1 0x00 00001f0d: PUSH2 0x1f15 00001f10: DUP3 00001f11: PUSH2 0x1eff 00001f14: JUMP 00001f15: JUMPDEST 00001f16: PUSH2 0x1f1f 00001f19: DUP2 00001f1a: DUP6 00001f1b: PUSH2 0x17c4 00001f1e: JUMP 00001f1f: JUMPDEST 00001f20: SWAP4 00001f21: POP 00001f22: PUSH2 0x1f2f 00001f25: DUP2 00001f26: DUP6 00001f27: PUSH1 0x20 00001f29: DUP7 00001f2a: ADD 00001f2b: PUSH2 0x1e21 00001f2e: JUMP 00001f2f: JUMPDEST 00001f30: PUSH2 0x1f38 00001f33: DUP2 00001f34: PUSH2 0x1270 00001f37: JUMP 00001f38: JUMPDEST 00001f39: DUP5 00001f3a: ADD 00001f3b: SWAP2 00001f3c: POP 00001f3d: POP 00001f3e: SWAP3 00001f3f: SWAP2 00001f40: POP 00001f41: POP 00001f42: JUMP 00001f43: JUMPDEST 00001f44: PUSH1 0x00 00001f46: PUSH1 0x20 00001f48: DUP3 00001f49: ADD 00001f4a: SWAP1 00001f4b: POP 00001f4c: DUP2 00001f4d: DUP2 00001f4e: SUB 00001f4f: PUSH1 0x00 00001f51: DUP4 00001f52: ADD 00001f53: MSTORE 00001f54: PUSH2 0x1f5d 00001f57: DUP2 00001f58: DUP5 00001f59: PUSH2 0x1f0a 00001f5c: JUMP 00001f5d: JUMPDEST 00001f5e: SWAP1 00001f5f: POP 00001f60: SWAP3 00001f61: SWAP2 00001f62: POP 00001f63: POP 00001f64: JUMP 00001f65: INVALID 00001f66: LOG2 00001f67: PUSH5 0x6970667358 00001f6d: UNKNOWN(0x22) 00001f6e: SLT 00001f6f: KECCAK256 00001f70: UNKNOWN(0xBF) 00001f71: SWAP6 00001f72: SWAP15 00001f73: DIV 00001f74: STOP 00001f75: UNKNOWN(0xBB) 00001f76: PC 00001f77: RETURNDATASIZE 00001f78: SWAP14 00001f79: UNKNOWN(0xA7) 00001f7a: SELFDESTRUCT 00001f7b: CHAINID 00001f7c: SWAP6 00001f7d: UNKNOWN(0xF8) 00001f7e: UNKNOWN(0xD4) 00001f7f: STATICCALL 00001f80: UNKNOWN(0xEB) 00001f81: UNKNOWN(0xB8) 00001f82: DUP5 00001f83: UNKNOWN(0xCB) 00001f84: AND 00001f85: UNKNOWN(0xD1) 00001f86: UNKNOWN(0xF7) 00001f87: SWAP9 00001f88: UNKNOWN(0xA8) 00001f89: UNKNOWN(0x23) 00001f8a: CALLDATASIZE 00001f8b: UNKNOWN(0xCA) 00001f8c: UNKNOWN(0x2F) 00001f8d: UNKNOWN(0xD9) 00001f8e: PUSH3 0x986473 00001f92: PUSH16
| 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
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce
call_targets:
0x5018cc0d628fb322b2a040cfcd269a36c60b1538
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5018cc0d628fb322b2a040cfcd269a36c60b1538"
],
"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": "0x71629b97",
"selector": "0x71629b97",
"calldata_variants": [
"0x71629b97",
"0x71629b970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fef3a3",
"selector": "0xf3fef3a3",
"calldata_variants": [
"0xf3fef3a3",
"0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x150b7a02",
"selector": "0x150b7a02",
"calldata_variants": [
"0x150b7a02",
"0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1555,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3205,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3954,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [
{
"pc": 1138,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1642,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2818,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | SELFDESTRUCT reachable | 45 | no | no |
viewtrace_id: 0x885898acfbca4cc1de20955d5a6c0f2bf54cea371c6c076cab222e0be2b34af4
validation_json{
"sink": "SELFDESTRUCT",
"errors": 0,
"status": "unknown",
"attempts": 22,
"trace_id": "0x885898acfbca4cc1de20955d5a6c0f2bf54cea371c6c076cab222e0be2b34af4",
"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": "0x71629b97",
"selector": "0x71629b97",
"calldata_variants": [
"0x71629b97",
"0x71629b970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fef3a3",
"selector": "0xf3fef3a3",
"calldata_variants": [
"0xf3fef3a3",
"0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x150b7a02",
"selector": "0x150b7a02",
"calldata_variants": [
"0x150b7a02",
"0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 1138,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1642,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2818,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"selfdestruct_count": 1
}
|
| medium | access_control | codex | Initializer appears publicly callable; critical storage can be set by anyone once | 75 | no | — |
viewevidence_json{
"evidence": "Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.",
"locations": [
"selector:0xc4d66de8",
"pc:0x08cc",
"pc:0x0969",
"pc:0x0a15"
],
"recommendation": "Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.",
"exploit_scenario": "If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed."
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce
call_targets:
0x5018cc0d628fb322b2a040cfcd269a36c60b1538
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5018cc0d628fb322b2a040cfcd269a36c60b1538"
],
"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": "0x71629b97",
"selector": "0x71629b97",
"calldata_variants": [
"0x71629b97",
"0x71629b970000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3fef3a3",
"selector": "0xf3fef3a3",
"calldata_variants": [
"0xf3fef3a3",
"0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x150b7a02",
"selector": "0x150b7a02",
"calldata_variants": [
"0x150b7a02",
"0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1555,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3205,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3954,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": [
{
"pc": 1138,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1642,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2818,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| low | other | codex | SELFDESTRUCT opcode present in runtime bytecode (appears unreachable) | 65 | no | — |
viewevidence_json{
"evidence": "SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.",
"locations": [
"pc:0x1f75"
],
"recommendation": "Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.",
"exploit_scenario": "If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain."
}
|
| low | reentrancy | codex | Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface | 65 | no | — |
viewevidence_json{
"evidence": "Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.",
"locations": [
"pc:0x0613",
"pc:0x0c85",
"pc:0x0f72"
],
"recommendation": "Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.",
"exploit_scenario": "If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain."
}
|