019ba9bc-ec49-727e-9225-9a34729cb596
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 |
|---|---|---|---|---|
| 37741 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 37742 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 37743 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 37744 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 37745 | capability.graph | complete | 1 / 3 | 3 months ago |
| 37746 | detector.run | complete | 1 / 3 | 3 months ago |
| 37747 | validation.fork | complete | 1 / 3 | 3 months ago |
| 37898 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Two medium-risk issues identified: external calls with value/computed targets (reentrancy exposure) and biasable on-chain randomness derived from block attributes.","findings":[{"severity":"medium","category":"reentrancy","title":"Low-level CALLs with computed targets/value and no detected reentrancy guard","exploit_scenario":"If any CALL target is user-controlled (e.g., token/recipient address stored or set by a privileged party), a malicious contract can reenter during the external call (full gas forwarded). Because state writes occur after some external calls, a reentrant path could observe inconsistent state, trigger multiple payouts, or cause denial-of-service by reverting.","recommendation":"Add a reentrancy guard around external-call paths, update state before calling out, and validate/limit external call targets. Prefer pull-based withdrawals for ETH transfers.","evidence":"BYTECODE_BUNDLE.json lists CALL callsites with computed target/value and unknown returndata handling (pc 0x543/0x626/0x711/0x8e1/0xc84/0xd04). Detector findings flag untrusted CALL target/value and ETH value transfer possible with no guards detected. State writes are present after these calls (SSTORE at pc 0x698/0x774/0x7b9).","locations":["pc:0x543","pc:0x626","pc:0x711","pc:0x8e1","pc:0xc84","pc:0xd04","pc:0x698","pc:0x774","pc:0x7b9"]},{"severity":"medium","category":"oracle","title":"Randomness derived from block.timestamp/difficulty is biasable","exploit_scenario":"If the contract uses a hash of block.timestamp and block.difficulty (prevrandao) to shuffle/select participants, validators can influence these values to bias outcomes or front‑run, potentially manipulating any selection or distribution logic.","recommendation":"Use a verifiable randomness source (e.g., VRF) or commit‑reveal with delay. Avoid single‑block entropy for any value‑bearing selection.","evidence":"TIMESTAMP and DIFFICULTY opcodes feed into a SHA3 hash (pc 0xe05/0xe0b → SHA3 at pc 0xe38), indicating on-chain randomness derived from block attributes.","locations":["pc:0xe05","pc:0xe0b","pc:0xe38"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-d69ygy9_
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: xhigh
reasoning summaries: auto
session id: 019ba9cb-af1f-7293-be7e-c522612d8ff5
--------
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
**Locating BYTECODE_BUNDLE.json**
exec
/bin/bash -lc ls in /tmp/codex-d69ygy9_ succeeded in 7ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
thinking
**Reading file content**
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-d69ygy9_ succeeded in 7ms:
{
"analysis_artifact": {
"address": "0x026ef36a9fee2debbcc3dfc28a483ab7c985692f",
"artifact_hash": "0x8cc9f26542c24fa7ddc534eb4e637bf7328a97352496096e73d61115b4c6797e",
"artifact_json": {
"auth": {
"guards": []
},
"basic_blocks": [
{
"end_pc": 12,
"hash": "0xfbaac425d57b212961f8249cf9efdc10806af7c6a6311840c650a905a4b967cb",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATASIZE",
"LT",
"PUSH2",
thinking
**Planning bytecode-based security audit**
I'm focusing on analyzing the bytecode summary to build a JSON schema capturing key elements like callsites and storage slots. I want to look for signs of common smart contract vulnerabilities like reentrancy and unsafe delegatecalls, and I'll use tools like ripgrep or Python scripts to sift through the large BYTECODE_BUNDLE.json file efficiently. Let's explore this carefully!
exec
/bin/bash -lc 'rg -n "storage|slot|proxy|delegatecall|DELEGATECALL|callsite|function|selector|evidence|returndata|reentr" BYTECODE_BUNDLE.json' in /tmp/codex-d69ygy9_ succeeded in 21ms:
9569: "callsites": [
9573: "returndata_checked": null,
9580: "returndata_checked": null,
9587: "returndata_checked": null,
9594: "returndata_checked": null,
9601: "returndata_checked": null,
9608: "returndata_checked": null,
9615: "returndata_checked": null,
9622: "returndata_checked": null,
9629: "returndata_checked": null,
9636: "returndata_checked": null,
11824: "dispatcher_type": "selector_jump_table",
11825: "function_entries": [
11828: "selector": "0x95d89b41"
11832: "selector": "0xc31c9c07"
11836: "selector": "0xc9e0ab68"
11840: "selector": "0xf2fde38b"
11844: "selector": "0x6998ec23"
11848: "selector": "0x715018a6"
11852: "selector": "0x8da5cb5b"
thinking
**Analyzing contract callsites and selectors**
I'm gathering detailed info on callsites, function selectors, and guards to interpret this likely ERC20 token contract's behavior. I want to confirm external calls, ownership controls, proxy status, and presence of functions like mint or burn by focusing on evidence around callsite details and related code sections. I'll extract a focused snippet using sed to examine these parts closely.
exec
/bin/bash -lc "sed -n '9520,9705p' BYTECODE_BUNDLE.json" in /tmp/codex-d69ygy9_ succeeded in 25ms:
"end_pc": 8662,
"hash": "0x2eb0d745eb489141990398a0e2bf2471423ecfeb06c1fe604edf7580b34f82db",
"opcodes": [
"OP_A2",
"PUSH5",
"OP_22",
"SLT",
"SHA3",
"OP_B0",
"OP_5C",
"MLOAD",
"PUSH12",
"OP_BA",
"OP_EC",
"OP_DD",
"PUSH31",
"SLT",
"SHA3",
"OP_A2",
"OP_BC",
thinking
**Investigating guard detection evidence**
exec
/bin/bash -lc "sed -n '11780,11980p' BYTECODE_BUNDLE.json" in /tmp/codex-d69ygy9_ succeeded in 9ms:
"type": "control_flow_fallthrough"
},
{
"from": "bb:8370",
"to": "bb:8383",
"type": "control_flow_fallthrough"
},
{
"from": "bb:8393",
"to": "bb:8407",
"type": "control_flow_fallthrough"
},
{
"from": "bb:8442",
"to": "bb:8456",
"type": "control_flow_fallthrough"
},
{
"from": "bb:8456",
"to": "bb:8462",
thinking
**Analyzing function call sinks and storage writes**
exec
/bin/bash -lc "sed -n '17280,17620p' BYTECODE_BUNDLE.json" in /tmp/codex-d69ygy9_ succeeded in 8ms:
},
{
"op": "SLOAD",
"pc": 7345,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 7888,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 8039,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 24
}
}
thinking
**Analyzing concatenated runtime bytecode and contract behavior**
I'm parsing the runtime bytecode that unusually contains two concatenated parts separated by an invalid opcode `fe`, suggesting a factory contract embedding creation code of another contract (likely a forwarder or ERC20 token). I’m examining function selectors, external calls, CREATE usage, and potential reentrancy or unchecked call risks to identify security implications from this complex bytecode setup.
thinking
**Preparing bytecode parsing strategy**
I’m planning to parse the full runtime bytecode by splitting it at the marker `fe6080604052` that likely separates the main contract’s runtime from embedded creation code; I’ll use a Python script to extract and disassemble the first part to better analyze callsites and storage writes for potential vulnerabilities.
exec
/bin/bash -lc "python - <<'PY'
import json, re
from pathlib import Path
p=Path('BYTECODE_BUNDLE.json')
obj=json.loads(p.read_text())
code=obj['artifact']['runtime_bytecode']['full']
assert code.startswith('0x')
hexcode=code[2:]
marker='fe6080604052'
idx=hexcode.find(marker)
print('marker idx',idx)
if idx"'!=-1:
main=hexcode[:idx] # exclude fe
print('"'main bytes',len(main)//2)
else:
main=hexcode
print('total bytes',len(hexcode)//2)
# print last 40 bytes of main
print('main tail',main[-40:])
PY" in /tmp/codex-d69ygy9_ succeeded in 38ms:
marker idx 10818
main bytes 5409
total bytes 8667
main tail 820161151a5761151a6111e7565b506001019056
thinking
**Implementing EVM disassembler script**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# Simple EVM opcode table
opcodes = {
0x00: 'STOP', 0x01: 'ADD', 0x02: 'MUL', 0x03: 'SUB', 0x04: 'DIV', 0x05: 'SDIV', 0x06: 'MOD', 0x07: 'SMOD',
0x08: 'ADDMOD', 0x09: 'MULMOD', 0x0a: 'EXP', 0x0b: 'SIGNEXTEND',
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',
0xf0: 'CREATE', 0xf1: 'CALL', 0xf2: 'CALLCODE', 0xf3: 'RETURN', 0xf4: 'DELEGATECALL', 0xf5: 'CREATE2', 0xfa: 'STATICCALL', 0xfd: 'REVERT', 0xfe: 'INVALID', 0xff: 'SELFDESTRUCT',
}
for i in range(1, 33):
opcodes[0x5f + i] = f'PUSH{i}'
for i in range(1, 17):
opcodes[0x7f + i] = f'DUP{i}'
for i in range(1, 17):
opcodes[0x8f + i] = f'SWAP{i}'
for i in range(0, 5):
opcodes[0xa0 + i] = f'LOG{i}'
# Load bytecode
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
marker='fe6080604052'
idx=hexcode.find(marker)
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# Disassemble
ops=[]
i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
# index by pc
op_by_pc={pc:(name,arg) for pc,name,arg in ops}
# callsites from analysis
callsites=[967,1347,1574,1809,2080,2273,2881,3204,3332,7190]
# helper to show context
for pc in callsites:
# find instruction index
idx=None
for j,(opc,_,_) in enumerate(ops):
if opc==pc:
idx=j
break
print('\\nCallsite pc',pc, 'op', op_by_pc.get(pc))
if idx is None:
print('not found')
continue
start=max(0, idx-8); end=min(len(ops), idx+8)
for j in range(start,end):
opc,name,arg=ops[j]
if arg is not None:
arghex=arg.hex()
print(f'{opc:04d}: {name} 0x{arghex}')
else:
print(f'{opc:04d}: {name}')
# list SSTORE pcs
sstore=[pc for pc,name,arg in ops if name=='SSTORE']
print('\\nSSTORE pcs',sstore)
PY" in /tmp/codex-d69ygy9_ succeeded in 90ms:
Callsite pc 967 op ('STATICCALL', None)
0958: PUSH1 0x40
0960: MLOAD
0961: DUP1
0962: DUP4
0963: SUB
0964: DUP2
0965: DUP7
0966: GAS
0967: STATICCALL
0968: ISZERO
0969: DUP1
0970: ISZERO
0971: PUSH2 0x03d6
0974: JUMPI
0975: RETURNDATASIZE
0976: OP_5f
Callsite pc 1347 op ('CALL', None)
thinking
**Analyzing callsites and SSTORE context**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# opcode table
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
marker='fe6080604052'
idx=hexcode.find(marker)
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble
ops=[]
i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
# index by pc
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
sstore=[pc for pc,name,arg in ops if name=='SSTORE']
for pc in sstore:
idx=pc_to_idx[pc]
print('\\nSSTORE at',pc)
for j in range(max(0,idx-6), min(len(ops), idx+7)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 49ms:
SSTORE at 1688
1682: AND
1683: SWAP2
1684: SWAP1
1685: SWAP2
1686: OR
1687: SWAP1
1688: SSTORE
1689: JUMP
1690: JUMPDEST
1691: PUSH2 0x06a2
1694: PUSH2 0x0db9
1697: JUMP
1698: JUMPDEST
SSTORE at 1908
1901: DUP1
1902: SLOAD
1903: PUSH1 0x01
thinking
**Analyzing reentrancy and callsites risks**
I'm examining the contract's low-level calls with value transfers that forward full gas, noting that storage writes often happen after these calls without explicit reentrancy guards—suggesting possible reentrancy vulnerabilities. I’m also checking fallback behavior, ownership protections, and contract creation points to piece together relevant security risks and mitigations.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# opcode table
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
# find CREATE
create_pcs=[pc for pc,name,arg in ops if name=='CREATE']
print('CREATE pcs',create_pcs)
for pc in create_pcs:
idx=[i for i,(p,_,_) in enumerate(ops) if p==pc][0]
print('\\nContext around CREATE',pc)
for j in range(max(0,idx-8), min(len(ops), idx+8)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 39ms:
CREATE pcs [1881]
Context around CREATE 1881
1872: JUMPDEST
1873: PUSH1 0x40
1875: MLOAD
1876: DUP1
1877: SWAP2
1878: SUB
1879: SWAP1
1880: OP_5f
1881: CREATE
1882: DUP1
1883: ISZERO
1884: DUP1
1885: ISZERO
1886: PUSH2 0x0769
1889: JUMPI
1890: RETURNDATASIZE
thinking
**Analyzing reentrancy risks and external calls**
I'm examining the contract's create function and identifying potential reentrancy risks, especially around external ERC20 token calls and an ETH transfer function that might lack reentrancy guards. I’m checking storage updates relative to calls to assess vulnerabilities and exploring revert strings to map functions and better understand how state changes and external calls interplay.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# opcode table
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
pc=1809
idx=pc_to_idx[pc]
for j in range(max(0,idx-20), min(len(ops), idx+20)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 44ms:
1786: PUSH1 0xa0
1788: SHL
1789: SUB
1790: DUP4
1791: AND
1792: SWAP1
1793: DUP3
1794: ISZERO
1795: PUSH2 0x08fc
1798: MUL
1799: SWAP1
1800: DUP4
1801: SWAP1
1802: OP_5f
1803: DUP2
1804: DUP2
1805: DUP2
1806: DUP6
1807: DUP9
1808: DUP9
thinking
**Analyzing low-level call patterns and risk factors**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
pc=1347
idx=pc_to_idx[pc]
for j in range(max(0,idx-10), min(len(ops), idx+25)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 50ms:
1335: PUSH1 0x20
1337: PUSH1 0x40
1339: MLOAD
1340: DUP1
1341: DUP4
1342: SUB
1343: DUP2
1344: OP_5f
1345: DUP8
1346: GAS
1347: CALL
1348: ISZERO
1349: DUP1
1350: ISZERO
1351: PUSH2 0x0552
1354: JUMPI
1355: RETURNDATASIZE
1356: OP_5f
1357: DUP1
1358: RETURNDATACOPY
thinking
**Requesting continuation**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# op table same as before
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
start=1363
idx=pc_to_idx[start]
for j in range(idx, idx+30):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 46ms:
1363: POP
1364: POP
1365: POP
1366: POP
1367: PUSH1 0x40
1369: MLOAD
1370: RETURNDATASIZE
1371: PUSH1 0x1f
1373: NOT
1374: PUSH1 0x1f
1376: DUP3
1377: ADD
1378: AND
1379: DUP3
1380: ADD
1381: DUP1
1382: PUSH1 0x40
1384: MSTORE
1385: POP
1386: DUP2
thinking
**Evaluating potential vulnerabilities in external calls**
I'm examining low-level calls, state updates, and token transfers for reentrancy or untrusted call issues, noting possible medium/low severity risks due to missing reentrancy guards and external call targets that might be untrusted. I’m also considering common ERC20 risks like approve race conditions and denial-of-service scenarios during token distribution.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# scan for opcode 0x32 (ORIGIN)
pcs=[i for i,op in enumerate(b) if op==0x32]
print('"'ORIGIN pcs', pcs)
PY" in /tmp/codex-d69ygy9_ succeeded in 48ms:
ORIGIN pcs [215, 1837, 4702]
thinking
**Analyzing ORIGIN opcode usage**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
for pc in [215,1837,4702]:
idx=pc_to_idx[pc]
print('\\nContext around ORIGIN at',pc)
for j in range(max(0,idx-8), min(len(ops), idx+10)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ exited 1 in 53ms:
Traceback (most recent call last):
File "<stdin>", line 33, in <module>
KeyError: 215
thinking
**Identifying opcode positions through disassembly**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
origin_pcs=[pc for pc,name,arg in ops if name=='ORIGIN']
print('ORIGIN instruction PCs', origin_pcs)
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
for pc in origin_pcs:
idx=pc_to_idx[pc]
print('\\nContext around ORIGIN at',pc)
for j in range(max(0,idx-8), min(len(ops), idx+10)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 50ms:
ORIGIN instruction PCs []
thinking
**Checking for blockchain randomness opcodes**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
opcodes={0x42:'TIMESTAMP',0x40:'BLOCKHASH',0x43:'NUMBER'}
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble to find opcodes
pcs={'"'TIMESTAMP':[], 'BLOCKHASH':[], 'NUMBER':[]}
# simple parse with push skipping
i=0
while i < len(b):
pc=i
op=b[i]
i+=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
i+=n
continue
if op==0x42:
pcs['TIMESTAMP'].append(pc)
elif op==0x40:
pcs['BLOCKHASH'].append(pc)
elif op==0x43:
pcs['NUMBER'].append(pc)
print(pcs)
PY" in /tmp/codex-d69ygy9_ succeeded in 65ms:
{'TIMESTAMP': [3281, 3595], 'BLOCKHASH': [], 'NUMBER': []}
thinking
**Analyzing TIMESTAMP opcode usage**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# opcode table
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
for pc in [3281,3595]:
idx=pc_to_idx[pc]
print('\\nContext around TIMESTAMP at',pc)
for j in range(max(0,idx-8), min(len(ops), idx+12)):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 77ms:
Context around TIMESTAMP at 3281
3267: SUB
3268: AND
3269: PUSH4 0x38ed1739
3274: DUP6
3275: OP_5f
3276: DUP5
3277: DUP8
3278: PUSH2 0x0cd8
3281: TIMESTAMP
3282: PUSH1 0xc8
3284: PUSH2 0x123f
3287: JUMP
3288: JUMPDEST
3289: PUSH1 0x40
3291: MLOAD
3292: DUP7
3293: PUSH4 0xffffffff
3298: AND
thinking
**Analyzing randomness generation approach**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# opcode table
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
start=3585
idx=pc_to_idx[start]
for j in range(idx, idx+30):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 38ms:
3585: PUSH1 0x40
3587: DUP1
3588: MLOAD
3589: DIFFICULTY
3590: PUSH1 0x20
3592: DUP3
3593: ADD
3594: MSTORE
3595: TIMESTAMP
3596: SWAP2
3597: DUP2
3598: ADD
3599: SWAP2
3600: SWAP1
3601: SWAP2
3602: MSTORE
3603: PUSH1 0x60
3605: DUP2
3606: ADD
3607: SWAP3
thinking
**Checking for SHA3 usage**
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
opcodes={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',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',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): opcodes[0x5f+i]=f'PUSH{i}'
for i in range(1,17): opcodes[0x7f+i]=f'DUP{i}'
for i in range(1,17): opcodes[0x8f+i]=f'SWAP{i}'
for i in range(0,5): opcodes[0xa0+i]=f'LOG{i}'
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
hexcode=obj['artifact']['runtime_bytecode']['full'][2:]
idx=hexcode.find('fe6080604052')
main=hexcode[:idx] if idx"'!=-1 else hexcode
b=bytes.fromhex(main)
# disassemble
ops=[];i=0
while i < len(b):
pc=i
op=b[i]
name=opcodes.get(op, f'"'OP_{op:02x}')
i+=1
arg=None
if name.startswith('PUSH'):
n=int(name[4:])
arg=b[i:i+n]
i+=n
ops.append((pc,name,arg))
pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
start=3616
idx=pc_to_idx[start]
for j in range(idx, idx+30):
opc,name,arg=ops[j]
if arg is not None:
print(f'{opc:04d}: {name} 0x{arg.hex()}')
else:
print(f'{opc:04d}: {name}')
PY" in /tmp/codex-d69ygy9_ succeeded in 48ms:
3616: PUSH1 0xa0
3618: ADD
3619: PUSH1 0x40
3621: MLOAD
3622: PUSH1 0x20
3624: DUP2
3625: DUP4
3626: SUB
3627: SUB
3628: DUP2
3629: MSTORE
3630: SWAP1
3631: PUSH1 0x40
3633: MSTORE
3634: DUP1
3635: MLOAD
3636: SWAP1
3637: PUSH1 0x20
3639: ADD
3640: SHA3
thinking
**Analyzing randomness and external call risks**
exec
/bin/bash -lc "python - <<'PY'
pcs=[1347,1574,1809,2273,3204,3332,1688,1908,1977,3281,3589,3595,3640]
for pc in pcs:
print(pc, hex(pc))
PY" in /tmp/codex-d69ygy9_ succeeded in 18ms:
1347 0x543
1574 0x626
1809 0x711
2273 0x8e1
3204 0xc84
3332 0xd04
1688 0x698
1908 0x774
1977 0x7b9
3281 0xcd1
3589 0xe05
3595 0xe0b
3640 0xe38
thinking
**Preparing detailed security findings JSON**
codex
{"no_findings":false,"summary":"Two medium-risk issues identified: external calls with value/computed targets (reentrancy exposure) and biasable on-chain randomness derived from block attributes.","findings":[{"severity":"medium","category":"reentrancy","title":"Low-level CALLs with computed targets/value and no detected reentrancy guard","exploit_scenario":"If any CALL target is user-controlled (e.g., token/recipient address stored or set by a privileged party), a malicious contract can reenter during the external call (full gas forwarded). Because state writes occur after some external calls, a reentrant path could observe inconsistent state, trigger multiple payouts, or cause denial-of-service by reverting.","recommendation":"Add a reentrancy guard around external-call paths, update state before calling out, and validate/limit external call targets. Prefer pull-based withdrawals for ETH transfers.","evidence":"BYTECODE_BUNDLE.json lists CALL callsites with computed target/value and unknown returndata handling (pc 0x543/0x626/0x711/0x8e1/0xc84/0xd04). Detector findings flag untrusted CALL target/value and ETH value transfer possible with no guards detected. State writes are present after these calls (SSTORE at pc 0x698/0x774/0x7b9).","locations":["pc:0x543","pc:0x626","pc:0x711","pc:0x8e1","pc:0xc84","pc:0xd04","pc:0x698","pc:0x774","pc:0x7b9"]},{"severity":"medium","category":"oracle","title":"Randomness derived from block.timestamp/difficulty is biasable","exploit_scenario":"If the contract uses a hash of block.timestamp and block.difficulty (prevrandao) to shuffle/select participants, validators can influence these values to bias outcomes or front‑run, potentially manipulating any selection or distribution logic.","recommendation":"Use a verifiable randomness source (e.g., VRF) or commit‑reveal with delay. Avoid single‑block entropy for any value‑bearing selection.","evidence":"TIMESTAMP and DIFFICULTY opcodes feed into a SHA3 hash (pc 0xe05/0xe0b → SHA3 at pc 0xe38), indicating on-chain randomness derived from block attributes.","locations":["pc:0xe05","pc:0xe0b","pc:0xe38"]}]}
tokens used
105,267
{
"codex": {
"ran_at": "2026-01-10T21:33:04.783392+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 17336,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Two medium-risk issues identified: external calls with value/computed targets (reentrancy exposure) and biasable on-chain randomness derived from block attributes.",
"raw_final": {
"summary": "Two medium-risk issues identified: external calls with value/computed targets (reentrancy exposure) and biasable on-chain randomness derived from block attributes.",
"findings": [
{
"title": "Low-level CALLs with computed targets/value and no detected reentrancy guard",
"category": "reentrancy",
"evidence": "BYTECODE_BUNDLE.json lists CALL callsites with computed target/value and unknown returndata handling (pc 0x543/0x626/0x711/0x8e1/0xc84/0xd04). Detector findings flag untrusted CALL target/value and ETH value transfer possible with no guards detected. State writes are present after these calls (SSTORE at pc 0x698/0x774/0x7b9).",
"severity": "medium",
"locations": [
"pc:0x543",
"pc:0x626",
"pc:0x711",
"pc:0x8e1",
"pc:0xc84",
"pc:0xd04",
"pc:0x698",
"pc:0x774",
"pc:0x7b9"
],
"recommendation": "Add a reentrancy guard around external-call paths, update state before calling out, and validate/limit external call targets. Prefer pull-based withdrawals for ETH transfers.",
"exploit_scenario": "If any CALL target is user-controlled (e.g., token/recipient address stored or set by a privileged party), a malicious contract can reenter during the external call (full gas forwarded). Because state writes occur after some external calls, a reentrant path could observe inconsistent state, trigger multiple payouts, or cause denial-of-service by reverting."
},
{
"title": "Randomness derived from block.timestamp/difficulty is biasable",
"category": "oracle",
"evidence": "TIMESTAMP and DIFFICULTY opcodes feed into a SHA3 hash (pc 0xe05/0xe0b \u2192 SHA3 at pc 0xe38), indicating on-chain randomness derived from block attributes.",
"severity": "medium",
"locations": [
"pc:0xe05",
"pc:0xe0b",
"pc:0xe38"
],
"recommendation": "Use a verifiable randomness source (e.g., VRF) or commit\u2011reveal with delay. Avoid single\u2011block entropy for any value\u2011bearing selection.",
"exploit_scenario": "If the contract uses a hash of block.timestamp and block.difficulty (prevrandao) to shuffle/select participants, validators can influence these values to bias outcomes or front\u2011run, potentially manipulating any selection or distribution logic."
}
],
"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 0x00dc 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0x6998ec23 00000018: GT 00000019: PUSH2 0x007c 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0x95d89b41 00000023: GT 00000024: PUSH2 0x0057 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0x95d89b41 0000002e: EQ 0000002f: PUSH2 0x0230 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xc31c9c07 00000039: EQ 0000003a: PUSH2 0x0244 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xc9e0ab68 00000044: EQ 00000045: PUSH2 0x0263 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xf2fde38b 0000004f: EQ 00000050: PUSH2 0x0282 00000053: JUMPI 00000054: PUSH0 00000055: DUP1 00000056: REVERT 00000057: JUMPDEST 00000058: DUP1 00000059: PUSH4 0x6998ec23 0000005e: EQ 0000005f: PUSH2 0x01cd 00000062: JUMPI 00000063: DUP1 00000064: PUSH4 0x715018a6 00000069: EQ 0000006a: PUSH2 0x01ec 0000006d: JUMPI 0000006e: DUP1 0000006f: PUSH4 0x8da5cb5b 00000074: EQ 00000075: PUSH2 0x0200 00000078: JUMPI 00000079: PUSH0 0000007a: DUP1 0000007b: REVERT 0000007c: JUMPDEST 0000007d: DUP1 0000007e: PUSH4 0x4782f779 00000083: GT 00000084: PUSH2 0x00b7 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x4782f779 0000008e: EQ 0000008f: PUSH2 0x0151 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x4f1c7f8c 00000099: EQ 0000009a: PUSH2 0x0170 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x5a446215 000000a4: EQ 000000a5: PUSH2 0x018f 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x5e35359e 000000af: EQ 000000b0: PUSH2 0x01ae 000000b3: JUMPI 000000b4: PUSH0 000000b5: DUP1 000000b6: REVERT 000000b7: JUMPDEST 000000b8: DUP1 000000b9: PUSH4 0x06fdde03 000000be: EQ 000000bf: PUSH2 0x00e7 000000c2: JUMPI 000000c3: DUP1 000000c4: PUSH4 0x1a695230 000000c9: EQ 000000ca: PUSH2 0x0111 000000cd: JUMPI 000000ce: DUP1 000000cf: PUSH4 0x41cb87fc 000000d4: EQ 000000d5: PUSH2 0x0132 000000d8: JUMPI 000000d9: PUSH0 000000da: DUP1 000000db: REVERT 000000dc: JUMPDEST 000000dd: CALLDATASIZE 000000de: PUSH2 0x00e3 000000e1: JUMPI 000000e2: STOP 000000e3: JUMPDEST 000000e4: PUSH0 000000e5: DUP1 000000e6: REVERT 000000e7: JUMPDEST 000000e8: CALLVALUE 000000e9: DUP1 000000ea: ISZERO 000000eb: PUSH2 0x00f2 000000ee: JUMPI 000000ef: PUSH0 000000f0: DUP1 000000f1: REVERT 000000f2: JUMPDEST 000000f3: POP 000000f4: PUSH2 0x00fb 000000f7: PUSH2 0x02a1 000000fa: JUMP 000000fb: JUMPDEST 000000fc: PUSH1 0x40 000000fe: MLOAD 000000ff: PUSH2 0x0108 00000102: SWAP2 00000103: SWAP1 00000104: PUSH2 0x0f03 00000107: JUMP 00000108: JUMPDEST 00000109: PUSH1 0x40 0000010b: MLOAD 0000010c: DUP1 0000010d: SWAP2 0000010e: SUB 0000010f: SWAP1 00000110: RETURN 00000111: JUMPDEST 00000112: CALLVALUE 00000113: DUP1 00000114: ISZERO 00000115: PUSH2 0x011c 00000118: JUMPI 00000119: PUSH0 0000011a: DUP1 0000011b: REVERT 0000011c: JUMPDEST 0000011d: POP 0000011e: PUSH2 0x0130 00000121: PUSH2 0x012b 00000124: CALLDATASIZE 00000125: PUSH1 0x04 00000127: PUSH2 0x0f30 0000012a: JUMP 0000012b: JUMPDEST 0000012c: PUSH2 0x0331 0000012f: JUMP 00000130: JUMPDEST 00000131: STOP 00000132: JUMPDEST 00000133: CALLVALUE 00000134: DUP1 00000135: ISZERO 00000136: PUSH2 0x013d 00000139: JUMPI 0000013a: PUSH0 0000013b: DUP1 0000013c: REVERT 0000013d: JUMPDEST 0000013e: POP 0000013f: PUSH2 0x0130 00000142: PUSH2 0x014c 00000145: CALLDATASIZE 00000146: PUSH1 0x04 00000148: PUSH2 0x0f30 0000014b: JUMP 0000014c: JUMPDEST 0000014d: PUSH2 0x0670 00000150: JUMP 00000151: JUMPDEST 00000152: CALLVALUE 00000153: DUP1 00000154: ISZERO 00000155: PUSH2 0x015c 00000158: JUMPI 00000159: PUSH0 0000015a: DUP1 0000015b: REVERT 0000015c: JUMPDEST 0000015d: POP 0000015e: PUSH2 0x0130 00000161: PUSH2 0x016b 00000164: CALLDATASIZE 00000165: PUSH1 0x04 00000167: PUSH2 0x0f4b 0000016a: JUMP 0000016b: JUMPDEST 0000016c: PUSH2 0x069a 0000016f: JUMP 00000170: JUMPDEST 00000171: CALLVALUE 00000172: DUP1 00000173: ISZERO 00000174: PUSH2 0x017b 00000177: JUMPI 00000178: PUSH0 00000179: DUP1 0000017a: REVERT 0000017b: JUMPDEST 0000017c: POP 0000017d: PUSH2 0x0130 00000180: PUSH2 0x018a 00000183: CALLDATASIZE 00000184: PUSH1 0x04 00000186: PUSH2 0x1026 00000189: JUMP 0000018a: JUMPDEST 0000018b: PUSH2 0x072a 0000018e: JUMP 0000018f: JUMPDEST 00000190: CALLVALUE 00000191: DUP1 00000192: ISZERO 00000193: PUSH2 0x019a 00000196: JUMPI 00000197: PUSH0 00000198: DUP1 00000199: REVERT 0000019a: JUMPDEST 0000019b: POP 0000019c: PUSH2 0x0130 0000019f: PUSH2 0x01a9 000001a2: CALLDATASIZE 000001a3: PUSH1 0x04 000001a5: PUSH2 0x10aa 000001a8: JUMP 000001a9: JUMPDEST 000001aa: PUSH2 0x07c0 000001ad: JUMP 000001ae: JUMPDEST 000001af: CALLVALUE 000001b0: DUP1 000001b1: ISZERO 000001b2: PUSH2 0x01b9 000001b5: JUMPI 000001b6: PUSH0 000001b7: DUP1 000001b8: REVERT 000001b9: JUMPDEST 000001ba: POP 000001bb: PUSH2 0x0130 000001be: PUSH2 0x01c8 000001c1: CALLDATASIZE 000001c2: PUSH1 0x04 000001c4: PUSH2 0x110a 000001c7: JUMP 000001c8: JUMPDEST 000001c9: PUSH2 0x07e1 000001cc: JUMP 000001cd: JUMPDEST 000001ce: CALLVALUE 000001cf: DUP1 000001d0: ISZERO 000001d1: PUSH2 0x01d8 000001d4: JUMPI 000001d5: PUSH0 000001d6: DUP1 000001d7: REVERT 000001d8: JUMPDEST 000001d9: POP 000001da: PUSH2 0x0130 000001dd: PUSH2 0x01e7 000001e0: CALLDATASIZE 000001e1: PUSH1 0x04 000001e3: PUSH2 0x0f4b 000001e6: JUMP 000001e7: JUMPDEST 000001e8: PUSH2 0x0963 000001eb: JUMP 000001ec: JUMPDEST 000001ed: CALLVALUE 000001ee: DUP1 000001ef: ISZERO 000001f0: PUSH2 0x01f7 000001f3: JUMPI 000001f4: PUSH0 000001f5: DUP1 000001f6: REVERT 000001f7: JUMPDEST 000001f8: POP 000001f9: PUSH2 0x0130 000001fc: PUSH2 0x0ae0 000001ff: JUMP 00000200: JUMPDEST 00000201: CALLVALUE 00000202: DUP1 00000203: ISZERO 00000204: PUSH2 0x020b 00000207: JUMPI 00000208: PUSH0 00000209: DUP1 0000020a: REVERT 0000020b: JUMPDEST 0000020c: POP 0000020d: PUSH0 0000020e: SLOAD 0000020f: PUSH1 0x01 00000211: PUSH1 0x01 00000213: PUSH1 0xa0 00000215: SHL 00000216: SUB 00000217: AND 00000218: JUMPDEST 00000219: PUSH1 0x40 0000021b: MLOAD 0000021c: PUSH1 0x01 0000021e: PUSH1 0x01 00000220: PUSH1 0xa0 00000222: SHL 00000223: SUB 00000224: SWAP1 00000225: SWAP2 00000226: AND 00000227: DUP2 00000228: MSTORE 00000229: PUSH1 0x20 0000022b: ADD 0000022c: PUSH2 0x0108 0000022f: JUMP 00000230: JUMPDEST 00000231: CALLVALUE 00000232: DUP1 00000233: ISZERO 00000234: PUSH2 0x023b 00000237: JUMPI 00000238: PUSH0 00000239: DUP1 0000023a: REVERT 0000023b: JUMPDEST 0000023c: POP 0000023d: PUSH2 0x00fb 00000240: PUSH2 0x0af3 00000243: JUMP 00000244: JUMPDEST 00000245: CALLVALUE 00000246: DUP1 00000247: ISZERO 00000248: PUSH2 0x024f 0000024b: JUMPI 0000024c: PUSH0 0000024d: DUP1 0000024e: REVERT 0000024f: JUMPDEST 00000250: POP 00000251: PUSH1 0x01 00000253: SLOAD 00000254: PUSH2 0x0218 00000257: SWAP1 00000258: PUSH1 0x01 0000025a: PUSH1 0x01 0000025c: PUSH1 0xa0 0000025e: SHL 0000025f: SUB 00000260: AND 00000261: DUP2 00000262: JUMP 00000263: JUMPDEST 00000264: CALLVALUE 00000265: DUP1 00000266: ISZERO 00000267: PUSH2 0x026e 0000026a: JUMPI 0000026b: PUSH0 0000026c: DUP1 0000026d: REVERT 0000026e: JUMPDEST 0000026f: POP 00000270: PUSH2 0x0130 00000273: PUSH2 0x027d 00000276: CALLDATASIZE 00000277: PUSH1 0x04 00000279: PUSH2 0x1148 0000027c: JUMP 0000027d: JUMPDEST 0000027e: PUSH2 0x0b02 00000281: JUMP 00000282: JUMPDEST 00000283: CALLVALUE 00000284: DUP1 00000285: ISZERO 00000286: PUSH2 0x028d 00000289: JUMPI 0000028a: PUSH0 0000028b: DUP1 0000028c: REVERT 0000028d: JUMPDEST 0000028e: POP 0000028f: PUSH2 0x0130 00000292: PUSH2 0x029c 00000295: CALLDATASIZE 00000296: PUSH1 0x04 00000298: PUSH2 0x0f30 0000029b: JUMP 0000029c: JUMPDEST 0000029d: PUSH2 0x0d43 000002a0: JUMP 000002a1: JUMPDEST 000002a2: PUSH1 0x60 000002a4: PUSH1 0x04 000002a6: DUP1 000002a7: SLOAD 000002a8: PUSH2 0x02b0 000002ab: SWAP1 000002ac: PUSH2 0x1198 000002af: JUMP 000002b0: JUMPDEST 000002b1: DUP1 000002b2: PUSH1 0x1f 000002b4: ADD 000002b5: PUSH1 0x20 000002b7: DUP1 000002b8: SWAP2 000002b9: DIV 000002ba: MUL 000002bb: PUSH1 0x20 000002bd: ADD 000002be: PUSH1 0x40 000002c0: MLOAD 000002c1: SWAP1 000002c2: DUP2 000002c3: ADD 000002c4: PUSH1 0x40 000002c6: MSTORE 000002c7: DUP1 000002c8: SWAP3 000002c9: SWAP2 000002ca: SWAP1 000002cb: DUP2 000002cc: DUP2 000002cd: MSTORE 000002ce: PUSH1 0x20 000002d0: ADD 000002d1: DUP3 000002d2: DUP1 000002d3: SLOAD 000002d4: PUSH2 0x02dc 000002d7: SWAP1 000002d8: PUSH2 0x1198 000002db: JUMP 000002dc: JUMPDEST 000002dd: DUP1 000002de: ISZERO 000002df: PUSH2 0x0327 000002e2: JUMPI 000002e3: DUP1 000002e4: PUSH1 0x1f 000002e6: LT 000002e7: PUSH2 0x02fe 000002ea: JUMPI 000002eb: PUSH2 0x0100 000002ee: DUP1 000002ef: DUP4 000002f0: SLOAD 000002f1: DIV 000002f2: MUL 000002f3: DUP4 000002f4: MSTORE 000002f5: SWAP2 000002f6: PUSH1 0x20 000002f8: ADD 000002f9: SWAP2 000002fa: PUSH2 0x0327 000002fd: JUMP 000002fe: JUMPDEST 000002ff: DUP3 00000300: ADD 00000301: SWAP2 00000302: SWAP1 00000303: PUSH0 00000304: MSTORE 00000305: PUSH1 0x20 00000307: PUSH0 00000308: KECCAK256 00000309: SWAP1 0000030a: JUMPDEST 0000030b: DUP2 0000030c: SLOAD 0000030d: DUP2 0000030e: MSTORE 0000030f: SWAP1 00000310: PUSH1 0x01 00000312: ADD 00000313: SWAP1 00000314: PUSH1 0x20 00000316: ADD 00000317: DUP1 00000318: DUP4 00000319: GT 0000031a: PUSH2 0x030a 0000031d: JUMPI 0000031e: DUP3 0000031f: SWAP1 00000320: SUB 00000321: PUSH1 0x1f 00000323: AND 00000324: DUP3 00000325: ADD 00000326: SWAP2 00000327: JUMPDEST 00000328: POP 00000329: POP 0000032a: POP 0000032b: POP 0000032c: POP 0000032d: SWAP1 0000032e: POP 0000032f: SWAP1 00000330: JUMP 00000331: JUMPDEST 00000332: PUSH2 0x0339 00000335: PUSH2 0x0db9 00000338: JUMP 00000339: JUMPDEST 0000033a: PUSH1 0x02 0000033c: SLOAD 0000033d: DUP2 0000033e: SWAP1 0000033f: PUSH1 0x01 00000341: LT 00000342: PUSH2 0x0392 00000345: JUMPI 00000346: PUSH1 0x40 00000348: MLOAD 00000349: PUSH3 0x461bcd 0000034d: PUSH1 0xe5 0000034f: SHL 00000350: DUP2 00000351: MSTORE 00000352: PUSH1 0x20 00000354: PUSH1 0x04 00000356: DUP3 00000357: ADD 00000358: MSTORE 00000359: PUSH1 0x1e 0000035b: PUSH1 0x24 0000035d: DUP3 0000035e: ADD 0000035f: MSTORE 00000360: PUSH32 0x4e656564206174206c656173742074776f207061727469636970616e74730000 00000381: PUSH1 0x44 00000383: DUP3 00000384: ADD 00000385: MSTORE 00000386: PUSH1 0x64 00000388: ADD 00000389: JUMPDEST 0000038a: PUSH1 0x40 0000038c: MLOAD 0000038d: DUP1 0000038e: SWAP2 0000038f: SUB 00000390: SWAP1 00000391: REVERT 00000392: JUMPDEST 00000393: PUSH1 0x40 00000395: MLOAD 00000396: PUSH4 0x70a08231 0000039b: PUSH1 0xe0 0000039d: SHL 0000039e: DUP2 0000039f: MSTORE 000003a0: ADDRESS 000003a1: PUSH1 0x04 000003a3: DUP3 000003a4: ADD 000003a5: MSTORE 000003a6: PUSH0 000003a7: SWAP1 000003a8: PUSH1 0x01 000003aa: PUSH1 0x01 000003ac: PUSH1 0xa0 000003ae: SHL 000003af: SUB 000003b0: DUP4 000003b1: AND 000003b2: SWAP1 000003b3: PUSH4 0x70a08231 000003b8: SWAP1 000003b9: PUSH1 0x24 000003bb: ADD 000003bc: PUSH1 0x20 000003be: PUSH1 0x40 000003c0: MLOAD 000003c1: DUP1 000003c2: DUP4 000003c3: SUB 000003c4: DUP2 000003c5: DUP7 000003c6: GAS 000003c7: STATICCALL 000003c8: ISZERO 000003c9: DUP1 000003ca: ISZERO 000003cb: PUSH2 0x03d6 000003ce: JUMPI 000003cf: RETURNDATASIZE 000003d0: PUSH0 000003d1: DUP1 000003d2: RETURNDATACOPY 000003d3: RETURNDATASIZE 000003d4: PUSH0 000003d5: REVERT 000003d6: JUMPDEST 000003d7: POP 000003d8: POP 000003d9: POP 000003da: POP 000003db: PUSH1 0x40 000003dd: MLOAD 000003de: RETURNDATASIZE 000003df: PUSH1 0x1f 000003e1: NOT 000003e2: PUSH1 0x1f 000003e4: DUP3 000003e5: ADD 000003e6: AND 000003e7: DUP3 000003e8: ADD 000003e9: DUP1 000003ea: PUSH1 0x40 000003ec: MSTORE 000003ed: POP 000003ee: DUP2 000003ef: ADD 000003f0: SWAP1 000003f1: PUSH2 0x03fa 000003f4: SWAP2 000003f5: SWAP1 000003f6: PUSH2 0x11d0 000003f9: JUMP 000003fa: JUMPDEST 000003fb: SWAP1 000003fc: POP 000003fd: PUSH0 000003fe: DUP2 000003ff: GT 00000400: PUSH2 0x044b 00000403: JUMPI 00000404: PUSH1 0x40 00000406: MLOAD 00000407: PUSH3 0x461bcd 0000040b: PUSH1 0xe5 0000040d: SHL 0000040e: DUP2 0000040f: MSTORE 00000410: PUSH1 0x20 00000412: PUSH1 0x04 00000414: DUP3 00000415: ADD 00000416: MSTORE 00000417: PUSH1 0x14 00000419: PUSH1 0x24 0000041b: DUP3 0000041c: ADD 0000041d: MSTORE 0000041e: PUSH32 0x4e6f20746f6b656e7320746f2073687566666c65000000000000000000000000 0000043f: PUSH1 0x44 00000441: DUP3 00000442: ADD 00000443: MSTORE 00000444: PUSH1 0x64 00000446: ADD 00000447: PUSH2 0x0389 0000044a: JUMP 0000044b: JUMPDEST 0000044c: PUSH2 0x0461 0000044f: DUP4 00000450: PUSH2 0x01e7 00000453: DUP4 00000454: PUSH8 0x0de0b6b3a7640000 0000045d: PUSH2 0x11fb 00000460: JUMP 00000461: JUMPDEST 00000462: PUSH0 00000463: DUP1 00000464: JUMPDEST 00000465: PUSH1 0x02 00000467: SLOAD 00000468: DUP2 00000469: LT 0000046a: ISZERO 0000046b: PUSH2 0x0669 0000046e: JUMPI 0000046f: PUSH0 00000470: PUSH2 0x0911 00000473: PUSH2 0x047a 00000476: PUSH2 0x0de5 00000479: JUMP 0000047a: JUMPDEST 0000047b: PUSH2 0x0484 0000047e: SWAP2 0000047f: SWAP1 00000480: PUSH2 0x122c 00000483: JUMP 00000484: JUMPDEST 00000485: PUSH2 0x0490 00000488: SWAP1 00000489: PUSH2 0x0244 0000048c: PUSH2 0x123f 0000048f: JUMP 00000490: JUMPDEST 00000491: SWAP1 00000492: POP 00000493: PUSH0 00000494: PUSH2 0x04a5 00000497: DUP3 00000498: PUSH8 0x0de0b6b3a7640000 000004a1: PUSH2 0x11fb 000004a4: JUMP 000004a5: JUMPDEST 000004a6: SWAP1 000004a7: POP 000004a8: PUSH2 0x04b1 000004ab: DUP8 000004ac: DUP3 000004ad: PUSH2 0x0963 000004b0: JUMP 000004b1: JUMPDEST 000004b2: DUP1 000004b3: DUP6 000004b4: LT 000004b5: PUSH2 0x065f 000004b8: JUMPI 000004b9: PUSH2 0x04c2 000004bc: DUP8 000004bd: DUP3 000004be: PUSH2 0x0963 000004c1: JUMP 000004c2: JUMPDEST 000004c3: PUSH0 000004c4: DUP7 000004c5: PUSH1 0x01 000004c7: PUSH1 0x01 000004c9: PUSH1 0xa0 000004cb: SHL 000004cc: SUB 000004cd: AND 000004ce: PUSH4 0xa9059cbb 000004d3: PUSH1 0x02 000004d5: DUP7 000004d6: DUP2 000004d7: SLOAD 000004d8: DUP2 000004d9: LT 000004da: PUSH2 0x04e5 000004dd: JUMPI 000004de: PUSH2 0x04e5 000004e1: PUSH2 0x1252 000004e4: JUMP 000004e5: JUMPDEST 000004e6: PUSH0 000004e7: SWAP2 000004e8: DUP3 000004e9: MSTORE 000004ea: PUSH1 0x20 000004ec: SWAP1 000004ed: SWAP2 000004ee: KECCAK256 000004ef: ADD 000004f0: SLOAD 000004f1: PUSH1 0x40 000004f3: MLOAD 000004f4: PUSH1 0xe0 000004f6: DUP4 000004f7: SWAP1 000004f8: SHL 000004f9: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000051a: AND 0000051b: DUP2 0000051c: MSTORE 0000051d: PUSH1 0x01 0000051f: PUSH1 0x01 00000521: PUSH1 0xa0 00000523: SHL 00000524: SUB 00000525: SWAP1 00000526: SWAP2 00000527: AND 00000528: PUSH1 0x04 0000052a: DUP3 0000052b: ADD 0000052c: MSTORE 0000052d: PUSH1 0x24 0000052f: DUP2 00000530: ADD 00000531: DUP6 00000532: SWAP1 00000533: MSTORE 00000534: PUSH1 0x44 00000536: ADD 00000537: PUSH1 0x20 00000539: PUSH1 0x40 0000053b: MLOAD 0000053c: DUP1 0000053d: DUP4 0000053e: SUB 0000053f: DUP2 00000540: PUSH0 00000541: DUP8 00000542: GAS 00000543: CALL 00000544: ISZERO 00000545: DUP1 00000546: ISZERO 00000547: PUSH2 0x0552 0000054a: JUMPI 0000054b: RETURNDATASIZE 0000054c: PUSH0 0000054d: DUP1 0000054e: RETURNDATACOPY 0000054f: RETURNDATASIZE 00000550: PUSH0 00000551: REVERT 00000552: JUMPDEST 00000553: POP 00000554: POP 00000555: POP 00000556: POP 00000557: PUSH1 0x40 00000559: MLOAD 0000055a: RETURNDATASIZE 0000055b: PUSH1 0x1f 0000055d: NOT 0000055e: PUSH1 0x1f 00000560: DUP3 00000561: ADD 00000562: AND 00000563: DUP3 00000564: ADD 00000565: DUP1 00000566: PUSH1 0x40 00000568: MSTORE 00000569: POP 0000056a: DUP2 0000056b: ADD 0000056c: SWAP1 0000056d: PUSH2 0x0576 00000570: SWAP2 00000571: SWAP1 00000572: PUSH2 0x1266 00000575: JUMP 00000576: JUMPDEST 00000577: SWAP1 00000578: POP 00000579: DUP1 0000057a: PUSH2 0x05c5 0000057d: JUMPI 0000057e: PUSH1 0x40 00000580: MLOAD 00000581: PUSH3 0x461bcd 00000585: PUSH1 0xe5 00000587: SHL 00000588: DUP2 00000589: MSTORE 0000058a: PUSH1 0x20 0000058c: PUSH1 0x04 0000058e: DUP3 0000058f: ADD 00000590: MSTORE 00000591: PUSH1 0x15 00000593: PUSH1 0x24 00000595: DUP3 00000596: ADD 00000597: MSTORE 00000598: PUSH32 0x546f6b656e207472616e73666572206661696c65640000000000000000000000 000005b9: PUSH1 0x44 000005bb: DUP3 000005bc: ADD 000005bd: MSTORE 000005be: PUSH1 0x64 000005c0: ADD 000005c1: PUSH2 0x0389 000005c4: JUMP 000005c5: JUMPDEST 000005c6: PUSH1 0x02 000005c8: DUP5 000005c9: DUP2 000005ca: SLOAD 000005cb: DUP2 000005cc: LT 000005cd: PUSH2 0x05d8 000005d0: JUMPI 000005d1: PUSH2 0x05d8 000005d4: PUSH2 0x1252 000005d7: JUMP 000005d8: JUMPDEST 000005d9: PUSH0 000005da: SWAP2 000005db: DUP3 000005dc: MSTORE 000005dd: PUSH1 0x20 000005df: SWAP1 000005e0: SWAP2 000005e1: KECCAK256 000005e2: ADD 000005e3: SLOAD 000005e4: PUSH1 0x40 000005e6: MLOAD 000005e7: PUSH4 0x2270e6b5 000005ec: PUSH1 0xe2 000005ee: SHL 000005ef: DUP2 000005f0: MSTORE 000005f1: PUSH1 0x04 000005f3: DUP2 000005f4: ADD 000005f5: DUP5 000005f6: SWAP1 000005f7: MSTORE 000005f8: PUSH1 0x01 000005fa: PUSH1 0x01 000005fc: PUSH1 0xa0 000005fe: SHL 000005ff: SUB 00000600: SWAP1 00000601: SWAP2 00000602: AND 00000603: SWAP1 00000604: PUSH4 0x89c39ad4 00000609: SWAP1 0000060a: PUSH1 0x24 0000060c: ADD 0000060d: PUSH0 0000060e: PUSH1 0x40 00000610: MLOAD 00000611: DUP1 00000612: DUP4 00000613: SUB 00000614: DUP2 00000615: PUSH0 00000616: DUP8 00000617: DUP1 00000618: EXTCODESIZE 00000619: ISZERO 0000061a: DUP1 0000061b: ISZERO 0000061c: PUSH2 0x0623 0000061f: JUMPI 00000620: PUSH0 00000621: DUP1 00000622: REVERT 00000623: JUMPDEST 00000624: POP 00000625: GAS 00000626: CALL 00000627: ISZERO 00000628: DUP1 00000629: ISZERO 0000062a: PUSH2 0x0635 0000062d: JUMPI 0000062e: RETURNDATASIZE 0000062f: PUSH0 00000630: DUP1 00000631: RETURNDATACOPY 00000632: RETURNDATASIZE 00000633: PUSH0 00000634: REVERT 00000635: JUMPDEST 00000636: POP 00000637: POP 00000638: POP 00000639: POP 0000063a: DUP2 0000063b: DUP7 0000063c: PUSH2 0x0645 0000063f: SWAP2 00000640: SWAP1 00000641: PUSH2 0x1285 00000644: JUMP 00000645: JUMPDEST 00000646: SWAP6 00000647: POP 00000648: PUSH2 0x0651 0000064b: DUP3 0000064c: DUP7 0000064d: PUSH2 0x123f 00000650: JUMP 00000651: JUMPDEST 00000652: SWAP5 00000653: POP 00000654: PUSH2 0x065d 00000657: DUP9 00000658: DUP4 00000659: PUSH2 0x0963 0000065c: JUMP 0000065d: JUMPDEST 0000065e: POP 0000065f: JUMPDEST 00000660: POP 00000661: POP 00000662: PUSH1 0x01 00000664: ADD 00000665: PUSH2 0x0464 00000668: JUMP 00000669: JUMPDEST 0000066a: POP 0000066b: POP 0000066c: POP 0000066d: POP 0000066e: POP 0000066f: JUMP 00000670: JUMPDEST 00000671: PUSH2 0x0678 00000674: PUSH2 0x0db9 00000677: JUMP 00000678: JUMPDEST 00000679: PUSH1 0x01 0000067b: DUP1 0000067c: SLOAD 0000067d: PUSH1 0x01 0000067f: PUSH1 0x01 00000681: PUSH1 0xa0 00000683: SHL 00000684: SUB 00000685: NOT 00000686: AND 00000687: PUSH1 0x01 00000689: PUSH1 0x01 0000068b: PUSH1 0xa0 0000068d: SHL 0000068e: SUB 0000068f: SWAP3 00000690: SWAP1 00000691: SWAP3 00000692: AND 00000693: SWAP2 00000694: SWAP1 00000695: SWAP2 00000696: OR 00000697: SWAP1 00000698: SSTORE 00000699: JUMP 0000069a: JUMPDEST 0000069b: PUSH2 0x06a2 0000069e: PUSH2 0x0db9 000006a1: JUMP 000006a2: JUMPDEST 000006a3: DUP1 000006a4: SELFBALANCE 000006a5: LT 000006a6: ISZERO 000006a7: PUSH2 0x06f2 000006aa: JUMPI 000006ab: PUSH1 0x40 000006ad: MLOAD 000006ae: PUSH3 0x461bcd 000006b2: PUSH1 0xe5 000006b4: SHL 000006b5: DUP2 000006b6: MSTORE 000006b7: PUSH1 0x20 000006b9: PUSH1 0x04 000006bb: DUP3 000006bc: ADD 000006bd: MSTORE 000006be: PUSH1 0x18 000006c0: PUSH1 0x24 000006c2: DUP3 000006c3: ADD 000006c4: MSTORE 000006c5: PUSH32 0x496e73756666696369656e74204554482062616c616e63650000000000000000 000006e6: PUSH1 0x44 000006e8: DUP3 000006e9: ADD 000006ea: MSTORE 000006eb: PUSH1 0x64 000006ed: ADD 000006ee: PUSH2 0x0389 000006f1: JUMP 000006f2: JUMPDEST 000006f3: PUSH1 0x40 000006f5: MLOAD 000006f6: PUSH1 0x01 000006f8: PUSH1 0x01 000006fa: PUSH1 0xa0 000006fc: SHL 000006fd: SUB 000006fe: DUP4 000006ff: AND 00000700: SWAP1 00000701: DUP3 00000702: ISZERO 00000703: PUSH2 0x08fc 00000706: MUL 00000707: SWAP1 00000708: DUP4 00000709: SWAP1 0000070a: PUSH0 0000070b: DUP2 0000070c: DUP2 0000070d: DUP2 0000070e: DUP6 0000070f: DUP9 00000710: DUP9 00000711: CALL 00000712: SWAP4 00000713: POP 00000714: POP 00000715: POP 00000716: POP 00000717: ISZERO 00000718: DUP1 00000719: ISZERO 0000071a: PUSH2 0x0725 0000071d: JUMPI 0000071e: RETURNDATASIZE 0000071f: PUSH0 00000720: DUP1 00000721: RETURNDATACOPY 00000722: RETURNDATASIZE 00000723: PUSH0 00000724: REVERT 00000725: JUMPDEST 00000726: POP 00000727: POP 00000728: POP 00000729: JUMP 0000072a: JUMPDEST 0000072b: PUSH2 0x0732 0000072e: PUSH2 0x0db9 00000731: JUMP 00000732: JUMPDEST 00000733: PUSH0 00000734: DUP5 00000735: DUP5 00000736: DUP5 00000737: DUP5 00000738: PUSH1 0x40 0000073a: MLOAD 0000073b: PUSH2 0x0743 0000073e: SWAP1 0000073f: PUSH2 0x0ec8 00000742: JUMP 00000743: JUMPDEST 00000744: PUSH2 0x0750 00000747: SWAP5 00000748: SWAP4 00000749: SWAP3 0000074a: SWAP2 0000074b: SWAP1 0000074c: PUSH2 0x1298 0000074f: JUMP 00000750: JUMPDEST 00000751: PUSH1 0x40 00000753: MLOAD 00000754: DUP1 00000755: SWAP2 00000756: SUB 00000757: SWAP1 00000758: PUSH0 00000759: CREATE 0000075a: DUP1 0000075b: ISZERO 0000075c: DUP1 0000075d: ISZERO 0000075e: PUSH2 0x0769 00000761: JUMPI 00000762: RETURNDATASIZE 00000763: PUSH0 00000764: DUP1 00000765: RETURNDATACOPY 00000766: RETURNDATASIZE 00000767: PUSH0 00000768: REVERT 00000769: JUMPDEST 0000076a: POP 0000076b: PUSH1 0x02 0000076d: DUP1 0000076e: SLOAD 0000076f: PUSH1 0x01 00000771: DUP2 00000772: ADD 00000773: DUP3 00000774: SSTORE 00000775: PUSH0 00000776: SWAP2 00000777: SWAP1 00000778: SWAP2 00000779: MSTORE 0000077a: PUSH32 0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace 0000079b: ADD 0000079c: DUP1 0000079d: SLOAD 0000079e: PUSH1 0x01 000007a0: PUSH1 0x01 000007a2: PUSH1 0xa0 000007a4: SHL 000007a5: SUB 000007a6: NOT 000007a7: AND 000007a8: PUSH1 0x01 000007aa: PUSH1 0x01 000007ac: PUSH1 0xa0 000007ae: SHL 000007af: SUB 000007b0: SWAP3 000007b1: SWAP1 000007b2: SWAP3 000007b3: AND 000007b4: SWAP2 000007b5: SWAP1 000007b6: SWAP2 000007b7: OR 000007b8: SWAP1 000007b9: SSTORE 000007ba: POP 000007bb: POP 000007bc: POP 000007bd: POP 000007be: POP 000007bf: JUMP 000007c0: JUMPDEST 000007c1: PUSH2 0x07c8 000007c4: PUSH2 0x0db9 000007c7: JUMP 000007c8: JUMPDEST 000007c9: PUSH1 0x04 000007cb: PUSH2 0x07d4 000007ce: DUP4 000007cf: DUP3 000007d0: PUSH2 0x1324 000007d3: JUMP 000007d4: JUMPDEST 000007d5: POP 000007d6: PUSH1 0x05 000007d8: PUSH2 0x0725 000007db: DUP3 000007dc: DUP3 000007dd: PUSH2 0x1324 000007e0: JUMP 000007e1: JUMPDEST 000007e2: PUSH2 0x07e9 000007e5: PUSH2 0x0db9 000007e8: JUMP 000007e9: JUMPDEST 000007ea: PUSH1 0x40 000007ec: MLOAD 000007ed: PUSH4 0x70a08231 000007f2: PUSH1 0xe0 000007f4: SHL 000007f5: DUP2 000007f6: MSTORE 000007f7: ADDRESS 000007f8: PUSH1 0x04 000007fa: DUP3 000007fb: ADD 000007fc: MSTORE 000007fd: DUP4 000007fe: SWAP1 000007ff: DUP3 00000800: SWAP1 00000801: PUSH1 0x01 00000803: PUSH1 0x01 00000805: PUSH1 0xa0 00000807: SHL 00000808: SUB 00000809: DUP4 0000080a: AND 0000080b: SWAP1 0000080c: PUSH4 0x70a08231 00000811: SWAP1 00000812: PUSH1 0x24 00000814: ADD 00000815: PUSH1 0x20 00000817: PUSH1 0x40 00000819: MLOAD 0000081a: DUP1 0000081b: DUP4 0000081c: SUB 0000081d: DUP2 0000081e: DUP7 0000081f: GAS 00000820: STATICCALL 00000821: ISZERO 00000822: DUP1 00000823: ISZERO 00000824: PUSH2 0x082f 00000827: JUMPI 00000828: RETURNDATASIZE 00000829: PUSH0 0000082a: DUP1 0000082b: RETURNDATACOPY 0000082c: RETURNDATASIZE 0000082d: PUSH0 0000082e: REVERT 0000082f: JUMPDEST 00000830: POP 00000831: POP 00000832: POP 00000833: POP 00000834: PUSH1 0x40 00000836: MLOAD 00000837: RETURNDATASIZE 00000838: PUSH1 0x1f 0000083a: NOT 0000083b: PUSH1 0x1f 0000083d: DUP3 0000083e: ADD 0000083f: AND 00000840: DUP3 00000841: ADD 00000842: DUP1 00000843: PUSH1 0x40 00000845: MSTORE 00000846: POP 00000847: DUP2 00000848: ADD 00000849: SWAP1 0000084a: PUSH2 0x0853 0000084d: SWAP2 0000084e: SWAP1 0000084f: PUSH2 0x11d0 00000852: JUMP 00000853: JUMPDEST 00000854: LT 00000855: ISZERO 00000856: PUSH2 0x08a1 00000859: JUMPI 0000085a: PUSH1 0x40 0000085c: MLOAD 0000085d: PUSH3 0x461bcd 00000861: PUSH1 0xe5 00000863: SHL 00000864: DUP2 00000865: MSTORE 00000866: PUSH1 0x20 00000868: PUSH1 0x04 0000086a: DUP3 0000086b: ADD 0000086c: MSTORE 0000086d: PUSH1 0x1a 0000086f: PUSH1 0x24 00000871: DUP3 00000872: ADD 00000873: MSTORE 00000874: PUSH32 0x496e73756666696369656e7420746f6b656e2062616c616e6365000000000000 00000895: PUSH1 0x44 00000897: DUP3 00000898: ADD 00000899: MSTORE 0000089a: PUSH1 0x64 0000089c: ADD 0000089d: PUSH2 0x0389 000008a0: JUMP 000008a1: JUMPDEST 000008a2: PUSH1 0x40 000008a4: MLOAD 000008a5: PUSH4 0xa9059cbb 000008aa: PUSH1 0xe0 000008ac: SHL 000008ad: DUP2 000008ae: MSTORE 000008af: PUSH1 0x01 000008b1: PUSH1 0x01 000008b3: PUSH1 0xa0 000008b5: SHL 000008b6: SUB 000008b7: DUP5 000008b8: DUP2 000008b9: AND 000008ba: PUSH1 0x04 000008bc: DUP4 000008bd: ADD 000008be: MSTORE 000008bf: PUSH1 0x24 000008c1: DUP3 000008c2: ADD 000008c3: DUP5 000008c4: SWAP1 000008c5: MSTORE 000008c6: PUSH0 000008c7: SWAP2 000008c8: SWAP1 000008c9: DUP4 000008ca: AND 000008cb: SWAP1 000008cc: PUSH4 0xa9059cbb 000008d1: SWAP1 000008d2: PUSH1 0x44 000008d4: ADD 000008d5: PUSH1 0x20 000008d7: PUSH1 0x40 000008d9: MLOAD 000008da: DUP1 000008db: DUP4 000008dc: SUB 000008dd: DUP2 000008de: PUSH0 000008df: DUP8 000008e0: GAS 000008e1: CALL 000008e2: ISZERO 000008e3: DUP1 000008e4: ISZERO 000008e5: PUSH2 0x08f0 000008e8: JUMPI 000008e9: RETURNDATASIZE 000008ea: PUSH0 000008eb: DUP1 000008ec: RETURNDATACOPY 000008ed: RETURNDATASIZE 000008ee: PUSH0 000008ef: REVERT 000008f0: JUMPDEST 000008f1: POP 000008f2: POP 000008f3: POP 000008f4: POP 000008f5: PUSH1 0x40 000008f7: MLOAD 000008f8: RETURNDATASIZE 000008f9: PUSH1 0x1f 000008fb: NOT 000008fc: PUSH1 0x1f 000008fe: DUP3 000008ff: ADD 00000900: AND 00000901: DUP3 00000902: ADD 00000903: DUP1 00000904: PUSH1 0x40 00000906: MSTORE 00000907: POP 00000908: DUP2 00000909: ADD 0000090a: SWAP1 0000090b: PUSH2 0x0914 0000090e: SWAP2 0000090f: SWAP1 00000910: PUSH2 0x1266 00000913: JUMP 00000914: JUMPDEST 00000915: SWAP1 00000916: POP 00000917: DUP1 00000918: PUSH2 0x0669 0000091b: JUMPI 0000091c: PUSH1 0x40 0000091e: MLOAD 0000091f: PUSH3 0x461bcd 00000923: PUSH1 0xe5 00000925: SHL 00000926: DUP2 00000927: MSTORE 00000928: PUSH1 0x20 0000092a: PUSH1 0x04 0000092c: DUP3 0000092d: ADD 0000092e: MSTORE 0000092f: PUSH1 0x15 00000931: PUSH1 0x24 00000933: DUP3 00000934: ADD 00000935: MSTORE 00000936: PUSH32 0x546f6b656e207472616e73666572206661696c65640000000000000000000000 00000957: PUSH1 0x44 00000959: DUP3 0000095a: ADD 0000095b: MSTORE 0000095c: PUSH1 0x64 0000095e: ADD 0000095f: PUSH2 0x0389 00000962: JUMP 00000963: JUMPDEST 00000964: PUSH2 0x096b 00000967: PUSH2 0x0db9 0000096a: JUMP 0000096b: JUMPDEST 0000096c: PUSH1 0x02 0000096e: SLOAD 0000096f: PUSH2 0x09cc 00000972: JUMPI 00000973: PUSH1 0x40 00000975: MLOAD 00000976: PUSH3 0x461bcd 0000097a: PUSH1 0xe5 0000097c: SHL 0000097d: DUP2 0000097e: MSTORE 0000097f: PUSH1 0x20 00000981: PUSH1 0x04 00000983: DUP3 00000984: ADD 00000985: MSTORE 00000986: PUSH1 0x29 00000988: PUSH1 0x24 0000098a: DUP3 0000098b: ADD 0000098c: MSTORE 0000098d: PUSH32 0x4e656564206174206c65617374206f6e65207061727469636970616e7420746f 000009ae: PUSH1 0x44 000009b0: DUP3 000009b1: ADD 000009b2: MSTORE 000009b3: PUSH9 0x2073696d756c617465 000009bd: PUSH1 0xb8 000009bf: SHL 000009c0: PUSH1 0x64 000009c2: DUP3 000009c3: ADD 000009c4: MSTORE 000009c5: PUSH1 0x84 000009c7: ADD 000009c8: PUSH2 0x0389 000009cb: JUMP 000009cc: JUMPDEST 000009cd: PUSH1 0x02 000009cf: SLOAD 000009d0: PUSH0 000009d1: SWAP1 000009d2: PUSH2 0x09d9 000009d5: PUSH2 0x0de5 000009d8: JUMP 000009d9: JUMPDEST 000009da: PUSH2 0x09e3 000009dd: SWAP2 000009de: SWAP1 000009df: PUSH2 0x122c 000009e2: JUMP 000009e3: JUMPDEST 000009e4: SWAP1 000009e5: POP 000009e6: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000a07: ADDRESS 00000a08: PUSH1 0x02 00000a0a: DUP4 00000a0b: DUP2 00000a0c: SLOAD 00000a0d: DUP2 00000a0e: LT 00000a0f: PUSH2 0x0a1a 00000a12: JUMPI 00000a13: PUSH2 0x0a1a 00000a16: PUSH2 0x1252 00000a19: JUMP 00000a1a: JUMPDEST 00000a1b: PUSH0 00000a1c: SWAP2 00000a1d: DUP3 00000a1e: MSTORE 00000a1f: PUSH1 0x20 00000a21: SWAP1 00000a22: SWAP2 00000a23: KECCAK256 00000a24: ADD 00000a25: SLOAD 00000a26: PUSH1 0x01 00000a28: PUSH1 0x01 00000a2a: PUSH1 0xa0 00000a2c: SHL 00000a2d: SUB 00000a2e: AND 00000a2f: PUSH2 0x0a40 00000a32: PUSH8 0x0de0b6b3a7640000 00000a3b: DUP7 00000a3c: PUSH2 0x13e4 00000a3f: JUMP 00000a40: JUMPDEST 00000a41: PUSH1 0x40 00000a43: DUP1 00000a44: MLOAD 00000a45: PUSH1 0x01 00000a47: PUSH1 0x01 00000a49: PUSH1 0xa0 00000a4b: SHL 00000a4c: SUB 00000a4d: SWAP5 00000a4e: DUP6 00000a4f: AND 00000a50: DUP2 00000a51: MSTORE 00000a52: SWAP4 00000a53: SWAP1 00000a54: SWAP3 00000a55: AND 00000a56: PUSH1 0x20 00000a58: DUP5 00000a59: ADD 00000a5a: MSTORE 00000a5b: SWAP1 00000a5c: DUP3 00000a5d: ADD 00000a5e: MSTORE 00000a5f: PUSH1 0x60 00000a61: ADD 00000a62: PUSH1 0x40 00000a64: MLOAD 00000a65: DUP1 00000a66: SWAP2 00000a67: SUB 00000a68: SWAP1 00000a69: LOG1 00000a6a: PUSH1 0x02 00000a6c: DUP2 00000a6d: DUP2 00000a6e: SLOAD 00000a6f: DUP2 00000a70: LT 00000a71: PUSH2 0x0a7c 00000a74: JUMPI 00000a75: PUSH2 0x0a7c 00000a78: PUSH2 0x1252 00000a7b: JUMP 00000a7c: JUMPDEST 00000a7d: PUSH0 00000a7e: SWAP2 00000a7f: DUP3 00000a80: MSTORE 00000a81: PUSH1 0x20 00000a83: SWAP1 00000a84: SWAP2 00000a85: KECCAK256 00000a86: ADD 00000a87: SLOAD 00000a88: PUSH1 0x01 00000a8a: PUSH1 0x01 00000a8c: PUSH1 0xa0 00000a8e: SHL 00000a8f: SUB 00000a90: SWAP1 00000a91: DUP2 00000a92: AND 00000a93: SWAP1 00000a94: ADDRESS 00000a95: SWAP1 00000a96: DUP6 00000a97: AND 00000a98: PUSH32 0x23ba3c795283d9e649ab6ed4f30e023fbbb705d323e2a68e645e30a5c90e3c18 00000ab9: PUSH2 0x0aca 00000abc: PUSH8 0x0de0b6b3a7640000 00000ac5: DUP8 00000ac6: PUSH2 0x13e4 00000ac9: JUMP 00000aca: JUMPDEST 00000acb: PUSH1 0x40 00000acd: MLOAD 00000ace: SWAP1 00000acf: DUP2 00000ad0: MSTORE 00000ad1: PUSH1 0x20 00000ad3: ADD 00000ad4: PUSH1 0x40 00000ad6: MLOAD 00000ad7: DUP1 00000ad8: SWAP2 00000ad9: SUB 00000ada: SWAP1 00000adb: LOG4 00000adc: POP 00000add: POP 00000ade: POP 00000adf: JUMP 00000ae0: JUMPDEST 00000ae1: PUSH2 0x0ae8 00000ae4: PUSH2 0x0db9 00000ae7: JUMP 00000ae8: JUMPDEST 00000ae9: PUSH2 0x0af1 00000aec: PUSH0 00000aed: PUSH2 0x0e3f 00000af0: JUMP 00000af1: JUMPDEST 00000af2: JUMP 00000af3: JUMPDEST 00000af4: PUSH1 0x60 00000af6: PUSH1 0x05 00000af8: DUP1 00000af9: SLOAD 00000afa: PUSH2 0x02b0 00000afd: SWAP1 00000afe: PUSH2 0x1198 00000b01: JUMP 00000b02: JUMPDEST 00000b03: PUSH2 0x0b0a 00000b06: PUSH2 0x0db9 00000b09: JUMP 00000b0a: JUMPDEST 00000b0b: PUSH1 0x40 00000b0d: MLOAD 00000b0e: PUSH4 0x70a08231 00000b13: PUSH1 0xe0 00000b15: SHL 00000b16: DUP2 00000b17: MSTORE 00000b18: ADDRESS 00000b19: PUSH1 0x04 00000b1b: DUP3 00000b1c: ADD 00000b1d: MSTORE 00000b1e: DUP5 00000b1f: SWAP1 00000b20: DUP4 00000b21: SWAP1 00000b22: PUSH1 0x01 00000b24: PUSH1 0x01 00000b26: PUSH1 0xa0 00000b28: SHL 00000b29: SUB 00000b2a: DUP4 00000b2b: AND 00000b2c: SWAP1 00000b2d: PUSH4 0x70a08231 00000b32: SWAP1 00000b33: PUSH1 0x24 00000b35: ADD 00000b36: PUSH1 0x20 00000b38: PUSH1 0x40 00000b3a: MLOAD 00000b3b: DUP1 00000b3c: DUP4 00000b3d: SUB 00000b3e: DUP2 00000b3f: DUP7 00000b40: GAS 00000b41: STATICCALL 00000b42: ISZERO 00000b43: DUP1 00000b44: ISZERO 00000b45: PUSH2 0x0b50 00000b48: JUMPI 00000b49: RETURNDATASIZE 00000b4a: PUSH0 00000b4b: DUP1 00000b4c: RETURNDATACOPY 00000b4d: RETURNDATASIZE 00000b4e: PUSH0 00000b4f: REVERT 00000b50: JUMPDEST 00000b51: POP 00000b52: POP 00000b53: POP 00000b54: POP 00000b55: PUSH1 0x40 00000b57: MLOAD 00000b58: RETURNDATASIZE 00000b59: PUSH1 0x1f 00000b5b: NOT 00000b5c: PUSH1 0x1f 00000b5e: DUP3 00000b5f: ADD 00000b60: AND 00000b61: DUP3 00000b62: ADD 00000b63: DUP1 00000b64: PUSH1 0x40 00000b66: MSTORE 00000b67: POP 00000b68: DUP2 00000b69: ADD 00000b6a: SWAP1 00000b6b: PUSH2 0x0b74 00000b6e: SWAP2 00000b6f: SWAP1 00000b70: PUSH2 0x11d0 00000b73: JUMP 00000b74: JUMPDEST 00000b75: LT 00000b76: ISZERO 00000b77: PUSH2 0x0bce 00000b7a: JUMPI 00000b7b: PUSH1 0x40 00000b7d: MLOAD 00000b7e: PUSH3 0x461bcd 00000b82: PUSH1 0xe5 00000b84: SHL 00000b85: DUP2 00000b86: MSTORE 00000b87: PUSH1 0x20 00000b89: PUSH1 0x04 00000b8b: DUP3 00000b8c: ADD 00000b8d: MSTORE 00000b8e: PUSH1 0x23 00000b90: PUSH1 0x24 00000b92: DUP3 00000b93: ADD 00000b94: MSTORE 00000b95: PUSH32 0x496e73756666696369656e7420746f6b656e2062616c616e636520666f722073 00000bb6: PUSH1 0x44 00000bb8: DUP3 00000bb9: ADD 00000bba: MSTORE 00000bbb: PUSH3 0x077617 00000bbf: PUSH1 0xec 00000bc1: SHL 00000bc2: PUSH1 0x64 00000bc4: DUP3 00000bc5: ADD 00000bc6: MSTORE 00000bc7: PUSH1 0x84 00000bc9: ADD 00000bca: PUSH2 0x0389 00000bcd: JUMP 00000bce: JUMPDEST 00000bcf: PUSH1 0x40 00000bd1: DUP1 00000bd2: MLOAD 00000bd3: PUSH1 0x02 00000bd5: DUP1 00000bd6: DUP3 00000bd7: MSTORE 00000bd8: PUSH1 0x60 00000bda: DUP3 00000bdb: ADD 00000bdc: DUP4 00000bdd: MSTORE 00000bde: PUSH0 00000bdf: SWAP3 00000be0: PUSH1 0x20 00000be2: DUP4 00000be3: ADD 00000be4: SWAP1 00000be5: DUP1 00000be6: CALLDATASIZE 00000be7: DUP4 00000be8: CALLDATACOPY 00000be9: ADD 00000bea: SWAP1 00000beb: POP 00000bec: POP 00000bed: SWAP1 00000bee: POP 00000bef: DUP6 00000bf0: DUP2 00000bf1: PUSH0 00000bf2: DUP2 00000bf3: MLOAD 00000bf4: DUP2 00000bf5: LT 00000bf6: PUSH2 0x0c01 00000bf9: JUMPI 00000bfa: PUSH2 0x0c01 00000bfd: PUSH2 0x1252 00000c00: JUMP 00000c01: JUMPDEST 00000c02: PUSH1 0x20 00000c04: MUL 00000c05: PUSH1 0x20 00000c07: ADD 00000c08: ADD 00000c09: SWAP1 00000c0a: PUSH1 0x01 00000c0c: PUSH1 0x01 00000c0e: PUSH1 0xa0 00000c10: SHL 00000c11: SUB 00000c12: AND 00000c13: SWAP1 00000c14: DUP2 00000c15: PUSH1 0x01 00000c17: PUSH1 0x01 00000c19: PUSH1 0xa0 00000c1b: SHL 00000c1c: SUB 00000c1d: AND 00000c1e: DUP2 00000c1f: MSTORE 00000c20: POP 00000c21: POP 00000c22: DUP5 00000c23: DUP2 00000c24: PUSH1 0x01 00000c26: DUP2 00000c27: MLOAD 00000c28: DUP2 00000c29: LT 00000c2a: PUSH2 0x0c35 00000c2d: JUMPI 00000c2e: PUSH2 0x0c35 00000c31: PUSH2 0x1252 00000c34: JUMP 00000c35: JUMPDEST 00000c36: PUSH1 0x01 00000c38: PUSH1 0x01 00000c3a: PUSH1 0xa0 00000c3c: SHL 00000c3d: SUB 00000c3e: SWAP3 00000c3f: DUP4 00000c40: AND 00000c41: PUSH1 0x20 00000c43: SWAP2 00000c44: DUP3 00000c45: MUL 00000c46: SWAP3 00000c47: SWAP1 00000c48: SWAP3 00000c49: ADD 00000c4a: ADD 00000c4b: MSTORE 00000c4c: PUSH1 0x01 00000c4e: SLOAD 00000c4f: PUSH1 0x40 00000c51: MLOAD 00000c52: PUSH4 0x095ea7b3 00000c57: PUSH1 0xe0 00000c59: SHL 00000c5a: DUP2 00000c5b: MSTORE 00000c5c: SWAP1 00000c5d: DUP3 00000c5e: AND 00000c5f: PUSH1 0x04 00000c61: DUP3 00000c62: ADD 00000c63: MSTORE 00000c64: PUSH1 0x24 00000c66: DUP2 00000c67: ADD 00000c68: DUP7 00000c69: SWAP1 00000c6a: MSTORE 00000c6b: SWAP1 00000c6c: DUP4 00000c6d: AND 00000c6e: SWAP1 00000c6f: PUSH4 0x095ea7b3 00000c74: SWAP1 00000c75: PUSH1 0x44 00000c77: ADD 00000c78: PUSH1 0x20 00000c7a: PUSH1 0x40 00000c7c: MLOAD 00000c7d: DUP1 00000c7e: DUP4 00000c7f: SUB 00000c80: DUP2 00000c81: PUSH0 00000c82: DUP8 00000c83: GAS 00000c84: CALL 00000c85: ISZERO 00000c86: DUP1 00000c87: ISZERO 00000c88: PUSH2 0x0c93 00000c8b: JUMPI 00000c8c: RETURNDATASIZE 00000c8d: PUSH0 00000c8e: DUP1 00000c8f: RETURNDATACOPY 00000c90: RETURNDATASIZE 00000c91: PUSH0 00000c92: REVERT 00000c93: JUMPDEST 00000c94: POP 00000c95: POP 00000c96: POP 00000c97: POP 00000c98: PUSH1 0x40 00000c9a: MLOAD 00000c9b: RETURNDATASIZE 00000c9c: PUSH1 0x1f 00000c9e: NOT 00000c9f: PUSH1 0x1f 00000ca1: DUP3 00000ca2: ADD 00000ca3: AND 00000ca4: DUP3 00000ca5: ADD 00000ca6: DUP1 00000ca7: PUSH1 0x40 00000ca9: MSTORE 00000caa: POP 00000cab: DUP2 00000cac: ADD 00000cad: SWAP1 00000cae: PUSH2 0x0cb7 00000cb1: SWAP2 00000cb2: SWAP1 00000cb3: PUSH2 0x1266 00000cb6: JUMP 00000cb7: JUMPDEST 00000cb8: POP 00000cb9: PUSH1 0x01 00000cbb: SLOAD 00000cbc: PUSH1 0x01 00000cbe: PUSH1 0x01 00000cc0: PUSH1 0xa0 00000cc2: SHL 00000cc3: SUB 00000cc4: AND 00000cc5: PUSH4 0x38ed1739 00000cca: DUP6 00000ccb: PUSH0 00000ccc: DUP5 00000ccd: DUP8 00000cce: PUSH2 0x0cd8 00000cd1: TIMESTAMP 00000cd2: PUSH1 0xc8 00000cd4: PUSH2 0x123f 00000cd7: JUMP 00000cd8: JUMPDEST 00000cd9: PUSH1 0x40 00000cdb: MLOAD 00000cdc: DUP7 00000cdd: PUSH4 0xffffffff 00000ce2: AND 00000ce3: PUSH1 0xe0 00000ce5: SHL 00000ce6: DUP2 00000ce7: MSTORE 00000ce8: PUSH1 0x04 00000cea: ADD 00000ceb: PUSH2 0x0cf8 00000cee: SWAP6 00000cef: SWAP5 00000cf0: SWAP4 00000cf1: SWAP3 00000cf2: SWAP2 00000cf3: SWAP1 00000cf4: PUSH2 0x13f7 00000cf7: JUMP 00000cf8: JUMPDEST 00000cf9: PUSH0 00000cfa: PUSH1 0x40 00000cfc: MLOAD 00000cfd: DUP1 00000cfe: DUP4 00000cff: SUB 00000d00: DUP2 00000d01: PUSH0 00000d02: DUP8 00000d03: GAS 00000d04: CALL 00000d05: ISZERO 00000d06: DUP1 00000d07: ISZERO 00000d08: PUSH2 0x0d13 00000d0b: JUMPI 00000d0c: RETURNDATASIZE 00000d0d: PUSH0 00000d0e: DUP1 00000d0f: RETURNDATACOPY 00000d10: RETURNDATASIZE 00000d11: PUSH0 00000d12: REVERT 00000d13: JUMPDEST 00000d14: POP 00000d15: POP 00000d16: POP 00000d17: POP 00000d18: PUSH1 0x40 00000d1a: MLOAD 00000d1b: RETURNDATASIZE 00000d1c: PUSH0 00000d1d: DUP3 00000d1e: RETURNDATACOPY 00000d1f: PUSH1 0x1f 00000d21: RETURNDATASIZE 00000d22: SWAP1 00000d23: DUP2 00000d24: ADD 00000d25: PUSH1 0x1f 00000d27: NOT 00000d28: AND 00000d29: DUP3 00000d2a: ADD 00000d2b: PUSH1 0x40 00000d2d: MSTORE 00000d2e: PUSH2 0x0d3a 00000d31: SWAP2 00000d32: SWAP1 00000d33: DUP2 00000d34: ADD 00000d35: SWAP1 00000d36: PUSH2 0x1468 00000d39: JUMP 00000d3a: JUMPDEST 00000d3b: POP 00000d3c: POP 00000d3d: POP 00000d3e: POP 00000d3f: POP 00000d40: POP 00000d41: POP 00000d42: JUMP 00000d43: JUMPDEST 00000d44: PUSH2 0x0d4b 00000d47: PUSH2 0x0db9 00000d4a: JUMP 00000d4b: JUMPDEST 00000d4c: PUSH1 0x01 00000d4e: PUSH1 0x01 00000d50: PUSH1 0xa0 00000d52: SHL 00000d53: SUB 00000d54: DUP2 00000d55: AND 00000d56: PUSH2 0x0dad 00000d59: JUMPI 00000d5a: PUSH1 0x40 00000d5c: MLOAD 00000d5d: PUSH3 0x461bcd 00000d61: PUSH1 0xe5 00000d63: SHL 00000d64: DUP2 00000d65: MSTORE 00000d66: PUSH1 0x20 00000d68: PUSH1 0x04 00000d6a: DUP3 00000d6b: ADD 00000d6c: MSTORE 00000d6d: PUSH1 0x24 00000d6f: DUP1 00000d70: DUP3 00000d71: ADD 00000d72: MSTORE 00000d73: PUSH32 0x4e6577206f776e65722063616e6e6f7420626520746865207a65726f20616464 00000d94: PUSH1 0x44 00000d96: DUP3 00000d97: ADD 00000d98: MSTORE 00000d99: PUSH4 0x72657373 00000d9e: PUSH1 0xe0 00000da0: SHL 00000da1: PUSH1 0x64 00000da3: DUP3 00000da4: ADD 00000da5: MSTORE 00000da6: PUSH1 0x84 00000da8: ADD 00000da9: PUSH2 0x0389 00000dac: JUMP 00000dad: JUMPDEST 00000dae: PUSH2 0x0db6 00000db1: DUP2 00000db2: PUSH2 0x0e8e 00000db5: JUMP 00000db6: JUMPDEST 00000db7: POP 00000db8: JUMP 00000db9: JUMPDEST 00000dba: PUSH0 00000dbb: SLOAD 00000dbc: PUSH1 0x01 00000dbe: PUSH1 0x01 00000dc0: PUSH1 0xa0 00000dc2: SHL 00000dc3: SUB 00000dc4: AND 00000dc5: CALLER 00000dc6: EQ 00000dc7: PUSH2 0x0af1 00000dca: JUMPI 00000dcb: PUSH1 0x40 00000dcd: MLOAD 00000dce: PUSH4 0x118cdaa7 00000dd3: PUSH1 0xe0 00000dd5: SHL 00000dd6: DUP2 00000dd7: MSTORE 00000dd8: CALLER 00000dd9: PUSH1 0x04 00000ddb: DUP3 00000ddc: ADD 00000ddd: MSTORE 00000dde: PUSH1 0x24 00000de0: ADD 00000de1: PUSH2 0x0389 00000de4: JUMP 00000de5: JUMPDEST 00000de6: PUSH1 0x03 00000de8: DUP1 00000de9: SLOAD 00000dea: PUSH0 00000deb: SWAP2 00000dec: DUP3 00000ded: PUSH2 0x0df5 00000df0: DUP4 00000df1: PUSH2 0x1509 00000df4: JUMP 00000df5: JUMPDEST 00000df6: SWAP1 00000df7: SWAP2 00000df8: SSTORE 00000df9: POP 00000dfa: POP 00000dfb: PUSH1 0x02 00000dfd: SLOAD 00000dfe: PUSH1 0x03 00000e00: SLOAD 00000e01: PUSH1 0x40 00000e03: DUP1 00000e04: MLOAD 00000e05: DIFFICULTY 00000e06: PUSH1 0x20 00000e08: DUP3 00000e09: ADD 00000e0a: MSTORE 00000e0b: TIMESTAMP 00000e0c: SWAP2 00000e0d: DUP2 00000e0e: ADD 00000e0f: SWAP2 00000e10: SWAP1 00000e11: SWAP2 00000e12: MSTORE 00000e13: PUSH1 0x60 00000e15: DUP2 00000e16: ADD 00000e17: SWAP3 00000e18: SWAP1 00000e19: SWAP3 00000e1a: MSTORE 00000e1b: PUSH1 0x80 00000e1d: DUP3 00000e1e: ADD 00000e1f: MSTORE 00000e20: PUSH1 0xa0 00000e22: ADD 00000e23: PUSH1 0x40 00000e25: MLOAD 00000e26: PUSH1 0x20 00000e28: DUP2 00000e29: DUP4 00000e2a: SUB 00000e2b: SUB 00000e2c: DUP2 00000e2d: MSTORE 00000e2e: SWAP1 00000e2f: PUSH1 0x40 00000e31: MSTORE 00000e32: DUP1 00000e33: MLOAD 00000e34: SWAP1 00000e35: PUSH1 0x20 00000e37: ADD 00000e38: KECCAK256 00000e39: PUSH0 00000e3a: SHR 00000e3b: SWAP1 00000e3c: POP 00000e3d: SWAP1 00000e3e: JUMP 00000e3f: JUMPDEST 00000e40: PUSH0 00000e41: DUP1 00000e42: SLOAD 00000e43: PUSH1 0x01 00000e45: PUSH1 0x01 00000e47: PUSH1 0xa0 00000e49: SHL 00000e4a: SUB 00000e4b: DUP4 00000e4c: DUP2 00000e4d: AND 00000e4e: PUSH1 0x01 00000e50: PUSH1 0x01 00000e52: PUSH1 0xa0 00000e54: SHL 00000e55: SUB 00000e56: NOT 00000e57: DUP4 00000e58: AND 00000e59: DUP2 00000e5a: OR 00000e5b: DUP5 00000e5c: SSTORE 00000e5d: PUSH1 0x40 00000e5f: MLOAD 00000e60: SWAP2 00000e61: SWAP1 00000e62: SWAP3 00000e63: AND 00000e64: SWAP3 00000e65: DUP4 00000e66: SWAP2 00000e67: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000e88: SWAP2 00000e89: SWAP1 00000e8a: LOG3 00000e8b: POP 00000e8c: POP 00000e8d: JUMP 00000e8e: JUMPDEST 00000e8f: PUSH2 0x0e96 00000e92: PUSH2 0x0db9 00000e95: JUMP 00000e96: JUMPDEST 00000e97: PUSH1 0x01 00000e99: PUSH1 0x01 00000e9b: PUSH1 0xa0 00000e9d: SHL 00000e9e: SUB 00000e9f: DUP2 00000ea0: AND 00000ea1: PUSH2 0x0ebf 00000ea4: JUMPI 00000ea5: PUSH1 0x40 00000ea7: MLOAD 00000ea8: PUSH4 0x1e4fbdf7 00000ead: PUSH1 0xe0 00000eaf: SHL 00000eb0: DUP2 00000eb1: MSTORE 00000eb2: PUSH0 00000eb3: PUSH1 0x04 00000eb5: DUP3 00000eb6: ADD 00000eb7: MSTORE 00000eb8: PUSH1 0x24 00000eba: ADD 00000ebb: PUSH2 0x0389 00000ebe: JUMP 00000ebf: JUMPDEST 00000ec0: PUSH2 0x0db6 00000ec3: DUP2 00000ec4: PUSH2 0x0e3f 00000ec7: JUMP 00000ec8: JUMPDEST 00000ec9: PUSH2 0x0c84 00000ecc: DUP1 00000ecd: PUSH2 0x1522 00000ed0: DUP4 00000ed1: CODECOPY 00000ed2: ADD 00000ed3: SWAP1 00000ed4: JUMP 00000ed5: JUMPDEST 00000ed6: PUSH0 00000ed7: DUP2 00000ed8: MLOAD 00000ed9: DUP1 00000eda: DUP5 00000edb: MSTORE 00000edc: DUP1 00000edd: PUSH1 0x20 00000edf: DUP5 00000ee0: ADD 00000ee1: PUSH1 0x20 00000ee3: DUP7 00000ee4: ADD 00000ee5: MCOPY 00000ee6: PUSH0 00000ee7: PUSH1 0x20 00000ee9: DUP3 00000eea: DUP7 00000eeb: ADD 00000eec: ADD 00000eed: MSTORE 00000eee: PUSH1 0x20 00000ef0: PUSH1 0x1f 00000ef2: NOT 00000ef3: PUSH1 0x1f 00000ef5: DUP4 00000ef6: ADD 00000ef7: AND 00000ef8: DUP6 00000ef9: ADD 00000efa: ADD 00000efb: SWAP2 00000efc: POP 00000efd: POP 00000efe: SWAP3 00000eff: SWAP2 00000f00: POP 00000f01: POP 00000f02: JUMP 00000f03: JUMPDEST 00000f04: PUSH1 0x20 00000f06: DUP2 00000f07: MSTORE 00000f08: PUSH0 00000f09: PUSH2 0x0f15 00000f0c: PUSH1 0x20 00000f0e: DUP4 00000f0f: ADD 00000f10: DUP5 00000f11: PUSH2 0x0ed5 00000f14: JUMP 00000f15: JUMPDEST 00000f16: SWAP4 00000f17: SWAP3 00000f18: POP 00000f19: POP 00000f1a: POP 00000f1b: JUMP 00000f1c: JUMPDEST 00000f1d: PUSH1 0x01 00000f1f: PUSH1 0x01 00000f21: PUSH1 0xa0 00000f23: SHL 00000f24: SUB 00000f25: DUP2 00000f26: AND 00000f27: DUP2 00000f28: EQ 00000f29: PUSH2 0x0db6 00000f2c: JUMPI 00000f2d: PUSH0 00000f2e: DUP1 00000f2f: REVERT 00000f30: JUMPDEST 00000f31: PUSH0 00000f32: PUSH1 0x20 00000f34: DUP3 00000f35: DUP5 00000f36: SUB 00000f37: SLT 00000f38: ISZERO 00000f39: PUSH2 0x0f40 00000f3c: JUMPI 00000f3d: PUSH0 00000f3e: DUP1 00000f3f: REVERT 00000f40: JUMPDEST 00000f41: DUP2 00000f42: CALLDATALOAD 00000f43: PUSH2 0x0f15 00000f46: DUP2 00000f47: PUSH2 0x0f1c 00000f4a: JUMP 00000f4b: JUMPDEST 00000f4c: PUSH0 00000f4d: DUP1 00000f4e: PUSH1 0x40 00000f50: DUP4 00000f51: DUP6 00000f52: SUB 00000f53: SLT 00000f54: ISZERO 00000f55: PUSH2 0x0f5c 00000f58: JUMPI 00000f59: PUSH0 00000f5a: DUP1 00000f5b: REVERT 00000f5c: JUMPDEST 00000f5d: DUP3 00000f5e: CALLDATALOAD 00000f5f: PUSH2 0x0f67 00000f62: DUP2 00000f63: PUSH2 0x0f1c 00000f66: JUMP 00000f67: JUMPDEST 00000f68: SWAP5 00000f69: PUSH1 0x20 00000f6b: SWAP4 00000f6c: SWAP1 00000f6d: SWAP4 00000f6e: ADD 00000f6f: CALLDATALOAD 00000f70: SWAP4 00000f71: POP 00000f72: POP 00000f73: POP 00000f74: JUMP 00000f75: JUMPDEST 00000f76: PUSH4 0x4e487b71 00000f7b: PUSH1 0xe0 00000f7d: SHL 00000f7e: PUSH0 00000f7f: MSTORE 00000f80: PUSH1 0x41 00000f82: PUSH1 0x04 00000f84: MSTORE 00000f85: PUSH1 0x24 00000f87: PUSH0 00000f88: REVERT 00000f89: JUMPDEST 00000f8a: PUSH1 0x40 00000f8c: MLOAD 00000f8d: PUSH1 0x1f 00000f8f: DUP3 00000f90: ADD 00000f91: PUSH1 0x1f 00000f93: NOT 00000f94: AND 00000f95: DUP2 00000f96: ADD 00000f97: PUSH8 0xffffffffffffffff 00000fa0: DUP2 00000fa1: GT 00000fa2: DUP3 00000fa3: DUP3 00000fa4: LT 00000fa5: OR 00000fa6: ISZERO 00000fa7: PUSH2 0x0fb2 00000faa: JUMPI 00000fab: PUSH2 0x0fb2 00000fae: PUSH2 0x0f75 00000fb1: JUMP 00000fb2: JUMPDEST 00000fb3: PUSH1 0x40 00000fb5: MSTORE 00000fb6: SWAP2 00000fb7: SWAP1 00000fb8: POP 00000fb9: JUMP 00000fba: JUMPDEST 00000fbb: PUSH0 00000fbc: DUP3 00000fbd: PUSH1 0x1f 00000fbf: DUP4 00000fc0: ADD 00000fc1: SLT 00000fc2: PUSH2 0x0fc9 00000fc5: JUMPI 00000fc6: PUSH0 00000fc7: DUP1 00000fc8: REVERT 00000fc9: JUMPDEST 00000fca: DUP2 00000fcb: CALLDATALOAD 00000fcc: PUSH8 0xffffffffffffffff 00000fd5: DUP2 00000fd6: GT 00000fd7: ISZERO 00000fd8: PUSH2 0x0fe3 00000fdb: JUMPI 00000fdc: PUSH2 0x0fe3 00000fdf: PUSH2 0x0f75 00000fe2: JUMP 00000fe3: JUMPDEST 00000fe4: PUSH2 0x0ff6 00000fe7: PUSH1 0x1f 00000fe9: DUP3 00000fea: ADD 00000feb: PUSH1 0x1f 00000fed: NOT 00000fee: AND 00000fef: PUSH1 0x20 00000ff1: ADD 00000ff2: PUSH2 0x0f89 00000ff5: JUMP 00000ff6: JUMPDEST 00000ff7: DUP2 00000ff8: DUP2 00000ff9: MSTORE 00000ffa: DUP5 00000ffb: PUSH1 0x20 00000ffd: DUP4 00000ffe: DUP7 00000fff: ADD 00001000: ADD 00001001: GT 00001002: ISZERO 00001003: PUSH2 0x100a 00001006: JUMPI 00001007: PUSH0 00001008: DUP1 00001009: REVERT 0000100a: JUMPDEST 0000100b: DUP2 0000100c: PUSH1 0x20 0000100e: DUP6 0000100f: ADD 00001010: PUSH1 0x20 00001012: DUP4 00001013: ADD 00001014: CALLDATACOPY 00001015: PUSH0 00001016: SWAP2 00001017: DUP2 00001018: ADD 00001019: PUSH1 0x20 0000101b: ADD 0000101c: SWAP2 0000101d: SWAP1 0000101e: SWAP2 0000101f: MSTORE 00001020: SWAP4 00001021: SWAP3 00001022: POP 00001023: POP 00001024: POP 00001025: JUMP 00001026: JUMPDEST 00001027: PUSH0 00001028: DUP1 00001029: PUSH0 0000102a: DUP1 0000102b: PUSH1 0x80 0000102d: DUP6 0000102e: DUP8 0000102f: SUB 00001030: SLT 00001031: ISZERO 00001032: PUSH2 0x1039 00001035: JUMPI 00001036: PUSH0 00001037: DUP1 00001038: REVERT 00001039: JUMPDEST 0000103a: DUP5 0000103b: CALLDATALOAD 0000103c: PUSH2 0x1044 0000103f: DUP2 00001040: PUSH2 0x0f1c 00001043: JUMP 00001044: JUMPDEST 00001045: SWAP4 00001046: POP 00001047: PUSH1 0x20 00001049: DUP6 0000104a: ADD 0000104b: CALLDATALOAD 0000104c: PUSH2 0x1054 0000104f: DUP2 00001050: PUSH2 0x0f1c 00001053: JUMP 00001054: JUMPDEST 00001055: SWAP3 00001056: POP 00001057: PUSH1 0x40 00001059: DUP6 0000105a: ADD 0000105b: CALLDATALOAD 0000105c: PUSH8 0xffffffffffffffff 00001065: DUP1 00001066: DUP3 00001067: GT 00001068: ISZERO 00001069: PUSH2 0x1070 0000106c: JUMPI 0000106d: PUSH0 0000106e: DUP1 0000106f: REVERT 00001070: JUMPDEST 00001071: PUSH2 0x107c 00001074: DUP9 00001075: DUP4 00001076: DUP10 00001077: ADD 00001078: PUSH2 0x0fba 0000107b: JUMP 0000107c: JUMPDEST 0000107d: SWAP4 0000107e: POP 0000107f: PUSH1 0x60 00001081: DUP8 00001082: ADD 00001083: CALLDATALOAD 00001084: SWAP2 00001085: POP 00001086: DUP1 00001087: DUP3 00001088: GT 00001089: ISZERO 0000108a: PUSH2 0x1091 0000108d: JUMPI 0000108e: PUSH0 0000108f: DUP1 00001090: REVERT 00001091: JUMPDEST 00001092: POP 00001093: PUSH2 0x109e 00001096: DUP8 00001097: DUP3 00001098: DUP9 00001099: ADD 0000109a: PUSH2 0x0fba 0000109d: JUMP 0000109e: JUMPDEST 0000109f: SWAP2 000010a0: POP 000010a1: POP 000010a2: SWAP3 000010a3: SWAP6 000010a4: SWAP2 000010a5: SWAP5 000010a6: POP 000010a7: SWAP3 000010a8: POP 000010a9: JUMP 000010aa: JUMPDEST 000010ab: PUSH0 000010ac: DUP1 000010ad: PUSH1 0x40 000010af: DUP4 000010b0: DUP6 000010b1: SUB 000010b2: SLT 000010b3: ISZERO 000010b4: PUSH2 0x10bb 000010b7: JUMPI 000010b8: PUSH0 000010b9: DUP1 000010ba: REVERT 000010bb: JUMPDEST 000010bc: DUP3 000010bd: CALLDATALOAD 000010be: PUSH8 0xffffffffffffffff 000010c7: DUP1 000010c8: DUP3 000010c9: GT 000010ca: ISZERO 000010cb: PUSH2 0x10d2 000010ce: JUMPI 000010cf: PUSH0 000010d0: DUP1 000010d1: REVERT 000010d2: JUMPDEST 000010d3: PUSH2 0x10de 000010d6: DUP7 000010d7: DUP4 000010d8: DUP8 000010d9: ADD 000010da: PUSH2 0x0fba 000010dd: JUMP 000010de: JUMPDEST 000010df: SWAP4 000010e0: POP 000010e1: PUSH1 0x20 000010e3: DUP6 000010e4: ADD 000010e5: CALLDATALOAD 000010e6: SWAP2 000010e7: POP 000010e8: DUP1 000010e9: DUP3 000010ea: GT 000010eb: ISZERO 000010ec: PUSH2 0x10f3 000010ef: JUMPI 000010f0: PUSH0 000010f1: DUP1 000010f2: REVERT 000010f3: JUMPDEST 000010f4: POP 000010f5: PUSH2 0x1100 000010f8: DUP6 000010f9: DUP3 000010fa: DUP7 000010fb: ADD 000010fc: PUSH2 0x0fba 000010ff: JUMP 00001100: JUMPDEST 00001101: SWAP2 00001102: POP 00001103: POP 00001104: SWAP3 00001105: POP 00001106: SWAP3 00001107: SWAP1 00001108: POP 00001109: JUMP 0000110a: JUMPDEST 0000110b: PUSH0 0000110c: DUP1 0000110d: PUSH0 0000110e: PUSH1 0x60 00001110: DUP5 00001111: DUP7 00001112: SUB 00001113: SLT 00001114: ISZERO 00001115: PUSH2 0x111c 00001118: JUMPI 00001119: PUSH0 0000111a: DUP1 0000111b: REVERT 0000111c: JUMPDEST 0000111d: DUP4 0000111e: CALLDATALOAD 0000111f: PUSH2 0x1127 00001122: DUP2 00001123: PUSH2 0x0f1c 00001126: JUMP 00001127: JUMPDEST 00001128: SWAP3 00001129: POP 0000112a: PUSH1 0x20 0000112c: DUP5 0000112d: ADD 0000112e: CALLDATALOAD 0000112f: PUSH2 0x1137 00001132: DUP2 00001133: PUSH2 0x0f1c 00001136: JUMP 00001137: JUMPDEST 00001138: SWAP3 00001139: SWAP6 0000113a: SWAP3 0000113b: SWAP5 0000113c: POP 0000113d: POP 0000113e: POP 0000113f: PUSH1 0x40 00001141: SWAP2 00001142: SWAP1 00001143: SWAP2 00001144: ADD 00001145: CALLDATALOAD 00001146: SWAP1 00001147: JUMP 00001148: JUMPDEST 00001149: PUSH0 0000114a: DUP1 0000114b: PUSH0 0000114c: DUP1 0000114d: PUSH1 0x80 0000114f: DUP6 00001150: DUP8 00001151: SUB 00001152: SLT 00001153: ISZERO 00001154: PUSH2 0x115b 00001157: JUMPI 00001158: PUSH0 00001159: DUP1 0000115a: REVERT 0000115b: JUMPDEST 0000115c: DUP5 0000115d: CALLDATALOAD 0000115e: PUSH2 0x1166 00001161: DUP2 00001162: PUSH2 0x0f1c 00001165: JUMP 00001166: JUMPDEST 00001167: SWAP4 00001168: POP 00001169: PUSH1 0x20 0000116b: DUP6 0000116c: ADD 0000116d: CALLDATALOAD 0000116e: PUSH2 0x1176 00001171: DUP2 00001172: PUSH2 0x0f1c 00001175: JUMP 00001176: JUMPDEST 00001177: SWAP3 00001178: POP 00001179: PUSH1 0x40 0000117b: DUP6 0000117c: ADD 0000117d: CALLDATALOAD 0000117e: SWAP2 0000117f: POP 00001180: PUSH1 0x60 00001182: DUP6 00001183: ADD 00001184: CALLDATALOAD 00001185: PUSH2 0x118d 00001188: DUP2 00001189: PUSH2 0x0f1c 0000118c: JUMP 0000118d: JUMPDEST 0000118e: SWAP4 0000118f: SWAP7 00001190: SWAP3 00001191: SWAP6 00001192: POP 00001193: SWAP1 00001194: SWAP4 00001195: POP 00001196: POP 00001197: JUMP 00001198: JUMPDEST 00001199: PUSH1 0x01 0000119b: DUP2 0000119c: DUP2 0000119d: SHR 0000119e: SWAP1 0000119f: DUP3 000011a0: AND 000011a1: DUP1 000011a2: PUSH2 0x11ac 000011a5: JUMPI 000011a6: PUSH1 0x7f 000011a8: DUP3 000011a9: AND 000011aa: SWAP2 000011ab: POP 000011ac: JUMPDEST 000011ad: PUSH1 0x20 000011af: DUP3 000011b0: LT 000011b1: DUP2 000011b2: SUB 000011b3: PUSH2 0x11ca 000011b6: JUMPI 000011b7: PUSH4 0x4e487b71 000011bc: PUSH1 0xe0 000011be: SHL 000011bf: PUSH0 000011c0: MSTORE 000011c1: PUSH1 0x22 000011c3: PUSH1 0x04 000011c5: MSTORE 000011c6: PUSH1 0x24 000011c8: PUSH0 000011c9: REVERT 000011ca: JUMPDEST 000011cb: POP 000011cc: SWAP2 000011cd: SWAP1 000011ce: POP 000011cf: JUMP 000011d0: JUMPDEST 000011d1: PUSH0 000011d2: PUSH1 0x20 000011d4: DUP3 000011d5: DUP5 000011d6: SUB 000011d7: SLT 000011d8: ISZERO 000011d9: PUSH2 0x11e0 000011dc: JUMPI 000011dd: PUSH0 000011de: DUP1 000011df: REVERT 000011e0: JUMPDEST 000011e1: POP 000011e2: MLOAD 000011e3: SWAP2 000011e4: SWAP1 000011e5: POP 000011e6: JUMP 000011e7: JUMPDEST 000011e8: PUSH4 0x4e487b71 000011ed: PUSH1 0xe0 000011ef: SHL 000011f0: PUSH0 000011f1: MSTORE 000011f2: PUSH1 0x11 000011f4: PUSH1 0x04 000011f6: MSTORE 000011f7: PUSH1 0x24 000011f9: PUSH0 000011fa: REVERT 000011fb: JUMPDEST 000011fc: DUP1 000011fd: DUP3 000011fe: MUL 000011ff: DUP2 00001200: ISZERO 00001201: DUP3 00001202: DUP3 00001203: DIV 00001204: DUP5 00001205: EQ 00001206: OR 00001207: PUSH2 0x1212 0000120a: JUMPI 0000120b: PUSH2 0x1212 0000120e: PUSH2 0x11e7 00001211: JUMP 00001212: JUMPDEST 00001213: SWAP3 00001214: SWAP2 00001215: POP 00001216: POP 00001217: JUMP 00001218: JUMPDEST 00001219: PUSH4 0x4e487b71 0000121e: PUSH1 0xe0 00001220: SHL 00001221: PUSH0 00001222: MSTORE 00001223: PUSH1 0x12 00001225: PUSH1 0x04 00001227: MSTORE 00001228: PUSH1 0x24 0000122a: PUSH0 0000122b: REVERT 0000122c: JUMPDEST 0000122d: PUSH0 0000122e: DUP3 0000122f: PUSH2 0x123a 00001232: JUMPI 00001233: PUSH2 0x123a 00001236: PUSH2 0x1218 00001239: JUMP 0000123a: JUMPDEST 0000123b: POP 0000123c: MOD 0000123d: SWAP1 0000123e: JUMP 0000123f: JUMPDEST 00001240: DUP1 00001241: DUP3 00001242: ADD 00001243: DUP1 00001244: DUP3 00001245: GT 00001246: ISZERO 00001247: PUSH2 0x1212 0000124a: JUMPI 0000124b: PUSH2 0x1212 0000124e: PUSH2 0x11e7 00001251: JUMP 00001252: JUMPDEST 00001253: PUSH4 0x4e487b71 00001258: PUSH1 0xe0 0000125a: SHL 0000125b: PUSH0 0000125c: MSTORE 0000125d: PUSH1 0x32 0000125f: PUSH1 0x04 00001261: MSTORE 00001262: PUSH1 0x24 00001264: PUSH0 00001265: REVERT 00001266: JUMPDEST 00001267: PUSH0 00001268: PUSH1 0x20 0000126a: DUP3 0000126b: DUP5 0000126c: SUB 0000126d: SLT 0000126e: ISZERO 0000126f: PUSH2 0x1276 00001272: JUMPI 00001273: PUSH0 00001274: DUP1 00001275: REVERT 00001276: JUMPDEST 00001277: DUP2 00001278: MLOAD 00001279: DUP1 0000127a: ISZERO 0000127b: ISZERO 0000127c: DUP2 0000127d: EQ 0000127e: PUSH2 0x0f15 00001281: JUMPI 00001282: PUSH0 00001283: DUP1 00001284: REVERT 00001285: JUMPDEST 00001286: DUP2 00001287: DUP2 00001288: SUB 00001289: DUP2 0000128a: DUP2 0000128b: GT 0000128c: ISZERO 0000128d: PUSH2 0x1212 00001290: JUMPI 00001291: PUSH2 0x1212 00001294: PUSH2 0x11e7 00001297: JUMP 00001298: JUMPDEST 00001299: PUSH0 0000129a: PUSH1 0x01 0000129c: PUSH1 0x01 0000129e: PUSH1 0xa0 000012a0: SHL 000012a1: SUB 000012a2: DUP1 000012a3: DUP8 000012a4: AND 000012a5: DUP4 000012a6: MSTORE 000012a7: DUP1 000012a8: DUP7 000012a9: AND 000012aa: PUSH1 0x20 000012ac: DUP5 000012ad: ADD 000012ae: MSTORE 000012af: POP 000012b0: PUSH1 0x80 000012b2: PUSH1 0x40 000012b4: DUP4 000012b5: ADD 000012b6: MSTORE 000012b7: PUSH2 0x12c3 000012ba: PUSH1 0x80 000012bc: DUP4 000012bd: ADD 000012be: DUP6 000012bf: PUSH2 0x0ed5 000012c2: JUMP 000012c3: JUMPDEST 000012c4: DUP3 000012c5: DUP2 000012c6: SUB 000012c7: PUSH1 0x60 000012c9: DUP5 000012ca: ADD 000012cb: MSTORE 000012cc: PUSH2 0x12d5 000012cf: DUP2 000012d0: DUP6 000012d1: PUSH2 0x0ed5 000012d4: JUMP 000012d5: JUMPDEST 000012d6: SWAP8 000012d7: SWAP7 000012d8: POP 000012d9: POP 000012da: POP 000012db: POP 000012dc: POP 000012dd: POP 000012de: POP 000012df: JUMP 000012e0: JUMPDEST 000012e1: PUSH1 0x1f 000012e3: DUP3 000012e4: GT 000012e5: ISZERO 000012e6: PUSH2 0x0725 000012e9: JUMPI 000012ea: DUP1 000012eb: PUSH0 000012ec: MSTORE 000012ed: PUSH1 0x20 000012ef: PUSH0 000012f0: KECCAK256 000012f1: PUSH1 0x1f 000012f3: DUP5 000012f4: ADD 000012f5: PUSH1 0x05 000012f7: SHR 000012f8: DUP2 000012f9: ADD 000012fa: PUSH1 0x20 000012fc: DUP6 000012fd: LT 000012fe: ISZERO 000012ff: PUSH2 0x1305 00001302: JUMPI 00001303: POP 00001304: DUP1 00001305: JUMPDEST 00001306: PUSH1 0x1f 00001308: DUP5 00001309: ADD 0000130a: PUSH1 0x05 0000130c: SHR 0000130d: DUP3 0000130e: ADD 0000130f: SWAP2 00001310: POP 00001311: JUMPDEST 00001312: DUP2 00001313: DUP2 00001314: LT 00001315: ISZERO 00001316: PUSH2 0x0669 00001319: JUMPI 0000131a: PUSH0 0000131b: DUP2 0000131c: SSTORE 0000131d: PUSH1 0x01 0000131f: ADD 00001320: PUSH2 0x1311 00001323: JUMP 00001324: JUMPDEST 00001325: DUP2 00001326: MLOAD 00001327: PUSH8 0xffffffffffffffff 00001330: DUP2 00001331: GT 00001332: ISZERO 00001333: PUSH2 0x133e 00001336: JUMPI 00001337: PUSH2 0x133e 0000133a: PUSH2 0x0f75 0000133d: JUMP 0000133e: JUMPDEST 0000133f: PUSH2 0x1352 00001342: DUP2 00001343: PUSH2 0x134c 00001346: DUP5 00001347: SLOAD 00001348: PUSH2 0x1198 0000134b: JUMP 0000134c: JUMPDEST 0000134d: DUP5 0000134e: PUSH2 0x12e0 00001351: JUMP 00001352: JUMPDEST 00001353: PUSH1 0x20 00001355: DUP1 00001356: PUSH1 0x1f 00001358: DUP4 00001359: GT 0000135a: PUSH1 0x01 0000135c: DUP2 0000135d: EQ 0000135e: PUSH2 0x1385 00001361: JUMPI 00001362: PUSH0 00001363: DUP5 00001364: ISZERO 00001365: PUSH2 0x136e 00001368: JUMPI 00001369: POP 0000136a: DUP6 0000136b: DUP4 0000136c: ADD 0000136d: MLOAD 0000136e: JUMPDEST 0000136f: PUSH0 00001370: NOT 00001371: PUSH1 0x03 00001373: DUP7 00001374: SWAP1 00001375: SHL 00001376: SHR 00001377: NOT 00001378: AND 00001379: PUSH1 0x01 0000137b: DUP6 0000137c: SWAP1 0000137d: SHL 0000137e: OR 0000137f: DUP6 00001380: SSTORE 00001381: PUSH2 0x13dc 00001384: JUMP 00001385: JUMPDEST 00001386: PUSH0 00001387: DUP6 00001388: DUP2 00001389: MSTORE 0000138a: PUSH1 0x20 0000138c: DUP2 0000138d: KECCAK256 0000138e: PUSH1 0x1f 00001390: NOT 00001391: DUP7 00001392: AND 00001393: SWAP2 00001394: JUMPDEST 00001395: DUP3 00001396: DUP2 00001397: LT 00001398: ISZERO 00001399: PUSH2 0x13b3 0000139c: JUMPI 0000139d: DUP9 0000139e: DUP7 0000139f: ADD 000013a0: MLOAD 000013a1: DUP3 000013a2: SSTORE 000013a3: SWAP5 000013a4: DUP5 000013a5: ADD 000013a6: SWAP5 000013a7: PUSH1 0x01 000013a9: SWAP1 000013aa: SWAP2 000013ab: ADD 000013ac: SWAP1 000013ad: DUP5 000013ae: ADD 000013af: PUSH2 0x1394 000013b2: JUMP 000013b3: JUMPDEST 000013b4: POP 000013b5: DUP6 000013b6: DUP3 000013b7: LT 000013b8: ISZERO 000013b9: PUSH2 0x13d0 000013bc: JUMPI 000013bd: DUP8 000013be: DUP6 000013bf: ADD 000013c0: MLOAD 000013c1: PUSH0 000013c2: NOT 000013c3: PUSH1 0x03 000013c5: DUP9 000013c6: SWAP1 000013c7: SHL 000013c8: PUSH1 0xf8 000013ca: AND 000013cb: SHR 000013cc: NOT 000013cd: AND 000013ce: DUP2 000013cf: SSTORE 000013d0: JUMPDEST 000013d1: POP 000013d2: POP 000013d3: PUSH1 0x01 000013d5: DUP5 000013d6: PUSH1 0x01 000013d8: SHL 000013d9: ADD 000013da: DUP6 000013db: SSTORE 000013dc: JUMPDEST 000013dd: POP 000013de: POP 000013df: POP 000013e0: POP 000013e1: POP 000013e2: POP 000013e3: JUMP 000013e4: JUMPDEST 000013e5: PUSH0 000013e6: DUP3 000013e7: PUSH2 0x13f2 000013ea: JUMPI 000013eb: PUSH2 0x13f2 000013ee: PUSH2 0x1218 000013f1: JUMP 000013f2: JUMPDEST 000013f3: POP 000013f4: DIV 000013f5: SWAP1 000013f6: JUMP 000013f7: JUMPDEST 000013f8: PUSH0 000013f9: PUSH1 0xa0 000013fb: DUP3 000013fc: ADD 000013fd: DUP8 000013fe: DUP4 000013ff: MSTORE 00001400: PUSH1 0x20 00001402: DUP8 00001403: PUSH1 0x20 00001405: DUP6 00001406: ADD 00001407: MSTORE 00001408: PUSH1 0xa0 0000140a: PUSH1 0x40 0000140c: DUP6 0000140d: ADD 0000140e: MSTORE 0000140f: DUP2 00001410: DUP8 00001411: MLOAD 00001412: DUP1 00001413: DUP5 00001414: MSTORE 00001415: PUSH1 0xc0 00001417: DUP7 00001418: ADD 00001419: SWAP2 0000141a: POP 0000141b: PUSH1 0x20 0000141d: DUP10 0000141e: ADD 0000141f: SWAP4 00001420: POP 00001421: PUSH0 00001422: JUMPDEST 00001423: DUP2 00001424: DUP2 00001425: LT 00001426: ISZERO 00001427: PUSH2 0x1447 0000142a: JUMPI 0000142b: DUP5 0000142c: MLOAD 0000142d: PUSH1 0x01 0000142f: PUSH1 0x01 00001431: PUSH1 0xa0 00001433: SHL 00001434: SUB 00001435: AND 00001436: DUP4 00001437: MSTORE 00001438: SWAP4 00001439: DUP4 0000143a: ADD 0000143b: SWAP4 0000143c: SWAP2 0000143d: DUP4 0000143e: ADD 0000143f: SWAP2 00001440: PUSH1 0x01 00001442: ADD 00001443: PUSH2 0x1422 00001446: JUMP 00001447: JUMPDEST 00001448: POP 00001449: POP 0000144a: PUSH1 0x01 0000144c: PUSH1 0x01 0000144e: PUSH1 0xa0 00001450: SHL 00001451: SUB 00001452: SWAP7 00001453: SWAP1 00001454: SWAP7 00001455: AND 00001456: PUSH1 0x60 00001458: DUP6 00001459: ADD 0000145a: MSTORE 0000145b: POP 0000145c: POP 0000145d: POP 0000145e: PUSH1 0x80 00001460: ADD 00001461: MSTORE 00001462: SWAP4 00001463: SWAP3 00001464: POP 00001465: POP 00001466: POP 00001467: JUMP 00001468: JUMPDEST 00001469: PUSH0 0000146a: PUSH1 0x20 0000146c: DUP1 0000146d: DUP4 0000146e: DUP6 0000146f: SUB 00001470: SLT 00001471: ISZERO 00001472: PUSH2 0x1479 00001475: JUMPI 00001476: PUSH0 00001477: DUP1 00001478: REVERT 00001479: JUMPDEST 0000147a: DUP3 0000147b: MLOAD 0000147c: PUSH8 0xffffffffffffffff 00001485: DUP1 00001486: DUP3 00001487: GT 00001488: ISZERO 00001489: PUSH2 0x1490 0000148c: JUMPI 0000148d: PUSH0 0000148e: DUP1 0000148f: REVERT 00001490: JUMPDEST 00001491: DUP2 00001492: DUP6 00001493: ADD 00001494: SWAP2 00001495: POP 00001496: DUP6 00001497: PUSH1 0x1f 00001499: DUP4 0000149a: ADD 0000149b: SLT 0000149c: PUSH2 0x14a3 0000149f: JUMPI 000014a0: PUSH0 000014a1: DUP1 000014a2: REVERT 000014a3: JUMPDEST 000014a4: DUP2 000014a5: MLOAD 000014a6: DUP2 000014a7: DUP2 000014a8: GT 000014a9: ISZERO 000014aa: PUSH2 0x14b5 000014ad: JUMPI 000014ae: PUSH2 0x14b5 000014b1: PUSH2 0x0f75 000014b4: JUMP 000014b5: JUMPDEST 000014b6: DUP1 000014b7: PUSH1 0x05 000014b9: SHL 000014ba: SWAP2 000014bb: POP 000014bc: PUSH2 0x14c6 000014bf: DUP5 000014c0: DUP4 000014c1: ADD 000014c2: PUSH2 0x0f89 000014c5: JUMP 000014c6: JUMPDEST 000014c7: DUP2 000014c8: DUP2 000014c9: MSTORE 000014ca: SWAP2 000014cb: DUP4 000014cc: ADD 000014cd: DUP5 000014ce: ADD 000014cf: SWAP2 000014d0: DUP5 000014d1: DUP2 000014d2: ADD 000014d3: SWAP1 000014d4: DUP9 000014d5: DUP5 000014d6: GT 000014d7: ISZERO 000014d8: PUSH2 0x14df 000014db: JUMPI 000014dc: PUSH0 000014dd: DUP1 000014de: REVERT 000014df: JUMPDEST 000014e0: SWAP4 000014e1: DUP6 000014e2: ADD 000014e3: SWAP4 000014e4: JUMPDEST 000014e5: DUP4 000014e6: DUP6 000014e7: LT 000014e8: ISZERO 000014e9: PUSH2 0x14fd 000014ec: JUMPI 000014ed: DUP5 000014ee: MLOAD 000014ef: DUP3 000014f0: MSTORE 000014f1: SWAP4 000014f2: DUP6 000014f3: ADD 000014f4: SWAP4 000014f5: SWAP1 000014f6: DUP6 000014f7: ADD 000014f8: SWAP1 000014f9: PUSH2 0x14e4 000014fc: JUMP 000014fd: JUMPDEST 000014fe: SWAP9 000014ff: SWAP8 00001500: POP 00001501: POP 00001502: POP 00001503: POP 00001504: POP 00001505: POP 00001506: POP 00001507: POP 00001508: JUMP 00001509: JUMPDEST 0000150a: PUSH0 0000150b: PUSH1 0x01 0000150d: DUP3 0000150e: ADD 0000150f: PUSH2 0x151a 00001512: JUMPI 00001513: PUSH2 0x151a 00001516: PUSH2 0x11e7 00001519: JUMP 0000151a: JUMPDEST 0000151b: POP 0000151c: PUSH1 0x01 0000151e: ADD 0000151f: SWAP1 00001520: JUMP 00001521: INVALID 00001522: PUSH1 0x80 00001524: PUSH1 0x40 00001526: MSTORE 00001527: PUSH0 00001528: PUSH1 0x07 0000152a: SSTORE 0000152b: CALLVALUE 0000152c: DUP1 0000152d: ISZERO 0000152e: PUSH2 0x0013 00001531: JUMPI 00001532: PUSH0 00001533: DUP1 00001534: REVERT 00001535: JUMPDEST 00001536: POP 00001537: PUSH1 0x40 00001539: MLOAD 0000153a: PUSH2 0x0c84 0000153d: CODESIZE 0000153e: SUB 0000153f: DUP1 00001540: PUSH2 0x0c84 00001543: DUP4 00001544: CODECOPY 00001545: DUP2 00001546: ADD 00001547: PUSH1 0x40 00001549: DUP2 0000154a: SWAP1 0000154b: MSTORE 0000154c: PUSH2 0x0032 0000154f: SWAP2 00001550: PUSH2 0x01a2 00001553: JUMP 00001554: JUMPDEST 00001555: DUP2 00001556: DUP2 00001557: PUSH1 0x03 00001559: PUSH2 0x0040 0000155c: DUP4 0000155d: DUP3 0000155e: PUSH2 0x02a6 00001561: JUMP 00001562: JUMPDEST 00001563: POP 00001564: PUSH1 0x04 00001566: PUSH2 0x004d 00001569: DUP3 0000156a: DUP3 0000156b: PUSH2 0x02a6 0000156e: JUMP 0000156f: JUMPDEST 00001570: POP 00001571: POP 00001572: POP 00001573: PUSH1 0x01 00001575: PUSH1 0x01 00001577: PUSH1 0xa0 00001579: SHL 0000157a: SUB 0000157b: DUP5 0000157c: AND 0000157d: PUSH2 0x00b8 00001580: JUMPI 00001581: PUSH1 0x40 00001583: MLOAD 00001584: PUSH3 0x461bcd 00001588: PUSH1 0xe5 0000158a: SHL 0000158b: DUP2 0000158c: MSTORE 0000158d: PUSH1 0x20 0000158f: PUSH1 0x04 00001591: DUP3 00001592: ADD 00001593: MSTORE 00001594: PUSH1 0x25 00001596: PUSH1 0x24 00001598: DUP3 00001599: ADD 0000159a: MSTORE 0000159b: PUSH32 0x4e65787420666f7277617264657220616464726573732063616e6e6f74206265 000015bc: PUSH1 0x44 000015be: DUP3 000015bf: ADD 000015c0: MSTORE 000015c1: PUSH5 0x207a65726f 000015c7: PUSH1 0xd8 000015c9: SHL 000015ca: PUSH1 0x64 000015cc: DUP3 000015cd: ADD 000015ce: MSTORE 000015cf: PUSH1 0x84 000015d1: ADD 000015d2: PUSH1 0x40 000015d4: MLOAD 000015d5: DUP1 000015d6: SWAP2 000015d7: SUB 000015d8: SWAP1 000015d9: REVERT 000015da: JUMPDEST 000015db: POP 000015dc: POP 000015dd: PUSH1 0x05 000015df: DUP1 000015e0: SLOAD 000015e1: PUSH1 0x01 000015e3: PUSH1 0x01 000015e5: PUSH1 0xa0 000015e7: SHL 000015e8: SUB 000015e9: SWAP4 000015ea: DUP5 000015eb: AND 000015ec: PUSH1 0x01 000015ee: PUSH1 0x01 000015f0: PUSH1 0xa0 000015f2: SHL 000015f3: SUB 000015f4: NOT 000015f5: SWAP2 000015f6: DUP3 000015f7: AND 000015f8: OR 000015f9: SWAP1 000015fa: SWAP2 000015fb: SSTORE 000015fc: PUSH1 0x06 000015fe: DUP1 000015ff: SLOAD 00001600: SWAP3 00001601: SWAP1 00001602: SWAP4 00001603: AND 00001604: SWAP2 00001605: AND 00001606: OR 00001607: SWAP1 00001608: SSTORE 00001609: PUSH2 0x0365 0000160c: JUMP 0000160d: JUMPDEST 0000160e: DUP1 0000160f: MLOAD 00001610: PUSH1 0x01 00001612: PUSH1 0x01 00001614: PUSH1 0xa0 00001616: SHL 00001617: SUB 00001618: DUP2 00001619: AND 0000161a: DUP2 0000161b: EQ 0000161c: PUSH2 0x0101 0000161f: JUMPI 00001620: PUSH0 00001621: DUP1 00001622: REVERT 00001623: JUMPDEST 00001624: SWAP2 00001625: SWAP1 00001626: POP 00001627: JUMP 00001628: JUMPDEST 00001629: PUSH4 0x4e487b71 0000162e: PUSH1 0xe0 00001630: SHL 00001631: PUSH0 00001632: MSTORE 00001633: PUSH1 0x41 00001635: PUSH1 0x04 00001637: MSTORE 00001638: PUSH1 0x24 0000163a: PUSH0 0000163b: REVERT 0000163c: JUMPDEST 0000163d: PUSH0 0000163e: DUP3 0000163f: PUSH1 0x1f 00001641: DUP4 00001642: ADD 00001643: SLT 00001644: PUSH2 0x0129 00001647: JUMPI 00001648: PUSH0 00001649: DUP1 0000164a: REVERT 0000164b: JUMPDEST 0000164c: DUP2 0000164d: MLOAD 0000164e: PUSH1 0x01 00001650: PUSH1 0x01 00001652: PUSH1 0x40 00001654: SHL 00001655: SUB 00001656: DUP1 00001657: DUP3 00001658: GT 00001659: ISZERO 0000165a: PUSH2 0x0143 0000165d: JUMPI 0000165e: PUSH2 0x0143 00001661: PUSH2 0x0106 00001664: JUMP 00001665: JUMPDEST 00001666: PUSH1 0x40 00001668: MLOAD 00001669: PUSH1 0x1f 0000166b: DUP4 0000166c: ADD 0000166d: PUSH1 0x1f 0000166f: NOT 00001670: SWAP1 00001671: DUP2 00001672: AND 00001673: PUSH1 0x3f 00001675: ADD 00001676: AND 00001677: DUP2 00001678: ADD 00001679: SWAP1 0000167a: DUP3 0000167b: DUP3 0000167c: GT 0000167d: DUP2 0000167e: DUP4 0000167f: LT 00001680: OR 00001681: ISZERO 00001682: PUSH2 0x016b 00001685: JUMPI 00001686: PUSH2 0x016b 00001689: PUSH2 0x0106 0000168c: JUMP 0000168d: JUMPDEST 0000168e: DUP2 0000168f: PUSH1 0x40 00001691: MSTORE 00001692: DUP4 00001693: DUP2 00001694: MSTORE 00001695: DUP7 00001696: PUSH1 0x20 00001698: DUP6 00001699: DUP9 0000169a: ADD 0000169b: ADD 0000169c: GT 0000169d: ISZERO 0000169e: PUSH2 0x0183 000016a1: JUMPI 000016a2: PUSH0 000016a3: DUP1 000016a4: REVERT 000016a5: JUMPDEST 000016a6: DUP4 000016a7: PUSH1 0x20 000016a9: DUP8 000016aa: ADD 000016ab: PUSH1 0x20 000016ad: DUP4 000016ae: ADD 000016af: MCOPY 000016b0: PUSH0 000016b1: PUSH1 0x20 000016b3: DUP6 000016b4: DUP4 000016b5: ADD 000016b6: ADD 000016b7: MSTORE 000016b8: DUP1 000016b9: SWAP5 000016ba: POP 000016bb: POP 000016bc: POP 000016bd: POP 000016be: POP 000016bf: SWAP3 000016c0: SWAP2 000016c1: POP 000016c2: POP 000016c3: JUMP 000016c4: JUMPDEST 000016c5: PUSH0 000016c6: DUP1 000016c7: PUSH0 000016c8: DUP1 000016c9: PUSH1 0x80 000016cb: DUP6 000016cc: DUP8 000016cd: SUB 000016ce: SLT 000016cf: ISZERO 000016d0: PUSH2 0x01b5 000016d3: JUMPI 000016d4: PUSH0 000016d5: DUP1 000016d6: REVERT 000016d7: JUMPDEST 000016d8: PUSH2 0x01be 000016db: DUP6 000016dc: PUSH2 0x00eb 000016df: JUMP 000016e0: JUMPDEST 000016e1: SWAP4 000016e2: POP 000016e3: PUSH2 0x01cc 000016e6: PUSH1 0x20 000016e8: DUP7 000016e9: ADD 000016ea: PUSH2 0x00eb 000016ed: JUMP 000016ee: JUMPDEST 000016ef: PUSH1 0x40 000016f1: DUP7 000016f2: ADD 000016f3: MLOAD 000016f4: SWAP1 000016f5: SWAP4 000016f6: POP 000016f7: PUSH1 0x01 000016f9: PUSH1 0x01 000016fb: PUSH1 0x40 000016fd: SHL 000016fe: SUB 000016ff: DUP1 00001700: DUP3 00001701: GT 00001702: ISZERO 00001703: PUSH2 0x01e8 00001706: JUMPI 00001707: PUSH0 00001708: DUP1 00001709: REVERT 0000170a: JUMPDEST 0000170b: PUSH2 0x01f4 0000170e: DUP9 0000170f: DUP4 00001710: DUP10 00001711: ADD 00001712: PUSH2 0x011a 00001715: JUMP 00001716: JUMPDEST 00001717: SWAP4 00001718: POP 00001719: PUSH1 0x60 0000171b: DUP8 0000171c: ADD 0000171d: MLOAD 0000171e: SWAP2 0000171f: POP 00001720: DUP1 00001721: DUP3 00001722: GT 00001723: ISZERO 00001724: PUSH2 0x0209 00001727: JUMPI 00001728: PUSH0 00001729: DUP1 0000172a: REVERT 0000172b: JUMPDEST 0000172c: POP 0000172d: PUSH2 0x0216 00001730: DUP8 00001731: DUP3 00001732: DUP9 00001733: ADD 00001734: PUSH2 0x011a 00001737: JUMP 00001738: JUMPDEST 00001739: SWAP2 0000173a: POP 0000173b: POP 0000173c: SWAP3 0000173d: SWAP6 0000173e: SWAP2 0000173f: SWAP5 00001740: POP 00001741: SWAP3 00001742: POP 00001743: JUMP 00001744: JUMPDEST 00001745: PUSH1 0x01 00001747: DUP2 00001748: DUP2 00001749: SHR 0000174a: SWAP1 0000174b: DUP3 0000174c: AND 0000174d: DUP1 0000174e: PUSH2 0x0236 00001751: JUMPI 00001752: PUSH1 0x7f 00001754: DUP3 00001755: AND 00001756: SWAP2 00001757: POP 00001758: JUMPDEST 00001759: PUSH1 0x20 0000175b: DUP3 0000175c: LT 0000175d: DUP2 0000175e: SUB 0000175f: PUSH2 0x0254 00001762: JUMPI 00001763: PUSH4 0x4e487b71 00001768: PUSH1 0xe0 0000176a: SHL 0000176b: PUSH0 0000176c: MSTORE 0000176d: PUSH1 0x22 0000176f: PUSH1 0x04 00001771: MSTORE 00001772: PUSH1 0x24 00001774: PUSH0 00001775: REVERT 00001776: JUMPDEST 00001777: POP 00001778: SWAP2 00001779: SWAP1 0000177a: POP 0000177b: JUMP 0000177c: JUMPDEST 0000177d: PUSH1 0x1f 0000177f: DUP3 00001780: GT 00001781: ISZERO 00001782: PUSH2 0x02a1 00001785: JUMPI 00001786: DUP1 00001787: PUSH0 00001788: MSTORE 00001789: PUSH1 0x20 0000178b: PUSH0 0000178c: KECCAK256 0000178d: PUSH1 0x1f 0000178f: DUP5 00001790: ADD 00001791: PUSH1 0x05 00001793: SHR 00001794: DUP2 00001795: ADD 00001796: PUSH1 0x20 00001798: DUP6 00001799: LT 0000179a: ISZERO 0000179b: PUSH2 0x027f 0000179e: JUMPI 0000179f: POP 000017a0: DUP1 000017a1: JUMPDEST 000017a2: PUSH1 0x1f 000017a4: DUP5 000017a5: ADD 000017a6: PUSH1 0x05 000017a8: SHR 000017a9: DUP3 000017aa: ADD 000017ab: SWAP2 000017ac: POP 000017ad: JUMPDEST 000017ae: DUP2 000017af: DUP2 000017b0: LT 000017b1: ISZERO 000017b2: PUSH2 0x029e 000017b5: JUMPI 000017b6: PUSH0 000017b7: DUP2 000017b8: SSTORE 000017b9: PUSH1 0x01 000017bb: ADD 000017bc: PUSH2 0x028b 000017bf: JUMP 000017c0: JUMPDEST 000017c1: POP 000017c2: POP 000017c3: JUMPDEST 000017c4: POP 000017c5: POP 000017c6: POP 000017c7: JUMP 000017c8: JUMPDEST 000017c9: DUP2 000017ca: MLOAD 000017cb: PUSH1 0x01 000017cd: PUSH1 0x01 000017cf: PUSH1 0x40 000017d1: SHL 000017d2: SUB 000017d3: DUP2 000017d4: GT 000017d5: ISZERO 000017d6: PUSH2 0x02bf 000017d9: JUMPI 000017da: PUSH2 0x02bf 000017dd: PUSH2 0x0106 000017e0: JUMP 000017e1: JUMPDEST 000017e2: PUSH2 0x02d3 000017e5: DUP2 000017e6: PUSH2 0x02cd 000017e9: DUP5 000017ea: SLOAD 000017eb: PUSH2 0x0222 000017ee: JUMP 000017ef: JUMPDEST 000017f0: DUP5 000017f1: PUSH2 0x025a 000017f4: JUMP 000017f5: JUMPDEST 000017f6: PUSH1 0x20 000017f8: DUP1 000017f9: PUSH1 0x1f 000017fb: DUP4 000017fc: GT 000017fd: PUSH1 0x01 000017ff: DUP2 00001800: EQ 00001801: PUSH2 0x0306 00001804: JUMPI 00001805: PUSH0 00001806: DUP5 00001807: ISZERO 00001808: PUSH2 0x02ef 0000180b: JUMPI 0000180c: POP 0000180d: DUP6 0000180e: DUP4 0000180f: ADD 00001810: MLOAD 00001811: JUMPDEST 00001812: PUSH0 00001813: NOT 00001814: PUSH1 0x03 00001816: DUP7 00001817: SWAP1 00001818: SHL 00001819: SHR 0000181a: NOT 0000181b: AND 0000181c: PUSH1 0x01 0000181e: DUP6 0000181f: SWAP1 00001820: SHL 00001821: OR 00001822: DUP6 00001823: SSTORE 00001824: PUSH2 0x035d 00001827: JUMP 00001828: JUMPDEST 00001829: PUSH0 0000182a: DUP6 0000182b: DUP2 0000182c: MSTORE 0000182d: PUSH1 0x20 0000182f: DUP2 00001830: KECCAK256 00001831: PUSH1 0x1f 00001833: NOT 00001834: DUP7 00001835: AND 00001836: SWAP2 00001837: JUMPDEST 00001838: DUP3 00001839: DUP2 0000183a: LT 0000183b: ISZERO 0000183c: PUSH2 0x0334 0000183f: JUMPI 00001840: DUP9 00001841: DUP7 00001842: ADD 00001843: MLOAD 00001844: DUP3 00001845: SSTORE 00001846: SWAP5 00001847: DUP5 00001848: ADD 00001849: SWAP5 0000184a: PUSH1 0x01 0000184c: SWAP1 0000184d: SWAP2 0000184e: ADD 0000184f: SWAP1 00001850: DUP5 00001851: ADD 00001852: PUSH2 0x0315 00001855: JUMP 00001856: JUMPDEST 00001857: POP 00001858: DUP6 00001859: DUP3 0000185a: LT 0000185b: ISZERO 0000185c: PUSH2 0x0351 0000185f: JUMPI 00001860: DUP8 00001861: DUP6 00001862: ADD 00001863: MLOAD 00001864: PUSH0 00001865: NOT 00001866: PUSH1 0x03 00001868: DUP9 00001869: SWAP1 0000186a: SHL 0000186b: PUSH1 0xf8 0000186d: AND 0000186e: SHR 0000186f: NOT 00001870: AND 00001871: DUP2 00001872: SSTORE 00001873: JUMPDEST 00001874: POP 00001875: POP 00001876: PUSH1 0x01 00001878: DUP5 00001879: PUSH1 0x01 0000187b: SHL 0000187c: ADD 0000187d: DUP6 0000187e: SSTORE 0000187f: JUMPDEST 00001880: POP 00001881: POP 00001882: POP 00001883: POP 00001884: POP 00001885: POP 00001886: JUMP 00001887: JUMPDEST 00001888: PUSH2 0x0912 0000188b: DUP1 0000188c: PUSH2 0x0372 0000188f: PUSH0 00001890: CODECOPY 00001891: PUSH0 00001892: RETURN 00001893: INVALID 00001894: PUSH1 0x80 00001896: PUSH1 0x40 00001898: MSTORE 00001899: CALLVALUE 0000189a: DUP1 0000189b: ISZERO 0000189c: PUSH2 0x000f 0000189f: JUMPI 000018a0: PUSH0 000018a1: DUP1 000018a2: REVERT 000018a3: JUMPDEST 000018a4: POP 000018a5: PUSH1 0x04 000018a7: CALLDATASIZE 000018a8: LT 000018a9: PUSH2 0x00cf 000018ac: JUMPI 000018ad: PUSH0 000018ae: CALLDATALOAD 000018af: PUSH1 0xe0 000018b1: SHR 000018b2: DUP1 000018b3: PUSH4 0x70a08231 000018b8: GT 000018b9: PUSH2 0x007d 000018bc: JUMPI 000018bd: DUP1 000018be: PUSH4 0xa9059cbb 000018c3: GT 000018c4: PUSH2 0x0058 000018c7: JUMPI 000018c8: DUP1 000018c9: PUSH4 0xa9059cbb 000018ce: EQ 000018cf: PUSH2 0x01b8 000018d2: JUMPI 000018d3: DUP1 000018d4: PUSH4 0xdd62ed3e 000018d9: EQ 000018da: PUSH2 0x01cb 000018dd: JUMPI 000018de: DUP1 000018df: PUSH4 0xfc0c546a 000018e4: EQ 000018e5: PUSH2 0x0203 000018e8: JUMPI 000018e9: PUSH0 000018ea: DUP1 000018eb: REVERT 000018ec: JUMPDEST 000018ed: DUP1 000018ee: PUSH4 0x70a08231 000018f3: EQ 000018f4: PUSH2 0x0173 000018f7: JUMPI 000018f8: DUP1 000018f9: PUSH4 0x89c39ad4 000018fe: EQ 000018ff: PUSH2 0x019b 00001902: JUMPI 00001903: DUP1 00001904: PUSH4 0x95d89b41 00001909: EQ 0000190a: PUSH2 0x01b0 0000190d: JUMPI 0000190e: PUSH0 0000190f: DUP1 00001910: REVERT 00001911: JUMPDEST 00001912: DUP1 00001913: PUSH4 0x23b872dd 00001918: GT 00001919: PUSH2 0x00ad 0000191c: JUMPI 0000191d: DUP1 0000191e: PUSH4 0x23b872dd 00001923: EQ 00001924: PUSH2 0x0126 00001927: JUMPI 00001928: DUP1 00001929: PUSH4 0x313ce567 0000192e: EQ 0000192f: PUSH2 0x0139 00001932: JUMPI 00001933: DUP1 00001934: PUSH4 0x53dc45bb 00001939: EQ 0000193a: PUSH2 0x0148 0000193d: JUMPI 0000193e: PUSH0 0000193f: DUP1 00001940: REVERT 00001941: JUMPDEST 00001942: DUP1 00001943: PUSH4 0x06fdde03 00001948: EQ 00001949: PUSH2 0x00d3 0000194c: JUMPI 0000194d: DUP1 0000194e: PUSH4 0x095ea7b3 00001953: EQ 00001954: PUSH2 0x00f1 00001957: JUMPI 00001958: DUP1 00001959: PUSH4 0x18160ddd 0000195e: EQ 0000195f: PUSH2 0x0114 00001962: JUMPI 00001963: JUMPDEST 00001964: PUSH0 00001965: DUP1 00001966: REVERT 00001967: JUMPDEST 00001968: PUSH2 0x00db 0000196b: PUSH2 0x0216 0000196e: JUMP 0000196f: JUMPDEST 00001970: PUSH1 0x40 00001972: MLOAD 00001973: PUSH2 0x00e8 00001976: SWAP2 00001977: SWAP1 00001978: PUSH2 0x074d 0000197b: JUMP 0000197c: JUMPDEST 0000197d: PUSH1 0x40 0000197f: MLOAD 00001980: DUP1 00001981: SWAP2 00001982: SUB 00001983: SWAP1 00001984: RETURN 00001985: JUMPDEST 00001986: PUSH2 0x0104 00001989: PUSH2 0x00ff 0000198c: CALLDATASIZE 0000198d: PUSH1 0x04 0000198f: PUSH2 0x079d 00001992: JUMP 00001993: JUMPDEST 00001994: PUSH2 0x02a6 00001997: JUMP 00001998: JUMPDEST 00001999: PUSH1 0x40 0000199b: MLOAD 0000199c: SWAP1 0000199d: ISZERO 0000199e: ISZERO 0000199f: DUP2 000019a0: MSTORE 000019a1: PUSH1 0x20 000019a3: ADD 000019a4: PUSH2 0x00e8 000019a7: JUMP 000019a8: JUMPDEST 000019a9: PUSH1 0x07 000019ab: SLOAD 000019ac: JUMPDEST 000019ad: PUSH1 0x40 000019af: MLOAD 000019b0: SWAP1 000019b1: DUP2 000019b2: MSTORE 000019b3: PUSH1 0x20 000019b5: ADD 000019b6: PUSH2 0x00e8 000019b9: JUMP 000019ba: JUMPDEST 000019bb: PUSH2 0x0104 000019be: PUSH2 0x0134 000019c1: CALLDATASIZE 000019c2: PUSH1 0x04 000019c4: PUSH2 0x07c5 000019c7: JUMP 000019c8: JUMPDEST 000019c9: PUSH2 0x02bf 000019cc: JUMP 000019cd: JUMPDEST 000019ce: PUSH1 0x40 000019d0: MLOAD 000019d1: PUSH1 0x12 000019d3: DUP2 000019d4: MSTORE 000019d5: PUSH1 0x20 000019d7: ADD 000019d8: PUSH2 0x00e8 000019db: JUMP 000019dc: JUMPDEST 000019dd: PUSH1 0x05 000019df: SLOAD 000019e0: PUSH2 0x015b 000019e3: SWAP1 000019e4: PUSH1 0x01 000019e6: PUSH1 0x01 000019e8: PUSH1 0xa0 000019ea: SHL 000019eb: SUB 000019ec: AND 000019ed: DUP2 000019ee: JUMP 000019ef: JUMPDEST 000019f0: PUSH1 0x40 000019f2: MLOAD 000019f3: PUSH1 0x01 000019f5: PUSH1 0x01 000019f7: PUSH1 0xa0 000019f9: SHL 000019fa: SUB 000019fb: SWAP1 000019fc: SWAP2 000019fd: AND 000019fe: DUP2 000019ff: MSTORE 00001a00: PUSH1 0x20 00001a02: ADD 00001a03: PUSH2 0x00e8 00001a06: JUMP 00001a07: JUMPDEST 00001a08: PUSH2 0x0118 00001a0b: PUSH2 0x0181 00001a0e: CALLDATASIZE 00001a0f: PUSH1 0x04 00001a11: PUSH2 0x07fe 00001a14: JUMP 00001a15: JUMPDEST 00001a16: PUSH1 0x01 00001a18: PUSH1 0x01 00001a1a: PUSH1 0xa0 00001a1c: SHL 00001a1d: SUB 00001a1e: AND 00001a1f: PUSH0 00001a20: SWAP1 00001a21: DUP2 00001a22: MSTORE 00001a23: PUSH1 0x20 00001a25: DUP2 00001a26: SWAP1 00001a27: MSTORE 00001a28: PUSH1 0x40 00001a2a: SWAP1 00001a2b: KECCAK256 00001a2c: SLOAD 00001a2d: SWAP1 00001a2e: JUMP 00001a2f: JUMPDEST 00001a30: PUSH2 0x01ae 00001a33: PUSH2 0x01a9 00001a36: CALLDATASIZE 00001a37: PUSH1 0x04 00001a39: PUSH2 0x081e 00001a3c: JUMP 00001a3d: JUMPDEST 00001a3e: PUSH2 0x02e2 00001a41: JUMP 00001a42: JUMPDEST 00001a43: STOP 00001a44: JUMPDEST 00001a45: PUSH2 0x00db 00001a48: PUSH2 0x0417 00001a4b: JUMP 00001a4c: JUMPDEST 00001a4d: PUSH2 0x0104 00001a50: PUSH2 0x01c6 00001a53: CALLDATASIZE 00001a54: PUSH1 0x04 00001a56: PUSH2 0x079d 00001a59: JUMP 00001a5a: JUMPDEST 00001a5b: PUSH2 0x0426 00001a5e: JUMP 00001a5f: JUMPDEST 00001a60: PUSH2 0x0118 00001a63: PUSH2 0x01d9 00001a66: CALLDATASIZE 00001a67: PUSH1 0x04 00001a69: PUSH2 0x0835 00001a6c: JUMP 00001a6d: JUMPDEST 00001a6e: PUSH1 0x01 00001a70: PUSH1 0x01 00001a72: PUSH1 0xa0 00001a74: SHL 00001a75: SUB 00001a76: SWAP2 00001a77: DUP3 00001a78: AND 00001a79: PUSH0 00001a7a: SWAP1 00001a7b: DUP2 00001a7c: MSTORE 00001a7d: PUSH1 0x01 00001a7f: PUSH1 0x20 00001a81: SWAP1 00001a82: DUP2 00001a83: MSTORE 00001a84: PUSH1 0x40 00001a86: DUP1 00001a87: DUP4 00001a88: KECCAK256 00001a89: SWAP4 00001a8a: SWAP1 00001a8b: SWAP5 00001a8c: AND 00001a8d: DUP3 00001a8e: MSTORE 00001a8f: SWAP2 00001a90: SWAP1 00001a91: SWAP2 00001a92: MSTORE 00001a93: KECCAK256 00001a94: SLOAD 00001a95: SWAP1 00001a96: JUMP 00001a97: JUMPDEST 00001a98: PUSH1 0x06 00001a9a: SLOAD 00001a9b: PUSH2 0x015b 00001a9e: SWAP1 00001a9f: PUSH1 0x01 00001aa1: PUSH1 0x01 00001aa3: PUSH1 0xa0 00001aa5: SHL 00001aa6: SUB 00001aa7: AND 00001aa8: DUP2 00001aa9: JUMP 00001aaa: JUMPDEST 00001aab: PUSH1 0x60 00001aad: PUSH1 0x03 00001aaf: DUP1 00001ab0: SLOAD 00001ab1: PUSH2 0x0225 00001ab4: SWAP1 00001ab5: PUSH2 0x0866 00001ab8: JUMP 00001ab9: JUMPDEST 00001aba: DUP1 00001abb: PUSH1 0x1f 00001abd: ADD 00001abe: PUSH1 0x20 00001ac0: DUP1 00001ac1: SWAP2 00001ac2: DIV 00001ac3: MUL 00001ac4: PUSH1 0x20 00001ac6: ADD 00001ac7: PUSH1 0x40 00001ac9: MLOAD 00001aca: SWAP1 00001acb: DUP2 00001acc: ADD 00001acd: PUSH1 0x40 00001acf: MSTORE 00001ad0: DUP1 00001ad1: SWAP3 00001ad2: SWAP2 00001ad3: SWAP1 00001ad4: DUP2 00001ad5: DUP2 00001ad6: MSTORE 00001ad7: PUSH1 0x20 00001ad9: ADD 00001ada: DUP3 00001adb: DUP1 00001adc: SLOAD 00001add: PUSH2 0x0251 00001ae0: SWAP1 00001ae1: PUSH2 0x0866 00001ae4: JUMP 00001ae5: JUMPDEST 00001ae6: DUP1 00001ae7: ISZERO 00001ae8: PUSH2 0x029c 00001aeb: JUMPI 00001aec: DUP1 00001aed: PUSH1 0x1f 00001aef: LT 00001af0: PUSH2 0x0273 00001af3: JUMPI 00001af4: PUSH2 0x0100 00001af7: DUP1 00001af8: DUP4 00001af9: SLOAD 00001afa: DIV 00001afb: MUL 00001afc: DUP4 00001afd: MSTORE 00001afe: SWAP2 00001aff: PUSH1 0x20 00001b01: ADD 00001b02: SWAP2 00001b03: PUSH2 0x029c 00001b06: JUMP 00001b07: JUMPDEST 00001b08: DUP3 00001b09: ADD 00001b0a: SWAP2 00001b0b: SWAP1 00001b0c: PUSH0 00001b0d: MSTORE 00001b0e: PUSH1 0x20 00001b10: PUSH0 00001b11: KECCAK256 00001b12: SWAP1 00001b13: JUMPDEST 00001b14: DUP2 00001b15: SLOAD 00001b16: DUP2 00001b17: MSTORE 00001b18: SWAP1 00001b19: PUSH1 0x01 00001b1b: ADD 00001b1c: SWAP1 00001b1d: PUSH1 0x20 00001b1f: ADD 00001b20: DUP1 00001b21: DUP4 00001b22: GT 00001b23: PUSH2 0x027f 00001b26: JUMPI 00001b27: DUP3 00001b28: SWAP1 00001b29: SUB 00001b2a: PUSH1 0x1f 00001b2c: AND 00001b2d: DUP3 00001b2e: ADD 00001b2f: SWAP2 00001b30: JUMPDEST 00001b31: POP 00001b32: POP 00001b33: POP 00001b34: POP 00001b35: POP 00001b36: SWAP1 00001b37: POP 00001b38: SWAP1 00001b39: JUMP 00001b3a: JUMPDEST 00001b3b: PUSH0 00001b3c: CALLER 00001b3d: PUSH2 0x02b3 00001b40: DUP2 00001b41: DUP6 00001b42: DUP6 00001b43: PUSH2 0x0433 00001b46: JUMP 00001b47: JUMPDEST 00001b48: PUSH1 0x01 00001b4a: SWAP2 00001b4b: POP 00001b4c: POP 00001b4d: JUMPDEST 00001b4e: SWAP3 00001b4f: SWAP2 00001b50: POP 00001b51: POP 00001b52: JUMP 00001b53: JUMPDEST 00001b54: PUSH0 00001b55: CALLER 00001b56: PUSH2 0x02cc 00001b59: DUP6 00001b5a: DUP3 00001b5b: DUP6 00001b5c: PUSH2 0x0445 00001b5f: JUMP 00001b60: JUMPDEST 00001b61: PUSH2 0x02d7 00001b64: DUP6 00001b65: DUP6 00001b66: DUP6 00001b67: PUSH2 0x04c0 00001b6a: JUMP 00001b6b: JUMPDEST 00001b6c: POP 00001b6d: PUSH1 0x01 00001b6f: SWAP5 00001b70: SWAP4 00001b71: POP 00001b72: POP 00001b73: POP 00001b74: POP 00001b75: JUMP 00001b76: JUMPDEST 00001b77: PUSH1 0x05 00001b79: SLOAD 00001b7a: PUSH1 0x01 00001b7c: PUSH1 0x01 00001b7e: PUSH1 0xa0 00001b80: SHL 00001b81: SUB 00001b82: AND 00001b83: PUSH2 0x033f 00001b86: JUMPI 00001b87: PUSH1 0x40 00001b89: MLOAD 00001b8a: PUSH3 0x461bcd 00001b8e: PUSH1 0xe5 00001b90: SHL 00001b91: DUP2 00001b92: MSTORE 00001b93: PUSH1 0x20 00001b95: PUSH1 0x04 00001b97: DUP3 00001b98: ADD 00001b99: MSTORE 00001b9a: PUSH1 0x15 00001b9c: PUSH1 0x24 00001b9e: DUP3 00001b9f: ADD 00001ba0: MSTORE 00001ba1: PUSH32 0x4e6f206e65787420666f72776172646572207365740000000000000000000000 00001bc2: PUSH1 0x44 00001bc4: DUP3 00001bc5: ADD 00001bc6: MSTORE 00001bc7: PUSH1 0x64 00001bc9: ADD 00001bca: JUMPDEST 00001bcb: PUSH1 0x40 00001bcd: MLOAD 00001bce: DUP1 00001bcf: SWAP2 00001bd0: SUB 00001bd1: SWAP1 00001bd2: REVERT 00001bd3: JUMPDEST 00001bd4: PUSH1 0x06 00001bd6: SLOAD 00001bd7: PUSH1 0x05 00001bd9: SLOAD 00001bda: PUSH1 0x40 00001bdc: MLOAD 00001bdd: PUSH4 0xa9059cbb 00001be2: PUSH1 0xe0 00001be4: SHL 00001be5: DUP2 00001be6: MSTORE 00001be7: PUSH1 0x01 00001be9: PUSH1 0x01 00001beb: PUSH1 0xa0 00001bed: SHL 00001bee: SUB 00001bef: SWAP2 00001bf0: DUP3 00001bf1: AND 00001bf2: PUSH1 0x04 00001bf4: DUP3 00001bf5: ADD 00001bf6: MSTORE 00001bf7: PUSH1 0x24 00001bf9: DUP2 00001bfa: ADD 00001bfb: DUP5 00001bfc: SWAP1 00001bfd: MSTORE 00001bfe: SWAP2 00001bff: AND 00001c00: SWAP1 00001c01: PUSH4 0xa9059cbb 00001c06: SWAP1 00001c07: PUSH1 0x44 00001c09: ADD 00001c0a: PUSH1 0x20 00001c0c: PUSH1 0x40 00001c0e: MLOAD 00001c0f: DUP1 00001c10: DUP4 00001c11: SUB 00001c12: DUP2 00001c13: PUSH0 00001c14: DUP8 00001c15: GAS 00001c16: CALL 00001c17: ISZERO 00001c18: DUP1 00001c19: ISZERO 00001c1a: PUSH2 0x0391 00001c1d: JUMPI 00001c1e: RETURNDATASIZE 00001c1f: PUSH0 00001c20: DUP1 00001c21: RETURNDATACOPY 00001c22: RETURNDATASIZE 00001c23: PUSH0 00001c24: REVERT 00001c25: JUMPDEST 00001c26: POP 00001c27: POP 00001c28: POP 00001c29: POP 00001c2a: PUSH1 0x40 00001c2c: MLOAD 00001c2d: RETURNDATASIZE 00001c2e: PUSH1 0x1f 00001c30: NOT 00001c31: PUSH1 0x1f 00001c33: DUP3 00001c34: ADD 00001c35: AND 00001c36: DUP3 00001c37: ADD 00001c38: DUP1 00001c39: PUSH1 0x40 00001c3b: MSTORE 00001c3c: POP 00001c3d: DUP2 00001c3e: ADD 00001c3f: SWAP1 00001c40: PUSH2 0x03b5 00001c43: SWAP2 00001c44: SWAP1 00001c45: PUSH2 0x089e 00001c48: JUMP 00001c49: JUMPDEST 00001c4a: POP 00001c4b: PUSH1 0x05 00001c4d: SLOAD 00001c4e: PUSH2 0x03cc 00001c51: SWAP1 00001c52: PUSH1 0x01 00001c54: PUSH1 0x01 00001c56: PUSH1 0xa0 00001c58: SHL 00001c59: SUB 00001c5a: AND 00001c5b: DUP3 00001c5c: PUSH2 0x051d 00001c5f: JUMP 00001c60: JUMPDEST 00001c61: PUSH0 00001c62: PUSH1 0x07 00001c64: SSTORE 00001c65: PUSH1 0x05 00001c67: SLOAD 00001c68: PUSH1 0x40 00001c6a: MLOAD 00001c6b: DUP3 00001c6c: DUP2 00001c6d: MSTORE 00001c6e: PUSH1 0x01 00001c70: PUSH1 0x01 00001c72: PUSH1 0xa0 00001c74: SHL 00001c75: SUB 00001c76: SWAP1 00001c77: SWAP2 00001c78: AND 00001c79: SWAP1 00001c7a: ADDRESS 00001c7b: SWAP1 00001c7c: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001c9d: SWAP1 00001c9e: PUSH1 0x20 00001ca0: ADD 00001ca1: PUSH1 0x40 00001ca3: MLOAD 00001ca4: DUP1 00001ca5: SWAP2 00001ca6: SUB 00001ca7: SWAP1 00001ca8: LOG3 00001ca9: POP 00001caa: JUMP 00001cab: JUMPDEST 00001cac: PUSH1 0x60 00001cae: PUSH1 0x04 00001cb0: DUP1 00001cb1: SLOAD 00001cb2: PUSH2 0x0225 00001cb5: SWAP1 00001cb6: PUSH2 0x0866 00001cb9: JUMP 00001cba: JUMPDEST 00001cbb: PUSH0 00001cbc: CALLER 00001cbd: PUSH2 0x02b3 00001cc0: DUP2 00001cc1: DUP6 00001cc2: DUP6 00001cc3: PUSH2 0x04c0 00001cc6: JUMP 00001cc7: JUMPDEST 00001cc8: PUSH2 0x0440 00001ccb: DUP4 00001ccc: DUP4 00001ccd: DUP4 00001cce: PUSH1 0x01 00001cd0: PUSH2 0x0555 00001cd3: JUMP 00001cd4: JUMPDEST 00001cd5: POP 00001cd6: POP 00001cd7: POP 00001cd8: JUMP 00001cd9: JUMPDEST 00001cda: PUSH1 0x01 00001cdc: PUSH1 0x01 00001cde: PUSH1 0xa0 00001ce0: SHL 00001ce1: SUB 00001ce2: DUP4 00001ce3: DUP2 00001ce4: AND 00001ce5: PUSH0 00001ce6: SWAP1 00001ce7: DUP2 00001ce8: MSTORE 00001ce9: PUSH1 0x01 00001ceb: PUSH1 0x20 00001ced: SWAP1 00001cee: DUP2 00001cef: MSTORE 00001cf0: PUSH1 0x40 00001cf2: DUP1 00001cf3: DUP4 00001cf4: KECCAK256 00001cf5: SWAP4 00001cf6: DUP7 00001cf7: AND 00001cf8: DUP4 00001cf9: MSTORE 00001cfa: SWAP3 00001cfb: SWAP1 00001cfc: MSTORE 00001cfd: KECCAK256 00001cfe: SLOAD 00001cff: PUSH0 00001d00: NOT 00001d01: DUP2 00001d02: EQ 00001d03: PUSH2 0x04ba 00001d06: JUMPI 00001d07: DUP2 00001d08: DUP2 00001d09: LT 00001d0a: ISZERO 00001d0b: PUSH2 0x04ac 00001d0e: JUMPI 00001d0f: PUSH1 0x40 00001d11: MLOAD 00001d12: PUSH4 0x7dc7a0d9 00001d17: PUSH1 0xe1 00001d19: SHL 00001d1a: DUP2 00001d1b: MSTORE 00001d1c: PUSH1 0x01 00001d1e: PUSH1 0x01 00001d20: PUSH1 0xa0 00001d22: SHL 00001d23: SUB 00001d24: DUP5 00001d25: AND 00001d26: PUSH1 0x04 00001d28: DUP3 00001d29: ADD 00001d2a: MSTORE 00001d2b: PUSH1 0x24 00001d2d: DUP2 00001d2e: ADD 00001d2f: DUP3 00001d30: SWAP1 00001d31: MSTORE 00001d32: PUSH1 0x44 00001d34: DUP2 00001d35: ADD 00001d36: DUP4 00001d37: SWAP1 00001d38: MSTORE 00001d39: PUSH1 0x64 00001d3b: ADD 00001d3c: PUSH2 0x0336 00001d3f: JUMP 00001d40: JUMPDEST 00001d41: PUSH2 0x04ba 00001d44: DUP5 00001d45: DUP5 00001d46: DUP5 00001d47: DUP5 00001d48: SUB 00001d49: PUSH0 00001d4a: PUSH2 0x0555 00001d4d: JUMP 00001d4e: JUMPDEST 00001d4f: POP 00001d50: POP 00001d51: POP 00001d52: POP 00001d53: JUMP 00001d54: JUMPDEST 00001d55: PUSH1 0x01 00001d57: PUSH1 0x01 00001d59: PUSH1 0xa0 00001d5b: SHL 00001d5c: SUB 00001d5d: DUP4 00001d5e: AND 00001d5f: PUSH2 0x04e9 00001d62: JUMPI 00001d63: PUSH1 0x40 00001d65: MLOAD 00001d66: PUSH4 0x4b637e8f 00001d6b: PUSH1 0xe1 00001d6d: SHL 00001d6e: DUP2 00001d6f: MSTORE 00001d70: PUSH0 00001d71: PUSH1 0x04 00001d73: DUP3 00001d74: ADD 00001d75: MSTORE 00001d76: PUSH1 0x24 00001d78: ADD 00001d79: PUSH2 0x0336 00001d7c: JUMP 00001d7d: JUMPDEST 00001d7e: PUSH1 0x01 00001d80: PUSH1 0x01 00001d82: PUSH1 0xa0 00001d84: SHL 00001d85: SUB 00001d86: DUP3 00001d87: AND 00001d88: PUSH2 0x0512 00001d8b: JUMPI 00001d8c: PUSH1 0x40 00001d8e: MLOAD 00001d8f: PUSH4 0xec442f05 00001d94: PUSH1 0xe0 00001d96: SHL 00001d97: DUP2 00001d98: MSTORE 00001d99: PUSH0 00001d9a: PUSH1 0x04 00001d9c: DUP3 00001d9d: ADD 00001d9e: MSTORE 00001d9f: PUSH1 0x24 00001da1: ADD 00001da2: PUSH2 0x0336 00001da5: JUMP 00001da6: JUMPDEST 00001da7: PUSH2 0x0440 00001daa: DUP4 00001dab: DUP4 00001dac: DUP4 00001dad: PUSH2 0x0627 00001db0: JUMP 00001db1: JUMPDEST 00001db2: PUSH1 0x01 00001db4: PUSH1 0x01 00001db6: PUSH1 0xa0 00001db8: SHL 00001db9: SUB 00001dba: DUP3 00001dbb: AND 00001dbc: PUSH2 0x0546 00001dbf: JUMPI 00001dc0: PUSH1 0x40 00001dc2: MLOAD 00001dc3: PUSH4 0xec442f05 00001dc8: PUSH1 0xe0 00001dca: SHL 00001dcb: DUP2 00001dcc: MSTORE 00001dcd: PUSH0 00001dce: PUSH1 0x04 00001dd0: DUP3 00001dd1: ADD 00001dd2: MSTORE 00001dd3: PUSH1 0x24 00001dd5: ADD 00001dd6: PUSH2 0x0336 00001dd9: JUMP 00001dda: JUMPDEST 00001ddb: PUSH2 0x0551 00001dde: PUSH0 00001ddf: DUP4 00001de0: DUP4 00001de1: PUSH2 0x0627 00001de4: JUMP 00001de5: JUMPDEST 00001de6: POP 00001de7: POP 00001de8: JUMP 00001de9: JUMPDEST 00001dea: PUSH1 0x01 00001dec: PUSH1 0x01 00001dee: PUSH1 0xa0 00001df0: SHL 00001df1: SUB 00001df2: DUP5 00001df3: AND 00001df4: PUSH2 0x057e 00001df7: JUMPI 00001df8: PUSH1 0x40 00001dfa: MLOAD 00001dfb: PUSH4 0xe602df05 00001e00: PUSH1 0xe0 00001e02: SHL 00001e03: DUP2 00001e04: MSTORE 00001e05: PUSH0 00001e06: PUSH1 0x04 00001e08: DUP3 00001e09: ADD 00001e0a: MSTORE 00001e0b: PUSH1 0x24 00001e0d: ADD 00001e0e: PUSH2 0x0336 00001e11: JUMP 00001e12: JUMPDEST 00001e13: PUSH1 0x01 00001e15: PUSH1 0x01 00001e17: PUSH1 0xa0 00001e19: SHL 00001e1a: SUB 00001e1b: DUP4 00001e1c: AND 00001e1d: PUSH2 0x05a7 00001e20: JUMPI 00001e21: PUSH1 0x40 00001e23: MLOAD 00001e24: PUSH4 0x4a1406b1 00001e29: PUSH1 0xe1 00001e2b: SHL 00001e2c: DUP2 00001e2d: MSTORE 00001e2e: PUSH0 00001e2f: PUSH1 0x04 00001e31: DUP3 00001e32: ADD 00001e33: MSTORE 00001e34: PUSH1 0x24 00001e36: ADD 00001e37: PUSH2 0x0336 00001e3a: JUMP 00001e3b: JUMPDEST 00001e3c: PUSH1 0x01 00001e3e: PUSH1 0x01 00001e40: PUSH1 0xa0 00001e42: SHL 00001e43: SUB 00001e44: DUP1 00001e45: DUP6 00001e46: AND 00001e47: PUSH0 00001e48: SWAP1 00001e49: DUP2 00001e4a: MSTORE 00001e4b: PUSH1 0x01 00001e4d: PUSH1 0x20 00001e4f: SWAP1 00001e50: DUP2 00001e51: MSTORE 00001e52: PUSH1 0x40 00001e54: DUP1 00001e55: DUP4 00001e56: KECCAK256 00001e57: SWAP4 00001e58: DUP8 00001e59: AND 00001e5a: DUP4 00001e5b: MSTORE 00001e5c: SWAP3 00001e5d: SWAP1 00001e5e: MSTORE 00001e5f: KECCAK256 00001e60: DUP3 00001e61: SWAP1 00001e62: SSTORE 00001e63: DUP1 00001e64: ISZERO 00001e65: PUSH2 0x04ba 00001e68: JUMPI 00001e69: DUP3 00001e6a: PUSH1 0x01 00001e6c: PUSH1 0x01 00001e6e: PUSH1 0xa0 00001e70: SHL 00001e71: SUB 00001e72: AND 00001e73: DUP5 00001e74: PUSH1 0x01 00001e76: PUSH1 0x01 00001e78: PUSH1 0xa0 00001e7a: SHL 00001e7b: SUB 00001e7c: AND 00001e7d: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00001e9e: DUP5 00001e9f: PUSH1 0x40 00001ea1: MLOAD 00001ea2: PUSH2 0x0619 00001ea5: SWAP2 00001ea6: DUP2 00001ea7: MSTORE 00001ea8: PUSH1 0x20 00001eaa: ADD 00001eab: SWAP1 00001eac: JUMP 00001ead: JUMPDEST 00001eae: PUSH1 0x40 00001eb0: MLOAD 00001eb1: DUP1 00001eb2: SWAP2 00001eb3: SUB 00001eb4: SWAP1 00001eb5: LOG3 00001eb6: POP 00001eb7: POP 00001eb8: POP 00001eb9: POP 00001eba: JUMP 00001ebb: JUMPDEST 00001ebc: PUSH1 0x01 00001ebe: PUSH1 0x01 00001ec0: PUSH1 0xa0 00001ec2: SHL 00001ec3: SUB 00001ec4: DUP4 00001ec5: AND 00001ec6: PUSH2 0x0651 00001ec9: JUMPI 00001eca: DUP1 00001ecb: PUSH1 0x02 00001ecd: PUSH0 00001ece: DUP3 00001ecf: DUP3 00001ed0: SLOAD 00001ed1: PUSH2 0x0646 00001ed4: SWAP2 00001ed5: SWAP1 00001ed6: PUSH2 0x08bd 00001ed9: JUMP 00001eda: JUMPDEST 00001edb: SWAP1 00001edc: SWAP2 00001edd: SSTORE 00001ede: POP 00001edf: PUSH2 0x06c1 00001ee2: SWAP1 00001ee3: POP 00001ee4: JUMP 00001ee5: JUMPDEST 00001ee6: PUSH1 0x01 00001ee8: PUSH1 0x01 00001eea: PUSH1 0xa0 00001eec: SHL 00001eed: SUB 00001eee: DUP4 00001eef: AND 00001ef0: PUSH0 00001ef1: SWAP1 00001ef2: DUP2 00001ef3: MSTORE 00001ef4: PUSH1 0x20 00001ef6: DUP2 00001ef7: SWAP1 00001ef8: MSTORE 00001ef9: PUSH1 0x40 00001efb: SWAP1 00001efc: KECCAK256 00001efd: SLOAD 00001efe: DUP2 00001eff: DUP2 00001f00: LT 00001f01: ISZERO 00001f02: PUSH2 0x06a3 00001f05: JUMPI 00001f06: PUSH1 0x40 00001f08: MLOAD 00001f09: PUSH4 0x391434e3 00001f0e: PUSH1 0xe2 00001f10: SHL 00001f11: DUP2 00001f12: MSTORE 00001f13: PUSH1 0x01 00001f15: PUSH1 0x01 00001f17: PUSH1 0xa0 00001f19: SHL 00001f1a: SUB 00001f1b: DUP6 00001f1c: AND 00001f1d: PUSH1 0x04 00001f1f: DUP3 00001f20: ADD 00001f21: MSTORE 00001f22: PUSH1 0x24 00001f24: DUP2 00001f25: ADD 00001f26: DUP3 00001f27: SWAP1 00001f28: MSTORE 00001f29: PUSH1 0x44 00001f2b: DUP2 00001f2c: ADD 00001f2d: DUP4 00001f2e: SWAP1 00001f2f: MSTORE 00001f30: PUSH1 0x64 00001f32: ADD 00001f33: PUSH2 0x0336 00001f36: JUMP 00001f37: JUMPDEST 00001f38: PUSH1 0x01 00001f3a: PUSH1 0x01 00001f3c: PUSH1 0xa0 00001f3e: SHL 00001f3f: SUB 00001f40: DUP5 00001f41: AND 00001f42: PUSH0 00001f43: SWAP1 00001f44: DUP2 00001f45: MSTORE 00001f46: PUSH1 0x20 00001f48: DUP2 00001f49: SWAP1 00001f4a: MSTORE 00001f4b: PUSH1 0x40 00001f4d: SWAP1 00001f4e: KECCAK256 00001f4f: SWAP1 00001f50: DUP3 00001f51: SWAP1 00001f52: SUB 00001f53: SWAP1 00001f54: SSTORE 00001f55: JUMPDEST 00001f56: PUSH1 0x01 00001f58: PUSH1 0x01 00001f5a: PUSH1 0xa0 00001f5c: SHL 00001f5d: SUB 00001f5e: DUP3 00001f5f: AND 00001f60: PUSH2 0x06dd 00001f63: JUMPI 00001f64: PUSH1 0x02 00001f66: DUP1 00001f67: SLOAD 00001f68: DUP3 00001f69: SWAP1 00001f6a: SUB 00001f6b: SWAP1 00001f6c: SSTORE 00001f6d: PUSH2 0x06fb 00001f70: JUMP 00001f71: JUMPDEST 00001f72: PUSH1 0x01 00001f74: PUSH1 0x01 00001f76: PUSH1 0xa0 00001f78: SHL 00001f79: SUB 00001f7a: DUP3 00001f7b: AND 00001f7c: PUSH0 00001f7d: SWAP1 00001f7e: DUP2 00001f7f: MSTORE 00001f80: PUSH1 0x20 00001f82: DUP2 00001f83: SWAP1 00001f84: MSTORE 00001f85: PUSH1 0x40 00001f87: SWAP1 00001f88: KECCAK256 00001f89: DUP1 00001f8a: SLOAD 00001f8b: DUP3 00001f8c: ADD 00001f8d: SWAP1 00001f8e: SSTORE 00001f8f: JUMPDEST 00001f90: DUP2 00001f91: PUSH1 0x01 00001f93: PUSH1 0x01 00001f95: PUSH1 0xa0 00001f97: SHL 00001f98: SUB 00001f99: AND 00001f9a: DUP4 00001f9b: PUSH1 0x01 00001f9d: PUSH1 0x01 00001f9f: PUSH1 0xa0 00001fa1: SHL 00001fa2: SUB 00001fa3: AND 00001fa4: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001fc5: DUP4 00001fc6: PUSH1 0x40 00001fc8: MLOAD 00001fc9: PUSH2 0x0740 00001fcc: SWAP2 00001fcd: DUP2 00001fce: MSTORE 00001fcf: PUSH1 0x20 00001fd1: ADD 00001fd2: SWAP1 00001fd3: JUMP 00001fd4: JUMPDEST 00001fd5: PUSH1 0x40 00001fd7: MLOAD 00001fd8: DUP1 00001fd9: SWAP2 00001fda: SUB 00001fdb: SWAP1 00001fdc: LOG3 00001fdd: POP 00001fde: POP 00001fdf: POP 00001fe0: JUMP 00001fe1: JUMPDEST 00001fe2: PUSH1 0x20 00001fe4: DUP2 00001fe5: MSTORE 00001fe6: PUSH0 00001fe7: DUP3 00001fe8: MLOAD 00001fe9: DUP1 00001fea: PUSH1 0x20 00001fec: DUP5 00001fed: ADD 00001fee: MSTORE 00001fef: DUP1 00001ff0: PUSH1 0x20 00001ff2: DUP6 00001ff3: ADD 00001ff4: PUSH1 0x40 00001ff6: DUP6 00001ff7: ADD 00001ff8: MCOPY 00001ff9: PUSH0 00001ffa: PUSH1 0x40 00001ffc: DUP3 00001ffd: DUP6 00001ffe: ADD 00001fff: ADD 00002000: MSTORE 00002001: PUSH1 0x40 00002003: PUSH1 0x1f 00002005: NOT 00002006: PUSH1 0x1f 00002008: DUP4 00002009: ADD 0000200a: AND 0000200b: DUP5 0000200c: ADD 0000200d: ADD 0000200e: SWAP2 0000200f: POP 00002010: POP 00002011: SWAP3 00002012: SWAP2 00002013: POP 00002014: POP 00002015: JUMP 00002016: JUMPDEST 00002017: DUP1 00002018: CALLDATALOAD 00002019: PUSH1 0x01 0000201b: PUSH1 0x01 0000201d: PUSH1 0xa0 0000201f: SHL 00002020: SUB 00002021: DUP2 00002022: AND 00002023: DUP2 00002024: EQ 00002025: PUSH2 0x0798 00002028: JUMPI 00002029: PUSH0 0000202a: DUP1 0000202b: REVERT 0000202c: JUMPDEST 0000202d: SWAP2 0000202e: SWAP1 0000202f: POP 00002030: JUMP 00002031: JUMPDEST 00002032: PUSH0 00002033: DUP1 00002034: PUSH1 0x40 00002036: DUP4 00002037: DUP6 00002038: SUB 00002039: SLT 0000203a: ISZERO 0000203b: PUSH2 0x07ae 0000203e: JUMPI 0000203f: PUSH0 00002040: DUP1 00002041: REVERT 00002042: JUMPDEST 00002043: PUSH2 0x07b7 00002046: DUP4 00002047: PUSH2 0x0782 0000204a: JUMP 0000204b: JUMPDEST 0000204c: SWAP5 0000204d: PUSH1 0x20 0000204f: SWAP4 00002050: SWAP1 00002051: SWAP4 00002052: ADD 00002053: CALLDATALOAD 00002054: SWAP4 00002055: POP 00002056: POP 00002057: POP 00002058: JUMP 00002059: JUMPDEST 0000205a: PUSH0 0000205b: DUP1 0000205c: PUSH0 0000205d: PUSH1 0x60 0000205f: DUP5 00002060: DUP7 00002061: SUB 00002062: SLT 00002063: ISZERO 00002064: PUSH2 0x07d7 00002067: JUMPI 00002068: PUSH0 00002069: DUP1 0000206a: REVERT 0000206b: JUMPDEST 0000206c: PUSH2 0x07e0 0000206f: DUP5 00002070: PUSH2 0x0782 00002073: JUMP 00002074: JUMPDEST 00002075: SWAP3 00002076: POP 00002077: PUSH2 0x07ee 0000207a: PUSH1 0x20 0000207c: DUP6 0000207d: ADD 0000207e: PUSH2 0x0782 00002081: JUMP 00002082: JUMPDEST 00002083: SWAP2 00002084: POP 00002085: PUSH1 0x40 00002087: DUP5 00002088: ADD 00002089: CALLDATALOAD 0000208a: SWAP1 0000208b: POP 0000208c: SWAP3 0000208d: POP 0000208e: SWAP3 0000208f: POP 00002090: SWAP3 00002091: JUMP 00002092: JUMPDEST 00002093: PUSH0 00002094: PUSH1 0x20 00002096: DUP3 00002097: DUP5 00002098: SUB 00002099: SLT 0000209a: ISZERO 0000209b: PUSH2 0x080e 0000209e: JUMPI 0000209f: PUSH0 000020a0: DUP1 000020a1: REVERT 000020a2: JUMPDEST 000020a3: PUSH2 0x0817 000020a6: DUP3 000020a7: PUSH2 0x0782 000020aa: JUMP 000020ab: JUMPDEST 000020ac: SWAP4 000020ad: SWAP3 000020ae: POP 000020af: POP 000020b0: POP 000020b1: JUMP 000020b2: JUMPDEST 000020b3: PUSH0 000020b4: PUSH1 0x20 000020b6: DUP3 000020b7: DUP5 000020b8: SUB 000020b9: SLT 000020ba: ISZERO 000020bb: PUSH2 0x082e 000020be: JUMPI 000020bf: PUSH0 000020c0: DUP1 000020c1: REVERT 000020c2: JUMPDEST 000020c3: POP 000020c4: CALLDATALOAD 000020c5: SWAP2 000020c6: SWAP1 000020c7: POP 000020c8: JUMP 000020c9: JUMPDEST 000020ca: PUSH0 000020cb: DUP1 000020cc: PUSH1 0x40 000020ce: DUP4 000020cf: DUP6 000020d0: SUB 000020d1: SLT 000020d2: ISZERO 000020d3: PUSH2 0x0846 000020d6: JUMPI 000020d7: PUSH0 000020d8: DUP1 000020d9: REVERT 000020da: JUMPDEST 000020db: PUSH2 0x084f 000020de: DUP4 000020df: PUSH2 0x0782 000020e2: JUMP 000020e3: JUMPDEST 000020e4: SWAP2 000020e5: POP 000020e6: PUSH2 0x085d 000020e9: PUSH1 0x20 000020eb: DUP5 000020ec: ADD 000020ed: PUSH2 0x0782 000020f0: JUMP 000020f1: JUMPDEST 000020f2: SWAP1 000020f3: POP 000020f4: SWAP3 000020f5: POP 000020f6: SWAP3 000020f7: SWAP1 000020f8: POP 000020f9: JUMP 000020fa: JUMPDEST 000020fb: PUSH1 0x01 000020fd: DUP2 000020fe: DUP2 000020ff: SHR 00002100: SWAP1 00002101: DUP3 00002102: AND 00002103: DUP1 00002104: PUSH2 0x087a 00002107: JUMPI 00002108: PUSH1 0x7f 0000210a: DUP3 0000210b: AND 0000210c: SWAP2 0000210d: POP 0000210e: JUMPDEST 0000210f: PUSH1 0x20 00002111: DUP3 00002112: LT 00002113: DUP2 00002114: SUB 00002115: PUSH2 0x0898 00002118: JUMPI 00002119: PUSH4 0x4e487b71 0000211e: PUSH1 0xe0 00002120: SHL 00002121: PUSH0 00002122: MSTORE 00002123: PUSH1 0x22 00002125: PUSH1 0x04 00002127: MSTORE 00002128: PUSH1 0x24 0000212a: PUSH0 0000212b: REVERT 0000212c: JUMPDEST 0000212d: POP 0000212e: SWAP2 0000212f: SWAP1 00002130: POP 00002131: JUMP 00002132: JUMPDEST 00002133: PUSH0 00002134: PUSH1 0x20 00002136: DUP3 00002137: DUP5 00002138: SUB 00002139: SLT 0000213a: ISZERO 0000213b: PUSH2 0x08ae 0000213e: JUMPI 0000213f: PUSH0 00002140: DUP1 00002141: REVERT 00002142: JUMPDEST 00002143: DUP2 00002144: MLOAD 00002145: DUP1 00002146: ISZERO 00002147: ISZERO 00002148: DUP2 00002149: EQ 0000214a: PUSH2 0x0817 0000214d: JUMPI 0000214e: PUSH0 0000214f: DUP1 00002150: REVERT 00002151: JUMPDEST 00002152: DUP1 00002153: DUP3 00002154: ADD 00002155: DUP1 00002156: DUP3 00002157: GT 00002158: ISZERO 00002159: PUSH2 0x02b9 0000215c: JUMPI 0000215d: PUSH4 0x4e487b71 00002162: PUSH1 0xe0 00002164: SHL 00002165: PUSH0 00002166: MSTORE 00002167: PUSH1 0x11 00002169: PUSH1 0x04 0000216b: MSTORE 0000216c: PUSH1 0x24 0000216e: PUSH0 0000216f: REVERT 00002170: INVALID 00002171: LOG2 00002172: PUSH5 0x6970667358 00002178: UNKNOWN(0x22) 00002179: SLT 0000217a: KECCAK256 0000217b: UNKNOWN(0xB0) 0000217c: TLOAD 0000217d: MLOAD 0000217e: PUSH12 0xf1103418f9b0a3a7763760ca 0000218b: UNKNOWN(0xBA) 0000218c: UNKNOWN(0xEC) 0000218d: UNKNOWN(0xDD) 0000218e: PUSH31 0x3cb6dada81dbf0bddb7d7acc64736f6c63430008190033a264697066735822 000021ae: SLT 000021af: KECCAK256 000021b0: LOG2 000021b1: UNKNOWN(0xBC) 000021b2: UNKNOWN(0xDF) 000021b3: GASPRICE 000021b4: UNKNOWN(0x0D) 000021b5: PUSH9 0x25fef92cac9c6881f3 000021bf: PUSH16 0x46789dc6864ea3dade1a8f25fb60f817 000021d0: PUSH5 0x736f6c6343 000021d6: STOP 000021d7: ADDMOD 000021d8: NOT 000021d9: STOP 000021da: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xd7caa4f61b045d65b077b32ab772a102db493a21f120aa659cfa6d70777c13a7
call_targets:
0x026ef36a9fee2debbcc3dfc28a483ab7c985692f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xd7caa4f61b045d65b077b32ab772a102db493a21f120aa659cfa6d70777c13a7",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x026ef36a9fee2debbcc3dfc28a483ab7c985692f"
],
"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": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc31c9c07",
"selector": "0xc31c9c07",
"calldata_variants": [
"0xc31c9c07",
"0xc31c9c070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9e0ab68",
"selector": "0xc9e0ab68",
"calldata_variants": [
"0xc9e0ab68",
"0xc9e0ab680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6998ec23",
"selector": "0x6998ec23",
"calldata_variants": [
"0x6998ec23",
"0x6998ec230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4782f779",
"selector": "0x4782f779",
"calldata_variants": [
"0x4782f779",
"0x4782f7790000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1347,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1574,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1809,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [],
"untrusted_call_count": 7
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xd7caa4f61b045d65b077b32ab772a102db493a21f120aa659cfa6d70777c13a7
call_targets:
0x026ef36a9fee2debbcc3dfc28a483ab7c985692f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xd7caa4f61b045d65b077b32ab772a102db493a21f120aa659cfa6d70777c13a7",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x026ef36a9fee2debbcc3dfc28a483ab7c985692f"
],
"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": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc31c9c07",
"selector": "0xc31c9c07",
"calldata_variants": [
"0xc31c9c07",
"0xc31c9c070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9e0ab68",
"selector": "0xc9e0ab68",
"calldata_variants": [
"0xc9e0ab68",
"0xc9e0ab680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6998ec23",
"selector": "0x6998ec23",
"calldata_variants": [
"0x6998ec23",
"0x6998ec230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4782f779",
"selector": "0x4782f779",
"calldata_variants": [
"0x4782f779",
"0x4782f7790000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1347,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1574,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1809,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": []
}
|
| medium | reentrancy | codex | Low-level CALLs with computed targets/value and no detected reentrancy guard | 75 | no | — |
viewevidence_json{
"evidence": "BYTECODE_BUNDLE.json lists CALL callsites with computed target/value and unknown returndata handling (pc 0x543/0x626/0x711/0x8e1/0xc84/0xd04). Detector findings flag untrusted CALL target/value and ETH value transfer possible with no guards detected. State writes are present after these calls (SSTORE at pc 0x698/0x774/0x7b9).",
"locations": [
"pc:0x543",
"pc:0x626",
"pc:0x711",
"pc:0x8e1",
"pc:0xc84",
"pc:0xd04",
"pc:0x698",
"pc:0x774",
"pc:0x7b9"
],
"recommendation": "Add a reentrancy guard around external-call paths, update state before calling out, and validate/limit external call targets. Prefer pull-based withdrawals for ETH transfers.",
"exploit_scenario": "If any CALL target is user-controlled (e.g., token/recipient address stored or set by a privileged party), a malicious contract can reenter during the external call (full gas forwarded). Because state writes occur after some external calls, a reentrant path could observe inconsistent state, trigger multiple payouts, or cause denial-of-service by reverting."
}
|
| medium | oracle | codex | Randomness derived from block.timestamp/difficulty is biasable | 75 | no | — |
viewevidence_json{
"evidence": "TIMESTAMP and DIFFICULTY opcodes feed into a SHA3 hash (pc 0xe05/0xe0b \u2192 SHA3 at pc 0xe38), indicating on-chain randomness derived from block attributes.",
"locations": [
"pc:0xe05",
"pc:0xe0b",
"pc:0xe38"
],
"recommendation": "Use a verifiable randomness source (e.g., VRF) or commit\u2011reveal with delay. Avoid single\u2011block entropy for any value\u2011bearing selection.",
"exploit_scenario": "If the contract uses a hash of block.timestamp and block.difficulty (prevrandao) to shuffle/select participants, validators can influence these values to bias outcomes or front\u2011run, potentially manipulating any selection or distribution logic."
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xb54f2367a8a61007841b614f8017888cff9307504ba115bff691725f380fbe17
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xb54f2367a8a61007841b614f8017888cff9307504ba115bff691725f380fbe17",
"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": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc31c9c07",
"selector": "0xc31c9c07",
"calldata_variants": [
"0xc31c9c07",
"0xc31c9c070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9e0ab68",
"selector": "0xc9e0ab68",
"calldata_variants": [
"0xc9e0ab68",
"0xc9e0ab680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6998ec23",
"selector": "0x6998ec23",
"calldata_variants": [
"0x6998ec23",
"0x6998ec230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4782f779",
"selector": "0x4782f779",
"calldata_variants": [
"0x4782f779",
"0x4782f7790000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 0
}
|