019ba9a5-c764-7202-b5cc-8890a9ee60f9
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 |
|---|---|---|---|---|
| 37367 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 37368 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 37369 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 37370 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 37371 | capability.graph | complete | 1 / 3 | 3 months ago |
| 37372 | detector.run | complete | 1 / 3 | 3 months ago |
| 37373 | validation.fork | complete | 1 / 3 | 3 months ago |
| 37675 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Detected dynamic external CALLs (some with ETH value) and a reachable CREATE path; bytecode shows no proxy/delegatecall usage, but guard coverage is unclear from artifacts.","findings":[{"severity":"medium","category":"access_control","title":"Dynamic external CALLs with ETH value and untrusted targets","exploit_scenario":"If any public or weakly guarded path lets an attacker influence the CALL target/value (via calldata or mutable storage), they can direct the contract to call arbitrary contracts and transfer ETH. That can drain funds or enable reentrancy into state-changing paths. Guard detection is empty in the artifact, so protection cannot be confirmed from bytecode alone.","recommendation":"Restrict these CALL paths to authorized roles or a strict allowlist, validate target/value bounds, and apply checks-effects-interactions or a reentrancy guard around external calls.","evidence":"BYTECODE_BUNDLE.json detector_findings[0]/[1] confirm 8 CALLs with computed target/value; validation shows target_varies with call_targets including 0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18, 0x9f6e731911af889a2b520ebecacbe764c5d59255, 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63 and ETH value nonzero; callsites list returndata_checked:null and guards_detected:[] for all calls.","locations":["pc:0x9a4","pc:0xbb0","pc:0xf71","pc:0x1065","pc:0x15cd","pc:0x203f","pc:0x20c7","pc:0x2185"]},{"severity":"low","category":"other","title":"Low-level CALL return data not validated","exploit_scenario":"If these CALLs interact with tokens or protocols that signal failure via return values instead of reverts, the contract may treat a failed operation as successful, causing accounting or state inconsistencies. This is especially risky for ERC20s that return false rather than reverting.","recommendation":"Decode and validate returndata (e.g., require empty or true) or use safe call wrappers that enforce expected return semantics.","evidence":"callsites show returndata_checked:null for all CALLs at pcs 0x9a4/0xbb0/0xf71/0x1065/0x15cd/0x203f/0x20c7/0x2185; disassembly around these pcs shows CALL followed by success check and POPs without RETURNDATASIZE/RETURNDATACOPY usage.","locations":["pc:0x9a4","pc:0xbb0","pc:0xf71","pc:0x1065","pc:0x15cd","pc:0x203f","pc:0x20c7","pc:0x2185"]},{"severity":"low","category":"other","title":"CREATE reachable (contract deployment capability)","exploit_scenario":"If an untrusted caller can reach this path, they could trigger contract creation repeatedly, potentially causing gas griefing or unexpected storage updates tied to deployment results. Access control for this path is unclear from bytecode alone.","recommendation":"Restrict CREATE paths to privileged roles or one-time initialization, and validate/record deployed addresses explicitly.","evidence":"detector_findings[2] reports create_count=1 and CREATE opcode is present at pc 0x2520 in runtime bytecode.","locations":["pc:0x2520"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-kccghg1i
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: xhigh
reasoning summaries: auto
session id: 019ba9a8-feb3-7c81-8a60-82634566f011
--------
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
**Preparing to read BYTECODE_BUNDLE.json**
exec
/bin/bash -lc ls in /tmp/codex-kccghg1i succeeded in 7ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
thinking
**Reading file contents**
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-kccghg1i succeeded in 9ms:
{
"analysis_artifact": {
"address": "0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18",
"artifact_hash": "0xfc75e3e17268a437053d769710b02b3a4605f6c359d656b898f361aa6f6d2605",
"artifact_json": {
"auth": {
"guards": []
},
"basic_blocks": [
{
"end_pc": 12,
"hash": "0x0ff5a9f4de2706b20a804bed5cc46869765d8dccda5ddd08395233ecd6dd060d",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATASIZE",
"LT",
"PUSH2",
thinking
**Searching for key terms with ripgrep**
exec
/bin/bash -lc 'rg -n "evidence_bundle|callsites|storage_slots|storage|proxy|delegatecall|reentrancy|guard" BYTECODE_BUNDLE.json' in /tmp/codex-kccghg1i succeeded in 49ms:
7: "guards": []
10172: "callsites": [
13303: "guards": []
13309: "delegatecall": 0,
13313: "storage": {
13852: "guards": []
13858: "delegatecall": 0,
13862: "storage": {
14401: "guards": []
14407: "delegatecall": 0,
14411: "storage": {
14950: "guards": []
14956: "delegatecall": 0,
14960: "storage": {
15499: "guards": []
15505: "delegatecall": 0,
15509: "storage": {
16048: "guards": []
16054: "delegatecall": 0,
16058: "storage": {
thinking
**Inspecting callsites and storage functions**
exec
/bin/bash -lc "sed -n '10140,10380p' BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 39ms:
"MSTORE8",
"SUB",
"STOP"
],
"start_pc": 9739
},
{
"end_pc": 9785,
"hash": "0x785b55f4c72917272d979430b687853ab0a3e978f977b5367356d535c87537fe",
"opcodes": [
"OP_29",
"OP_A1",
"PUSH6",
"SHA3",
"OP_4A",
"OP_C8",
"PUSH10",
"OP_C5",
"ADD",
"MSIZE",
thinking
**Inspecting storage summary near line 38600**
exec
/bin/bash -lc "sed -n '38480,38740p' BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 13ms:
},
{
"op": "SLOAD",
"pc": 7385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 7565,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 7823,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 8115,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
thinking
**Examining storage list and access control**
exec
/bin/bash -lc "sed -n '39140,39230p' BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 11ms:
"slot": "0x0000000000000000000000000000000000000000000000000000000000000011"
},
{
"op": "SLOAD",
"pc": 8871,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
}
],
"writes": 76
},
"version": "analysis_artifact_v1"
},
"block_number": null,
"chain_id": 1,
"codehash": "0x78d351b540c5c7ffcec07b31c6865cba92f3e3a97d0758c3c1681707fefd0e07",
"created_at": "2026-01-10T20:44:59.000000Z",
"id": 761,
"updated_at": "2026-01-10T20:44:59.000000Z",
"version": "analysis_artifact_v1"
},
thinking
**Analyzing bytecode and evidence structures**
exec
/bin/bash -lc 'rg -n "function_|summary|summaries|fn_summaries|function_analysis|entrypoints|reentrancy|guards_detected|external_calls|access" BYTECODE_BUNDLE.json' in /tmp/codex-kccghg1i succeeded in 7ms:
13114: "function_entries": [
46652: "guards_detected": [],
46706: "guards_detected": []
46760: "heuristics_summary": {
thinking
**Checking function_entries**
exec
/bin/bash -lc "sed -n '13080,13280p' BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 8ms:
},
{
"from": "bb:9494",
"to": "bb:9512",
"type": "control_flow_fallthrough"
},
{
"from": "bb:9516",
"to": "bb:8971",
"type": "control_flow"
},
{
"from": "bb:9551",
"to": "bb:9562",
"type": "control_flow_fallthrough"
},
{
"from": "bb:9580",
"to": "bb:9592",
"type": "control_flow_fallthrough"
thinking
**Examining bytecode callsites for risks**
I'm noticing these huge entry_pc numbers might be hashed or jump targets, so direct mapping is tricky. I see strong access control hints via storage slot checks for owner, but no explicit guard detections. There are several external calls with value at key bytecode PCs that could pose reentrancy risks, especially if state changes occur after calls. I plan to search the analysis artifact's basic blocks by start_pc near those callsites to find opcode snippets and understand the context better. This could help reveal whether access controls guard these external calls or if risks remain.
exec
/bin/bash -lc 'rg -n "start_pc": 2468 BYTECODE_BUNDLE.json' in /tmp/codex-kccghg1i exited 2 in 8ms:
rg: 2468: No such file or directory (os error 2)
thinking
**Clarifying ripgrep pattern usage**
exec
/bin/bash -lc "rg -n \"\\\"start_pc\\\": 2468\" BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i exited 1 in 32ms:
thinking
**Searching for specific program counter value**
exec
/bin/bash -lc "rg -n \"\\\"pc\\\": 2468\" BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 7ms:
10175: "pc": 2468,
46292: "pc": 2468,
46632: "pc": 2468,
46686: "pc": 2468,
thinking
**Inspecting occurrences near 46292**
exec
/bin/bash -lc "sed -n '46240,46340p' BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 10ms:
{
"end_pc": 9703,
"hash": "0xf46bed9264a21687648020c6988e223b41bff6621a88ecbe0b5c0c72d62da50c",
"id": "bb:9663",
"start_pc": 9663,
"type": "basic_block"
},
{
"end_pc": 9708,
"hash": "0x98509249b9424ca53ec00f4aa1a3d873dfa20364d0153b0bbca553e17c18dcb3",
"id": "bb:9704",
"start_pc": 9704,
"type": "basic_block"
},
{
"end_pc": 9709,
"hash": "0x6046c3ef2232f05e85b54650fb4498a09ffd78e9c505f04297a7fcb4c86108d5",
"id": "bb:9709",
"start_pc": 9709,
"type": "basic_block"
thinking
**Investigating function-level summaries**
exec
/bin/bash -lc "sed -n '13280,13440p' BYTECODE_BUNDLE.json" in /tmp/codex-kccghg1i succeeded in 10ms:
"entry_pc": 3904234783,
"selector": "0xe230d25e"
},
{
"entry_pc": 4076725131,
"selector": "0xe8b5e51f"
},
{
"entry_pc": 4288785780,
"selector": "0xf2fde38b"
},
{
"entry_pc": 6,
"selector": "0xffa1ad74"
},
{
"entry_pc": null,
"selector": "0x38cc4831"
}
],
thinking
**Analyzing bytecode for call and create patterns**
I'm investigating the bytecode and analysis artifacts to confirm function details, including calls, creates, and potential vulnerabilities like reentrancy. I'll parse JSON with Python to match program counters to opcode blocks and clarify state updates after calls. This helps me verify findings such as untrusted calls, value transfers, and reachable CREATE instructions.
exec
/bin/bash -lc "python - <<'PY'
import json
import bisect
pcs=[2468,2992,3953,4197,5581,8255,8391,8581]
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
blocks=data['analysis_artifact']['artifact_json']['basic_blocks']
# find blocks containing each pc
for pc in pcs:
blk=None
for b in blocks:
if b['start_pc']<=pc<=b['end_pc']:
blk=b
break
print('pc',pc,'block',blk['start_pc'] if blk else None, '-', blk['end_pc'] if blk else None)
if blk:
print('opcodes:', blk['opcodes'])
print('---')
PY" in /tmp/codex-kccghg1i succeeded in 46ms:
pc 2468 block 2462 - 2474
opcodes: ['JUMPDEST', 'PUSH2', 'GAS', 'SUB', 'CALL', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 2992 block 2986 - 2998
opcodes: ['JUMPDEST', 'PUSH2', 'GAS', 'SUB', 'CALL', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 3953 block 3947 - 3959
opcodes: ['JUMPDEST', 'PUSH2', 'GAS', 'SUB', 'CALL', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 4197 block 4191 - 4203
opcodes: ['JUMPDEST', 'PUSH2', 'GAS', 'SUB', 'CALL', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 5581 block 5548 - 5592
opcodes: ['JUMPDEST', 'PUSH1', 'PUSH1', 'PUSH1', 'EXP', 'SUB', 'OP_82', 'AND', 'OP_81', 'ISZERO', 'PUSH2', 'MUL', 'OP_82', 'PUSH1', 'MLOAD', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_88', 'OP_88', 'CALL', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 8255 block 8249 - 8261
opcodes: ['JUMPDEST', 'PUSH2', 'GAS', 'SUB', 'CALL', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 8391 block 8385 - 8397
opcodes: ['JUMPDEST', 'PUSH2', 'GAS', 'SUB', 'CALL', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
thinking
**Analyzing callsite control flow**
I’m examining the call instruction blocks, focusing on success checks via double ISZERO. Since target and value appear dynamic, I want to parse the runtime bytecode with a Python disassembler to map opcodes to PCs and understand the preconditions, especially owner checks or storage loads, around these calls. This should give me clearer insight into the callsite context.
exec
/bin/bash -lc "python - <<'PY'
import json
# simple EVM disassembler for runtime bytecode
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',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
# disassemble around call pcs
call_pcs={2468,2992,3953,4197,5581,8255,8391,8581}
window=20
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
opname=opcodes.get(op, f'OP_{op:02x}')
start_pc=pc
pc+=1
push_data=b''
if 0x60 <= op <= 0x7f:
push_len=op-0x5f
push_data=code[pc:pc+push_len]
pc+=push_len
opname=f'{opname} 0x{push_data.hex()}'
instrs.append((start_pc, opname))
# create mapping from pc to index
pc_to_idx={pc:i for i,(pc,_) in enumerate(instrs)}
for target_pc in sorted(call_pcs):
if target_pc not in pc_to_idx:
# some PCs may align to push data? find nearest prior
# find largest pc <= target_pc
pcs=[pc for pc,_ in instrs]
import bisect
idx=bisect.bisect_right(pcs,target_pc)-1
else:
idx=pc_to_idx[target_pc]
start=max(0, idx-window)
end=min(len(instrs), idx+window+1)
print(f\"\\n=== Context around pc {target_pc} ===\")
for pc,opname in instrs[start:end]:
marker='>>' if pc==target_pc else ' '
print(f\"{marker} {pc:05d}: {opname}\")
PY" in /tmp/codex-kccghg1i succeeded in 79ms:
=== Context around pc 2468 ===
02442: MLOAD
02443: DUP1
02444: DUP4
02445: SUB
02446: DUP2
02447: PUSH1 0x00
02449: DUP8
02450: DUP1
02451: EXTCODESIZE
02452: ISZERO
02453: ISZERO
02454: PUSH2 0x099e
02457: JUMPI
02458: PUSH1 0x00
02460: DUP1
02461: REVERT
02462: JUMPDEST
02463: PUSH2 0x02c6
thinking
**Analyzing external call patterns and risks**
I’m looking closely at how external calls are made after EXTCODESIZE checks, noting some calls skip RETURNDATASIZE checks and just revert on failure. I want to trace how call targets and values get set by inspecting surrounding stack and opcode context to see if calls are hardcoded or dynamic. I’m also considering reentrancy risks from unguarded calls with ETH value and planning to locate CREATE opcode positions next to assess contract creation safety.
exec
/bin/bash -lc "python - <<'PY'
import json
opcodes = {
0xf0:'CREATE',0xf5:'CREATE2'
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
pc=0
pcs=[]
while pc < len(code):
op=code[pc]
if op in opcodes:
pcs.append((pc, opcodes[op]))
pc+=1
if 0x60 <= op <= 0x7f:
pc += op-0x5f
print(pcs)
PY" in /tmp/codex-kccghg1i succeeded in 51ms:
[(9504, 'CREATE')]
thinking
**Inspecting code around address 9504**
exec
/bin/bash -lc "python - <<'PY'
import json
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',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
# disassemble context around pc 9504
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
opname=opcodes.get(op, f'OP_{op:02x}')
start_pc=pc
pc+=1
if 0x60 <= op <= 0x7f:
push_len=op-0x5f
push_data=code[pc:pc+push_len]
pc+=push_len
opname=f'{opname} 0x{push_data.hex()}'
instrs.append((start_pc, opname))
pc_to_idx={pc:i for i,(pc,_) in enumerate(instrs)}
for target_pc in [9504]:
idx=pc_to_idx[target_pc]
start=max(0, idx-30)
end=min(len(instrs), idx+30)
print(f\"\\n=== Context around pc {target_pc} ===\")
for pc,opname in instrs[start:end]:
marker='>>' if pc==target_pc else ' '
print(f\"{marker} {pc:05d}: {opname}\")
PY" in /tmp/codex-kccghg1i succeeded in 43ms:
=== Context around pc 9504 ===
09430: PUSH1 0x40
09432: DUP1
09433: MLOAD
09434: SWAP1
09435: DUP2
09436: ADD
09437: PUSH1 0x40
09439: MSTORE
09440: PUSH1 0x0c
09442: DUP2
09443: MSTORE
09444: PUSH32 0x6574685f726f707374656e330000000000000000000000000000000000000000
09477: PUSH1 0x20
09479: DUP3
09480: ADD
09481: MSTORE
09482: PUSH2 0x252c
09485: JUMP
thinking
**Analyzing contract creation and access control**
exec
/bin/bash -lc "python - <<'PY'
import json
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',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
opname=opcodes.get(op, f'OP_{op:02x}')
start_pc=pc
pc+=1
if 0x60 <= op <= 0x7f:
push_len=op-0x5f
push_data=code[pc:pc+push_len]
pc+=push_len
opname=f'{opname} 0x{push_data.hex()}'
instrs.append((start_pc, opname))
# print a larger context around create
start=9400
end=9550
for pc,opname in instrs:
if start <= pc <= end:
marker='>>' if pc==9504 else ' '
print(f\"{marker} {pc:05d}: {opname}\")
PY" in /tmp/codex-kccghg1i succeeded in 44ms:
09400: ISZERO
09401: PUSH2 0x250e
09404: JUMPI
09405: POP
09406: PUSH20 0x11f3514e4605b14daa29eb17e785f8efb9a14aae
09427: PUSH2 0x2492
09430: PUSH1 0x40
09432: DUP1
09433: MLOAD
09434: SWAP1
09435: DUP2
09436: ADD
09437: PUSH1 0x40
09439: MSTORE
09440: PUSH1 0x0c
09442: DUP2
09443: MSTORE
09444: PUSH32 0x6574685f726f707374656e330000000000000000000000000000000000000000
09477: PUSH1 0x20
09479: DUP3
thinking
**Analyzing external calls and potential risks**
I'm examining CALL operations with computed target addresses checked only by EXTCODESIZE, indicating calls to contracts but no clear access control. The call targets vary and include hard-coded and storage-derived addresses, suggesting dynamic, possibly admin-set or user-influenced targets. This poses possible reentrancy or fund-drain risks if attacker controls these values. Also, return data isn't verified beyond CALL success, which could lead to undetected failures, especially in token transfers. I’m considering storage analysis next to identify where these target addresses come from and whether they’re controllable.
Reconnecting... 1/5
thinking
**Investigating access control around create**
exec
/bin/bash -lc "python - <<'PY'
import json
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',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
opname=opcodes.get(op, f'OP_{op:02x}')
start_pc=pc
pc+=1
if 0x60 <= op <= 0x7f:
push_len=op-0x5f
push_data=code[pc:pc+push_len]
pc+=push_len
opname=f'{opname} 0x{push_data.hex()}'
instrs.append((start_pc, opname))
start=9300
end=9410
for pc,opname in instrs:
if start <= pc <= end:
print(f\"{pc:05d}: {opname}\")
PY" in /tmp/codex-kccghg1i succeeded in 47ms:
09303: PUSH2 0x2492
09306: PUSH1 0x40
09308: DUP1
09309: MLOAD
09310: SWAP1
09311: DUP2
09312: ADD
09313: PUSH1 0x40
09315: MSTORE
09316: PUSH1 0x0b
09318: DUP2
09319: MSTORE
09320: PUSH32 0x6574685f6d61696e6e6574000000000000000000000000000000000000000000
09353: PUSH1 0x20
09355: DUP3
09356: ADD
09357: MSTORE
09358: PUSH2 0x252c
09361: JUMP
09362: JUMPDEST
thinking
**Analyzing external calls and contract risks**
exec
/bin/bash -lc "python - <<'PY'
import json
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',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
opname=opcodes.get(op, f'OP_{op:02x}')
start_pc=pc
pc+=1
if 0x60 <= op <= 0x7f:
push_len=op-0x5f
pc+=push_len
instrs.append((start_pc, opname))
pc_to_idx={pc:i for i,(pc,_) in enumerate(instrs)}
call_pcs=[2468,2992,3953,4197,5581,8255,8391,8581]
for call_pc in call_pcs:
idx=pc_to_idx.get(call_pc)
if idx is None:
continue
# look 40 instructions before and after for SSTORE
window=80
around=instrs[max(0,idx-window):min(len(instrs),idx+window)]
sstores=[pc for pc,op in around if op=='SSTORE']
print('call_pc',call_pc,'SSTORE nearby',sstores[:5], 'count',len(sstores))
PY" in /tmp/codex-kccghg1i succeeded in 60ms:
call_pc 2468 SSTORE nearby [] count 0
call_pc 2992 SSTORE nearby [3062] count 1
call_pc 3953 SSTORE nearby [] count 0
call_pc 4197 SSTORE nearby [4300] count 1
call_pc 5581 SSTORE nearby [5733, 5738] count 2
call_pc 8255 SSTORE nearby [8154] count 1
call_pc 8391 SSTORE nearby [8474] count 1
call_pc 8581 SSTORE nearby [8474] count 1
thinking
**Analyzing SSTORE relative to CALL instructions**
exec
/bin/bash -lc "python - <<'PY'
import json
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',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
}
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full']
if code_hex.startswith('0x'):
code_hex=code_hex[2:]
code=bytes.fromhex(code_hex)
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
opname=opcodes.get(op, f'OP_{op:02x}')
start_pc=pc
pc+=1
if 0x60 <= op <= 0x7f:
push_len=op-0x5f
push_data=code[pc:pc+push_len]
pc+=push_len
opname=f'{opname} 0x{push_data.hex()}'
instrs.append((start_pc, opname))
pc_to_idx={pc:i for i,(pc,_) in enumerate(instrs)}
call_pcs=[2992,4197,5581,8255,8391,8581]
for call_pc in call_pcs:
idx=pc_to_idx[call_pc]
start=max(0, idx-40)
end=min(len(instrs), idx+80)
print('\\n=== call pc',call_pc,'===')
for pc,opname in instrs[start:end]:
marker='>>' if pc==call_pc else ' '
if opname=='SSTORE':
marker='**' if pc"'!=call_pc else '"'>>'
print(f\"{marker} {pc:05d}: {opname}\")
PY" in /tmp/codex-kccghg1i succeeded in 59ms:
=== call pc 2992 ===
02941: DUP4
02942: SIGNEXTEND
02943: SWAP1
02944: SWAP3
02945: SIGNEXTEND
02946: PUSH1 0x24
02948: DUP3
02949: ADD
02950: MSTORE
02951: PUSH1 0x44
02953: DUP2
02954: ADD
02955: SWAP2
02956: SWAP1
02957: SWAP2
02958: MSTORE
02959: PUSH1 0x64
02961: ADD
thinking
**Analyzing call and state update relationships**
exec
/bin/bash -lc "python - <<'PY'
pcs=[2468,2992,3953,4197,5581,8255,8391,8581,9504]
for pc in pcs:
print(pc, hex(pc))
PY" in /tmp/codex-kccghg1i succeeded in 28ms:
2468 0x9a4
2992 0xbb0
3953 0xf71
4197 0x1065
5581 0x15cd
8255 0x203f
8391 0x20c7
8581 0x2185
9504 0x2520
thinking
**Analyzing untrusted external calls and create operations**
I'm evaluating callsites flagged as untrusted external calls with possible ETH transfers, considering if to merge these findings or keep them separate for clarity. I'm exploring whether the calls have return data checks and if access control is missing, which affects severity. I'm trying to map specific calls to functions by analyzing jump tables and disassembly, though this is tricky given runtime bytecode. I also plan to include evidence details from detector findings about call counts, call target variability, and create operations. The scenario will describe risks from untrusted calls allowing arbitrary calls with ETH and potential unwanted contract deployment, while noting some uncertainties around access control and deployment effects.
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
code_hex=data['artifact']['runtime_bytecode']['full'][2:]
code=bytes.fromhex(code_hex)
origin_pcs=[]
pc=0
while pc < len(code):
op=code[pc]
if op==0x32: # ORIGIN
origin_pcs.append(pc)
pc+=1
if 0x60 <= op <= 0x7f:
pc += op-0x5f
print('ORIGIN pcs',origin_pcs)
PY" in /tmp/codex-kccghg1i succeeded in 39ms:
ORIGIN pcs []
thinking
**Analyzing contract risks and findings**
exec
/bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-kccghg1i succeeded in 5ms:
{"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
thinking
**Preparing detailed vulnerability report**
I'm carefully composing JSON output capturing three key findings: dynamic external CALLs with ETH value and untrusted targets, unchecked CALL return data, and reachable CREATE instruction. Each includes clear evidence, exploit scenarios, and recommendations, ensuring no extra fields and precise formatting for clarity.
codex
{"no_findings":false,"summary":"Detected dynamic external CALLs (some with ETH value) and a reachable CREATE path; bytecode shows no proxy/delegatecall usage, but guard coverage is unclear from artifacts.","findings":[{"severity":"medium","category":"access_control","title":"Dynamic external CALLs with ETH value and untrusted targets","exploit_scenario":"If any public or weakly guarded path lets an attacker influence the CALL target/value (via calldata or mutable storage), they can direct the contract to call arbitrary contracts and transfer ETH. That can drain funds or enable reentrancy into state-changing paths. Guard detection is empty in the artifact, so protection cannot be confirmed from bytecode alone.","recommendation":"Restrict these CALL paths to authorized roles or a strict allowlist, validate target/value bounds, and apply checks-effects-interactions or a reentrancy guard around external calls.","evidence":"BYTECODE_BUNDLE.json detector_findings[0]/[1] confirm 8 CALLs with computed target/value; validation shows target_varies with call_targets including 0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18, 0x9f6e731911af889a2b520ebecacbe764c5d59255, 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63 and ETH value nonzero; callsites list returndata_checked:null and guards_detected:[] for all calls.","locations":["pc:0x9a4","pc:0xbb0","pc:0xf71","pc:0x1065","pc:0x15cd","pc:0x203f","pc:0x20c7","pc:0x2185"]},{"severity":"low","category":"other","title":"Low-level CALL return data not validated","exploit_scenario":"If these CALLs interact with tokens or protocols that signal failure via return values instead of reverts, the contract may treat a failed operation as successful, causing accounting or state inconsistencies. This is especially risky for ERC20s that return false rather than reverting.","recommendation":"Decode and validate returndata (e.g., require empty or true) or use safe call wrappers that enforce expected return semantics.","evidence":"callsites show returndata_checked:null for all CALLs at pcs 0x9a4/0xbb0/0xf71/0x1065/0x15cd/0x203f/0x20c7/0x2185; disassembly around these pcs shows CALL followed by success check and POPs without RETURNDATASIZE/RETURNDATACOPY usage.","locations":["pc:0x9a4","pc:0xbb0","pc:0xf71","pc:0x1065","pc:0x15cd","pc:0x203f","pc:0x20c7","pc:0x2185"]},{"severity":"low","category":"other","title":"CREATE reachable (contract deployment capability)","exploit_scenario":"If an untrusted caller can reach this path, they could trigger contract creation repeatedly, potentially causing gas griefing or unexpected storage updates tied to deployment results. Access control for this path is unclear from bytecode alone.","recommendation":"Restrict CREATE paths to privileged roles or one-time initialization, and validate/record deployed addresses explicitly.","evidence":"detector_findings[2] reports create_count=1 and CREATE opcode is present at pc 0x2520 in runtime bytecode.","locations":["pc:0x2520"]}]}
tokens used
164,731
{
"codex": {
"ran_at": "2026-01-10T20:53:30.246747+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 19594,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Detected dynamic external CALLs (some with ETH value) and a reachable CREATE path; bytecode shows no proxy/delegatecall usage, but guard coverage is unclear from artifacts.",
"raw_final": {
"summary": "Detected dynamic external CALLs (some with ETH value) and a reachable CREATE path; bytecode shows no proxy/delegatecall usage, but guard coverage is unclear from artifacts.",
"findings": [
{
"title": "Dynamic external CALLs with ETH value and untrusted targets",
"category": "access_control",
"evidence": "BYTECODE_BUNDLE.json detector_findings[0]/[1] confirm 8 CALLs with computed target/value; validation shows target_varies with call_targets including 0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18, 0x9f6e731911af889a2b520ebecacbe764c5d59255, 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63 and ETH value nonzero; callsites list returndata_checked:null and guards_detected:[] for all calls.",
"severity": "medium",
"locations": [
"pc:0x9a4",
"pc:0xbb0",
"pc:0xf71",
"pc:0x1065",
"pc:0x15cd",
"pc:0x203f",
"pc:0x20c7",
"pc:0x2185"
],
"recommendation": "Restrict these CALL paths to authorized roles or a strict allowlist, validate target/value bounds, and apply checks-effects-interactions or a reentrancy guard around external calls.",
"exploit_scenario": "If any public or weakly guarded path lets an attacker influence the CALL target/value (via calldata or mutable storage), they can direct the contract to call arbitrary contracts and transfer ETH. That can drain funds or enable reentrancy into state-changing paths. Guard detection is empty in the artifact, so protection cannot be confirmed from bytecode alone."
},
{
"title": "Low-level CALL return data not validated",
"category": "other",
"evidence": "callsites show returndata_checked:null for all CALLs at pcs 0x9a4/0xbb0/0xf71/0x1065/0x15cd/0x203f/0x20c7/0x2185; disassembly around these pcs shows CALL followed by success check and POPs without RETURNDATASIZE/RETURNDATACOPY usage.",
"severity": "low",
"locations": [
"pc:0x9a4",
"pc:0xbb0",
"pc:0xf71",
"pc:0x1065",
"pc:0x15cd",
"pc:0x203f",
"pc:0x20c7",
"pc:0x2185"
],
"recommendation": "Decode and validate returndata (e.g., require empty or true) or use safe call wrappers that enforce expected return semantics.",
"exploit_scenario": "If these CALLs interact with tokens or protocols that signal failure via return values instead of reverts, the contract may treat a failed operation as successful, causing accounting or state inconsistencies. This is especially risky for ERC20s that return false rather than reverting."
},
{
"title": "CREATE reachable (contract deployment capability)",
"category": "other",
"evidence": "detector_findings[2] reports create_count=1 and CREATE opcode is present at pc 0x2520 in runtime bytecode.",
"severity": "low",
"locations": [
"pc:0x2520"
],
"recommendation": "Restrict CREATE paths to privileged roles or one-time initialization, and validate/record deployed addresses explicitly.",
"exploit_scenario": "If an untrusted caller can reach this path, they could trigger contract creation repeatedly, potentially causing gas griefing or unexpected storage updates tied to deployment results. Access control for this path is unclear from bytecode alone."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x020b 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH1 0xe0 00000014: PUSH1 0x02 00000016: EXP 00000017: PUSH1 0x00 00000019: CALLDATALOAD 0000001a: DIV 0000001b: AND 0000001c: PUSH4 0x05427ea7 00000021: DUP2 00000022: EQ 00000023: PUSH2 0x023d 00000026: JUMPI 00000027: DUP1 00000028: PUSH4 0x07d0d51e 0000002d: EQ 0000002e: PUSH2 0x0270 00000031: JUMPI 00000032: DUP1 00000033: PUSH4 0x0d1fce42 00000038: EQ 00000039: PUSH2 0x0283 0000003c: JUMPI 0000003d: DUP1 0000003e: PUSH4 0x0e81c1f1 00000043: EQ 00000044: PUSH2 0x0296 00000047: JUMPI 00000048: DUP1 00000049: PUSH4 0x0e959dd7 0000004e: EQ 0000004f: PUSH2 0x02a9 00000052: JUMPI 00000053: DUP1 00000054: PUSH4 0x0ee4c938 00000059: EQ 0000005a: PUSH2 0x02ec 0000005d: JUMPI 0000005e: DUP1 0000005f: PUSH4 0x107bf28c 00000064: EQ 00000065: PUSH2 0x0302 00000068: JUMPI 00000069: DUP1 0000006a: PUSH4 0x11e330b2 0000006f: EQ 00000070: PUSH2 0x038c 00000073: JUMPI 00000074: DUP1 00000075: PUSH4 0x12065fe0 0000007a: EQ 0000007b: PUSH2 0x03a2 0000007e: JUMPI 0000007f: DUP1 00000080: PUSH4 0x1df4ccfc 00000085: EQ 00000086: PUSH2 0x03b5 00000089: JUMPI 0000008a: DUP1 0000008b: PUSH4 0x1e0018d6 00000090: EQ 00000091: PUSH2 0x03c8 00000094: JUMPI 00000095: DUP1 00000096: PUSH4 0x278564ee 0000009b: EQ 0000009c: PUSH2 0x03f7 0000009f: JUMPI 000000a0: DUP1 000000a1: PUSH4 0x3566cc98 000000a6: EQ 000000a7: PUSH2 0x040a 000000aa: JUMPI 000000ab: DUP1 000000ac: PUSH4 0x359df915 000000b1: EQ 000000b2: PUSH2 0x042e 000000b5: JUMPI 000000b6: DUP1 000000b7: PUSH4 0x3712e726 000000bc: EQ 000000bd: PUSH2 0x0441 000000c0: JUMPI 000000c1: DUP1 000000c2: PUSH4 0x44515d3b 000000c7: EQ 000000c8: PUSH2 0x0454 000000cb: JUMPI 000000cc: DUP1 000000cd: PUSH4 0x4cf4a292 000000d2: EQ 000000d3: PUSH2 0x046a 000000d6: JUMPI 000000d7: DUP1 000000d8: PUSH4 0x54ab6269 000000dd: EQ 000000de: PUSH2 0x047d 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0x550ed1f0 000000e8: EQ 000000e9: PUSH2 0x049c 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x55632748 000000f3: EQ 000000f4: PUSH2 0x04af 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x5bd4fd7b 000000fe: EQ 000000ff: PUSH2 0x04c2 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x5c141ef5 00000109: EQ 0000010a: PUSH2 0x04e1 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x5d859a73 00000114: EQ 00000115: PUSH2 0x04fd 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x6533aa1e 0000011f: EQ 00000120: PUSH2 0x0510 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x6b31ee01 0000012a: EQ 0000012b: PUSH2 0x0526 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x6cd0f102 00000135: EQ 00000136: PUSH2 0x0539 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x6ffcc719 00000140: EQ 00000141: PUSH2 0x054f 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0x76e3cf12 0000014b: EQ 0000014c: PUSH2 0x055d 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x7ef13d5d 00000156: EQ 00000157: PUSH2 0x0612 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x82a5285d 00000161: EQ 00000162: PUSH2 0x0625 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x8da5cb5b 0000016c: EQ 0000016d: PUSH2 0x0638 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x9b0740e8 00000177: EQ 00000178: PUSH2 0x064b 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0xa7544786 00000182: EQ 00000183: PUSH2 0x065e 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0xb599afc8 0000018d: EQ 0000018e: PUSH2 0x0671 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0xb7adf82b 00000198: EQ 00000199: PUSH2 0x0684 0000019c: JUMPI 0000019d: DUP1 0000019e: PUSH4 0xbb504317 000001a3: EQ 000001a4: PUSH2 0x06a3 000001a7: JUMPI 000001a8: DUP1 000001a9: PUSH4 0xc13afce5 000001ae: EQ 000001af: PUSH2 0x06c5 000001b2: JUMPI 000001b3: DUP1 000001b4: PUSH4 0xd954cbcb 000001b9: EQ 000001ba: PUSH2 0x06db 000001bd: JUMPI 000001be: DUP1 000001bf: PUSH4 0xdcdba4f7 000001c4: EQ 000001c5: PUSH2 0x06ee 000001c8: JUMPI 000001c9: DUP1 000001ca: PUSH4 0xe0fa2881 000001cf: EQ 000001d0: PUSH2 0x0701 000001d3: JUMPI 000001d4: DUP1 000001d5: PUSH4 0xe1c7392a 000001da: EQ 000001db: PUSH2 0x0709 000001de: JUMPI 000001df: DUP1 000001e0: PUSH4 0xe230d25e 000001e5: EQ 000001e6: PUSH2 0x071c 000001e9: JUMPI 000001ea: DUP1 000001eb: PUSH4 0xe8b5e51f 000001f0: EQ 000001f1: PUSH2 0x072f 000001f4: JUMPI 000001f5: DUP1 000001f6: PUSH4 0xf2fde38b 000001fb: EQ 000001fc: PUSH2 0x0737 000001ff: JUMPI 00000200: DUP1 00000201: PUSH4 0xffa1ad74 00000206: EQ 00000207: PUSH2 0x0756 0000020a: JUMPI 0000020b: JUMPDEST 0000020c: PUSH1 0x06 0000020e: SLOAD 0000020f: CALLER 00000210: PUSH1 0x01 00000212: PUSH1 0xa0 00000214: PUSH1 0x02 00000216: EXP 00000217: SUB 00000218: SWAP1 00000219: DUP2 0000021a: AND 0000021b: SWAP2 0000021c: AND 0000021d: EQ 0000021e: ISZERO 0000021f: PUSH2 0x022f 00000222: JUMPI 00000223: PUSH2 0x022a 00000226: PUSH2 0x0769 00000229: JUMP 0000022a: JUMPDEST 0000022b: PUSH2 0x023b 0000022e: JUMP 0000022f: JUMPDEST 00000230: PUSH2 0x023b 00000233: PUSH1 0x01 00000235: PUSH1 0x00 00000237: PUSH2 0x07ec 0000023a: JUMP 0000023b: JUMPDEST 0000023c: STOP 0000023d: JUMPDEST 0000023e: CALLVALUE 0000023f: ISZERO 00000240: PUSH2 0x0248 00000243: JUMPI 00000244: PUSH1 0x00 00000246: DUP1 00000247: REVERT 00000248: JUMPDEST 00000249: PUSH2 0x025e 0000024c: PUSH1 0x04 0000024e: CALLDATALOAD 0000024f: PUSH1 0x0f 00000251: SWAP1 00000252: DUP2 00000253: SIGNEXTEND 00000254: SWAP1 00000255: PUSH1 0x24 00000257: CALLDATALOAD 00000258: SWAP1 00000259: SIGNEXTEND 0000025a: PUSH2 0x0936 0000025d: JUMP 0000025e: JUMPDEST 0000025f: PUSH1 0x40 00000261: MLOAD 00000262: SWAP1 00000263: DUP2 00000264: MSTORE 00000265: PUSH1 0x20 00000267: ADD 00000268: PUSH1 0x40 0000026a: MLOAD 0000026b: DUP1 0000026c: SWAP2 0000026d: SUB 0000026e: SWAP1 0000026f: RETURN 00000270: JUMPDEST 00000271: CALLVALUE 00000272: ISZERO 00000273: PUSH2 0x027b 00000276: JUMPI 00000277: PUSH1 0x00 00000279: DUP1 0000027a: REVERT 0000027b: JUMPDEST 0000027c: PUSH2 0x025e 0000027f: PUSH2 0x09bf 00000282: JUMP 00000283: JUMPDEST 00000284: CALLVALUE 00000285: ISZERO 00000286: PUSH2 0x028e 00000289: JUMPI 0000028a: PUSH1 0x00 0000028c: DUP1 0000028d: REVERT 0000028e: JUMPDEST 0000028f: PUSH2 0x025e 00000292: PUSH2 0x09c5 00000295: JUMP 00000296: JUMPDEST 00000297: CALLVALUE 00000298: ISZERO 00000299: PUSH2 0x02a1 0000029c: JUMPI 0000029d: PUSH1 0x00 0000029f: DUP1 000002a0: REVERT 000002a1: JUMPDEST 000002a2: PUSH2 0x025e 000002a5: PUSH2 0x09e6 000002a8: JUMP 000002a9: JUMPDEST 000002aa: CALLVALUE 000002ab: ISZERO 000002ac: PUSH2 0x02b4 000002af: JUMPI 000002b0: PUSH1 0x00 000002b2: DUP1 000002b3: REVERT 000002b4: JUMPDEST 000002b5: PUSH2 0x02c8 000002b8: PUSH1 0x01 000002ba: PUSH1 0xa0 000002bc: PUSH1 0x02 000002be: EXP 000002bf: SUB 000002c0: PUSH1 0x04 000002c2: CALLDATALOAD 000002c3: AND 000002c4: PUSH2 0x09ec 000002c7: JUMP 000002c8: JUMPDEST 000002c9: PUSH1 0x40 000002cb: MLOAD 000002cc: DUP1 000002cd: DUP5 000002ce: DUP2 000002cf: MSTORE 000002d0: PUSH1 0x20 000002d2: ADD 000002d3: DUP4 000002d4: DUP2 000002d5: MSTORE 000002d6: PUSH1 0x20 000002d8: ADD 000002d9: DUP3 000002da: DUP2 000002db: MSTORE 000002dc: PUSH1 0x20 000002de: ADD 000002df: SWAP4 000002e0: POP 000002e1: POP 000002e2: POP 000002e3: POP 000002e4: PUSH1 0x40 000002e6: MLOAD 000002e7: DUP1 000002e8: SWAP2 000002e9: SUB 000002ea: SWAP1 000002eb: RETURN 000002ec: JUMPDEST 000002ed: CALLVALUE 000002ee: ISZERO 000002ef: PUSH2 0x02f7 000002f2: JUMPI 000002f3: PUSH1 0x00 000002f5: DUP1 000002f6: REVERT 000002f7: JUMPDEST 000002f8: PUSH2 0x023b 000002fb: PUSH1 0x04 000002fd: CALLDATALOAD 000002fe: PUSH2 0x0a0d 00000301: JUMP 00000302: JUMPDEST 00000303: CALLVALUE 00000304: ISZERO 00000305: PUSH2 0x030d 00000308: JUMPI 00000309: PUSH1 0x00 0000030b: DUP1 0000030c: REVERT 0000030d: JUMPDEST 0000030e: PUSH2 0x0315 00000311: PUSH2 0x0a3c 00000314: JUMP 00000315: JUMPDEST 00000316: PUSH1 0x40 00000318: MLOAD 00000319: PUSH1 0x20 0000031b: DUP1 0000031c: DUP3 0000031d: MSTORE 0000031e: DUP2 0000031f: SWAP1 00000320: DUP2 00000321: ADD 00000322: DUP4 00000323: DUP2 00000324: DUP2 00000325: MLOAD 00000326: DUP2 00000327: MSTORE 00000328: PUSH1 0x20 0000032a: ADD 0000032b: SWAP2 0000032c: POP 0000032d: DUP1 0000032e: MLOAD 0000032f: SWAP1 00000330: PUSH1 0x20 00000332: ADD 00000333: SWAP1 00000334: DUP1 00000335: DUP4 00000336: DUP4 00000337: PUSH1 0x00 00000339: JUMPDEST 0000033a: DUP4 0000033b: DUP2 0000033c: LT 0000033d: ISZERO 0000033e: PUSH2 0x0351 00000341: JUMPI 00000342: DUP1 00000343: DUP3 00000344: ADD 00000345: MLOAD 00000346: DUP4 00000347: DUP3 00000348: ADD 00000349: MSTORE 0000034a: PUSH1 0x20 0000034c: ADD 0000034d: PUSH2 0x0339 00000350: JUMP 00000351: JUMPDEST 00000352: POP 00000353: POP 00000354: POP 00000355: POP 00000356: SWAP1 00000357: POP 00000358: SWAP1 00000359: DUP2 0000035a: ADD 0000035b: SWAP1 0000035c: PUSH1 0x1f 0000035e: AND 0000035f: DUP1 00000360: ISZERO 00000361: PUSH2 0x037e 00000364: JUMPI 00000365: DUP1 00000366: DUP3 00000367: SUB 00000368: DUP1 00000369: MLOAD 0000036a: PUSH1 0x01 0000036c: DUP4 0000036d: PUSH1 0x20 0000036f: SUB 00000370: PUSH2 0x0100 00000373: EXP 00000374: SUB 00000375: NOT 00000376: AND 00000377: DUP2 00000378: MSTORE 00000379: PUSH1 0x20 0000037b: ADD 0000037c: SWAP2 0000037d: POP 0000037e: JUMPDEST 0000037f: POP 00000380: SWAP3 00000381: POP 00000382: POP 00000383: POP 00000384: PUSH1 0x40 00000386: MLOAD 00000387: DUP1 00000388: SWAP2 00000389: SUB 0000038a: SWAP1 0000038b: RETURN 0000038c: JUMPDEST 0000038d: CALLVALUE 0000038e: ISZERO 0000038f: PUSH2 0x0397 00000392: JUMPI 00000393: PUSH1 0x00 00000395: DUP1 00000396: REVERT 00000397: JUMPDEST 00000398: PUSH2 0x023b 0000039b: PUSH1 0x04 0000039d: CALLDATALOAD 0000039e: PUSH2 0x0ada 000003a1: JUMP 000003a2: JUMPDEST 000003a3: CALLVALUE 000003a4: ISZERO 000003a5: PUSH2 0x03ad 000003a8: JUMPI 000003a9: PUSH1 0x00 000003ab: DUP1 000003ac: REVERT 000003ad: JUMPDEST 000003ae: PUSH2 0x025e 000003b1: PUSH2 0x0b0f 000003b4: JUMP 000003b5: JUMPDEST 000003b6: CALLVALUE 000003b7: ISZERO 000003b8: PUSH2 0x03c0 000003bb: JUMPI 000003bc: PUSH1 0x00 000003be: DUP1 000003bf: REVERT 000003c0: JUMPDEST 000003c1: PUSH2 0x025e 000003c4: PUSH2 0x0b1e 000003c7: JUMP 000003c8: JUMPDEST 000003c9: CALLVALUE 000003ca: ISZERO 000003cb: PUSH2 0x03d3 000003ce: JUMPI 000003cf: PUSH1 0x00 000003d1: DUP1 000003d2: REVERT 000003d3: JUMPDEST 000003d4: PUSH2 0x03db 000003d7: PUSH2 0x0b24 000003da: JUMP 000003db: JUMPDEST 000003dc: PUSH1 0x40 000003de: MLOAD 000003df: PUSH1 0x01 000003e1: PUSH1 0xa0 000003e3: PUSH1 0x02 000003e5: EXP 000003e6: SUB 000003e7: SWAP1 000003e8: SWAP2 000003e9: AND 000003ea: DUP2 000003eb: MSTORE 000003ec: PUSH1 0x20 000003ee: ADD 000003ef: PUSH1 0x40 000003f1: MLOAD 000003f2: DUP1 000003f3: SWAP2 000003f4: SUB 000003f5: SWAP1 000003f6: RETURN 000003f7: JUMPDEST 000003f8: CALLVALUE 000003f9: ISZERO 000003fa: PUSH2 0x0402 000003fd: JUMPI 000003fe: PUSH1 0x00 00000400: DUP1 00000401: REVERT 00000402: JUMPDEST 00000403: PUSH2 0x025e 00000406: PUSH2 0x0b33 00000409: JUMP 0000040a: JUMPDEST 0000040b: CALLVALUE 0000040c: ISZERO 0000040d: PUSH2 0x0415 00000410: JUMPI 00000411: PUSH1 0x00 00000413: DUP1 00000414: REVERT 00000415: JUMPDEST 00000416: PUSH2 0x025e 00000419: PUSH1 0x04 0000041b: CALLDATALOAD 0000041c: PUSH1 0x0f 0000041e: SWAP1 0000041f: DUP2 00000420: SIGNEXTEND 00000421: SWAP1 00000422: PUSH1 0x24 00000424: CALLDATALOAD 00000425: SWAP1 00000426: SIGNEXTEND 00000427: PUSH1 0x44 00000429: CALLDATALOAD 0000042a: PUSH2 0x0b39 0000042d: JUMP 0000042e: JUMPDEST 0000042f: CALLVALUE 00000430: ISZERO 00000431: PUSH2 0x0439 00000434: JUMPI 00000435: PUSH1 0x00 00000437: DUP1 00000438: REVERT 00000439: JUMPDEST 0000043a: PUSH2 0x025e 0000043d: PUSH2 0x0bcc 00000440: JUMP 00000441: JUMPDEST 00000442: CALLVALUE 00000443: ISZERO 00000444: PUSH2 0x044c 00000447: JUMPI 00000448: PUSH1 0x00 0000044a: DUP1 0000044b: REVERT 0000044c: JUMPDEST 0000044d: PUSH2 0x025e 00000450: PUSH2 0x0bd2 00000453: JUMP 00000454: JUMPDEST 00000455: CALLVALUE 00000456: ISZERO 00000457: PUSH2 0x045f 0000045a: JUMPI 0000045b: PUSH1 0x00 0000045d: DUP1 0000045e: REVERT 0000045f: JUMPDEST 00000460: PUSH2 0x023b 00000463: PUSH1 0x04 00000465: CALLDATALOAD 00000466: PUSH2 0x0bd8 00000469: JUMP 0000046a: JUMPDEST 0000046b: CALLVALUE 0000046c: ISZERO 0000046d: PUSH2 0x0475 00000470: JUMPI 00000471: PUSH1 0x00 00000473: DUP1 00000474: REVERT 00000475: JUMPDEST 00000476: PUSH2 0x025e 00000479: PUSH2 0x0bf8 0000047c: JUMP 0000047d: JUMPDEST 0000047e: CALLVALUE 0000047f: ISZERO 00000480: PUSH2 0x0488 00000483: JUMPI 00000484: PUSH1 0x00 00000486: DUP1 00000487: REVERT 00000488: JUMPDEST 00000489: PUSH2 0x023b 0000048c: PUSH1 0x01 0000048e: PUSH1 0xa0 00000490: PUSH1 0x02 00000492: EXP 00000493: SUB 00000494: PUSH1 0x04 00000496: CALLDATALOAD 00000497: AND 00000498: PUSH2 0x0c1d 0000049b: JUMP 0000049c: JUMPDEST 0000049d: CALLVALUE 0000049e: ISZERO 0000049f: PUSH2 0x04a7 000004a2: JUMPI 000004a3: PUSH1 0x00 000004a5: DUP1 000004a6: REVERT 000004a7: JUMPDEST 000004a8: PUSH2 0x025e 000004ab: PUSH2 0x0cdd 000004ae: JUMP 000004af: JUMPDEST 000004b0: CALLVALUE 000004b1: ISZERO 000004b2: PUSH2 0x04ba 000004b5: JUMPI 000004b6: PUSH1 0x00 000004b8: DUP1 000004b9: REVERT 000004ba: JUMPDEST 000004bb: PUSH2 0x025e 000004be: PUSH2 0x0d38 000004c1: JUMP 000004c2: JUMPDEST 000004c3: CALLVALUE 000004c4: ISZERO 000004c5: PUSH2 0x04cd 000004c8: JUMPI 000004c9: PUSH1 0x00 000004cb: DUP1 000004cc: REVERT 000004cd: JUMPDEST 000004ce: PUSH2 0x023b 000004d1: PUSH1 0x01 000004d3: PUSH1 0xa0 000004d5: PUSH1 0x02 000004d7: EXP 000004d8: SUB 000004d9: PUSH1 0x04 000004db: CALLDATALOAD 000004dc: AND 000004dd: PUSH2 0x0d3e 000004e0: JUMP 000004e1: JUMPDEST 000004e2: CALLVALUE 000004e3: ISZERO 000004e4: PUSH2 0x04ec 000004e7: JUMPI 000004e8: PUSH1 0x00 000004ea: DUP1 000004eb: REVERT 000004ec: JUMPDEST 000004ed: PUSH2 0x023b 000004f0: PUSH1 0x04 000004f2: CALLDATALOAD 000004f3: PUSH1 0x24 000004f5: CALLDATALOAD 000004f6: PUSH1 0x44 000004f8: CALLDATALOAD 000004f9: PUSH2 0x0d9d 000004fc: JUMP 000004fd: JUMPDEST 000004fe: CALLVALUE 000004ff: ISZERO 00000500: PUSH2 0x0508 00000503: JUMPI 00000504: PUSH1 0x00 00000506: DUP1 00000507: REVERT 00000508: JUMPDEST 00000509: PUSH2 0x025e 0000050c: PUSH2 0x0e28 0000050f: JUMP 00000510: JUMPDEST 00000511: CALLVALUE 00000512: ISZERO 00000513: PUSH2 0x051b 00000516: JUMPI 00000517: PUSH1 0x00 00000519: DUP1 0000051a: REVERT 0000051b: JUMPDEST 0000051c: PUSH2 0x023b 0000051f: PUSH1 0x04 00000521: CALLDATALOAD 00000522: PUSH2 0x0e2e 00000525: JUMP 00000526: JUMPDEST 00000527: CALLVALUE 00000528: ISZERO 00000529: PUSH2 0x0531 0000052c: JUMPI 0000052d: PUSH1 0x00 0000052f: DUP1 00000530: REVERT 00000531: JUMPDEST 00000532: PUSH2 0x025e 00000535: PUSH2 0x0e6c 00000538: JUMP 00000539: JUMPDEST 0000053a: CALLVALUE 0000053b: ISZERO 0000053c: PUSH2 0x0544 0000053f: JUMPI 00000540: PUSH1 0x00 00000542: DUP1 00000543: REVERT 00000544: JUMPDEST 00000545: PUSH2 0x023b 00000548: PUSH1 0x04 0000054a: CALLDATALOAD 0000054b: PUSH2 0x0e72 0000054e: JUMP 0000054f: JUMPDEST 00000550: PUSH2 0x023b 00000553: PUSH1 0x04 00000555: CALLDATALOAD 00000556: PUSH1 0x24 00000558: CALLDATALOAD 00000559: PUSH2 0x07ec 0000055c: JUMP 0000055d: JUMPDEST 0000055e: CALLVALUE 0000055f: ISZERO 00000560: PUSH2 0x0568 00000563: JUMPI 00000564: PUSH1 0x00 00000566: DUP1 00000567: REVERT 00000568: JUMPDEST 00000569: PUSH2 0x0573 0000056c: PUSH1 0x04 0000056e: CALLDATALOAD 0000056f: PUSH2 0x0eba 00000572: JUMP 00000573: JUMPDEST 00000574: PUSH1 0x40 00000576: MLOAD 00000577: DUP5 00000578: DUP2 00000579: MSTORE 0000057a: PUSH1 0x20 0000057c: DUP2 0000057d: ADD 0000057e: DUP5 0000057f: SWAP1 00000580: MSTORE 00000581: PUSH1 0x40 00000583: DUP2 00000584: ADD 00000585: DUP4 00000586: SWAP1 00000587: MSTORE 00000588: PUSH1 0x80 0000058a: PUSH1 0x60 0000058c: DUP3 0000058d: ADD 0000058e: DUP2 0000058f: DUP2 00000590: MSTORE 00000591: DUP4 00000592: SLOAD 00000593: PUSH1 0x02 00000595: PUSH1 0x00 00000597: NOT 00000598: PUSH2 0x0100 0000059b: PUSH1 0x01 0000059d: DUP5 0000059e: AND 0000059f: ISZERO 000005a0: MUL 000005a1: ADD 000005a2: SWAP1 000005a3: SWAP2 000005a4: AND 000005a5: DIV 000005a6: SWAP2 000005a7: DUP4 000005a8: ADD 000005a9: DUP3 000005aa: SWAP1 000005ab: MSTORE 000005ac: SWAP1 000005ad: PUSH1 0xa0 000005af: DUP4 000005b0: ADD 000005b1: SWAP1 000005b2: DUP5 000005b3: SWAP1 000005b4: DUP1 000005b5: ISZERO 000005b6: PUSH2 0x0600 000005b9: JUMPI 000005ba: DUP1 000005bb: PUSH1 0x1f 000005bd: LT 000005be: PUSH2 0x05d5 000005c1: JUMPI 000005c2: PUSH2 0x0100 000005c5: DUP1 000005c6: DUP4 000005c7: SLOAD 000005c8: DIV 000005c9: MUL 000005ca: DUP4 000005cb: MSTORE 000005cc: SWAP2 000005cd: PUSH1 0x20 000005cf: ADD 000005d0: SWAP2 000005d1: PUSH2 0x0600 000005d4: JUMP 000005d5: JUMPDEST 000005d6: DUP3 000005d7: ADD 000005d8: SWAP2 000005d9: SWAP1 000005da: PUSH1 0x00 000005dc: MSTORE 000005dd: PUSH1 0x20 000005df: PUSH1 0x00 000005e1: KECCAK256 000005e2: SWAP1 000005e3: JUMPDEST 000005e4: DUP2 000005e5: SLOAD 000005e6: DUP2 000005e7: MSTORE 000005e8: SWAP1 000005e9: PUSH1 0x01 000005eb: ADD 000005ec: SWAP1 000005ed: PUSH1 0x20 000005ef: ADD 000005f0: DUP1 000005f1: DUP4 000005f2: GT 000005f3: PUSH2 0x05e3 000005f6: JUMPI 000005f7: DUP3 000005f8: SWAP1 000005f9: SUB 000005fa: PUSH1 0x1f 000005fc: AND 000005fd: DUP3 000005fe: ADD 000005ff: SWAP2 00000600: JUMPDEST 00000601: POP 00000602: POP 00000603: SWAP6 00000604: POP 00000605: POP 00000606: POP 00000607: POP 00000608: POP 00000609: POP 0000060a: PUSH1 0x40 0000060c: MLOAD 0000060d: DUP1 0000060e: SWAP2 0000060f: SUB 00000610: SWAP1 00000611: RETURN 00000612: JUMPDEST 00000613: CALLVALUE 00000614: ISZERO 00000615: PUSH2 0x061d 00000618: JUMPI 00000619: PUSH1 0x00 0000061b: DUP1 0000061c: REVERT 0000061d: JUMPDEST 0000061e: PUSH2 0x03db 00000621: PUSH2 0x0eee 00000624: JUMP 00000625: JUMPDEST 00000626: CALLVALUE 00000627: ISZERO 00000628: PUSH2 0x0630 0000062b: JUMPI 0000062c: PUSH1 0x00 0000062e: DUP1 0000062f: REVERT 00000630: JUMPDEST 00000631: PUSH2 0x025e 00000634: PUSH2 0x0fba 00000637: JUMP 00000638: JUMPDEST 00000639: CALLVALUE 0000063a: ISZERO 0000063b: PUSH2 0x0643 0000063e: JUMPI 0000063f: PUSH1 0x00 00000641: DUP1 00000642: REVERT 00000643: JUMPDEST 00000644: PUSH2 0x03db 00000647: PUSH2 0x0ffb 0000064a: JUMP 0000064b: JUMPDEST 0000064c: CALLVALUE 0000064d: ISZERO 0000064e: PUSH2 0x0656 00000651: JUMPI 00000652: PUSH1 0x00 00000654: DUP1 00000655: REVERT 00000656: JUMPDEST 00000657: PUSH2 0x025e 0000065a: PUSH2 0x100a 0000065d: JUMP 0000065e: JUMPDEST 0000065f: CALLVALUE 00000660: ISZERO 00000661: PUSH2 0x0669 00000664: JUMPI 00000665: PUSH1 0x00 00000667: DUP1 00000668: REVERT 00000669: JUMPDEST 0000066a: PUSH2 0x025e 0000066d: PUSH2 0x1010 00000670: JUMP 00000671: JUMPDEST 00000672: CALLVALUE 00000673: ISZERO 00000674: PUSH2 0x067c 00000677: JUMPI 00000678: PUSH1 0x00 0000067a: DUP1 0000067b: REVERT 0000067c: JUMPDEST 0000067d: PUSH2 0x025e 00000680: PUSH2 0x107e 00000683: JUMP 00000684: JUMPDEST 00000685: CALLVALUE 00000686: ISZERO 00000687: PUSH2 0x068f 0000068a: JUMPI 0000068b: PUSH1 0x00 0000068d: DUP1 0000068e: REVERT 0000068f: JUMPDEST 00000690: PUSH2 0x023b 00000693: PUSH1 0x01 00000695: PUSH1 0xa0 00000697: PUSH1 0x02 00000699: EXP 0000069a: SUB 0000069b: PUSH1 0x04 0000069d: CALLDATALOAD 0000069e: AND 0000069f: PUSH2 0x1084 000006a2: JUMP 000006a3: JUMPDEST 000006a4: CALLVALUE 000006a5: ISZERO 000006a6: PUSH2 0x06ae 000006a9: JUMPI 000006aa: PUSH1 0x00 000006ac: DUP1 000006ad: REVERT 000006ae: JUMPDEST 000006af: PUSH2 0x023b 000006b2: PUSH1 0x01 000006b4: PUSH1 0xa0 000006b6: PUSH1 0x02 000006b8: EXP 000006b9: SUB 000006ba: PUSH1 0x04 000006bc: CALLDATALOAD 000006bd: AND 000006be: PUSH1 0x24 000006c0: CALLDATALOAD 000006c1: PUSH2 0x10ce 000006c4: JUMP 000006c5: JUMPDEST 000006c6: CALLVALUE 000006c7: ISZERO 000006c8: PUSH2 0x06d0 000006cb: JUMPI 000006cc: PUSH1 0x00 000006ce: DUP1 000006cf: REVERT 000006d0: JUMPDEST 000006d1: PUSH2 0x023b 000006d4: PUSH1 0x04 000006d6: CALLDATALOAD 000006d7: PUSH2 0x1197 000006da: JUMP 000006db: JUMPDEST 000006dc: CALLVALUE 000006dd: ISZERO 000006de: PUSH2 0x06e6 000006e1: JUMPI 000006e2: PUSH1 0x00 000006e4: DUP1 000006e5: REVERT 000006e6: JUMPDEST 000006e7: PUSH2 0x025e 000006ea: PUSH2 0x11c6 000006ed: JUMP 000006ee: JUMPDEST 000006ef: CALLVALUE 000006f0: ISZERO 000006f1: PUSH2 0x06f9 000006f4: JUMPI 000006f5: PUSH1 0x00 000006f7: DUP1 000006f8: REVERT 000006f9: JUMPDEST 000006fa: PUSH2 0x03db 000006fd: PUSH2 0x11cc 00000700: JUMP 00000701: JUMPDEST 00000702: PUSH2 0x023b 00000705: PUSH2 0x11db 00000708: JUMP 00000709: JUMPDEST 0000070a: CALLVALUE 0000070b: ISZERO 0000070c: PUSH2 0x0714 0000070f: JUMPI 00000710: PUSH1 0x00 00000712: DUP1 00000713: REVERT 00000714: JUMPDEST 00000715: PUSH2 0x023b 00000718: PUSH2 0x1237 0000071b: JUMP 0000071c: JUMPDEST 0000071d: CALLVALUE 0000071e: ISZERO 0000071f: PUSH2 0x0727 00000722: JUMPI 00000723: PUSH1 0x00 00000725: DUP1 00000726: REVERT 00000727: JUMPDEST 00000728: PUSH2 0x025e 0000072b: PUSH2 0x125a 0000072e: JUMP 0000072f: JUMPDEST 00000730: PUSH2 0x023b 00000733: PUSH2 0x0769 00000736: JUMP 00000737: JUMPDEST 00000738: CALLVALUE 00000739: ISZERO 0000073a: PUSH2 0x0742 0000073d: JUMPI 0000073e: PUSH1 0x00 00000740: DUP1 00000741: REVERT 00000742: JUMPDEST 00000743: PUSH2 0x023b 00000746: PUSH1 0x01 00000748: PUSH1 0xa0 0000074a: PUSH1 0x02 0000074c: EXP 0000074d: SUB 0000074e: PUSH1 0x04 00000750: CALLDATALOAD 00000751: AND 00000752: PUSH2 0x1260 00000755: JUMP 00000756: JUMPDEST 00000757: CALLVALUE 00000758: ISZERO 00000759: PUSH2 0x0761 0000075c: JUMPI 0000075d: PUSH1 0x00 0000075f: DUP1 00000760: REVERT 00000761: JUMPDEST 00000762: PUSH2 0x025e 00000765: PUSH2 0x1326 00000768: JUMP 00000769: JUMPDEST 0000076a: PUSH1 0x06 0000076c: SLOAD 0000076d: CALLER 0000076e: PUSH1 0x01 00000770: PUSH1 0xa0 00000772: PUSH1 0x02 00000774: EXP 00000775: SUB 00000776: SWAP1 00000777: DUP2 00000778: AND 00000779: SWAP2 0000077a: AND 0000077b: EQ 0000077c: PUSH2 0x0784 0000077f: JUMPI 00000780: PUSH1 0x00 00000782: DUP1 00000783: REVERT 00000784: JUMPDEST 00000785: PUSH1 0x04 00000787: DUP1 00000788: SLOAD 00000789: CALLVALUE 0000078a: SWAP1 0000078b: DUP2 0000078c: ADD 0000078d: SWAP2 0000078e: DUP3 0000078f: SWAP1 00000790: SSTORE 00000791: PUSH32 0xfe31723f1a66c698cd68f395c83e975ab0a2bd93716a8ae5069a17a9a0a70231 000007b2: SWAP2 000007b3: CALLER 000007b4: SWAP2 000007b5: SWAP1 000007b6: PUSH1 0x40 000007b8: MLOAD 000007b9: DUP1 000007ba: DUP5 000007bb: PUSH1 0x01 000007bd: PUSH1 0xa0 000007bf: PUSH1 0x02 000007c1: EXP 000007c2: SUB 000007c3: AND 000007c4: PUSH1 0x01 000007c6: PUSH1 0xa0 000007c8: PUSH1 0x02 000007ca: EXP 000007cb: SUB 000007cc: AND 000007cd: DUP2 000007ce: MSTORE 000007cf: PUSH1 0x20 000007d1: ADD 000007d2: DUP4 000007d3: DUP2 000007d4: MSTORE 000007d5: PUSH1 0x20 000007d7: ADD 000007d8: DUP3 000007d9: DUP2 000007da: MSTORE 000007db: PUSH1 0x20 000007dd: ADD 000007de: SWAP4 000007df: POP 000007e0: POP 000007e1: POP 000007e2: POP 000007e3: PUSH1 0x40 000007e5: MLOAD 000007e6: DUP1 000007e7: SWAP2 000007e8: SUB 000007e9: SWAP1 000007ea: LOG1 000007eb: JUMP 000007ec: JUMPDEST 000007ed: PUSH1 0x00 000007ef: DUP1 000007f0: DUP1 000007f1: CALLVALUE 000007f2: DUP2 000007f3: SWAP1 000007f4: GT 000007f5: PUSH2 0x07fd 000007f8: JUMPI 000007f9: PUSH1 0x00 000007fb: DUP1 000007fc: REVERT 000007fd: JUMPDEST 000007fe: PUSH1 0x00 00000800: DUP6 00000801: GT 00000802: DUP1 00000803: ISZERO 00000804: PUSH2 0x080e 00000807: JUMPI 00000808: POP 00000809: PUSH1 0x32 0000080b: DUP6 0000080c: GT 0000080d: ISZERO 0000080e: JUMPDEST 0000080f: ISZERO 00000810: ISZERO 00000811: PUSH2 0x0819 00000814: JUMPI 00000815: PUSH1 0x00 00000817: DUP1 00000818: REVERT 00000819: JUMPDEST 0000081a: DUP5 0000081b: CALLVALUE 0000081c: DUP2 0000081d: ISZERO 0000081e: ISZERO 0000081f: PUSH2 0x0824 00000822: JUMPI 00000823: INVALID 00000824: JUMPDEST 00000825: DIV 00000826: SWAP3 00000827: POP 00000828: PUSH2 0x082f 0000082b: PUSH2 0x0fba 0000082e: JUMP 0000082f: JUMPDEST 00000830: DUP4 00000831: LT 00000832: ISZERO 00000833: PUSH2 0x083b 00000836: JUMPI 00000837: PUSH1 0x00 00000839: DUP1 0000083a: REVERT 0000083b: JUMPDEST 0000083c: PUSH2 0x0843 0000083f: PUSH2 0x0cdd 00000842: JUMP 00000843: JUMPDEST 00000844: DUP4 00000845: GT 00000846: ISZERO 00000847: PUSH2 0x084f 0000084a: JUMPI 0000084b: PUSH1 0x00 0000084d: DUP1 0000084e: REVERT 0000084f: JUMPDEST 00000850: PUSH2 0x085d 00000853: PUSH1 0x01 00000855: PUSH3 0x0186a0 00000859: PUSH2 0x0936 0000085c: JUMP 0000085d: JUMPDEST 0000085e: SWAP2 0000085f: POP 00000860: DUP2 00000861: DUP6 00000862: GT 00000863: ISZERO 00000864: PUSH2 0x086c 00000867: JUMPI 00000868: PUSH1 0x00 0000086a: DUP1 0000086b: REVERT 0000086c: JUMPDEST 0000086d: PUSH1 0x0c 0000086f: SLOAD 00000870: DUP3 00000871: LT 00000872: ISZERO 00000873: PUSH2 0x0886 00000876: JUMPI 00000877: PUSH2 0x0884 0000087a: PUSH1 0x0c 0000087c: SLOAD 0000087d: PUSH1 0x03 0000087f: MUL 00000880: PUSH2 0x132b 00000883: JUMP 00000884: JUMPDEST 00000885: POP 00000886: JUMPDEST 00000887: PUSH3 0x0186a0 0000088b: PUSH1 0x12 0000088d: SLOAD 0000088e: PUSH3 0x0186a0 00000892: PUSH1 0x0a 00000894: SLOAD 00000895: CALLVALUE 00000896: MUL 00000897: DUP2 00000898: ISZERO 00000899: ISZERO 0000089a: PUSH2 0x089f 0000089d: JUMPI 0000089e: INVALID 0000089f: JUMPDEST 000008a0: DIV 000008a1: MUL 000008a2: DUP2 000008a3: ISZERO 000008a4: ISZERO 000008a5: PUSH2 0x08aa 000008a8: JUMPI 000008a9: INVALID 000008aa: JUMPDEST 000008ab: PUSH1 0x11 000008ad: DUP1 000008ae: SLOAD 000008af: SWAP3 000008b0: SWAP1 000008b1: SWAP2 000008b2: DIV 000008b3: SWAP2 000008b4: DUP3 000008b5: ADD 000008b6: SWAP1 000008b7: SSTORE 000008b8: PUSH1 0x05 000008ba: DUP1 000008bb: SLOAD 000008bc: CALLVALUE 000008bd: DUP4 000008be: DUP2 000008bf: SUB 000008c0: SWAP1 000008c1: SWAP2 000008c2: ADD 000008c3: SWAP1 000008c4: SWAP2 000008c5: SSTORE 000008c6: PUSH1 0x10 000008c8: SLOAD 000008c9: SWAP2 000008ca: SWAP3 000008cb: POP 000008cc: PUSH32 0xea66d02a1460806372fce5d299585c1cb7e48514a92ae6e65ffca893b4344867 000008ed: SWAP2 000008ee: SWAP1 000008ef: CALLER 000008f0: SWAP1 000008f1: DUP9 000008f2: PUSH1 0x40 000008f4: MLOAD 000008f5: SWAP4 000008f6: DUP5 000008f7: MSTORE 000008f8: PUSH1 0x01 000008fa: PUSH1 0xa0 000008fc: PUSH1 0x02 000008fe: EXP 000008ff: SUB 00000900: SWAP1 00000901: SWAP3 00000902: AND 00000903: PUSH1 0x20 00000905: DUP5 00000906: ADD 00000907: MSTORE 00000908: PUSH1 0x40 0000090a: DUP1 0000090b: DUP5 0000090c: ADD 0000090d: SWAP2 0000090e: SWAP1 0000090f: SWAP2 00000910: MSTORE 00000911: PUSH1 0x60 00000913: DUP4 00000914: ADD 00000915: SWAP2 00000916: SWAP1 00000917: SWAP2 00000918: MSTORE 00000919: PUSH1 0x80 0000091b: SWAP1 0000091c: SWAP2 0000091d: ADD 0000091e: SWAP1 0000091f: MLOAD 00000920: DUP1 00000921: SWAP2 00000922: SUB 00000923: SWAP1 00000924: LOG1 00000925: PUSH2 0x092f 00000928: DUP4 00000929: DUP7 0000092a: DUP7 0000092b: PUSH2 0x138b 0000092e: JUMP 0000092f: JUMPDEST 00000930: POP 00000931: POP 00000932: POP 00000933: POP 00000934: POP 00000935: JUMP 00000936: JUMPDEST 00000937: PUSH1 0x00 00000939: PUSH2 0x0940 0000093c: PUSH2 0x0eee 0000093f: JUMP 00000940: JUMPDEST 00000941: PUSH1 0x01 00000943: PUSH1 0xa0 00000945: PUSH1 0x02 00000947: EXP 00000948: SUB 00000949: AND 0000094a: PUSH4 0x42ad5c86 0000094f: DUP5 00000950: DUP5 00000951: PUSH1 0x00 00000953: PUSH1 0x40 00000955: MLOAD 00000956: PUSH1 0x20 00000958: ADD 00000959: MSTORE 0000095a: PUSH1 0x40 0000095c: MLOAD 0000095d: PUSH1 0xe0 0000095f: PUSH1 0x02 00000961: EXP 00000962: PUSH4 0xffffffff 00000967: DUP6 00000968: AND 00000969: MUL 0000096a: DUP2 0000096b: MSTORE 0000096c: PUSH1 0x0f 0000096e: SWAP3 0000096f: DUP4 00000970: SIGNEXTEND 00000971: DUP4 00000972: SIGNEXTEND 00000973: PUSH1 0x04 00000975: DUP3 00000976: ADD 00000977: MSTORE 00000978: SWAP1 00000979: DUP3 0000097a: SIGNEXTEND 0000097b: SWAP1 0000097c: SWAP2 0000097d: SIGNEXTEND 0000097e: PUSH1 0x24 00000980: DUP3 00000981: ADD 00000982: MSTORE 00000983: PUSH1 0x44 00000985: ADD 00000986: PUSH1 0x20 00000988: PUSH1 0x40 0000098a: MLOAD 0000098b: DUP1 0000098c: DUP4 0000098d: SUB 0000098e: DUP2 0000098f: PUSH1 0x00 00000991: DUP8 00000992: DUP1 00000993: EXTCODESIZE 00000994: ISZERO 00000995: ISZERO 00000996: PUSH2 0x099e 00000999: JUMPI 0000099a: PUSH1 0x00 0000099c: DUP1 0000099d: REVERT 0000099e: JUMPDEST 0000099f: PUSH2 0x02c6 000009a2: GAS 000009a3: SUB 000009a4: CALL 000009a5: ISZERO 000009a6: ISZERO 000009a7: PUSH2 0x09af 000009aa: JUMPI 000009ab: PUSH1 0x00 000009ad: DUP1 000009ae: REVERT 000009af: JUMPDEST 000009b0: POP 000009b1: POP 000009b2: POP 000009b3: PUSH1 0x40 000009b5: MLOAD 000009b6: DUP1 000009b7: MLOAD 000009b8: SWAP5 000009b9: SWAP4 000009ba: POP 000009bb: POP 000009bc: POP 000009bd: POP 000009be: JUMP 000009bf: JUMPDEST 000009c0: PUSH1 0x00 000009c2: NOT 000009c3: DUP2 000009c4: JUMP 000009c5: JUMPDEST 000009c6: PUSH1 0x05 000009c8: SLOAD 000009c9: PUSH1 0x04 000009cb: SLOAD 000009cc: PUSH1 0x00 000009ce: SWAP2 000009cf: ADD 000009d0: DUP2 000009d1: DUP2 000009d2: SGT 000009d3: PUSH2 0x09dd 000009d6: JUMPI 000009d7: PUSH1 0x00 000009d9: PUSH2 0x09df 000009dc: JUMP 000009dd: JUMPDEST 000009de: DUP1 000009df: JUMPDEST 000009e0: SWAP2 000009e1: POP 000009e2: JUMPDEST 000009e3: POP 000009e4: SWAP1 000009e5: JUMP 000009e6: JUMPDEST 000009e7: PUSH1 0x0e 000009e9: SLOAD 000009ea: DUP2 000009eb: JUMP 000009ec: JUMPDEST 000009ed: PUSH1 0x09 000009ef: PUSH1 0x20 000009f1: MSTORE 000009f2: PUSH1 0x00 000009f4: SWAP1 000009f5: DUP2 000009f6: MSTORE 000009f7: PUSH1 0x40 000009f9: SWAP1 000009fa: KECCAK256 000009fb: DUP1 000009fc: SLOAD 000009fd: PUSH1 0x01 000009ff: DUP3 00000a00: ADD 00000a01: SLOAD 00000a02: PUSH1 0x02 00000a04: SWAP1 00000a05: SWAP3 00000a06: ADD 00000a07: SLOAD 00000a08: SWAP1 00000a09: SWAP2 00000a0a: SWAP1 00000a0b: DUP4 00000a0c: JUMP 00000a0d: JUMPDEST 00000a0e: PUSH1 0x07 00000a10: SLOAD 00000a11: CALLER 00000a12: PUSH1 0x01 00000a14: PUSH1 0xa0 00000a16: PUSH1 0x02 00000a18: EXP 00000a19: SUB 00000a1a: SWAP1 00000a1b: DUP2 00000a1c: AND 00000a1d: SWAP2 00000a1e: AND 00000a1f: EQ 00000a20: PUSH2 0x0a28 00000a23: JUMPI 00000a24: PUSH1 0x00 00000a26: DUP1 00000a27: REVERT 00000a28: JUMPDEST 00000a29: PUSH3 0x0186a0 00000a2d: DUP2 00000a2e: LT 00000a2f: PUSH2 0x0a37 00000a32: JUMPI 00000a33: PUSH1 0x00 00000a35: DUP1 00000a36: REVERT 00000a37: JUMPDEST 00000a38: PUSH1 0x12 00000a3a: SSTORE 00000a3b: JUMP 00000a3c: JUMPDEST 00000a3d: PUSH1 0x01 00000a3f: DUP1 00000a40: SLOAD 00000a41: PUSH1 0x01 00000a43: DUP2 00000a44: PUSH1 0x01 00000a46: AND 00000a47: ISZERO 00000a48: PUSH2 0x0100 00000a4b: MUL 00000a4c: SUB 00000a4d: AND 00000a4e: PUSH1 0x02 00000a50: SWAP1 00000a51: DIV 00000a52: DUP1 00000a53: PUSH1 0x1f 00000a55: ADD 00000a56: PUSH1 0x20 00000a58: DUP1 00000a59: SWAP2 00000a5a: DIV 00000a5b: MUL 00000a5c: PUSH1 0x20 00000a5e: ADD 00000a5f: PUSH1 0x40 00000a61: MLOAD 00000a62: SWAP1 00000a63: DUP2 00000a64: ADD 00000a65: PUSH1 0x40 00000a67: MSTORE 00000a68: DUP1 00000a69: SWAP3 00000a6a: SWAP2 00000a6b: SWAP1 00000a6c: DUP2 00000a6d: DUP2 00000a6e: MSTORE 00000a6f: PUSH1 0x20 00000a71: ADD 00000a72: DUP3 00000a73: DUP1 00000a74: SLOAD 00000a75: PUSH1 0x01 00000a77: DUP2 00000a78: PUSH1 0x01 00000a7a: AND 00000a7b: ISZERO 00000a7c: PUSH2 0x0100 00000a7f: MUL 00000a80: SUB 00000a81: AND 00000a82: PUSH1 0x02 00000a84: SWAP1 00000a85: DIV 00000a86: DUP1 00000a87: ISZERO 00000a88: PUSH2 0x0ad2 00000a8b: JUMPI 00000a8c: DUP1 00000a8d: PUSH1 0x1f 00000a8f: LT 00000a90: PUSH2 0x0aa7 00000a93: JUMPI 00000a94: PUSH2 0x0100 00000a97: DUP1 00000a98: DUP4 00000a99: SLOAD 00000a9a: DIV 00000a9b: MUL 00000a9c: DUP4 00000a9d: MSTORE 00000a9e: SWAP2 00000a9f: PUSH1 0x20 00000aa1: ADD 00000aa2: SWAP2 00000aa3: PUSH2 0x0ad2 00000aa6: JUMP 00000aa7: JUMPDEST 00000aa8: DUP3 00000aa9: ADD 00000aaa: SWAP2 00000aab: SWAP1 00000aac: PUSH1 0x00 00000aae: MSTORE 00000aaf: PUSH1 0x20 00000ab1: PUSH1 0x00 00000ab3: KECCAK256 00000ab4: SWAP1 00000ab5: JUMPDEST 00000ab6: DUP2 00000ab7: SLOAD 00000ab8: DUP2 00000ab9: MSTORE 00000aba: SWAP1 00000abb: PUSH1 0x01 00000abd: ADD 00000abe: SWAP1 00000abf: PUSH1 0x20 00000ac1: ADD 00000ac2: DUP1 00000ac3: DUP4 00000ac4: GT 00000ac5: PUSH2 0x0ab5 00000ac8: JUMPI 00000ac9: DUP3 00000aca: SWAP1 00000acb: SUB 00000acc: PUSH1 0x1f 00000ace: AND 00000acf: DUP3 00000ad0: ADD 00000ad1: SWAP2 00000ad2: JUMPDEST 00000ad3: POP 00000ad4: POP 00000ad5: POP 00000ad6: POP 00000ad7: POP 00000ad8: DUP2 00000ad9: JUMP 00000ada: JUMPDEST 00000adb: PUSH1 0x07 00000add: SLOAD 00000ade: CALLER 00000adf: PUSH1 0x01 00000ae1: PUSH1 0xa0 00000ae3: PUSH1 0x02 00000ae5: EXP 00000ae6: SUB 00000ae7: SWAP1 00000ae8: DUP2 00000ae9: AND 00000aea: SWAP2 00000aeb: AND 00000aec: EQ 00000aed: PUSH2 0x0af5 00000af0: JUMPI 00000af1: PUSH1 0x00 00000af3: DUP1 00000af4: REVERT 00000af5: JUMPDEST 00000af6: PUSH1 0x00 00000af8: DUP2 00000af9: GT 00000afa: PUSH2 0x0b02 00000afd: JUMPI 00000afe: PUSH1 0x00 00000b00: DUP1 00000b01: REVERT 00000b02: JUMPDEST 00000b03: PUSH2 0x0b0b 00000b06: DUP2 00000b07: PUSH2 0x132b 00000b0a: JUMP 00000b0b: JUMPDEST 00000b0c: POP 00000b0d: POP 00000b0e: JUMP 00000b0f: JUMPDEST 00000b10: PUSH1 0x01 00000b12: PUSH1 0xa0 00000b14: PUSH1 0x02 00000b16: EXP 00000b17: SUB 00000b18: ADDRESS 00000b19: AND 00000b1a: BALANCE 00000b1b: JUMPDEST 00000b1c: SWAP1 00000b1d: JUMP 00000b1e: JUMPDEST 00000b1f: PUSH1 0x0f 00000b21: SLOAD 00000b22: DUP2 00000b23: JUMP 00000b24: JUMPDEST 00000b25: PUSH1 0x06 00000b27: SLOAD 00000b28: PUSH1 0x01 00000b2a: PUSH1 0xa0 00000b2c: PUSH1 0x02 00000b2e: EXP 00000b2f: SUB 00000b30: AND 00000b31: DUP2 00000b32: JUMP 00000b33: JUMPDEST 00000b34: PUSH1 0x0d 00000b36: SLOAD 00000b37: DUP2 00000b38: JUMP 00000b39: JUMPDEST 00000b3a: PUSH1 0x00 00000b3c: PUSH2 0x0b43 00000b3f: PUSH2 0x0eee 00000b42: JUMP 00000b43: JUMPDEST 00000b44: PUSH1 0x01 00000b46: PUSH1 0xa0 00000b48: PUSH1 0x02 00000b4a: EXP 00000b4b: SUB 00000b4c: AND 00000b4d: PUSH4 0x7ce27a4e 00000b52: DUP6 00000b53: DUP6 00000b54: DUP6 00000b55: PUSH1 0x00 00000b57: PUSH1 0x40 00000b59: MLOAD 00000b5a: PUSH1 0x20 00000b5c: ADD 00000b5d: MSTORE 00000b5e: PUSH1 0x40 00000b60: MLOAD 00000b61: PUSH1 0xe0 00000b63: PUSH1 0x02 00000b65: EXP 00000b66: PUSH4 0xffffffff 00000b6b: DUP7 00000b6c: AND 00000b6d: MUL 00000b6e: DUP2 00000b6f: MSTORE 00000b70: PUSH1 0x0f 00000b72: SWAP4 00000b73: DUP5 00000b74: SIGNEXTEND 00000b75: DUP5 00000b76: SIGNEXTEND 00000b77: PUSH1 0x04 00000b79: DUP3 00000b7a: ADD 00000b7b: MSTORE 00000b7c: SWAP2 00000b7d: DUP4 00000b7e: SIGNEXTEND 00000b7f: SWAP1 00000b80: SWAP3 00000b81: SIGNEXTEND 00000b82: PUSH1 0x24 00000b84: DUP3 00000b85: ADD 00000b86: MSTORE 00000b87: PUSH1 0x44 00000b89: DUP2 00000b8a: ADD 00000b8b: SWAP2 00000b8c: SWAP1 00000b8d: SWAP2 00000b8e: MSTORE 00000b8f: PUSH1 0x64 00000b91: ADD 00000b92: PUSH1 0x20 00000b94: PUSH1 0x40 00000b96: MLOAD 00000b97: DUP1 00000b98: DUP4 00000b99: SUB 00000b9a: DUP2 00000b9b: PUSH1 0x00 00000b9d: DUP8 00000b9e: DUP1 00000b9f: EXTCODESIZE 00000ba0: ISZERO 00000ba1: ISZERO 00000ba2: PUSH2 0x0baa 00000ba5: JUMPI 00000ba6: PUSH1 0x00 00000ba8: DUP1 00000ba9: REVERT 00000baa: JUMPDEST 00000bab: PUSH2 0x02c6 00000bae: GAS 00000baf: SUB 00000bb0: CALL 00000bb1: ISZERO 00000bb2: ISZERO 00000bb3: PUSH2 0x0bbb 00000bb6: JUMPI 00000bb7: PUSH1 0x00 00000bb9: DUP1 00000bba: REVERT 00000bbb: JUMPDEST 00000bbc: POP 00000bbd: POP 00000bbe: POP 00000bbf: PUSH1 0x40 00000bc1: MLOAD 00000bc2: DUP1 00000bc3: MLOAD 00000bc4: SWAP6 00000bc5: SWAP5 00000bc6: POP 00000bc7: POP 00000bc8: POP 00000bc9: POP 00000bca: POP 00000bcb: JUMP 00000bcc: JUMPDEST 00000bcd: PUSH1 0x05 00000bcf: SLOAD 00000bd0: DUP2 00000bd1: JUMP 00000bd2: JUMPDEST 00000bd3: PUSH1 0x13 00000bd5: SLOAD 00000bd6: DUP2 00000bd7: JUMP 00000bd8: JUMPDEST 00000bd9: PUSH1 0x07 00000bdb: SLOAD 00000bdc: CALLER 00000bdd: PUSH1 0x01 00000bdf: PUSH1 0xa0 00000be1: PUSH1 0x02 00000be3: EXP 00000be4: SUB 00000be5: SWAP1 00000be6: DUP2 00000be7: AND 00000be8: SWAP2 00000be9: AND 00000bea: EQ 00000beb: PUSH2 0x0bf3 00000bee: JUMPI 00000bef: PUSH1 0x00 00000bf1: DUP1 00000bf2: REVERT 00000bf3: JUMPDEST 00000bf4: PUSH1 0x0c 00000bf6: SSTORE 00000bf7: JUMP 00000bf8: JUMPDEST 00000bf9: PUSH1 0x07 00000bfb: SLOAD 00000bfc: PUSH1 0x00 00000bfe: SWAP1 00000bff: CALLER 00000c00: PUSH1 0x01 00000c02: PUSH1 0xa0 00000c04: PUSH1 0x02 00000c06: EXP 00000c07: SUB 00000c08: SWAP1 00000c09: DUP2 00000c0a: AND 00000c0b: SWAP2 00000c0c: AND 00000c0d: EQ 00000c0e: PUSH2 0x0c16 00000c11: JUMPI 00000c12: PUSH1 0x00 00000c14: DUP1 00000c15: REVERT 00000c16: JUMPDEST 00000c17: POP 00000c18: PUSH1 0x0a 00000c1a: SLOAD 00000c1b: SWAP1 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: PUSH1 0x06 00000c20: SLOAD 00000c21: PUSH1 0x00 00000c23: SWAP1 00000c24: CALLER 00000c25: PUSH1 0x01 00000c27: PUSH1 0xa0 00000c29: PUSH1 0x02 00000c2b: EXP 00000c2c: SUB 00000c2d: SWAP1 00000c2e: DUP2 00000c2f: AND 00000c30: SWAP2 00000c31: AND 00000c32: EQ 00000c33: PUSH2 0x0c3b 00000c36: JUMPI 00000c37: PUSH1 0x00 00000c39: DUP1 00000c3a: REVERT 00000c3b: JUMPDEST 00000c3c: PUSH1 0x01 00000c3e: PUSH1 0xa0 00000c40: PUSH1 0x02 00000c42: EXP 00000c43: SUB 00000c44: DUP3 00000c45: AND 00000c46: ISZERO 00000c47: ISZERO 00000c48: PUSH2 0x0c5a 00000c4b: JUMPI 00000c4c: PUSH1 0x06 00000c4e: SLOAD 00000c4f: PUSH1 0x01 00000c51: PUSH1 0xa0 00000c53: PUSH1 0x02 00000c55: EXP 00000c56: SUB 00000c57: AND 00000c58: SWAP2 00000c59: POP 00000c5a: JUMPDEST 00000c5b: POP 00000c5c: PUSH1 0x00 00000c5e: PUSH1 0x04 00000c60: DUP2 00000c61: SWAP1 00000c62: SSTORE 00000c63: PUSH1 0x05 00000c65: SSTORE 00000c66: PUSH1 0x01 00000c68: PUSH1 0xa0 00000c6a: PUSH1 0x02 00000c6c: EXP 00000c6d: SUB 00000c6e: ADDRESS 00000c6f: AND 00000c70: BALANCE 00000c71: PUSH2 0x0c7a 00000c74: DUP3 00000c75: DUP3 00000c76: PUSH2 0x1551 00000c79: JUMP 00000c7a: JUMPDEST 00000c7b: PUSH32 0x3d58bd61d8606013d7b93463f5e9938573d0cf107ae6ad2de256c0ff55fac2fc 00000c9c: DUP3 00000c9d: DUP3 00000c9e: PUSH1 0x04 00000ca0: SLOAD 00000ca1: PUSH1 0x40 00000ca3: MLOAD 00000ca4: DUP1 00000ca5: DUP5 00000ca6: PUSH1 0x01 00000ca8: PUSH1 0xa0 00000caa: PUSH1 0x02 00000cac: EXP 00000cad: SUB 00000cae: AND 00000caf: PUSH1 0x01 00000cb1: PUSH1 0xa0 00000cb3: PUSH1 0x02 00000cb5: EXP 00000cb6: SUB 00000cb7: AND 00000cb8: DUP2 00000cb9: MSTORE 00000cba: PUSH1 0x20 00000cbc: ADD 00000cbd: DUP4 00000cbe: DUP2 00000cbf: MSTORE 00000cc0: PUSH1 0x20 00000cc2: ADD 00000cc3: DUP3 00000cc4: DUP2 00000cc5: MSTORE 00000cc6: PUSH1 0x20 00000cc8: ADD 00000cc9: SWAP4 00000cca: POP 00000ccb: POP 00000ccc: POP 00000ccd: POP 00000cce: PUSH1 0x40 00000cd0: MLOAD 00000cd1: DUP1 00000cd2: SWAP2 00000cd3: SUB 00000cd4: SWAP1 00000cd5: LOG1 00000cd6: PUSH2 0x0b0b 00000cd9: PUSH2 0x165e 00000cdc: JUMP 00000cdd: JUMPDEST 00000cde: PUSH1 0x00 00000ce0: PUSH2 0x0d33 00000ce3: PUSH2 0x0cea 00000ce6: PUSH2 0x0fba 00000ce9: JUMP 00000cea: JUMPDEST 00000ceb: PUSH2 0x0d2e 00000cee: PUSH3 0x0186a0 00000cf2: PUSH1 0x0b 00000cf4: SLOAD 00000cf5: PUSH2 0x0cfc 00000cf8: PUSH2 0x09c5 00000cfb: JUMP 00000cfc: JUMPDEST 00000cfd: MUL 00000cfe: DUP2 00000cff: ISZERO 00000d00: ISZERO 00000d01: PUSH2 0x0d06 00000d04: JUMPI 00000d05: INVALID 00000d06: JUMPDEST 00000d07: DIV 00000d08: PUSH1 0x08 00000d0a: PUSH1 0x00 00000d0c: DUP2 00000d0d: SLOAD 00000d0e: DUP2 00000d0f: LT 00000d10: ISZERO 00000d11: ISZERO 00000d12: PUSH2 0x0d17 00000d15: JUMPI 00000d16: INVALID 00000d17: JUMPDEST 00000d18: SWAP1 00000d19: PUSH1 0x00 00000d1b: MSTORE 00000d1c: PUSH1 0x20 00000d1e: PUSH1 0x00 00000d20: KECCAK256 00000d21: SWAP1 00000d22: PUSH1 0x04 00000d24: MUL 00000d25: ADD 00000d26: PUSH1 0x00 00000d28: ADD 00000d29: SLOAD 00000d2a: PUSH2 0x16de 00000d2d: JUMP 00000d2e: JUMPDEST 00000d2f: PUSH2 0x16f5 00000d32: JUMP 00000d33: JUMPDEST 00000d34: SWAP1 00000d35: POP 00000d36: SWAP1 00000d37: JUMP 00000d38: JUMPDEST 00000d39: PUSH1 0x12 00000d3b: SLOAD 00000d3c: DUP2 00000d3d: JUMP 00000d3e: JUMPDEST 00000d3f: PUSH1 0x06 00000d41: SLOAD 00000d42: CALLER 00000d43: PUSH1 0x01 00000d45: PUSH1 0xa0 00000d47: PUSH1 0x02 00000d49: EXP 00000d4a: SUB 00000d4b: SWAP1 00000d4c: DUP2 00000d4d: AND 00000d4e: SWAP2 00000d4f: AND 00000d50: EQ 00000d51: PUSH2 0x0d59 00000d54: JUMPI 00000d55: PUSH1 0x00 00000d57: DUP1 00000d58: REVERT 00000d59: JUMPDEST 00000d5a: PUSH1 0x01 00000d5c: PUSH1 0xa0 00000d5e: PUSH1 0x02 00000d60: EXP 00000d61: SUB 00000d62: DUP2 00000d63: AND 00000d64: ISZERO 00000d65: ISZERO 00000d66: PUSH2 0x0d6e 00000d69: JUMPI 00000d6a: PUSH1 0x00 00000d6c: DUP1 00000d6d: REVERT 00000d6e: JUMPDEST 00000d6f: PUSH1 0x06 00000d71: DUP1 00000d72: SLOAD 00000d73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d88: NOT 00000d89: AND 00000d8a: PUSH1 0x01 00000d8c: PUSH1 0xa0 00000d8e: PUSH1 0x02 00000d90: EXP 00000d91: SUB 00000d92: SWAP3 00000d93: SWAP1 00000d94: SWAP3 00000d95: AND 00000d96: SWAP2 00000d97: SWAP1 00000d98: SWAP2 00000d99: OR 00000d9a: SWAP1 00000d9b: SSTORE 00000d9c: JUMP 00000d9d: JUMPDEST 00000d9e: PUSH1 0x07 00000da0: SLOAD 00000da1: CALLER 00000da2: PUSH1 0x01 00000da4: PUSH1 0xa0 00000da6: PUSH1 0x02 00000da8: EXP 00000da9: SUB 00000daa: SWAP1 00000dab: DUP2 00000dac: AND 00000dad: SWAP2 00000dae: AND 00000daf: EQ 00000db0: PUSH2 0x0db8 00000db3: JUMPI 00000db4: PUSH1 0x00 00000db6: DUP1 00000db7: REVERT 00000db8: JUMPDEST 00000db9: PUSH1 0x08 00000dbb: SLOAD 00000dbc: DUP4 00000dbd: LT 00000dbe: DUP1 00000dbf: ISZERO 00000dc0: PUSH2 0x0dc9 00000dc3: JUMPI 00000dc4: POP 00000dc5: PUSH1 0x00 00000dc7: DUP3 00000dc8: GT 00000dc9: JUMPDEST 00000dca: ISZERO 00000dcb: ISZERO 00000dcc: PUSH2 0x0dd4 00000dcf: JUMPI 00000dd0: PUSH1 0x00 00000dd2: DUP1 00000dd3: REVERT 00000dd4: JUMPDEST 00000dd5: DUP2 00000dd6: PUSH1 0x08 00000dd8: DUP5 00000dd9: DUP2 00000dda: SLOAD 00000ddb: DUP2 00000ddc: LT 00000ddd: ISZERO 00000dde: ISZERO 00000ddf: PUSH2 0x0de4 00000de2: JUMPI 00000de3: INVALID 00000de4: JUMPDEST 00000de5: PUSH1 0x00 00000de7: SWAP2 00000de8: DUP3 00000de9: MSTORE 00000dea: PUSH1 0x20 00000dec: SWAP1 00000ded: SWAP2 00000dee: KECCAK256 00000def: PUSH1 0x04 00000df1: SWAP1 00000df2: SWAP2 00000df3: MUL 00000df4: ADD 00000df5: SSTORE 00000df6: PUSH1 0x08 00000df8: DUP1 00000df9: SLOAD 00000dfa: DUP3 00000dfb: SWAP2 00000dfc: SWAP1 00000dfd: DUP6 00000dfe: SWAP1 00000dff: DUP2 00000e00: LT 00000e01: PUSH2 0x0e06 00000e04: JUMPI 00000e05: INVALID 00000e06: JUMPDEST 00000e07: SWAP1 00000e08: PUSH1 0x00 00000e0a: MSTORE 00000e0b: PUSH1 0x20 00000e0d: PUSH1 0x00 00000e0f: KECCAK256 00000e10: SWAP1 00000e11: PUSH1 0x04 00000e13: MUL 00000e14: ADD 00000e15: PUSH1 0x01 00000e17: ADD 00000e18: DUP2 00000e19: SWAP1 00000e1a: SSTORE 00000e1b: POP 00000e1c: PUSH2 0x0e23 00000e1f: PUSH2 0x170e 00000e22: JUMP 00000e23: JUMPDEST 00000e24: POP 00000e25: POP 00000e26: POP 00000e27: JUMP 00000e28: JUMPDEST 00000e29: PUSH1 0x0c 00000e2b: SLOAD 00000e2c: DUP2 00000e2d: JUMP 00000e2e: JUMPDEST 00000e2f: PUSH1 0x07 00000e31: SLOAD 00000e32: CALLER 00000e33: PUSH1 0x01 00000e35: PUSH1 0xa0 00000e37: PUSH1 0x02 00000e39: EXP 00000e3a: SUB 00000e3b: SWAP1 00000e3c: DUP2 00000e3d: AND 00000e3e: SWAP2 00000e3f: AND 00000e40: EQ 00000e41: PUSH2 0x0e49 00000e44: JUMPI 00000e45: PUSH1 0x00 00000e47: DUP1 00000e48: REVERT 00000e49: JUMPDEST 00000e4a: PUSH1 0x00 00000e4c: DUP2 00000e4d: GT 00000e4e: DUP1 00000e4f: ISZERO 00000e50: PUSH2 0x0e5c 00000e53: JUMPI 00000e54: POP 00000e55: PUSH3 0x0186a0 00000e59: DUP2 00000e5a: GT 00000e5b: ISZERO 00000e5c: JUMPDEST 00000e5d: ISZERO 00000e5e: ISZERO 00000e5f: PUSH2 0x0e67 00000e62: JUMPI 00000e63: PUSH1 0x00 00000e65: DUP1 00000e66: REVERT 00000e67: JUMPDEST 00000e68: PUSH1 0x0b 00000e6a: SSTORE 00000e6b: JUMP 00000e6c: JUMPDEST 00000e6d: PUSH1 0x11 00000e6f: SLOAD 00000e70: DUP2 00000e71: JUMP 00000e72: JUMPDEST 00000e73: PUSH1 0x07 00000e75: SLOAD 00000e76: CALLER 00000e77: PUSH1 0x01 00000e79: PUSH1 0xa0 00000e7b: PUSH1 0x02 00000e7d: EXP 00000e7e: SUB 00000e7f: SWAP1 00000e80: DUP2 00000e81: AND 00000e82: SWAP2 00000e83: AND 00000e84: EQ 00000e85: PUSH2 0x0e8d 00000e88: JUMPI 00000e89: PUSH1 0x00 00000e8b: DUP1 00000e8c: REVERT 00000e8d: JUMPDEST 00000e8e: DUP1 00000e8f: PUSH1 0x00 00000e91: LT 00000e92: DUP1 00000e93: ISZERO 00000e94: PUSH2 0x0e9f 00000e97: JUMPI 00000e98: POP 00000e99: PUSH3 0x0186a0 00000e9d: DUP2 00000e9e: LT 00000e9f: JUMPDEST 00000ea0: ISZERO 00000ea1: ISZERO 00000ea2: PUSH2 0x0eaa 00000ea5: JUMPI 00000ea6: PUSH1 0x00 00000ea8: DUP1 00000ea9: REVERT 00000eaa: JUMPDEST 00000eab: PUSH1 0x0a 00000ead: DUP2 00000eae: SWAP1 00000eaf: SSTORE 00000eb0: PUSH2 0x0eb7 00000eb3: PUSH2 0x170e 00000eb6: JUMP 00000eb7: JUMPDEST 00000eb8: POP 00000eb9: JUMP 00000eba: JUMPDEST 00000ebb: PUSH1 0x08 00000ebd: DUP1 00000ebe: SLOAD 00000ebf: DUP3 00000ec0: SWAP1 00000ec1: DUP2 00000ec2: LT 00000ec3: PUSH2 0x0ec8 00000ec6: JUMPI 00000ec7: INVALID 00000ec8: JUMPDEST 00000ec9: PUSH1 0x00 00000ecb: SWAP2 00000ecc: DUP3 00000ecd: MSTORE 00000ece: PUSH1 0x20 00000ed0: SWAP1 00000ed1: SWAP2 00000ed2: KECCAK256 00000ed3: PUSH1 0x04 00000ed5: SWAP1 00000ed6: SWAP2 00000ed7: MUL 00000ed8: ADD 00000ed9: DUP1 00000eda: SLOAD 00000edb: PUSH1 0x01 00000edd: DUP3 00000ede: ADD 00000edf: SLOAD 00000ee0: PUSH1 0x02 00000ee2: DUP4 00000ee3: ADD 00000ee4: SLOAD 00000ee5: SWAP2 00000ee6: SWAP4 00000ee7: POP 00000ee8: SWAP2 00000ee9: PUSH1 0x03 00000eeb: ADD 00000eec: DUP5 00000eed: JUMP 00000eee: JUMPDEST 00000eef: PUSH1 0x00 00000ef1: DUP1 00000ef2: SLOAD 00000ef3: DUP2 00000ef4: SWAP1 00000ef5: PUSH1 0x01 00000ef7: PUSH1 0xa0 00000ef9: PUSH1 0x02 00000efb: EXP 00000efc: SUB 00000efd: AND 00000efe: ISZERO 00000eff: ISZERO 00000f00: DUP1 00000f01: PUSH2 0x0f1d 00000f04: JUMPI 00000f05: POP 00000f06: PUSH1 0x00 00000f08: DUP1 00000f09: SLOAD 00000f0a: PUSH2 0x0f1b 00000f0d: SWAP1 00000f0e: PUSH1 0x01 00000f10: PUSH1 0xa0 00000f12: PUSH1 0x02 00000f14: EXP 00000f15: SUB 00000f16: AND 00000f17: PUSH2 0x17db 00000f1a: JUMP 00000f1b: JUMPDEST 00000f1c: GT 00000f1d: JUMPDEST 00000f1e: ISZERO 00000f1f: PUSH2 0x0f88 00000f22: JUMPI 00000f23: PUSH1 0x00 00000f25: DUP1 00000f26: SLOAD 00000f27: PUSH1 0x01 00000f29: PUSH1 0xa0 00000f2b: PUSH1 0x02 00000f2d: EXP 00000f2e: SUB 00000f2f: AND 00000f30: SWAP1 00000f31: PUSH4 0x38cc4831 00000f36: SWAP1 00000f37: PUSH1 0x40 00000f39: MLOAD 00000f3a: PUSH1 0x20 00000f3c: ADD 00000f3d: MSTORE 00000f3e: PUSH1 0x40 00000f40: MLOAD 00000f41: DUP2 00000f42: PUSH4 0xffffffff 00000f47: AND 00000f48: PUSH1 0xe0 00000f4a: PUSH1 0x02 00000f4c: EXP 00000f4d: MUL 00000f4e: DUP2 00000f4f: MSTORE 00000f50: PUSH1 0x04 00000f52: ADD 00000f53: PUSH1 0x20 00000f55: PUSH1 0x40 00000f57: MLOAD 00000f58: DUP1 00000f59: DUP4 00000f5a: SUB 00000f5b: DUP2 00000f5c: PUSH1 0x00 00000f5e: DUP8 00000f5f: DUP1 00000f60: EXTCODESIZE 00000f61: ISZERO 00000f62: ISZERO 00000f63: PUSH2 0x0f6b 00000f66: JUMPI 00000f67: PUSH1 0x00 00000f69: DUP1 00000f6a: REVERT 00000f6b: JUMPDEST 00000f6c: PUSH2 0x02c6 00000f6f: GAS 00000f70: SUB 00000f71: CALL 00000f72: ISZERO 00000f73: ISZERO 00000f74: PUSH2 0x0f7c 00000f77: JUMPI 00000f78: PUSH1 0x00 00000f7a: DUP1 00000f7b: REVERT 00000f7c: JUMPDEST 00000f7d: POP 00000f7e: POP 00000f7f: POP 00000f80: PUSH1 0x40 00000f82: MLOAD 00000f83: DUP1 00000f84: MLOAD 00000f85: SWAP2 00000f86: POP 00000f87: POP 00000f88: JUMPDEST 00000f89: PUSH1 0x01 00000f8b: PUSH1 0xa0 00000f8d: PUSH1 0x02 00000f8f: EXP 00000f90: SUB 00000f91: DUP2 00000f92: AND 00000f93: ISZERO 00000f94: DUP1 00000f95: PUSH2 0x0fa4 00000f98: JUMPI 00000f99: POP 00000f9a: PUSH2 0x0fa2 00000f9d: DUP2 00000f9e: PUSH2 0x17db 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: ISZERO 00000fa4: JUMPDEST 00000fa5: ISZERO 00000fa6: PUSH2 0x09dd 00000fa9: JUMPI 00000faa: POP 00000fab: POP 00000fac: PUSH1 0x03 00000fae: SLOAD 00000faf: PUSH1 0x01 00000fb1: PUSH1 0xa0 00000fb3: PUSH1 0x02 00000fb5: EXP 00000fb6: SUB 00000fb7: AND 00000fb8: SWAP1 00000fb9: JUMP 00000fba: JUMPDEST 00000fbb: PUSH1 0x00 00000fbd: DUP1 00000fbe: PUSH2 0x0fc5 00000fc1: PUSH2 0x1010 00000fc4: JUMP 00000fc5: JUMPDEST 00000fc6: SWAP1 00000fc7: POP 00000fc8: PUSH1 0x12 00000fca: SLOAD 00000fcb: PUSH3 0x0186a0 00000fcf: SUB 00000fd0: PUSH1 0x0a 00000fd2: SLOAD 00000fd3: DUP3 00000fd4: MUL 00000fd5: MUL 00000fd6: PUSH3 0x0186a0 00000fda: DUP1 00000fdb: PUSH2 0x0fe9 00000fde: PUSH1 0x01 00000fe0: PUSH3 0x0186a0 00000fe4: DUP7 00000fe5: PUSH2 0x0b39 00000fe8: JUMP 00000fe9: JUMPDEST 00000fea: MUL 00000feb: MUL 00000fec: DUP2 00000fed: ISZERO 00000fee: ISZERO 00000fef: PUSH2 0x0ff4 00000ff2: JUMPI 00000ff3: INVALID 00000ff4: JUMPDEST 00000ff5: DIV 00000ff6: SWAP2 00000ff7: POP 00000ff8: POP 00000ff9: SWAP1 00000ffa: JUMP 00000ffb: JUMPDEST 00000ffc: PUSH1 0x07 00000ffe: SLOAD 00000fff: PUSH1 0x01 00001001: PUSH1 0xa0 00001003: PUSH1 0x02 00001005: EXP 00001006: SUB 00001007: AND 00001008: DUP2 00001009: JUMP 0000100a: JUMPDEST 0000100b: PUSH1 0x0b 0000100d: SLOAD 0000100e: DUP2 0000100f: JUMP 00001010: JUMPDEST 00001011: PUSH1 0x00 00001013: PUSH2 0x101a 00001016: PUSH2 0x0eee 00001019: JUMP 0000101a: JUMPDEST 0000101b: PUSH1 0x01 0000101d: PUSH1 0xa0 0000101f: PUSH1 0x02 00001021: EXP 00001022: SUB 00001023: AND 00001024: PUSH4 0x863007d0 00001029: PUSH1 0x00 0000102b: PUSH1 0x40 0000102d: MLOAD 0000102e: PUSH1 0x20 00001030: ADD 00001031: MSTORE 00001032: PUSH1 0x40 00001034: MLOAD 00001035: DUP2 00001036: PUSH4 0xffffffff 0000103b: AND 0000103c: PUSH1 0xe0 0000103e: PUSH1 0x02 00001040: EXP 00001041: MUL 00001042: DUP2 00001043: MSTORE 00001044: PUSH1 0x04 00001046: ADD 00001047: PUSH1 0x20 00001049: PUSH1 0x40 0000104b: MLOAD 0000104c: DUP1 0000104d: DUP4 0000104e: SUB 0000104f: DUP2 00001050: PUSH1 0x00 00001052: DUP8 00001053: DUP1 00001054: EXTCODESIZE 00001055: ISZERO 00001056: ISZERO 00001057: PUSH2 0x105f 0000105a: JUMPI 0000105b: PUSH1 0x00 0000105d: DUP1 0000105e: REVERT 0000105f: JUMPDEST 00001060: PUSH2 0x02c6 00001063: GAS 00001064: SUB 00001065: CALL 00001066: ISZERO 00001067: ISZERO 00001068: PUSH2 0x1070 0000106b: JUMPI 0000106c: PUSH1 0x00 0000106e: DUP1 0000106f: REVERT 00001070: JUMPDEST 00001071: POP 00001072: POP 00001073: POP 00001074: PUSH1 0x40 00001076: MLOAD 00001077: DUP1 00001078: MLOAD 00001079: SWAP2 0000107a: POP 0000107b: POP 0000107c: SWAP1 0000107d: JUMP 0000107e: JUMPDEST 0000107f: PUSH1 0x10 00001081: SLOAD 00001082: DUP2 00001083: JUMP 00001084: JUMPDEST 00001085: PUSH1 0x07 00001087: SLOAD 00001088: CALLER 00001089: PUSH1 0x01 0000108b: PUSH1 0xa0 0000108d: PUSH1 0x02 0000108f: EXP 00001090: SUB 00001091: SWAP1 00001092: DUP2 00001093: AND 00001094: SWAP2 00001095: AND 00001096: EQ 00001097: PUSH2 0x109f 0000109a: JUMPI 0000109b: PUSH1 0x00 0000109d: DUP1 0000109e: REVERT 0000109f: JUMPDEST 000010a0: PUSH1 0x03 000010a2: DUP1 000010a3: SLOAD 000010a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010b9: NOT 000010ba: AND 000010bb: PUSH1 0x01 000010bd: PUSH1 0xa0 000010bf: PUSH1 0x02 000010c1: EXP 000010c2: SUB 000010c3: SWAP3 000010c4: SWAP1 000010c5: SWAP3 000010c6: AND 000010c7: SWAP2 000010c8: SWAP1 000010c9: SWAP2 000010ca: OR 000010cb: SWAP1 000010cc: SSTORE 000010cd: JUMP 000010ce: JUMPDEST 000010cf: PUSH1 0x06 000010d1: SLOAD 000010d2: CALLER 000010d3: PUSH1 0x01 000010d5: PUSH1 0xa0 000010d7: PUSH1 0x02 000010d9: EXP 000010da: SUB 000010db: SWAP1 000010dc: DUP2 000010dd: AND 000010de: SWAP2 000010df: AND 000010e0: EQ 000010e1: PUSH2 0x10e9 000010e4: JUMPI 000010e5: PUSH1 0x00 000010e7: DUP1 000010e8: REVERT 000010e9: JUMPDEST 000010ea: PUSH2 0x10f1 000010ed: PUSH2 0x09c5 000010f0: JUMP 000010f1: JUMPDEST 000010f2: DUP2 000010f3: GT 000010f4: ISZERO 000010f5: PUSH2 0x10fd 000010f8: JUMPI 000010f9: PUSH1 0x00 000010fb: DUP1 000010fc: REVERT 000010fd: JUMPDEST 000010fe: PUSH1 0x01 00001100: PUSH1 0xa0 00001102: PUSH1 0x02 00001104: EXP 00001105: SUB 00001106: DUP3 00001107: AND 00001108: ISZERO 00001109: ISZERO 0000110a: PUSH2 0x111c 0000110d: JUMPI 0000110e: PUSH1 0x06 00001110: SLOAD 00001111: PUSH1 0x01 00001113: PUSH1 0xa0 00001115: PUSH1 0x02 00001117: EXP 00001118: SUB 00001119: AND 0000111a: SWAP2 0000111b: POP 0000111c: JUMPDEST 0000111d: DUP1 0000111e: PUSH2 0x1125 00001121: PUSH2 0x09c5 00001124: JUMP 00001125: JUMPDEST 00001126: SUB 00001127: PUSH1 0x04 00001129: SSTORE 0000112a: PUSH1 0x00 0000112c: PUSH1 0x05 0000112e: SSTORE 0000112f: PUSH2 0x1138 00001132: DUP3 00001133: DUP3 00001134: PUSH2 0x1551 00001137: JUMP 00001138: JUMPDEST 00001139: PUSH32 0x3d58bd61d8606013d7b93463f5e9938573d0cf107ae6ad2de256c0ff55fac2fc 0000115a: DUP3 0000115b: DUP3 0000115c: PUSH1 0x04 0000115e: SLOAD 0000115f: PUSH1 0x40 00001161: MLOAD 00001162: DUP1 00001163: DUP5 00001164: PUSH1 0x01 00001166: PUSH1 0xa0 00001168: PUSH1 0x02 0000116a: EXP 0000116b: SUB 0000116c: AND 0000116d: PUSH1 0x01 0000116f: PUSH1 0xa0 00001171: PUSH1 0x02 00001173: EXP 00001174: SUB 00001175: AND 00001176: DUP2 00001177: MSTORE 00001178: PUSH1 0x20 0000117a: ADD 0000117b: DUP4 0000117c: DUP2 0000117d: MSTORE 0000117e: PUSH1 0x20 00001180: ADD 00001181: DUP3 00001182: DUP2 00001183: MSTORE 00001184: PUSH1 0x20 00001186: ADD 00001187: SWAP4 00001188: POP 00001189: POP 0000118a: POP 0000118b: POP 0000118c: PUSH1 0x40 0000118e: MLOAD 0000118f: DUP1 00001190: SWAP2 00001191: SUB 00001192: SWAP1 00001193: LOG1 00001194: POP 00001195: POP 00001196: JUMP 00001197: JUMPDEST 00001198: PUSH1 0x07 0000119a: SLOAD 0000119b: CALLER 0000119c: PUSH1 0x01 0000119e: PUSH1 0xa0 000011a0: PUSH1 0x02 000011a2: EXP 000011a3: SUB 000011a4: SWAP1 000011a5: DUP2 000011a6: AND 000011a7: SWAP2 000011a8: AND 000011a9: EQ 000011aa: PUSH2 0x11b2 000011ad: JUMPI 000011ae: PUSH1 0x00 000011b0: DUP1 000011b1: REVERT 000011b2: JUMPDEST 000011b3: PUSH3 0x0186a0 000011b7: DUP2 000011b8: LT 000011b9: PUSH2 0x11c1 000011bc: JUMPI 000011bd: PUSH1 0x00 000011bf: DUP1 000011c0: REVERT 000011c1: JUMPDEST 000011c2: PUSH1 0x13 000011c4: SSTORE 000011c5: JUMP 000011c6: JUMPDEST 000011c7: PUSH1 0x04 000011c9: SLOAD 000011ca: DUP2 000011cb: JUMP 000011cc: JUMPDEST 000011cd: PUSH1 0x03 000011cf: SLOAD 000011d0: PUSH1 0x01 000011d2: PUSH1 0xa0 000011d4: PUSH1 0x02 000011d6: EXP 000011d7: SUB 000011d8: AND 000011d9: DUP2 000011da: JUMP 000011db: JUMPDEST 000011dc: PUSH1 0x00 000011de: CALLVALUE 000011df: GT 000011e0: ISZERO 000011e1: PUSH2 0x1235 000011e4: JUMPI 000011e5: PUSH1 0x11 000011e7: DUP1 000011e8: SLOAD 000011e9: CALLVALUE 000011ea: SWAP1 000011eb: DUP2 000011ec: ADD 000011ed: SWAP1 000011ee: SWAP2 000011ef: SSTORE 000011f0: PUSH32 0x7d08b5b7cfe8722872406c430472d942802a7e0b6185e43af8614a65d80a2685 00001211: SWAP1 00001212: CALLER 00001213: SWAP1 00001214: PUSH1 0x40 00001216: MLOAD 00001217: PUSH1 0x01 00001219: PUSH1 0xa0 0000121b: PUSH1 0x02 0000121d: EXP 0000121e: SUB 0000121f: SWAP1 00001220: SWAP3 00001221: AND 00001222: DUP3 00001223: MSTORE 00001224: PUSH1 0x20 00001226: DUP3 00001227: ADD 00001228: MSTORE 00001229: PUSH1 0x40 0000122b: SWAP1 0000122c: DUP2 0000122d: ADD 0000122e: SWAP1 0000122f: MLOAD 00001230: DUP1 00001231: SWAP2 00001232: SUB 00001233: SWAP1 00001234: LOG1 00001235: JUMPDEST 00001236: JUMP 00001237: JUMPDEST 00001238: PUSH1 0x07 0000123a: SLOAD 0000123b: CALLER 0000123c: PUSH1 0x01 0000123e: PUSH1 0xa0 00001240: PUSH1 0x02 00001242: EXP 00001243: SUB 00001244: SWAP1 00001245: DUP2 00001246: AND 00001247: SWAP2 00001248: AND 00001249: EQ 0000124a: PUSH2 0x1252 0000124d: JUMPI 0000124e: PUSH1 0x00 00001250: DUP1 00001251: REVERT 00001252: JUMPDEST 00001253: PUSH2 0x1235 00001256: PUSH2 0x17df 00001259: JUMP 0000125a: JUMPDEST 0000125b: PUSH1 0x01 0000125d: NOT 0000125e: DUP2 0000125f: JUMP 00001260: JUMPDEST 00001261: PUSH1 0x07 00001263: SLOAD 00001264: PUSH1 0x00 00001266: SWAP1 00001267: CALLER 00001268: PUSH1 0x01 0000126a: PUSH1 0xa0 0000126c: PUSH1 0x02 0000126e: EXP 0000126f: SUB 00001270: SWAP1 00001271: DUP2 00001272: AND 00001273: SWAP2 00001274: AND 00001275: EQ 00001276: PUSH2 0x127e 00001279: JUMPI 0000127a: PUSH1 0x00 0000127c: DUP1 0000127d: REVERT 0000127e: JUMPDEST 0000127f: PUSH1 0x07 00001281: SLOAD 00001282: PUSH1 0x01 00001284: PUSH1 0xa0 00001286: PUSH1 0x02 00001288: EXP 00001289: SUB 0000128a: DUP4 0000128b: DUP2 0000128c: AND 0000128d: SWAP2 0000128e: AND 0000128f: EQ 00001290: DUP1 00001291: ISZERO 00001292: SWAP1 00001293: PUSH2 0x12a4 00001296: JUMPI 00001297: POP 00001298: PUSH1 0x01 0000129a: PUSH1 0xa0 0000129c: PUSH1 0x02 0000129e: EXP 0000129f: SUB 000012a0: DUP3 000012a1: AND 000012a2: ISZERO 000012a3: ISZERO 000012a4: JUMPDEST 000012a5: ISZERO 000012a6: ISZERO 000012a7: PUSH2 0x12af 000012aa: JUMPI 000012ab: PUSH1 0x00 000012ad: DUP1 000012ae: REVERT 000012af: JUMPDEST 000012b0: POP 000012b1: PUSH1 0x07 000012b3: DUP1 000012b4: SLOAD 000012b5: PUSH1 0x01 000012b7: PUSH1 0xa0 000012b9: PUSH1 0x02 000012bb: EXP 000012bc: SUB 000012bd: DUP4 000012be: DUP2 000012bf: AND 000012c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012d5: NOT 000012d6: DUP4 000012d7: AND 000012d8: OR 000012d9: SWAP1 000012da: SWAP3 000012db: SSTORE 000012dc: AND 000012dd: PUSH32 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c 000012fe: DUP2 000012ff: DUP4 00001300: PUSH1 0x40 00001302: MLOAD 00001303: PUSH1 0x01 00001305: PUSH1 0xa0 00001307: PUSH1 0x02 00001309: EXP 0000130a: SUB 0000130b: SWAP3 0000130c: DUP4 0000130d: AND 0000130e: DUP2 0000130f: MSTORE 00001310: SWAP2 00001311: AND 00001312: PUSH1 0x20 00001314: DUP3 00001315: ADD 00001316: MSTORE 00001317: PUSH1 0x40 00001319: SWAP1 0000131a: DUP2 0000131b: ADD 0000131c: SWAP1 0000131d: MLOAD 0000131e: DUP1 0000131f: SWAP2 00001320: SUB 00001321: SWAP1 00001322: LOG1 00001323: POP 00001324: POP 00001325: JUMP 00001326: JUMPDEST 00001327: PUSH1 0x0f 00001329: DUP2 0000132a: JUMP 0000132b: JUMPDEST 0000132c: PUSH1 0x00 0000132e: DUP1 0000132f: PUSH2 0x133f 00001332: PUSH2 0x1339 00001335: PUSH2 0x1010 00001338: JUMP 00001339: JUMPDEST 0000133a: DUP5 0000133b: PUSH2 0x1f95 0000133e: JUMP 0000133f: JUMPDEST 00001340: SWAP3 00001341: POP 00001342: PUSH2 0x1350 00001345: PUSH1 0x01 00001347: PUSH3 0x0186a0 0000134b: DUP6 0000134c: PUSH2 0x0b39 0000134f: JUMP 00001350: JUMPDEST 00001351: SWAP1 00001352: POP 00001353: PUSH1 0x01 00001355: PUSH1 0xa0 00001357: PUSH1 0x02 00001359: EXP 0000135a: SUB 0000135b: ADDRESS 0000135c: AND 0000135d: BALANCE 0000135e: DUP2 0000135f: GT 00001360: PUSH2 0x1385 00001363: JUMPI 00001364: PUSH2 0x1372 00001367: PUSH1 0x01 00001369: PUSH3 0x0186a0 0000136d: DUP6 0000136e: PUSH2 0x1fa4 00001371: JUMP 00001372: JUMPDEST 00001373: POP 00001374: PUSH1 0x0f 00001376: DUP1 00001377: SLOAD 00001378: DUP3 00001379: ADD 0000137a: SWAP1 0000137b: SSTORE 0000137c: PUSH1 0x05 0000137e: DUP1 0000137f: SLOAD 00001380: DUP3 00001381: SWAP1 00001382: SUB 00001383: SWAP1 00001384: SSTORE 00001385: JUMPDEST 00001386: SWAP3 00001387: SWAP2 00001388: POP 00001389: POP 0000138a: JUMP 0000138b: JUMPDEST 0000138c: PUSH1 0x00 0000138e: DUP1 0000138f: DUP1 00001390: DUP1 00001391: DUP1 00001392: DUP1 00001393: DUP1 00001394: DUP1 00001395: NUMBER 00001396: GAS 00001397: TIMESTAMP 00001398: PUSH1 0x10 0000139a: SLOAD 0000139b: ADD 0000139c: ADD 0000139d: ADD 0000139e: SWAP7 0000139f: POP 000013a0: PUSH1 0x00 000013a2: SWAP6 000013a3: POP 000013a4: JUMPDEST 000013a5: DUP10 000013a6: DUP7 000013a7: LT 000013a8: ISZERO 000013a9: PUSH2 0x14e4 000013ac: JUMPI 000013ad: GAS 000013ae: DUP8 000013af: ADD 000013b0: SWAP7 000013b1: POP 000013b2: PUSH2 0x13c1 000013b5: PUSH1 0x01 000013b7: PUSH3 0x0186a0 000013bb: DUP12 000013bc: DUP11 000013bd: PUSH2 0x20e5 000013c0: JUMP 000013c1: JUMPDEST 000013c2: SWAP5 000013c3: POP 000013c4: PUSH2 0x13cd 000013c7: DUP12 000013c8: DUP7 000013c9: PUSH2 0x21a2 000013cc: JUMP 000013cd: JUMPDEST 000013ce: SWAP4 000013cf: POP 000013d0: SWAP4 000013d1: POP 000013d2: SWAP4 000013d3: POP 000013d4: PUSH32 0xef03c7913ec8cce6a9da8d305276f6631e75cfe38909b1e6964cb09079723b38 000013f5: PUSH1 0x10 000013f7: SLOAD 000013f8: CALLER 000013f9: DUP14 000013fa: DUP10 000013fb: DUP15 000013fc: DUP11 000013fd: DUP11 000013fe: DUP11 000013ff: PUSH1 0x40 00001401: MLOAD 00001402: SWAP8 00001403: DUP9 00001404: MSTORE 00001405: PUSH1 0x01 00001407: PUSH1 0xa0 00001409: PUSH1 0x02 0000140b: EXP 0000140c: SUB 0000140d: SWAP1 0000140e: SWAP7 0000140f: AND 00001410: PUSH1 0x20 00001412: DUP9 00001413: ADD 00001414: MSTORE 00001415: PUSH1 0x40 00001417: DUP1 00001418: DUP9 00001419: ADD 0000141a: SWAP6 0000141b: SWAP1 0000141c: SWAP6 0000141d: MSTORE 0000141e: PUSH1 0x60 00001420: DUP8 00001421: ADD 00001422: SWAP4 00001423: SWAP1 00001424: SWAP4 00001425: MSTORE 00001426: PUSH1 0x80 00001428: DUP7 00001429: ADD 0000142a: SWAP2 0000142b: SWAP1 0000142c: SWAP2 0000142d: MSTORE 0000142e: PUSH1 0xa0 00001430: DUP6 00001431: ADD 00001432: MSTORE 00001433: PUSH1 0xc0 00001435: DUP5 00001436: ADD 00001437: MSTORE 00001438: PUSH1 0xe0 0000143a: DUP4 0000143b: ADD 0000143c: SWAP2 0000143d: SWAP1 0000143e: SWAP2 0000143f: MSTORE 00001440: PUSH2 0x0100 00001443: SWAP1 00001444: SWAP2 00001445: ADD 00001446: SWAP1 00001447: MLOAD 00001448: DUP1 00001449: SWAP2 0000144a: SUB 0000144b: SWAP1 0000144c: LOG1 0000144d: DUP2 0000144e: ISZERO 0000144f: PUSH2 0x14cb 00001452: JUMPI 00001453: PUSH32 0xe95e5ceb9ba425d34fc3c3a9901eb35b93848d1315b8b68a8e419ebf3e4f8c81 00001474: PUSH1 0x10 00001476: SLOAD 00001477: CALLER 00001478: DUP14 00001479: DUP10 0000147a: DUP15 0000147b: DUP11 0000147c: DUP10 0000147d: PUSH1 0x40 0000147f: MLOAD 00001480: SWAP7 00001481: DUP8 00001482: MSTORE 00001483: PUSH1 0x01 00001485: PUSH1 0xa0 00001487: PUSH1 0x02 00001489: EXP 0000148a: SUB 0000148b: SWAP1 0000148c: SWAP6 0000148d: AND 0000148e: PUSH1 0x20 00001490: DUP8 00001491: ADD 00001492: MSTORE 00001493: PUSH1 0x40 00001495: DUP1 00001496: DUP8 00001497: ADD 00001498: SWAP5 00001499: SWAP1 0000149a: SWAP5 0000149b: MSTORE 0000149c: PUSH1 0x60 0000149e: DUP7 0000149f: ADD 000014a0: SWAP3 000014a1: SWAP1 000014a2: SWAP3 000014a3: MSTORE 000014a4: PUSH1 0x80 000014a6: DUP6 000014a7: ADD 000014a8: MSTORE 000014a9: PUSH1 0xa0 000014ab: DUP5 000014ac: ADD 000014ad: MSTORE 000014ae: PUSH1 0xc0 000014b0: DUP4 000014b1: ADD 000014b2: SWAP2 000014b3: SWAP1 000014b4: SWAP2 000014b5: MSTORE 000014b6: PUSH1 0xe0 000014b8: SWAP1 000014b9: SWAP2 000014ba: ADD 000014bb: SWAP1 000014bc: MLOAD 000014bd: DUP1 000014be: SWAP2 000014bf: SUB 000014c0: SWAP1 000014c1: LOG1 000014c2: PUSH1 0x00 000014c4: PUSH1 0x11 000014c6: SSTORE 000014c7: PUSH2 0x14d5 000014ca: JUMP 000014cb: JUMPDEST 000014cc: PUSH1 0x05 000014ce: DUP1 000014cf: SLOAD 000014d0: DUP5 000014d1: SWAP1 000014d2: SUB 000014d3: SWAP1 000014d4: SSTORE 000014d5: JUMPDEST 000014d6: SWAP7 000014d7: DUP3 000014d8: ADD 000014d9: SWAP7 000014da: PUSH1 0x01 000014dc: SWAP1 000014dd: SWAP6 000014de: ADD 000014df: SWAP5 000014e0: PUSH2 0x13a4 000014e3: JUMP 000014e4: JUMPDEST 000014e5: POP 000014e6: PUSH1 0x01 000014e8: PUSH1 0xa0 000014ea: PUSH1 0x02 000014ec: EXP 000014ed: SUB 000014ee: CALLER 000014ef: AND 000014f0: PUSH1 0x00 000014f2: SWAP1 000014f3: DUP2 000014f4: MSTORE 000014f5: PUSH1 0x09 000014f7: PUSH1 0x20 000014f9: MSTORE 000014fa: PUSH1 0x40 000014fc: DUP2 000014fd: KECCAK256 000014fe: DUP1 000014ff: SLOAD 00001500: CALLVALUE 00001501: SWAP1 00001502: DUP2 00001503: ADD 00001504: DUP3 00001505: SSTORE 00001506: PUSH1 0x02 00001508: DUP3 00001509: ADD 0000150a: DUP1 0000150b: SLOAD 0000150c: DUP14 0000150d: ADD 0000150e: SWAP1 0000150f: SSTORE 00001510: PUSH1 0x0d 00001512: DUP1 00001513: SLOAD 00001514: SWAP1 00001515: SWAP2 00001516: ADD 00001517: SWAP1 00001518: SSTORE 00001519: PUSH1 0x10 0000151b: DUP1 0000151c: SLOAD 0000151d: DUP13 0000151e: ADD 0000151f: SWAP1 00001520: SSTORE 00001521: SWAP1 00001522: DUP9 00001523: GT 00001524: ISZERO 00001525: PUSH2 0x1544 00001528: JUMPI 00001529: PUSH1 0x01 0000152b: DUP2 0000152c: ADD 0000152d: DUP1 0000152e: SLOAD 0000152f: DUP10 00001530: ADD 00001531: SWAP1 00001532: SSTORE 00001533: PUSH1 0x0e 00001535: DUP1 00001536: SLOAD 00001537: DUP10 00001538: ADD 00001539: SWAP1 0000153a: SSTORE 0000153b: PUSH2 0x1544 0000153e: CALLER 0000153f: DUP10 00001540: PUSH2 0x1551 00001543: JUMP 00001544: JUMPDEST 00001545: POP 00001546: POP 00001547: POP 00001548: POP 00001549: POP 0000154a: POP 0000154b: POP 0000154c: POP 0000154d: POP 0000154e: POP 0000154f: POP 00001550: JUMP 00001551: JUMPDEST 00001552: PUSH1 0x01 00001554: PUSH1 0xa0 00001556: PUSH1 0x02 00001558: EXP 00001559: SUB 0000155a: DUP3 0000155b: AND 0000155c: ISZERO 0000155d: ISZERO 0000155e: PUSH2 0x1566 00001561: JUMPI 00001562: PUSH1 0x00 00001564: DUP1 00001565: REVERT 00001566: JUMPDEST 00001567: ADDRESS 00001568: PUSH1 0x01 0000156a: PUSH1 0xa0 0000156c: PUSH1 0x02 0000156e: EXP 0000156f: SUB 00001570: AND 00001571: DUP3 00001572: PUSH1 0x01 00001574: PUSH1 0xa0 00001576: PUSH1 0x02 00001578: EXP 00001579: SUB 0000157a: AND 0000157b: EQ 0000157c: ISZERO 0000157d: ISZERO 0000157e: ISZERO 0000157f: PUSH2 0x1587 00001582: JUMPI 00001583: PUSH1 0x00 00001585: DUP1 00001586: REVERT 00001587: JUMPDEST 00001588: PUSH1 0x00 0000158a: DUP2 0000158b: GT 0000158c: DUP1 0000158d: ISZERO 0000158e: PUSH2 0x15a1 00001591: JUMPI 00001592: POP 00001593: ADDRESS 00001594: PUSH1 0x01 00001596: PUSH1 0xa0 00001598: PUSH1 0x02 0000159a: EXP 0000159b: SUB 0000159c: AND 0000159d: BALANCE 0000159e: DUP2 0000159f: GT 000015a0: ISZERO 000015a1: JUMPDEST 000015a2: ISZERO 000015a3: ISZERO 000015a4: PUSH2 0x15ac 000015a7: JUMPI 000015a8: PUSH1 0x00 000015aa: DUP1 000015ab: REVERT 000015ac: JUMPDEST 000015ad: PUSH1 0x01 000015af: PUSH1 0xa0 000015b1: PUSH1 0x02 000015b3: EXP 000015b4: SUB 000015b5: DUP3 000015b6: AND 000015b7: DUP2 000015b8: ISZERO 000015b9: PUSH2 0x08fc 000015bc: MUL 000015bd: DUP3 000015be: PUSH1 0x40 000015c0: MLOAD 000015c1: PUSH1 0x00 000015c3: PUSH1 0x40 000015c5: MLOAD 000015c6: DUP1 000015c7: DUP4 000015c8: SUB 000015c9: DUP2 000015ca: DUP6 000015cb: DUP9 000015cc: DUP9 000015cd: CALL 000015ce: SWAP4 000015cf: POP 000015d0: POP 000015d1: POP 000015d2: POP 000015d3: ISZERO 000015d4: ISZERO 000015d5: PUSH2 0x15dd 000015d8: JUMPI 000015d9: PUSH1 0x00 000015db: DUP1 000015dc: REVERT 000015dd: JUMPDEST 000015de: PUSH32 0x20157e1a763dcbf757143750265ae22b2f46bad0ce452ea04ed79d7d6f2b1702 000015ff: DUP3 00001600: DUP3 00001601: PUSH1 0x40 00001603: MLOAD 00001604: PUSH1 0x01 00001606: PUSH1 0xa0 00001608: PUSH1 0x02 0000160a: EXP 0000160b: SUB 0000160c: SWAP1 0000160d: SWAP3 0000160e: AND 0000160f: DUP3 00001610: MSTORE 00001611: PUSH1 0x20 00001613: DUP3 00001614: ADD 00001615: MSTORE 00001616: PUSH1 0x60 00001618: PUSH1 0x40 0000161a: DUP1 0000161b: DUP4 0000161c: ADD 0000161d: DUP3 0000161e: SWAP1 0000161f: MSTORE 00001620: PUSH1 0x10 00001622: SWAP2 00001623: DUP4 00001624: ADD 00001625: SWAP2 00001626: SWAP1 00001627: SWAP2 00001628: MSTORE 00001629: PUSH32 0x5472616e73666572205375636365737300000000000000000000000000000000 0000164a: PUSH1 0x80 0000164c: DUP4 0000164d: ADD 0000164e: MSTORE 0000164f: PUSH1 0xa0 00001651: SWAP1 00001652: SWAP2 00001653: ADD 00001654: SWAP1 00001655: MLOAD 00001656: DUP1 00001657: SWAP2 00001658: SUB 00001659: SWAP1 0000165a: LOG1 0000165b: POP 0000165c: POP 0000165d: JUMP 0000165e: JUMPDEST 0000165f: PUSH1 0x00 00001661: PUSH1 0x0d 00001663: DUP2 00001664: SWAP1 00001665: SSTORE 00001666: PUSH1 0x0e 00001668: DUP2 00001669: SWAP1 0000166a: SSTORE 0000166b: PUSH1 0x0f 0000166d: DUP2 0000166e: SWAP1 0000166f: SSTORE 00001670: PUSH1 0x10 00001672: DUP2 00001673: SWAP1 00001674: SSTORE 00001675: PUSH1 0x11 00001677: SSTORE 00001678: PUSH32 0xd2f6c0020d30a86146de6300741f2bd90869bddf3818f8d3294ae782f6216176 00001699: PUSH1 0x40 0000169b: MLOAD 0000169c: PUSH1 0x20 0000169e: DUP1 0000169f: DUP3 000016a0: MSTORE 000016a1: PUSH1 0x0c 000016a3: SWAP1 000016a4: DUP3 000016a5: ADD 000016a6: MSTORE 000016a7: PUSH32 0x576974686472617720416c6c0000000000000000000000000000000000000000 000016c8: PUSH1 0x40 000016ca: DUP1 000016cb: DUP4 000016cc: ADD 000016cd: SWAP2 000016ce: SWAP1 000016cf: SWAP2 000016d0: MSTORE 000016d1: PUSH1 0x60 000016d3: SWAP1 000016d4: SWAP2 000016d5: ADD 000016d6: SWAP1 000016d7: MLOAD 000016d8: DUP1 000016d9: SWAP2 000016da: SUB 000016db: SWAP1 000016dc: LOG1 000016dd: JUMP 000016de: JUMPDEST 000016df: PUSH1 0x00 000016e1: DUP1 000016e2: DUP3 000016e3: DUP5 000016e4: DUP2 000016e5: ISZERO 000016e6: ISZERO 000016e7: PUSH2 0x16ec 000016ea: JUMPI 000016eb: INVALID 000016ec: JUMPDEST 000016ed: DIV 000016ee: SWAP5 000016ef: SWAP4 000016f0: POP 000016f1: POP 000016f2: POP 000016f3: POP 000016f4: JUMP 000016f5: JUMPDEST 000016f6: PUSH1 0x00 000016f8: DUP2 000016f9: DUP4 000016fa: LT 000016fb: ISZERO 000016fc: PUSH2 0x1705 000016ff: JUMPI 00001700: DUP2 00001701: PUSH2 0x1707 00001704: JUMP 00001705: JUMPDEST 00001706: DUP3 00001707: JUMPDEST 00001708: SWAP4 00001709: SWAP3 0000170a: POP 0000170b: POP 0000170c: POP 0000170d: JUMP 0000170e: JUMPDEST 0000170f: PUSH1 0x00 00001711: DUP1 00001712: DUP1 00001713: JUMPDEST 00001714: PUSH1 0x08 00001716: SLOAD 00001717: DUP3 00001718: LT 00001719: ISZERO 0000171a: PUSH2 0x174e 0000171d: JUMPI 0000171e: PUSH1 0x08 00001720: DUP1 00001721: SLOAD 00001722: DUP4 00001723: SWAP1 00001724: DUP2 00001725: LT 00001726: PUSH2 0x172b 00001729: JUMPI 0000172a: INVALID 0000172b: JUMPDEST 0000172c: SWAP1 0000172d: PUSH1 0x00 0000172f: MSTORE 00001730: PUSH1 0x20 00001732: PUSH1 0x00 00001734: KECCAK256 00001735: SWAP1 00001736: PUSH1 0x04 00001738: MUL 00001739: ADD 0000173a: PUSH1 0x01 0000173c: ADD 0000173d: SLOAD 0000173e: DUP4 0000173f: ADD 00001740: SWAP3 00001741: POP 00001742: DUP2 00001743: DUP1 00001744: PUSH1 0x01 00001746: ADD 00001747: SWAP3 00001748: POP 00001749: POP 0000174a: PUSH2 0x1713 0000174d: JUMP 0000174e: JUMPDEST 0000174f: POP 00001750: PUSH1 0x00 00001752: JUMPDEST 00001753: PUSH1 0x08 00001755: SLOAD 00001756: DUP2 00001757: LT 00001758: ISZERO 00001759: PUSH2 0x0e23 0000175c: JUMPI 0000175d: PUSH2 0x17b1 00001760: PUSH1 0x08 00001762: DUP3 00001763: DUP2 00001764: SLOAD 00001765: DUP2 00001766: LT 00001767: ISZERO 00001768: ISZERO 00001769: PUSH2 0x176e 0000176c: JUMPI 0000176d: INVALID 0000176e: JUMPDEST 0000176f: SWAP1 00001770: PUSH1 0x00 00001772: MSTORE 00001773: PUSH1 0x20 00001775: PUSH1 0x00 00001777: KECCAK256 00001778: SWAP1 00001779: PUSH1 0x04 0000177b: MUL 0000177c: ADD 0000177d: PUSH1 0x01 0000177f: ADD 00001780: SLOAD 00001781: PUSH1 0x0a 00001783: SLOAD 00001784: PUSH3 0x0186a0 00001788: SUB 00001789: MUL 0000178a: DUP5 0000178b: PUSH1 0x08 0000178d: DUP5 0000178e: DUP2 0000178f: SLOAD 00001790: DUP2 00001791: LT 00001792: ISZERO 00001793: ISZERO 00001794: PUSH2 0x1799 00001797: JUMPI 00001798: INVALID 00001799: JUMPDEST 0000179a: SWAP1 0000179b: PUSH1 0x00 0000179d: MSTORE 0000179e: PUSH1 0x20 000017a0: PUSH1 0x00 000017a2: KECCAK256 000017a3: SWAP1 000017a4: PUSH1 0x04 000017a6: MUL 000017a7: ADD 000017a8: PUSH1 0x00 000017aa: ADD 000017ab: SLOAD 000017ac: MUL 000017ad: PUSH2 0x16de 000017b0: JUMP 000017b1: JUMPDEST 000017b2: PUSH1 0x08 000017b4: DUP1 000017b5: SLOAD 000017b6: DUP4 000017b7: SWAP1 000017b8: DUP2 000017b9: LT 000017ba: PUSH2 0x17bf 000017bd: JUMPI 000017be: INVALID 000017bf: JUMPDEST 000017c0: PUSH1 0x00 000017c2: SWAP2 000017c3: DUP3 000017c4: MSTORE 000017c5: PUSH1 0x20 000017c7: SWAP1 000017c8: SWAP2 000017c9: KECCAK256 000017ca: PUSH1 0x02 000017cc: PUSH1 0x04 000017ce: SWAP1 000017cf: SWAP3 000017d0: MUL 000017d1: ADD 000017d2: ADD 000017d3: SSTORE 000017d4: PUSH1 0x01 000017d6: ADD 000017d7: PUSH2 0x1752 000017da: JUMP 000017db: JUMPDEST 000017dc: EXTCODESIZE 000017dd: SWAP1 000017de: JUMP 000017df: JUMPDEST 000017e0: PUSH2 0x17eb 000017e3: PUSH1 0x08 000017e5: PUSH1 0x00 000017e7: PUSH2 0x22be 000017ea: JUMP 000017eb: JUMPDEST 000017ec: PUSH1 0x08 000017ee: DUP1 000017ef: SLOAD 000017f0: PUSH1 0x01 000017f2: DUP2 000017f3: ADD 000017f4: PUSH2 0x17fd 000017f7: DUP4 000017f8: DUP3 000017f9: PUSH2 0x22df 000017fc: JUMP 000017fd: JUMPDEST 000017fe: SWAP2 000017ff: PUSH1 0x00 00001801: MSTORE 00001802: PUSH1 0x20 00001804: PUSH1 0x00 00001806: KECCAK256 00001807: SWAP1 00001808: PUSH1 0x04 0000180a: MUL 0000180b: ADD 0000180c: PUSH1 0x00 0000180e: PUSH1 0x80 00001810: PUSH1 0x40 00001812: MLOAD 00001813: SWAP1 00001814: DUP2 00001815: ADD 00001816: PUSH1 0x40 00001818: MSTORE 00001819: DUP1 0000181a: PUSH1 0x64 0000181c: DUP2 0000181d: MSTORE 0000181e: PUSH1 0x20 00001820: ADD 00001821: PUSH1 0x3c 00001823: DUP2 00001824: MSTORE 00001825: PUSH1 0x20 00001827: ADD 00001828: PUSH1 0x00 0000182a: DUP2 0000182b: MSTORE 0000182c: PUSH1 0x20 0000182e: ADD 0000182f: PUSH1 0x40 00001831: DUP1 00001832: MLOAD 00001833: SWAP1 00001834: DUP2 00001835: ADD 00001836: PUSH1 0x40 00001838: MSTORE 00001839: PUSH1 0x03 0000183b: DUP2 0000183c: MSTORE 0000183d: PUSH32 0x3131310000000000000000000000000000000000000000000000000000000000 0000185e: PUSH1 0x20 00001860: DUP3 00001861: ADD 00001862: MSTORE 00001863: SWAP1 00001864: MSTORE 00001865: SWAP2 00001866: SWAP1 00001867: POP 00001868: DUP2 00001869: MLOAD 0000186a: DUP2 0000186b: SSTORE 0000186c: PUSH1 0x20 0000186e: DUP3 0000186f: ADD 00001870: MLOAD 00001871: DUP2 00001872: PUSH1 0x01 00001874: ADD 00001875: SSTORE 00001876: PUSH1 0x40 00001878: DUP3 00001879: ADD 0000187a: MLOAD 0000187b: DUP2 0000187c: PUSH1 0x02 0000187e: ADD 0000187f: SSTORE 00001880: PUSH1 0x60 00001882: DUP3 00001883: ADD 00001884: MLOAD 00001885: DUP2 00001886: PUSH1 0x03 00001888: ADD 00001889: SWAP1 0000188a: DUP1 0000188b: MLOAD 0000188c: PUSH2 0x1899 0000188f: SWAP3 00001890: SWAP2 00001891: PUSH1 0x20 00001893: ADD 00001894: SWAP1 00001895: PUSH2 0x230b 00001898: JUMP 00001899: JUMPDEST 0000189a: POP 0000189b: POP 0000189c: POP 0000189d: POP 0000189e: PUSH1 0x08 000018a0: DUP1 000018a1: SLOAD 000018a2: DUP1 000018a3: PUSH1 0x01 000018a5: ADD 000018a6: DUP3 000018a7: DUP2 000018a8: PUSH2 0x18b1 000018ab: SWAP2 000018ac: SWAP1 000018ad: PUSH2 0x22df 000018b0: JUMP 000018b1: JUMPDEST 000018b2: SWAP2 000018b3: PUSH1 0x00 000018b5: MSTORE 000018b6: PUSH1 0x20 000018b8: PUSH1 0x00 000018ba: KECCAK256 000018bb: SWAP1 000018bc: PUSH1 0x04 000018be: MUL 000018bf: ADD 000018c0: PUSH1 0x00 000018c2: PUSH1 0x80 000018c4: PUSH1 0x40 000018c6: MLOAD 000018c7: SWAP1 000018c8: DUP2 000018c9: ADD 000018ca: PUSH1 0x40 000018cc: MSTORE 000018cd: DUP1 000018ce: PUSH1 0x1e 000018d0: DUP2 000018d1: MSTORE 000018d2: PUSH1 0x20 000018d4: ADD 000018d5: PUSH1 0x50 000018d7: DUP2 000018d8: MSTORE 000018d9: PUSH1 0x20 000018db: ADD 000018dc: PUSH1 0x00 000018de: DUP2 000018df: MSTORE 000018e0: PUSH1 0x20 000018e2: ADD 000018e3: PUSH1 0x40 000018e5: DUP1 000018e6: MLOAD 000018e7: SWAP1 000018e8: DUP2 000018e9: ADD 000018ea: PUSH1 0x40 000018ec: MSTORE 000018ed: PUSH1 0x03 000018ef: DUP2 000018f0: MSTORE 000018f1: PUSH32 0x3232320000000000000000000000000000000000000000000000000000000000 00001912: PUSH1 0x20 00001914: DUP3 00001915: ADD 00001916: MSTORE 00001917: SWAP1 00001918: MSTORE 00001919: SWAP2 0000191a: SWAP1 0000191b: POP 0000191c: DUP2 0000191d: MLOAD 0000191e: DUP2 0000191f: SSTORE 00001920: PUSH1 0x20 00001922: DUP3 00001923: ADD 00001924: MLOAD 00001925: DUP2 00001926: PUSH1 0x01 00001928: ADD 00001929: SSTORE 0000192a: PUSH1 0x40 0000192c: DUP3 0000192d: ADD 0000192e: MLOAD 0000192f: DUP2 00001930: PUSH1 0x02 00001932: ADD 00001933: SSTORE 00001934: PUSH1 0x60 00001936: DUP3 00001937: ADD 00001938: MLOAD 00001939: DUP2 0000193a: PUSH1 0x03 0000193c: ADD 0000193d: SWAP1 0000193e: DUP1 0000193f: MLOAD 00001940: PUSH2 0x194d 00001943: SWAP3 00001944: SWAP2 00001945: PUSH1 0x20 00001947: ADD 00001948: SWAP1 00001949: PUSH2 0x230b 0000194c: JUMP 0000194d: JUMPDEST 0000194e: POP 0000194f: POP 00001950: POP 00001951: POP 00001952: PUSH1 0x08 00001954: DUP1 00001955: SLOAD 00001956: DUP1 00001957: PUSH1 0x01 00001959: ADD 0000195a: DUP3 0000195b: DUP2 0000195c: PUSH2 0x1965 0000195f: SWAP2 00001960: SWAP1 00001961: PUSH2 0x22df 00001964: JUMP 00001965: JUMPDEST 00001966: SWAP2 00001967: PUSH1 0x00 00001969: MSTORE 0000196a: PUSH1 0x20 0000196c: PUSH1 0x00 0000196e: KECCAK256 0000196f: SWAP1 00001970: PUSH1 0x04 00001972: MUL 00001973: ADD 00001974: PUSH1 0x00 00001976: PUSH1 0x80 00001978: PUSH1 0x40 0000197a: MLOAD 0000197b: SWAP1 0000197c: DUP2 0000197d: ADD 0000197e: PUSH1 0x40 00001980: MSTORE 00001981: DUP1 00001982: PUSH1 0x14 00001984: DUP2 00001985: MSTORE 00001986: PUSH1 0x20 00001988: ADD 00001989: PUSH1 0x64 0000198b: DUP2 0000198c: MSTORE 0000198d: PUSH1 0x20 0000198f: ADD 00001990: PUSH1 0x00 00001992: DUP2 00001993: MSTORE 00001994: PUSH1 0x20 00001996: ADD 00001997: PUSH1 0x40 00001999: DUP1 0000199a: MLOAD 0000199b: SWAP1 0000199c: DUP2 0000199d: ADD 0000199e: PUSH1 0x40 000019a0: MSTORE 000019a1: PUSH1 0x03 000019a3: DUP2 000019a4: MSTORE 000019a5: PUSH32 0x3333330000000000000000000000000000000000000000000000000000000000 000019c6: PUSH1 0x20 000019c8: DUP3 000019c9: ADD 000019ca: MSTORE 000019cb: SWAP1 000019cc: MSTORE 000019cd: SWAP2 000019ce: SWAP1 000019cf: POP 000019d0: DUP2 000019d1: MLOAD 000019d2: DUP2 000019d3: SSTORE 000019d4: PUSH1 0x20 000019d6: DUP3 000019d7: ADD 000019d8: MLOAD 000019d9: DUP2 000019da: PUSH1 0x01 000019dc: ADD 000019dd: SSTORE 000019de: PUSH1 0x40 000019e0: DUP3 000019e1: ADD 000019e2: MLOAD 000019e3: DUP2 000019e4: PUSH1 0x02 000019e6: ADD 000019e7: SSTORE 000019e8: PUSH1 0x60 000019ea: DUP3 000019eb: ADD 000019ec: MLOAD 000019ed: DUP2 000019ee: PUSH1 0x03 000019f0: ADD 000019f1: SWAP1 000019f2: DUP1 000019f3: MLOAD 000019f4: PUSH2 0x1a01 000019f7: SWAP3 000019f8: SWAP2 000019f9: PUSH1 0x20 000019fb: ADD 000019fc: SWAP1 000019fd: PUSH2 0x230b 00001a00: JUMP 00001a01: JUMPDEST 00001a02: POP 00001a03: POP 00001a04: POP 00001a05: POP 00001a06: PUSH1 0x08 00001a08: DUP1 00001a09: SLOAD 00001a0a: DUP1 00001a0b: PUSH1 0x01 00001a0d: ADD 00001a0e: DUP3 00001a0f: DUP2 00001a10: PUSH2 0x1a19 00001a13: SWAP2 00001a14: SWAP1 00001a15: PUSH2 0x22df 00001a18: JUMP 00001a19: JUMPDEST 00001a1a: SWAP2 00001a1b: PUSH1 0x00 00001a1d: MSTORE 00001a1e: PUSH1 0x20 00001a20: PUSH1 0x00 00001a22: KECCAK256 00001a23: SWAP1 00001a24: PUSH1 0x04 00001a26: MUL 00001a27: ADD 00001a28: PUSH1 0x00 00001a2a: PUSH1 0x80 00001a2c: PUSH1 0x40 00001a2e: MLOAD 00001a2f: SWAP1 00001a30: DUP2 00001a31: ADD 00001a32: PUSH1 0x40 00001a34: MSTORE 00001a35: DUP1 00001a36: PUSH1 0x0a 00001a38: DUP2 00001a39: MSTORE 00001a3a: PUSH1 0x20 00001a3c: ADD 00001a3d: PUSH1 0x64 00001a3f: DUP2 00001a40: MSTORE 00001a41: PUSH1 0x20 00001a43: ADD 00001a44: PUSH1 0x00 00001a46: DUP2 00001a47: MSTORE 00001a48: PUSH1 0x20 00001a4a: ADD 00001a4b: PUSH1 0x40 00001a4d: DUP1 00001a4e: MLOAD 00001a4f: SWAP1 00001a50: DUP2 00001a51: ADD 00001a52: PUSH1 0x40 00001a54: MSTORE 00001a55: PUSH1 0x03 00001a57: DUP2 00001a58: MSTORE 00001a59: PUSH32 0x3434340000000000000000000000000000000000000000000000000000000000 00001a7a: PUSH1 0x20 00001a7c: DUP3 00001a7d: ADD 00001a7e: MSTORE 00001a7f: SWAP1 00001a80: MSTORE 00001a81: SWAP2 00001a82: SWAP1 00001a83: POP 00001a84: DUP2 00001a85: MLOAD 00001a86: DUP2 00001a87: SSTORE 00001a88: PUSH1 0x20 00001a8a: DUP3 00001a8b: ADD 00001a8c: MLOAD 00001a8d: DUP2 00001a8e: PUSH1 0x01 00001a90: ADD 00001a91: SSTORE 00001a92: PUSH1 0x40 00001a94: DUP3 00001a95: ADD 00001a96: MLOAD 00001a97: DUP2 00001a98: PUSH1 0x02 00001a9a: ADD 00001a9b: SSTORE 00001a9c: PUSH1 0x60 00001a9e: DUP3 00001a9f: ADD 00001aa0: MLOAD 00001aa1: DUP2 00001aa2: PUSH1 0x03 00001aa4: ADD 00001aa5: SWAP1 00001aa6: DUP1 00001aa7: MLOAD 00001aa8: PUSH2 0x1ab5 00001aab: SWAP3 00001aac: SWAP2 00001aad: PUSH1 0x20 00001aaf: ADD 00001ab0: SWAP1 00001ab1: PUSH2 0x230b 00001ab4: JUMP 00001ab5: JUMPDEST 00001ab6: POP 00001ab7: POP 00001ab8: POP 00001ab9: POP 00001aba: PUSH1 0x08 00001abc: DUP1 00001abd: SLOAD 00001abe: DUP1 00001abf: PUSH1 0x01 00001ac1: ADD 00001ac2: DUP3 00001ac3: DUP2 00001ac4: PUSH2 0x1acd 00001ac7: SWAP2 00001ac8: SWAP1 00001ac9: PUSH2 0x22df 00001acc: JUMP 00001acd: JUMPDEST 00001ace: SWAP2 00001acf: PUSH1 0x00 00001ad1: MSTORE 00001ad2: PUSH1 0x20 00001ad4: PUSH1 0x00 00001ad6: KECCAK256 00001ad7: SWAP1 00001ad8: PUSH1 0x04 00001ada: MUL 00001adb: ADD 00001adc: PUSH1 0x00 00001ade: PUSH1 0x80 00001ae0: PUSH1 0x40 00001ae2: MLOAD 00001ae3: SWAP1 00001ae4: DUP2 00001ae5: ADD 00001ae6: PUSH1 0x40 00001ae8: MSTORE 00001ae9: DUP1 00001aea: PUSH1 0x06 00001aec: DUP2 00001aed: MSTORE 00001aee: PUSH1 0x20 00001af0: ADD 00001af1: PUSH1 0x64 00001af3: DUP2 00001af4: MSTORE 00001af5: PUSH1 0x20 00001af7: ADD 00001af8: PUSH1 0x00 00001afa: DUP2 00001afb: MSTORE 00001afc: PUSH1 0x20 00001afe: ADD 00001aff: PUSH1 0x40 00001b01: DUP1 00001b02: MLOAD 00001b03: SWAP1 00001b04: DUP2 00001b05: ADD 00001b06: PUSH1 0x40 00001b08: MSTORE 00001b09: PUSH1 0x03 00001b0b: DUP2 00001b0c: MSTORE 00001b0d: PUSH32 0x3535350000000000000000000000000000000000000000000000000000000000 00001b2e: PUSH1 0x20 00001b30: DUP3 00001b31: ADD 00001b32: MSTORE 00001b33: SWAP1 00001b34: MSTORE 00001b35: SWAP2 00001b36: SWAP1 00001b37: POP 00001b38: DUP2 00001b39: MLOAD 00001b3a: DUP2 00001b3b: SSTORE 00001b3c: PUSH1 0x20 00001b3e: DUP3 00001b3f: ADD 00001b40: MLOAD 00001b41: DUP2 00001b42: PUSH1 0x01 00001b44: ADD 00001b45: SSTORE 00001b46: PUSH1 0x40 00001b48: DUP3 00001b49: ADD 00001b4a: MLOAD 00001b4b: DUP2 00001b4c: PUSH1 0x02 00001b4e: ADD 00001b4f: SSTORE 00001b50: PUSH1 0x60 00001b52: DUP3 00001b53: ADD 00001b54: MLOAD 00001b55: DUP2 00001b56: PUSH1 0x03 00001b58: ADD 00001b59: SWAP1 00001b5a: DUP1 00001b5b: MLOAD 00001b5c: PUSH2 0x1b69 00001b5f: SWAP3 00001b60: SWAP2 00001b61: PUSH1 0x20 00001b63: ADD 00001b64: SWAP1 00001b65: PUSH2 0x230b 00001b68: JUMP 00001b69: JUMPDEST 00001b6a: POP 00001b6b: POP 00001b6c: POP 00001b6d: POP 00001b6e: PUSH1 0x08 00001b70: DUP1 00001b71: SLOAD 00001b72: DUP1 00001b73: PUSH1 0x01 00001b75: ADD 00001b76: DUP3 00001b77: DUP2 00001b78: PUSH2 0x1b81 00001b7b: SWAP2 00001b7c: SWAP1 00001b7d: PUSH2 0x22df 00001b80: JUMP 00001b81: JUMPDEST 00001b82: SWAP2 00001b83: PUSH1 0x00 00001b85: MSTORE 00001b86: PUSH1 0x20 00001b88: PUSH1 0x00 00001b8a: KECCAK256 00001b8b: SWAP1 00001b8c: PUSH1 0x04 00001b8e: MUL 00001b8f: ADD 00001b90: PUSH1 0x00 00001b92: PUSH1 0x80 00001b94: PUSH1 0x40 00001b96: MLOAD 00001b97: SWAP1 00001b98: DUP2 00001b99: ADD 00001b9a: PUSH1 0x40 00001b9c: MSTORE 00001b9d: DUP1 00001b9e: PUSH1 0x05 00001ba0: DUP2 00001ba1: MSTORE 00001ba2: PUSH1 0x20 00001ba4: ADD 00001ba5: PUSH1 0x64 00001ba7: DUP2 00001ba8: MSTORE 00001ba9: PUSH1 0x20 00001bab: ADD 00001bac: PUSH1 0x00 00001bae: DUP2 00001baf: MSTORE 00001bb0: PUSH1 0x20 00001bb2: ADD 00001bb3: PUSH1 0x40 00001bb5: DUP1 00001bb6: MLOAD 00001bb7: SWAP1 00001bb8: DUP2 00001bb9: ADD 00001bba: PUSH1 0x40 00001bbc: MSTORE 00001bbd: PUSH1 0x03 00001bbf: DUP2 00001bc0: MSTORE 00001bc1: PUSH32 0x3636360000000000000000000000000000000000000000000000000000000000 00001be2: PUSH1 0x20 00001be4: DUP3 00001be5: ADD 00001be6: MSTORE 00001be7: SWAP1 00001be8: MSTORE 00001be9: SWAP2 00001bea: SWAP1 00001beb: POP 00001bec: DUP2 00001bed: MLOAD 00001bee: DUP2 00001bef: SSTORE 00001bf0: PUSH1 0x20 00001bf2: DUP3 00001bf3: ADD 00001bf4: MLOAD 00001bf5: DUP2 00001bf6: PUSH1 0x01 00001bf8: ADD 00001bf9: SSTORE 00001bfa: PUSH1 0x40 00001bfc: DUP3 00001bfd: ADD 00001bfe: MLOAD 00001bff: DUP2 00001c00: PUSH1 0x02 00001c02: ADD 00001c03: SSTORE 00001c04: PUSH1 0x60 00001c06: DUP3 00001c07: ADD 00001c08: MLOAD 00001c09: DUP2 00001c0a: PUSH1 0x03 00001c0c: ADD 00001c0d: SWAP1 00001c0e: DUP1 00001c0f: MLOAD 00001c10: PUSH2 0x1c1d 00001c13: SWAP3 00001c14: SWAP2 00001c15: PUSH1 0x20 00001c17: ADD 00001c18: SWAP1 00001c19: PUSH2 0x230b 00001c1c: JUMP 00001c1d: JUMPDEST 00001c1e: POP 00001c1f: POP 00001c20: POP 00001c21: POP 00001c22: PUSH1 0x08 00001c24: DUP1 00001c25: SLOAD 00001c26: DUP1 00001c27: PUSH1 0x01 00001c29: ADD 00001c2a: DUP3 00001c2b: DUP2 00001c2c: PUSH2 0x1c35 00001c2f: SWAP2 00001c30: SWAP1 00001c31: PUSH2 0x22df 00001c34: JUMP 00001c35: JUMPDEST 00001c36: SWAP2 00001c37: PUSH1 0x00 00001c39: MSTORE 00001c3a: PUSH1 0x20 00001c3c: PUSH1 0x00 00001c3e: KECCAK256 00001c3f: SWAP1 00001c40: PUSH1 0x04 00001c42: MUL 00001c43: ADD 00001c44: PUSH1 0x00 00001c46: PUSH1 0x80 00001c48: PUSH1 0x40 00001c4a: MLOAD 00001c4b: SWAP1 00001c4c: DUP2 00001c4d: ADD 00001c4e: PUSH1 0x40 00001c50: MSTORE 00001c51: DUP1 00001c52: PUSH1 0x04 00001c54: DUP2 00001c55: MSTORE 00001c56: PUSH1 0x20 00001c58: ADD 00001c59: PUSH1 0x64 00001c5b: DUP2 00001c5c: MSTORE 00001c5d: PUSH1 0x20 00001c5f: ADD 00001c60: PUSH1 0x00 00001c62: DUP2 00001c63: MSTORE 00001c64: PUSH1 0x20 00001c66: ADD 00001c67: PUSH1 0x40 00001c69: DUP1 00001c6a: MLOAD 00001c6b: SWAP1 00001c6c: DUP2 00001c6d: ADD 00001c6e: PUSH1 0x40 00001c70: MSTORE 00001c71: PUSH1 0x03 00001c73: DUP2 00001c74: MSTORE 00001c75: PUSH32 0x3737370000000000000000000000000000000000000000000000000000000000 00001c96: PUSH1 0x20 00001c98: DUP3 00001c99: ADD 00001c9a: MSTORE 00001c9b: SWAP1 00001c9c: MSTORE 00001c9d: SWAP2 00001c9e: SWAP1 00001c9f: POP 00001ca0: DUP2 00001ca1: MLOAD 00001ca2: DUP2 00001ca3: SSTORE 00001ca4: PUSH1 0x20 00001ca6: DUP3 00001ca7: ADD 00001ca8: MLOAD 00001ca9: DUP2 00001caa: PUSH1 0x01 00001cac: ADD 00001cad: SSTORE 00001cae: PUSH1 0x40 00001cb0: DUP3 00001cb1: ADD 00001cb2: MLOAD 00001cb3: DUP2 00001cb4: PUSH1 0x02 00001cb6: ADD 00001cb7: SSTORE 00001cb8: PUSH1 0x60 00001cba: DUP3 00001cbb: ADD 00001cbc: MLOAD 00001cbd: DUP2 00001cbe: PUSH1 0x03 00001cc0: ADD 00001cc1: SWAP1 00001cc2: DUP1 00001cc3: MLOAD 00001cc4: PUSH2 0x1cd1 00001cc7: SWAP3 00001cc8: SWAP2 00001cc9: PUSH1 0x20 00001ccb: ADD 00001ccc: SWAP1 00001ccd: PUSH2 0x230b 00001cd0: JUMP 00001cd1: JUMPDEST 00001cd2: POP 00001cd3: POP 00001cd4: POP 00001cd5: POP 00001cd6: PUSH1 0x08 00001cd8: DUP1 00001cd9: SLOAD 00001cda: DUP1 00001cdb: PUSH1 0x01 00001cdd: ADD 00001cde: DUP3 00001cdf: DUP2 00001ce0: PUSH2 0x1ce9 00001ce3: SWAP2 00001ce4: SWAP1 00001ce5: PUSH2 0x22df 00001ce8: JUMP 00001ce9: JUMPDEST 00001cea: SWAP2 00001ceb: PUSH1 0x00 00001ced: MSTORE 00001cee: PUSH1 0x20 00001cf0: PUSH1 0x00 00001cf2: KECCAK256 00001cf3: SWAP1 00001cf4: PUSH1 0x04 00001cf6: MUL 00001cf7: ADD 00001cf8: PUSH1 0x00 00001cfa: PUSH1 0x80 00001cfc: PUSH1 0x40 00001cfe: MLOAD 00001cff: SWAP1 00001d00: DUP2 00001d01: ADD 00001d02: PUSH1 0x40 00001d04: MSTORE 00001d05: DUP1 00001d06: PUSH1 0x03 00001d08: DUP2 00001d09: MSTORE 00001d0a: PUSH1 0x20 00001d0c: ADD 00001d0d: PUSH1 0xa0 00001d0f: DUP2 00001d10: MSTORE 00001d11: PUSH1 0x20 00001d13: ADD 00001d14: PUSH1 0x00 00001d16: DUP2 00001d17: MSTORE 00001d18: PUSH1 0x20 00001d1a: ADD 00001d1b: PUSH1 0x40 00001d1d: DUP1 00001d1e: MLOAD 00001d1f: SWAP1 00001d20: DUP2 00001d21: ADD 00001d22: PUSH1 0x40 00001d24: MSTORE 00001d25: PUSH1 0x03 00001d27: DUP2 00001d28: MSTORE 00001d29: PUSH32 0x3838380000000000000000000000000000000000000000000000000000000000 00001d4a: PUSH1 0x20 00001d4c: DUP3 00001d4d: ADD 00001d4e: MSTORE 00001d4f: SWAP1 00001d50: MSTORE 00001d51: SWAP2 00001d52: SWAP1 00001d53: POP 00001d54: DUP2 00001d55: MLOAD 00001d56: DUP2 00001d57: SSTORE 00001d58: PUSH1 0x20 00001d5a: DUP3 00001d5b: ADD 00001d5c: MLOAD 00001d5d: DUP2 00001d5e: PUSH1 0x01 00001d60: ADD 00001d61: SSTORE 00001d62: PUSH1 0x40 00001d64: DUP3 00001d65: ADD 00001d66: MLOAD 00001d67: DUP2 00001d68: PUSH1 0x02 00001d6a: ADD 00001d6b: SSTORE 00001d6c: PUSH1 0x60 00001d6e: DUP3 00001d6f: ADD 00001d70: MLOAD 00001d71: DUP2 00001d72: PUSH1 0x03 00001d74: ADD 00001d75: SWAP1 00001d76: DUP1 00001d77: MLOAD 00001d78: PUSH2 0x1d85 00001d7b: SWAP3 00001d7c: SWAP2 00001d7d: PUSH1 0x20 00001d7f: ADD 00001d80: SWAP1 00001d81: PUSH2 0x230b 00001d84: JUMP 00001d85: JUMPDEST 00001d86: POP 00001d87: POP 00001d88: POP 00001d89: POP 00001d8a: PUSH1 0x08 00001d8c: DUP1 00001d8d: SLOAD 00001d8e: DUP1 00001d8f: PUSH1 0x01 00001d91: ADD 00001d92: DUP3 00001d93: DUP2 00001d94: PUSH2 0x1d9d 00001d97: SWAP2 00001d98: SWAP1 00001d99: PUSH2 0x22df 00001d9c: JUMP 00001d9d: JUMPDEST 00001d9e: SWAP2 00001d9f: PUSH1 0x00 00001da1: MSTORE 00001da2: PUSH1 0x20 00001da4: PUSH1 0x00 00001da6: KECCAK256 00001da7: SWAP1 00001da8: PUSH1 0x04 00001daa: MUL 00001dab: ADD 00001dac: PUSH1 0x00 00001dae: PUSH1 0x80 00001db0: PUSH1 0x40 00001db2: MLOAD 00001db3: SWAP1 00001db4: DUP2 00001db5: ADD 00001db6: PUSH1 0x40 00001db8: MSTORE 00001db9: DUP1 00001dba: PUSH1 0x02 00001dbc: DUP2 00001dbd: MSTORE 00001dbe: PUSH1 0x20 00001dc0: ADD 00001dc1: PUSH1 0xc8 00001dc3: DUP2 00001dc4: MSTORE 00001dc5: PUSH1 0x20 00001dc7: ADD 00001dc8: PUSH1 0x00 00001dca: DUP2 00001dcb: MSTORE 00001dcc: PUSH1 0x20 00001dce: ADD 00001dcf: PUSH1 0x80 00001dd1: PUSH1 0x40 00001dd3: MLOAD 00001dd4: SWAP1 00001dd5: DUP2 00001dd6: ADD 00001dd7: PUSH1 0x40 00001dd9: SWAP1 00001dda: DUP2 00001ddb: MSTORE 00001ddc: PUSH1 0x48 00001dde: DUP3 00001ddf: MSTORE 00001de0: PUSH32 0x3232333232343233323233333233343234323234333234343332323332333332 00001e01: PUSH1 0x20 00001e03: DUP4 00001e04: ADD 00001e05: MSTORE 00001e06: PUSH32 0x3433333233333433343233343333343434323234323334323434333234333334 00001e27: SWAP1 00001e28: DUP3 00001e29: ADD 00001e2a: MSTORE 00001e2b: PUSH32 0x3334343432343433000000000000000000000000000000000000000000000000 00001e4c: PUSH1 0x60 00001e4e: DUP3 00001e4f: ADD 00001e50: MSTORE 00001e51: SWAP1 00001e52: MSTORE 00001e53: SWAP2 00001e54: SWAP1 00001e55: POP 00001e56: DUP2 00001e57: MLOAD 00001e58: DUP2 00001e59: SSTORE 00001e5a: PUSH1 0x20 00001e5c: DUP3 00001e5d: ADD 00001e5e: MLOAD 00001e5f: DUP2 00001e60: PUSH1 0x01 00001e62: ADD 00001e63: SSTORE 00001e64: PUSH1 0x40 00001e66: DUP3 00001e67: ADD 00001e68: MLOAD 00001e69: DUP2 00001e6a: PUSH1 0x02 00001e6c: ADD 00001e6d: SSTORE 00001e6e: PUSH1 0x60 00001e70: DUP3 00001e71: ADD 00001e72: MLOAD 00001e73: DUP2 00001e74: PUSH1 0x03 00001e76: ADD 00001e77: SWAP1 00001e78: DUP1 00001e79: MLOAD 00001e7a: PUSH2 0x1e87 00001e7d: SWAP3 00001e7e: SWAP2 00001e7f: PUSH1 0x20 00001e81: ADD 00001e82: SWAP1 00001e83: PUSH2 0x230b 00001e86: JUMP 00001e87: JUMPDEST 00001e88: POP 00001e89: POP 00001e8a: POP 00001e8b: POP 00001e8c: PUSH1 0x08 00001e8e: DUP1 00001e8f: SLOAD 00001e90: DUP1 00001e91: PUSH1 0x01 00001e93: ADD 00001e94: DUP3 00001e95: DUP2 00001e96: PUSH2 0x1e9f 00001e99: SWAP2 00001e9a: SWAP1 00001e9b: PUSH2 0x22df 00001e9e: JUMP 00001e9f: JUMPDEST 00001ea0: SWAP2 00001ea1: PUSH1 0x00 00001ea3: MSTORE 00001ea4: PUSH1 0x20 00001ea6: PUSH1 0x00 00001ea8: KECCAK256 00001ea9: SWAP1 00001eaa: PUSH1 0x04 00001eac: MUL 00001ead: ADD 00001eae: PUSH1 0x00 00001eb0: PUSH1 0x80 00001eb2: PUSH1 0x40 00001eb4: MLOAD 00001eb5: SWAP1 00001eb6: DUP2 00001eb7: ADD 00001eb8: PUSH1 0x40 00001eba: MSTORE 00001ebb: DUP1 00001ebc: PUSH1 0x01 00001ebe: DUP2 00001ebf: MSTORE 00001ec0: PUSH1 0x20 00001ec2: ADD 00001ec3: PUSH1 0xc8 00001ec5: DUP2 00001ec6: MSTORE 00001ec7: PUSH1 0x20 00001ec9: ADD 00001eca: PUSH1 0x00 00001ecc: DUP2 00001ecd: MSTORE 00001ece: PUSH1 0x20 00001ed0: ADD 00001ed1: PUSH1 0x80 00001ed3: PUSH1 0x40 00001ed5: MLOAD 00001ed6: SWAP1 00001ed7: DUP2 00001ed8: ADD 00001ed9: PUSH1 0x40 00001edb: SWAP1 00001edc: DUP2 00001edd: MSTORE 00001ede: PUSH1 0x48 00001ee0: DUP3 00001ee1: MSTORE 00001ee2: PUSH32 0x3535363535373536353536363536373537353537363537373635353635363635 00001f03: PUSH1 0x20 00001f05: DUP4 00001f06: ADD 00001f07: MSTORE 00001f08: PUSH32 0x3736363536363736373536373636373737353537353637353737363537363637 00001f29: SWAP1 00001f2a: DUP3 00001f2b: ADD 00001f2c: MSTORE 00001f2d: PUSH32 0x3637373735373736000000000000000000000000000000000000000000000000 00001f4e: PUSH1 0x60 00001f50: DUP3 00001f51: ADD 00001f52: MSTORE 00001f53: SWAP1 00001f54: MSTORE 00001f55: SWAP2 00001f56: SWAP1 00001f57: POP 00001f58: DUP2 00001f59: MLOAD 00001f5a: DUP2 00001f5b: SSTORE 00001f5c: PUSH1 0x20 00001f5e: DUP3 00001f5f: ADD 00001f60: MLOAD 00001f61: DUP2 00001f62: PUSH1 0x01 00001f64: ADD 00001f65: SSTORE 00001f66: PUSH1 0x40 00001f68: DUP3 00001f69: ADD 00001f6a: MLOAD 00001f6b: DUP2 00001f6c: PUSH1 0x02 00001f6e: ADD 00001f6f: SSTORE 00001f70: PUSH1 0x60 00001f72: DUP3 00001f73: ADD 00001f74: MLOAD 00001f75: DUP2 00001f76: PUSH1 0x03 00001f78: ADD 00001f79: SWAP1 00001f7a: DUP1 00001f7b: MLOAD 00001f7c: PUSH2 0x1f89 00001f7f: SWAP3 00001f80: SWAP2 00001f81: PUSH1 0x20 00001f83: ADD 00001f84: SWAP1 00001f85: PUSH2 0x230b 00001f88: JUMP 00001f89: JUMPDEST 00001f8a: POP 00001f8b: POP 00001f8c: POP 00001f8d: POP 00001f8e: PUSH2 0x1235 00001f91: PUSH2 0x170e 00001f94: JUMP 00001f95: JUMPDEST 00001f96: PUSH1 0x00 00001f98: DUP2 00001f99: DUP4 00001f9a: LT 00001f9b: PUSH2 0x1705 00001f9e: JUMPI 00001f9f: DUP2 00001fa0: PUSH2 0x1707 00001fa3: JUMP 00001fa4: JUMPDEST 00001fa5: PUSH1 0x00 00001fa7: DUP1 00001fa8: PUSH2 0x1faf 00001fab: PUSH2 0x0eee 00001fae: JUMP 00001faf: JUMPDEST 00001fb0: PUSH1 0x02 00001fb2: DUP1 00001fb3: SLOAD 00001fb4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fc9: NOT 00001fca: AND 00001fcb: PUSH1 0x01 00001fcd: PUSH1 0xa0 00001fcf: PUSH1 0x02 00001fd1: EXP 00001fd2: SUB 00001fd3: SWAP3 00001fd4: DUP4 00001fd5: AND 00001fd6: OR 00001fd7: SWAP1 00001fd8: DUP2 00001fd9: SWAP1 00001fda: SSTORE 00001fdb: AND 00001fdc: PUSH4 0x7ce27a4e 00001fe1: DUP7 00001fe2: DUP7 00001fe3: DUP7 00001fe4: PUSH1 0x00 00001fe6: PUSH1 0x40 00001fe8: MLOAD 00001fe9: PUSH1 0x20 00001feb: ADD 00001fec: MSTORE 00001fed: PUSH1 0x40 00001fef: MLOAD 00001ff0: PUSH1 0xe0 00001ff2: PUSH1 0x02 00001ff4: EXP 00001ff5: PUSH4 0xffffffff 00001ffa: DUP7 00001ffb: AND 00001ffc: MUL 00001ffd: DUP2 00001ffe: MSTORE 00001fff: PUSH1 0x0f 00002001: SWAP4 00002002: DUP5 00002003: SIGNEXTEND 00002004: DUP5 00002005: SIGNEXTEND 00002006: PUSH1 0x04 00002008: DUP3 00002009: ADD 0000200a: MSTORE 0000200b: SWAP2 0000200c: DUP4 0000200d: SIGNEXTEND 0000200e: SWAP1 0000200f: SWAP3 00002010: SIGNEXTEND 00002011: PUSH1 0x24 00002013: DUP3 00002014: ADD 00002015: MSTORE 00002016: PUSH1 0x44 00002018: DUP2 00002019: ADD 0000201a: SWAP2 0000201b: SWAP1 0000201c: SWAP2 0000201d: MSTORE 0000201e: PUSH1 0x64 00002020: ADD 00002021: PUSH1 0x20 00002023: PUSH1 0x40 00002025: MLOAD 00002026: DUP1 00002027: DUP4 00002028: SUB 00002029: DUP2 0000202a: PUSH1 0x00 0000202c: DUP8 0000202d: DUP1 0000202e: EXTCODESIZE 0000202f: ISZERO 00002030: ISZERO 00002031: PUSH2 0x2039 00002034: JUMPI 00002035: PUSH1 0x00 00002037: DUP1 00002038: REVERT 00002039: JUMPDEST 0000203a: PUSH2 0x02c6 0000203d: GAS 0000203e: SUB 0000203f: CALL 00002040: ISZERO 00002041: ISZERO 00002042: PUSH2 0x204a 00002045: JUMPI 00002046: PUSH1 0x00 00002048: DUP1 00002049: REVERT 0000204a: JUMPDEST 0000204b: POP 0000204c: POP 0000204d: POP 0000204e: PUSH1 0x40 00002050: MLOAD 00002051: DUP1 00002052: MLOAD 00002053: PUSH1 0x02 00002055: SLOAD 00002056: SWAP1 00002057: SWAP3 00002058: POP 00002059: PUSH1 0x01 0000205b: PUSH1 0xa0 0000205d: PUSH1 0x02 0000205f: EXP 00002060: SUB 00002061: AND 00002062: SWAP1 00002063: POP 00002064: PUSH4 0x70675489 00002069: DUP3 0000206a: DUP8 0000206b: DUP8 0000206c: DUP8 0000206d: PUSH1 0x00 0000206f: PUSH1 0x40 00002071: MLOAD 00002072: PUSH1 0x20 00002074: ADD 00002075: MSTORE 00002076: PUSH1 0x40 00002078: MLOAD 00002079: PUSH1 0xe0 0000207b: PUSH1 0x02 0000207d: EXP 0000207e: PUSH4 0xffffffff 00002083: DUP8 00002084: AND 00002085: MUL 00002086: DUP2 00002087: MSTORE 00002088: PUSH1 0x0f 0000208a: SWAP4 0000208b: DUP5 0000208c: SIGNEXTEND 0000208d: DUP5 0000208e: SIGNEXTEND 0000208f: PUSH1 0x04 00002091: DUP3 00002092: ADD 00002093: MSTORE 00002094: SWAP2 00002095: DUP4 00002096: SIGNEXTEND 00002097: SWAP1 00002098: SWAP3 00002099: SIGNEXTEND 0000209a: PUSH1 0x24 0000209c: DUP3 0000209d: ADD 0000209e: MSTORE 0000209f: PUSH1 0x44 000020a1: DUP2 000020a2: ADD 000020a3: SWAP2 000020a4: SWAP1 000020a5: SWAP2 000020a6: MSTORE 000020a7: PUSH1 0x64 000020a9: ADD 000020aa: PUSH1 0x20 000020ac: PUSH1 0x40 000020ae: MLOAD 000020af: DUP1 000020b0: DUP4 000020b1: SUB 000020b2: DUP2 000020b3: DUP6 000020b4: DUP9 000020b5: DUP1 000020b6: EXTCODESIZE 000020b7: ISZERO 000020b8: ISZERO 000020b9: PUSH2 0x20c1 000020bc: JUMPI 000020bd: PUSH1 0x00 000020bf: DUP1 000020c0: REVERT 000020c1: JUMPDEST 000020c2: PUSH2 0x25ee 000020c5: GAS 000020c6: SUB 000020c7: CALL 000020c8: ISZERO 000020c9: ISZERO 000020ca: PUSH2 0x20d2 000020cd: JUMPI 000020ce: PUSH1 0x00 000020d0: DUP1 000020d1: REVERT 000020d2: JUMPDEST 000020d3: POP 000020d4: POP 000020d5: POP 000020d6: POP 000020d7: PUSH1 0x40 000020d9: MLOAD 000020da: DUP1 000020db: MLOAD 000020dc: SWAP7 000020dd: SWAP6 000020de: POP 000020df: POP 000020e0: POP 000020e1: POP 000020e2: POP 000020e3: POP 000020e4: JUMP 000020e5: JUMPDEST 000020e6: PUSH1 0x00 000020e8: PUSH2 0x20ef 000020eb: PUSH2 0x0eee 000020ee: JUMP 000020ef: JUMPDEST 000020f0: PUSH1 0x02 000020f2: DUP1 000020f3: SLOAD 000020f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002109: NOT 0000210a: AND 0000210b: PUSH1 0x01 0000210d: PUSH1 0xa0 0000210f: PUSH1 0x02 00002111: EXP 00002112: SUB 00002113: SWAP3 00002114: DUP4 00002115: AND 00002116: OR 00002117: SWAP1 00002118: DUP2 00002119: SWAP1 0000211a: SSTORE 0000211b: AND 0000211c: PUSH4 0xb92615f2 00002121: DUP7 00002122: DUP7 00002123: DUP7 00002124: DUP7 00002125: PUSH1 0x00 00002127: PUSH1 0x40 00002129: MLOAD 0000212a: PUSH1 0x20 0000212c: ADD 0000212d: MSTORE 0000212e: PUSH1 0x40 00002130: MLOAD 00002131: PUSH1 0xe0 00002133: PUSH1 0x02 00002135: EXP 00002136: PUSH4 0xffffffff 0000213b: DUP8 0000213c: AND 0000213d: MUL 0000213e: DUP2 0000213f: MSTORE 00002140: PUSH1 0x0f 00002142: SWAP5 00002143: DUP6 00002144: SIGNEXTEND 00002145: DUP6 00002146: SIGNEXTEND 00002147: PUSH1 0x04 00002149: DUP3 0000214a: ADD 0000214b: MSTORE 0000214c: SWAP3 0000214d: DUP5 0000214e: SIGNEXTEND 0000214f: SWAP1 00002150: SWAP4 00002151: SIGNEXTEND 00002152: PUSH1 0x24 00002154: DUP4 00002155: ADD 00002156: MSTORE 00002157: PUSH1 0x44 00002159: DUP3 0000215a: ADD 0000215b: MSTORE 0000215c: PUSH1 0x64 0000215e: DUP2 0000215f: ADD 00002160: SWAP2 00002161: SWAP1 00002162: SWAP2 00002163: MSTORE 00002164: PUSH1 0x84 00002166: ADD 00002167: PUSH1 0x20 00002169: PUSH1 0x40 0000216b: MLOAD 0000216c: DUP1 0000216d: DUP4 0000216e: SUB 0000216f: DUP2 00002170: PUSH1 0x00 00002172: DUP8 00002173: DUP1 00002174: EXTCODESIZE 00002175: ISZERO 00002176: ISZERO 00002177: PUSH2 0x217f 0000217a: JUMPI 0000217b: PUSH1 0x00 0000217d: DUP1 0000217e: REVERT 0000217f: JUMPDEST 00002180: PUSH2 0x02c6 00002183: GAS 00002184: SUB 00002185: CALL 00002186: ISZERO 00002187: ISZERO 00002188: PUSH2 0x2190 0000218b: JUMPI 0000218c: PUSH1 0x00 0000218e: DUP1 0000218f: REVERT 00002190: JUMPDEST 00002191: POP 00002192: POP 00002193: POP 00002194: PUSH1 0x40 00002196: MLOAD 00002197: DUP1 00002198: MLOAD 00002199: SWAP7 0000219a: SWAP6 0000219b: POP 0000219c: POP 0000219d: POP 0000219e: POP 0000219f: POP 000021a0: POP 000021a1: JUMP 000021a2: JUMPDEST 000021a3: PUSH1 0x00 000021a5: DUP1 000021a6: PUSH1 0x00 000021a8: DUP1 000021a9: PUSH1 0x00 000021ab: DUP1 000021ac: PUSH1 0x01 000021ae: DUP8 000021af: LT 000021b0: DUP1 000021b1: PUSH2 0x21bc 000021b4: JUMPI 000021b5: POP 000021b6: PUSH3 0x0186a0 000021ba: DUP8 000021bb: GT 000021bc: JUMPDEST 000021bd: ISZERO 000021be: PUSH2 0x21d2 000021c1: JUMPI 000021c2: PUSH1 0x00 000021c4: NOT 000021c5: DUP9 000021c6: PUSH1 0x00 000021c8: SWAP6 000021c9: POP 000021ca: SWAP6 000021cb: POP 000021cc: SWAP6 000021cd: POP 000021ce: PUSH2 0x22b4 000021d1: JUMP 000021d2: JUMPDEST 000021d3: PUSH1 0x00 000021d5: SWAP3 000021d6: POP 000021d7: PUSH1 0x00 000021d9: SWAP2 000021da: POP 000021db: JUMPDEST 000021dc: PUSH1 0x08 000021de: SLOAD 000021df: DUP3 000021e0: LT 000021e1: ISZERO 000021e2: PUSH2 0x2281 000021e5: JUMPI 000021e6: PUSH1 0x08 000021e8: DUP1 000021e9: SLOAD 000021ea: DUP4 000021eb: SWAP1 000021ec: DUP2 000021ed: LT 000021ee: PUSH2 0x21f3 000021f1: JUMPI 000021f2: INVALID 000021f3: JUMPDEST 000021f4: SWAP1 000021f5: PUSH1 0x00 000021f7: MSTORE 000021f8: PUSH1 0x20 000021fa: PUSH1 0x00 000021fc: KECCAK256 000021fd: SWAP1 000021fe: PUSH1 0x04 00002200: MUL 00002201: ADD 00002202: PUSH1 0x02 00002204: ADD 00002205: SLOAD 00002206: DUP4 00002207: ADD 00002208: SWAP3 00002209: POP 0000220a: DUP3 0000220b: DUP8 0000220c: GT 0000220d: ISZERO 0000220e: ISZERO 0000220f: PUSH2 0x2276 00002212: JUMPI 00002213: PUSH1 0x08 00002215: DUP1 00002216: SLOAD 00002217: DUP4 00002218: SWAP1 00002219: DUP2 0000221a: LT 0000221b: PUSH2 0x2220 0000221e: JUMPI 0000221f: INVALID 00002220: JUMPDEST 00002221: SWAP1 00002222: PUSH1 0x00 00002224: MSTORE 00002225: PUSH1 0x20 00002227: PUSH1 0x00 00002229: KECCAK256 0000222a: SWAP1 0000222b: PUSH1 0x04 0000222d: MUL 0000222e: ADD 0000222f: PUSH1 0x00 00002231: ADD 00002232: SLOAD 00002233: DUP9 00002234: MUL 00002235: SWAP1 00002236: POP 00002237: PUSH3 0x0186a0 0000223b: PUSH1 0x0b 0000223d: SLOAD 0000223e: PUSH2 0x2245 00002241: PUSH2 0x09c5 00002244: JUMP 00002245: JUMPDEST 00002246: MUL 00002247: DUP2 00002248: ISZERO 00002249: ISZERO 0000224a: PUSH2 0x224f 0000224d: JUMPI 0000224e: INVALID 0000224f: JUMPDEST 00002250: DIV 00002251: DUP2 00002252: LT 00002253: PUSH2 0x2267 00002256: JUMPI 00002257: PUSH1 0x01 00002259: NOT 0000225a: DUP9 0000225b: PUSH1 0x00 0000225d: SWAP6 0000225e: POP 0000225f: SWAP6 00002260: POP 00002261: SWAP6 00002262: POP 00002263: PUSH2 0x22b4 00002266: JUMP 00002267: JUMPDEST 00002268: DUP2 00002269: DUP2 0000226a: PUSH1 0x00 0000226c: SWAP6 0000226d: POP 0000226e: SWAP6 0000226f: POP 00002270: SWAP6 00002271: POP 00002272: PUSH2 0x22b4 00002275: JUMP 00002276: JUMPDEST 00002277: PUSH1 0x01 00002279: SWAP1 0000227a: SWAP2 0000227b: ADD 0000227c: SWAP1 0000227d: PUSH2 0x21db 00002280: JUMP 00002281: JUMPDEST 00002282: PUSH1 0x13 00002284: SLOAD 00002285: SWAP3 00002286: SWAP1 00002287: SWAP3 00002288: ADD 00002289: SWAP2 0000228a: DUP3 0000228b: DUP8 0000228c: GT 0000228d: PUSH2 0x22a4 00002290: JUMPI 00002291: PUSH1 0x08 00002293: SLOAD 00002294: PUSH1 0x11 00002296: SLOAD 00002297: SWAP1 00002298: SWAP7 00002299: POP 0000229a: SWAP5 0000229b: POP 0000229c: PUSH1 0x01 0000229e: SWAP4 0000229f: POP 000022a0: PUSH2 0x22b4 000022a3: JUMP 000022a4: JUMPDEST 000022a5: PUSH1 0x08 000022a7: SLOAD 000022a8: PUSH1 0x01 000022aa: ADD 000022ab: SWAP6 000022ac: POP 000022ad: PUSH1 0x00 000022af: SWAP5 000022b0: POP 000022b1: DUP5 000022b2: SWAP4 000022b3: POP 000022b4: JUMPDEST 000022b5: POP 000022b6: POP 000022b7: POP 000022b8: SWAP3 000022b9: POP 000022ba: SWAP3 000022bb: POP 000022bc: SWAP3 000022bd: JUMP 000022be: JUMPDEST 000022bf: POP 000022c0: DUP1 000022c1: SLOAD 000022c2: PUSH1 0x00 000022c4: DUP3 000022c5: SSTORE 000022c6: PUSH1 0x04 000022c8: MUL 000022c9: SWAP1 000022ca: PUSH1 0x00 000022cc: MSTORE 000022cd: PUSH1 0x20 000022cf: PUSH1 0x00 000022d1: KECCAK256 000022d2: SWAP1 000022d3: DUP2 000022d4: ADD 000022d5: SWAP1 000022d6: PUSH2 0x0eb7 000022d9: SWAP2 000022da: SWAP1 000022db: PUSH2 0x2385 000022de: JUMP 000022df: JUMPDEST 000022e0: DUP2 000022e1: SLOAD 000022e2: DUP2 000022e3: DUP4 000022e4: SSTORE 000022e5: DUP2 000022e6: DUP2 000022e7: ISZERO 000022e8: GT 000022e9: PUSH2 0x0e23 000022ec: JUMPI 000022ed: PUSH1 0x04 000022ef: MUL 000022f0: DUP2 000022f1: PUSH1 0x04 000022f3: MUL 000022f4: DUP4 000022f5: PUSH1 0x00 000022f7: MSTORE 000022f8: PUSH1 0x20 000022fa: PUSH1 0x00 000022fc: KECCAK256 000022fd: SWAP2 000022fe: DUP3 000022ff: ADD 00002300: SWAP2 00002301: ADD 00002302: PUSH2 0x0e23 00002305: SWAP2 00002306: SWAP1 00002307: PUSH2 0x2385 0000230a: JUMP 0000230b: JUMPDEST 0000230c: DUP3 0000230d: DUP1 0000230e: SLOAD 0000230f: PUSH1 0x01 00002311: DUP2 00002312: PUSH1 0x01 00002314: AND 00002315: ISZERO 00002316: PUSH2 0x0100 00002319: MUL 0000231a: SUB 0000231b: AND 0000231c: PUSH1 0x02 0000231e: SWAP1 0000231f: DIV 00002320: SWAP1 00002321: PUSH1 0x00 00002323: MSTORE 00002324: PUSH1 0x20 00002326: PUSH1 0x00 00002328: KECCAK256 00002329: SWAP1 0000232a: PUSH1 0x1f 0000232c: ADD 0000232d: PUSH1 0x20 0000232f: SWAP1 00002330: DIV 00002331: DUP2 00002332: ADD 00002333: SWAP3 00002334: DUP3 00002335: PUSH1 0x1f 00002337: LT 00002338: PUSH2 0x234c 0000233b: JUMPI 0000233c: DUP1 0000233d: MLOAD 0000233e: PUSH1 0xff 00002340: NOT 00002341: AND 00002342: DUP4 00002343: DUP1 00002344: ADD 00002345: OR 00002346: DUP6 00002347: SSTORE 00002348: PUSH2 0x2379 0000234b: JUMP 0000234c: JUMPDEST 0000234d: DUP3 0000234e: DUP1 0000234f: ADD 00002350: PUSH1 0x01 00002352: ADD 00002353: DUP6 00002354: SSTORE 00002355: DUP3 00002356: ISZERO 00002357: PUSH2 0x2379 0000235a: JUMPI 0000235b: SWAP2 0000235c: DUP3 0000235d: ADD 0000235e: JUMPDEST 0000235f: DUP3 00002360: DUP2 00002361: GT 00002362: ISZERO 00002363: PUSH2 0x2379 00002366: JUMPI 00002367: DUP3 00002368: MLOAD 00002369: DUP3 0000236a: SSTORE 0000236b: SWAP2 0000236c: PUSH1 0x20 0000236e: ADD 0000236f: SWAP2 00002370: SWAP1 00002371: PUSH1 0x01 00002373: ADD 00002374: SWAP1 00002375: PUSH2 0x235e 00002378: JUMP 00002379: JUMPDEST 0000237a: POP 0000237b: PUSH2 0x09e2 0000237e: SWAP3 0000237f: SWAP2 00002380: POP 00002381: PUSH2 0x23bc 00002384: JUMP 00002385: JUMPDEST 00002386: PUSH2 0x0b1b 00002389: SWAP2 0000238a: SWAP1 0000238b: JUMPDEST 0000238c: DUP1 0000238d: DUP3 0000238e: GT 0000238f: ISZERO 00002390: PUSH2 0x09e2 00002393: JUMPI 00002394: PUSH1 0x00 00002396: DUP1 00002397: DUP3 00002398: SSTORE 00002399: PUSH1 0x01 0000239b: DUP3 0000239c: ADD 0000239d: DUP2 0000239e: SWAP1 0000239f: SSTORE 000023a0: PUSH1 0x02 000023a2: DUP3 000023a3: ADD 000023a4: DUP2 000023a5: SWAP1 000023a6: SSTORE 000023a7: PUSH2 0x23b3 000023aa: PUSH1 0x03 000023ac: DUP4 000023ad: ADD 000023ae: DUP3 000023af: PUSH2 0x23d6 000023b2: JUMP 000023b3: JUMPDEST 000023b4: POP 000023b5: PUSH1 0x04 000023b7: ADD 000023b8: PUSH2 0x238b 000023bb: JUMP 000023bc: JUMPDEST 000023bd: PUSH2 0x0b1b 000023c0: SWAP2 000023c1: SWAP1 000023c2: JUMPDEST 000023c3: DUP1 000023c4: DUP3 000023c5: GT 000023c6: ISZERO 000023c7: PUSH2 0x09e2 000023ca: JUMPI 000023cb: PUSH1 0x00 000023cd: DUP2 000023ce: SSTORE 000023cf: PUSH1 0x01 000023d1: ADD 000023d2: PUSH2 0x23c2 000023d5: JUMP 000023d6: JUMPDEST 000023d7: POP 000023d8: DUP1 000023d9: SLOAD 000023da: PUSH1 0x01 000023dc: DUP2 000023dd: PUSH1 0x01 000023df: AND 000023e0: ISZERO 000023e1: PUSH2 0x0100 000023e4: MUL 000023e5: SUB 000023e6: AND 000023e7: PUSH1 0x02 000023e9: SWAP1 000023ea: DIV 000023eb: PUSH1 0x00 000023ed: DUP3 000023ee: SSTORE 000023ef: DUP1 000023f0: PUSH1 0x1f 000023f2: LT 000023f3: PUSH2 0x23fc 000023f6: JUMPI 000023f7: POP 000023f8: PUSH2 0x0eb7 000023fb: JUMP 000023fc: JUMPDEST 000023fd: PUSH1 0x1f 000023ff: ADD 00002400: PUSH1 0x20 00002402: SWAP1 00002403: DIV 00002404: SWAP1 00002405: PUSH1 0x00 00002407: MSTORE 00002408: PUSH1 0x20 0000240a: PUSH1 0x00 0000240c: KECCAK256 0000240d: SWAP1 0000240e: DUP2 0000240f: ADD 00002410: SWAP1 00002411: PUSH2 0x0eb7 00002414: SWAP2 00002415: SWAP1 00002416: PUSH2 0x23bc 00002419: JUMP 0000241a: JUMPDEST 0000241b: PUSH1 0x00 0000241d: DUP1 0000241e: PUSH2 0x243a 00002421: PUSH20 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63 00002436: PUSH2 0x17db 00002439: JUMP 0000243a: JUMPDEST 0000243b: GT 0000243c: ISZERO 0000243d: PUSH2 0x2497 00002440: JUMPI 00002441: POP 00002442: PUSH20 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63 00002457: PUSH2 0x2492 0000245a: PUSH1 0x40 0000245c: DUP1 0000245d: MLOAD 0000245e: SWAP1 0000245f: DUP2 00002460: ADD 00002461: PUSH1 0x40 00002463: MSTORE 00002464: PUSH1 0x0b 00002466: DUP2 00002467: MSTORE 00002468: PUSH32 0x6574685f6d61696e6e6574000000000000000000000000000000000000000000 00002489: PUSH1 0x20 0000248b: DUP3 0000248c: ADD 0000248d: MSTORE 0000248e: PUSH2 0x252c 00002491: JUMP 00002492: JUMPDEST 00002493: PUSH2 0x0b1b 00002496: JUMP 00002497: JUMPDEST 00002498: PUSH1 0x00 0000249a: PUSH2 0x24b6 0000249d: PUSH20 0x11f3514e4605b14daa29eb17e785f8efb9a14aae 000024b2: PUSH2 0x17db 000024b5: JUMP 000024b6: JUMPDEST 000024b7: GT 000024b8: ISZERO 000024b9: PUSH2 0x250e 000024bc: JUMPI 000024bd: POP 000024be: PUSH20 0x11f3514e4605b14daa29eb17e785f8efb9a14aae 000024d3: PUSH2 0x2492 000024d6: PUSH1 0x40 000024d8: DUP1 000024d9: MLOAD 000024da: SWAP1 000024db: DUP2 000024dc: ADD 000024dd: PUSH1 0x40 000024df: MSTORE 000024e0: PUSH1 0x0c 000024e2: DUP2 000024e3: MSTORE 000024e4: PUSH32 0x6574685f726f707374656e330000000000000000000000000000000000000000 00002505: PUSH1 0x20 00002507: DUP3 00002508: ADD 00002509: MSTORE 0000250a: PUSH2 0x252c 0000250d: JUMP 0000250e: JUMPDEST 0000250f: PUSH2 0x2516 00002512: PUSH2 0x253f 00002515: JUMP 00002516: JUMPDEST 00002517: PUSH1 0x40 00002519: MLOAD 0000251a: DUP1 0000251b: SWAP2 0000251c: SUB 0000251d: SWAP1 0000251e: PUSH1 0x00 00002520: CREATE 00002521: DUP1 00002522: ISZERO 00002523: ISZERO 00002524: PUSH2 0x0d33 00002527: JUMPI 00002528: PUSH1 0x00 0000252a: DUP1 0000252b: REVERT 0000252c: JUMPDEST 0000252d: PUSH1 0x01 0000252f: DUP2 00002530: DUP1 00002531: MLOAD 00002532: PUSH2 0x0b0b 00002535: SWAP3 00002536: SWAP2 00002537: PUSH1 0x20 00002539: ADD 0000253a: SWAP1 0000253b: PUSH2 0x230b 0000253e: JUMP 0000253f: JUMPDEST 00002540: PUSH1 0x40 00002542: MLOAD 00002543: PUSH1 0xca 00002545: DUP1 00002546: PUSH2 0x254f 00002549: DUP4 0000254a: CODECOPY 0000254b: ADD 0000254c: SWAP1 0000254d: JUMP 0000254e: STOP 0000254f: PUSH1 0x60 00002551: PUSH1 0x40 00002553: MSTORE 00002554: CALLVALUE 00002555: ISZERO 00002556: PUSH2 0x000f 00002559: JUMPI 0000255a: PUSH1 0x00 0000255c: DUP1 0000255d: REVERT 0000255e: JUMPDEST 0000255f: PUSH1 0xad 00002561: DUP1 00002562: PUSH2 0x001d 00002565: PUSH1 0x00 00002567: CODECOPY 00002568: PUSH1 0x00 0000256a: RETURN 0000256b: STOP 0000256c: PUSH1 0x60 0000256e: PUSH1 0x40 00002570: MSTORE 00002571: PUSH1 0x04 00002573: CALLDATASIZE 00002574: LT 00002575: PUSH1 0x3e 00002577: JUMPI 00002578: PUSH4 0xffffffff 0000257d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000259b: PUSH1 0x00 0000259d: CALLDATALOAD 0000259e: DIV 0000259f: AND 000025a0: PUSH4 0x38cc4831 000025a5: DUP2 000025a6: EQ 000025a7: PUSH1 0x43 000025a9: JUMPI 000025aa: JUMPDEST 000025ab: PUSH1 0x00 000025ad: DUP1 000025ae: REVERT 000025af: JUMPDEST 000025b0: CALLVALUE 000025b1: ISZERO 000025b2: PUSH1 0x4d 000025b4: JUMPI 000025b5: PUSH1 0x00 000025b7: DUP1 000025b8: REVERT 000025b9: JUMPDEST 000025ba: PUSH1 0x53 000025bc: PUSH1 0x7c 000025be: JUMP 000025bf: JUMPDEST 000025c0: PUSH1 0x40 000025c2: MLOAD 000025c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025d8: SWAP1 000025d9: SWAP2 000025da: AND 000025db: DUP2 000025dc: MSTORE 000025dd: PUSH1 0x20 000025df: ADD 000025e0: PUSH1 0x40 000025e2: MLOAD 000025e3: DUP1 000025e4: SWAP2 000025e5: SUB 000025e6: SWAP1 000025e7: RETURN 000025e8: JUMPDEST 000025e9: PUSH1 0x00 000025eb: SWAP1 000025ec: JUMP 000025ed: STOP 000025ee: LOG1 000025ef: PUSH6 0x627a7a723058 000025f6: KECCAK256 000025f7: CODESIZE 000025f8: UNKNOWN(0xB2) 000025f9: SMOD 000025fa: DUP10 000025fb: SHL 000025fc: REVERT 000025fd: OR 000025fe: BYTE 000025ff: BLOBBASEFEE 00002600: PUSH7 0x64d634a0c385cc 00002608: NUMBER 00002609: SWAP11 0000260a: RETURN 0000260b: TIMESTAMP 0000260c: GT 0000260d: UNKNOWN(0xB9) 0000260e: UNKNOWN(0xCD) 0000260f: UNKNOWN(0xD2) 00002610: SWAP7 00002611: DUP7 00002612: BLOBHASH 00002613: UNKNOWN(0xC2) 00002614: UNKNOWN(0x2A) 00002615: MSTORE8 00002616: SUB 00002617: STOP 00002618: UNKNOWN(0x29) 00002619: LOG1 0000261a: PUSH6 0x627a7a723058 00002621: KECCAK256 00002622: BLOBBASEFEE 00002623: UNKNOWN(0xC8) 00002624: PUSH10 0x1669760068ff04cd2699 0000262f: UNKNOWN(0xC5) 00002630: ADD 00002631: MSIZE 00002632: UNKNOWN(0xC8) 00002633: UNKNOWN(0xAD) 00002634: AND 00002635: DUP5 00002636: UNKNOWN(0x25) 00002637: UNKNOWN(0xE2) 00002638: DUP1 00002639: PUSH22
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0x7b9b0dadf509a3b288a2ecb2ffe0511afb64c7151cbb05f4c0040b8a9b4ffa2d
call_targets:
0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18, 0x9f6e731911af889a2b520ebecacbe764c5d59255, 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x7b9b0dadf509a3b288a2ecb2ffe0511afb64c7151cbb05f4c0040b8a9b4ffa2d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18",
"0x9f6e731911af889a2b520ebecacbe764c5d59255",
"0xe4d58f4645df8b865dbf2dae788836aedbbd2f63"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x05427ea7",
"selector": "0x05427ea7",
"calldata_variants": [
"0x05427ea7",
"0x05427ea70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07d0d51e",
"selector": "0x07d0d51e",
"calldata_variants": [
"0x07d0d51e",
"0x07d0d51e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0d1fce42",
"selector": "0x0d1fce42",
"calldata_variants": [
"0x0d1fce42",
"0x0d1fce420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0e81c1f1",
"selector": "0x0e81c1f1",
"calldata_variants": [
"0x0e81c1f1",
"0x0e81c1f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0e959dd7",
"selector": "0x0e959dd7",
"calldata_variants": [
"0x0e959dd7",
"0x0e959dd70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0ee4c938",
"selector": "0x0ee4c938",
"calldata_variants": [
"0x0ee4c938",
"0x0ee4c9380000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x107bf28c",
"selector": "0x107bf28c",
"calldata_variants": [
"0x107bf28c",
"0x107bf28c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x11e330b2",
"selector": "0x11e330b2",
"calldata_variants": [
"0x11e330b2",
"0x11e330b20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2468,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2992,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3953,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 8,
"guards_detected": [],
"untrusted_call_count": 8
}
|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0x7b9b0dadf509a3b288a2ecb2ffe0511afb64c7151cbb05f4c0040b8a9b4ffa2d
call_targets:
0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18, 0x9f6e731911af889a2b520ebecacbe764c5d59255, 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x7b9b0dadf509a3b288a2ecb2ffe0511afb64c7151cbb05f4c0040b8a9b4ffa2d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18",
"0x9f6e731911af889a2b520ebecacbe764c5d59255",
"0xe4d58f4645df8b865dbf2dae788836aedbbd2f63"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x05427ea7",
"selector": "0x05427ea7",
"calldata_variants": [
"0x05427ea7",
"0x05427ea70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07d0d51e",
"selector": "0x07d0d51e",
"calldata_variants": [
"0x07d0d51e",
"0x07d0d51e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0d1fce42",
"selector": "0x0d1fce42",
"calldata_variants": [
"0x0d1fce42",
"0x0d1fce420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0e81c1f1",
"selector": "0x0e81c1f1",
"calldata_variants": [
"0x0e81c1f1",
"0x0e81c1f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0e959dd7",
"selector": "0x0e959dd7",
"calldata_variants": [
"0x0e959dd7",
"0x0e959dd70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0ee4c938",
"selector": "0x0ee4c938",
"calldata_variants": [
"0x0ee4c938",
"0x0ee4c9380000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x107bf28c",
"selector": "0x107bf28c",
"calldata_variants": [
"0x107bf28c",
"0x107bf28c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x11e330b2",
"selector": "0x11e330b2",
"calldata_variants": [
"0x11e330b2",
"0x11e330b20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2468,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2992,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3953,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 8,
"guards_detected": []
}
|
| medium | access_control | codex | Dynamic external CALLs with ETH value and untrusted targets | 75 | no | — |
viewevidence_json{
"evidence": "BYTECODE_BUNDLE.json detector_findings[0]/[1] confirm 8 CALLs with computed target/value; validation shows target_varies with call_targets including 0x5d1b26d762b1973b8b7c2bfb196ba2ed969daf18, 0x9f6e731911af889a2b520ebecacbe764c5d59255, 0xe4d58f4645df8b865dbf2dae788836aedbbd2f63 and ETH value nonzero; callsites list returndata_checked:null and guards_detected:[] for all calls.",
"locations": [
"pc:0x9a4",
"pc:0xbb0",
"pc:0xf71",
"pc:0x1065",
"pc:0x15cd",
"pc:0x203f",
"pc:0x20c7",
"pc:0x2185"
],
"recommendation": "Restrict these CALL paths to authorized roles or a strict allowlist, validate target/value bounds, and apply checks-effects-interactions or a reentrancy guard around external calls.",
"exploit_scenario": "If any public or weakly guarded path lets an attacker influence the CALL target/value (via calldata or mutable storage), they can direct the contract to call arbitrary contracts and transfer ETH. That can drain funds or enable reentrancy into state-changing paths. Guard detection is empty in the artifact, so protection cannot be confirmed from bytecode alone."
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x69aebb902b673d83cb9565cf39ff63eab81bc06f4e1410dc362a67380178a3ae
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x69aebb902b673d83cb9565cf39ff63eab81bc06f4e1410dc362a67380178a3ae",
"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": "0x05427ea7",
"selector": "0x05427ea7",
"calldata_variants": [
"0x05427ea7",
"0x05427ea70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07d0d51e",
"selector": "0x07d0d51e",
"calldata_variants": [
"0x07d0d51e",
"0x07d0d51e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0d1fce42",
"selector": "0x0d1fce42",
"calldata_variants": [
"0x0d1fce42",
"0x0d1fce420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0e81c1f1",
"selector": "0x0e81c1f1",
"calldata_variants": [
"0x0e81c1f1",
"0x0e81c1f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0e959dd7",
"selector": "0x0e959dd7",
"calldata_variants": [
"0x0e959dd7",
"0x0e959dd70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0ee4c938",
"selector": "0x0ee4c938",
"calldata_variants": [
"0x0ee4c938",
"0x0ee4c9380000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x107bf28c",
"selector": "0x107bf28c",
"calldata_variants": [
"0x107bf28c",
"0x107bf28c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x11e330b2",
"selector": "0x11e330b2",
"calldata_variants": [
"0x11e330b2",
"0x11e330b20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| low | other | codex | Low-level CALL return data not validated | 65 | no | — |
viewevidence_json{
"evidence": "callsites show returndata_checked:null for all CALLs at pcs 0x9a4/0xbb0/0xf71/0x1065/0x15cd/0x203f/0x20c7/0x2185; disassembly around these pcs shows CALL followed by success check and POPs without RETURNDATASIZE/RETURNDATACOPY usage.",
"locations": [
"pc:0x9a4",
"pc:0xbb0",
"pc:0xf71",
"pc:0x1065",
"pc:0x15cd",
"pc:0x203f",
"pc:0x20c7",
"pc:0x2185"
],
"recommendation": "Decode and validate returndata (e.g., require empty or true) or use safe call wrappers that enforce expected return semantics.",
"exploit_scenario": "If these CALLs interact with tokens or protocols that signal failure via return values instead of reverts, the contract may treat a failed operation as successful, causing accounting or state inconsistencies. This is especially risky for ERC20s that return false rather than reverting."
}
|
| low | other | codex | CREATE reachable (contract deployment capability) | 65 | no | — |
viewevidence_json{
"evidence": "detector_findings[2] reports create_count=1 and CREATE opcode is present at pc 0x2520 in runtime bytecode.",
"locations": [
"pc:0x2520"
],
"recommendation": "Restrict CREATE paths to privileged roles or one-time initialization, and validate/record deployed addresses explicitly.",
"exploit_scenario": "If an untrusted caller can reach this path, they could trigger contract creation repeatedly, potentially causing gas griefing or unexpected storage updates tied to deployment results. Access control for this path is unclear from bytecode alone."
}
|
| 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
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 12
}
|