TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

019c0eac-1141-73a4-bb86-3f06ad5c30a9

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 30, 2026 11:31 AM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Present
Best current signal
SELFDESTRUCT present
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
42467 artifact.fetch complete 1 / 3 2 months ago
42468 proxy.resolve complete 1 / 3 2 months ago
42469 tool.cast_disasm complete 1 / 3 2 months ago
42470 analysis.bundle complete 1 / 3 2 months ago
42471 capability.graph complete 1 / 3 2 months ago
42472 detector.run complete 1 / 3 2 months ago
42473 validation.fork complete 1 / 3 2 months ago
42507 report.consolidate complete 1 / 6 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: no
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
3
No findings?
no
Summary
Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.
View stdout
{"no_findings":false,"summary":"Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.","findings":[{"severity":"medium","category":"access_control","title":"Initializer appears publicly callable; critical storage can be set by anyone once","exploit_scenario":"If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed.","recommendation":"Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.","evidence":"Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.","locations":["selector:0xc4d66de8","pc:0x08cc","pc:0x0969","pc:0x0a15"]},{"severity":"low","category":"reentrancy","title":"Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface","exploit_scenario":"If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain.","recommendation":"Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.","evidence":"Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.","locations":["pc:0x0613","pc:0x0c85","pc:0x0f72"]},{"severity":"low","category":"other","title":"SELFDESTRUCT opcode present in runtime bytecode (appears unreachable)","exploit_scenario":"If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain.","recommendation":"Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.","evidence":"SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.","locations":["pc:0x1f75"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-pxdcqe3y
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0fd6-a913-7342-8608-e6e5bf9edb3c
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers

thinking
**Choosing file read method**

Deciding to read BYTECODE_BUNDLE.json using a simple shell command with cat for a straightforward and sandbox-safe file read.
exec
/bin/bash -lc ls in /tmp/codex-pxdcqe3y succeeded in 8ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-pxdcqe3y succeeded in 8ms:
{
  "analysis_artifact": {
    "address": "0x5018cc0d628fb322b2a040cfcd269a36c60b1538",
    "artifact_hash": "0x34f4107ed4c6e9c6513f97e9505ebdc3100fd27a870a227a5bc63f04ac0fa890",
    "artifact_json": {
      "auth": {
        "guards": [
          {
            "pc": 1138,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
          },
          {
            "pc": 1642,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
          },
          {
            "pc": 2818,
            "type": "msg_sender_eq_const",

thinking
**Analyzing detector findings**

Detected issues include untrusted call targets, possible ETH transfers, and reachable selfdestruct calls; call targets seem constant and may point to self-calls, with three relevant CALL instructions identified. I'll search for "selfdestruct" or its opcode in the evidence bundle to gather more context before assessing risks.
exec
/bin/bash -lc 'rg -n "SELFDESTRUCT|selfdestruct" BYTECODE_BUNDLE.json' in /tmp/codex-pxdcqe3y succeeded in 6ms:
8134:            "SELFDESTRUCT"
10421:            "selfdestruct": 1,
10491:            "selfdestruct": 1,
10561:            "selfdestruct": 1,
10631:            "selfdestruct": 1,
10701:            "selfdestruct": 1,
10771:            "selfdestruct": 1,
10841:            "selfdestruct": 1,
10911:            "selfdestruct": 1,
10981:            "selfdestruct": 1,
11051:            "selfdestruct": 1,
11121:            "selfdestruct": 1,
11185:        "selfdestruct": 1,
17500:        "selfdestruct_count": 1
17503:        "sink": "SELFDESTRUCT"
17506:      "title": "SELFDESTRUCT reachable",
17515:        "sink": "SELFDESTRUCT",
17527:      "selfdestruct_present"
17529:    "selfdestruct_count": 1

thinking
**Scanning for SELFDESTRUCT usage**

I'm checking around line 8134 to understand the context, expecting a basic block involving SELFDESTRUCT to clarify its role.
exec
/bin/bash -lc "sed -n '8100,8165p' BYTECODE_BUNDLE.json" in /tmp/codex-pxdcqe3y succeeded in 8ms:
        {
          "end_pc": 8037,
          "hash": "0xcc8de6ddc3dcba22c317ce845ec6683a3e0e40712645f00bb1418bc0369692ce",
          "opcodes": [
            "INVALID"
          ],
          "start_pc": 8037
        },
        {
          "end_pc": 8052,
          "hash": "0x1b6d50562338c343771d170c52c4a521bf2e2b3fcd221b199a60a334b42110bf",
          "opcodes": [
            "OP_A2",
            "PUSH5",
            "OP_22",
            "SLT",
            "SHA3",
            "OP_BF",
            "OP_95",
            "OP_9E",


thinking
**Analyzing opcode reachability and metadata**

The selfdestruct opcode appears in a bytecode region with invalid opcodes and possible appended metadata, suggesting it's likely unreachable or non-executable data. Callsite analysis shows self-calls via CALL (not DELEGATECALL) with constant targets matching the contract, which is unusual and may indicate reentrancy—this needs careful evidence-based validation to inform vulnerability reporting.
thinking
**Evaluating self-calls and guard heuristics**

CALLs targeting the contract itself likely pose low reentrancy risk since msg.sender resets internally, but the analysis shows conflicting target trust levels, warranting conservative low-risk reporting. Guard heuristics detecting impossible msg.sender constants suggest unreachable code or placeholders; no delegatecalls appear, so proxy patterns seem absent. The presence of SELFDESTRUCT in runtime bytecode lacks clear access control or reachability evidence, so it should be noted with low severity due to uncertainty. Further callsite and storage slot inspections are needed to clarify external call risks and potential admin controls.
exec
/bin/bash -lc 'rg -n "EIP-1967|eip1967|proxy|beacon|implementation" BYTECODE_BUNDLE.json' in /tmp/codex-pxdcqe3y succeeded in 6ms:
11253:        "link_type": "implementation",
11255:          "implementation": "0x5018cc0d628fb322b2a040cfcd269a36c60b1538",
11256:          "method": "beacon",
11257:          "onchain_method": "beacon",
11282:        "implementation": null,
11284:        "proxy": "0",
11289:      "proxy_evidence": {
11290:        "status": "not_proxy"
11293:    "implementation_address": null,
11294:    "is_proxy": false,

thinking
**Inspecting beacon use for link_type**

I'm investigating the implementation of link_type by examining the code around line 11240 to confirm if it uses beacon for this feature.
exec
/bin/bash -lc "sed -n '11230,11310p' BYTECODE_BUNDLE.json" in /tmp/codex-pxdcqe3y succeeded in 7ms:
      },
      "version": "analysis_artifact_v1"
    },
    "block_number": null,
    "chain_id": 1,
    "codehash": "0x029d5286de44f8aa9f7c5681998a4cc731020d1dff70032159ad43326ceeaccf",
    "created_at": "2026-01-10T03:36:48.000000Z",
    "id": 37,
    "updated_at": "2026-01-30T15:40:16.000000Z",
    "version": "analysis_artifact_v1"
  },
  "analysis_run": {
    "address": "0x5018cc0d628fb322b2a040cfcd269a36c60b1538",
    "block_number": null,
    "chain_id": 1,
    "child_links": [],
    "created_at": "2026-01-30T11:31:23.000000Z",
    "id": "019c0eac-1141-73a4-bb86-3f06ad5c30a9",
    "parent_links": [
      {


thinking
**Analyzing runtime bytecode for insights**

The runtime bytecode includes detailed function logic, reverts, error strings, and ERC721-related features plus ETH and ERC20 transfer handling. I'll inspect callsites and disassemble parts of the runtime bytecode to understand call patterns and identify key behaviors or issues.
thinking
**Mapping function selectors to behaviors**

I've identified key function selectors like owner, supportsInterface, and ERC721 hooks, tied to storage slot 2 as owner or token address. External calls include ERC721 ownerOf and ERC20 transferFrom, plus ETH transfers using low-level call with value and revert strings like "Failed to send Ether." I'll parse callsites in basic blocks by mapping call PCs to functions to reconstruct critical flows and check for potential reentrancy or authorization issues.
exec
/bin/bash -lc "python - <<'PY'
import json
import sys
from pathlib import Path
p=Path('BYTECODE_BUNDLE.json')
with p.open() as f:
    data=json.load(f)

bbs=data['analysis_artifact']['artifact_json'].get('basic_blocks',[])
pcs=[1555,3205,3954,8053]
for pc in pcs:
    # find block containing pc
    found=[b for b in bbs if b.get('start_pc') is not None and b.get('end_pc') is not None and b['start_pc']<=pc<=b['end_pc']]
    print('pc',pc,'blocks',len(found))
    for b in found[:3]:
        print(' start',b['start_pc'],'end',b['end_pc'],'opcodes',b.get('opcodes'))
PY" in /tmp/codex-pxdcqe3y succeeded in 47ms:
pc 1555 blocks 1
 start 1552 end 1562 opcodes ['JUMPDEST', 'POP', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
pc 3205 blocks 1
 start 3192 end 3219 opcodes ['JUMPDEST', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
pc 3954 blocks 1
 start 3941 end 3968 opcodes ['JUMPDEST', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
pc 8053 blocks 1
 start 8053 end 8058 opcodes ['OP_BB', 'PC', 'RETURNDATASIZE', 'OP_9D', 'OP_A7', 'SELFDESTRUCT']


thinking
**Planning disassembler for runtime bytecode**

I'm deciding to implement a simple disassembler to parse runtime bytecode hex into opcodes with program counters to better analyze callsites and surrounding instructions, since existing function entry data seems unreliable or hashed. This will help locate function boundaries and call targets.
thinking
**Implementing simple EVM disassembler**

I'm creating a Python opcode map to decode the full runtime bytecode into instructions with program counters, focusing on printing code around the call at pc 1555 to understand call targets by inspecting preceding pushes.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path

# simple opcode map
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
# names
for i in range(0x00,0x10):
    opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]

opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})

# read bytecode
with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
    hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)

# disassemble to list of (pc, op, imm)
ins=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02X}')
    imm=None
    pc0=pc
    pc+=1
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc:pc+n]
        pc+=n
    ins.append((pc0,name,imm))

# helper to print around a pc
pcs=[1555,3205,3954]
for target in pcs:
    # find index where pc==target
    idx=None
    for i,(pc0,name,imm) in enumerate(ins):
        if pc0==target:
            idx=i;break
    print('\\n-- around pc',target,'--')
    if idx is None:
        print('not found');
        continue
    for j in range(max(0,idx-10), min(len(ins), idx+15)):
        pc0,name,imm=ins[j]
        if imm is not None:
            imm_hex='0x'+imm.hex()
            print(f'{pc0:04x}: {name} {imm_hex}')
        else:
            print(f'{pc0:04x}: {name}')

PY" in /tmp/codex-pxdcqe3y succeeded in 40ms:

-- around pc 1555 --
0606: DUP1
0607: ISZERO
0608: PUSH2 0x0610
060b: JUMPI
060c: PUSH1 0x00
060e: DUP1
060f: REVERT
0610: JUMPDEST
0611: POP
0612: GAS
0613: CALL
0614: ISZERO
0615: DUP1
0616: ISZERO
0617: PUSH2 0x0624
061a: JUMPI
061b: RETURNDATASIZE
061c: PUSH1 0x00

thinking
**Extending context around callsite**

I'm checking about 30 instructions before pc 1555 to capture relevant pushes and better identify the target and value for the low-level call with value.
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
# disassemble same as before
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
for i in range(0x00,0x10):
    opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]

opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
    hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)

ins=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02X}')
    imm=None
    pc0=pc
    pc+=1
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc:pc+n]
        pc+=n
    ins.append((pc0,name,imm))

# build index
index={pc:i for i,(pc,_,_) in enumerate(ins)}

def dump(target, before=40, after=40):
    idx=index.get(target)
    print('\\n-- pc',target,'--')
    if idx is None:
        print('not found')
        return
    for j in range(max(0,idx-before), min(len(ins), idx+after)):
        pc0,name,imm=ins[j]
        if imm is not None:
            print(f'{pc0:04x}: {name} 0x{imm.hex()}')
        else:
            print(f'{pc0:04x}: {name}')

for t in [1555,3205,3954]:
    dump(t)
PY" in /tmp/codex-pxdcqe3y succeeded in 61ms:

-- pc 1555 --
05db: MLOAD
05dc: DUP5
05dd: PUSH4 0xffffffff
05e2: AND
05e3: PUSH1 0xe0
05e5: SHL
05e6: DUP2
05e7: MSTORE
05e8: PUSH1 0x04
05ea: ADD
05eb: PUSH2 0x05f6
05ee: SWAP4
05ef: SWAP3
05f0: SWAP2
05f1: SWAP1
05f2: PUSH2 0x194e
05f5: JUMP
05f6: JUMPDEST



thinking
**Analyzing CALL instruction patterns**

CALL usage involves EXTCODESIZE checks to ensure the target is a contract, with stack setups matching Address.functionCall styles calling non-view functions, often building calldata via jumps before the CALL, implying wrappers managing call targets and values.
thinking
**Highlighting external calls with value and unreachable selfdestruct**

External CALLs with ETH value appear guarded by an owner check, reducing risk though reentrancy can’t be fully excluded; a SELFDESTRUCT opcode exists but is unreachable in execution, so no active threat is evident.
thinking
**Noting public initializer without sender restrictions**

The contract includes a public initializer guarded only by an initialization flag, allowing anyone to set ownership if uninitialized—typical in upgradeable patterns but risky if deployed directly without proper initialization.
exec
/bin/bash -lc "python - <<'PY'
import json
# disassemble similar as before
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
for i in range(0x00,0x10):
    opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]

opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
    hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)

ins=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02X}')
    imm=None
    pc0=pc
    pc+=1
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc:pc+n]
        pc+=n
    ins.append((pc0,name,imm))

# find sstore locations
sstore_pcs=[pc for pc,name,imm in ins if name=='SSTORE']
print('SSTORE pcs',sstore_pcs)

# dump around first few sstores
for pc in sstore_pcs[:5]:
    print('\\n-- around sstore',pc,'--')
    # find index
    idx=next(i for i,(p,_,_) in enumerate(ins) if p==pc)
    for j in range(max(0,idx-20), min(len(ins), idx+10)):
        p,name,imm=ins[j]
        if imm is not None:
            print(f'{p:04x}: {name} 0x{imm.hex()}')
        else:
            print(f'{p:04x}: {name}')
PY" in /tmp/codex-pxdcqe3y succeeded in 48ms:
SSTORE pcs [2435, 2468, 2645, 2677]

-- around sstore 2435 --
0969: JUMPDEST
096a: PUSH1 0x01
096c: PUSH1 0x00
096e: DUP1
096f: PUSH2 0x0100
0972: EXP
0973: DUP2
0974: SLOAD
0975: DUP2
0976: PUSH1 0xff
0978: MUL
0979: NOT
097a: AND
097b: SWAP1
097c: DUP4
097d: PUSH1 0xff
097f: AND

thinking
**Investigating storage writes and access control**

SSTORE instructions indicate setting initialization booleans and owner address without immediate access control; next step is dumping earlier bytecode near pc 0x08d0 to look for caller restrictions.
exec
/bin/bash -lc "python - <<'PY'
import json
# disassemble
opcodes = {i: f'OP_{i:02X}' for i in range(256)}
for i in range(0x00,0x10):
    opcodes[i]=['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND','OP_0C','OP_0D','OP_0E','OP_0F'][i]

opcodes.update({
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
})

with open('BYTECODE_BUNDLE.json') as f:
    data=json.load(f)
hexcode=data['artifact']['runtime_bytecode']['full']
if hexcode.startswith('0x'):
    hexcode=hexcode[2:]
code=bytes.fromhex(hexcode)

ins=[]
pc=0
while pc < len(code):
    op=code[pc]
    name=opcodes.get(op,f'OP_{op:02X}')
    imm=None
    pc0=pc
    pc+=1
    if 0x60 <= op <= 0x7f:
        n=op-0x5f
        imm=code[pc:pc+n]
        pc+=n
    ins.append((pc0,name,imm))

# dump around 0x0900
start=0x08b0
end=0x0ab0
for pc0,name,imm in ins:
    if start <= pc0 <= end:
        if imm is not None:
            print(f'{pc0:04x}: {name} 0x{imm.hex()}')
        else:
            print(f'{pc0:04x}: {name}')
PY" in /tmp/codex-pxdcqe3y succeeded in 42ms:
08b4: AND
08b5: DUP2
08b6: JUMP
08b7: JUMPDEST
08b8: PUSH1 0x00
08ba: PUSH4 0xbc197c81
08bf: PUSH1 0xe0
08c1: SHL
08c2: SWAP1
08c3: POP
08c4: SWAP6
08c5: SWAP5
08c6: POP
08c7: POP
08c8: POP
08c9: POP
08ca: POP
08cb: JUMP
08cc: JUMPDEST
08cd: PUSH1 0x00


thinking
**Analyzing initializer security risks**

I confirmed the initializer allows any account to call it once if not initialized, posing a risk if the implementation contract is left uninitialized—this could let third parties claim ownership or selfdestruct it. The proxy pattern mitigates direct risk since storage is separate, but uninitialized implementation contracts remain vulnerable. The use of `Address.isContract` in the initializer could allow reinitialization during construction, raising subtle concerns.
thinking
**Confirming public initializer risks with detailed evidence**

I mapped the initializer to selector 0xc4d66de8 at pc 0x08cc confirming it’s publicly callable without caller checks, allowing ownership or config to be set once if uninitialized. This supports delivering a medium-severity access control finding with precise evidence locations.
codex
{"no_findings":false,"summary":"Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.","findings":[{"severity":"medium","category":"access_control","title":"Initializer appears publicly callable; critical storage can be set by anyone once","exploit_scenario":"If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed.","recommendation":"Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.","evidence":"Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.","locations":["selector:0xc4d66de8","pc:0x08cc","pc:0x0969","pc:0x0a15"]},{"severity":"low","category":"reentrancy","title":"Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface","exploit_scenario":"If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain.","recommendation":"Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.","evidence":"Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.","locations":["pc:0x0613","pc:0x0c85","pc:0x0f72"]},{"severity":"low","category":"other","title":"SELFDESTRUCT opcode present in runtime bytecode (appears unreachable)","exploit_scenario":"If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain.","recommendation":"Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.","evidence":"SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.","locations":["pc:0x1f75"]}]}
tokens used
64,485
Metadata
{
    "codex": {
        "ran_at": "2026-01-30T17:04:22.015660+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 16184,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.",
    "raw_final": {
        "summary": "Bytecode shows a public initializer pattern that can set critical storage once, multiple low-level CALLs with computed targets/value (potentially reentrancy/untrusted-call risk if user-controlled), and a SELFDESTRUCT opcode that appears in an unreachable region.",
        "findings": [
            {
                "title": "Initializer appears publicly callable; critical storage can be set by anyone once",
                "category": "access_control",
                "evidence": "Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.",
                "severity": "medium",
                "locations": [
                    "selector:0xc4d66de8",
                    "pc:0x08cc",
                    "pc:0x0969",
                    "pc:0x0a15"
                ],
                "recommendation": "Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.",
                "exploit_scenario": "If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed."
            },
            {
                "title": "Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface",
                "category": "reentrancy",
                "evidence": "Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.",
                "severity": "low",
                "locations": [
                    "pc:0x0613",
                    "pc:0x0c85",
                    "pc:0x0f72"
                ],
                "recommendation": "Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.",
                "exploit_scenario": "If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain."
            },
            {
                "title": "SELFDESTRUCT opcode present in runtime bytecode (appears unreachable)",
                "category": "other",
                "evidence": "SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.",
                "severity": "low",
                "locations": [
                    "pc:0x1f75"
                ],
                "recommendation": "Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.",
                "exploit_scenario": "If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
8
EXT*/BALANCE
3
Total opcodes
4486
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00aa
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x71629b97
00000019: GT
0000001a: PUSH2 0x0064
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x71629b97
00000024: EQ
00000025: PUSH2 0x01fb
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x8da5cb5b
0000002f: EQ
00000030: PUSH2 0x0238
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xbc197c81
0000003a: EQ
0000003b: PUSH2 0x0263
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xc4d66de8
00000045: EQ
00000046: PUSH2 0x02a0
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf23a6e61
00000050: EQ
00000051: PUSH2 0x02bc
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf3fef3a3
0000005b: EQ
0000005c: PUSH2 0x02f9
0000005f: JUMPI
00000060: PUSH2 0x00b1
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH3 0x95b910
0000006a: EQ
0000006b: PUSH2 0x00b3
0000006e: JUMPI
0000006f: DUP1
00000070: PUSH4 0x01ffc9a7
00000075: EQ
00000076: PUSH2 0x00f0
00000079: JUMPI
0000007a: DUP1
0000007b: PUSH4 0x150b7a02
00000080: EQ
00000081: PUSH2 0x012d
00000084: JUMPI
00000085: DUP1
00000086: PUSH4 0x4025feb2
0000008b: EQ
0000008c: PUSH2 0x016a
0000008f: JUMPI
00000090: DUP1
00000091: PUSH4 0x44004cc1
00000096: EQ
00000097: PUSH2 0x0193
0000009a: JUMPI
0000009b: DUP1
0000009c: PUSH4 0x6f9fb98a
000000a1: EQ
000000a2: PUSH2 0x01d0
000000a5: JUMPI
000000a6: PUSH2 0x00b1
000000a9: JUMP
000000aa: JUMPDEST
000000ab: CALLDATASIZE
000000ac: PUSH2 0x00b1
000000af: JUMPI
000000b0: STOP
000000b1: JUMPDEST
000000b2: STOP
000000b3: JUMPDEST
000000b4: CALLVALUE
000000b5: DUP1
000000b6: ISZERO
000000b7: PUSH2 0x00bf
000000ba: JUMPI
000000bb: PUSH1 0x00
000000bd: DUP1
000000be: REVERT
000000bf: JUMPDEST
000000c0: POP
000000c1: PUSH2 0x00da
000000c4: PUSH1 0x04
000000c6: DUP1
000000c7: CALLDATASIZE
000000c8: SUB
000000c9: DUP2
000000ca: ADD
000000cb: SWAP1
000000cc: PUSH2 0x00d5
000000cf: SWAP2
000000d0: SWAP1
000000d1: PUSH2 0x111e
000000d4: JUMP
000000d5: JUMPDEST
000000d6: PUSH2 0x0322
000000d9: JUMP
000000da: JUMPDEST
000000db: PUSH1 0x40
000000dd: MLOAD
000000de: PUSH2 0x00e7
000000e1: SWAP2
000000e2: SWAP1
000000e3: PUSH2 0x1164
000000e6: JUMP
000000e7: JUMPDEST
000000e8: PUSH1 0x40
000000ea: MLOAD
000000eb: DUP1
000000ec: SWAP2
000000ed: SUB
000000ee: SWAP1
000000ef: RETURN
000000f0: JUMPDEST
000000f1: CALLVALUE
000000f2: DUP1
000000f3: ISZERO
000000f4: PUSH2 0x00fc
000000f7: JUMPI
000000f8: PUSH1 0x00
000000fa: DUP1
000000fb: REVERT
000000fc: JUMPDEST
000000fd: POP
000000fe: PUSH2 0x0117
00000101: PUSH1 0x04
00000103: DUP1
00000104: CALLDATASIZE
00000105: SUB
00000106: DUP2
00000107: ADD
00000108: SWAP1
00000109: PUSH2 0x0112
0000010c: SWAP2
0000010d: SWAP1
0000010e: PUSH2 0x11d7
00000111: JUMP
00000112: JUMPDEST
00000113: PUSH2 0x03aa
00000116: JUMP
00000117: JUMPDEST
00000118: PUSH1 0x40
0000011a: MLOAD
0000011b: PUSH2 0x0124
0000011e: SWAP2
0000011f: SWAP1
00000120: PUSH2 0x121f
00000123: JUMP
00000124: JUMPDEST
00000125: PUSH1 0x40
00000127: MLOAD
00000128: DUP1
00000129: SWAP2
0000012a: SUB
0000012b: SWAP1
0000012c: RETURN
0000012d: JUMPDEST
0000012e: CALLVALUE
0000012f: DUP1
00000130: ISZERO
00000131: PUSH2 0x0139
00000134: JUMPI
00000135: PUSH1 0x00
00000137: DUP1
00000138: REVERT
00000139: JUMPDEST
0000013a: POP
0000013b: PUSH2 0x0154
0000013e: PUSH1 0x04
00000140: DUP1
00000141: CALLDATASIZE
00000142: SUB
00000143: DUP2
00000144: ADD
00000145: SWAP1
00000146: PUSH2 0x014f
00000149: SWAP2
0000014a: SWAP1
0000014b: PUSH2 0x13ac
0000014e: JUMP
0000014f: JUMPDEST
00000150: PUSH2 0x0424
00000153: JUMP
00000154: JUMPDEST
00000155: PUSH1 0x40
00000157: MLOAD
00000158: PUSH2 0x0161
0000015b: SWAP2
0000015c: SWAP1
0000015d: PUSH2 0x143e
00000160: JUMP
00000161: JUMPDEST
00000162: PUSH1 0x40
00000164: MLOAD
00000165: DUP1
00000166: SWAP2
00000167: SUB
00000168: SWAP1
00000169: RETURN
0000016a: JUMPDEST
0000016b: CALLVALUE
0000016c: DUP1
0000016d: ISZERO
0000016e: PUSH2 0x0176
00000171: JUMPI
00000172: PUSH1 0x00
00000174: DUP1
00000175: REVERT
00000176: JUMPDEST
00000177: POP
00000178: PUSH2 0x0191
0000017b: PUSH1 0x04
0000017d: DUP1
0000017e: CALLDATASIZE
0000017f: SUB
00000180: DUP2
00000181: ADD
00000182: SWAP1
00000183: PUSH2 0x018c
00000186: SWAP2
00000187: SWAP1
00000188: PUSH2 0x1497
0000018b: JUMP
0000018c: JUMPDEST
0000018d: PUSH2 0x0438
00000190: JUMP
00000191: JUMPDEST
00000192: STOP
00000193: JUMPDEST
00000194: CALLVALUE
00000195: DUP1
00000196: ISZERO
00000197: PUSH2 0x019f
0000019a: JUMPI
0000019b: PUSH1 0x00
0000019d: DUP1
0000019e: REVERT
0000019f: JUMPDEST
000001a0: POP
000001a1: PUSH2 0x01ba
000001a4: PUSH1 0x04
000001a6: DUP1
000001a7: CALLDATASIZE
000001a8: SUB
000001a9: DUP2
000001aa: ADD
000001ab: SWAP1
000001ac: PUSH2 0x01b5
000001af: SWAP2
000001b0: SWAP1
000001b1: PUSH2 0x1497
000001b4: JUMP
000001b5: JUMPDEST
000001b6: PUSH2 0x062f
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH1 0x40
000001bd: MLOAD
000001be: PUSH2 0x01c7
000001c1: SWAP2
000001c2: SWAP1
000001c3: PUSH2 0x121f
000001c6: JUMP
000001c7: JUMPDEST
000001c8: PUSH1 0x40
000001ca: MLOAD
000001cb: DUP1
000001cc: SWAP2
000001cd: SUB
000001ce: SWAP1
000001cf: RETURN
000001d0: JUMPDEST
000001d1: CALLVALUE
000001d2: DUP1
000001d3: ISZERO
000001d4: PUSH2 0x01dc
000001d7: JUMPI
000001d8: PUSH1 0x00
000001da: DUP1
000001db: REVERT
000001dc: JUMPDEST
000001dd: POP
000001de: PUSH2 0x01e5
000001e1: PUSH2 0x0801
000001e4: JUMP
000001e5: JUMPDEST
000001e6: PUSH1 0x40
000001e8: MLOAD
000001e9: PUSH2 0x01f2
000001ec: SWAP2
000001ed: SWAP1
000001ee: PUSH2 0x1164
000001f1: JUMP
000001f2: JUMPDEST
000001f3: PUSH1 0x40
000001f5: MLOAD
000001f6: DUP1
000001f7: SWAP2
000001f8: SUB
000001f9: SWAP1
000001fa: RETURN
000001fb: JUMPDEST
000001fc: CALLVALUE
000001fd: DUP1
000001fe: ISZERO
000001ff: PUSH2 0x0207
00000202: JUMPI
00000203: PUSH1 0x00
00000205: DUP1
00000206: REVERT
00000207: JUMPDEST
00000208: POP
00000209: PUSH2 0x0222
0000020c: PUSH1 0x04
0000020e: DUP1
0000020f: CALLDATASIZE
00000210: SUB
00000211: DUP2
00000212: ADD
00000213: SWAP1
00000214: PUSH2 0x021d
00000217: SWAP2
00000218: SWAP1
00000219: PUSH2 0x111e
0000021c: JUMP
0000021d: JUMPDEST
0000021e: PUSH2 0x0809
00000221: JUMP
00000222: JUMPDEST
00000223: PUSH1 0x40
00000225: MLOAD
00000226: PUSH2 0x022f
00000229: SWAP2
0000022a: SWAP1
0000022b: PUSH2 0x1164
0000022e: JUMP
0000022f: JUMPDEST
00000230: PUSH1 0x40
00000232: MLOAD
00000233: DUP1
00000234: SWAP2
00000235: SUB
00000236: SWAP1
00000237: RETURN
00000238: JUMPDEST
00000239: CALLVALUE
0000023a: DUP1
0000023b: ISZERO
0000023c: PUSH2 0x0244
0000023f: JUMPI
00000240: PUSH1 0x00
00000242: DUP1
00000243: REVERT
00000244: JUMPDEST
00000245: POP
00000246: PUSH2 0x024d
00000249: PUSH2 0x0891
0000024c: JUMP
0000024d: JUMPDEST
0000024e: PUSH1 0x40
00000250: MLOAD
00000251: PUSH2 0x025a
00000254: SWAP2
00000255: SWAP1
00000256: PUSH2 0x14f9
00000259: JUMP
0000025a: JUMPDEST
0000025b: PUSH1 0x40
0000025d: MLOAD
0000025e: DUP1
0000025f: SWAP2
00000260: SUB
00000261: SWAP1
00000262: RETURN
00000263: JUMPDEST
00000264: CALLVALUE
00000265: DUP1
00000266: ISZERO
00000267: PUSH2 0x026f
0000026a: JUMPI
0000026b: PUSH1 0x00
0000026d: DUP1
0000026e: REVERT
0000026f: JUMPDEST
00000270: POP
00000271: PUSH2 0x028a
00000274: PUSH1 0x04
00000276: DUP1
00000277: CALLDATASIZE
00000278: SUB
00000279: DUP2
0000027a: ADD
0000027b: SWAP1
0000027c: PUSH2 0x0285
0000027f: SWAP2
00000280: SWAP1
00000281: PUSH2 0x15dc
00000284: JUMP
00000285: JUMPDEST
00000286: PUSH2 0x08b7
00000289: JUMP
0000028a: JUMPDEST
0000028b: PUSH1 0x40
0000028d: MLOAD
0000028e: PUSH2 0x0297
00000291: SWAP2
00000292: SWAP1
00000293: PUSH2 0x143e
00000296: JUMP
00000297: JUMPDEST
00000298: PUSH1 0x40
0000029a: MLOAD
0000029b: DUP1
0000029c: SWAP2
0000029d: SUB
0000029e: SWAP1
0000029f: RETURN
000002a0: JUMPDEST
000002a1: PUSH2 0x02ba
000002a4: PUSH1 0x04
000002a6: DUP1
000002a7: CALLDATASIZE
000002a8: SUB
000002a9: DUP2
000002aa: ADD
000002ab: SWAP1
000002ac: PUSH2 0x02b5
000002af: SWAP2
000002b0: SWAP1
000002b1: PUSH2 0x111e
000002b4: JUMP
000002b5: JUMPDEST
000002b6: PUSH2 0x08cc
000002b9: JUMP
000002ba: JUMPDEST
000002bb: STOP
000002bc: JUMPDEST
000002bd: CALLVALUE
000002be: DUP1
000002bf: ISZERO
000002c0: PUSH2 0x02c8
000002c3: JUMPI
000002c4: PUSH1 0x00
000002c6: DUP1
000002c7: REVERT
000002c8: JUMPDEST
000002c9: POP
000002ca: PUSH2 0x02e3
000002cd: PUSH1 0x04
000002cf: DUP1
000002d0: CALLDATASIZE
000002d1: SUB
000002d2: DUP2
000002d3: ADD
000002d4: SWAP1
000002d5: PUSH2 0x02de
000002d8: SWAP2
000002d9: SWAP1
000002da: PUSH2 0x16ab
000002dd: JUMP
000002de: JUMPDEST
000002df: PUSH2 0x0ab3
000002e2: JUMP
000002e3: JUMPDEST
000002e4: PUSH1 0x40
000002e6: MLOAD
000002e7: PUSH2 0x02f0
000002ea: SWAP2
000002eb: SWAP1
000002ec: PUSH2 0x143e
000002ef: JUMP
000002f0: JUMPDEST
000002f1: PUSH1 0x40
000002f3: MLOAD
000002f4: DUP1
000002f5: SWAP2
000002f6: SUB
000002f7: SWAP1
000002f8: RETURN
000002f9: JUMPDEST
000002fa: CALLVALUE
000002fb: DUP1
000002fc: ISZERO
000002fd: PUSH2 0x0305
00000300: JUMPI
00000301: PUSH1 0x00
00000303: DUP1
00000304: REVERT
00000305: JUMPDEST
00000306: POP
00000307: PUSH2 0x0320
0000030a: PUSH1 0x04
0000030c: DUP1
0000030d: CALLDATASIZE
0000030e: SUB
0000030f: DUP2
00000310: ADD
00000311: SWAP1
00000312: PUSH2 0x031b
00000315: SWAP2
00000316: SWAP1
00000317: PUSH2 0x1742
0000031a: JUMP
0000031b: JUMPDEST
0000031c: PUSH2 0x0ac8
0000031f: JUMP
00000320: JUMPDEST
00000321: STOP
00000322: JUMPDEST
00000323: PUSH1 0x00
00000325: DUP1
00000326: DUP3
00000327: SWAP1
00000328: POP
00000329: DUP1
0000032a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000033f: AND
00000340: PUSH4 0x70a08231
00000345: ADDRESS
00000346: PUSH1 0x40
00000348: MLOAD
00000349: DUP3
0000034a: PUSH4 0xffffffff
0000034f: AND
00000350: PUSH1 0xe0
00000352: SHL
00000353: DUP2
00000354: MSTORE
00000355: PUSH1 0x04
00000357: ADD
00000358: PUSH2 0x0361
0000035b: SWAP2
0000035c: SWAP1
0000035d: PUSH2 0x14f9
00000360: JUMP
00000361: JUMPDEST
00000362: PUSH1 0x20
00000364: PUSH1 0x40
00000366: MLOAD
00000367: DUP1
00000368: DUP4
00000369: SUB
0000036a: DUP2
0000036b: DUP7
0000036c: GAS
0000036d: STATICCALL
0000036e: ISZERO
0000036f: DUP1
00000370: ISZERO
00000371: PUSH2 0x037e
00000374: JUMPI
00000375: RETURNDATASIZE
00000376: PUSH1 0x00
00000378: DUP1
00000379: RETURNDATACOPY
0000037a: RETURNDATASIZE
0000037b: PUSH1 0x00
0000037d: REVERT
0000037e: JUMPDEST
0000037f: POP
00000380: POP
00000381: POP
00000382: POP
00000383: PUSH1 0x40
00000385: MLOAD
00000386: RETURNDATASIZE
00000387: PUSH1 0x1f
00000389: NOT
0000038a: PUSH1 0x1f
0000038c: DUP3
0000038d: ADD
0000038e: AND
0000038f: DUP3
00000390: ADD
00000391: DUP1
00000392: PUSH1 0x40
00000394: MSTORE
00000395: POP
00000396: DUP2
00000397: ADD
00000398: SWAP1
00000399: PUSH2 0x03a2
0000039c: SWAP2
0000039d: SWAP1
0000039e: PUSH2 0x1797
000003a1: JUMP
000003a2: JUMPDEST
000003a3: SWAP2
000003a4: POP
000003a5: POP
000003a6: SWAP2
000003a7: SWAP1
000003a8: POP
000003a9: JUMP
000003aa: JUMPDEST
000003ab: PUSH1 0x00
000003ad: PUSH32 0x4e2312e000000000000000000000000000000000000000000000000000000000
000003ce: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000003eb: NOT
000003ec: AND
000003ed: DUP3
000003ee: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000040b: NOT
0000040c: AND
0000040d: EQ
0000040e: DUP1
0000040f: PUSH2 0x041d
00000412: JUMPI
00000413: POP
00000414: PUSH2 0x041c
00000417: DUP3
00000418: PUSH2 0x0d04
0000041b: JUMP
0000041c: JUMPDEST
0000041d: JUMPDEST
0000041e: SWAP1
0000041f: POP
00000420: SWAP2
00000421: SWAP1
00000422: POP
00000423: JUMP
00000424: JUMPDEST
00000425: PUSH1 0x00
00000427: PUSH4 0x150b7a02
0000042c: PUSH1 0xe0
0000042e: SHL
0000042f: SWAP1
00000430: POP
00000431: SWAP5
00000432: SWAP4
00000433: POP
00000434: POP
00000435: POP
00000436: POP
00000437: JUMP
00000438: JUMPDEST
00000439: PUSH1 0x00
0000043b: PUSH1 0x02
0000043d: SWAP1
0000043e: SLOAD
0000043f: SWAP1
00000440: PUSH2 0x0100
00000443: EXP
00000444: SWAP1
00000445: DIV
00000446: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000045b: AND
0000045c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000471: AND
00000472: CALLER
00000473: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000488: AND
00000489: EQ
0000048a: PUSH2 0x04c8
0000048d: JUMPI
0000048e: PUSH1 0x40
00000490: MLOAD
00000491: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000004b2: DUP2
000004b3: MSTORE
000004b4: PUSH1 0x04
000004b6: ADD
000004b7: PUSH2 0x04bf
000004ba: SWAP1
000004bb: PUSH2 0x1821
000004be: JUMP
000004bf: JUMPDEST
000004c0: PUSH1 0x40
000004c2: MLOAD
000004c3: DUP1
000004c4: SWAP2
000004c5: SUB
000004c6: SWAP1
000004c7: REVERT
000004c8: JUMPDEST
000004c9: PUSH1 0x00
000004cb: DUP3
000004cc: SWAP1
000004cd: POP
000004ce: PUSH1 0x00
000004d0: DUP2
000004d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004e6: AND
000004e7: PUSH4 0x6352211e
000004ec: DUP5
000004ed: PUSH1 0x40
000004ef: MLOAD
000004f0: DUP3
000004f1: PUSH4 0xffffffff
000004f6: AND
000004f7: PUSH1 0xe0
000004f9: SHL
000004fa: DUP2
000004fb: MSTORE
000004fc: PUSH1 0x04
000004fe: ADD
000004ff: PUSH2 0x0508
00000502: SWAP2
00000503: SWAP1
00000504: PUSH2 0x1164
00000507: JUMP
00000508: JUMPDEST
00000509: PUSH1 0x20
0000050b: PUSH1 0x40
0000050d: MLOAD
0000050e: DUP1
0000050f: DUP4
00000510: SUB
00000511: DUP2
00000512: DUP7
00000513: GAS
00000514: STATICCALL
00000515: ISZERO
00000516: DUP1
00000517: ISZERO
00000518: PUSH2 0x0525
0000051b: JUMPI
0000051c: RETURNDATASIZE
0000051d: PUSH1 0x00
0000051f: DUP1
00000520: RETURNDATACOPY
00000521: RETURNDATASIZE
00000522: PUSH1 0x00
00000524: REVERT
00000525: JUMPDEST
00000526: POP
00000527: POP
00000528: POP
00000529: POP
0000052a: PUSH1 0x40
0000052c: MLOAD
0000052d: RETURNDATASIZE
0000052e: PUSH1 0x1f
00000530: NOT
00000531: PUSH1 0x1f
00000533: DUP3
00000534: ADD
00000535: AND
00000536: DUP3
00000537: ADD
00000538: DUP1
00000539: PUSH1 0x40
0000053b: MSTORE
0000053c: POP
0000053d: DUP2
0000053e: ADD
0000053f: SWAP1
00000540: PUSH2 0x0549
00000543: SWAP2
00000544: SWAP1
00000545: PUSH2 0x1856
00000548: JUMP
00000549: JUMPDEST
0000054a: SWAP1
0000054b: POP
0000054c: ADDRESS
0000054d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000562: AND
00000563: DUP2
00000564: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000579: AND
0000057a: EQ
0000057b: PUSH2 0x05b9
0000057e: JUMPI
0000057f: PUSH1 0x40
00000581: MLOAD
00000582: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000005a3: DUP2
000005a4: MSTORE
000005a5: PUSH1 0x04
000005a7: ADD
000005a8: PUSH2 0x05b0
000005ab: SWAP1
000005ac: PUSH2 0x18cf
000005af: JUMP
000005b0: JUMPDEST
000005b1: PUSH1 0x40
000005b3: MLOAD
000005b4: DUP1
000005b5: SWAP2
000005b6: SUB
000005b7: SWAP1
000005b8: REVERT
000005b9: JUMPDEST
000005ba: DUP2
000005bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005d0: AND
000005d1: PUSH4 0x23b872dd
000005d6: ADDRESS
000005d7: DUP8
000005d8: DUP7
000005d9: PUSH1 0x40
000005db: MLOAD
000005dc: DUP5
000005dd: PUSH4 0xffffffff
000005e2: AND
000005e3: PUSH1 0xe0
000005e5: SHL
000005e6: DUP2
000005e7: MSTORE
000005e8: PUSH1 0x04
000005ea: ADD
000005eb: PUSH2 0x05f6
000005ee: SWAP4
000005ef: SWAP3
000005f0: SWAP2
000005f1: SWAP1
000005f2: PUSH2 0x194e
000005f5: JUMP
000005f6: JUMPDEST
000005f7: PUSH1 0x00
000005f9: PUSH1 0x40
000005fb: MLOAD
000005fc: DUP1
000005fd: DUP4
000005fe: SUB
000005ff: DUP2
00000600: PUSH1 0x00
00000602: DUP8
00000603: DUP1
00000604: EXTCODESIZE
00000605: ISZERO
00000606: DUP1
00000607: ISZERO
00000608: PUSH2 0x0610
0000060b: JUMPI
0000060c: PUSH1 0x00
0000060e: DUP1
0000060f: REVERT
00000610: JUMPDEST
00000611: POP
00000612: GAS
00000613: CALL
00000614: ISZERO
00000615: DUP1
00000616: ISZERO
00000617: PUSH2 0x0624
0000061a: JUMPI
0000061b: RETURNDATASIZE
0000061c: PUSH1 0x00
0000061e: DUP1
0000061f: RETURNDATACOPY
00000620: RETURNDATASIZE
00000621: PUSH1 0x00
00000623: REVERT
00000624: JUMPDEST
00000625: POP
00000626: POP
00000627: POP
00000628: POP
00000629: POP
0000062a: POP
0000062b: POP
0000062c: POP
0000062d: POP
0000062e: JUMP
0000062f: JUMPDEST
00000630: PUSH1 0x00
00000632: DUP1
00000633: PUSH1 0x02
00000635: SWAP1
00000636: SLOAD
00000637: SWAP1
00000638: PUSH2 0x0100
0000063b: EXP
0000063c: SWAP1
0000063d: DIV
0000063e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000653: AND
00000654: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000669: AND
0000066a: CALLER
0000066b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000680: AND
00000681: EQ
00000682: PUSH2 0x06c0
00000685: JUMPI
00000686: PUSH1 0x40
00000688: MLOAD
00000689: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006aa: DUP2
000006ab: MSTORE
000006ac: PUSH1 0x04
000006ae: ADD
000006af: PUSH2 0x06b7
000006b2: SWAP1
000006b3: PUSH2 0x1821
000006b6: JUMP
000006b7: JUMPDEST
000006b8: PUSH1 0x40
000006ba: MLOAD
000006bb: DUP1
000006bc: SWAP2
000006bd: SUB
000006be: SWAP1
000006bf: REVERT
000006c0: JUMPDEST
000006c1: PUSH1 0x00
000006c3: DUP4
000006c4: SWAP1
000006c5: POP
000006c6: PUSH1 0x00
000006c8: DUP2
000006c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006de: AND
000006df: PUSH4 0x70a08231
000006e4: ADDRESS
000006e5: PUSH1 0x40
000006e7: MLOAD
000006e8: DUP3
000006e9: PUSH4 0xffffffff
000006ee: AND
000006ef: PUSH1 0xe0
000006f1: SHL
000006f2: DUP2
000006f3: MSTORE
000006f4: PUSH1 0x04
000006f6: ADD
000006f7: PUSH2 0x0700
000006fa: SWAP2
000006fb: SWAP1
000006fc: PUSH2 0x14f9
000006ff: JUMP
00000700: JUMPDEST
00000701: PUSH1 0x20
00000703: PUSH1 0x40
00000705: MLOAD
00000706: DUP1
00000707: DUP4
00000708: SUB
00000709: DUP2
0000070a: DUP7
0000070b: GAS
0000070c: STATICCALL
0000070d: ISZERO
0000070e: DUP1
0000070f: ISZERO
00000710: PUSH2 0x071d
00000713: JUMPI
00000714: RETURNDATASIZE
00000715: PUSH1 0x00
00000717: DUP1
00000718: RETURNDATACOPY
00000719: RETURNDATASIZE
0000071a: PUSH1 0x00
0000071c: REVERT
0000071d: JUMPDEST
0000071e: POP
0000071f: POP
00000720: POP
00000721: POP
00000722: PUSH1 0x40
00000724: MLOAD
00000725: RETURNDATASIZE
00000726: PUSH1 0x1f
00000728: NOT
00000729: PUSH1 0x1f
0000072b: DUP3
0000072c: ADD
0000072d: AND
0000072e: DUP3
0000072f: ADD
00000730: DUP1
00000731: PUSH1 0x40
00000733: MSTORE
00000734: POP
00000735: DUP2
00000736: ADD
00000737: SWAP1
00000738: PUSH2 0x0741
0000073b: SWAP2
0000073c: SWAP1
0000073d: PUSH2 0x1797
00000740: JUMP
00000741: JUMPDEST
00000742: SWAP1
00000743: POP
00000744: PUSH1 0x00
00000746: DUP2
00000747: GT
00000748: PUSH2 0x0786
0000074b: JUMPI
0000074c: PUSH1 0x40
0000074e: MLOAD
0000074f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000770: DUP2
00000771: MSTORE
00000772: PUSH1 0x04
00000774: ADD
00000775: PUSH2 0x077d
00000778: SWAP1
00000779: PUSH2 0x19d1
0000077c: JUMP
0000077d: JUMPDEST
0000077e: PUSH1 0x40
00000780: MLOAD
00000781: DUP1
00000782: SWAP2
00000783: SUB
00000784: SWAP1
00000785: REVERT
00000786: JUMPDEST
00000787: DUP4
00000788: DUP2
00000789: LT
0000078a: ISZERO
0000078b: PUSH2 0x07c9
0000078e: JUMPI
0000078f: PUSH1 0x40
00000791: MLOAD
00000792: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000007b3: DUP2
000007b4: MSTORE
000007b5: PUSH1 0x04
000007b7: ADD
000007b8: PUSH2 0x07c0
000007bb: SWAP1
000007bc: PUSH2 0x1a3d
000007bf: JUMP
000007c0: JUMPDEST
000007c1: PUSH1 0x40
000007c3: MLOAD
000007c4: DUP1
000007c5: SWAP2
000007c6: SUB
000007c7: SWAP1
000007c8: REVERT
000007c9: JUMPDEST
000007ca: PUSH2 0x07f4
000007cd: DUP7
000007ce: DUP6
000007cf: DUP5
000007d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007e5: AND
000007e6: PUSH2 0x0d6e
000007e9: SWAP1
000007ea: SWAP3
000007eb: SWAP2
000007ec: SWAP1
000007ed: PUSH4 0xffffffff
000007f2: AND
000007f3: JUMP
000007f4: JUMPDEST
000007f5: PUSH1 0x01
000007f7: SWAP3
000007f8: POP
000007f9: POP
000007fa: POP
000007fb: SWAP4
000007fc: SWAP3
000007fd: POP
000007fe: POP
000007ff: POP
00000800: JUMP
00000801: JUMPDEST
00000802: PUSH1 0x00
00000804: SELFBALANCE
00000805: SWAP1
00000806: POP
00000807: SWAP1
00000808: JUMP
00000809: JUMPDEST
0000080a: PUSH1 0x00
0000080c: DUP1
0000080d: DUP3
0000080e: SWAP1
0000080f: POP
00000810: DUP1
00000811: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000826: AND
00000827: PUSH4 0x70a08231
0000082c: ADDRESS
0000082d: PUSH1 0x40
0000082f: MLOAD
00000830: DUP3
00000831: PUSH4 0xffffffff
00000836: AND
00000837: PUSH1 0xe0
00000839: SHL
0000083a: DUP2
0000083b: MSTORE
0000083c: PUSH1 0x04
0000083e: ADD
0000083f: PUSH2 0x0848
00000842: SWAP2
00000843: SWAP1
00000844: PUSH2 0x14f9
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH1 0x20
0000084b: PUSH1 0x40
0000084d: MLOAD
0000084e: DUP1
0000084f: DUP4
00000850: SUB
00000851: DUP2
00000852: DUP7
00000853: GAS
00000854: STATICCALL
00000855: ISZERO
00000856: DUP1
00000857: ISZERO
00000858: PUSH2 0x0865
0000085b: JUMPI
0000085c: RETURNDATASIZE
0000085d: PUSH1 0x00
0000085f: DUP1
00000860: RETURNDATACOPY
00000861: RETURNDATASIZE
00000862: PUSH1 0x00
00000864: REVERT
00000865: JUMPDEST
00000866: POP
00000867: POP
00000868: POP
00000869: POP
0000086a: PUSH1 0x40
0000086c: MLOAD
0000086d: RETURNDATASIZE
0000086e: PUSH1 0x1f
00000870: NOT
00000871: PUSH1 0x1f
00000873: DUP3
00000874: ADD
00000875: AND
00000876: DUP3
00000877: ADD
00000878: DUP1
00000879: PUSH1 0x40
0000087b: MSTORE
0000087c: POP
0000087d: DUP2
0000087e: ADD
0000087f: SWAP1
00000880: PUSH2 0x0889
00000883: SWAP2
00000884: SWAP1
00000885: PUSH2 0x1797
00000888: JUMP
00000889: JUMPDEST
0000088a: SWAP2
0000088b: POP
0000088c: POP
0000088d: SWAP2
0000088e: SWAP1
0000088f: POP
00000890: JUMP
00000891: JUMPDEST
00000892: PUSH1 0x00
00000894: PUSH1 0x02
00000896: SWAP1
00000897: SLOAD
00000898: SWAP1
00000899: PUSH2 0x0100
0000089c: EXP
0000089d: SWAP1
0000089e: DIV
0000089f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008b4: AND
000008b5: DUP2
000008b6: JUMP
000008b7: JUMPDEST
000008b8: PUSH1 0x00
000008ba: PUSH4 0xbc197c81
000008bf: PUSH1 0xe0
000008c1: SHL
000008c2: SWAP1
000008c3: POP
000008c4: SWAP6
000008c5: SWAP5
000008c6: POP
000008c7: POP
000008c8: POP
000008c9: POP
000008ca: POP
000008cb: JUMP
000008cc: JUMPDEST
000008cd: PUSH1 0x00
000008cf: DUP1
000008d0: PUSH1 0x01
000008d2: SWAP1
000008d3: SLOAD
000008d4: SWAP1
000008d5: PUSH2 0x0100
000008d8: EXP
000008d9: SWAP1
000008da: DIV
000008db: PUSH1 0xff
000008dd: AND
000008de: ISZERO
000008df: SWAP1
000008e0: POP
000008e1: DUP1
000008e2: DUP1
000008e3: ISZERO
000008e4: PUSH2 0x08fd
000008e7: JUMPI
000008e8: POP
000008e9: PUSH1 0x01
000008eb: PUSH1 0x00
000008ed: DUP1
000008ee: SLOAD
000008ef: SWAP1
000008f0: PUSH2 0x0100
000008f3: EXP
000008f4: SWAP1
000008f5: DIV
000008f6: PUSH1 0xff
000008f8: AND
000008f9: PUSH1 0xff
000008fb: AND
000008fc: LT
000008fd: JUMPDEST
000008fe: DUP1
000008ff: PUSH2 0x092a
00000902: JUMPI
00000903: POP
00000904: PUSH2 0x090c
00000907: ADDRESS
00000908: PUSH2 0x0df4
0000090b: JUMP
0000090c: JUMPDEST
0000090d: ISZERO
0000090e: DUP1
0000090f: ISZERO
00000910: PUSH2 0x0929
00000913: JUMPI
00000914: POP
00000915: PUSH1 0x01
00000917: PUSH1 0x00
00000919: DUP1
0000091a: SLOAD
0000091b: SWAP1
0000091c: PUSH2 0x0100
0000091f: EXP
00000920: SWAP1
00000921: DIV
00000922: PUSH1 0xff
00000924: AND
00000925: PUSH1 0xff
00000927: AND
00000928: EQ
00000929: JUMPDEST
0000092a: JUMPDEST
0000092b: PUSH2 0x0969
0000092e: JUMPI
0000092f: PUSH1 0x40
00000931: MLOAD
00000932: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000953: DUP2
00000954: MSTORE
00000955: PUSH1 0x04
00000957: ADD
00000958: PUSH2 0x0960
0000095b: SWAP1
0000095c: PUSH2 0x1acf
0000095f: JUMP
00000960: JUMPDEST
00000961: PUSH1 0x40
00000963: MLOAD
00000964: DUP1
00000965: SWAP2
00000966: SUB
00000967: SWAP1
00000968: REVERT
00000969: JUMPDEST
0000096a: PUSH1 0x01
0000096c: PUSH1 0x00
0000096e: DUP1
0000096f: PUSH2 0x0100
00000972: EXP
00000973: DUP2
00000974: SLOAD
00000975: DUP2
00000976: PUSH1 0xff
00000978: MUL
00000979: NOT
0000097a: AND
0000097b: SWAP1
0000097c: DUP4
0000097d: PUSH1 0xff
0000097f: AND
00000980: MUL
00000981: OR
00000982: SWAP1
00000983: SSTORE
00000984: POP
00000985: DUP1
00000986: ISZERO
00000987: PUSH2 0x09a6
0000098a: JUMPI
0000098b: PUSH1 0x01
0000098d: PUSH1 0x00
0000098f: PUSH1 0x01
00000991: PUSH2 0x0100
00000994: EXP
00000995: DUP2
00000996: SLOAD
00000997: DUP2
00000998: PUSH1 0xff
0000099a: MUL
0000099b: NOT
0000099c: AND
0000099d: SWAP1
0000099e: DUP4
0000099f: ISZERO
000009a0: ISZERO
000009a1: MUL
000009a2: OR
000009a3: SWAP1
000009a4: SSTORE
000009a5: POP
000009a6: JUMPDEST
000009a7: PUSH1 0x00
000009a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009be: AND
000009bf: DUP3
000009c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009d5: AND
000009d6: SUB
000009d7: PUSH2 0x0a15
000009da: JUMPI
000009db: PUSH1 0x40
000009dd: MLOAD
000009de: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000009ff: DUP2
00000a00: MSTORE
00000a01: PUSH1 0x04
00000a03: ADD
00000a04: PUSH2 0x0a0c
00000a07: SWAP1
00000a08: PUSH2 0x1b3b
00000a0b: JUMP
00000a0c: JUMPDEST
00000a0d: PUSH1 0x40
00000a0f: MLOAD
00000a10: DUP1
00000a11: SWAP2
00000a12: SUB
00000a13: SWAP1
00000a14: REVERT
00000a15: JUMPDEST
00000a16: DUP2
00000a17: PUSH1 0x00
00000a19: PUSH1 0x02
00000a1b: PUSH2 0x0100
00000a1e: EXP
00000a1f: DUP2
00000a20: SLOAD
00000a21: DUP2
00000a22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a37: MUL
00000a38: NOT
00000a39: AND
00000a3a: SWAP1
00000a3b: DUP4
00000a3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a51: AND
00000a52: MUL
00000a53: OR
00000a54: SWAP1
00000a55: SSTORE
00000a56: POP
00000a57: DUP1
00000a58: ISZERO
00000a59: PUSH2 0x0aaf
00000a5c: JUMPI
00000a5d: PUSH1 0x00
00000a5f: DUP1
00000a60: PUSH1 0x01
00000a62: PUSH2 0x0100
00000a65: EXP
00000a66: DUP2
00000a67: SLOAD
00000a68: DUP2
00000a69: PUSH1 0xff
00000a6b: MUL
00000a6c: NOT
00000a6d: AND
00000a6e: SWAP1
00000a6f: DUP4
00000a70: ISZERO
00000a71: ISZERO
00000a72: MUL
00000a73: OR
00000a74: SWAP1
00000a75: SSTORE
00000a76: POP
00000a77: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
00000a98: PUSH1 0x01
00000a9a: PUSH1 0x40
00000a9c: MLOAD
00000a9d: PUSH2 0x0aa6
00000aa0: SWAP2
00000aa1: SWAP1
00000aa2: PUSH2 0x1ba3
00000aa5: JUMP
00000aa6: JUMPDEST
00000aa7: PUSH1 0x40
00000aa9: MLOAD
00000aaa: DUP1
00000aab: SWAP2
00000aac: SUB
00000aad: SWAP1
00000aae: LOG1
00000aaf: JUMPDEST
00000ab0: POP
00000ab1: POP
00000ab2: JUMP
00000ab3: JUMPDEST
00000ab4: PUSH1 0x00
00000ab6: PUSH4 0xf23a6e61
00000abb: PUSH1 0xe0
00000abd: SHL
00000abe: SWAP1
00000abf: POP
00000ac0: SWAP6
00000ac1: SWAP5
00000ac2: POP
00000ac3: POP
00000ac4: POP
00000ac5: POP
00000ac6: POP
00000ac7: JUMP
00000ac8: JUMPDEST
00000ac9: PUSH1 0x00
00000acb: PUSH1 0x02
00000acd: SWAP1
00000ace: SLOAD
00000acf: SWAP1
00000ad0: PUSH2 0x0100
00000ad3: EXP
00000ad4: SWAP1
00000ad5: DIV
00000ad6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aeb: AND
00000aec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b01: AND
00000b02: CALLER
00000b03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b18: AND
00000b19: EQ
00000b1a: PUSH2 0x0b58
00000b1d: JUMPI
00000b1e: PUSH1 0x40
00000b20: MLOAD
00000b21: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000b42: DUP2
00000b43: MSTORE
00000b44: PUSH1 0x04
00000b46: ADD
00000b47: PUSH2 0x0b4f
00000b4a: SWAP1
00000b4b: PUSH2 0x1821
00000b4e: JUMP
00000b4f: JUMPDEST
00000b50: PUSH1 0x40
00000b52: MLOAD
00000b53: DUP1
00000b54: SWAP2
00000b55: SUB
00000b56: SWAP1
00000b57: REVERT
00000b58: JUMPDEST
00000b59: PUSH1 0x00
00000b5b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b70: AND
00000b71: DUP3
00000b72: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b87: AND
00000b88: SUB
00000b89: PUSH2 0x0bc7
00000b8c: JUMPI
00000b8d: PUSH1 0x40
00000b8f: MLOAD
00000b90: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000bb1: DUP2
00000bb2: MSTORE
00000bb3: PUSH1 0x04
00000bb5: ADD
00000bb6: PUSH2 0x0bbe
00000bb9: SWAP1
00000bba: PUSH2 0x1b3b
00000bbd: JUMP
00000bbe: JUMPDEST
00000bbf: PUSH1 0x40
00000bc1: MLOAD
00000bc2: DUP1
00000bc3: SWAP2
00000bc4: SUB
00000bc5: SWAP1
00000bc6: REVERT
00000bc7: JUMPDEST
00000bc8: PUSH1 0x00
00000bca: SELFBALANCE
00000bcb: SWAP1
00000bcc: POP
00000bcd: PUSH1 0x00
00000bcf: DUP2
00000bd0: GT
00000bd1: PUSH2 0x0c0f
00000bd4: JUMPI
00000bd5: PUSH1 0x40
00000bd7: MLOAD
00000bd8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000bf9: DUP2
00000bfa: MSTORE
00000bfb: PUSH1 0x04
00000bfd: ADD
00000bfe: PUSH2 0x0c06
00000c01: SWAP1
00000c02: PUSH2 0x19d1
00000c05: JUMP
00000c06: JUMPDEST
00000c07: PUSH1 0x40
00000c09: MLOAD
00000c0a: DUP1
00000c0b: SWAP2
00000c0c: SUB
00000c0d: SWAP1
00000c0e: REVERT
00000c0f: JUMPDEST
00000c10: DUP2
00000c11: DUP2
00000c12: LT
00000c13: ISZERO
00000c14: PUSH2 0x0c52
00000c17: JUMPI
00000c18: PUSH1 0x40
00000c1a: MLOAD
00000c1b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000c3c: DUP2
00000c3d: MSTORE
00000c3e: PUSH1 0x04
00000c40: ADD
00000c41: PUSH2 0x0c49
00000c44: SWAP1
00000c45: PUSH2 0x1a3d
00000c48: JUMP
00000c49: JUMPDEST
00000c4a: PUSH1 0x40
00000c4c: MLOAD
00000c4d: DUP1
00000c4e: SWAP2
00000c4f: SUB
00000c50: SWAP1
00000c51: REVERT
00000c52: JUMPDEST
00000c53: PUSH1 0x00
00000c55: DUP4
00000c56: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c6b: AND
00000c6c: DUP4
00000c6d: PUSH1 0x40
00000c6f: MLOAD
00000c70: PUSH2 0x0c78
00000c73: SWAP1
00000c74: PUSH2 0x1bef
00000c77: JUMP
00000c78: JUMPDEST
00000c79: PUSH1 0x00
00000c7b: PUSH1 0x40
00000c7d: MLOAD
00000c7e: DUP1
00000c7f: DUP4
00000c80: SUB
00000c81: DUP2
00000c82: DUP6
00000c83: DUP8
00000c84: GAS
00000c85: CALL
00000c86: SWAP3
00000c87: POP
00000c88: POP
00000c89: POP
00000c8a: RETURNDATASIZE
00000c8b: DUP1
00000c8c: PUSH1 0x00
00000c8e: DUP2
00000c8f: EQ
00000c90: PUSH2 0x0cb5
00000c93: JUMPI
00000c94: PUSH1 0x40
00000c96: MLOAD
00000c97: SWAP2
00000c98: POP
00000c99: PUSH1 0x1f
00000c9b: NOT
00000c9c: PUSH1 0x3f
00000c9e: RETURNDATASIZE
00000c9f: ADD
00000ca0: AND
00000ca1: DUP3
00000ca2: ADD
00000ca3: PUSH1 0x40
00000ca5: MSTORE
00000ca6: RETURNDATASIZE
00000ca7: DUP3
00000ca8: MSTORE
00000ca9: RETURNDATASIZE
00000caa: PUSH1 0x00
00000cac: PUSH1 0x20
00000cae: DUP5
00000caf: ADD
00000cb0: RETURNDATACOPY
00000cb1: PUSH2 0x0cba
00000cb4: JUMP
00000cb5: JUMPDEST
00000cb6: PUSH1 0x60
00000cb8: SWAP2
00000cb9: POP
00000cba: JUMPDEST
00000cbb: POP
00000cbc: POP
00000cbd: SWAP1
00000cbe: POP
00000cbf: DUP1
00000cc0: PUSH2 0x0cfe
00000cc3: JUMPI
00000cc4: PUSH1 0x40
00000cc6: MLOAD
00000cc7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000ce8: DUP2
00000ce9: MSTORE
00000cea: PUSH1 0x04
00000cec: ADD
00000ced: PUSH2 0x0cf5
00000cf0: SWAP1
00000cf1: PUSH2 0x1c50
00000cf4: JUMP
00000cf5: JUMPDEST
00000cf6: PUSH1 0x40
00000cf8: MLOAD
00000cf9: DUP1
00000cfa: SWAP2
00000cfb: SUB
00000cfc: SWAP1
00000cfd: REVERT
00000cfe: JUMPDEST
00000cff: POP
00000d00: POP
00000d01: POP
00000d02: POP
00000d03: JUMP
00000d04: JUMPDEST
00000d05: PUSH1 0x00
00000d07: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000
00000d28: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000d45: NOT
00000d46: AND
00000d47: DUP3
00000d48: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000d65: NOT
00000d66: AND
00000d67: EQ
00000d68: SWAP1
00000d69: POP
00000d6a: SWAP2
00000d6b: SWAP1
00000d6c: POP
00000d6d: JUMP
00000d6e: JUMPDEST
00000d6f: PUSH2 0x0def
00000d72: DUP4
00000d73: PUSH4 0xa9059cbb
00000d78: PUSH1 0xe0
00000d7a: SHL
00000d7b: DUP5
00000d7c: DUP5
00000d7d: PUSH1 0x40
00000d7f: MLOAD
00000d80: PUSH1 0x24
00000d82: ADD
00000d83: PUSH2 0x0d8d
00000d86: SWAP3
00000d87: SWAP2
00000d88: SWAP1
00000d89: PUSH2 0x1c70
00000d8c: JUMP
00000d8d: JUMPDEST
00000d8e: PUSH1 0x40
00000d90: MLOAD
00000d91: PUSH1 0x20
00000d93: DUP2
00000d94: DUP4
00000d95: SUB
00000d96: SUB
00000d97: DUP2
00000d98: MSTORE
00000d99: SWAP1
00000d9a: PUSH1 0x40
00000d9c: MSTORE
00000d9d: SWAP1
00000d9e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000dbb: NOT
00000dbc: AND
00000dbd: PUSH1 0x20
00000dbf: DUP3
00000dc0: ADD
00000dc1: DUP1
00000dc2: MLOAD
00000dc3: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000de0: DUP4
00000de1: DUP2
00000de2: DUP4
00000de3: AND
00000de4: OR
00000de5: DUP4
00000de6: MSTORE
00000de7: POP
00000de8: POP
00000de9: POP
00000dea: POP
00000deb: PUSH2 0x0e17
00000dee: JUMP
00000def: JUMPDEST
00000df0: POP
00000df1: POP
00000df2: POP
00000df3: JUMP
00000df4: JUMPDEST
00000df5: PUSH1 0x00
00000df7: DUP1
00000df8: DUP3
00000df9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e0e: AND
00000e0f: EXTCODESIZE
00000e10: GT
00000e11: SWAP1
00000e12: POP
00000e13: SWAP2
00000e14: SWAP1
00000e15: POP
00000e16: JUMP
00000e17: JUMPDEST
00000e18: PUSH1 0x00
00000e1a: PUSH2 0x0e79
00000e1d: DUP3
00000e1e: PUSH1 0x40
00000e20: MLOAD
00000e21: DUP1
00000e22: PUSH1 0x40
00000e24: ADD
00000e25: PUSH1 0x40
00000e27: MSTORE
00000e28: DUP1
00000e29: PUSH1 0x20
00000e2b: DUP2
00000e2c: MSTORE
00000e2d: PUSH1 0x20
00000e2f: ADD
00000e30: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00000e51: DUP2
00000e52: MSTORE
00000e53: POP
00000e54: DUP6
00000e55: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e6a: AND
00000e6b: PUSH2 0x0edf
00000e6e: SWAP1
00000e6f: SWAP3
00000e70: SWAP2
00000e71: SWAP1
00000e72: PUSH4 0xffffffff
00000e77: AND
00000e78: JUMP
00000e79: JUMPDEST
00000e7a: SWAP1
00000e7b: POP
00000e7c: PUSH1 0x00
00000e7e: DUP2
00000e7f: MLOAD
00000e80: EQ
00000e81: DUP1
00000e82: PUSH2 0x0e9b
00000e85: JUMPI
00000e86: POP
00000e87: DUP1
00000e88: DUP1
00000e89: PUSH1 0x20
00000e8b: ADD
00000e8c: SWAP1
00000e8d: MLOAD
00000e8e: DUP2
00000e8f: ADD
00000e90: SWAP1
00000e91: PUSH2 0x0e9a
00000e94: SWAP2
00000e95: SWAP1
00000e96: PUSH2 0x1cc5
00000e99: JUMP
00000e9a: JUMPDEST
00000e9b: JUMPDEST
00000e9c: PUSH2 0x0eda
00000e9f: JUMPI
00000ea0: PUSH1 0x40
00000ea2: MLOAD
00000ea3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000ec4: DUP2
00000ec5: MSTORE
00000ec6: PUSH1 0x04
00000ec8: ADD
00000ec9: PUSH2 0x0ed1
00000ecc: SWAP1
00000ecd: PUSH2 0x1d64
00000ed0: JUMP
00000ed1: JUMPDEST
00000ed2: PUSH1 0x40
00000ed4: MLOAD
00000ed5: DUP1
00000ed6: SWAP2
00000ed7: SUB
00000ed8: SWAP1
00000ed9: REVERT
00000eda: JUMPDEST
00000edb: POP
00000edc: POP
00000edd: POP
00000ede: JUMP
00000edf: JUMPDEST
00000ee0: PUSH1 0x60
00000ee2: PUSH2 0x0eee
00000ee5: DUP5
00000ee6: DUP5
00000ee7: PUSH1 0x00
00000ee9: DUP6
00000eea: PUSH2 0x0ef7
00000eed: JUMP
00000eee: JUMPDEST
00000eef: SWAP1
00000ef0: POP
00000ef1: SWAP4
00000ef2: SWAP3
00000ef3: POP
00000ef4: POP
00000ef5: POP
00000ef6: JUMP
00000ef7: JUMPDEST
00000ef8: PUSH1 0x60
00000efa: DUP3
00000efb: SELFBALANCE
00000efc: LT
00000efd: ISZERO
00000efe: PUSH2 0x0f3c
00000f01: JUMPI
00000f02: PUSH1 0x40
00000f04: MLOAD
00000f05: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f26: DUP2
00000f27: MSTORE
00000f28: PUSH1 0x04
00000f2a: ADD
00000f2b: PUSH2 0x0f33
00000f2e: SWAP1
00000f2f: PUSH2 0x1df6
00000f32: JUMP
00000f33: JUMPDEST
00000f34: PUSH1 0x40
00000f36: MLOAD
00000f37: DUP1
00000f38: SWAP2
00000f39: SUB
00000f3a: SWAP1
00000f3b: REVERT
00000f3c: JUMPDEST
00000f3d: PUSH1 0x00
00000f3f: DUP1
00000f40: DUP7
00000f41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f56: AND
00000f57: DUP6
00000f58: DUP8
00000f59: PUSH1 0x40
00000f5b: MLOAD
00000f5c: PUSH2 0x0f65
00000f5f: SWAP2
00000f60: SWAP1
00000f61: PUSH2 0x1e7c
00000f64: JUMP
00000f65: JUMPDEST
00000f66: PUSH1 0x00
00000f68: PUSH1 0x40
00000f6a: MLOAD
00000f6b: DUP1
00000f6c: DUP4
00000f6d: SUB
00000f6e: DUP2
00000f6f: DUP6
00000f70: DUP8
00000f71: GAS
00000f72: CALL
00000f73: SWAP3
00000f74: POP
00000f75: POP
00000f76: POP
00000f77: RETURNDATASIZE
00000f78: DUP1
00000f79: PUSH1 0x00
00000f7b: DUP2
00000f7c: EQ
00000f7d: PUSH2 0x0fa2
00000f80: JUMPI
00000f81: PUSH1 0x40
00000f83: MLOAD
00000f84: SWAP2
00000f85: POP
00000f86: PUSH1 0x1f
00000f88: NOT
00000f89: PUSH1 0x3f
00000f8b: RETURNDATASIZE
00000f8c: ADD
00000f8d: AND
00000f8e: DUP3
00000f8f: ADD
00000f90: PUSH1 0x40
00000f92: MSTORE
00000f93: RETURNDATASIZE
00000f94: DUP3
00000f95: MSTORE
00000f96: RETURNDATASIZE
00000f97: PUSH1 0x00
00000f99: PUSH1 0x20
00000f9b: DUP5
00000f9c: ADD
00000f9d: RETURNDATACOPY
00000f9e: PUSH2 0x0fa7
00000fa1: JUMP
00000fa2: JUMPDEST
00000fa3: PUSH1 0x60
00000fa5: SWAP2
00000fa6: POP
00000fa7: JUMPDEST
00000fa8: POP
00000fa9: SWAP2
00000faa: POP
00000fab: SWAP2
00000fac: POP
00000fad: PUSH2 0x0fb8
00000fb0: DUP8
00000fb1: DUP4
00000fb2: DUP4
00000fb3: DUP8
00000fb4: PUSH2 0x0fc4
00000fb7: JUMP
00000fb8: JUMPDEST
00000fb9: SWAP3
00000fba: POP
00000fbb: POP
00000fbc: POP
00000fbd: SWAP5
00000fbe: SWAP4
00000fbf: POP
00000fc0: POP
00000fc1: POP
00000fc2: POP
00000fc3: JUMP
00000fc4: JUMPDEST
00000fc5: PUSH1 0x60
00000fc7: DUP4
00000fc8: ISZERO
00000fc9: PUSH2 0x1026
00000fcc: JUMPI
00000fcd: PUSH1 0x00
00000fcf: DUP4
00000fd0: MLOAD
00000fd1: SUB
00000fd2: PUSH2 0x101e
00000fd5: JUMPI
00000fd6: PUSH2 0x0fde
00000fd9: DUP6
00000fda: PUSH2 0x1039
00000fdd: JUMP
00000fde: JUMPDEST
00000fdf: PUSH2 0x101d
00000fe2: JUMPI
00000fe3: PUSH1 0x40
00000fe5: MLOAD
00000fe6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001007: DUP2
00001008: MSTORE
00001009: PUSH1 0x04
0000100b: ADD
0000100c: PUSH2 0x1014
0000100f: SWAP1
00001010: PUSH2 0x1edf
00001013: JUMP
00001014: JUMPDEST
00001015: PUSH1 0x40
00001017: MLOAD
00001018: DUP1
00001019: SWAP2
0000101a: SUB
0000101b: SWAP1
0000101c: REVERT
0000101d: JUMPDEST
0000101e: JUMPDEST
0000101f: DUP3
00001020: SWAP1
00001021: POP
00001022: PUSH2 0x1031
00001025: JUMP
00001026: JUMPDEST
00001027: PUSH2 0x1030
0000102a: DUP4
0000102b: DUP4
0000102c: PUSH2 0x105c
0000102f: JUMP
00001030: JUMPDEST
00001031: JUMPDEST
00001032: SWAP5
00001033: SWAP4
00001034: POP
00001035: POP
00001036: POP
00001037: POP
00001038: JUMP
00001039: JUMPDEST
0000103a: PUSH1 0x00
0000103c: DUP1
0000103d: DUP3
0000103e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001053: AND
00001054: EXTCODESIZE
00001055: GT
00001056: SWAP1
00001057: POP
00001058: SWAP2
00001059: SWAP1
0000105a: POP
0000105b: JUMP
0000105c: JUMPDEST
0000105d: PUSH1 0x00
0000105f: DUP3
00001060: MLOAD
00001061: GT
00001062: ISZERO
00001063: PUSH2 0x106f
00001066: JUMPI
00001067: DUP2
00001068: MLOAD
00001069: DUP1
0000106a: DUP4
0000106b: PUSH1 0x20
0000106d: ADD
0000106e: REVERT
0000106f: JUMPDEST
00001070: DUP1
00001071: PUSH1 0x40
00001073: MLOAD
00001074: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001095: DUP2
00001096: MSTORE
00001097: PUSH1 0x04
00001099: ADD
0000109a: PUSH2 0x10a3
0000109d: SWAP2
0000109e: SWAP1
0000109f: PUSH2 0x1f43
000010a2: JUMP
000010a3: JUMPDEST
000010a4: PUSH1 0x40
000010a6: MLOAD
000010a7: DUP1
000010a8: SWAP2
000010a9: SUB
000010aa: SWAP1
000010ab: REVERT
000010ac: JUMPDEST
000010ad: PUSH1 0x00
000010af: PUSH1 0x40
000010b1: MLOAD
000010b2: SWAP1
000010b3: POP
000010b4: SWAP1
000010b5: JUMP
000010b6: JUMPDEST
000010b7: PUSH1 0x00
000010b9: DUP1
000010ba: REVERT
000010bb: JUMPDEST
000010bc: PUSH1 0x00
000010be: DUP1
000010bf: REVERT
000010c0: JUMPDEST
000010c1: PUSH1 0x00
000010c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010d8: DUP3
000010d9: AND
000010da: SWAP1
000010db: POP
000010dc: SWAP2
000010dd: SWAP1
000010de: POP
000010df: JUMP
000010e0: JUMPDEST
000010e1: PUSH1 0x00
000010e3: PUSH2 0x10eb
000010e6: DUP3
000010e7: PUSH2 0x10c0
000010ea: JUMP
000010eb: JUMPDEST
000010ec: SWAP1
000010ed: POP
000010ee: SWAP2
000010ef: SWAP1
000010f0: POP
000010f1: JUMP
000010f2: JUMPDEST
000010f3: PUSH2 0x10fb
000010f6: DUP2
000010f7: PUSH2 0x10e0
000010fa: JUMP
000010fb: JUMPDEST
000010fc: DUP2
000010fd: EQ
000010fe: PUSH2 0x1106
00001101: JUMPI
00001102: PUSH1 0x00
00001104: DUP1
00001105: REVERT
00001106: JUMPDEST
00001107: POP
00001108: JUMP
00001109: JUMPDEST
0000110a: PUSH1 0x00
0000110c: DUP2
0000110d: CALLDATALOAD
0000110e: SWAP1
0000110f: POP
00001110: PUSH2 0x1118
00001113: DUP2
00001114: PUSH2 0x10f2
00001117: JUMP
00001118: JUMPDEST
00001119: SWAP3
0000111a: SWAP2
0000111b: POP
0000111c: POP
0000111d: JUMP
0000111e: JUMPDEST
0000111f: PUSH1 0x00
00001121: PUSH1 0x20
00001123: DUP3
00001124: DUP5
00001125: SUB
00001126: SLT
00001127: ISZERO
00001128: PUSH2 0x1134
0000112b: JUMPI
0000112c: PUSH2 0x1133
0000112f: PUSH2 0x10b6
00001132: JUMP
00001133: JUMPDEST
00001134: JUMPDEST
00001135: PUSH1 0x00
00001137: PUSH2 0x1142
0000113a: DUP5
0000113b: DUP3
0000113c: DUP6
0000113d: ADD
0000113e: PUSH2 0x1109
00001141: JUMP
00001142: JUMPDEST
00001143: SWAP2
00001144: POP
00001145: POP
00001146: SWAP3
00001147: SWAP2
00001148: POP
00001149: POP
0000114a: JUMP
0000114b: JUMPDEST
0000114c: PUSH1 0x00
0000114e: DUP2
0000114f: SWAP1
00001150: POP
00001151: SWAP2
00001152: SWAP1
00001153: POP
00001154: JUMP
00001155: JUMPDEST
00001156: PUSH2 0x115e
00001159: DUP2
0000115a: PUSH2 0x114b
0000115d: JUMP
0000115e: JUMPDEST
0000115f: DUP3
00001160: MSTORE
00001161: POP
00001162: POP
00001163: JUMP
00001164: JUMPDEST
00001165: PUSH1 0x00
00001167: PUSH1 0x20
00001169: DUP3
0000116a: ADD
0000116b: SWAP1
0000116c: POP
0000116d: PUSH2 0x1179
00001170: PUSH1 0x00
00001172: DUP4
00001173: ADD
00001174: DUP5
00001175: PUSH2 0x1155
00001178: JUMP
00001179: JUMPDEST
0000117a: SWAP3
0000117b: SWAP2
0000117c: POP
0000117d: POP
0000117e: JUMP
0000117f: JUMPDEST
00001180: PUSH1 0x00
00001182: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000011a3: DUP3
000011a4: AND
000011a5: SWAP1
000011a6: POP
000011a7: SWAP2
000011a8: SWAP1
000011a9: POP
000011aa: JUMP
000011ab: JUMPDEST
000011ac: PUSH2 0x11b4
000011af: DUP2
000011b0: PUSH2 0x117f
000011b3: JUMP
000011b4: JUMPDEST
000011b5: DUP2
000011b6: EQ
000011b7: PUSH2 0x11bf
000011ba: JUMPI
000011bb: PUSH1 0x00
000011bd: DUP1
000011be: REVERT
000011bf: JUMPDEST
000011c0: POP
000011c1: JUMP
000011c2: JUMPDEST
000011c3: PUSH1 0x00
000011c5: DUP2
000011c6: CALLDATALOAD
000011c7: SWAP1
000011c8: POP
000011c9: PUSH2 0x11d1
000011cc: DUP2
000011cd: PUSH2 0x11ab
000011d0: JUMP
000011d1: JUMPDEST
000011d2: SWAP3
000011d3: SWAP2
000011d4: POP
000011d5: POP
000011d6: JUMP
000011d7: JUMPDEST
000011d8: PUSH1 0x00
000011da: PUSH1 0x20
000011dc: DUP3
000011dd: DUP5
000011de: SUB
000011df: SLT
000011e0: ISZERO
000011e1: PUSH2 0x11ed
000011e4: JUMPI
000011e5: PUSH2 0x11ec
000011e8: PUSH2 0x10b6
000011eb: JUMP
000011ec: JUMPDEST
000011ed: JUMPDEST
000011ee: PUSH1 0x00
000011f0: PUSH2 0x11fb
000011f3: DUP5
000011f4: DUP3
000011f5: DUP6
000011f6: ADD
000011f7: PUSH2 0x11c2
000011fa: JUMP
000011fb: JUMPDEST
000011fc: SWAP2
000011fd: POP
000011fe: POP
000011ff: SWAP3
00001200: SWAP2
00001201: POP
00001202: POP
00001203: JUMP
00001204: JUMPDEST
00001205: PUSH1 0x00
00001207: DUP2
00001208: ISZERO
00001209: ISZERO
0000120a: SWAP1
0000120b: POP
0000120c: SWAP2
0000120d: SWAP1
0000120e: POP
0000120f: JUMP
00001210: JUMPDEST
00001211: PUSH2 0x1219
00001214: DUP2
00001215: PUSH2 0x1204
00001218: JUMP
00001219: JUMPDEST
0000121a: DUP3
0000121b: MSTORE
0000121c: POP
0000121d: POP
0000121e: JUMP
0000121f: JUMPDEST
00001220: PUSH1 0x00
00001222: PUSH1 0x20
00001224: DUP3
00001225: ADD
00001226: SWAP1
00001227: POP
00001228: PUSH2 0x1234
0000122b: PUSH1 0x00
0000122d: DUP4
0000122e: ADD
0000122f: DUP5
00001230: PUSH2 0x1210
00001233: JUMP
00001234: JUMPDEST
00001235: SWAP3
00001236: SWAP2
00001237: POP
00001238: POP
00001239: JUMP
0000123a: JUMPDEST
0000123b: PUSH2 0x1243
0000123e: DUP2
0000123f: PUSH2 0x114b
00001242: JUMP
00001243: JUMPDEST
00001244: DUP2
00001245: EQ
00001246: PUSH2 0x124e
00001249: JUMPI
0000124a: PUSH1 0x00
0000124c: DUP1
0000124d: REVERT
0000124e: JUMPDEST
0000124f: POP
00001250: JUMP
00001251: JUMPDEST
00001252: PUSH1 0x00
00001254: DUP2
00001255: CALLDATALOAD
00001256: SWAP1
00001257: POP
00001258: PUSH2 0x1260
0000125b: DUP2
0000125c: PUSH2 0x123a
0000125f: JUMP
00001260: JUMPDEST
00001261: SWAP3
00001262: SWAP2
00001263: POP
00001264: POP
00001265: JUMP
00001266: JUMPDEST
00001267: PUSH1 0x00
00001269: DUP1
0000126a: REVERT
0000126b: JUMPDEST
0000126c: PUSH1 0x00
0000126e: DUP1
0000126f: REVERT
00001270: JUMPDEST
00001271: PUSH1 0x00
00001273: PUSH1 0x1f
00001275: NOT
00001276: PUSH1 0x1f
00001278: DUP4
00001279: ADD
0000127a: AND
0000127b: SWAP1
0000127c: POP
0000127d: SWAP2
0000127e: SWAP1
0000127f: POP
00001280: JUMP
00001281: JUMPDEST
00001282: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000012a3: PUSH1 0x00
000012a5: MSTORE
000012a6: PUSH1 0x41
000012a8: PUSH1 0x04
000012aa: MSTORE
000012ab: PUSH1 0x24
000012ad: PUSH1 0x00
000012af: REVERT
000012b0: JUMPDEST
000012b1: PUSH2 0x12b9
000012b4: DUP3
000012b5: PUSH2 0x1270
000012b8: JUMP
000012b9: JUMPDEST
000012ba: DUP2
000012bb: ADD
000012bc: DUP2
000012bd: DUP2
000012be: LT
000012bf: PUSH8 0xffffffffffffffff
000012c8: DUP3
000012c9: GT
000012ca: OR
000012cb: ISZERO
000012cc: PUSH2 0x12d8
000012cf: JUMPI
000012d0: PUSH2 0x12d7
000012d3: PUSH2 0x1281
000012d6: JUMP
000012d7: JUMPDEST
000012d8: JUMPDEST
000012d9: DUP1
000012da: PUSH1 0x40
000012dc: MSTORE
000012dd: POP
000012de: POP
000012df: POP
000012e0: JUMP
000012e1: JUMPDEST
000012e2: PUSH1 0x00
000012e4: PUSH2 0x12eb
000012e7: PUSH2 0x10ac
000012ea: JUMP
000012eb: JUMPDEST
000012ec: SWAP1
000012ed: POP
000012ee: PUSH2 0x12f7
000012f1: DUP3
000012f2: DUP3
000012f3: PUSH2 0x12b0
000012f6: JUMP
000012f7: JUMPDEST
000012f8: SWAP2
000012f9: SWAP1
000012fa: POP
000012fb: JUMP
000012fc: JUMPDEST
000012fd: PUSH1 0x00
000012ff: PUSH8 0xffffffffffffffff
00001308: DUP3
00001309: GT
0000130a: ISZERO
0000130b: PUSH2 0x1317
0000130e: JUMPI
0000130f: PUSH2 0x1316
00001312: PUSH2 0x1281
00001315: JUMP
00001316: JUMPDEST
00001317: JUMPDEST
00001318: PUSH2 0x1320
0000131b: DUP3
0000131c: PUSH2 0x1270
0000131f: JUMP
00001320: JUMPDEST
00001321: SWAP1
00001322: POP
00001323: PUSH1 0x20
00001325: DUP2
00001326: ADD
00001327: SWAP1
00001328: POP
00001329: SWAP2
0000132a: SWAP1
0000132b: POP
0000132c: JUMP
0000132d: JUMPDEST
0000132e: DUP3
0000132f: DUP2
00001330: DUP4
00001331: CALLDATACOPY
00001332: PUSH1 0x00
00001334: DUP4
00001335: DUP4
00001336: ADD
00001337: MSTORE
00001338: POP
00001339: POP
0000133a: POP
0000133b: JUMP
0000133c: JUMPDEST
0000133d: PUSH1 0x00
0000133f: PUSH2 0x134f
00001342: PUSH2 0x134a
00001345: DUP5
00001346: PUSH2 0x12fc
00001349: JUMP
0000134a: JUMPDEST
0000134b: PUSH2 0x12e1
0000134e: JUMP
0000134f: JUMPDEST
00001350: SWAP1
00001351: POP
00001352: DUP3
00001353: DUP2
00001354: MSTORE
00001355: PUSH1 0x20
00001357: DUP2
00001358: ADD
00001359: DUP5
0000135a: DUP5
0000135b: DUP5
0000135c: ADD
0000135d: GT
0000135e: ISZERO
0000135f: PUSH2 0x136b
00001362: JUMPI
00001363: PUSH2 0x136a
00001366: PUSH2 0x126b
00001369: JUMP
0000136a: JUMPDEST
0000136b: JUMPDEST
0000136c: PUSH2 0x1376
0000136f: DUP5
00001370: DUP3
00001371: DUP6
00001372: PUSH2 0x132d
00001375: JUMP
00001376: JUMPDEST
00001377: POP
00001378: SWAP4
00001379: SWAP3
0000137a: POP
0000137b: POP
0000137c: POP
0000137d: JUMP
0000137e: JUMPDEST
0000137f: PUSH1 0x00
00001381: DUP3
00001382: PUSH1 0x1f
00001384: DUP4
00001385: ADD
00001386: SLT
00001387: PUSH2 0x1393
0000138a: JUMPI
0000138b: PUSH2 0x1392
0000138e: PUSH2 0x1266
00001391: JUMP
00001392: JUMPDEST
00001393: JUMPDEST
00001394: DUP2
00001395: CALLDATALOAD
00001396: PUSH2 0x13a3
00001399: DUP5
0000139a: DUP3
0000139b: PUSH1 0x20
0000139d: DUP7
0000139e: ADD
0000139f: PUSH2 0x133c
000013a2: JUMP
000013a3: JUMPDEST
000013a4: SWAP2
000013a5: POP
000013a6: POP
000013a7: SWAP3
000013a8: SWAP2
000013a9: POP
000013aa: POP
000013ab: JUMP
000013ac: JUMPDEST
000013ad: PUSH1 0x00
000013af: DUP1
000013b0: PUSH1 0x00
000013b2: DUP1
000013b3: PUSH1 0x80
000013b5: DUP6
000013b6: DUP8
000013b7: SUB
000013b8: SLT
000013b9: ISZERO
000013ba: PUSH2 0x13c6
000013bd: JUMPI
000013be: PUSH2 0x13c5
000013c1: PUSH2 0x10b6
000013c4: JUMP
000013c5: JUMPDEST
000013c6: JUMPDEST
000013c7: PUSH1 0x00
000013c9: PUSH2 0x13d4
000013cc: DUP8
000013cd: DUP3
000013ce: DUP9
000013cf: ADD
000013d0: PUSH2 0x1109
000013d3: JUMP
000013d4: JUMPDEST
000013d5: SWAP5
000013d6: POP
000013d7: POP
000013d8: PUSH1 0x20
000013da: PUSH2 0x13e5
000013dd: DUP8
000013de: DUP3
000013df: DUP9
000013e0: ADD
000013e1: PUSH2 0x1109
000013e4: JUMP
000013e5: JUMPDEST
000013e6: SWAP4
000013e7: POP
000013e8: POP
000013e9: PUSH1 0x40
000013eb: PUSH2 0x13f6
000013ee: DUP8
000013ef: DUP3
000013f0: DUP9
000013f1: ADD
000013f2: PUSH2 0x1251
000013f5: JUMP
000013f6: JUMPDEST
000013f7: SWAP3
000013f8: POP
000013f9: POP
000013fa: PUSH1 0x60
000013fc: DUP6
000013fd: ADD
000013fe: CALLDATALOAD
000013ff: PUSH8 0xffffffffffffffff
00001408: DUP2
00001409: GT
0000140a: ISZERO
0000140b: PUSH2 0x1417
0000140e: JUMPI
0000140f: PUSH2 0x1416
00001412: PUSH2 0x10bb
00001415: JUMP
00001416: JUMPDEST
00001417: JUMPDEST
00001418: PUSH2 0x1423
0000141b: DUP8
0000141c: DUP3
0000141d: DUP9
0000141e: ADD
0000141f: PUSH2 0x137e
00001422: JUMP
00001423: JUMPDEST
00001424: SWAP2
00001425: POP
00001426: POP
00001427: SWAP3
00001428: SWAP6
00001429: SWAP2
0000142a: SWAP5
0000142b: POP
0000142c: SWAP3
0000142d: POP
0000142e: JUMP
0000142f: JUMPDEST
00001430: PUSH2 0x1438
00001433: DUP2
00001434: PUSH2 0x117f
00001437: JUMP
00001438: JUMPDEST
00001439: DUP3
0000143a: MSTORE
0000143b: POP
0000143c: POP
0000143d: JUMP
0000143e: JUMPDEST
0000143f: PUSH1 0x00
00001441: PUSH1 0x20
00001443: DUP3
00001444: ADD
00001445: SWAP1
00001446: POP
00001447: PUSH2 0x1453
0000144a: PUSH1 0x00
0000144c: DUP4
0000144d: ADD
0000144e: DUP5
0000144f: PUSH2 0x142f
00001452: JUMP
00001453: JUMPDEST
00001454: SWAP3
00001455: SWAP2
00001456: POP
00001457: POP
00001458: JUMP
00001459: JUMPDEST
0000145a: PUSH1 0x00
0000145c: PUSH2 0x1464
0000145f: DUP3
00001460: PUSH2 0x10c0
00001463: JUMP
00001464: JUMPDEST
00001465: SWAP1
00001466: POP
00001467: SWAP2
00001468: SWAP1
00001469: POP
0000146a: JUMP
0000146b: JUMPDEST
0000146c: PUSH2 0x1474
0000146f: DUP2
00001470: PUSH2 0x1459
00001473: JUMP
00001474: JUMPDEST
00001475: DUP2
00001476: EQ
00001477: PUSH2 0x147f
0000147a: JUMPI
0000147b: PUSH1 0x00
0000147d: DUP1
0000147e: REVERT
0000147f: JUMPDEST
00001480: POP
00001481: JUMP
00001482: JUMPDEST
00001483: PUSH1 0x00
00001485: DUP2
00001486: CALLDATALOAD
00001487: SWAP1
00001488: POP
00001489: PUSH2 0x1491
0000148c: DUP2
0000148d: PUSH2 0x146b
00001490: JUMP
00001491: JUMPDEST
00001492: SWAP3
00001493: SWAP2
00001494: POP
00001495: POP
00001496: JUMP
00001497: JUMPDEST
00001498: PUSH1 0x00
0000149a: DUP1
0000149b: PUSH1 0x00
0000149d: PUSH1 0x60
0000149f: DUP5
000014a0: DUP7
000014a1: SUB
000014a2: SLT
000014a3: ISZERO
000014a4: PUSH2 0x14b0
000014a7: JUMPI
000014a8: PUSH2 0x14af
000014ab: PUSH2 0x10b6
000014ae: JUMP
000014af: JUMPDEST
000014b0: JUMPDEST
000014b1: PUSH1 0x00
000014b3: PUSH2 0x14be
000014b6: DUP7
000014b7: DUP3
000014b8: DUP8
000014b9: ADD
000014ba: PUSH2 0x1482
000014bd: JUMP
000014be: JUMPDEST
000014bf: SWAP4
000014c0: POP
000014c1: POP
000014c2: PUSH1 0x20
000014c4: PUSH2 0x14cf
000014c7: DUP7
000014c8: DUP3
000014c9: DUP8
000014ca: ADD
000014cb: PUSH2 0x1109
000014ce: JUMP
000014cf: JUMPDEST
000014d0: SWAP3
000014d1: POP
000014d2: POP
000014d3: PUSH1 0x40
000014d5: PUSH2 0x14e0
000014d8: DUP7
000014d9: DUP3
000014da: DUP8
000014db: ADD
000014dc: PUSH2 0x1251
000014df: JUMP
000014e0: JUMPDEST
000014e1: SWAP2
000014e2: POP
000014e3: POP
000014e4: SWAP3
000014e5: POP
000014e6: SWAP3
000014e7: POP
000014e8: SWAP3
000014e9: JUMP
000014ea: JUMPDEST
000014eb: PUSH2 0x14f3
000014ee: DUP2
000014ef: PUSH2 0x10e0
000014f2: JUMP
000014f3: JUMPDEST
000014f4: DUP3
000014f5: MSTORE
000014f6: POP
000014f7: POP
000014f8: JUMP
000014f9: JUMPDEST
000014fa: PUSH1 0x00
000014fc: PUSH1 0x20
000014fe: DUP3
000014ff: ADD
00001500: SWAP1
00001501: POP
00001502: PUSH2 0x150e
00001505: PUSH1 0x00
00001507: DUP4
00001508: ADD
00001509: DUP5
0000150a: PUSH2 0x14ea
0000150d: JUMP
0000150e: JUMPDEST
0000150f: SWAP3
00001510: SWAP2
00001511: POP
00001512: POP
00001513: JUMP
00001514: JUMPDEST
00001515: PUSH1 0x00
00001517: PUSH8 0xffffffffffffffff
00001520: DUP3
00001521: GT
00001522: ISZERO
00001523: PUSH2 0x152f
00001526: JUMPI
00001527: PUSH2 0x152e
0000152a: PUSH2 0x1281
0000152d: JUMP
0000152e: JUMPDEST
0000152f: JUMPDEST
00001530: PUSH1 0x20
00001532: DUP3
00001533: MUL
00001534: SWAP1
00001535: POP
00001536: PUSH1 0x20
00001538: DUP2
00001539: ADD
0000153a: SWAP1
0000153b: POP
0000153c: SWAP2
0000153d: SWAP1
0000153e: POP
0000153f: JUMP
00001540: JUMPDEST
00001541: PUSH1 0x00
00001543: DUP1
00001544: REVERT
00001545: JUMPDEST
00001546: PUSH1 0x00
00001548: PUSH2 0x1558
0000154b: PUSH2 0x1553
0000154e: DUP5
0000154f: PUSH2 0x1514
00001552: JUMP
00001553: JUMPDEST
00001554: PUSH2 0x12e1
00001557: JUMP
00001558: JUMPDEST
00001559: SWAP1
0000155a: POP
0000155b: DUP1
0000155c: DUP4
0000155d: DUP3
0000155e: MSTORE
0000155f: PUSH1 0x20
00001561: DUP3
00001562: ADD
00001563: SWAP1
00001564: POP
00001565: PUSH1 0x20
00001567: DUP5
00001568: MUL
00001569: DUP4
0000156a: ADD
0000156b: DUP6
0000156c: DUP2
0000156d: GT
0000156e: ISZERO
0000156f: PUSH2 0x157b
00001572: JUMPI
00001573: PUSH2 0x157a
00001576: PUSH2 0x1540
00001579: JUMP
0000157a: JUMPDEST
0000157b: JUMPDEST
0000157c: DUP4
0000157d: JUMPDEST
0000157e: DUP2
0000157f: DUP2
00001580: LT
00001581: ISZERO
00001582: PUSH2 0x15a4
00001585: JUMPI
00001586: DUP1
00001587: PUSH2 0x1590
0000158a: DUP9
0000158b: DUP3
0000158c: PUSH2 0x1251
0000158f: JUMP
00001590: JUMPDEST
00001591: DUP5
00001592: MSTORE
00001593: PUSH1 0x20
00001595: DUP5
00001596: ADD
00001597: SWAP4
00001598: POP
00001599: POP
0000159a: PUSH1 0x20
0000159c: DUP2
0000159d: ADD
0000159e: SWAP1
0000159f: POP
000015a0: PUSH2 0x157d
000015a3: JUMP
000015a4: JUMPDEST
000015a5: POP
000015a6: POP
000015a7: POP
000015a8: SWAP4
000015a9: SWAP3
000015aa: POP
000015ab: POP
000015ac: POP
000015ad: JUMP
000015ae: JUMPDEST
000015af: PUSH1 0x00
000015b1: DUP3
000015b2: PUSH1 0x1f
000015b4: DUP4
000015b5: ADD
000015b6: SLT
000015b7: PUSH2 0x15c3
000015ba: JUMPI
000015bb: PUSH2 0x15c2
000015be: PUSH2 0x1266
000015c1: JUMP
000015c2: JUMPDEST
000015c3: JUMPDEST
000015c4: DUP2
000015c5: CALLDATALOAD
000015c6: PUSH2 0x15d3
000015c9: DUP5
000015ca: DUP3
000015cb: PUSH1 0x20
000015cd: DUP7
000015ce: ADD
000015cf: PUSH2 0x1545
000015d2: JUMP
000015d3: JUMPDEST
000015d4: SWAP2
000015d5: POP
000015d6: POP
000015d7: SWAP3
000015d8: SWAP2
000015d9: POP
000015da: POP
000015db: JUMP
000015dc: JUMPDEST
000015dd: PUSH1 0x00
000015df: DUP1
000015e0: PUSH1 0x00
000015e2: DUP1
000015e3: PUSH1 0x00
000015e5: PUSH1 0xa0
000015e7: DUP7
000015e8: DUP9
000015e9: SUB
000015ea: SLT
000015eb: ISZERO
000015ec: PUSH2 0x15f8
000015ef: JUMPI
000015f0: PUSH2 0x15f7
000015f3: PUSH2 0x10b6
000015f6: JUMP
000015f7: JUMPDEST
000015f8: JUMPDEST
000015f9: PUSH1 0x00
000015fb: PUSH2 0x1606
000015fe: DUP9
000015ff: DUP3
00001600: DUP10
00001601: ADD
00001602: PUSH2 0x1109
00001605: JUMP
00001606: JUMPDEST
00001607: SWAP6
00001608: POP
00001609: POP
0000160a: PUSH1 0x20
0000160c: PUSH2 0x1617
0000160f: DUP9
00001610: DUP3
00001611: DUP10
00001612: ADD
00001613: PUSH2 0x1109
00001616: JUMP
00001617: JUMPDEST
00001618: SWAP5
00001619: POP
0000161a: POP
0000161b: PUSH1 0x40
0000161d: DUP7
0000161e: ADD
0000161f: CALLDATALOAD
00001620: PUSH8 0xffffffffffffffff
00001629: DUP2
0000162a: GT
0000162b: ISZERO
0000162c: PUSH2 0x1638
0000162f: JUMPI
00001630: PUSH2 0x1637
00001633: PUSH2 0x10bb
00001636: JUMP
00001637: JUMPDEST
00001638: JUMPDEST
00001639: PUSH2 0x1644
0000163c: DUP9
0000163d: DUP3
0000163e: DUP10
0000163f: ADD
00001640: PUSH2 0x15ae
00001643: JUMP
00001644: JUMPDEST
00001645: SWAP4
00001646: POP
00001647: POP
00001648: PUSH1 0x60
0000164a: DUP7
0000164b: ADD
0000164c: CALLDATALOAD
0000164d: PUSH8 0xffffffffffffffff
00001656: DUP2
00001657: GT
00001658: ISZERO
00001659: PUSH2 0x1665
0000165c: JUMPI
0000165d: PUSH2 0x1664
00001660: PUSH2 0x10bb
00001663: JUMP
00001664: JUMPDEST
00001665: JUMPDEST
00001666: PUSH2 0x1671
00001669: DUP9
0000166a: DUP3
0000166b: DUP10
0000166c: ADD
0000166d: PUSH2 0x15ae
00001670: JUMP
00001671: JUMPDEST
00001672: SWAP3
00001673: POP
00001674: POP
00001675: PUSH1 0x80
00001677: DUP7
00001678: ADD
00001679: CALLDATALOAD
0000167a: PUSH8 0xffffffffffffffff
00001683: DUP2
00001684: GT
00001685: ISZERO
00001686: PUSH2 0x1692
00001689: JUMPI
0000168a: PUSH2 0x1691
0000168d: PUSH2 0x10bb
00001690: JUMP
00001691: JUMPDEST
00001692: JUMPDEST
00001693: PUSH2 0x169e
00001696: DUP9
00001697: DUP3
00001698: DUP10
00001699: ADD
0000169a: PUSH2 0x137e
0000169d: JUMP
0000169e: JUMPDEST
0000169f: SWAP2
000016a0: POP
000016a1: POP
000016a2: SWAP3
000016a3: SWAP6
000016a4: POP
000016a5: SWAP3
000016a6: SWAP6
000016a7: SWAP1
000016a8: SWAP4
000016a9: POP
000016aa: JUMP
000016ab: JUMPDEST
000016ac: PUSH1 0x00
000016ae: DUP1
000016af: PUSH1 0x00
000016b1: DUP1
000016b2: PUSH1 0x00
000016b4: PUSH1 0xa0
000016b6: DUP7
000016b7: DUP9
000016b8: SUB
000016b9: SLT
000016ba: ISZERO
000016bb: PUSH2 0x16c7
000016be: JUMPI
000016bf: PUSH2 0x16c6
000016c2: PUSH2 0x10b6
000016c5: JUMP
000016c6: JUMPDEST
000016c7: JUMPDEST
000016c8: PUSH1 0x00
000016ca: PUSH2 0x16d5
000016cd: DUP9
000016ce: DUP3
000016cf: DUP10
000016d0: ADD
000016d1: PUSH2 0x1109
000016d4: JUMP
000016d5: JUMPDEST
000016d6: SWAP6
000016d7: POP
000016d8: POP
000016d9: PUSH1 0x20
000016db: PUSH2 0x16e6
000016de: DUP9
000016df: DUP3
000016e0: DUP10
000016e1: ADD
000016e2: PUSH2 0x1109
000016e5: JUMP
000016e6: JUMPDEST
000016e7: SWAP5
000016e8: POP
000016e9: POP
000016ea: PUSH1 0x40
000016ec: PUSH2 0x16f7
000016ef: DUP9
000016f0: DUP3
000016f1: DUP10
000016f2: ADD
000016f3: PUSH2 0x1251
000016f6: JUMP
000016f7: JUMPDEST
000016f8: SWAP4
000016f9: POP
000016fa: POP
000016fb: PUSH1 0x60
000016fd: PUSH2 0x1708
00001700: DUP9
00001701: DUP3
00001702: DUP10
00001703: ADD
00001704: PUSH2 0x1251
00001707: JUMP
00001708: JUMPDEST
00001709: SWAP3
0000170a: POP
0000170b: POP
0000170c: PUSH1 0x80
0000170e: DUP7
0000170f: ADD
00001710: CALLDATALOAD
00001711: PUSH8 0xffffffffffffffff
0000171a: DUP2
0000171b: GT
0000171c: ISZERO
0000171d: PUSH2 0x1729
00001720: JUMPI
00001721: PUSH2 0x1728
00001724: PUSH2 0x10bb
00001727: JUMP
00001728: JUMPDEST
00001729: JUMPDEST
0000172a: PUSH2 0x1735
0000172d: DUP9
0000172e: DUP3
0000172f: DUP10
00001730: ADD
00001731: PUSH2 0x137e
00001734: JUMP
00001735: JUMPDEST
00001736: SWAP2
00001737: POP
00001738: POP
00001739: SWAP3
0000173a: SWAP6
0000173b: POP
0000173c: SWAP3
0000173d: SWAP6
0000173e: SWAP1
0000173f: SWAP4
00001740: POP
00001741: JUMP
00001742: JUMPDEST
00001743: PUSH1 0x00
00001745: DUP1
00001746: PUSH1 0x40
00001748: DUP4
00001749: DUP6
0000174a: SUB
0000174b: SLT
0000174c: ISZERO
0000174d: PUSH2 0x1759
00001750: JUMPI
00001751: PUSH2 0x1758
00001754: PUSH2 0x10b6
00001757: JUMP
00001758: JUMPDEST
00001759: JUMPDEST
0000175a: PUSH1 0x00
0000175c: PUSH2 0x1767
0000175f: DUP6
00001760: DUP3
00001761: DUP7
00001762: ADD
00001763: PUSH2 0x1482
00001766: JUMP
00001767: JUMPDEST
00001768: SWAP3
00001769: POP
0000176a: POP
0000176b: PUSH1 0x20
0000176d: PUSH2 0x1778
00001770: DUP6
00001771: DUP3
00001772: DUP7
00001773: ADD
00001774: PUSH2 0x1251
00001777: JUMP
00001778: JUMPDEST
00001779: SWAP2
0000177a: POP
0000177b: POP
0000177c: SWAP3
0000177d: POP
0000177e: SWAP3
0000177f: SWAP1
00001780: POP
00001781: JUMP
00001782: JUMPDEST
00001783: PUSH1 0x00
00001785: DUP2
00001786: MLOAD
00001787: SWAP1
00001788: POP
00001789: PUSH2 0x1791
0000178c: DUP2
0000178d: PUSH2 0x123a
00001790: JUMP
00001791: JUMPDEST
00001792: SWAP3
00001793: SWAP2
00001794: POP
00001795: POP
00001796: JUMP
00001797: JUMPDEST
00001798: PUSH1 0x00
0000179a: PUSH1 0x20
0000179c: DUP3
0000179d: DUP5
0000179e: SUB
0000179f: SLT
000017a0: ISZERO
000017a1: PUSH2 0x17ad
000017a4: JUMPI
000017a5: PUSH2 0x17ac
000017a8: PUSH2 0x10b6
000017ab: JUMP
000017ac: JUMPDEST
000017ad: JUMPDEST
000017ae: PUSH1 0x00
000017b0: PUSH2 0x17bb
000017b3: DUP5
000017b4: DUP3
000017b5: DUP6
000017b6: ADD
000017b7: PUSH2 0x1782
000017ba: JUMP
000017bb: JUMPDEST
000017bc: SWAP2
000017bd: POP
000017be: POP
000017bf: SWAP3
000017c0: SWAP2
000017c1: POP
000017c2: POP
000017c3: JUMP
000017c4: JUMPDEST
000017c5: PUSH1 0x00
000017c7: DUP3
000017c8: DUP3
000017c9: MSTORE
000017ca: PUSH1 0x20
000017cc: DUP3
000017cd: ADD
000017ce: SWAP1
000017cf: POP
000017d0: SWAP3
000017d1: SWAP2
000017d2: POP
000017d3: POP
000017d4: JUMP
000017d5: JUMPDEST
000017d6: PUSH32 0x53656e646572206973206e6f7420746865206f776e6572000000000000000000
000017f7: PUSH1 0x00
000017f9: DUP3
000017fa: ADD
000017fb: MSTORE
000017fc: POP
000017fd: JUMP
000017fe: JUMPDEST
000017ff: PUSH1 0x00
00001801: PUSH2 0x180b
00001804: PUSH1 0x17
00001806: DUP4
00001807: PUSH2 0x17c4
0000180a: JUMP
0000180b: JUMPDEST
0000180c: SWAP2
0000180d: POP
0000180e: PUSH2 0x1816
00001811: DUP3
00001812: PUSH2 0x17d5
00001815: JUMP
00001816: JUMPDEST
00001817: PUSH1 0x20
00001819: DUP3
0000181a: ADD
0000181b: SWAP1
0000181c: POP
0000181d: SWAP2
0000181e: SWAP1
0000181f: POP
00001820: JUMP
00001821: JUMPDEST
00001822: PUSH1 0x00
00001824: PUSH1 0x20
00001826: DUP3
00001827: ADD
00001828: SWAP1
00001829: POP
0000182a: DUP2
0000182b: DUP2
0000182c: SUB
0000182d: PUSH1 0x00
0000182f: DUP4
00001830: ADD
00001831: MSTORE
00001832: PUSH2 0x183a
00001835: DUP2
00001836: PUSH2 0x17fe
00001839: JUMP
0000183a: JUMPDEST
0000183b: SWAP1
0000183c: POP
0000183d: SWAP2
0000183e: SWAP1
0000183f: POP
00001840: JUMP
00001841: JUMPDEST
00001842: PUSH1 0x00
00001844: DUP2
00001845: MLOAD
00001846: SWAP1
00001847: POP
00001848: PUSH2 0x1850
0000184b: DUP2
0000184c: PUSH2 0x10f2
0000184f: JUMP
00001850: JUMPDEST
00001851: SWAP3
00001852: SWAP2
00001853: POP
00001854: POP
00001855: JUMP
00001856: JUMPDEST
00001857: PUSH1 0x00
00001859: PUSH1 0x20
0000185b: DUP3
0000185c: DUP5
0000185d: SUB
0000185e: SLT
0000185f: ISZERO
00001860: PUSH2 0x186c
00001863: JUMPI
00001864: PUSH2 0x186b
00001867: PUSH2 0x10b6
0000186a: JUMP
0000186b: JUMPDEST
0000186c: JUMPDEST
0000186d: PUSH1 0x00
0000186f: PUSH2 0x187a
00001872: DUP5
00001873: DUP3
00001874: DUP6
00001875: ADD
00001876: PUSH2 0x1841
00001879: JUMP
0000187a: JUMPDEST
0000187b: SWAP2
0000187c: POP
0000187d: POP
0000187e: SWAP3
0000187f: SWAP2
00001880: POP
00001881: POP
00001882: JUMP
00001883: JUMPDEST
00001884: PUSH32 0x4e6f745468654e66744f776e6572000000000000000000000000000000000000
000018a5: PUSH1 0x00
000018a7: DUP3
000018a8: ADD
000018a9: MSTORE
000018aa: POP
000018ab: JUMP
000018ac: JUMPDEST
000018ad: PUSH1 0x00
000018af: PUSH2 0x18b9
000018b2: PUSH1 0x0e
000018b4: DUP4
000018b5: PUSH2 0x17c4
000018b8: JUMP
000018b9: JUMPDEST
000018ba: SWAP2
000018bb: POP
000018bc: PUSH2 0x18c4
000018bf: DUP3
000018c0: PUSH2 0x1883
000018c3: JUMP
000018c4: JUMPDEST
000018c5: PUSH1 0x20
000018c7: DUP3
000018c8: ADD
000018c9: SWAP1
000018ca: POP
000018cb: SWAP2
000018cc: SWAP1
000018cd: POP
000018ce: JUMP
000018cf: JUMPDEST
000018d0: PUSH1 0x00
000018d2: PUSH1 0x20
000018d4: DUP3
000018d5: ADD
000018d6: SWAP1
000018d7: POP
000018d8: DUP2
000018d9: DUP2
000018da: SUB
000018db: PUSH1 0x00
000018dd: DUP4
000018de: ADD
000018df: MSTORE
000018e0: PUSH2 0x18e8
000018e3: DUP2
000018e4: PUSH2 0x18ac
000018e7: JUMP
000018e8: JUMPDEST
000018e9: SWAP1
000018ea: POP
000018eb: SWAP2
000018ec: SWAP1
000018ed: POP
000018ee: JUMP
000018ef: JUMPDEST
000018f0: PUSH1 0x00
000018f2: DUP2
000018f3: SWAP1
000018f4: POP
000018f5: SWAP2
000018f6: SWAP1
000018f7: POP
000018f8: JUMP
000018f9: JUMPDEST
000018fa: PUSH1 0x00
000018fc: PUSH2 0x1914
000018ff: PUSH2 0x190f
00001902: PUSH2 0x190a
00001905: DUP5
00001906: PUSH2 0x10c0
00001909: JUMP
0000190a: JUMPDEST
0000190b: PUSH2 0x18ef
0000190e: JUMP
0000190f: JUMPDEST
00001910: PUSH2 0x10c0
00001913: JUMP
00001914: JUMPDEST
00001915: SWAP1
00001916: POP
00001917: SWAP2
00001918: SWAP1
00001919: POP
0000191a: JUMP
0000191b: JUMPDEST
0000191c: PUSH1 0x00
0000191e: PUSH2 0x1926
00001921: DUP3
00001922: PUSH2 0x18f9
00001925: JUMP
00001926: JUMPDEST
00001927: SWAP1
00001928: POP
00001929: SWAP2
0000192a: SWAP1
0000192b: POP
0000192c: JUMP
0000192d: JUMPDEST
0000192e: PUSH1 0x00
00001930: PUSH2 0x1938
00001933: DUP3
00001934: PUSH2 0x191b
00001937: JUMP
00001938: JUMPDEST
00001939: SWAP1
0000193a: POP
0000193b: SWAP2
0000193c: SWAP1
0000193d: POP
0000193e: JUMP
0000193f: JUMPDEST
00001940: PUSH2 0x1948
00001943: DUP2
00001944: PUSH2 0x192d
00001947: JUMP
00001948: JUMPDEST
00001949: DUP3
0000194a: MSTORE
0000194b: POP
0000194c: POP
0000194d: JUMP
0000194e: JUMPDEST
0000194f: PUSH1 0x00
00001951: PUSH1 0x60
00001953: DUP3
00001954: ADD
00001955: SWAP1
00001956: POP
00001957: PUSH2 0x1963
0000195a: PUSH1 0x00
0000195c: DUP4
0000195d: ADD
0000195e: DUP7
0000195f: PUSH2 0x14ea
00001962: JUMP
00001963: JUMPDEST
00001964: PUSH2 0x1970
00001967: PUSH1 0x20
00001969: DUP4
0000196a: ADD
0000196b: DUP6
0000196c: PUSH2 0x193f
0000196f: JUMP
00001970: JUMPDEST
00001971: PUSH2 0x197d
00001974: PUSH1 0x40
00001976: DUP4
00001977: ADD
00001978: DUP5
00001979: PUSH2 0x1155
0000197c: JUMP
0000197d: JUMPDEST
0000197e: SWAP5
0000197f: SWAP4
00001980: POP
00001981: POP
00001982: POP
00001983: POP
00001984: JUMP
00001985: JUMPDEST
00001986: PUSH32 0x456d70747942616c616e63650000000000000000000000000000000000000000
000019a7: PUSH1 0x00
000019a9: DUP3
000019aa: ADD
000019ab: MSTORE
000019ac: POP
000019ad: JUMP
000019ae: JUMPDEST
000019af: PUSH1 0x00
000019b1: PUSH2 0x19bb
000019b4: PUSH1 0x0c
000019b6: DUP4
000019b7: PUSH2 0x17c4
000019ba: JUMP
000019bb: JUMPDEST
000019bc: SWAP2
000019bd: POP
000019be: PUSH2 0x19c6
000019c1: DUP3
000019c2: PUSH2 0x1985
000019c5: JUMP
000019c6: JUMPDEST
000019c7: PUSH1 0x20
000019c9: DUP3
000019ca: ADD
000019cb: SWAP1
000019cc: POP
000019cd: SWAP2
000019ce: SWAP1
000019cf: POP
000019d0: JUMP
000019d1: JUMPDEST
000019d2: PUSH1 0x00
000019d4: PUSH1 0x20
000019d6: DUP3
000019d7: ADD
000019d8: SWAP1
000019d9: POP
000019da: DUP2
000019db: DUP2
000019dc: SUB
000019dd: PUSH1 0x00
000019df: DUP4
000019e0: ADD
000019e1: MSTORE
000019e2: PUSH2 0x19ea
000019e5: DUP2
000019e6: PUSH2 0x19ae
000019e9: JUMP
000019ea: JUMPDEST
000019eb: SWAP1
000019ec: POP
000019ed: SWAP2
000019ee: SWAP1
000019ef: POP
000019f0: JUMP
000019f1: JUMPDEST
000019f2: PUSH32 0x4e6f74456e6f75676846756e6473000000000000000000000000000000000000
00001a13: PUSH1 0x00
00001a15: DUP3
00001a16: ADD
00001a17: MSTORE
00001a18: POP
00001a19: JUMP
00001a1a: JUMPDEST
00001a1b: PUSH1 0x00
00001a1d: PUSH2 0x1a27
00001a20: PUSH1 0x0e
00001a22: DUP4
00001a23: PUSH2 0x17c4
00001a26: JUMP
00001a27: JUMPDEST
00001a28: SWAP2
00001a29: POP
00001a2a: PUSH2 0x1a32
00001a2d: DUP3
00001a2e: PUSH2 0x19f1
00001a31: JUMP
00001a32: JUMPDEST
00001a33: PUSH1 0x20
00001a35: DUP3
00001a36: ADD
00001a37: SWAP1
00001a38: POP
00001a39: SWAP2
00001a3a: SWAP1
00001a3b: POP
00001a3c: JUMP
00001a3d: JUMPDEST
00001a3e: PUSH1 0x00
00001a40: PUSH1 0x20
00001a42: DUP3
00001a43: ADD
00001a44: SWAP1
00001a45: POP
00001a46: DUP2
00001a47: DUP2
00001a48: SUB
00001a49: PUSH1 0x00
00001a4b: DUP4
00001a4c: ADD
00001a4d: MSTORE
00001a4e: PUSH2 0x1a56
00001a51: DUP2
00001a52: PUSH2 0x1a1a
00001a55: JUMP
00001a56: JUMPDEST
00001a57: SWAP1
00001a58: POP
00001a59: SWAP2
00001a5a: SWAP1
00001a5b: POP
00001a5c: JUMP
00001a5d: JUMPDEST
00001a5e: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00001a7f: PUSH1 0x00
00001a81: DUP3
00001a82: ADD
00001a83: MSTORE
00001a84: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
00001aa5: PUSH1 0x20
00001aa7: DUP3
00001aa8: ADD
00001aa9: MSTORE
00001aaa: POP
00001aab: JUMP
00001aac: JUMPDEST
00001aad: PUSH1 0x00
00001aaf: PUSH2 0x1ab9
00001ab2: PUSH1 0x2e
00001ab4: DUP4
00001ab5: PUSH2 0x17c4
00001ab8: JUMP
00001ab9: JUMPDEST
00001aba: SWAP2
00001abb: POP
00001abc: PUSH2 0x1ac4
00001abf: DUP3
00001ac0: PUSH2 0x1a5d
00001ac3: JUMP
00001ac4: JUMPDEST
00001ac5: PUSH1 0x40
00001ac7: DUP3
00001ac8: ADD
00001ac9: SWAP1
00001aca: POP
00001acb: SWAP2
00001acc: SWAP1
00001acd: POP
00001ace: JUMP
00001acf: JUMPDEST
00001ad0: PUSH1 0x00
00001ad2: PUSH1 0x20
00001ad4: DUP3
00001ad5: ADD
00001ad6: SWAP1
00001ad7: POP
00001ad8: DUP2
00001ad9: DUP2
00001ada: SUB
00001adb: PUSH1 0x00
00001add: DUP4
00001ade: ADD
00001adf: MSTORE
00001ae0: PUSH2 0x1ae8
00001ae3: DUP2
00001ae4: PUSH2 0x1aac
00001ae7: JUMP
00001ae8: JUMPDEST
00001ae9: SWAP1
00001aea: POP
00001aeb: SWAP2
00001aec: SWAP1
00001aed: POP
00001aee: JUMP
00001aef: JUMPDEST
00001af0: PUSH32 0x5a65726f20616464726573730000000000000000000000000000000000000000
00001b11: PUSH1 0x00
00001b13: DUP3
00001b14: ADD
00001b15: MSTORE
00001b16: POP
00001b17: JUMP
00001b18: JUMPDEST
00001b19: PUSH1 0x00
00001b1b: PUSH2 0x1b25
00001b1e: PUSH1 0x0c
00001b20: DUP4
00001b21: PUSH2 0x17c4
00001b24: JUMP
00001b25: JUMPDEST
00001b26: SWAP2
00001b27: POP
00001b28: PUSH2 0x1b30
00001b2b: DUP3
00001b2c: PUSH2 0x1aef
00001b2f: JUMP
00001b30: JUMPDEST
00001b31: PUSH1 0x20
00001b33: DUP3
00001b34: ADD
00001b35: SWAP1
00001b36: POP
00001b37: SWAP2
00001b38: SWAP1
00001b39: POP
00001b3a: JUMP
00001b3b: JUMPDEST
00001b3c: PUSH1 0x00
00001b3e: PUSH1 0x20
00001b40: DUP3
00001b41: ADD
00001b42: SWAP1
00001b43: POP
00001b44: DUP2
00001b45: DUP2
00001b46: SUB
00001b47: PUSH1 0x00
00001b49: DUP4
00001b4a: ADD
00001b4b: MSTORE
00001b4c: PUSH2 0x1b54
00001b4f: DUP2
00001b50: PUSH2 0x1b18
00001b53: JUMP
00001b54: JUMPDEST
00001b55: SWAP1
00001b56: POP
00001b57: SWAP2
00001b58: SWAP1
00001b59: POP
00001b5a: JUMP
00001b5b: JUMPDEST
00001b5c: PUSH1 0x00
00001b5e: DUP2
00001b5f: SWAP1
00001b60: POP
00001b61: SWAP2
00001b62: SWAP1
00001b63: POP
00001b64: JUMP
00001b65: JUMPDEST
00001b66: PUSH1 0x00
00001b68: PUSH1 0xff
00001b6a: DUP3
00001b6b: AND
00001b6c: SWAP1
00001b6d: POP
00001b6e: SWAP2
00001b6f: SWAP1
00001b70: POP
00001b71: JUMP
00001b72: JUMPDEST
00001b73: PUSH1 0x00
00001b75: PUSH2 0x1b8d
00001b78: PUSH2 0x1b88
00001b7b: PUSH2 0x1b83
00001b7e: DUP5
00001b7f: PUSH2 0x1b5b
00001b82: JUMP
00001b83: JUMPDEST
00001b84: PUSH2 0x18ef
00001b87: JUMP
00001b88: JUMPDEST
00001b89: PUSH2 0x1b65
00001b8c: JUMP
00001b8d: JUMPDEST
00001b8e: SWAP1
00001b8f: POP
00001b90: SWAP2
00001b91: SWAP1
00001b92: POP
00001b93: JUMP
00001b94: JUMPDEST
00001b95: PUSH2 0x1b9d
00001b98: DUP2
00001b99: PUSH2 0x1b72
00001b9c: JUMP
00001b9d: JUMPDEST
00001b9e: DUP3
00001b9f: MSTORE
00001ba0: POP
00001ba1: POP
00001ba2: JUMP
00001ba3: JUMPDEST
00001ba4: PUSH1 0x00
00001ba6: PUSH1 0x20
00001ba8: DUP3
00001ba9: ADD
00001baa: SWAP1
00001bab: POP
00001bac: PUSH2 0x1bb8
00001baf: PUSH1 0x00
00001bb1: DUP4
00001bb2: ADD
00001bb3: DUP5
00001bb4: PUSH2 0x1b94
00001bb7: JUMP
00001bb8: JUMPDEST
00001bb9: SWAP3
00001bba: SWAP2
00001bbb: POP
00001bbc: POP
00001bbd: JUMP
00001bbe: JUMPDEST
00001bbf: PUSH1 0x00
00001bc1: DUP2
00001bc2: SWAP1
00001bc3: POP
00001bc4: SWAP3
00001bc5: SWAP2
00001bc6: POP
00001bc7: POP
00001bc8: JUMP
00001bc9: JUMPDEST
00001bca: POP
00001bcb: JUMP
00001bcc: JUMPDEST
00001bcd: PUSH1 0x00
00001bcf: PUSH2 0x1bd9
00001bd2: PUSH1 0x00
00001bd4: DUP4
00001bd5: PUSH2 0x1bbe
00001bd8: JUMP
00001bd9: JUMPDEST
00001bda: SWAP2
00001bdb: POP
00001bdc: PUSH2 0x1be4
00001bdf: DUP3
00001be0: PUSH2 0x1bc9
00001be3: JUMP
00001be4: JUMPDEST
00001be5: PUSH1 0x00
00001be7: DUP3
00001be8: ADD
00001be9: SWAP1
00001bea: POP
00001beb: SWAP2
00001bec: SWAP1
00001bed: POP
00001bee: JUMP
00001bef: JUMPDEST
00001bf0: PUSH1 0x00
00001bf2: PUSH2 0x1bfa
00001bf5: DUP3
00001bf6: PUSH2 0x1bcc
00001bf9: JUMP
00001bfa: JUMPDEST
00001bfb: SWAP2
00001bfc: POP
00001bfd: DUP2
00001bfe: SWAP1
00001bff: POP
00001c00: SWAP2
00001c01: SWAP1
00001c02: POP
00001c03: JUMP
00001c04: JUMPDEST
00001c05: PUSH32 0x4661696c656420746f2073656e64204574686572000000000000000000000000
00001c26: PUSH1 0x00
00001c28: DUP3
00001c29: ADD
00001c2a: MSTORE
00001c2b: POP
00001c2c: JUMP
00001c2d: JUMPDEST
00001c2e: PUSH1 0x00
00001c30: PUSH2 0x1c3a
00001c33: PUSH1 0x14
00001c35: DUP4
00001c36: PUSH2 0x17c4
00001c39: JUMP
00001c3a: JUMPDEST
00001c3b: SWAP2
00001c3c: POP
00001c3d: PUSH2 0x1c45
00001c40: DUP3
00001c41: PUSH2 0x1c04
00001c44: JUMP
00001c45: JUMPDEST
00001c46: PUSH1 0x20
00001c48: DUP3
00001c49: ADD
00001c4a: SWAP1
00001c4b: POP
00001c4c: SWAP2
00001c4d: SWAP1
00001c4e: POP
00001c4f: JUMP
00001c50: JUMPDEST
00001c51: PUSH1 0x00
00001c53: PUSH1 0x20
00001c55: DUP3
00001c56: ADD
00001c57: SWAP1
00001c58: POP
00001c59: DUP2
00001c5a: DUP2
00001c5b: SUB
00001c5c: PUSH1 0x00
00001c5e: DUP4
00001c5f: ADD
00001c60: MSTORE
00001c61: PUSH2 0x1c69
00001c64: DUP2
00001c65: PUSH2 0x1c2d
00001c68: JUMP
00001c69: JUMPDEST
00001c6a: SWAP1
00001c6b: POP
00001c6c: SWAP2
00001c6d: SWAP1
00001c6e: POP
00001c6f: JUMP
00001c70: JUMPDEST
00001c71: PUSH1 0x00
00001c73: PUSH1 0x40
00001c75: DUP3
00001c76: ADD
00001c77: SWAP1
00001c78: POP
00001c79: PUSH2 0x1c85
00001c7c: PUSH1 0x00
00001c7e: DUP4
00001c7f: ADD
00001c80: DUP6
00001c81: PUSH2 0x14ea
00001c84: JUMP
00001c85: JUMPDEST
00001c86: PUSH2 0x1c92
00001c89: PUSH1 0x20
00001c8b: DUP4
00001c8c: ADD
00001c8d: DUP5
00001c8e: PUSH2 0x1155
00001c91: JUMP
00001c92: JUMPDEST
00001c93: SWAP4
00001c94: SWAP3
00001c95: POP
00001c96: POP
00001c97: POP
00001c98: JUMP
00001c99: JUMPDEST
00001c9a: PUSH2 0x1ca2
00001c9d: DUP2
00001c9e: PUSH2 0x1204
00001ca1: JUMP
00001ca2: JUMPDEST
00001ca3: DUP2
00001ca4: EQ
00001ca5: PUSH2 0x1cad
00001ca8: JUMPI
00001ca9: PUSH1 0x00
00001cab: DUP1
00001cac: REVERT
00001cad: JUMPDEST
00001cae: POP
00001caf: JUMP
00001cb0: JUMPDEST
00001cb1: PUSH1 0x00
00001cb3: DUP2
00001cb4: MLOAD
00001cb5: SWAP1
00001cb6: POP
00001cb7: PUSH2 0x1cbf
00001cba: DUP2
00001cbb: PUSH2 0x1c99
00001cbe: JUMP
00001cbf: JUMPDEST
00001cc0: SWAP3
00001cc1: SWAP2
00001cc2: POP
00001cc3: POP
00001cc4: JUMP
00001cc5: JUMPDEST
00001cc6: PUSH1 0x00
00001cc8: PUSH1 0x20
00001cca: DUP3
00001ccb: DUP5
00001ccc: SUB
00001ccd: SLT
00001cce: ISZERO
00001ccf: PUSH2 0x1cdb
00001cd2: JUMPI
00001cd3: PUSH2 0x1cda
00001cd6: PUSH2 0x10b6
00001cd9: JUMP
00001cda: JUMPDEST
00001cdb: JUMPDEST
00001cdc: PUSH1 0x00
00001cde: PUSH2 0x1ce9
00001ce1: DUP5
00001ce2: DUP3
00001ce3: DUP6
00001ce4: ADD
00001ce5: PUSH2 0x1cb0
00001ce8: JUMP
00001ce9: JUMPDEST
00001cea: SWAP2
00001ceb: POP
00001cec: POP
00001ced: SWAP3
00001cee: SWAP2
00001cef: POP
00001cf0: POP
00001cf1: JUMP
00001cf2: JUMPDEST
00001cf3: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00001d14: PUSH1 0x00
00001d16: DUP3
00001d17: ADD
00001d18: MSTORE
00001d19: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
00001d3a: PUSH1 0x20
00001d3c: DUP3
00001d3d: ADD
00001d3e: MSTORE
00001d3f: POP
00001d40: JUMP
00001d41: JUMPDEST
00001d42: PUSH1 0x00
00001d44: PUSH2 0x1d4e
00001d47: PUSH1 0x2a
00001d49: DUP4
00001d4a: PUSH2 0x17c4
00001d4d: JUMP
00001d4e: JUMPDEST
00001d4f: SWAP2
00001d50: POP
00001d51: PUSH2 0x1d59
00001d54: DUP3
00001d55: PUSH2 0x1cf2
00001d58: JUMP
00001d59: JUMPDEST
00001d5a: PUSH1 0x40
00001d5c: DUP3
00001d5d: ADD
00001d5e: SWAP1
00001d5f: POP
00001d60: SWAP2
00001d61: SWAP1
00001d62: POP
00001d63: JUMP
00001d64: JUMPDEST
00001d65: PUSH1 0x00
00001d67: PUSH1 0x20
00001d69: DUP3
00001d6a: ADD
00001d6b: SWAP1
00001d6c: POP
00001d6d: DUP2
00001d6e: DUP2
00001d6f: SUB
00001d70: PUSH1 0x00
00001d72: DUP4
00001d73: ADD
00001d74: MSTORE
00001d75: PUSH2 0x1d7d
00001d78: DUP2
00001d79: PUSH2 0x1d41
00001d7c: JUMP
00001d7d: JUMPDEST
00001d7e: SWAP1
00001d7f: POP
00001d80: SWAP2
00001d81: SWAP1
00001d82: POP
00001d83: JUMP
00001d84: JUMPDEST
00001d85: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00001da6: PUSH1 0x00
00001da8: DUP3
00001da9: ADD
00001daa: MSTORE
00001dab: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
00001dcc: PUSH1 0x20
00001dce: DUP3
00001dcf: ADD
00001dd0: MSTORE
00001dd1: POP
00001dd2: JUMP
00001dd3: JUMPDEST
00001dd4: PUSH1 0x00
00001dd6: PUSH2 0x1de0
00001dd9: PUSH1 0x26
00001ddb: DUP4
00001ddc: PUSH2 0x17c4
00001ddf: JUMP
00001de0: JUMPDEST
00001de1: SWAP2
00001de2: POP
00001de3: PUSH2 0x1deb
00001de6: DUP3
00001de7: PUSH2 0x1d84
00001dea: JUMP
00001deb: JUMPDEST
00001dec: PUSH1 0x40
00001dee: DUP3
00001def: ADD
00001df0: SWAP1
00001df1: POP
00001df2: SWAP2
00001df3: SWAP1
00001df4: POP
00001df5: JUMP
00001df6: JUMPDEST
00001df7: PUSH1 0x00
00001df9: PUSH1 0x20
00001dfb: DUP3
00001dfc: ADD
00001dfd: SWAP1
00001dfe: POP
00001dff: DUP2
00001e00: DUP2
00001e01: SUB
00001e02: PUSH1 0x00
00001e04: DUP4
00001e05: ADD
00001e06: MSTORE
00001e07: PUSH2 0x1e0f
00001e0a: DUP2
00001e0b: PUSH2 0x1dd3
00001e0e: JUMP
00001e0f: JUMPDEST
00001e10: SWAP1
00001e11: POP
00001e12: SWAP2
00001e13: SWAP1
00001e14: POP
00001e15: JUMP
00001e16: JUMPDEST
00001e17: PUSH1 0x00
00001e19: DUP2
00001e1a: MLOAD
00001e1b: SWAP1
00001e1c: POP
00001e1d: SWAP2
00001e1e: SWAP1
00001e1f: POP
00001e20: JUMP
00001e21: JUMPDEST
00001e22: PUSH1 0x00
00001e24: JUMPDEST
00001e25: DUP4
00001e26: DUP2
00001e27: LT
00001e28: ISZERO
00001e29: PUSH2 0x1e3f
00001e2c: JUMPI
00001e2d: DUP1
00001e2e: DUP3
00001e2f: ADD
00001e30: MLOAD
00001e31: DUP2
00001e32: DUP5
00001e33: ADD
00001e34: MSTORE
00001e35: PUSH1 0x20
00001e37: DUP2
00001e38: ADD
00001e39: SWAP1
00001e3a: POP
00001e3b: PUSH2 0x1e24
00001e3e: JUMP
00001e3f: JUMPDEST
00001e40: PUSH1 0x00
00001e42: DUP5
00001e43: DUP5
00001e44: ADD
00001e45: MSTORE
00001e46: POP
00001e47: POP
00001e48: POP
00001e49: POP
00001e4a: JUMP
00001e4b: JUMPDEST
00001e4c: PUSH1 0x00
00001e4e: PUSH2 0x1e56
00001e51: DUP3
00001e52: PUSH2 0x1e16
00001e55: JUMP
00001e56: JUMPDEST
00001e57: PUSH2 0x1e60
00001e5a: DUP2
00001e5b: DUP6
00001e5c: PUSH2 0x1bbe
00001e5f: JUMP
00001e60: JUMPDEST
00001e61: SWAP4
00001e62: POP
00001e63: PUSH2 0x1e70
00001e66: DUP2
00001e67: DUP6
00001e68: PUSH1 0x20
00001e6a: DUP7
00001e6b: ADD
00001e6c: PUSH2 0x1e21
00001e6f: JUMP
00001e70: JUMPDEST
00001e71: DUP1
00001e72: DUP5
00001e73: ADD
00001e74: SWAP2
00001e75: POP
00001e76: POP
00001e77: SWAP3
00001e78: SWAP2
00001e79: POP
00001e7a: POP
00001e7b: JUMP
00001e7c: JUMPDEST
00001e7d: PUSH1 0x00
00001e7f: PUSH2 0x1e88
00001e82: DUP3
00001e83: DUP5
00001e84: PUSH2 0x1e4b
00001e87: JUMP
00001e88: JUMPDEST
00001e89: SWAP2
00001e8a: POP
00001e8b: DUP2
00001e8c: SWAP1
00001e8d: POP
00001e8e: SWAP3
00001e8f: SWAP2
00001e90: POP
00001e91: POP
00001e92: JUMP
00001e93: JUMPDEST
00001e94: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001eb5: PUSH1 0x00
00001eb7: DUP3
00001eb8: ADD
00001eb9: MSTORE
00001eba: POP
00001ebb: JUMP
00001ebc: JUMPDEST
00001ebd: PUSH1 0x00
00001ebf: PUSH2 0x1ec9
00001ec2: PUSH1 0x1d
00001ec4: DUP4
00001ec5: PUSH2 0x17c4
00001ec8: JUMP
00001ec9: JUMPDEST
00001eca: SWAP2
00001ecb: POP
00001ecc: PUSH2 0x1ed4
00001ecf: DUP3
00001ed0: PUSH2 0x1e93
00001ed3: JUMP
00001ed4: JUMPDEST
00001ed5: PUSH1 0x20
00001ed7: DUP3
00001ed8: ADD
00001ed9: SWAP1
00001eda: POP
00001edb: SWAP2
00001edc: SWAP1
00001edd: POP
00001ede: JUMP
00001edf: JUMPDEST
00001ee0: PUSH1 0x00
00001ee2: PUSH1 0x20
00001ee4: DUP3
00001ee5: ADD
00001ee6: SWAP1
00001ee7: POP
00001ee8: DUP2
00001ee9: DUP2
00001eea: SUB
00001eeb: PUSH1 0x00
00001eed: DUP4
00001eee: ADD
00001eef: MSTORE
00001ef0: PUSH2 0x1ef8
00001ef3: DUP2
00001ef4: PUSH2 0x1ebc
00001ef7: JUMP
00001ef8: JUMPDEST
00001ef9: SWAP1
00001efa: POP
00001efb: SWAP2
00001efc: SWAP1
00001efd: POP
00001efe: JUMP
00001eff: JUMPDEST
00001f00: PUSH1 0x00
00001f02: DUP2
00001f03: MLOAD
00001f04: SWAP1
00001f05: POP
00001f06: SWAP2
00001f07: SWAP1
00001f08: POP
00001f09: JUMP
00001f0a: JUMPDEST
00001f0b: PUSH1 0x00
00001f0d: PUSH2 0x1f15
00001f10: DUP3
00001f11: PUSH2 0x1eff
00001f14: JUMP
00001f15: JUMPDEST
00001f16: PUSH2 0x1f1f
00001f19: DUP2
00001f1a: DUP6
00001f1b: PUSH2 0x17c4
00001f1e: JUMP
00001f1f: JUMPDEST
00001f20: SWAP4
00001f21: POP
00001f22: PUSH2 0x1f2f
00001f25: DUP2
00001f26: DUP6
00001f27: PUSH1 0x20
00001f29: DUP7
00001f2a: ADD
00001f2b: PUSH2 0x1e21
00001f2e: JUMP
00001f2f: JUMPDEST
00001f30: PUSH2 0x1f38
00001f33: DUP2
00001f34: PUSH2 0x1270
00001f37: JUMP
00001f38: JUMPDEST
00001f39: DUP5
00001f3a: ADD
00001f3b: SWAP2
00001f3c: POP
00001f3d: POP
00001f3e: SWAP3
00001f3f: SWAP2
00001f40: POP
00001f41: POP
00001f42: JUMP
00001f43: JUMPDEST
00001f44: PUSH1 0x00
00001f46: PUSH1 0x20
00001f48: DUP3
00001f49: ADD
00001f4a: SWAP1
00001f4b: POP
00001f4c: DUP2
00001f4d: DUP2
00001f4e: SUB
00001f4f: PUSH1 0x00
00001f51: DUP4
00001f52: ADD
00001f53: MSTORE
00001f54: PUSH2 0x1f5d
00001f57: DUP2
00001f58: DUP5
00001f59: PUSH2 0x1f0a
00001f5c: JUMP
00001f5d: JUMPDEST
00001f5e: SWAP1
00001f5f: POP
00001f60: SWAP3
00001f61: SWAP2
00001f62: POP
00001f63: POP
00001f64: JUMP
00001f65: INVALID
00001f66: LOG2
00001f67: PUSH5 0x6970667358
00001f6d: UNKNOWN(0x22)
00001f6e: SLT
00001f6f: KECCAK256
00001f70: UNKNOWN(0xBF)
00001f71: SWAP6
00001f72: SWAP15
00001f73: DIV
00001f74: STOP
00001f75: UNKNOWN(0xBB)
00001f76: PC
00001f77: RETURNDATASIZE
00001f78: SWAP14
00001f79: UNKNOWN(0xA7)
00001f7a: SELFDESTRUCT
00001f7b: CHAINID
00001f7c: SWAP6
00001f7d: UNKNOWN(0xF8)
00001f7e: UNKNOWN(0xD4)
00001f7f: STATICCALL
00001f80: UNKNOWN(0xEB)
00001f81: UNKNOWN(0xB8)
00001f82: DUP5
00001f83: UNKNOWN(0xCB)
00001f84: AND
00001f85: UNKNOWN(0xD1)
00001f86: UNKNOWN(0xF7)
00001f87: SWAP9
00001f88: UNKNOWN(0xA8)
00001f89: UNKNOWN(0x23)
00001f8a: CALLDATASIZE
00001f8b: UNKNOWN(0xCA)
00001f8c: UNKNOWN(0x2F)
00001f8d: UNKNOWN(0xD9)
00001f8e: PUSH3 0x986473
00001f92: PUSH16

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce
call_targets: 0x5018cc0d628fb322b2a040cfcd269a36c60b1538
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x5018cc0d628fb322b2a040cfcd269a36c60b1538"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x71629b97",
            "selector": "0x71629b97",
            "calldata_variants": [
                "0x71629b97",
                "0x71629b970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc197c81",
            "selector": "0xbc197c81",
            "calldata_variants": [
                "0xbc197c81",
                "0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf23a6e61",
            "selector": "0xf23a6e61",
            "calldata_variants": [
                "0xf23a6e61",
                "0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x01ffc9a7",
            "selector": "0x01ffc9a7",
            "calldata_variants": [
                "0x01ffc9a7",
                "0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x150b7a02",
            "selector": "0x150b7a02",
            "calldata_variants": [
                "0x150b7a02",
                "0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1555,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3205,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3954,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [
        {
            "pc": 1138,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1642,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2818,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 3
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x885898acfbca4cc1de20955d5a6c0f2bf54cea371c6c076cab222e0be2b34af4
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 22,
    "trace_id": "0x885898acfbca4cc1de20955d5a6c0f2bf54cea371c6c076cab222e0be2b34af4",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x71629b97",
            "selector": "0x71629b97",
            "calldata_variants": [
                "0x71629b97",
                "0x71629b970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc197c81",
            "selector": "0xbc197c81",
            "calldata_variants": [
                "0xbc197c81",
                "0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf23a6e61",
            "selector": "0xf23a6e61",
            "calldata_variants": [
                "0xf23a6e61",
                "0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x01ffc9a7",
            "selector": "0x01ffc9a7",
            "calldata_variants": [
                "0x01ffc9a7",
                "0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x150b7a02",
            "selector": "0x150b7a02",
            "calldata_variants": [
                "0x150b7a02",
                "0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 1138,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1642,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2818,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 1
}
medium access_control codex Initializer appears publicly callable; critical storage can be set by anyone once 75 no
view
evidence_json
{
    "evidence": "Initializer-style guard is present (\"Initializable: contract is already initialized\" revert string) but no msg.sender check is observed before SSTORE updates to slot-0 flags and slot-2 address in the initializer path.",
    "locations": [
        "selector:0xc4d66de8",
        "pc:0x08cc",
        "pc:0x0969",
        "pc:0x0a15"
    ],
    "recommendation": "Ensure initialization is executed atomically at deployment (proxy constructor/initializer call). If this is an implementation contract, disable initializers (e.g., `_disableInitializers()` pattern) and restrict initialization to trusted admin when appropriate.",
    "exploit_scenario": "If deployment or proxy initialization is not executed in the same transaction, an attacker can call the initializer (selector 0xc4d66de8) once, set owner/configuration (e.g., slot-2 address), and then invoke owner-only flows like token/ETH transfers. This is especially risky for beacon/proxy deployments if initialization is missed or delayed."
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce
call_targets: 0x5018cc0d628fb322b2a040cfcd269a36c60b1538
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xa9ecaa0c39a29454b2be8c1cf326eb4025c4f783a0b25dd6515e25ab24ade0ce",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x5018cc0d628fb322b2a040cfcd269a36c60b1538"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x71629b97",
            "selector": "0x71629b97",
            "calldata_variants": [
                "0x71629b97",
                "0x71629b970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc197c81",
            "selector": "0xbc197c81",
            "calldata_variants": [
                "0xbc197c81",
                "0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf23a6e61",
            "selector": "0xf23a6e61",
            "calldata_variants": [
                "0xf23a6e61",
                "0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x01ffc9a7",
            "selector": "0x01ffc9a7",
            "calldata_variants": [
                "0x01ffc9a7",
                "0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x150b7a02",
            "selector": "0x150b7a02",
            "calldata_variants": [
                "0x150b7a02",
                "0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1555,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3205,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3954,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": [
        {
            "pc": 1138,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1642,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 2818,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
low other codex SELFDESTRUCT opcode present in runtime bytecode (appears unreachable) 65 no
view
evidence_json
{
    "evidence": "SELFDESTRUCT opcode appears in a non-JUMPDEST region after STOP/INVALID, indicating potential data/unreachable section but not proven.",
    "locations": [
        "pc:0x1f75"
    ],
    "recommendation": "Confirm that the SELFDESTRUCT region is unreachable; if not, restrict it with strict access control or remove it in future deployments.",
    "exploit_scenario": "If control flow can ever reach the SELFDESTRUCT opcode, the contract could be permanently destroyed and funds sent to an attacker-chosen address. The opcode is in a non-JUMPDEST region following STOP/INVALID, so reachability is uncertain."
}
low reentrancy codex Low-level CALLs with computed targets/value; potential untrusted-call or reentrancy surface 65 no
view
evidence_json
{
    "evidence": "Multiple CALL opcodes with computed target/value and full-gas forwarding are present; detector flagged untrusted CALL and ETH value transfer possible.",
    "locations": [
        "pc:0x0613",
        "pc:0x0c85",
        "pc:0x0f72"
    ],
    "recommendation": "Constrain call targets to trusted addresses, validate inputs, and ensure state changes occur before external calls (or use a reentrancy guard) in any function that uses these CALL sites.",
    "exploit_scenario": "If any of these CALLs are reachable with user-controlled target/value, an attacker-controlled contract could reenter during the external call or trigger unexpected behavior. The detector notes computed target/value; a validation trace resolved to self in one path, so target control is uncertain."
}