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

Analysis Run

957b3efc-0a4c-4bfd-acd0-fc4213acca25

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 3:02 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
Not yet
Best current signal
Authorization based on tx.origin
crit 0 high 0 proxy context implementation known
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
31535 report.consolidate complete 1 / 1 3 months ago
77837 artifact.fetch complete 1 / 3 1 week ago
77838 tool.cast_disasm complete 1 / 3 1 week ago
77839 analysis.bundle complete 1 / 3 1 week ago
77840 capability.graph complete 1 / 3 1 week ago
77841 detector.run complete 1 / 3 1 week ago
77842 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: yes
Verified Source: no

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.
View stderr
[codex:595555] OpenAI Codex v0.77.0 (research preview)
[codex:595555] --------
[codex:595555] workdir: /tmp/codex-multi-nqz4d5cu
[codex:595555] model: gpt-5.2-codex
[codex:595555] provider: openai
[codex:595555] approval: never
[codex:595555] sandbox: read-only
[codex:595555] reasoning effort: xhigh
[codex:595555] reasoning summaries: auto
[codex:595555] session id: 019b86ee-4557-7950-829d-f6ebfd343f40
[codex:595555] --------
[codex:595555] user
[codex:595555] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:595555] 
[codex:595555] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:595555] 
[codex:595555] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:595555] - Gas inefficiency, code quality, or best practices
[codex:595555] - Theoretical vulnerabilities without a clear extraction path
[codex:595555] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:595555] - Issues requiring social engineering or off-chain coordination
[codex:595555] 
[codex:595555] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:595555] - CALL/DELEGATECALL with controllable destination or calldata
[codex:595555] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:595555] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:595555] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:595555] - External calls before state updates (reentrancy)
[codex:595555] - SELFDESTRUCT with controllable beneficiary
[codex:595555] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:595555] 
[codex:595555] For each finding, you MUST explain:
[codex:595555] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:595555] 2. The concrete sequence of transactions to extract value
[codex:595555] 3. Why you believe this is exploitable (not just suspicious)
[codex:595555] 
[codex:595555] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:595555] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:595555] 
[codex:595555] Output MUST be valid JSON matching the provided schema.
[codex:595555] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:595555] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:595555] mcp startup: no servers
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:595555] exec
[codex:595555] /bin/bash -lc ls in /tmp/codex-multi-nqz4d5cu succeeded in 5ms:
[codex:595555] BYTECODE_BUNDLE.txt
[codex:595555] codex-output-schema.json
[codex:595555] exec
[codex:595555] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-nqz4d5cu succeeded in 5ms:
[codex:595555] Runtime bytecode bundle for best-effort auditing.
[codex:595555] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:595555] 
[codex:595555] FILE: runtime_bytecode.hex
[codex:595555] 0x6080604052600436106100a05760003560e01c80638b4c40b0116100645780638b4c40b0146101a45780638f601f66146101ac57806391c49bf8146101d95780639a2ac6d5146101ee578063a9f9e67514610201578063b1a1a88214610221576100f4565b80631532ec34146100f95780633cb747bf14610119578063485cc9551461014457806358a997f614610164578063838b252014610184576100f4565b366100f4576100ae33610234565b156100d45760405162461bcd60e51b81526004016100cb9061137d565b60405180910390fd5b6100f233336213d6206040518060200160405280600081525061023e565b005b600080fd5b34801561010557600080fd5b506100f261011436600461108b565b61030b565b34801561012557600080fd5b5061012e61050e565b60405161013b9190611297565b60405180910390f35b34801561015057600080fd5b506100f261015f366004610f5c565b61051d565b34801561017057600080fd5b506100f261017f3660046110f8565b610574565b34801561019057600080fd5b506100f261019f36600461101c565b6105b2565b6100f26105cb565b3480156101b857600080fd5b506101cc6101c7366004610f5c565b6105cd565b60405161013b9190611440565b3480156101e557600080fd5b5061012e6105ea565b6100f26101fc366004611175565b6105f9565b34801561020d57600080fd5b506100f261021c366004610f8e565b610641565b6100f261022f3660046111d4565b61082b565b803b15155b919050565b600063662a633a60e01b60006006602160991b018787348760405160240161026b969594939291906112ab565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526001549091506102b7906001600160a01b03168483610898565b836001600160a01b0316856001600160a01b03167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f2334856040516102fc92919061146c565b60405180910390a35050505050565b6001546001600160a01b031661031f61097a565b6001600160a01b0316336001600160a01b03161461036e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611532602e913960400191505060405180910390fd5b806001600160a01b031661038061097a565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b857600080fd5b505afa1580156103cc573d6000803e3d6000fd5b505050506040513d60208110156103e257600080fd5b50516001600160a01b0316146104295760405162461bcd60e51b81526004018080602001828103825260308152602001806114b26030913960400191505060405180910390fd5b604080516000808252602082019092526001600160a01b038716908690604051610453919061127b565b60006040518083038185875af1925050503d8060008114610490576040519150601f19603f3d011682016040523d82523d6000602084013e610495565b606091505b50509050806104b65760405162461bcd60e51b81526004016100cb906113a6565b856001600160a01b0316876001600160a01b03167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e6318787876040516104fd93929190611449565b60405180910390a350505050505050565b6000546001600160a01b031681565b6000546001600160a01b0316156105465760405162461bcd60e51b81526004016100cb906113fa565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055565b61057d33610234565b1561059a5760405162461bcd60e51b81526004016100cb9061137d565b6105aa8686333388888888610989565b505050505050565b6105c28787338888888888610989565b50505050505050565b565b600260209081526000928352604080842090915290825290205481565b6001546001600160a01b031681565b61063b33858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061023e92505050565b50505050565b6001546001600160a01b031661065561097a565b6001600160a01b0316336001600160a01b0316146106a45760405162461bcd60e51b815260040180806020018281038252602e815260200180611532602e913960400191505060405180910390fd5b806001600160a01b03166106b661097a565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ee57600080fd5b505afa158015610702573d6000803e3d6000fd5b505050506040513d602081101561071857600080fd5b50516001600160a01b03161461075f5760405162461bcd60e51b81526004018080602001828103825260308152602001806114b26030913960400191505060405180910390fd5b6001600160a01b038089166000908152600260209081526040808320938b168352929052205461078f9085610ab9565b6001600160a01b03808a166000818152600260209081526040808320948d16835293905291909120919091556107c6908686610b16565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610819949392919061134b565b60405180910390a45050505050505050565b61083433610234565b156108515760405162461bcd60e51b81526004016100cb9061137d565b61089333338585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061023e92505050565b505050565b6108a061097a565b6001600160a01b0316633dbb202b8483856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018363ffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610918578181015183820152602001610900565b50505050905090810190601f1680156109455780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561096657600080fd5b505af11580156105c2573d6000803e3d6000fd5b6000546001600160a01b031690565b61099e6001600160a01b038916873087610b68565b600063662a633a60e01b898989898988886040516024016109c597969594939291906112fa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152600154909150610a11906001600160a01b03168583610898565b6001600160a01b03808a166000908152600260209081526040808320938c1683529290522054610a419086610bc2565b6001600160a01b03808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610aa6908b908b908a908a9061134b565b60405180910390a4505050505050505050565b600082821115610b10576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610893908490610c23565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261063b908590610c23565b600082820183811015610c1c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000610c78826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610cd49092919063ffffffff16565b80519091501561089357808060200190516020811015610c9757600080fd5b50516108935760405162461bcd60e51b815260040180806020018281038252602a815260200180611508602a913960400191505060405180910390fd5b6060610ce38484600085610ceb565b949350505050565b606082471015610d2c5760405162461bcd60e51b81526004018080602001828103825260268152602001806114e26026913960400191505060405180910390fd5b610d3585610234565b610d86576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310610dc45780518252601f199092019160209182019101610da5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610e26576040519150601f19603f3d011682016040523d82523d6000602084013e610e2b565b606091505b5091509150610e3b828286610e46565b979650505050505050565b60608315610e55575081610c1c565b825115610e655782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610eaf578181015183820152602001610e97565b50505050905090810190601f168015610edc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356001600160a01b038116811461023957600080fd5b60008083601f840112610f12578182fd5b50813567ffffffffffffffff811115610f29578182fd5b602083019150836020828501011115610f4157600080fd5b9250929050565b803563ffffffff8116811461023957600080fd5b60008060408385031215610f6e578182fd5b610f7783610eea565b9150610f8560208401610eea565b90509250929050565b600080600080600080600060c0888a031215610fa8578283fd5b610fb188610eea565b9650610fbf60208901610eea565b9550610fcd60408901610eea565b9450610fdb60608901610eea565b93506080880135925060a088013567ffffffffffffffff811115610ffd578283fd5b6110098a828b01610f01565b989b979a50959850939692959293505050565b600080600080600080600060c0888a031215611036578283fd5b61103f88610eea565b965061104d60208901610eea565b955061105b60408901610eea565b94506060880135935061107060808901610f48565b925060a088013567ffffffffffffffff811115610ffd578283fd5b6000806000806000608086880312156110a2578081fd5b6110ab86610eea565b94506110b960208701610eea565b935060408601359250606086013567ffffffffffffffff8111156110db578182fd5b6110e788828901610f01565b969995985093965092949392505050565b60008060008060008060a08789031215611110578182fd5b61111987610eea565b955061112760208801610eea565b94506040870135935061113c60608801610f48565b9250608087013567ffffffffffffffff811115611157578283fd5b61116389828a01610f01565b979a9699509497509295939492505050565b6000806000806060858703121561118a578384fd5b61119385610eea565b93506111a160208601610f48565b9250604085013567ffffffffffffffff8111156111bc578283fd5b6111c887828801610f01565b95989497509550505050565b6000806000604084860312156111e8578283fd5b6111f184610f48565b9250602084013567ffffffffffffffff81111561120c578283fd5b61121886828701610f01565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452611267816020860160208601611485565b601f01601f19169290920160200192915050565b6000825161128d818460208701611485565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03878116825286811660208301528581166040830152841660608201526080810183905260c060a082018190526000906112ee9083018461124f565b98975050505050505050565b6001600160a01b03888116825287811660208301528681166040830152851660608201526080810184905260c060a0820181905260009061133e9083018486611225565b9998505050505050505050565b600060018060a01b038616825284602083015260606040830152611373606083018486611225565b9695505050505050565b6020808252600f908201526e4163636f756e74206e6f7420454f4160881b604082015260600190565b60208082526034908201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60408201527308115512081d1c985b9cd9995c8819985a5b195960621b606082015260800190565b60208082526026908201527f436f6e74726163742068617320616c7265616479206265656e20696e697469616040820152653634bd32b21760d11b606082015260800190565b90815260200190565b600084825260406020830152611463604083018486611225565b95945050505050565b600083825260406020830152610ce3604083018461124f565b60005b838110156114a0578181015183820152602001611488565b8381111561063b575050600091015256fe4e564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f6d61696e206d657373616765416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644e564d5f58434841494e3a206d657373656e67657220636f6e747261637420756e61757468656e74696361746564a164736f6c6343000706000a
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing bytecode for exploit potential**
[codex:595555] 
[codex:595555] I'm examining the contract's bytecode and function selectors to spot any vulnerabilities, especially around unauthorized cross-domain messaging and unprotected initializers. I plan to decode selectors and storage slots to uncover any exploit paths, and I'll use Python scripts to assist with parsing since I can run code but not write files.
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] import re
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] # print first bytes
[codex:595555] print('len', len(code)//2)
[codex:595555] # find function selectors in dispatcher? We'll parse occurrences of 63???????? and then 14?? etc? We'll just list unique 4-byte selectors from initial dispatcher region.
[codex:595555] # Basic parsing of first 200 bytes.
[codex:595555] from binascii import unhexlify
[codex:595555] b=unhexlify(code)
[codex:595555] # scan for PUSH4 instructions (0x63)
[codex:595555] selectors=[]
[codex:595555] for i in range(len(b)-4):
[codex:595555]     if b[i]==0x63:
[codex:595555]         sel=b[i+1:i+5].hex()
[codex:595555]         selectors.append(sel)
[codex:595555] # show first 20 unique
[codex:595555] seen=[]
[codex:595555] for s in selectors:
[codex:595555]     if s not in seen:
[codex:595555]         seen.append(s)
[codex:595555] print('push4 count', len(selectors),'unique',len(seen))
[codex:595555] print('unique selectors', seen[:20])
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] len 5484
[codex:595555] push4 count 48 unique 37
[codex:595555] unique selectors ['8b4c40b0', '8f601f66', '91c49bf8', '9a2ac6d5', 'a9f9e675', 'b1a1a882', '1532ec34', '3cb747bf', '485cc955', '58a997f6', '838b2520', '662a633a', '3a60e01b', '6e296e45', 'ffffffff', '3dbb202b', 'e0cc6d0e', '74696f6e', 'a9059cbb', '23b872dd']
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing bytecode for exploit paths**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] ops={'CALL':0xf1,'DELEGATECALL':0xf4,'STATICCALL':0xfa,'SELFDESTRUCT':0xff}
[codex:595555] for name,op in ops.items():
[codex:595555]     idx=[i for i,byte in enumerate(b) if byte==op]
[codex:595555]     print(name, len(idx), idx[:10])
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 18ms:
[codex:595555] CALL 4 [1120, 2409, 3574, 4587]
[codex:595555] DELEGATECALL 4 [98, 158, 164, 744]
[codex:595555] STATICCALL 4 [955, 1348, 1777, 2499]
[codex:595555] SELFDESTRUCT 80 [916, 917, 918, 919, 1738, 1739, 1740, 1741, 2231, 2232]
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Planning EVM opcode parsing**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # simple disassemble
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] # Add DUP, SWAP
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] # basic names
[codex:595555] basic={
[codex:595555] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:595555] }
[codex:595555] for k,v in basic.items():
[codex:595555]     opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] # find CALL/DELEGATECALL/STATICCALL/SELFDESTRUCT positions
[codex:595555] for target in ['CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT']:
[codex:595555]     positions=[pos for pos,name,_ in ops if name==target]
[codex:595555]     print(target, positions)
[codex:595555] 
[codex:595555] # also list SSTORE positions around storage slots small? Look for SSTORE preceded by PUSH1/PUSH2 with small value? We'll just print context for each SSTORE.
[codex:595555] print('SSTORE count', sum(1 for _,n,_ in ops if n=='SSTORE'))
[codex:595555] # print context around SSTORE for manual analyze
[codex:595555] for idx,(pos,name,data) in enumerate(ops):
[codex:595555]     if name=='SSTORE':
[codex:595555]         # show last 5 ops before
[codex:595555]         context=ops[max(0,idx-5):idx+1]
[codex:595555]         print('SSTORE at',pos, 'context:', [(n,(d.hex() if d else None)) for _,n,d in context])
[codex:595555] 
[codex:595555] # Print CALL contexts
[codex:595555] for idx,(pos,name,data) in enumerate(ops):
[codex:595555]     if name in ('CALL','DELEGATECALL','STATICCALL'):
[codex:595555]         context=ops[max(0,idx-7):idx+1]
[codex:595555]         print('\\n',name,'at',pos, 'context:')
[codex:595555]         for p,n,d in context:
[codex:595555]             print(p, n, d.hex() if d else '')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] CALL [1120, 2409, 3574]
[codex:595555] DELEGATECALL []
[codex:595555] STATICCALL [955, 1777]
[codex:595555] SELFDESTRUCT []
[codex:595555] SSTORE count 4
[codex:595555] SSTORE at 1381 context: [('DUP3', None), ('AND', None), ('OR', None), ('SWAP1', None), ('SWAP2', None), ('SSTORE', None)]
[codex:595555] SSTORE at 1394 context: [('AND', None), ('SWAP2', None), ('AND', None), ('OR', None), ('SWAP1', None), ('SSTORE', None)]
[codex:595555] SSTORE at 1979 context: [('SWAP2', None), ('SHA3', None), ('SWAP2', None), ('SWAP1', None), ('SWAP2', None), ('SSTORE', None)]
[codex:595555] SSTORE at 2669 context: [('SWAP1', None), ('SHA3', None), ('SWAP5', None), ('SWAP1', None), ('SWAP5', None), ('SSTORE', None)]
[codex:595555] 
[codex:595555]  STATICCALL at 955 context:
[codex:595555] 947 JUMPI 
[codex:595555] 948 PUSH1 00
[codex:595555] 950 DUP1 
[codex:595555] 951 REVERT 
[codex:595555] 952 JUMPDEST 
[codex:595555] 953 POP 
[codex:595555] 954 GAS 
[codex:595555] 955 STATICCALL 
[codex:595555] 
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing CALL instructions context**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] # index map from position to op index
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] def dump_context(target, span=20):
[codex:595555]     for pos,name,_ in ops:
[codex:595555]         if name==target:
[codex:595555]             idx=pos_to_idx[pos]
[codex:595555]             start=max(0,idx-span)
[codex:595555]             end=min(len(ops), idx+1)
[codex:595555]             print('\\n==',target,'at',pos,'==')
[codex:595555]             for p,n,d in ops[start:end]:
[codex:595555]                 if d is None:
[codex:595555]                     print(f'{p:04x} {n}')
[codex:595555]                 else:
[codex:595555]                     print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] 
[codex:595555] dump_context('CALL', span=35)
[codex:595555] dump_context('STATICCALL', span=35)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 28ms:
[codex:595555] 
[codex:595555] == CALL at 1120 ==
[codex:595555] 0432 MSTORE
[codex:595555] 0433 PUSH1 0x20
[codex:595555] 0435 DUP3
[codex:595555] 0436 ADD
[codex:595555] 0437 SWAP1
[codex:595555] 0438 SWAP3
[codex:595555] 0439 MSTORE
[codex:595555] 043a PUSH1 0x01
[codex:595555] 043c PUSH1 0x01
[codex:595555] 043e PUSH1 0xa0
[codex:595555] 0440 SHL
[codex:595555] 0441 SUB
[codex:595555] 0442 DUP8
[codex:595555] 0443 AND
[codex:595555] 0444 SWAP1
[codex:595555] 0445 DUP7
[codex:595555] 0446 SWAP1
[codex:595555] 0447 PUSH1 0x40
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing function selectors and CALL usage**
[codex:595555] 
[codex:595555] I'm piecing together the contract’s functions by mapping selectors to jump destinations and inspecting their code blocks to identify ETH-transferring CALLs and potential missing access controls on withdraw functions. I plan to script a disassembly parser to break down each function's instructions and look for security checks or dangerous CALL patterns. This approach should help reveal if there’s an exploit path involving unauthorized ETH or token withdrawals.
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] # Known function entry points from dispatcher (found by scanning for JUMPDESTs after selector dispatch)
[codex:595555] entry_points=[0x0f9,0x119,0x144,0x164,0x184,0x1a4,0x1ac,0x1d9,0x1ee,0x201,0x221]
[codex:595555] 
[codex:595555] # function to dump up to first STOP/RETURN/REVERT/JUMPDEST? We'll limit length.
[codex:595555] terminals={'STOP','RETURN','REVERT','INVALID','SELFDESTRUCT'}
[codex:595555] 
[codex:595555] def dump_from(addr, max_ops=80):
[codex:595555]     idx=pos_to_idx.get(addr)
[codex:595555]     if idx is None:
[codex:595555]         print('addr',hex(addr),'not found')
[codex:595555]         return
[codex:595555]     print('\\n== Function @',hex(addr),'==')
[codex:595555]     count=0
[codex:595555]     for p,n,d in ops[idx:]:
[codex:595555]         if count>=max_ops: break
[codex:595555]         if d is None:
[codex:595555]             print(f'{p:04x} {n}')
[codex:595555]         else:
[codex:595555]             print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555]         count+=1
[codex:595555]         if n in terminals:
[codex:595555]             break
[codex:595555] 
[codex:595555] for ep in entry_points:
[codex:595555]     dump_from(ep, max_ops=80)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 24ms:
[codex:595555] 
[codex:595555] == Function @ 0xf9 ==
[codex:595555] 00f9 JUMPDEST
[codex:595555] 00fa CALLVALUE
[codex:595555] 00fb DUP1
[codex:595555] 00fc ISZERO
[codex:595555] 00fd PUSH2 0x0105
[codex:595555] 0100 JUMPI
[codex:595555] 0101 PUSH1 0x00
[codex:595555] 0103 DUP1
[codex:595555] 0104 REVERT
[codex:595555] 
[codex:595555] == Function @ 0x119 ==
[codex:595555] 0119 JUMPDEST
[codex:595555] 011a CALLVALUE
[codex:595555] 011b DUP1
[codex:595555] 011c ISZERO
[codex:595555] 011d PUSH2 0x0125
[codex:595555] 0120 JUMPI
[codex:595555] 0121 PUSH1 0x00
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing function entry points and control flow**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm function
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] def dump(addr, max_ops=120):
[codex:595555]     idx=pos_to_idx.get(addr)
[codex:595555]     print('\\n-- dump',hex(addr),'--')
[codex:595555]     for p,n,d in ops[idx:idx+max_ops]:
[codex:595555]         if d is None:
[codex:595555]             print(f'{p:04x} {n}')
[codex:595555]         else:
[codex:595555]             print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] 
[codex:595555] for addr in [0x00f9,0x0119,0x0144,0x0164,0x0184,0x01a4,0x01ac,0x01d9,0x01ee,0x0201,0x0221]:
[codex:595555]     dump(addr, max_ops=100)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 22ms:
[codex:595555] 
[codex:595555] -- dump 0xf9 --
[codex:595555] 00f9 JUMPDEST
[codex:595555] 00fa CALLVALUE
[codex:595555] 00fb DUP1
[codex:595555] 00fc ISZERO
[codex:595555] 00fd PUSH2 0x0105
[codex:595555] 0100 JUMPI
[codex:595555] 0101 PUSH1 0x00
[codex:595555] 0103 DUP1
[codex:595555] 0104 REVERT
[codex:595555] 0105 JUMPDEST
[codex:595555] 0106 POP
[codex:595555] 0107 PUSH2 0x00f2
[codex:595555] 010a PUSH2 0x0114
[codex:595555] 010d CALLDATASIZE
[codex:595555] 010e PUSH1 0x04
[codex:595555] 0110 PUSH2 0x108b
[codex:595555] 0113 JUMP
[codex:595555] 0114 JUMPDEST
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Identifying and dumping internal functions**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm setup
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] 
[codex:595555] def dump(addr, max_ops=120):
[codex:595555]     idx=pos_to_idx.get(addr)
[codex:595555]     if idx is None:
[codex:595555]         print('addr',hex(addr),'not found')
[codex:595555]         return
[codex:595555]     print('\\n-- dump',hex(addr),'--')
[codex:595555]     for p,n,d in ops[idx:idx+max_ops]:
[codex:595555]         if d is None:
[codex:595555]             print(f'{p:04x} {n}')
[codex:595555]         else:
[codex:595555]             print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] 
[codex:595555] for addr in [0x030b,0x050e,0x051d,0x0574,0x05b2,0x05cb,0x05cd,0x05ea,0x05f9,0x0641,0x082b,0x0898,0x0989,0x0ab9,0x0b16,0x0b68,0x0bc2,0x0c23,0x0ce3,0x0e46]:
[codex:595555]     dump(addr, max_ops=80)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] 
[codex:595555] -- dump 0x30b --
[codex:595555] 030b JUMPDEST
[codex:595555] 030c PUSH1 0x01
[codex:595555] 030e SLOAD
[codex:595555] 030f PUSH1 0x01
[codex:595555] 0311 PUSH1 0x01
[codex:595555] 0313 PUSH1 0xa0
[codex:595555] 0315 SHL
[codex:595555] 0316 SUB
[codex:595555] 0317 AND
[codex:595555] 0318 PUSH2 0x031f
[codex:595555] 031b PUSH2 0x097a
[codex:595555] 031e JUMP
[codex:595555] 031f JUMPDEST
[codex:595555] 0320 PUSH1 0x01
[codex:595555] 0322 PUSH1 0x01
[codex:595555] 0324 PUSH1 0xa0
[codex:595555] 0326 SHL
[codex:595555] 0327 SUB
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing storage slots and access control**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] def dump(addr, max_ops=120):
[codex:595555]     idx=pos_to_idx.get(addr)
[codex:595555]     if idx is None:
[codex:595555]         print('addr',hex(addr),'not found')
[codex:595555]         return
[codex:595555]     print('\\n-- dump',hex(addr),'--')
[codex:595555]     for p,n,d in ops[idx:idx+max_ops]:
[codex:595555]         if d is None:
[codex:595555]             print(f'{p:04x} {n}')
[codex:595555]         else:
[codex:595555]             print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] 
[codex:595555] for addr in [0x097a]:
[codex:595555]     dump(addr, max_ops=80)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 24ms:
[codex:595555] 
[codex:595555] -- dump 0x97a --
[codex:595555] 097a JUMPDEST
[codex:595555] 097b PUSH1 0x00
[codex:595555] 097d SLOAD
[codex:595555] 097e PUSH1 0x01
[codex:595555] 0980 PUSH1 0x01
[codex:595555] 0982 PUSH1 0xa0
[codex:595555] 0984 SHL
[codex:595555] 0985 SUB
[codex:595555] 0986 AND
[codex:595555] 0987 SWAP1
[codex:595555] 0988 JUMP
[codex:595555] 0989 JUMPDEST
[codex:595555] 098a PUSH2 0x099e
[codex:595555] 098d PUSH1 0x01
[codex:595555] 098f PUSH1 0x01
[codex:595555] 0991 PUSH1 0xa0
[codex:595555] 0993 SHL
[codex:595555] 0994 SUB
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing internal function calls and storage slots**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] addr=0x030b
[codex:595555] idx=pos_to_idx[addr]
[codex:595555] for p,n,d in ops[idx:idx+200]:
[codex:595555]     if d is None:
[codex:595555]         print(f'{p:04x} {n}')
[codex:595555]     else:
[codex:595555]         print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 24ms:
[codex:595555] 030b JUMPDEST
[codex:595555] 030c PUSH1 0x01
[codex:595555] 030e SLOAD
[codex:595555] 030f PUSH1 0x01
[codex:595555] 0311 PUSH1 0x01
[codex:595555] 0313 PUSH1 0xa0
[codex:595555] 0315 SHL
[codex:595555] 0316 SUB
[codex:595555] 0317 AND
[codex:595555] 0318 PUSH2 0x031f
[codex:595555] 031b PUSH2 0x097a
[codex:595555] 031e JUMP
[codex:595555] 031f JUMPDEST
[codex:595555] 0320 PUSH1 0x01
[codex:595555] 0322 PUSH1 0x01
[codex:595555] 0324 PUSH1 0xa0
[codex:595555] 0326 SHL
[codex:595555] 0327 SUB
[codex:595555] 0328 AND
[codex:595555] 0329 CALLER
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing access control and cross-domain calls**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] # find instructions from 0x0420 onwards for 120 ops
[codex:595555] start=0x0420
[codex:595555] # locate index
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+160]:
[codex:595555]     if d is None:
[codex:595555]         print(f'{p:04x} {n}')
[codex:595555]     else:
[codex:595555]         print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] 0420 POP
[codex:595555] 0421 PUSH1 0x40
[codex:595555] 0423 MLOAD
[codex:595555] 0424 DUP1
[codex:595555] 0425 SWAP2
[codex:595555] 0426 SUB
[codex:595555] 0427 SWAP1
[codex:595555] 0428 REVERT
[codex:595555] 0429 JUMPDEST
[codex:595555] 042a PUSH1 0x40
[codex:595555] 042c DUP1
[codex:595555] 042d MLOAD
[codex:595555] 042e PUSH1 0x00
[codex:595555] 0430 DUP1
[codex:595555] 0431 DUP3
[codex:595555] 0432 MSTORE
[codex:595555] 0433 PUSH1 0x20
[codex:595555] 0435 DUP3
[codex:595555] 0436 ADD
[codex:595555] 0437 SWAP1
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing token and ETH transfer functions for vulnerabilities**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 0x20:'SHA3',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] 
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] 
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] start=0x0641
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+260]:
[codex:595555]     if d is None:
[codex:595555]         print(f'{p:04x} {n}')
[codex:595555]     else:
[codex:595555]         print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 21ms:
[codex:595555] 0641 JUMPDEST
[codex:595555] 0642 PUSH1 0x01
[codex:595555] 0644 SLOAD
[codex:595555] 0645 PUSH1 0x01
[codex:595555] 0647 PUSH1 0x01
[codex:595555] 0649 PUSH1 0xa0
[codex:595555] 064b SHL
[codex:595555] 064c SUB
[codex:595555] 064d AND
[codex:595555] 064e PUSH2 0x0655
[codex:595555] 0651 PUSH2 0x097a
[codex:595555] 0654 JUMP
[codex:595555] 0655 JUMPDEST
[codex:595555] 0656 PUSH1 0x01
[codex:595555] 0658 PUSH1 0x01
[codex:595555] 065a PUSH1 0xa0
[codex:595555] 065c SHL
[codex:595555] 065d SUB
[codex:595555] 065e AND
[codex:595555] 065f CALLER
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Examining EVM bytecode after 0x07a7**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op,f'UNK_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] start=0x0780
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+220]:
[codex:595555]     if d is None:
[codex:595555]         print(f'{p:04x} {n}')
[codex:595555]     else:
[codex:595555]         print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 26ms:
[codex:595555] 0780 MSTORE
[codex:595555] 0781 SWAP3
[codex:595555] 0782 SWAP1
[codex:595555] 0783 MSTORE
[codex:595555] 0784 SHA3
[codex:595555] 0785 SLOAD
[codex:595555] 0786 PUSH2 0x078f
[codex:595555] 0789 SWAP1
[codex:595555] 078a DUP6
[codex:595555] 078b PUSH2 0x0ab9
[codex:595555] 078e JUMP
[codex:595555] 078f JUMPDEST
[codex:595555] 0790 PUSH1 0x01
[codex:595555] 0792 PUSH1 0x01
[codex:595555] 0794 PUSH1 0xa0
[codex:595555] 0796 SHL
[codex:595555] 0797 SUB
[codex:595555] 0798 DUP1
[codex:595555] 0799 DUP11
[codex:595555] 079a AND
[codex:595555] 
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Analyzing cross-domain function security and initialization**
[codex:595555] thinking
[codex:595555] **Evaluating storage integrity and external call safety**
[codex:595555] 
[codex:595555] I'm verifying that slot0 holds a valid messenger address after initialization, preventing re-initialization exploits, and checking that no functions allow ETH transfers or delegatecalls without proper access control. I'm carefully inspecting external calls to ensure none allow unauthorized token or ETH transfers.
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]
[codex:595555]     name=opnames.get(op,f'UNK_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f
[codex:595555]         data=b[i+1:i+1+n]
[codex:595555]         ops.append((i,name,data))
[codex:595555]         i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None))
[codex:595555]         i+=1
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] 
[codex:595555] # dump around 0x0d80 and 0x0df0
[codex:595555] for start in [0x0d60,0x0de0]:
[codex:595555]     print('\\n-- around',hex(start),'--')
[codex:595555]     idx=pos_to_idx[start]
[codex:595555]     for p,n,d in ops[idx:idx+160]:
[codex:595555]         if d is None:
[codex:595555]             print(f'{p:04x} {n}')
[codex:595555]         else:
[codex:595555]             print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu exited 1 in 33ms:
[codex:595555] 
[codex:595555] -- around 0xd60 --
[codex:595555] Traceback (most recent call last):
[codex:595555]   File "<stdin>", line 35, in <module>
[codex:595555] KeyError: 3424
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Adjusting instruction offset search**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 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',
[codex:595555] 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',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555]     op=b[i]; name=opnames.get(op,f'UNK_{op:02x}')
[codex:595555]     if 0x60 <= op <= 0x7f:
[codex:595555]         n=op-0x5f; data=b[i+1:i+1+n]; ops.append((i,name,data)); i+=1+n
[codex:595555]     else:
[codex:595555]         ops.append((i,name,None)); i+=1
[codex:595555] 
[codex:595555] # find ops positions around 0xd50
[codex:595555] for pos,name,data in ops:
[codex:595555]     if 0xd40 <= pos <= 0xe20:
[codex:595555]         if data is None:
[codex:595555]             print(f'{pos:04x} {name}')
[codex:595555]         else:
[codex:595555]             print(f'{pos:04x} {name} 0x{data.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 22ms:
[codex:595555] 0d42 PUSH1 0xe5
[codex:595555] 0d44 SHL
[codex:595555] 0d45 DUP2
[codex:595555] 0d46 MSTORE
[codex:595555] 0d47 PUSH1 0x20
[codex:595555] 0d49 PUSH1 0x04
[codex:595555] 0d4b DUP3
[codex:595555] 0d4c ADD
[codex:595555] 0d4d MSTORE
[codex:595555] 0d4e PUSH1 0x1d
[codex:595555] 0d50 PUSH1 0x24
[codex:595555] 0d52 DUP3
[codex:595555] 0d53 ADD
[codex:595555] 0d54 MSTORE
[codex:595555] 0d55 PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
[codex:595555] 0d76 PUSH1 0x44
[codex:595555] 0d78 DUP3
[codex:595555] 0d79 ADD
[codex:595555] 0d7a MSTORE
[codex:595555] 0d7b SWAP1
[codex:595555] 
[codex:595555] thinking
[codex:595555] **Confirming no exploit paths**
[codex:595555] codex
[codex:595555] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.","findings":[]}
[codex:595555] tokens used
[codex:595555] 114,964
[codex:595555] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T03:02:55.923533+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
4
Total opcodes
3659
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00a0
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8b4c40b0
00000019: GT
0000001a: PUSH2 0x0064
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x8b4c40b0
00000024: EQ
00000025: PUSH2 0x01a4
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x8f601f66
0000002f: EQ
00000030: PUSH2 0x01ac
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x91c49bf8
0000003a: EQ
0000003b: PUSH2 0x01d9
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x9a2ac6d5
00000045: EQ
00000046: PUSH2 0x01ee
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xa9f9e675
00000050: EQ
00000051: PUSH2 0x0201
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xb1a1a882
0000005b: EQ
0000005c: PUSH2 0x0221
0000005f: JUMPI
00000060: PUSH2 0x00f4
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x1532ec34
0000006b: EQ
0000006c: PUSH2 0x00f9
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x3cb747bf
00000076: EQ
00000077: PUSH2 0x0119
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x485cc955
00000081: EQ
00000082: PUSH2 0x0144
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x58a997f6
0000008c: EQ
0000008d: PUSH2 0x0164
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x838b2520
00000097: EQ
00000098: PUSH2 0x0184
0000009b: JUMPI
0000009c: PUSH2 0x00f4
0000009f: JUMP
000000a0: JUMPDEST
000000a1: CALLDATASIZE
000000a2: PUSH2 0x00f4
000000a5: JUMPI
000000a6: PUSH2 0x00ae
000000a9: CALLER
000000aa: PUSH2 0x0234
000000ad: JUMP
000000ae: JUMPDEST
000000af: ISZERO
000000b0: PUSH2 0x00d4
000000b3: JUMPI
000000b4: PUSH1 0x40
000000b6: MLOAD
000000b7: PUSH3 0x461bcd
000000bb: PUSH1 0xe5
000000bd: SHL
000000be: DUP2
000000bf: MSTORE
000000c0: PUSH1 0x04
000000c2: ADD
000000c3: PUSH2 0x00cb
000000c6: SWAP1
000000c7: PUSH2 0x137d
000000ca: JUMP
000000cb: JUMPDEST
000000cc: PUSH1 0x40
000000ce: MLOAD
000000cf: DUP1
000000d0: SWAP2
000000d1: SUB
000000d2: SWAP1
000000d3: REVERT
000000d4: JUMPDEST
000000d5: PUSH2 0x00f2
000000d8: CALLER
000000d9: CALLER
000000da: PUSH3 0x13d620
000000de: PUSH1 0x40
000000e0: MLOAD
000000e1: DUP1
000000e2: PUSH1 0x20
000000e4: ADD
000000e5: PUSH1 0x40
000000e7: MSTORE
000000e8: DUP1
000000e9: PUSH1 0x00
000000eb: DUP2
000000ec: MSTORE
000000ed: POP
000000ee: PUSH2 0x023e
000000f1: JUMP
000000f2: JUMPDEST
000000f3: STOP
000000f4: JUMPDEST
000000f5: PUSH1 0x00
000000f7: DUP1
000000f8: REVERT
000000f9: JUMPDEST
000000fa: CALLVALUE
000000fb: DUP1
000000fc: ISZERO
000000fd: PUSH2 0x0105
00000100: JUMPI
00000101: PUSH1 0x00
00000103: DUP1
00000104: REVERT
00000105: JUMPDEST
00000106: POP
00000107: PUSH2 0x00f2
0000010a: PUSH2 0x0114
0000010d: CALLDATASIZE
0000010e: PUSH1 0x04
00000110: PUSH2 0x108b
00000113: JUMP
00000114: JUMPDEST
00000115: PUSH2 0x030b
00000118: JUMP
00000119: JUMPDEST
0000011a: CALLVALUE
0000011b: DUP1
0000011c: ISZERO
0000011d: PUSH2 0x0125
00000120: JUMPI
00000121: PUSH1 0x00
00000123: DUP1
00000124: REVERT
00000125: JUMPDEST
00000126: POP
00000127: PUSH2 0x012e
0000012a: PUSH2 0x050e
0000012d: JUMP
0000012e: JUMPDEST
0000012f: PUSH1 0x40
00000131: MLOAD
00000132: PUSH2 0x013b
00000135: SWAP2
00000136: SWAP1
00000137: PUSH2 0x1297
0000013a: JUMP
0000013b: JUMPDEST
0000013c: PUSH1 0x40
0000013e: MLOAD
0000013f: DUP1
00000140: SWAP2
00000141: SUB
00000142: SWAP1
00000143: RETURN
00000144: JUMPDEST
00000145: CALLVALUE
00000146: DUP1
00000147: ISZERO
00000148: PUSH2 0x0150
0000014b: JUMPI
0000014c: PUSH1 0x00
0000014e: DUP1
0000014f: REVERT
00000150: JUMPDEST
00000151: POP
00000152: PUSH2 0x00f2
00000155: PUSH2 0x015f
00000158: CALLDATASIZE
00000159: PUSH1 0x04
0000015b: PUSH2 0x0f5c
0000015e: JUMP
0000015f: JUMPDEST
00000160: PUSH2 0x051d
00000163: JUMP
00000164: JUMPDEST
00000165: CALLVALUE
00000166: DUP1
00000167: ISZERO
00000168: PUSH2 0x0170
0000016b: JUMPI
0000016c: PUSH1 0x00
0000016e: DUP1
0000016f: REVERT
00000170: JUMPDEST
00000171: POP
00000172: PUSH2 0x00f2
00000175: PUSH2 0x017f
00000178: CALLDATASIZE
00000179: PUSH1 0x04
0000017b: PUSH2 0x10f8
0000017e: JUMP
0000017f: JUMPDEST
00000180: PUSH2 0x0574
00000183: JUMP
00000184: JUMPDEST
00000185: CALLVALUE
00000186: DUP1
00000187: ISZERO
00000188: PUSH2 0x0190
0000018b: JUMPI
0000018c: PUSH1 0x00
0000018e: DUP1
0000018f: REVERT
00000190: JUMPDEST
00000191: POP
00000192: PUSH2 0x00f2
00000195: PUSH2 0x019f
00000198: CALLDATASIZE
00000199: PUSH1 0x04
0000019b: PUSH2 0x101c
0000019e: JUMP
0000019f: JUMPDEST
000001a0: PUSH2 0x05b2
000001a3: JUMP
000001a4: JUMPDEST
000001a5: PUSH2 0x00f2
000001a8: PUSH2 0x05cb
000001ab: JUMP
000001ac: JUMPDEST
000001ad: CALLVALUE
000001ae: DUP1
000001af: ISZERO
000001b0: PUSH2 0x01b8
000001b3: JUMPI
000001b4: PUSH1 0x00
000001b6: DUP1
000001b7: REVERT
000001b8: JUMPDEST
000001b9: POP
000001ba: PUSH2 0x01cc
000001bd: PUSH2 0x01c7
000001c0: CALLDATASIZE
000001c1: PUSH1 0x04
000001c3: PUSH2 0x0f5c
000001c6: JUMP
000001c7: JUMPDEST
000001c8: PUSH2 0x05cd
000001cb: JUMP
000001cc: JUMPDEST
000001cd: PUSH1 0x40
000001cf: MLOAD
000001d0: PUSH2 0x013b
000001d3: SWAP2
000001d4: SWAP1
000001d5: PUSH2 0x1440
000001d8: JUMP
000001d9: JUMPDEST
000001da: CALLVALUE
000001db: DUP1
000001dc: ISZERO
000001dd: PUSH2 0x01e5
000001e0: JUMPI
000001e1: PUSH1 0x00
000001e3: DUP1
000001e4: REVERT
000001e5: JUMPDEST
000001e6: POP
000001e7: PUSH2 0x012e
000001ea: PUSH2 0x05ea
000001ed: JUMP
000001ee: JUMPDEST
000001ef: PUSH2 0x00f2
000001f2: PUSH2 0x01fc
000001f5: CALLDATASIZE
000001f6: PUSH1 0x04
000001f8: PUSH2 0x1175
000001fb: JUMP
000001fc: JUMPDEST
000001fd: PUSH2 0x05f9
00000200: JUMP
00000201: JUMPDEST
00000202: CALLVALUE
00000203: DUP1
00000204: ISZERO
00000205: PUSH2 0x020d
00000208: JUMPI
00000209: PUSH1 0x00
0000020b: DUP1
0000020c: REVERT
0000020d: JUMPDEST
0000020e: POP
0000020f: PUSH2 0x00f2
00000212: PUSH2 0x021c
00000215: CALLDATASIZE
00000216: PUSH1 0x04
00000218: PUSH2 0x0f8e
0000021b: JUMP
0000021c: JUMPDEST
0000021d: PUSH2 0x0641
00000220: JUMP
00000221: JUMPDEST
00000222: PUSH2 0x00f2
00000225: PUSH2 0x022f
00000228: CALLDATASIZE
00000229: PUSH1 0x04
0000022b: PUSH2 0x11d4
0000022e: JUMP
0000022f: JUMPDEST
00000230: PUSH2 0x082b
00000233: JUMP
00000234: JUMPDEST
00000235: DUP1
00000236: EXTCODESIZE
00000237: ISZERO
00000238: ISZERO
00000239: JUMPDEST
0000023a: SWAP2
0000023b: SWAP1
0000023c: POP
0000023d: JUMP
0000023e: JUMPDEST
0000023f: PUSH1 0x00
00000241: PUSH4 0x662a633a
00000246: PUSH1 0xe0
00000248: SHL
00000249: PUSH1 0x00
0000024b: PUSH1 0x06
0000024d: PUSH1 0x21
0000024f: PUSH1 0x99
00000251: SHL
00000252: ADD
00000253: DUP8
00000254: DUP8
00000255: CALLVALUE
00000256: DUP8
00000257: PUSH1 0x40
00000259: MLOAD
0000025a: PUSH1 0x24
0000025c: ADD
0000025d: PUSH2 0x026b
00000260: SWAP7
00000261: SWAP6
00000262: SWAP5
00000263: SWAP4
00000264: SWAP3
00000265: SWAP2
00000266: SWAP1
00000267: PUSH2 0x12ab
0000026a: JUMP
0000026b: JUMPDEST
0000026c: PUSH1 0x40
0000026e: DUP1
0000026f: MLOAD
00000270: PUSH1 0x1f
00000272: NOT
00000273: DUP2
00000274: DUP5
00000275: SUB
00000276: ADD
00000277: DUP2
00000278: MSTORE
00000279: SWAP2
0000027a: SWAP1
0000027b: MSTORE
0000027c: PUSH1 0x20
0000027e: DUP2
0000027f: ADD
00000280: DUP1
00000281: MLOAD
00000282: PUSH1 0x01
00000284: PUSH1 0x01
00000286: PUSH1 0xe0
00000288: SHL
00000289: SUB
0000028a: AND
0000028b: PUSH1 0x01
0000028d: PUSH1 0x01
0000028f: PUSH1 0xe0
00000291: SHL
00000292: SUB
00000293: NOT
00000294: SWAP1
00000295: SWAP4
00000296: AND
00000297: SWAP3
00000298: SWAP1
00000299: SWAP3
0000029a: OR
0000029b: SWAP1
0000029c: SWAP2
0000029d: MSTORE
0000029e: PUSH1 0x01
000002a0: SLOAD
000002a1: SWAP1
000002a2: SWAP2
000002a3: POP
000002a4: PUSH2 0x02b7
000002a7: SWAP1
000002a8: PUSH1 0x01
000002aa: PUSH1 0x01
000002ac: PUSH1 0xa0
000002ae: SHL
000002af: SUB
000002b0: AND
000002b1: DUP5
000002b2: DUP4
000002b3: PUSH2 0x0898
000002b6: JUMP
000002b7: JUMPDEST
000002b8: DUP4
000002b9: PUSH1 0x01
000002bb: PUSH1 0x01
000002bd: PUSH1 0xa0
000002bf: SHL
000002c0: SUB
000002c1: AND
000002c2: DUP6
000002c3: PUSH1 0x01
000002c5: PUSH1 0x01
000002c7: PUSH1 0xa0
000002c9: SHL
000002ca: SUB
000002cb: AND
000002cc: PUSH32 0x35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23
000002ed: CALLVALUE
000002ee: DUP6
000002ef: PUSH1 0x40
000002f1: MLOAD
000002f2: PUSH2 0x02fc
000002f5: SWAP3
000002f6: SWAP2
000002f7: SWAP1
000002f8: PUSH2 0x146c
000002fb: JUMP
000002fc: JUMPDEST
000002fd: PUSH1 0x40
000002ff: MLOAD
00000300: DUP1
00000301: SWAP2
00000302: SUB
00000303: SWAP1
00000304: LOG3
00000305: POP
00000306: POP
00000307: POP
00000308: POP
00000309: POP
0000030a: JUMP
0000030b: JUMPDEST
0000030c: PUSH1 0x01
0000030e: SLOAD
0000030f: PUSH1 0x01
00000311: PUSH1 0x01
00000313: PUSH1 0xa0
00000315: SHL
00000316: SUB
00000317: AND
00000318: PUSH2 0x031f
0000031b: PUSH2 0x097a
0000031e: JUMP
0000031f: JUMPDEST
00000320: PUSH1 0x01
00000322: PUSH1 0x01
00000324: PUSH1 0xa0
00000326: SHL
00000327: SUB
00000328: AND
00000329: CALLER
0000032a: PUSH1 0x01
0000032c: PUSH1 0x01
0000032e: PUSH1 0xa0
00000330: SHL
00000331: SUB
00000332: AND
00000333: EQ
00000334: PUSH2 0x036e
00000337: JUMPI
00000338: PUSH1 0x40
0000033a: MLOAD
0000033b: PUSH3 0x461bcd
0000033f: PUSH1 0xe5
00000341: SHL
00000342: DUP2
00000343: MSTORE
00000344: PUSH1 0x04
00000346: ADD
00000347: DUP1
00000348: DUP1
00000349: PUSH1 0x20
0000034b: ADD
0000034c: DUP3
0000034d: DUP2
0000034e: SUB
0000034f: DUP3
00000350: MSTORE
00000351: PUSH1 0x2e
00000353: DUP2
00000354: MSTORE
00000355: PUSH1 0x20
00000357: ADD
00000358: DUP1
00000359: PUSH2 0x1532
0000035c: PUSH1 0x2e
0000035e: SWAP2
0000035f: CODECOPY
00000360: PUSH1 0x40
00000362: ADD
00000363: SWAP2
00000364: POP
00000365: POP
00000366: PUSH1 0x40
00000368: MLOAD
00000369: DUP1
0000036a: SWAP2
0000036b: SUB
0000036c: SWAP1
0000036d: REVERT
0000036e: JUMPDEST
0000036f: DUP1
00000370: PUSH1 0x01
00000372: PUSH1 0x01
00000374: PUSH1 0xa0
00000376: SHL
00000377: SUB
00000378: AND
00000379: PUSH2 0x0380
0000037c: PUSH2 0x097a
0000037f: JUMP
00000380: JUMPDEST
00000381: PUSH1 0x01
00000383: PUSH1 0x01
00000385: PUSH1 0xa0
00000387: SHL
00000388: SUB
00000389: AND
0000038a: PUSH4 0x6e296e45
0000038f: PUSH1 0x40
00000391: MLOAD
00000392: DUP2
00000393: PUSH4 0xffffffff
00000398: AND
00000399: PUSH1 0xe0
0000039b: SHL
0000039c: DUP2
0000039d: MSTORE
0000039e: PUSH1 0x04
000003a0: ADD
000003a1: PUSH1 0x20
000003a3: PUSH1 0x40
000003a5: MLOAD
000003a6: DUP1
000003a7: DUP4
000003a8: SUB
000003a9: DUP2
000003aa: DUP7
000003ab: DUP1
000003ac: EXTCODESIZE
000003ad: ISZERO
000003ae: DUP1
000003af: ISZERO
000003b0: PUSH2 0x03b8
000003b3: JUMPI
000003b4: PUSH1 0x00
000003b6: DUP1
000003b7: REVERT
000003b8: JUMPDEST
000003b9: POP
000003ba: GAS
000003bb: STATICCALL
000003bc: ISZERO
000003bd: DUP1
000003be: ISZERO
000003bf: PUSH2 0x03cc
000003c2: JUMPI
000003c3: RETURNDATASIZE
000003c4: PUSH1 0x00
000003c6: DUP1
000003c7: RETURNDATACOPY
000003c8: RETURNDATASIZE
000003c9: PUSH1 0x00
000003cb: REVERT
000003cc: JUMPDEST
000003cd: POP
000003ce: POP
000003cf: POP
000003d0: POP
000003d1: PUSH1 0x40
000003d3: MLOAD
000003d4: RETURNDATASIZE
000003d5: PUSH1 0x20
000003d7: DUP2
000003d8: LT
000003d9: ISZERO
000003da: PUSH2 0x03e2
000003dd: JUMPI
000003de: PUSH1 0x00
000003e0: DUP1
000003e1: REVERT
000003e2: JUMPDEST
000003e3: POP
000003e4: MLOAD
000003e5: PUSH1 0x01
000003e7: PUSH1 0x01
000003e9: PUSH1 0xa0
000003eb: SHL
000003ec: SUB
000003ed: AND
000003ee: EQ
000003ef: PUSH2 0x0429
000003f2: JUMPI
000003f3: PUSH1 0x40
000003f5: MLOAD
000003f6: PUSH3 0x461bcd
000003fa: PUSH1 0xe5
000003fc: SHL
000003fd: DUP2
000003fe: MSTORE
000003ff: PUSH1 0x04
00000401: ADD
00000402: DUP1
00000403: DUP1
00000404: PUSH1 0x20
00000406: ADD
00000407: DUP3
00000408: DUP2
00000409: SUB
0000040a: DUP3
0000040b: MSTORE
0000040c: PUSH1 0x30
0000040e: DUP2
0000040f: MSTORE
00000410: PUSH1 0x20
00000412: ADD
00000413: DUP1
00000414: PUSH2 0x14b2
00000417: PUSH1 0x30
00000419: SWAP2
0000041a: CODECOPY
0000041b: PUSH1 0x40
0000041d: ADD
0000041e: SWAP2
0000041f: POP
00000420: POP
00000421: PUSH1 0x40
00000423: MLOAD
00000424: DUP1
00000425: SWAP2
00000426: SUB
00000427: SWAP1
00000428: REVERT
00000429: JUMPDEST
0000042a: PUSH1 0x40
0000042c: DUP1
0000042d: MLOAD
0000042e: PUSH1 0x00
00000430: DUP1
00000431: DUP3
00000432: MSTORE
00000433: PUSH1 0x20
00000435: DUP3
00000436: ADD
00000437: SWAP1
00000438: SWAP3
00000439: MSTORE
0000043a: PUSH1 0x01
0000043c: PUSH1 0x01
0000043e: PUSH1 0xa0
00000440: SHL
00000441: SUB
00000442: DUP8
00000443: AND
00000444: SWAP1
00000445: DUP7
00000446: SWAP1
00000447: PUSH1 0x40
00000449: MLOAD
0000044a: PUSH2 0x0453
0000044d: SWAP2
0000044e: SWAP1
0000044f: PUSH2 0x127b
00000452: JUMP
00000453: JUMPDEST
00000454: PUSH1 0x00
00000456: PUSH1 0x40
00000458: MLOAD
00000459: DUP1
0000045a: DUP4
0000045b: SUB
0000045c: DUP2
0000045d: DUP6
0000045e: DUP8
0000045f: GAS
00000460: CALL
00000461: SWAP3
00000462: POP
00000463: POP
00000464: POP
00000465: RETURNDATASIZE
00000466: DUP1
00000467: PUSH1 0x00
00000469: DUP2
0000046a: EQ
0000046b: PUSH2 0x0490
0000046e: JUMPI
0000046f: PUSH1 0x40
00000471: MLOAD
00000472: SWAP2
00000473: POP
00000474: PUSH1 0x1f
00000476: NOT
00000477: PUSH1 0x3f
00000479: RETURNDATASIZE
0000047a: ADD
0000047b: AND
0000047c: DUP3
0000047d: ADD
0000047e: PUSH1 0x40
00000480: MSTORE
00000481: RETURNDATASIZE
00000482: DUP3
00000483: MSTORE
00000484: RETURNDATASIZE
00000485: PUSH1 0x00
00000487: PUSH1 0x20
00000489: DUP5
0000048a: ADD
0000048b: RETURNDATACOPY
0000048c: PUSH2 0x0495
0000048f: JUMP
00000490: JUMPDEST
00000491: PUSH1 0x60
00000493: SWAP2
00000494: POP
00000495: JUMPDEST
00000496: POP
00000497: POP
00000498: SWAP1
00000499: POP
0000049a: DUP1
0000049b: PUSH2 0x04b6
0000049e: JUMPI
0000049f: PUSH1 0x40
000004a1: MLOAD
000004a2: PUSH3 0x461bcd
000004a6: PUSH1 0xe5
000004a8: SHL
000004a9: DUP2
000004aa: MSTORE
000004ab: PUSH1 0x04
000004ad: ADD
000004ae: PUSH2 0x00cb
000004b1: SWAP1
000004b2: PUSH2 0x13a6
000004b5: JUMP
000004b6: JUMPDEST
000004b7: DUP6
000004b8: PUSH1 0x01
000004ba: PUSH1 0x01
000004bc: PUSH1 0xa0
000004be: SHL
000004bf: SUB
000004c0: AND
000004c1: DUP8
000004c2: PUSH1 0x01
000004c4: PUSH1 0x01
000004c6: PUSH1 0xa0
000004c8: SHL
000004c9: SUB
000004ca: AND
000004cb: PUSH32 0x2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631
000004ec: DUP8
000004ed: DUP8
000004ee: DUP8
000004ef: PUSH1 0x40
000004f1: MLOAD
000004f2: PUSH2 0x04fd
000004f5: SWAP4
000004f6: SWAP3
000004f7: SWAP2
000004f8: SWAP1
000004f9: PUSH2 0x1449
000004fc: JUMP
000004fd: JUMPDEST
000004fe: PUSH1 0x40
00000500: MLOAD
00000501: DUP1
00000502: SWAP2
00000503: SUB
00000504: SWAP1
00000505: LOG3
00000506: POP
00000507: POP
00000508: POP
00000509: POP
0000050a: POP
0000050b: POP
0000050c: POP
0000050d: JUMP
0000050e: JUMPDEST
0000050f: PUSH1 0x00
00000511: SLOAD
00000512: PUSH1 0x01
00000514: PUSH1 0x01
00000516: PUSH1 0xa0
00000518: SHL
00000519: SUB
0000051a: AND
0000051b: DUP2
0000051c: JUMP
0000051d: JUMPDEST
0000051e: PUSH1 0x00
00000520: SLOAD
00000521: PUSH1 0x01
00000523: PUSH1 0x01
00000525: PUSH1 0xa0
00000527: SHL
00000528: SUB
00000529: AND
0000052a: ISZERO
0000052b: PUSH2 0x0546
0000052e: JUMPI
0000052f: PUSH1 0x40
00000531: MLOAD
00000532: PUSH3 0x461bcd
00000536: PUSH1 0xe5
00000538: SHL
00000539: DUP2
0000053a: MSTORE
0000053b: PUSH1 0x04
0000053d: ADD
0000053e: PUSH2 0x00cb
00000541: SWAP1
00000542: PUSH2 0x13fa
00000545: JUMP
00000546: JUMPDEST
00000547: PUSH1 0x00
00000549: DUP1
0000054a: SLOAD
0000054b: PUSH1 0x01
0000054d: PUSH1 0x01
0000054f: PUSH1 0xa0
00000551: SHL
00000552: SUB
00000553: SWAP4
00000554: DUP5
00000555: AND
00000556: PUSH1 0x01
00000558: PUSH1 0x01
0000055a: PUSH1 0xa0
0000055c: SHL
0000055d: SUB
0000055e: NOT
0000055f: SWAP2
00000560: DUP3
00000561: AND
00000562: OR
00000563: SWAP1
00000564: SWAP2
00000565: SSTORE
00000566: PUSH1 0x01
00000568: DUP1
00000569: SLOAD
0000056a: SWAP3
0000056b: SWAP1
0000056c: SWAP4
0000056d: AND
0000056e: SWAP2
0000056f: AND
00000570: OR
00000571: SWAP1
00000572: SSTORE
00000573: JUMP
00000574: JUMPDEST
00000575: PUSH2 0x057d
00000578: CALLER
00000579: PUSH2 0x0234
0000057c: JUMP
0000057d: JUMPDEST
0000057e: ISZERO
0000057f: PUSH2 0x059a
00000582: JUMPI
00000583: PUSH1 0x40
00000585: MLOAD
00000586: PUSH3 0x461bcd
0000058a: PUSH1 0xe5
0000058c: SHL
0000058d: DUP2
0000058e: MSTORE
0000058f: PUSH1 0x04
00000591: ADD
00000592: PUSH2 0x00cb
00000595: SWAP1
00000596: PUSH2 0x137d
00000599: JUMP
0000059a: JUMPDEST
0000059b: PUSH2 0x05aa
0000059e: DUP7
0000059f: DUP7
000005a0: CALLER
000005a1: CALLER
000005a2: DUP9
000005a3: DUP9
000005a4: DUP9
000005a5: DUP9
000005a6: PUSH2 0x0989
000005a9: JUMP
000005aa: JUMPDEST
000005ab: POP
000005ac: POP
000005ad: POP
000005ae: POP
000005af: POP
000005b0: POP
000005b1: JUMP
000005b2: JUMPDEST
000005b3: PUSH2 0x05c2
000005b6: DUP8
000005b7: DUP8
000005b8: CALLER
000005b9: DUP9
000005ba: DUP9
000005bb: DUP9
000005bc: DUP9
000005bd: DUP9
000005be: PUSH2 0x0989
000005c1: JUMP
000005c2: JUMPDEST
000005c3: POP
000005c4: POP
000005c5: POP
000005c6: POP
000005c7: POP
000005c8: POP
000005c9: POP
000005ca: JUMP
000005cb: JUMPDEST
000005cc: JUMP
000005cd: JUMPDEST
000005ce: PUSH1 0x02
000005d0: PUSH1 0x20
000005d2: SWAP1
000005d3: DUP2
000005d4: MSTORE
000005d5: PUSH1 0x00
000005d7: SWAP3
000005d8: DUP4
000005d9: MSTORE
000005da: PUSH1 0x40
000005dc: DUP1
000005dd: DUP5
000005de: KECCAK256
000005df: SWAP1
000005e0: SWAP2
000005e1: MSTORE
000005e2: SWAP1
000005e3: DUP3
000005e4: MSTORE
000005e5: SWAP1
000005e6: KECCAK256
000005e7: SLOAD
000005e8: DUP2
000005e9: JUMP
000005ea: JUMPDEST
000005eb: PUSH1 0x01
000005ed: SLOAD
000005ee: PUSH1 0x01
000005f0: PUSH1 0x01
000005f2: PUSH1 0xa0
000005f4: SHL
000005f5: SUB
000005f6: AND
000005f7: DUP2
000005f8: JUMP
000005f9: JUMPDEST
000005fa: PUSH2 0x063b
000005fd: CALLER
000005fe: DUP6
000005ff: DUP6
00000600: DUP6
00000601: DUP6
00000602: DUP1
00000603: DUP1
00000604: PUSH1 0x1f
00000606: ADD
00000607: PUSH1 0x20
00000609: DUP1
0000060a: SWAP2
0000060b: DIV
0000060c: MUL
0000060d: PUSH1 0x20
0000060f: ADD
00000610: PUSH1 0x40
00000612: MLOAD
00000613: SWAP1
00000614: DUP2
00000615: ADD
00000616: PUSH1 0x40
00000618: MSTORE
00000619: DUP1
0000061a: SWAP4
0000061b: SWAP3
0000061c: SWAP2
0000061d: SWAP1
0000061e: DUP2
0000061f: DUP2
00000620: MSTORE
00000621: PUSH1 0x20
00000623: ADD
00000624: DUP4
00000625: DUP4
00000626: DUP1
00000627: DUP3
00000628: DUP5
00000629: CALLDATACOPY
0000062a: PUSH1 0x00
0000062c: SWAP3
0000062d: ADD
0000062e: SWAP2
0000062f: SWAP1
00000630: SWAP2
00000631: MSTORE
00000632: POP
00000633: PUSH2 0x023e
00000636: SWAP3
00000637: POP
00000638: POP
00000639: POP
0000063a: JUMP
0000063b: JUMPDEST
0000063c: POP
0000063d: POP
0000063e: POP
0000063f: POP
00000640: JUMP
00000641: JUMPDEST
00000642: PUSH1 0x01
00000644: SLOAD
00000645: PUSH1 0x01
00000647: PUSH1 0x01
00000649: PUSH1 0xa0
0000064b: SHL
0000064c: SUB
0000064d: AND
0000064e: PUSH2 0x0655
00000651: PUSH2 0x097a
00000654: JUMP
00000655: JUMPDEST
00000656: PUSH1 0x01
00000658: PUSH1 0x01
0000065a: PUSH1 0xa0
0000065c: SHL
0000065d: SUB
0000065e: AND
0000065f: CALLER
00000660: PUSH1 0x01
00000662: PUSH1 0x01
00000664: PUSH1 0xa0
00000666: SHL
00000667: SUB
00000668: AND
00000669: EQ
0000066a: PUSH2 0x06a4
0000066d: JUMPI
0000066e: PUSH1 0x40
00000670: MLOAD
00000671: PUSH3 0x461bcd
00000675: PUSH1 0xe5
00000677: SHL
00000678: DUP2
00000679: MSTORE
0000067a: PUSH1 0x04
0000067c: ADD
0000067d: DUP1
0000067e: DUP1
0000067f: PUSH1 0x20
00000681: ADD
00000682: DUP3
00000683: DUP2
00000684: SUB
00000685: DUP3
00000686: MSTORE
00000687: PUSH1 0x2e
00000689: DUP2
0000068a: MSTORE
0000068b: PUSH1 0x20
0000068d: ADD
0000068e: DUP1
0000068f: PUSH2 0x1532
00000692: PUSH1 0x2e
00000694: SWAP2
00000695: CODECOPY
00000696: PUSH1 0x40
00000698: ADD
00000699: SWAP2
0000069a: POP
0000069b: POP
0000069c: PUSH1 0x40
0000069e: MLOAD
0000069f: DUP1
000006a0: SWAP2
000006a1: SUB
000006a2: SWAP1
000006a3: REVERT
000006a4: JUMPDEST
000006a5: DUP1
000006a6: PUSH1 0x01
000006a8: PUSH1 0x01
000006aa: PUSH1 0xa0
000006ac: SHL
000006ad: SUB
000006ae: AND
000006af: PUSH2 0x06b6
000006b2: PUSH2 0x097a
000006b5: JUMP
000006b6: JUMPDEST
000006b7: PUSH1 0x01
000006b9: PUSH1 0x01
000006bb: PUSH1 0xa0
000006bd: SHL
000006be: SUB
000006bf: AND
000006c0: PUSH4 0x6e296e45
000006c5: PUSH1 0x40
000006c7: MLOAD
000006c8: DUP2
000006c9: PUSH4 0xffffffff
000006ce: AND
000006cf: PUSH1 0xe0
000006d1: SHL
000006d2: DUP2
000006d3: MSTORE
000006d4: PUSH1 0x04
000006d6: ADD
000006d7: PUSH1 0x20
000006d9: PUSH1 0x40
000006db: MLOAD
000006dc: DUP1
000006dd: DUP4
000006de: SUB
000006df: DUP2
000006e0: DUP7
000006e1: DUP1
000006e2: EXTCODESIZE
000006e3: ISZERO
000006e4: DUP1
000006e5: ISZERO
000006e6: PUSH2 0x06ee
000006e9: JUMPI
000006ea: PUSH1 0x00
000006ec: DUP1
000006ed: REVERT
000006ee: JUMPDEST
000006ef: POP
000006f0: GAS
000006f1: STATICCALL
000006f2: ISZERO
000006f3: DUP1
000006f4: ISZERO
000006f5: PUSH2 0x0702
000006f8: JUMPI
000006f9: RETURNDATASIZE
000006fa: PUSH1 0x00
000006fc: DUP1
000006fd: RETURNDATACOPY
000006fe: RETURNDATASIZE
000006ff: PUSH1 0x00
00000701: REVERT
00000702: JUMPDEST
00000703: POP
00000704: POP
00000705: POP
00000706: POP
00000707: PUSH1 0x40
00000709: MLOAD
0000070a: RETURNDATASIZE
0000070b: PUSH1 0x20
0000070d: DUP2
0000070e: LT
0000070f: ISZERO
00000710: PUSH2 0x0718
00000713: JUMPI
00000714: PUSH1 0x00
00000716: DUP1
00000717: REVERT
00000718: JUMPDEST
00000719: POP
0000071a: MLOAD
0000071b: PUSH1 0x01
0000071d: PUSH1 0x01
0000071f: PUSH1 0xa0
00000721: SHL
00000722: SUB
00000723: AND
00000724: EQ
00000725: PUSH2 0x075f
00000728: JUMPI
00000729: PUSH1 0x40
0000072b: MLOAD
0000072c: PUSH3 0x461bcd
00000730: PUSH1 0xe5
00000732: SHL
00000733: DUP2
00000734: MSTORE
00000735: PUSH1 0x04
00000737: ADD
00000738: DUP1
00000739: DUP1
0000073a: PUSH1 0x20
0000073c: ADD
0000073d: DUP3
0000073e: DUP2
0000073f: SUB
00000740: DUP3
00000741: MSTORE
00000742: PUSH1 0x30
00000744: DUP2
00000745: MSTORE
00000746: PUSH1 0x20
00000748: ADD
00000749: DUP1
0000074a: PUSH2 0x14b2
0000074d: PUSH1 0x30
0000074f: SWAP2
00000750: CODECOPY
00000751: PUSH1 0x40
00000753: ADD
00000754: SWAP2
00000755: POP
00000756: POP
00000757: PUSH1 0x40
00000759: MLOAD
0000075a: DUP1
0000075b: SWAP2
0000075c: SUB
0000075d: SWAP1
0000075e: REVERT
0000075f: JUMPDEST
00000760: PUSH1 0x01
00000762: PUSH1 0x01
00000764: PUSH1 0xa0
00000766: SHL
00000767: SUB
00000768: DUP1
00000769: DUP10
0000076a: AND
0000076b: PUSH1 0x00
0000076d: SWAP1
0000076e: DUP2
0000076f: MSTORE
00000770: PUSH1 0x02
00000772: PUSH1 0x20
00000774: SWAP1
00000775: DUP2
00000776: MSTORE
00000777: PUSH1 0x40
00000779: DUP1
0000077a: DUP4
0000077b: KECCAK256
0000077c: SWAP4
0000077d: DUP12
0000077e: AND
0000077f: DUP4
00000780: MSTORE
00000781: SWAP3
00000782: SWAP1
00000783: MSTORE
00000784: KECCAK256
00000785: SLOAD
00000786: PUSH2 0x078f
00000789: SWAP1
0000078a: DUP6
0000078b: PUSH2 0x0ab9
0000078e: JUMP
0000078f: JUMPDEST
00000790: PUSH1 0x01
00000792: PUSH1 0x01
00000794: PUSH1 0xa0
00000796: SHL
00000797: SUB
00000798: DUP1
00000799: DUP11
0000079a: AND
0000079b: PUSH1 0x00
0000079d: DUP2
0000079e: DUP2
0000079f: MSTORE
000007a0: PUSH1 0x02
000007a2: PUSH1 0x20
000007a4: SWAP1
000007a5: DUP2
000007a6: MSTORE
000007a7: PUSH1 0x40
000007a9: DUP1
000007aa: DUP4
000007ab: KECCAK256
000007ac: SWAP5
000007ad: DUP14
000007ae: AND
000007af: DUP4
000007b0: MSTORE
000007b1: SWAP4
000007b2: SWAP1
000007b3: MSTORE
000007b4: SWAP2
000007b5: SWAP1
000007b6: SWAP2
000007b7: KECCAK256
000007b8: SWAP2
000007b9: SWAP1
000007ba: SWAP2
000007bb: SSTORE
000007bc: PUSH2 0x07c6
000007bf: SWAP1
000007c0: DUP7
000007c1: DUP7
000007c2: PUSH2 0x0b16
000007c5: JUMP
000007c6: JUMPDEST
000007c7: DUP6
000007c8: PUSH1 0x01
000007ca: PUSH1 0x01
000007cc: PUSH1 0xa0
000007ce: SHL
000007cf: SUB
000007d0: AND
000007d1: DUP8
000007d2: PUSH1 0x01
000007d4: PUSH1 0x01
000007d6: PUSH1 0xa0
000007d8: SHL
000007d9: SUB
000007da: AND
000007db: DUP10
000007dc: PUSH1 0x01
000007de: PUSH1 0x01
000007e0: PUSH1 0xa0
000007e2: SHL
000007e3: SUB
000007e4: AND
000007e5: PUSH32 0x3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3
00000806: DUP9
00000807: DUP9
00000808: DUP9
00000809: DUP9
0000080a: PUSH1 0x40
0000080c: MLOAD
0000080d: PUSH2 0x0819
00000810: SWAP5
00000811: SWAP4
00000812: SWAP3
00000813: SWAP2
00000814: SWAP1
00000815: PUSH2 0x134b
00000818: JUMP
00000819: JUMPDEST
0000081a: PUSH1 0x40
0000081c: MLOAD
0000081d: DUP1
0000081e: SWAP2
0000081f: SUB
00000820: SWAP1
00000821: LOG4
00000822: POP
00000823: POP
00000824: POP
00000825: POP
00000826: POP
00000827: POP
00000828: POP
00000829: POP
0000082a: JUMP
0000082b: JUMPDEST
0000082c: PUSH2 0x0834
0000082f: CALLER
00000830: PUSH2 0x0234
00000833: JUMP
00000834: JUMPDEST
00000835: ISZERO
00000836: PUSH2 0x0851
00000839: JUMPI
0000083a: PUSH1 0x40
0000083c: MLOAD
0000083d: PUSH3 0x461bcd
00000841: PUSH1 0xe5
00000843: SHL
00000844: DUP2
00000845: MSTORE
00000846: PUSH1 0x04
00000848: ADD
00000849: PUSH2 0x00cb
0000084c: SWAP1
0000084d: PUSH2 0x137d
00000850: JUMP
00000851: JUMPDEST
00000852: PUSH2 0x0893
00000855: CALLER
00000856: CALLER
00000857: DUP6
00000858: DUP6
00000859: DUP6
0000085a: DUP1
0000085b: DUP1
0000085c: PUSH1 0x1f
0000085e: ADD
0000085f: PUSH1 0x20
00000861: DUP1
00000862: SWAP2
00000863: DIV
00000864: MUL
00000865: PUSH1 0x20
00000867: ADD
00000868: PUSH1 0x40
0000086a: MLOAD
0000086b: SWAP1
0000086c: DUP2
0000086d: ADD
0000086e: PUSH1 0x40
00000870: MSTORE
00000871: DUP1
00000872: SWAP4
00000873: SWAP3
00000874: SWAP2
00000875: SWAP1
00000876: DUP2
00000877: DUP2
00000878: MSTORE
00000879: PUSH1 0x20
0000087b: ADD
0000087c: DUP4
0000087d: DUP4
0000087e: DUP1
0000087f: DUP3
00000880: DUP5
00000881: CALLDATACOPY
00000882: PUSH1 0x00
00000884: SWAP3
00000885: ADD
00000886: SWAP2
00000887: SWAP1
00000888: SWAP2
00000889: MSTORE
0000088a: POP
0000088b: PUSH2 0x023e
0000088e: SWAP3
0000088f: POP
00000890: POP
00000891: POP
00000892: JUMP
00000893: JUMPDEST
00000894: POP
00000895: POP
00000896: POP
00000897: JUMP
00000898: JUMPDEST
00000899: PUSH2 0x08a0
0000089c: PUSH2 0x097a
0000089f: JUMP
000008a0: JUMPDEST
000008a1: PUSH1 0x01
000008a3: PUSH1 0x01
000008a5: PUSH1 0xa0
000008a7: SHL
000008a8: SUB
000008a9: AND
000008aa: PUSH4 0x3dbb202b
000008af: DUP5
000008b0: DUP4
000008b1: DUP6
000008b2: PUSH1 0x40
000008b4: MLOAD
000008b5: DUP5
000008b6: PUSH4 0xffffffff
000008bb: AND
000008bc: PUSH1 0xe0
000008be: SHL
000008bf: DUP2
000008c0: MSTORE
000008c1: PUSH1 0x04
000008c3: ADD
000008c4: DUP1
000008c5: DUP5
000008c6: PUSH1 0x01
000008c8: PUSH1 0x01
000008ca: PUSH1 0xa0
000008cc: SHL
000008cd: SUB
000008ce: AND
000008cf: DUP2
000008d0: MSTORE
000008d1: PUSH1 0x20
000008d3: ADD
000008d4: DUP1
000008d5: PUSH1 0x20
000008d7: ADD
000008d8: DUP4
000008d9: PUSH4 0xffffffff
000008de: AND
000008df: DUP2
000008e0: MSTORE
000008e1: PUSH1 0x20
000008e3: ADD
000008e4: DUP3
000008e5: DUP2
000008e6: SUB
000008e7: DUP3
000008e8: MSTORE
000008e9: DUP5
000008ea: DUP2
000008eb: DUP2
000008ec: MLOAD
000008ed: DUP2
000008ee: MSTORE
000008ef: PUSH1 0x20
000008f1: ADD
000008f2: SWAP2
000008f3: POP
000008f4: DUP1
000008f5: MLOAD
000008f6: SWAP1
000008f7: PUSH1 0x20
000008f9: ADD
000008fa: SWAP1
000008fb: DUP1
000008fc: DUP4
000008fd: DUP4
000008fe: PUSH1 0x00
00000900: JUMPDEST
00000901: DUP4
00000902: DUP2
00000903: LT
00000904: ISZERO
00000905: PUSH2 0x0918
00000908: JUMPI
00000909: DUP2
0000090a: DUP2
0000090b: ADD
0000090c: MLOAD
0000090d: DUP4
0000090e: DUP3
0000090f: ADD
00000910: MSTORE
00000911: PUSH1 0x20
00000913: ADD
00000914: PUSH2 0x0900
00000917: JUMP
00000918: JUMPDEST
00000919: POP
0000091a: POP
0000091b: POP
0000091c: POP
0000091d: SWAP1
0000091e: POP
0000091f: SWAP1
00000920: DUP2
00000921: ADD
00000922: SWAP1
00000923: PUSH1 0x1f
00000925: AND
00000926: DUP1
00000927: ISZERO
00000928: PUSH2 0x0945
0000092b: JUMPI
0000092c: DUP1
0000092d: DUP3
0000092e: SUB
0000092f: DUP1
00000930: MLOAD
00000931: PUSH1 0x01
00000933: DUP4
00000934: PUSH1 0x20
00000936: SUB
00000937: PUSH2 0x0100
0000093a: EXP
0000093b: SUB
0000093c: NOT
0000093d: AND
0000093e: DUP2
0000093f: MSTORE
00000940: PUSH1 0x20
00000942: ADD
00000943: SWAP2
00000944: POP
00000945: JUMPDEST
00000946: POP
00000947: SWAP5
00000948: POP
00000949: POP
0000094a: POP
0000094b: POP
0000094c: POP
0000094d: PUSH1 0x00
0000094f: PUSH1 0x40
00000951: MLOAD
00000952: DUP1
00000953: DUP4
00000954: SUB
00000955: DUP2
00000956: PUSH1 0x00
00000958: DUP8
00000959: DUP1
0000095a: EXTCODESIZE
0000095b: ISZERO
0000095c: DUP1
0000095d: ISZERO
0000095e: PUSH2 0x0966
00000961: JUMPI
00000962: PUSH1 0x00
00000964: DUP1
00000965: REVERT
00000966: JUMPDEST
00000967: POP
00000968: GAS
00000969: CALL
0000096a: ISZERO
0000096b: DUP1
0000096c: ISZERO
0000096d: PUSH2 0x05c2
00000970: JUMPI
00000971: RETURNDATASIZE
00000972: PUSH1 0x00
00000974: DUP1
00000975: RETURNDATACOPY
00000976: RETURNDATASIZE
00000977: PUSH1 0x00
00000979: REVERT
0000097a: JUMPDEST
0000097b: PUSH1 0x00
0000097d: SLOAD
0000097e: PUSH1 0x01
00000980: PUSH1 0x01
00000982: PUSH1 0xa0
00000984: SHL
00000985: SUB
00000986: AND
00000987: SWAP1
00000988: JUMP
00000989: JUMPDEST
0000098a: PUSH2 0x099e
0000098d: PUSH1 0x01
0000098f: PUSH1 0x01
00000991: PUSH1 0xa0
00000993: SHL
00000994: SUB
00000995: DUP10
00000996: AND
00000997: DUP8
00000998: ADDRESS
00000999: DUP8
0000099a: PUSH2 0x0b68
0000099d: JUMP
0000099e: JUMPDEST
0000099f: PUSH1 0x00
000009a1: PUSH4 0x662a633a
000009a6: PUSH1 0xe0
000009a8: SHL
000009a9: DUP10
000009aa: DUP10
000009ab: DUP10
000009ac: DUP10
000009ad: DUP10
000009ae: DUP9
000009af: DUP9
000009b0: PUSH1 0x40
000009b2: MLOAD
000009b3: PUSH1 0x24
000009b5: ADD
000009b6: PUSH2 0x09c5
000009b9: SWAP8
000009ba: SWAP7
000009bb: SWAP6
000009bc: SWAP5
000009bd: SWAP4
000009be: SWAP3
000009bf: SWAP2
000009c0: SWAP1
000009c1: PUSH2 0x12fa
000009c4: JUMP
000009c5: JUMPDEST
000009c6: PUSH1 0x40
000009c8: DUP1
000009c9: MLOAD
000009ca: PUSH1 0x1f
000009cc: NOT
000009cd: DUP2
000009ce: DUP5
000009cf: SUB
000009d0: ADD
000009d1: DUP2
000009d2: MSTORE
000009d3: SWAP2
000009d4: SWAP1
000009d5: MSTORE
000009d6: PUSH1 0x20
000009d8: DUP2
000009d9: ADD
000009da: DUP1
000009db: MLOAD
000009dc: PUSH1 0x01
000009de: PUSH1 0x01
000009e0: PUSH1 0xe0
000009e2: SHL
000009e3: SUB
000009e4: AND
000009e5: PUSH1 0x01
000009e7: PUSH1 0x01
000009e9: PUSH1 0xe0
000009eb: SHL
000009ec: SUB
000009ed: NOT
000009ee: SWAP1
000009ef: SWAP4
000009f0: AND
000009f1: SWAP3
000009f2: SWAP1
000009f3: SWAP3
000009f4: OR
000009f5: SWAP1
000009f6: SWAP2
000009f7: MSTORE
000009f8: PUSH1 0x01
000009fa: SLOAD
000009fb: SWAP1
000009fc: SWAP2
000009fd: POP
000009fe: PUSH2 0x0a11
00000a01: SWAP1
00000a02: PUSH1 0x01
00000a04: PUSH1 0x01
00000a06: PUSH1 0xa0
00000a08: SHL
00000a09: SUB
00000a0a: AND
00000a0b: DUP6
00000a0c: DUP4
00000a0d: PUSH2 0x0898
00000a10: JUMP
00000a11: JUMPDEST
00000a12: PUSH1 0x01
00000a14: PUSH1 0x01
00000a16: PUSH1 0xa0
00000a18: SHL
00000a19: SUB
00000a1a: DUP1
00000a1b: DUP11
00000a1c: AND
00000a1d: PUSH1 0x00
00000a1f: SWAP1
00000a20: DUP2
00000a21: MSTORE
00000a22: PUSH1 0x02
00000a24: PUSH1 0x20
00000a26: SWAP1
00000a27: DUP2
00000a28: MSTORE
00000a29: PUSH1 0x40
00000a2b: DUP1
00000a2c: DUP4
00000a2d: KECCAK256
00000a2e: SWAP4
00000a2f: DUP13
00000a30: AND
00000a31: DUP4
00000a32: MSTORE
00000a33: SWAP3
00000a34: SWAP1
00000a35: MSTORE
00000a36: KECCAK256
00000a37: SLOAD
00000a38: PUSH2 0x0a41
00000a3b: SWAP1
00000a3c: DUP7
00000a3d: PUSH2 0x0bc2
00000a40: JUMP
00000a41: JUMPDEST
00000a42: PUSH1 0x01
00000a44: PUSH1 0x01
00000a46: PUSH1 0xa0
00000a48: SHL
00000a49: SUB
00000a4a: DUP1
00000a4b: DUP12
00000a4c: AND
00000a4d: PUSH1 0x00
00000a4f: DUP2
00000a50: DUP2
00000a51: MSTORE
00000a52: PUSH1 0x02
00000a54: PUSH1 0x20
00000a56: SWAP1
00000a57: DUP2
00000a58: MSTORE
00000a59: PUSH1 0x40
00000a5b: DUP1
00000a5c: DUP4
00000a5d: KECCAK256
00000a5e: DUP15
00000a5f: DUP7
00000a60: AND
00000a61: DUP1
00000a62: DUP6
00000a63: MSTORE
00000a64: SWAP3
00000a65: MSTORE
00000a66: SWAP2
00000a67: DUP3
00000a68: SWAP1
00000a69: KECCAK256
00000a6a: SWAP5
00000a6b: SWAP1
00000a6c: SWAP5
00000a6d: SSTORE
00000a6e: MLOAD
00000a6f: SWAP2
00000a70: DUP11
00000a71: AND
00000a72: SWAP3
00000a73: SWAP2
00000a74: PUSH32 0x718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396
00000a95: SWAP1
00000a96: PUSH2 0x0aa6
00000a99: SWAP1
00000a9a: DUP12
00000a9b: SWAP1
00000a9c: DUP12
00000a9d: SWAP1
00000a9e: DUP11
00000a9f: SWAP1
00000aa0: DUP11
00000aa1: SWAP1
00000aa2: PUSH2 0x134b
00000aa5: JUMP
00000aa6: JUMPDEST
00000aa7: PUSH1 0x40
00000aa9: MLOAD
00000aaa: DUP1
00000aab: SWAP2
00000aac: SUB
00000aad: SWAP1
00000aae: LOG4
00000aaf: POP
00000ab0: POP
00000ab1: POP
00000ab2: POP
00000ab3: POP
00000ab4: POP
00000ab5: POP
00000ab6: POP
00000ab7: POP
00000ab8: JUMP
00000ab9: JUMPDEST
00000aba: PUSH1 0x00
00000abc: DUP3
00000abd: DUP3
00000abe: GT
00000abf: ISZERO
00000ac0: PUSH2 0x0b10
00000ac3: JUMPI
00000ac4: PUSH1 0x40
00000ac6: DUP1
00000ac7: MLOAD
00000ac8: PUSH3 0x461bcd
00000acc: PUSH1 0xe5
00000ace: SHL
00000acf: DUP2
00000ad0: MSTORE
00000ad1: PUSH1 0x20
00000ad3: PUSH1 0x04
00000ad5: DUP3
00000ad6: ADD
00000ad7: MSTORE
00000ad8: PUSH1 0x1e
00000ada: PUSH1 0x24
00000adc: DUP3
00000add: ADD
00000ade: MSTORE
00000adf: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00000b00: PUSH1 0x44
00000b02: DUP3
00000b03: ADD
00000b04: MSTORE
00000b05: SWAP1
00000b06: MLOAD
00000b07: SWAP1
00000b08: DUP2
00000b09: SWAP1
00000b0a: SUB
00000b0b: PUSH1 0x64
00000b0d: ADD
00000b0e: SWAP1
00000b0f: REVERT
00000b10: JUMPDEST
00000b11: POP
00000b12: SWAP1
00000b13: SUB
00000b14: SWAP1
00000b15: JUMP
00000b16: JUMPDEST
00000b17: PUSH1 0x40
00000b19: DUP1
00000b1a: MLOAD
00000b1b: PUSH1 0x01
00000b1d: PUSH1 0x01
00000b1f: PUSH1 0xa0
00000b21: SHL
00000b22: SUB
00000b23: DUP5
00000b24: AND
00000b25: PUSH1 0x24
00000b27: DUP3
00000b28: ADD
00000b29: MSTORE
00000b2a: PUSH1 0x44
00000b2c: DUP1
00000b2d: DUP3
00000b2e: ADD
00000b2f: DUP5
00000b30: SWAP1
00000b31: MSTORE
00000b32: DUP3
00000b33: MLOAD
00000b34: DUP1
00000b35: DUP4
00000b36: SUB
00000b37: SWAP1
00000b38: SWAP2
00000b39: ADD
00000b3a: DUP2
00000b3b: MSTORE
00000b3c: PUSH1 0x64
00000b3e: SWAP1
00000b3f: SWAP2
00000b40: ADD
00000b41: SWAP1
00000b42: SWAP2
00000b43: MSTORE
00000b44: PUSH1 0x20
00000b46: DUP2
00000b47: ADD
00000b48: DUP1
00000b49: MLOAD
00000b4a: PUSH1 0x01
00000b4c: PUSH1 0x01
00000b4e: PUSH1 0xe0
00000b50: SHL
00000b51: SUB
00000b52: AND
00000b53: PUSH4 0xa9059cbb
00000b58: PUSH1 0xe0
00000b5a: SHL
00000b5b: OR
00000b5c: SWAP1
00000b5d: MSTORE
00000b5e: PUSH2 0x0893
00000b61: SWAP1
00000b62: DUP5
00000b63: SWAP1
00000b64: PUSH2 0x0c23
00000b67: JUMP
00000b68: JUMPDEST
00000b69: PUSH1 0x40
00000b6b: DUP1
00000b6c: MLOAD
00000b6d: PUSH1 0x01
00000b6f: PUSH1 0x01
00000b71: PUSH1 0xa0
00000b73: SHL
00000b74: SUB
00000b75: DUP1
00000b76: DUP7
00000b77: AND
00000b78: PUSH1 0x24
00000b7a: DUP4
00000b7b: ADD
00000b7c: MSTORE
00000b7d: DUP5
00000b7e: AND
00000b7f: PUSH1 0x44
00000b81: DUP3
00000b82: ADD
00000b83: MSTORE
00000b84: PUSH1 0x64
00000b86: DUP1
00000b87: DUP3
00000b88: ADD
00000b89: DUP5
00000b8a: SWAP1
00000b8b: MSTORE
00000b8c: DUP3
00000b8d: MLOAD
00000b8e: DUP1
00000b8f: DUP4
00000b90: SUB
00000b91: SWAP1
00000b92: SWAP2
00000b93: ADD
00000b94: DUP2
00000b95: MSTORE
00000b96: PUSH1 0x84
00000b98: SWAP1
00000b99: SWAP2
00000b9a: ADD
00000b9b: SWAP1
00000b9c: SWAP2
00000b9d: MSTORE
00000b9e: PUSH1 0x20
00000ba0: DUP2
00000ba1: ADD
00000ba2: DUP1
00000ba3: MLOAD
00000ba4: PUSH1 0x01
00000ba6: PUSH1 0x01
00000ba8: PUSH1 0xe0
00000baa: SHL
00000bab: SUB
00000bac: AND
00000bad: PUSH4 0x23b872dd
00000bb2: PUSH1 0xe0
00000bb4: SHL
00000bb5: OR
00000bb6: SWAP1
00000bb7: MSTORE
00000bb8: PUSH2 0x063b
00000bbb: SWAP1
00000bbc: DUP6
00000bbd: SWAP1
00000bbe: PUSH2 0x0c23
00000bc1: JUMP
00000bc2: JUMPDEST
00000bc3: PUSH1 0x00
00000bc5: DUP3
00000bc6: DUP3
00000bc7: ADD
00000bc8: DUP4
00000bc9: DUP2
00000bca: LT
00000bcb: ISZERO
00000bcc: PUSH2 0x0c1c
00000bcf: JUMPI
00000bd0: PUSH1 0x40
00000bd2: DUP1
00000bd3: MLOAD
00000bd4: PUSH3 0x461bcd
00000bd8: PUSH1 0xe5
00000bda: SHL
00000bdb: DUP2
00000bdc: MSTORE
00000bdd: PUSH1 0x20
00000bdf: PUSH1 0x04
00000be1: DUP3
00000be2: ADD
00000be3: MSTORE
00000be4: PUSH1 0x1b
00000be6: PUSH1 0x24
00000be8: DUP3
00000be9: ADD
00000bea: MSTORE
00000beb: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
00000c0c: PUSH1 0x44
00000c0e: DUP3
00000c0f: ADD
00000c10: MSTORE
00000c11: SWAP1
00000c12: MLOAD
00000c13: SWAP1
00000c14: DUP2
00000c15: SWAP1
00000c16: SUB
00000c17: PUSH1 0x64
00000c19: ADD
00000c1a: SWAP1
00000c1b: REVERT
00000c1c: JUMPDEST
00000c1d: SWAP4
00000c1e: SWAP3
00000c1f: POP
00000c20: POP
00000c21: POP
00000c22: JUMP
00000c23: JUMPDEST
00000c24: PUSH1 0x00
00000c26: PUSH2 0x0c78
00000c29: DUP3
00000c2a: PUSH1 0x40
00000c2c: MLOAD
00000c2d: DUP1
00000c2e: PUSH1 0x40
00000c30: ADD
00000c31: PUSH1 0x40
00000c33: MSTORE
00000c34: DUP1
00000c35: PUSH1 0x20
00000c37: DUP2
00000c38: MSTORE
00000c39: PUSH1 0x20
00000c3b: ADD
00000c3c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00000c5d: DUP2
00000c5e: MSTORE
00000c5f: POP
00000c60: DUP6
00000c61: PUSH1 0x01
00000c63: PUSH1 0x01
00000c65: PUSH1 0xa0
00000c67: SHL
00000c68: SUB
00000c69: AND
00000c6a: PUSH2 0x0cd4
00000c6d: SWAP1
00000c6e: SWAP3
00000c6f: SWAP2
00000c70: SWAP1
00000c71: PUSH4 0xffffffff
00000c76: AND
00000c77: JUMP
00000c78: JUMPDEST
00000c79: DUP1
00000c7a: MLOAD
00000c7b: SWAP1
00000c7c: SWAP2
00000c7d: POP
00000c7e: ISZERO
00000c7f: PUSH2 0x0893
00000c82: JUMPI
00000c83: DUP1
00000c84: DUP1
00000c85: PUSH1 0x20
00000c87: ADD
00000c88: SWAP1
00000c89: MLOAD
00000c8a: PUSH1 0x20
00000c8c: DUP2
00000c8d: LT
00000c8e: ISZERO
00000c8f: PUSH2 0x0c97
00000c92: JUMPI
00000c93: PUSH1 0x00
00000c95: DUP1
00000c96: REVERT
00000c97: JUMPDEST
00000c98: POP
00000c99: MLOAD
00000c9a: PUSH2 0x0893
00000c9d: JUMPI
00000c9e: PUSH1 0x40
00000ca0: MLOAD
00000ca1: PUSH3 0x461bcd
00000ca5: PUSH1 0xe5
00000ca7: SHL
00000ca8: DUP2
00000ca9: MSTORE
00000caa: PUSH1 0x04
00000cac: ADD
00000cad: DUP1
00000cae: DUP1
00000caf: PUSH1 0x20
00000cb1: ADD
00000cb2: DUP3
00000cb3: DUP2
00000cb4: SUB
00000cb5: DUP3
00000cb6: MSTORE
00000cb7: PUSH1 0x2a
00000cb9: DUP2
00000cba: MSTORE
00000cbb: PUSH1 0x20
00000cbd: ADD
00000cbe: DUP1
00000cbf: PUSH2 0x1508
00000cc2: PUSH1 0x2a
00000cc4: SWAP2
00000cc5: CODECOPY
00000cc6: PUSH1 0x40
00000cc8: ADD
00000cc9: SWAP2
00000cca: POP
00000ccb: POP
00000ccc: PUSH1 0x40
00000cce: MLOAD
00000ccf: DUP1
00000cd0: SWAP2
00000cd1: SUB
00000cd2: SWAP1
00000cd3: REVERT
00000cd4: JUMPDEST
00000cd5: PUSH1 0x60
00000cd7: PUSH2 0x0ce3
00000cda: DUP5
00000cdb: DUP5
00000cdc: PUSH1 0x00
00000cde: DUP6
00000cdf: PUSH2 0x0ceb
00000ce2: JUMP
00000ce3: JUMPDEST
00000ce4: SWAP5
00000ce5: SWAP4
00000ce6: POP
00000ce7: POP
00000ce8: POP
00000ce9: POP
00000cea: JUMP
00000ceb: JUMPDEST
00000cec: PUSH1 0x60
00000cee: DUP3
00000cef: SELFBALANCE
00000cf0: LT
00000cf1: ISZERO
00000cf2: PUSH2 0x0d2c
00000cf5: JUMPI
00000cf6: PUSH1 0x40
00000cf8: MLOAD
00000cf9: PUSH3 0x461bcd
00000cfd: PUSH1 0xe5
00000cff: SHL
00000d00: DUP2
00000d01: MSTORE
00000d02: PUSH1 0x04
00000d04: ADD
00000d05: DUP1
00000d06: DUP1
00000d07: PUSH1 0x20
00000d09: ADD
00000d0a: DUP3
00000d0b: DUP2
00000d0c: SUB
00000d0d: DUP3
00000d0e: MSTORE
00000d0f: PUSH1 0x26
00000d11: DUP2
00000d12: MSTORE
00000d13: PUSH1 0x20
00000d15: ADD
00000d16: DUP1
00000d17: PUSH2 0x14e2
00000d1a: PUSH1 0x26
00000d1c: SWAP2
00000d1d: CODECOPY
00000d1e: PUSH1 0x40
00000d20: ADD
00000d21: SWAP2
00000d22: POP
00000d23: POP
00000d24: PUSH1 0x40
00000d26: MLOAD
00000d27: DUP1
00000d28: SWAP2
00000d29: SUB
00000d2a: SWAP1
00000d2b: REVERT
00000d2c: JUMPDEST
00000d2d: PUSH2 0x0d35
00000d30: DUP6
00000d31: PUSH2 0x0234
00000d34: JUMP
00000d35: JUMPDEST
00000d36: PUSH2 0x0d86
00000d39: JUMPI
00000d3a: PUSH1 0x40
00000d3c: DUP1
00000d3d: MLOAD
00000d3e: PUSH3 0x461bcd
00000d42: PUSH1 0xe5
00000d44: SHL
00000d45: DUP2
00000d46: MSTORE
00000d47: PUSH1 0x20
00000d49: PUSH1 0x04
00000d4b: DUP3
00000d4c: ADD
00000d4d: MSTORE
00000d4e: PUSH1 0x1d
00000d50: PUSH1 0x24
00000d52: DUP3
00000d53: ADD
00000d54: MSTORE
00000d55: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00000d76: PUSH1 0x44
00000d78: DUP3
00000d79: ADD
00000d7a: MSTORE
00000d7b: SWAP1
00000d7c: MLOAD
00000d7d: SWAP1
00000d7e: DUP2
00000d7f: SWAP1
00000d80: SUB
00000d81: PUSH1 0x64
00000d83: ADD
00000d84: SWAP1
00000d85: REVERT
00000d86: JUMPDEST
00000d87: PUSH1 0x00
00000d89: DUP1
00000d8a: DUP7
00000d8b: PUSH1 0x01
00000d8d: PUSH1 0x01
00000d8f: PUSH1 0xa0
00000d91: SHL
00000d92: SUB
00000d93: AND
00000d94: DUP6
00000d95: DUP8
00000d96: PUSH1 0x40
00000d98: MLOAD
00000d99: DUP1
00000d9a: DUP3
00000d9b: DUP1
00000d9c: MLOAD
00000d9d: SWAP1
00000d9e: PUSH1 0x20
00000da0: ADD
00000da1: SWAP1
00000da2: DUP1
00000da3: DUP4
00000da4: DUP4
00000da5: JUMPDEST
00000da6: PUSH1 0x20
00000da8: DUP4
00000da9: LT
00000daa: PUSH2 0x0dc4
00000dad: JUMPI
00000dae: DUP1
00000daf: MLOAD
00000db0: DUP3
00000db1: MSTORE
00000db2: PUSH1 0x1f
00000db4: NOT
00000db5: SWAP1
00000db6: SWAP3
00000db7: ADD
00000db8: SWAP2
00000db9: PUSH1 0x20
00000dbb: SWAP2
00000dbc: DUP3
00000dbd: ADD
00000dbe: SWAP2
00000dbf: ADD
00000dc0: PUSH2 0x0da5
00000dc3: JUMP
00000dc4: JUMPDEST
00000dc5: PUSH1 0x01
00000dc7: DUP4
00000dc8: PUSH1 0x20
00000dca: SUB
00000dcb: PUSH2 0x0100
00000dce: EXP
00000dcf: SUB
00000dd0: DUP1
00000dd1: NOT
00000dd2: DUP3
00000dd3: MLOAD
00000dd4: AND
00000dd5: DUP2
00000dd6: DUP5
00000dd7: MLOAD
00000dd8: AND
00000dd9: DUP1
00000dda: DUP3
00000ddb: OR
00000ddc: DUP6
00000ddd: MSTORE
00000dde: POP
00000ddf: POP
00000de0: POP
00000de1: POP
00000de2: POP
00000de3: POP
00000de4: SWAP1
00000de5: POP
00000de6: ADD
00000de7: SWAP2
00000de8: POP
00000de9: POP
00000dea: PUSH1 0x00
00000dec: PUSH1 0x40
00000dee: MLOAD
00000def: DUP1
00000df0: DUP4
00000df1: SUB
00000df2: DUP2
00000df3: DUP6
00000df4: DUP8
00000df5: GAS
00000df6: CALL
00000df7: SWAP3
00000df8: POP
00000df9: POP
00000dfa: POP
00000dfb: RETURNDATASIZE
00000dfc: DUP1
00000dfd: PUSH1 0x00
00000dff: DUP2
00000e00: EQ
00000e01: PUSH2 0x0e26
00000e04: JUMPI
00000e05: PUSH1 0x40
00000e07: MLOAD
00000e08: SWAP2
00000e09: POP
00000e0a: PUSH1 0x1f
00000e0c: NOT
00000e0d: PUSH1 0x3f
00000e0f: RETURNDATASIZE
00000e10: ADD
00000e11: AND
00000e12: DUP3
00000e13: ADD
00000e14: PUSH1 0x40
00000e16: MSTORE
00000e17: RETURNDATASIZE
00000e18: DUP3
00000e19: MSTORE
00000e1a: RETURNDATASIZE
00000e1b: PUSH1 0x00
00000e1d: PUSH1 0x20
00000e1f: DUP5
00000e20: ADD
00000e21: RETURNDATACOPY
00000e22: PUSH2 0x0e2b
00000e25: JUMP
00000e26: JUMPDEST
00000e27: PUSH1 0x60
00000e29: SWAP2
00000e2a: POP
00000e2b: JUMPDEST
00000e2c: POP
00000e2d: SWAP2
00000e2e: POP
00000e2f: SWAP2
00000e30: POP
00000e31: PUSH2 0x0e3b
00000e34: DUP3
00000e35: DUP3
00000e36: DUP7
00000e37: PUSH2 0x0e46
00000e3a: JUMP
00000e3b: JUMPDEST
00000e3c: SWAP8
00000e3d: SWAP7
00000e3e: POP
00000e3f: POP
00000e40: POP
00000e41: POP
00000e42: POP
00000e43: POP
00000e44: POP
00000e45: JUMP
00000e46: JUMPDEST
00000e47: PUSH1 0x60
00000e49: DUP4
00000e4a: ISZERO
00000e4b: PUSH2 0x0e55
00000e4e: JUMPI
00000e4f: POP
00000e50: DUP2
00000e51: PUSH2 0x0c1c
00000e54: JUMP
00000e55: JUMPDEST
00000e56: DUP3
00000e57: MLOAD
00000e58: ISZERO
00000e59: PUSH2 0x0e65
00000e5c: JUMPI
00000e5d: DUP3
00000e5e: MLOAD
00000e5f: DUP1
00000e60: DUP5
00000e61: PUSH1 0x20
00000e63: ADD
00000e64: REVERT
00000e65: JUMPDEST
00000e66: DUP2
00000e67: PUSH1 0x40
00000e69: MLOAD
00000e6a: PUSH3 0x461bcd
00000e6e: PUSH1 0xe5
00000e70: SHL
00000e71: DUP2
00000e72: MSTORE
00000e73: PUSH1 0x04
00000e75: ADD
00000e76: DUP1
00000e77: DUP1
00000e78: PUSH1 0x20
00000e7a: ADD
00000e7b: DUP3
00000e7c: DUP2
00000e7d: SUB
00000e7e: DUP3
00000e7f: MSTORE
00000e80: DUP4
00000e81: DUP2
00000e82: DUP2
00000e83: MLOAD
00000e84: DUP2
00000e85: MSTORE
00000e86: PUSH1 0x20
00000e88: ADD
00000e89: SWAP2
00000e8a: POP
00000e8b: DUP1
00000e8c: MLOAD
00000e8d: SWAP1
00000e8e: PUSH1 0x20
00000e90: ADD
00000e91: SWAP1
00000e92: DUP1
00000e93: DUP4
00000e94: DUP4
00000e95: PUSH1 0x00
00000e97: JUMPDEST
00000e98: DUP4
00000e99: DUP2
00000e9a: LT
00000e9b: ISZERO
00000e9c: PUSH2 0x0eaf
00000e9f: JUMPI
00000ea0: DUP2
00000ea1: DUP2
00000ea2: ADD
00000ea3: MLOAD
00000ea4: DUP4
00000ea5: DUP3
00000ea6: ADD
00000ea7: MSTORE
00000ea8: PUSH1 0x20
00000eaa: ADD
00000eab: PUSH2 0x0e97
00000eae: JUMP
00000eaf: JUMPDEST
00000eb0: POP
00000eb1: POP
00000eb2: POP
00000eb3: POP
00000eb4: SWAP1
00000eb5: POP
00000eb6: SWAP1
00000eb7: DUP2
00000eb8: ADD
00000eb9: SWAP1
00000eba: PUSH1 0x1f
00000ebc: AND
00000ebd: DUP1
00000ebe: ISZERO
00000ebf: PUSH2 0x0edc
00000ec2: JUMPI
00000ec3: DUP1
00000ec4: DUP3
00000ec5: SUB
00000ec6: DUP1
00000ec7: MLOAD
00000ec8: PUSH1 0x01
00000eca: DUP4
00000ecb: PUSH1 0x20
00000ecd: SUB
00000ece: PUSH2 0x0100
00000ed1: EXP
00000ed2: SUB
00000ed3: NOT
00000ed4: AND
00000ed5: DUP2
00000ed6: MSTORE
00000ed7: PUSH1 0x20
00000ed9: ADD
00000eda: SWAP2
00000edb: POP
00000edc: JUMPDEST
00000edd: POP
00000ede: SWAP3
00000edf: POP
00000ee0: POP
00000ee1: POP
00000ee2: PUSH1 0x40
00000ee4: MLOAD
00000ee5: DUP1
00000ee6: SWAP2
00000ee7: SUB
00000ee8: SWAP1
00000ee9: REVERT
00000eea: JUMPDEST
00000eeb: DUP1
00000eec: CALLDATALOAD
00000eed: PUSH1 0x01
00000eef: PUSH1 0x01
00000ef1: PUSH1 0xa0
00000ef3: SHL
00000ef4: SUB
00000ef5: DUP2
00000ef6: AND
00000ef7: DUP2
00000ef8: EQ
00000ef9: PUSH2 0x0239
00000efc: JUMPI
00000efd: PUSH1 0x00
00000eff: DUP1
00000f00: REVERT
00000f01: JUMPDEST
00000f02: PUSH1 0x00
00000f04: DUP1
00000f05: DUP4
00000f06: PUSH1 0x1f
00000f08: DUP5
00000f09: ADD
00000f0a: SLT
00000f0b: PUSH2 0x0f12
00000f0e: JUMPI
00000f0f: DUP2
00000f10: DUP3
00000f11: REVERT
00000f12: JUMPDEST
00000f13: POP
00000f14: DUP2
00000f15: CALLDATALOAD
00000f16: PUSH8 0xffffffffffffffff
00000f1f: DUP2
00000f20: GT
00000f21: ISZERO
00000f22: PUSH2 0x0f29
00000f25: JUMPI
00000f26: DUP2
00000f27: DUP3
00000f28: REVERT
00000f29: JUMPDEST
00000f2a: PUSH1 0x20
00000f2c: DUP4
00000f2d: ADD
00000f2e: SWAP2
00000f2f: POP
00000f30: DUP4
00000f31: PUSH1 0x20
00000f33: DUP3
00000f34: DUP6
00000f35: ADD
00000f36: ADD
00000f37: GT
00000f38: ISZERO
00000f39: PUSH2 0x0f41
00000f3c: JUMPI
00000f3d: PUSH1 0x00
00000f3f: DUP1
00000f40: REVERT
00000f41: JUMPDEST
00000f42: SWAP3
00000f43: POP
00000f44: SWAP3
00000f45: SWAP1
00000f46: POP
00000f47: JUMP
00000f48: JUMPDEST
00000f49: DUP1
00000f4a: CALLDATALOAD
00000f4b: PUSH4 0xffffffff
00000f50: DUP2
00000f51: AND
00000f52: DUP2
00000f53: EQ
00000f54: PUSH2 0x0239
00000f57: JUMPI
00000f58: PUSH1 0x00
00000f5a: DUP1
00000f5b: REVERT
00000f5c: JUMPDEST
00000f5d: PUSH1 0x00
00000f5f: DUP1
00000f60: PUSH1 0x40
00000f62: DUP4
00000f63: DUP6
00000f64: SUB
00000f65: SLT
00000f66: ISZERO
00000f67: PUSH2 0x0f6e
00000f6a: JUMPI
00000f6b: DUP2
00000f6c: DUP3
00000f6d: REVERT
00000f6e: JUMPDEST
00000f6f: PUSH2 0x0f77
00000f72: DUP4
00000f73: PUSH2 0x0eea
00000f76: JUMP
00000f77: JUMPDEST
00000f78: SWAP2
00000f79: POP
00000f7a: PUSH2 0x0f85
00000f7d: PUSH1 0x20
00000f7f: DUP5
00000f80: ADD
00000f81: PUSH2 0x0eea
00000f84: JUMP
00000f85: JUMPDEST
00000f86: SWAP1
00000f87: POP
00000f88: SWAP3
00000f89: POP
00000f8a: SWAP3
00000f8b: SWAP1
00000f8c: POP
00000f8d: JUMP
00000f8e: JUMPDEST
00000f8f: PUSH1 0x00
00000f91: DUP1
00000f92: PUSH1 0x00
00000f94: DUP1
00000f95: PUSH1 0x00
00000f97: DUP1
00000f98: PUSH1 0x00
00000f9a: PUSH1 0xc0
00000f9c: DUP9
00000f9d: DUP11
00000f9e: SUB
00000f9f: SLT
00000fa0: ISZERO
00000fa1: PUSH2 0x0fa8
00000fa4: JUMPI
00000fa5: DUP3
00000fa6: DUP4
00000fa7: REVERT
00000fa8: JUMPDEST
00000fa9: PUSH2 0x0fb1
00000fac: DUP9
00000fad: PUSH2 0x0eea
00000fb0: JUMP
00000fb1: JUMPDEST
00000fb2: SWAP7
00000fb3: POP
00000fb4: PUSH2 0x0fbf
00000fb7: PUSH1 0x20
00000fb9: DUP10
00000fba: ADD
00000fbb: PUSH2 0x0eea
00000fbe: JUMP
00000fbf: JUMPDEST
00000fc0: SWAP6
00000fc1: POP
00000fc2: PUSH2 0x0fcd
00000fc5: PUSH1 0x40
00000fc7: DUP10
00000fc8: ADD
00000fc9: PUSH2 0x0eea
00000fcc: JUMP
00000fcd: JUMPDEST
00000fce: SWAP5
00000fcf: POP
00000fd0: PUSH2 0x0fdb
00000fd3: PUSH1 0x60
00000fd5: DUP10
00000fd6: ADD
00000fd7: PUSH2 0x0eea
00000fda: JUMP
00000fdb: JUMPDEST
00000fdc: SWAP4
00000fdd: POP
00000fde: PUSH1 0x80
00000fe0: DUP9
00000fe1: ADD
00000fe2: CALLDATALOAD
00000fe3: SWAP3
00000fe4: POP
00000fe5: PUSH1 0xa0
00000fe7: DUP9
00000fe8: ADD
00000fe9: CALLDATALOAD
00000fea: PUSH8 0xffffffffffffffff
00000ff3: DUP2
00000ff4: GT
00000ff5: ISZERO
00000ff6: PUSH2 0x0ffd
00000ff9: JUMPI
00000ffa: DUP3
00000ffb: DUP4
00000ffc: REVERT
00000ffd: JUMPDEST
00000ffe: PUSH2 0x1009
00001001: DUP11
00001002: DUP3
00001003: DUP12
00001004: ADD
00001005: PUSH2 0x0f01
00001008: JUMP
00001009: JUMPDEST
0000100a: SWAP9
0000100b: SWAP12
0000100c: SWAP8
0000100d: SWAP11
0000100e: POP
0000100f: SWAP6
00001010: SWAP9
00001011: POP
00001012: SWAP4
00001013: SWAP7
00001014: SWAP3
00001015: SWAP6
00001016: SWAP3
00001017: SWAP4
00001018: POP
00001019: POP
0000101a: POP
0000101b: JUMP
0000101c: JUMPDEST
0000101d: PUSH1 0x00
0000101f: DUP1
00001020: PUSH1 0x00
00001022: DUP1
00001023: PUSH1 0x00
00001025: DUP1
00001026: PUSH1 0x00
00001028: PUSH1 0xc0
0000102a: DUP9
0000102b: DUP11
0000102c: SUB
0000102d: SLT
0000102e: ISZERO
0000102f: PUSH2 0x1036
00001032: JUMPI
00001033: DUP3
00001034: DUP4
00001035: REVERT
00001036: JUMPDEST
00001037: PUSH2 0x103f
0000103a: DUP9
0000103b: PUSH2 0x0eea
0000103e: JUMP
0000103f: JUMPDEST
00001040: SWAP7
00001041: POP
00001042: PUSH2 0x104d
00001045: PUSH1 0x20
00001047: DUP10
00001048: ADD
00001049: PUSH2 0x0eea
0000104c: JUMP
0000104d: JUMPDEST
0000104e: SWAP6
0000104f: POP
00001050: PUSH2 0x105b
00001053: PUSH1 0x40
00001055: DUP10
00001056: ADD
00001057: PUSH2 0x0eea
0000105a: JUMP
0000105b: JUMPDEST
0000105c: SWAP5
0000105d: POP
0000105e: PUSH1 0x60
00001060: DUP9
00001061: ADD
00001062: CALLDATALOAD
00001063: SWAP4
00001064: POP
00001065: PUSH2 0x1070
00001068: PUSH1 0x80
0000106a: DUP10
0000106b: ADD
0000106c: PUSH2 0x0f48
0000106f: JUMP
00001070: JUMPDEST
00001071: SWAP3
00001072: POP
00001073: PUSH1 0xa0
00001075: DUP9
00001076: ADD
00001077: CALLDATALOAD
00001078: PUSH8 0xffffffffffffffff
00001081: DUP2
00001082: GT
00001083: ISZERO
00001084: PUSH2 0x0ffd
00001087: JUMPI
00001088: DUP3
00001089: DUP4
0000108a: REVERT
0000108b: JUMPDEST
0000108c: PUSH1 0x00
0000108e: DUP1
0000108f: PUSH1 0x00
00001091: DUP1
00001092: PUSH1 0x00
00001094: PUSH1 0x80
00001096: DUP7
00001097: DUP9
00001098: SUB
00001099: SLT
0000109a: ISZERO
0000109b: PUSH2 0x10a2
0000109e: JUMPI
0000109f: DUP1
000010a0: DUP2
000010a1: REVERT
000010a2: JUMPDEST
000010a3: PUSH2 0x10ab
000010a6: DUP7
000010a7: PUSH2 0x0eea
000010aa: JUMP
000010ab: JUMPDEST
000010ac: SWAP5
000010ad: POP
000010ae: PUSH2 0x10b9
000010b1: PUSH1 0x20
000010b3: DUP8
000010b4: ADD
000010b5: PUSH2 0x0eea
000010b8: JUMP
000010b9: JUMPDEST
000010ba: SWAP4
000010bb: POP
000010bc: PUSH1 0x40
000010be: DUP7
000010bf: ADD
000010c0: CALLDATALOAD
000010c1: SWAP3
000010c2: POP
000010c3: PUSH1 0x60
000010c5: DUP7
000010c6: ADD
000010c7: CALLDATALOAD
000010c8: PUSH8 0xffffffffffffffff
000010d1: DUP2
000010d2: GT
000010d3: ISZERO
000010d4: PUSH2 0x10db
000010d7: JUMPI
000010d8: DUP2
000010d9: DUP3
000010da: REVERT
000010db: JUMPDEST
000010dc: PUSH2 0x10e7
000010df: DUP9
000010e0: DUP3
000010e1: DUP10
000010e2: ADD
000010e3: PUSH2 0x0f01
000010e6: JUMP
000010e7: JUMPDEST
000010e8: SWAP7
000010e9: SWAP10
000010ea: SWAP6
000010eb: SWAP9
000010ec: POP
000010ed: SWAP4
000010ee: SWAP7
000010ef: POP
000010f0: SWAP3
000010f1: SWAP5
000010f2: SWAP4
000010f3: SWAP3
000010f4: POP
000010f5: POP
000010f6: POP
000010f7: JUMP
000010f8: JUMPDEST
000010f9: PUSH1 0x00
000010fb: DUP1
000010fc: PUSH1 0x00
000010fe: DUP1
000010ff: PUSH1 0x00
00001101: DUP1
00001102: PUSH1 0xa0
00001104: DUP8
00001105: DUP10
00001106: SUB
00001107: SLT
00001108: ISZERO
00001109: PUSH2 0x1110
0000110c: JUMPI
0000110d: DUP2
0000110e: DUP3
0000110f: REVERT
00001110: JUMPDEST
00001111: PUSH2 0x1119
00001114: DUP8
00001115: PUSH2 0x0eea
00001118: JUMP
00001119: JUMPDEST
0000111a: SWAP6
0000111b: POP
0000111c: PUSH2 0x1127
0000111f: PUSH1 0x20
00001121: DUP9
00001122: ADD
00001123: PUSH2 0x0eea
00001126: JUMP
00001127: JUMPDEST
00001128: SWAP5
00001129: POP
0000112a: PUSH1 0x40
0000112c: DUP8
0000112d: ADD
0000112e: CALLDATALOAD
0000112f: SWAP4
00001130: POP
00001131: PUSH2 0x113c
00001134: PUSH1 0x60
00001136: DUP9
00001137: ADD
00001138: PUSH2 0x0f48
0000113b: JUMP
0000113c: JUMPDEST
0000113d: SWAP3
0000113e: POP
0000113f: PUSH1 0x80
00001141: DUP8
00001142: ADD
00001143: CALLDATALOAD
00001144: PUSH8 0xffffffffffffffff
0000114d: DUP2
0000114e: GT
0000114f: ISZERO
00001150: PUSH2 0x1157
00001153: JUMPI
00001154: DUP3
00001155: DUP4
00001156: REVERT
00001157: JUMPDEST
00001158: PUSH2 0x1163
0000115b: DUP10
0000115c: DUP3
0000115d: DUP11
0000115e: ADD
0000115f: PUSH2 0x0f01
00001162: JUMP
00001163: JUMPDEST
00001164: SWAP8
00001165: SWAP11
00001166: SWAP7
00001167: SWAP10
00001168: POP
00001169: SWAP5
0000116a: SWAP8
0000116b: POP
0000116c: SWAP3
0000116d: SWAP6
0000116e: SWAP4
0000116f: SWAP5
00001170: SWAP3
00001171: POP
00001172: POP
00001173: POP
00001174: JUMP
00001175: JUMPDEST
00001176: PUSH1 0x00
00001178: DUP1
00001179: PUSH1 0x00
0000117b: DUP1
0000117c: PUSH1 0x60
0000117e: DUP6
0000117f: DUP8
00001180: SUB
00001181: SLT
00001182: ISZERO
00001183: PUSH2 0x118a
00001186: JUMPI
00001187: DUP4
00001188: DUP5
00001189: REVERT
0000118a: JUMPDEST
0000118b: PUSH2 0x1193
0000118e: DUP6
0000118f: PUSH2 0x0eea
00001192: JUMP
00001193: JUMPDEST
00001194: SWAP4
00001195: POP
00001196: PUSH2 0x11a1
00001199: PUSH1 0x20
0000119b: DUP7
0000119c: ADD
0000119d: PUSH2 0x0f48
000011a0: JUMP
000011a1: JUMPDEST
000011a2: SWAP3
000011a3: POP
000011a4: PUSH1 0x40
000011a6: DUP6
000011a7: ADD
000011a8: CALLDATALOAD
000011a9: PUSH8 0xffffffffffffffff
000011b2: DUP2
000011b3: GT
000011b4: ISZERO
000011b5: PUSH2 0x11bc
000011b8: JUMPI
000011b9: DUP3
000011ba: DUP4
000011bb: REVERT
000011bc: JUMPDEST
000011bd: PUSH2 0x11c8
000011c0: DUP8
000011c1: DUP3
000011c2: DUP9
000011c3: ADD
000011c4: PUSH2 0x0f01
000011c7: JUMP
000011c8: JUMPDEST
000011c9: SWAP6
000011ca: SWAP9
000011cb: SWAP5
000011cc: SWAP8
000011cd: POP
000011ce: SWAP6
000011cf: POP
000011d0: POP
000011d1: POP
000011d2: POP
000011d3: JUMP
000011d4: JUMPDEST
000011d5: PUSH1 0x00
000011d7: DUP1
000011d8: PUSH1 0x00
000011da: PUSH1 0x40
000011dc: DUP5
000011dd: DUP7
000011de: SUB
000011df: SLT
000011e0: ISZERO
000011e1: PUSH2 0x11e8
000011e4: JUMPI
000011e5: DUP3
000011e6: DUP4
000011e7: REVERT
000011e8: JUMPDEST
000011e9: PUSH2 0x11f1
000011ec: DUP5
000011ed: PUSH2 0x0f48
000011f0: JUMP
000011f1: JUMPDEST
000011f2: SWAP3
000011f3: POP
000011f4: PUSH1 0x20
000011f6: DUP5
000011f7: ADD
000011f8: CALLDATALOAD
000011f9: PUSH8 0xffffffffffffffff
00001202: DUP2
00001203: GT
00001204: ISZERO
00001205: PUSH2 0x120c
00001208: JUMPI
00001209: DUP3
0000120a: DUP4
0000120b: REVERT
0000120c: JUMPDEST
0000120d: PUSH2 0x1218
00001210: DUP7
00001211: DUP3
00001212: DUP8
00001213: ADD
00001214: PUSH2 0x0f01
00001217: JUMP
00001218: JUMPDEST
00001219: SWAP5
0000121a: SWAP8
0000121b: SWAP1
0000121c: SWAP7
0000121d: POP
0000121e: SWAP4
0000121f: SWAP5
00001220: POP
00001221: POP
00001222: POP
00001223: POP
00001224: JUMP
00001225: JUMPDEST
00001226: PUSH1 0x00
00001228: DUP3
00001229: DUP5
0000122a: MSTORE
0000122b: DUP3
0000122c: DUP3
0000122d: PUSH1 0x20
0000122f: DUP7
00001230: ADD
00001231: CALLDATACOPY
00001232: DUP1
00001233: PUSH1 0x20
00001235: DUP5
00001236: DUP7
00001237: ADD
00001238: ADD
00001239: MSTORE
0000123a: PUSH1 0x20
0000123c: PUSH1 0x1f
0000123e: NOT
0000123f: PUSH1 0x1f
00001241: DUP6
00001242: ADD
00001243: AND
00001244: DUP6
00001245: ADD
00001246: ADD
00001247: SWAP1
00001248: POP
00001249: SWAP4
0000124a: SWAP3
0000124b: POP
0000124c: POP
0000124d: POP
0000124e: JUMP
0000124f: JUMPDEST
00001250: PUSH1 0x00
00001252: DUP2
00001253: MLOAD
00001254: DUP1
00001255: DUP5
00001256: MSTORE
00001257: PUSH2 0x1267
0000125a: DUP2
0000125b: PUSH1 0x20
0000125d: DUP7
0000125e: ADD
0000125f: PUSH1 0x20
00001261: DUP7
00001262: ADD
00001263: PUSH2 0x1485
00001266: JUMP
00001267: JUMPDEST
00001268: PUSH1 0x1f
0000126a: ADD
0000126b: PUSH1 0x1f
0000126d: NOT
0000126e: AND
0000126f: SWAP3
00001270: SWAP1
00001271: SWAP3
00001272: ADD
00001273: PUSH1 0x20
00001275: ADD
00001276: SWAP3
00001277: SWAP2
00001278: POP
00001279: POP
0000127a: JUMP
0000127b: JUMPDEST
0000127c: PUSH1 0x00
0000127e: DUP3
0000127f: MLOAD
00001280: PUSH2 0x128d
00001283: DUP2
00001284: DUP5
00001285: PUSH1 0x20
00001287: DUP8
00001288: ADD
00001289: PUSH2 0x1485
0000128c: JUMP
0000128d: JUMPDEST
0000128e: SWAP2
0000128f: SWAP1
00001290: SWAP2
00001291: ADD
00001292: SWAP3
00001293: SWAP2
00001294: POP
00001295: POP
00001296: JUMP
00001297: JUMPDEST
00001298: PUSH1 0x01
0000129a: PUSH1 0x01
0000129c: PUSH1 0xa0
0000129e: SHL
0000129f: SUB
000012a0: SWAP2
000012a1: SWAP1
000012a2: SWAP2
000012a3: AND
000012a4: DUP2
000012a5: MSTORE
000012a6: PUSH1 0x20
000012a8: ADD
000012a9: SWAP1
000012aa: JUMP
000012ab: JUMPDEST
000012ac: PUSH1 0x01
000012ae: PUSH1 0x01
000012b0: PUSH1 0xa0
000012b2: SHL
000012b3: SUB
000012b4: DUP8
000012b5: DUP2
000012b6: AND
000012b7: DUP3
000012b8: MSTORE
000012b9: DUP7
000012ba: DUP2
000012bb: AND
000012bc: PUSH1 0x20
000012be: DUP4
000012bf: ADD
000012c0: MSTORE
000012c1: DUP6
000012c2: DUP2
000012c3: AND
000012c4: PUSH1 0x40
000012c6: DUP4
000012c7: ADD
000012c8: MSTORE
000012c9: DUP5
000012ca: AND
000012cb: PUSH1 0x60
000012cd: DUP3
000012ce: ADD
000012cf: MSTORE
000012d0: PUSH1 0x80
000012d2: DUP2
000012d3: ADD
000012d4: DUP4
000012d5: SWAP1
000012d6: MSTORE
000012d7: PUSH1 0xc0
000012d9: PUSH1 0xa0
000012db: DUP3
000012dc: ADD
000012dd: DUP2
000012de: SWAP1
000012df: MSTORE
000012e0: PUSH1 0x00
000012e2: SWAP1
000012e3: PUSH2 0x12ee
000012e6: SWAP1
000012e7: DUP4
000012e8: ADD
000012e9: DUP5
000012ea: PUSH2 0x124f
000012ed: JUMP
000012ee: JUMPDEST
000012ef: SWAP9
000012f0: SWAP8
000012f1: POP
000012f2: POP
000012f3: POP
000012f4: POP
000012f5: POP
000012f6: POP
000012f7: POP
000012f8: POP
000012f9: JUMP
000012fa: JUMPDEST
000012fb: PUSH1 0x01
000012fd: PUSH1 0x01
000012ff: PUSH1 0xa0
00001301: SHL
00001302: SUB
00001303: DUP9
00001304: DUP2
00001305: AND
00001306: DUP3
00001307: MSTORE
00001308: DUP8
00001309: DUP2
0000130a: AND
0000130b: PUSH1 0x20
0000130d: DUP4
0000130e: ADD
0000130f: MSTORE
00001310: DUP7
00001311: DUP2
00001312: AND
00001313: PUSH1 0x40
00001315: DUP4
00001316: ADD
00001317: MSTORE
00001318: DUP6
00001319: AND
0000131a: PUSH1 0x60
0000131c: DUP3
0000131d: ADD
0000131e: MSTORE
0000131f: PUSH1 0x80
00001321: DUP2
00001322: ADD
00001323: DUP5
00001324: SWAP1
00001325: MSTORE
00001326: PUSH1 0xc0
00001328: PUSH1 0xa0
0000132a: DUP3
0000132b: ADD
0000132c: DUP2
0000132d: SWAP1
0000132e: MSTORE
0000132f: PUSH1 0x00
00001331: SWAP1
00001332: PUSH2 0x133e
00001335: SWAP1
00001336: DUP4
00001337: ADD
00001338: DUP5
00001339: DUP7
0000133a: PUSH2 0x1225
0000133d: JUMP
0000133e: JUMPDEST
0000133f: SWAP10
00001340: SWAP9
00001341: POP
00001342: POP
00001343: POP
00001344: POP
00001345: POP
00001346: POP
00001347: POP
00001348: POP
00001349: POP
0000134a: JUMP
0000134b: JUMPDEST
0000134c: PUSH1 0x00
0000134e: PUSH1 0x01
00001350: DUP1
00001351: PUSH1 0xa0
00001353: SHL
00001354: SUB
00001355: DUP7
00001356: AND
00001357: DUP3
00001358: MSTORE
00001359: DUP5
0000135a: PUSH1 0x20
0000135c: DUP4
0000135d: ADD
0000135e: MSTORE
0000135f: PUSH1 0x60
00001361: PUSH1 0x40
00001363: DUP4
00001364: ADD
00001365: MSTORE
00001366: PUSH2 0x1373
00001369: PUSH1 0x60
0000136b: DUP4
0000136c: ADD
0000136d: DUP5
0000136e: DUP7
0000136f: PUSH2 0x1225
00001372: JUMP
00001373: JUMPDEST
00001374: SWAP7
00001375: SWAP6
00001376: POP
00001377: POP
00001378: POP
00001379: POP
0000137a: POP
0000137b: POP
0000137c: JUMP
0000137d: JUMPDEST
0000137e: PUSH1 0x20
00001380: DUP1
00001381: DUP3
00001382: MSTORE
00001383: PUSH1 0x0f
00001385: SWAP1
00001386: DUP3
00001387: ADD
00001388: MSTORE
00001389: PUSH15 0x4163636f756e74206e6f7420454f41
00001399: PUSH1 0x88
0000139b: SHL
0000139c: PUSH1 0x40
0000139e: DUP3
0000139f: ADD
000013a0: MSTORE
000013a1: PUSH1 0x60
000013a3: ADD
000013a4: SWAP1
000013a5: JUMP
000013a6: JUMPDEST
000013a7: PUSH1 0x20
000013a9: DUP1
000013aa: DUP3
000013ab: MSTORE
000013ac: PUSH1 0x34
000013ae: SWAP1
000013af: DUP3
000013b0: ADD
000013b1: MSTORE
000013b2: PUSH32 0x5472616e7366657248656c7065723a3a736166655472616e736665724554483a
000013d3: PUSH1 0x40
000013d5: DUP3
000013d6: ADD
000013d7: MSTORE
000013d8: PUSH20 0x08115512081d1c985b9cd9995c8819985a5b1959
000013ed: PUSH1 0x62
000013ef: SHL
000013f0: PUSH1 0x60
000013f2: DUP3
000013f3: ADD
000013f4: MSTORE
000013f5: PUSH1 0x80
000013f7: ADD
000013f8: SWAP1
000013f9: JUMP
000013fa: JUMPDEST
000013fb: PUSH1 0x20
000013fd: DUP1
000013fe: DUP3
000013ff: MSTORE
00001400: PUSH1 0x26
00001402: SWAP1
00001403: DUP3
00001404: ADD
00001405: MSTORE
00001406: PUSH32 0x436f6e74726163742068617320616c7265616479206265656e20696e69746961
00001427: PUSH1 0x40
00001429: DUP3
0000142a: ADD
0000142b: MSTORE
0000142c: PUSH6 0x3634bd32b217
00001433: PUSH1 0xd1
00001435: SHL
00001436: PUSH1 0x60
00001438: DUP3
00001439: ADD
0000143a: MSTORE
0000143b: PUSH1 0x80
0000143d: ADD
0000143e: SWAP1
0000143f: JUMP
00001440: JUMPDEST
00001441: SWAP1
00001442: DUP2
00001443: MSTORE
00001444: PUSH1 0x20
00001446: ADD
00001447: SWAP1
00001448: JUMP
00001449: JUMPDEST
0000144a: PUSH1 0x00
0000144c: DUP5
0000144d: DUP3
0000144e: MSTORE
0000144f: PUSH1 0x40
00001451: PUSH1 0x20
00001453: DUP4
00001454: ADD
00001455: MSTORE
00001456: PUSH2 0x1463
00001459: PUSH1 0x40
0000145b: DUP4
0000145c: ADD
0000145d: DUP5
0000145e: DUP7
0000145f: PUSH2 0x1225
00001462: JUMP
00001463: JUMPDEST
00001464: SWAP6
00001465: SWAP5
00001466: POP
00001467: POP
00001468: POP
00001469: POP
0000146a: POP
0000146b: JUMP
0000146c: JUMPDEST
0000146d: PUSH1 0x00
0000146f: DUP4
00001470: DUP3
00001471: MSTORE
00001472: PUSH1 0x40
00001474: PUSH1 0x20
00001476: DUP4
00001477: ADD
00001478: MSTORE
00001479: PUSH2 0x0ce3
0000147c: PUSH1 0x40
0000147e: DUP4
0000147f: ADD
00001480: DUP5
00001481: PUSH2 0x124f
00001484: JUMP
00001485: JUMPDEST
00001486: PUSH1 0x00
00001488: JUMPDEST
00001489: DUP4
0000148a: DUP2
0000148b: LT
0000148c: ISZERO
0000148d: PUSH2 0x14a0
00001490: JUMPI
00001491: DUP2
00001492: DUP2
00001493: ADD
00001494: MLOAD
00001495: DUP4
00001496: DUP3
00001497: ADD
00001498: MSTORE
00001499: PUSH1 0x20
0000149b: ADD
0000149c: PUSH2 0x1488
0000149f: JUMP
000014a0: JUMPDEST
000014a1: DUP4
000014a2: DUP2
000014a3: GT
000014a4: ISZERO
000014a5: PUSH2 0x063b
000014a8: JUMPI
000014a9: POP
000014aa: POP
000014ab: PUSH1 0x00
000014ad: SWAP2
000014ae: ADD
000014af: MSTORE
000014b0: JUMP
000014b1: INVALID
000014b2: UNKNOWN(0x4E)
000014b3: JUMP
000014b4: UNKNOWN(0x4D)
000014b5: PUSH0
000014b6: PC
000014b7: NUMBER
000014b8: BASEFEE
000014b9: COINBASE
000014ba: BLOBHASH
000014bb: UNKNOWN(0x4E)
000014bc: GASPRICE
000014bd: KECCAK256
000014be: PUSH24 0x726f6e672073656e646572206f662063726f73732d646f6d
000014d7: PUSH2 0x696e
000014da: KECCAK256
000014db: PUSH14 0x657373616765416464726573733a
000014ea: KECCAK256
000014eb: PUSH10 0x6e73756666696369656e
000014f6: PUSH21 0x2062616c616e636520666f722063616c6c53616665
0000150c: GASLIMIT
0000150d: MSTORE
0000150e: NUMBER
0000150f: ORIGIN
00001510: ADDRESS
00001511: GASPRICE
00001512: KECCAK256
00001513: GASLIMIT
00001514: MSTORE
00001515: NUMBER
00001516: ORIGIN
00001517: ADDRESS
00001518: KECCAK256
00001519: PUSH16 0x7065726174696f6e20646964206e6f74
0000152a: KECCAK256
0000152b: PUSH20 0x7563636565644e564d5f58434841494e3a206d65
00001540: PUSH20 0x73656e67657220636f6e747261637420756e6175
00001555: PUSH21 0x68656e74696361746564a164736f6c634300070600
0000156b: EXP

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x8b4c40b0",
            "selector": "0x8b4c40b0",
            "calldata_variants": [
                "0x8b4c40b0",
                "0x8b4c40b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8f601f66",
            "selector": "0x8f601f66",
            "calldata_variants": [
                "0x8f601f66",
                "0x8f601f660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91c49bf8",
            "selector": "0x91c49bf8",
            "calldata_variants": [
                "0x91c49bf8",
                "0x91c49bf80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9a2ac6d5",
            "selector": "0x9a2ac6d5",
            "calldata_variants": [
                "0x9a2ac6d5",
                "0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9f9e675",
            "selector": "0xa9f9e675",
            "calldata_variants": [
                "0xa9f9e675",
                "0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1a1a882",
            "selector": "0xb1a1a882",
            "calldata_variants": [
                "0xb1a1a882",
                "0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1532ec34",
            "selector": "0x1532ec34",
            "calldata_variants": [
                "0x1532ec34",
                "0x1532ec340000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3cb747bf",
            "selector": "0x3cb747bf",
            "calldata_variants": [
                "0x3cb747bf",
                "0x3cb747bf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 5391,
            "type": "tx_origin_used"
        },
        {
            "pc": 5398,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63
call_targets: 0xf46655cad8c7db3719af4eb9cfdac0987985080c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf46655cad8c7db3719af4eb9cfdac0987985080c"
    ],
    "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": "0x8b4c40b0",
            "selector": "0x8b4c40b0",
            "calldata_variants": [
                "0x8b4c40b0",
                "0x8b4c40b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8f601f66",
            "selector": "0x8f601f66",
            "calldata_variants": [
                "0x8f601f66",
                "0x8f601f660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91c49bf8",
            "selector": "0x91c49bf8",
            "calldata_variants": [
                "0x91c49bf8",
                "0x91c49bf80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9a2ac6d5",
            "selector": "0x9a2ac6d5",
            "calldata_variants": [
                "0x9a2ac6d5",
                "0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9f9e675",
            "selector": "0xa9f9e675",
            "calldata_variants": [
                "0xa9f9e675",
                "0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1a1a882",
            "selector": "0xb1a1a882",
            "calldata_variants": [
                "0xb1a1a882",
                "0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1532ec34",
            "selector": "0x1532ec34",
            "calldata_variants": [
                "0x1532ec34",
                "0x1532ec340000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3cb747bf",
            "selector": "0x3cb747bf",
            "calldata_variants": [
                "0x3cb747bf",
                "0x3cb747bf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1120,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2409,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3574,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [
        {
            "pc": 5391,
            "type": "tx_origin_used"
        },
        {
            "pc": 5398,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 3
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63
call_targets: 0xf46655cad8c7db3719af4eb9cfdac0987985080c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf46655cad8c7db3719af4eb9cfdac0987985080c"
    ],
    "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": "0x8b4c40b0",
            "selector": "0x8b4c40b0",
            "calldata_variants": [
                "0x8b4c40b0",
                "0x8b4c40b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8f601f66",
            "selector": "0x8f601f66",
            "calldata_variants": [
                "0x8f601f66",
                "0x8f601f660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x91c49bf8",
            "selector": "0x91c49bf8",
            "calldata_variants": [
                "0x91c49bf8",
                "0x91c49bf80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9a2ac6d5",
            "selector": "0x9a2ac6d5",
            "calldata_variants": [
                "0x9a2ac6d5",
                "0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9f9e675",
            "selector": "0xa9f9e675",
            "calldata_variants": [
                "0xa9f9e675",
                "0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1a1a882",
            "selector": "0xb1a1a882",
            "calldata_variants": [
                "0xb1a1a882",
                "0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1532ec34",
            "selector": "0x1532ec34",
            "calldata_variants": [
                "0x1532ec34",
                "0x1532ec340000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3cb747bf",
            "selector": "0x3cb747bf",
            "calldata_variants": [
                "0x3cb747bf",
                "0x3cb747bf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1120,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2409,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3574,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": [
        {
            "pc": 5391,
            "type": "tx_origin_used"
        },
        {
            "pc": 5398,
            "type": "tx_origin_used"
        }
    ]
}