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

Analysis Run

302e36da-a349-4734-86ec-4c8186a5d24e

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 6:56 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
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30454 report.consolidate complete 1 / 1 3 months ago
103583 artifact.fetch complete 1 / 3 1 week ago
103584 tool.cast_disasm complete 1 / 3 1 week ago
103585 analysis.bundle complete 1 / 3 1 week ago
103586 capability.graph complete 1 / 3 1 week ago
103587 detector.run complete 1 / 3 1 week ago
103588 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
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 vulnerabilities could be confirmed from the provided runtime bytecode/disassembly patterns alone.
View stderr
[codex:1407433] OpenAI Codex v0.77.0 (research preview)
[codex:1407433] --------
[codex:1407433] workdir: /tmp/codex-multi-cpw4i0oe
[codex:1407433] model: gpt-5.2-codex
[codex:1407433] provider: openai
[codex:1407433] approval: never
[codex:1407433] sandbox: read-only
[codex:1407433] reasoning effort: xhigh
[codex:1407433] reasoning summaries: auto
[codex:1407433] session id: 019b68dc-35f8-7971-bc41-2a477ef48a1e
[codex:1407433] --------
[codex:1407433] user
[codex:1407433] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1407433] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1407433] 
[codex:1407433] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1407433] 
[codex:1407433] Output MUST be valid JSON matching the provided schema.
[codex:1407433] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1407433] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1407433] 
[codex:1407433] Output constraints (IMPORTANT):
[codex:1407433] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1407433] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1407433] mcp startup: no servers
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Reading bytecode bundle file**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc ls in /tmp/codex-multi-cpw4i0oe succeeded in 6ms:
[codex:1407433] BYTECODE_BUNDLE.txt
[codex:1407433] codex-output-schema.json
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Reading file contents**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-cpw4i0oe succeeded in 5ms:
[codex:1407433] Runtime bytecode bundle for best-effort auditing.
[codex:1407433] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1407433] 
[codex:1407433] FILE: runtime_bytecode.hex
[codex:1407433] 0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816306b14fb41461105857508063190dc79b146110305780631f16644014610f46578063213a2ba314610e7e578063298b641d14610db657806337016ad114610cda5780633e9714c1146108af5780633f4ba83a1461083f5780634243ba3c146108165780634bbec667146107e7578063536fff6c146107a8578063538ba4f91461078c578063570ca735146107635780635c975abb1461073d5780636817031b146106c85780636ff1c9bc14610558578063715018a6146104f357806379ba50971461046e5780638456cb59146103f25780638da5cb5b146103cb578063a3a562491461034e578063b3ab15fb146102d9578063bc46e99a1461029a578063c42fc2f61461020e578063e30c3978146101e5578063f2fde38b146101785763fbfa77cf0361000f57346101755780600319360112610175576004546040516001600160a01b039091168152602090f35b80fd5b503461017557602036600319011261017557610192611091565b61019a611262565b600180546001600160a01b0319166001600160a01b0392831690811790915582549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346101755780600319360112610175576001546040516001600160a01b039091168152602090f35b503461017557602036600319011261017557610228611091565b610230611244565b610238611262565b6001600160a01b0316801561028b57600980546001600160a01b0319811683179091556001600160a01b03167f09145fe6f3c8bca051a21cc293ecc9065d9636751d4c95e2fdaddd91d47c0b1b8380a380f35b630191b71b60e61b8252600482fd5b50346101755760203660031901126101755760209060ff906040906001600160a01b036102c5611091565b168152600884522054166040519015158152f35b5034610175576020366003190112610175576102f3611091565b6102fb611262565b6001600160a01b0316801561028b57600380546001600160a01b0319811683179091556001600160a01b03167ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad038380a380f35b503461017557602036600319011261017557610368611091565b610370611244565b610378611262565b6001600160a01b0316801561028b57600a80546001600160a01b0319811683179091556001600160a01b03167feba78dd39e48c4a74634d5e9e037016353a0ed869d6eb149db0e72745089c3b28380a380f35b5034610175578060031936011261017557546040516001600160a01b039091168152602090f35b50346101755780600319360112610175576003546001600160a01b0316330361045f5761041d611244565b6001805460ff60a01b1916600160a01b1790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b6327e1f1e560e01b8152600490fd5b5034610175578060031936011261017557600154336001600160a01b03909116036104e057600180546001600160a01b0319908116909155815433918116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b63118cdaa760e01b815233600452602490fd5b503461017557806003193601126101755761050c611262565b600180546001600160a01b03199081169091558154908116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461017557602036600319011261017557610572611091565b6003546001600160a01b031633036106b9576004546001600160a01b03169061059a816111aa565b156105e3575047806105ab57505080f35b6020816105d97f77f67778e9529a2fd2147ffb2b10ca2e0d1efd8cb925e1f1d5702e39c5fa8da693856111da565b604051908152a280f35b6040516370a0823160e01b81523060048201526001600160a01b03919091169190602081602481865afa9081156106ae578491610678575b5080610628575b50505080f35b81610655827f9b793652de97f04c5168920587bad4b1c6345295a8f5ad31c59ff946a26f91d29486611306565b604080516001600160a01b039290921682526020820192909252a25f8080610622565b90506020813d6020116106a6575b8161069360209383611154565b810103126106a257515f61061b565b5f80fd5b3d9150610686565b6040513d86823e3d90fd5b6327e1f1e560e01b8252600482fd5b5034610175576020366003190112610175576106e2611091565b6106ea611262565b6001600160a01b0316801561028b57600480546001600160a01b0319811683179091556001600160a01b03167f483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea398380a380f35b5034610175578060031936011261017557602060ff60015460a01c166040519015158152f35b50346101755780600319360112610175576003546040516001600160a01b039091168152602090f35b5034610175578060031936011261017557602090604051908152f35b50346101755760203660031901126101755760209060ff906040906001600160a01b036107d3611091565b168152600584522054166040519015158152f35b50346101755760203660031901126101755760ff60406020926004358152600684522054166040519015158152f35b50346101755780600319360112610175576009546040516001600160a01b039091168152602090f35b5034610175578060031936011261017557610858611262565b60015460ff8160a01c16156108a05760ff60a01b19166001556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b638dfc202b60e01b8252600482fd5b5060403660031901126106a25760043567ffffffffffffffff81116106a25761012060031982360301126106a2576024359067ffffffffffffffff82116106a257366023830112156106a25781600401359167ffffffffffffffff83116106a25736602484830101116106a2576002805414610ccb5760028055610931611244565b335f52600560205260ff60405f20541615610cbc5760c482016001600160a01b0361095b82611140565b165f52600760205260ff60405f20541615610cad5760e48301916001600160a01b0361098684611140565b165f52600860205260ff60405f20541615610c9e57836004013592835f52600660205260ff60405f205416610c8f57835f52600660205260405f20600160ff19825416179055606485013594854211610c805760448101358015610c715760848201966109f288611140565b60a4840199906001600160a01b03610a098c611140565b6001600160a01b03909216911614610c6257602484013595610a2a88611140565b610a338b611140565b95610a3d8d611140565b97610a4781611140565b9a610a528c8b611288565b9e5f610a5d8b6111aa565b15610c4857508b945b6001600160a01b03169e8f3b156106a2578e986040519963a2cc1f2360e01b8b52604060048c015260448b01528d60648b01528a60848b015260a48a0152610ab460018060a01b03916110a7565b1660c48901526001600160a01b0390610acc906110a7565b1660e48801526001600160a01b0390610ae4906110a7565b166101048701526001600160a01b0390610afd906110a7565b16610124860152610104810135602219823603018112156106a257019260246004850135940167ffffffffffffffff85116106a25784360381136106a257610b71869485936024610b5f86955f9a61012061014489015261016488019161118a565b8581036003190182870152920161118a565b03918c5af18015610c3d57610c28575b50610b8c8584611288565b978803978811610c14578710610c0557602097506040519360018060a01b0316845260018060a01b03168784015260018060a01b0316604083015260608201528360808201527f09ba3bf674011e6bab27c1c33b473b8e6e5c89940af8bb2ff7e2d01bb2475aac60a03392a46001600255604051908152f35b637294b85560e11b8852600488fd5b634e487b7160e01b89526011600452602489fd5b610c359199505f90611154565b5f975f610b81565b6040513d5f823e3d90fd5b94610c5d8d826001600160a01b038e16611306565b610a66565b63591c75ef60e01b5f5260045ffd5b63046535fd60e21b5f5260045ffd5b6362b439dd60e11b5f5260045ffd5b634517788b60e11b5f5260045ffd5b634e46966960e11b5f5260045ffd5b63710c949760e01b5f5260045ffd5b632f23ed3b60e21b5f5260045ffd5b633ee5aeb560e01b5f5260045ffd5b346106a257610ce8366110bb565b610cf0611244565b610cf8611262565b801515905f5b838110610d0757005b6001600160a01b03610d22610d1d83878961111c565b611140565b1615610da7576001906001600160a01b03610d41610d1d83888a61111c565b165f526007602052610d628360405f209060ff801983541691151516179055565b818060a01b03610d76610d1d83888a61111c565b167f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea26020604051878152a201610cfe565b630191b71b60e61b5f5260045ffd5b346106a257610dc4366110bb565b610dcc611244565b610dd4611262565b801515905f5b838110610de357005b6001600160a01b03610df9610d1d83878961111c565b1615610da7576001906001600160a01b03610e18610d1d83888a61111c565b165f526008602052610e398360405f209060ff801983541691151516179055565b818060a01b03610e4d610d1d83888a61111c565b167f03885198d5d4cb856625d22550e7a6aa0c6210a256a4540267731dec336e66f26020604051878152a201610dda565b346106a257610e8c366110bb565b610e94611244565b610e9c611262565b801515905f5b838110610eab57005b6001600160a01b03610ec1610d1d83878961111c565b1615610da7576001906001600160a01b03610ee0610d1d83888a61111c565b165f526005602052610f018360405f209060ff801983541691151516179055565b818060a01b03610f15610d1d83888a61111c565b167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c27966020604051878152a201610ea2565b346106a25760603660031901126106a257610f5f611091565b602435906044359081151582036106a2576003546001600160a01b03163303611021577f2b42cc202c3913f9e80a3577571c031c545e8a0d53a25c67a8046c06afa17fe5926060921561100f576009546001600160a01b0316905b610fc3836111aa565b15610ff657610fd281836111da565b604080516001600160a01b03948516815260208101929092529190921690820152a1005b61100a81836001600160a01b038616611306565b610fd2565b600a546001600160a01b031690610fba565b6327e1f1e560e01b5f5260045ffd5b346106a2575f3660031901126106a257600a546040516001600160a01b039091168152602090f35b346106a25760203660031901126106a2576020906001600160a01b0361107c611091565b165f526007825260ff60405f20541615158152f35b600435906001600160a01b03821682036106a257565b35906001600160a01b03821682036106a257565b9060406003198301126106a25760043567ffffffffffffffff81116106a257826023820112156106a25780600401359267ffffffffffffffff84116106a25760248460051b830101116106a257602401919060243580151581036106a25790565b919081101561112c5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036106a25790565b90601f8019910116810190811067ffffffffffffffff82111761117657604052565b634e487b7160e01b5f52604160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b60018060a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81149081156111d4575090565b90501590565b6001600160a01b03168015610da7575f80809381935af13d1561123f573d67ffffffffffffffff8111611176576040519061121f601f8201601f191660200183611154565b81525f60203d92013e5b1561123057565b63b12d13eb60e01b5f5260045ffd5b611229565b60ff60015460a01c1661125357565b63d93c066560e01b5f5260045ffd5b5f546001600160a01b0316330361127557565b63118cdaa760e01b5f523360045260245ffd5b611291816111aa565b1561129b57503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa908115610c3d575f916112d7575090565b90506020813d6020116112fe575b816112f260209383611154565b810103126106a2575190565b3d91506112e5565b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815290925f91611345606482611154565b519082855af115610c3d575f513d61138c57506001600160a01b0381163b155b61136c5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b6001141561136556fea2646970667358221220563a1a30043c15441f8a8f4c72847836778f5bfbc7ded91615455a774e86641764736f6c634300081c0033
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Reviewing runtime bytecode audit plan**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-cpw4i0oe succeeded in 5ms:
[codex:1407433] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing runtime bytecode patterns**
[codex:1407433] 
[codex:1407433] I'm reviewing the runtime bytecode to identify known function selectors, especially owner and ownership-management methods from Ownable2Step patterns, along with potential role-based allowlist logic. I plan to inspect for security issues like reentrancy by analyzing call order and state changes, considering disassembly through a lightweight Python script, all within a read-only environment.
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import sys, textwrap
[codex:1407433] 
[codex:1407433] # Read hex from file
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] import re
[codex:1407433] m=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:1407433] code=decode_hex(m.group(1))
[codex:1407433] # simple disasm
[codex:1407433] opcodes={
[codex:1407433]     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:1407433]     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:1407433]     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:1407433]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433]     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:1407433]     0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1407433]     0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1407433]     0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1407433]     0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1407433]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] 
[codex:1407433] i=0
[codex:1407433] out=[]
[codex:1407433] while i<len(code):
[codex:1407433]     op=code[i]
[codex:1407433]     if 0x60<=op<=0x7f:
[codex:1407433]         n=op-0x5f
[codex:1407433]         data=code[i+1:i+1+n]
[codex:1407433]         out.append(f\"{i:04x}: {opcodes.get(op,'PUSH')} 0x{data.hex()}\")
[codex:1407433]         i+=1+n
[codex:1407433]     else:
[codex:1407433]         out.append(f\"{i:04x}: {opcodes.get(op,'UNKNOWN')}\")
[codex:1407433]         i+=1
[codex:1407433] 
[codex:1407433] # Print subset? all? maybe too long. Let's just show first 400 lines
[codex:1407433] print('\\n'.join(out[:400]))
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 224ms:
[codex:1407433] 0000: PUSH1 0x80
[codex:1407433] 0002: DUP1
[codex:1407433] 0003: PUSH1 0x40
[codex:1407433] 0005: MSTORE
[codex:1407433] 0006: PUSH1 0x04
[codex:1407433] 0008: CALLDATASIZE
[codex:1407433] 0009: LT
[codex:1407433] 000a: ISZERO
[codex:1407433] 000b: PUSH2 0x001c
[codex:1407433] 000e: JUMPI
[codex:1407433] 000f: JUMPDEST
[codex:1407433] 0010: POP
[codex:1407433] 0011: CALLDATASIZE
[codex:1407433] 0012: ISZERO
[codex:1407433] 0013: PUSH2 0x001a
[codex:1407433] 0016: JUMPI
[codex:1407433] 0017: UNKNOWN
[codex:1407433] 0018: DUP1
[codex:1407433] 0019: REVERT
[codex:1407433] 001a: JUMPDEST
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing bytecode function boundaries and calls**
[codex:1407433] 
[codex:1407433] I'm parsing the disassembly to identify key functions by their jump destinations and selectors, focusing on external calls like token transfers and delegatecalls for upgradeability or multisend patterns. I want to spot vulnerabilities such as missing access control or reentrancy by inspecting function offsets and opcode patterns, planning to script a detailed extraction of each function’s instructions for closer review.
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={
[codex:1407433]     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:1407433]     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:1407433]     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:1407433]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433]     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:1407433]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] 
[codex:1407433] def disasm(start, end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{opcodes.get(op,'PUSH')} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,opcodes.get(op,'UNKNOWN')))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] # function entry offsets from dispatch
[codex:1407433] entries=[0x1058,0x1030,0x0f46,0x0e7e,0x0db6,0x0cda,0x08af,0x083f,0x0816,0x07e7,0x07a8,0x078c,0x0763,0x073d,0x06c8,0x0558,0x04f3,0x046e,0x03f2,0x03cb,0x034e,0x02d9,0x029a,0x020e,0x01e5,0x0178]
[codex:1407433] 
[codex:1407433] for e in entries:
[codex:1407433]     print(f\"\\n-- entry 0x{e:04x} --\")
[codex:1407433]     for i,ins in disasm(e, e+120):
[codex:1407433]         print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 199ms:
[codex:1407433] 
[codex:1407433] -- entry 0x1058 --
[codex:1407433] 1058: JUMPDEST
[codex:1407433] 1059: CALLVALUE
[codex:1407433] 105a: PUSH 0x06a2
[codex:1407433] 105d: JUMPI
[codex:1407433] 105e: PUSH 0x20
[codex:1407433] 1060: CALLDATASIZE
[codex:1407433] 1061: PUSH 0x03
[codex:1407433] 1063: NOT
[codex:1407433] 1064: ADD
[codex:1407433] 1065: SLT
[codex:1407433] 1066: PUSH 0x06a2
[codex:1407433] 1069: JUMPI
[codex:1407433] 106a: PUSH 0x20
[codex:1407433] 106c: UNKNOWN
[codex:1407433] 106d: PUSH 0x01
[codex:1407433] 106f: PUSH 0x01
[codex:1407433] 1071: PUSH 0xa0
[codex:1407433] 1073: SHL
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Resolving unknown opcode mappings**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={
[codex:1407433]     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:1407433]     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:1407433]     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:1407433]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433]     0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1407433]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for i in range(0x60,0x80):
[codex:1407433]     opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433] for i in range(0x80,0x90):
[codex:1407433]     opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433] for i in range(0x90,0xa0):
[codex:1407433]     opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start, end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{opcodes.get(op,'PUSH')} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,opcodes.get(op,'UNKNOWN')))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] # Show full disasm for function 0x0558 and 0x0f46 etc
[codex:1407433] for e in [0x0558,0x0f46,0x08af,0x0cda]:
[codex:1407433]     print(f\"\\n-- entry 0x{e:04x} --\")
[codex:1407433]     for i,ins in disasm(e, e+260):
[codex:1407433]         print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 205ms:
[codex:1407433] 
[codex:1407433] -- entry 0x0558 --
[codex:1407433] 0558: JUMPDEST
[codex:1407433] 0559: POP
[codex:1407433] 055a: CALLVALUE
[codex:1407433] 055b: PUSH2 0x0175
[codex:1407433] 055e: JUMPI
[codex:1407433] 055f: PUSH1 0x20
[codex:1407433] 0561: CALLDATASIZE
[codex:1407433] 0562: PUSH1 0x03
[codex:1407433] 0564: NOT
[codex:1407433] 0565: ADD
[codex:1407433] 0566: SLT
[codex:1407433] 0567: PUSH2 0x0175
[codex:1407433] 056a: JUMPI
[codex:1407433] 056b: PUSH2 0x0572
[codex:1407433] 056e: PUSH2 0x1091
[codex:1407433] 0571: JUMP
[codex:1407433] 0572: JUMPDEST
[codex:1407433] 0573: PUSH1 0x03
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing contract storage and functions**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] # base names for some
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start, end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x03c0,0x03f0):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 192ms:
[codex:1407433] 03c0: PUSH19 0x745089c3b28380a380f35b5034610175578060
[codex:1407433] 03d4: SUB
[codex:1407433] 03d5: NOT
[codex:1407433] 03d6: CALLDATASIZE
[codex:1407433] 03d7: ADD
[codex:1407433] 03d8: SLT
[codex:1407433] 03d9: PUSH2 0x0175
[codex:1407433] 03dc: JUMPI
[codex:1407433] 03dd: SLOAD
[codex:1407433] 03de: PUSH1 0x40
[codex:1407433] 03e0: MLOAD
[codex:1407433] 03e1: PUSH1 0x01
[codex:1407433] 03e3: PUSH1 0x01
[codex:1407433] 03e5: PUSH1 0xa0
[codex:1407433] 03e7: SHL
[codex:1407433] 03e8: SUB
[codex:1407433] 03e9: SWAP1
[codex:1407433] 03ea: SWAP2
[codex:1407433] 03eb: AND
[codex:1407433] 03ec: DUP2
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing bytecode patterns and storage usage**
[codex:1407433] 
[codex:1407433] I'm examining the bytecode around 0x03c0 and a function at 0x08af, focusing on how storage slots like slot 2 are checked and set—possibly for initialization flags similar to OpenZeppelin’s patterns. There’s interesting logic with storage comparison and conditional jumps, and I’m also noting some external calls using function selectors like `a2cc1f23` that might relate to allowance increases, revealing potential function roles and areas to investigate for vulnerabilities.
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] # print region 0x09b0-0x0c10 to see complex logic
[codex:1407433] for i,ins in disasm(0x09b0,0x0c10):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 184ms:
[codex:1407433] 09b0: SLOAD
[codex:1407433] 09b1: AND
[codex:1407433] 09b2: PUSH2 0x0c8f
[codex:1407433] 09b5: JUMPI
[codex:1407433] 09b6: DUP4
[codex:1407433] 09b7: PUSH0
[codex:1407433] 09b8: MSTORE
[codex:1407433] 09b9: PUSH1 0x06
[codex:1407433] 09bb: PUSH1 0x20
[codex:1407433] 09bd: MSTORE
[codex:1407433] 09be: PUSH1 0x40
[codex:1407433] 09c0: PUSH0
[codex:1407433] 09c1: SHA3
[codex:1407433] 09c2: PUSH1 0x01
[codex:1407433] 09c4: PUSH1 0xff
[codex:1407433] 09c6: NOT
[codex:1407433] 09c7: DUP3
[codex:1407433] 09c8: SLOAD
[codex:1407433] 09c9: AND
[codex:1407433] 09ca: OR
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing complex external call and storage ordering**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] # opcodes mapping
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x1180,0x11f0):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 218ms:
[codex:1407433] 1180: MSTORE
[codex:1407433] 1181: PUSH1 0x41
[codex:1407433] 1183: PUSH1 0x04
[codex:1407433] 1185: MSTORE
[codex:1407433] 1186: PUSH1 0x24
[codex:1407433] 1188: PUSH0
[codex:1407433] 1189: REVERT
[codex:1407433] 118a: JUMPDEST
[codex:1407433] 118b: SWAP1
[codex:1407433] 118c: DUP1
[codex:1407433] 118d: PUSH1 0x20
[codex:1407433] 118f: SWAP4
[codex:1407433] 1190: SWAP3
[codex:1407433] 1191: DUP2
[codex:1407433] 1192: DUP5
[codex:1407433] 1193: MSTORE
[codex:1407433] 1194: DUP5
[codex:1407433] 1195: DUP5
[codex:1407433] 1196: ADD
[codex:1407433] 1197: CALLDATACOPY
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing token address check**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] # map opcodes
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x0620,0x06c5):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 211ms:
[codex:1407433] 0620: UNKNOWN
[codex:1407433] 0621: JUMPI
[codex:1407433] 0622: JUMPDEST
[codex:1407433] 0623: POP
[codex:1407433] 0624: POP
[codex:1407433] 0625: POP
[codex:1407433] 0626: DUP1
[codex:1407433] 0627: RETURN
[codex:1407433] 0628: JUMPDEST
[codex:1407433] 0629: DUP2
[codex:1407433] 062a: PUSH2 0x0655
[codex:1407433] 062d: DUP3
[codex:1407433] 062e: PUSH32 0x9b793652de97f04c5168920587bad4b1c6345295a8f5ad31c59ff946a26f91d2
[codex:1407433] 064f: SWAP5
[codex:1407433] 0650: DUP7
[codex:1407433] 0651: PUSH2 0x1306
[codex:1407433] 0654: JUMP
[codex:1407433] 0655: JUMPDEST
[codex:1407433] 0656: PUSH1 0x40
[codex:1407433] 0658: DUP1
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing blockchain bytecode flow**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x12d0,0x1370):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 238ms:
[codex:1407433] 12d0: PUSH2 0x12d7
[codex:1407433] 12d3: JUMPI
[codex:1407433] 12d4: POP
[codex:1407433] 12d5: SWAP1
[codex:1407433] 12d6: JUMP
[codex:1407433] 12d7: JUMPDEST
[codex:1407433] 12d8: SWAP1
[codex:1407433] 12d9: POP
[codex:1407433] 12da: PUSH1 0x20
[codex:1407433] 12dc: DUP2
[codex:1407433] 12dd: RETURNDATASIZE
[codex:1407433] 12de: PUSH1 0x20
[codex:1407433] 12e0: GT
[codex:1407433] 12e1: PUSH2 0x12fe
[codex:1407433] 12e4: JUMPI
[codex:1407433] 12e5: JUMPDEST
[codex:1407433] 12e6: DUP2
[codex:1407433] 12e7: PUSH2 0x12f2
[codex:1407433] 12ea: PUSH1 0x20
[codex:1407433] 12ec: SWAP4
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing ERC20 transfer helper code**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x11da,0x1250):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 196ms:
[codex:1407433] 11da: JUMPDEST
[codex:1407433] 11db: PUSH1 0x01
[codex:1407433] 11dd: PUSH1 0x01
[codex:1407433] 11df: PUSH1 0xa0
[codex:1407433] 11e1: SHL
[codex:1407433] 11e2: SUB
[codex:1407433] 11e3: AND
[codex:1407433] 11e4: DUP1
[codex:1407433] 11e5: ISZERO
[codex:1407433] 11e6: PUSH2 0x0da7
[codex:1407433] 11e9: JUMPI
[codex:1407433] 11ea: PUSH0
[codex:1407433] 11eb: DUP1
[codex:1407433] 11ec: DUP1
[codex:1407433] 11ed: SWAP4
[codex:1407433] 11ee: DUP2
[codex:1407433] 11ef: SWAP4
[codex:1407433] 11f0: GAS
[codex:1407433] 11f1: CALL
[codex:1407433] 11f2: RETURNDATASIZE
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing ETH send helper and withdraw function behavior**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x1244,0x12d0):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 190ms:
[codex:1407433] 1244: JUMPDEST
[codex:1407433] 1245: PUSH1 0xff
[codex:1407433] 1247: PUSH1 0x01
[codex:1407433] 1249: SLOAD
[codex:1407433] 124a: PUSH1 0xa0
[codex:1407433] 124c: SHR
[codex:1407433] 124d: AND
[codex:1407433] 124e: PUSH2 0x1253
[codex:1407433] 1251: JUMPI
[codex:1407433] 1252: JUMP
[codex:1407433] 1253: JUMPDEST
[codex:1407433] 1254: PUSH4 0xd93c0665
[codex:1407433] 1259: PUSH1 0xe0
[codex:1407433] 125b: SHL
[codex:1407433] 125c: PUSH0
[codex:1407433] 125d: MSTORE
[codex:1407433] 125e: PUSH1 0x04
[codex:1407433] 1260: PUSH0
[codex:1407433] 1261: REVERT
[codex:1407433] 1262: JUMPDEST
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing access control and reentrancy patterns**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()).group(0))
[codex:1407433] # find positions of ORIGIN (0x32)
[codex:1407433] positions=[i for i,b in enumerate(code) if b==0x32]
[codex:1407433] print('ORIGIN positions', positions)
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 192ms:
[codex:1407433] ORIGIN positions [4408]
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Inspecting ORIGIN usage near 0x1130**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] hexdata=open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',hexdata).group(0))
[codex:1407433] 
[codex:1407433] opcodes={0x5f:'PUSH0'}
[codex:1407433] for i in range(0x00,0x100):
[codex:1407433]     if 0x60<=i<=0x7f:
[codex:1407433]         opcodes[i]=f'PUSH{i-0x5f}'
[codex:1407433]     elif 0x80<=i<=0x8f:
[codex:1407433]         opcodes[i]=f'DUP{i-0x7f}'
[codex:1407433]     elif 0x90<=i<=0x9f:
[codex:1407433]         opcodes[i]=f'SWAP{i-0x8f}'
[codex:1407433] 
[codex:1407433] base={
[codex:1407433] 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:1407433] 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:1407433] 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:1407433] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1407433] 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:1407433] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1407433] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1407433] }
[codex:1407433] for k,v in base.items():
[codex:1407433]     opcodes.setdefault(k,v)
[codex:1407433] 
[codex:1407433] 
[codex:1407433] def disasm(start,end):
[codex:1407433]     i=start
[codex:1407433]     out=[]
[codex:1407433]     while i<end:
[codex:1407433]         op=code[i]
[codex:1407433]         name=opcodes.get(op,'UNKNOWN')
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             data=code[i+1:i+1+n]
[codex:1407433]             out.append((i,f\"{name} 0x{data.hex()}\"))
[codex:1407433]             i+=1+n
[codex:1407433]         else:
[codex:1407433]             out.append((i,name))
[codex:1407433]             i+=1
[codex:1407433]     return out
[codex:1407433] 
[codex:1407433] for i,ins in disasm(0x1120,0x1160):
[codex:1407433]     print(f\"{i:04x}: {ins}\")
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 182ms:
[codex:1407433] 1120: LT
[codex:1407433] 1121: ISZERO
[codex:1407433] 1122: PUSH2 0x112c
[codex:1407433] 1125: JUMPI
[codex:1407433] 1126: PUSH1 0x05
[codex:1407433] 1128: SHL
[codex:1407433] 1129: ADD
[codex:1407433] 112a: SWAP1
[codex:1407433] 112b: JUMP
[codex:1407433] 112c: JUMPDEST
[codex:1407433] 112d: PUSH4 0x4e487b71
[codex:1407433] 1132: PUSH1 0xe0
[codex:1407433] 1134: SHL
[codex:1407433] 1135: PUSH0
[codex:1407433] 1136: MSTORE
[codex:1407433] 1137: PUSH1 0x32
[codex:1407433] 1139: PUSH1 0x04
[codex:1407433] 113b: MSTORE
[codex:1407433] 113c: PUSH1 0x24
[codex:1407433] 113e: PUSH0
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Verifying presence of ORIGIN opcode**
[codex:1407433] exec
[codex:1407433] /bin/bash -lc "python - <<'PY'
[codex:1407433] from eth_utils import decode_hex
[codex:1407433] import re
[codex:1407433] code=decode_hex(re.search(r'0x[0-9a-fA-F]+',open('/tmp/codex-multi-cpw4i0oe/BYTECODE_BUNDLE.txt').read()).group(0))
[codex:1407433] # quick scan for 0xf4 not in push data? Not trivial. We'll disassemble and count delegatecall opcodes.
[codex:1407433] 
[codex:1407433] def disasm(code):
[codex:1407433]     i=0
[codex:1407433]     ops=[]
[codex:1407433]     while i<len(code):
[codex:1407433]         op=code[i]
[codex:1407433]         if 0x60<=op<=0x7f:
[codex:1407433]             n=op-0x5f
[codex:1407433]             i+=1+n
[codex:1407433]             continue
[codex:1407433]         ops.append((i,op))
[codex:1407433]         i+=1
[codex:1407433]     return ops
[codex:1407433] 
[codex:1407433] ops=disasm(code)
[codex:1407433] print('DELEGATECALLs', [hex(i) for i,op in ops if op==0xf4])
[codex:1407433] print('CALLs', len([1 for _,op in ops if op==0xf1]))
[codex:1407433] PY" in /tmp/codex-multi-cpw4i0oe succeeded in 206ms:
[codex:1407433] DELEGATECALLs []
[codex:1407433] CALLs 3
[codex:1407433] 
[codex:1407433] thinking
[codex:1407433] **Analyzing potential vulnerabilities and concluding findings**
[codex:1407433] 
[codex:1407433] I'm carefully reviewing the bytecode to identify any concrete security issues, focusing on external calls, token transfers, ownership checks, and deadline validations. After assessing call targets, reentrancy guards, and ownership mechanisms, I find no definitive vulnerabilities, so I'll produce a no-findings summary per the instructions.
[codex:1407433] codex
[codex:1407433] {"no_findings":true,"summary":"No concrete vulnerabilities could be confirmed from the provided runtime bytecode/disassembly patterns alone.","findings":[]}
[codex:1407433] tokens used
[codex:1407433] 96,194
[codex:1407433] {"no_findings":true,"summary":"No concrete vulnerabilities could be confirmed from the provided runtime bytecode/disassembly patterns alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T06:56:06.900598+00:00",
        "returncode": 0
    },
    "summary": "No concrete vulnerabilities could be confirmed from the provided runtime bytecode/disassembly patterns alone.",
    "raw_final": {
        "summary": "No concrete vulnerabilities could be confirmed from the provided runtime bytecode/disassembly patterns alone.",
        "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
3071
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: DUP1
00000003: PUSH1 0x40
00000005: MSTORE
00000006: PUSH1 0x04
00000008: CALLDATASIZE
00000009: LT
0000000a: ISZERO
0000000b: PUSH2 0x001c
0000000e: JUMPI
0000000f: JUMPDEST
00000010: POP
00000011: CALLDATASIZE
00000012: ISZERO
00000013: PUSH2 0x001a
00000016: JUMPI
00000017: PUSH0
00000018: DUP1
00000019: REVERT
0000001a: JUMPDEST
0000001b: STOP
0000001c: JUMPDEST
0000001d: PUSH0
0000001e: SWAP1
0000001f: PUSH0
00000020: CALLDATALOAD
00000021: PUSH1 0xe0
00000023: SHR
00000024: SWAP1
00000025: DUP2
00000026: PUSH4 0x06b14fb4
0000002b: EQ
0000002c: PUSH2 0x1058
0000002f: JUMPI
00000030: POP
00000031: DUP1
00000032: PUSH4 0x190dc79b
00000037: EQ
00000038: PUSH2 0x1030
0000003b: JUMPI
0000003c: DUP1
0000003d: PUSH4 0x1f166440
00000042: EQ
00000043: PUSH2 0x0f46
00000046: JUMPI
00000047: DUP1
00000048: PUSH4 0x213a2ba3
0000004d: EQ
0000004e: PUSH2 0x0e7e
00000051: JUMPI
00000052: DUP1
00000053: PUSH4 0x298b641d
00000058: EQ
00000059: PUSH2 0x0db6
0000005c: JUMPI
0000005d: DUP1
0000005e: PUSH4 0x37016ad1
00000063: EQ
00000064: PUSH2 0x0cda
00000067: JUMPI
00000068: DUP1
00000069: PUSH4 0x3e9714c1
0000006e: EQ
0000006f: PUSH2 0x08af
00000072: JUMPI
00000073: DUP1
00000074: PUSH4 0x3f4ba83a
00000079: EQ
0000007a: PUSH2 0x083f
0000007d: JUMPI
0000007e: DUP1
0000007f: PUSH4 0x4243ba3c
00000084: EQ
00000085: PUSH2 0x0816
00000088: JUMPI
00000089: DUP1
0000008a: PUSH4 0x4bbec667
0000008f: EQ
00000090: PUSH2 0x07e7
00000093: JUMPI
00000094: DUP1
00000095: PUSH4 0x536fff6c
0000009a: EQ
0000009b: PUSH2 0x07a8
0000009e: JUMPI
0000009f: DUP1
000000a0: PUSH4 0x538ba4f9
000000a5: EQ
000000a6: PUSH2 0x078c
000000a9: JUMPI
000000aa: DUP1
000000ab: PUSH4 0x570ca735
000000b0: EQ
000000b1: PUSH2 0x0763
000000b4: JUMPI
000000b5: DUP1
000000b6: PUSH4 0x5c975abb
000000bb: EQ
000000bc: PUSH2 0x073d
000000bf: JUMPI
000000c0: DUP1
000000c1: PUSH4 0x6817031b
000000c6: EQ
000000c7: PUSH2 0x06c8
000000ca: JUMPI
000000cb: DUP1
000000cc: PUSH4 0x6ff1c9bc
000000d1: EQ
000000d2: PUSH2 0x0558
000000d5: JUMPI
000000d6: DUP1
000000d7: PUSH4 0x715018a6
000000dc: EQ
000000dd: PUSH2 0x04f3
000000e0: JUMPI
000000e1: DUP1
000000e2: PUSH4 0x79ba5097
000000e7: EQ
000000e8: PUSH2 0x046e
000000eb: JUMPI
000000ec: DUP1
000000ed: PUSH4 0x8456cb59
000000f2: EQ
000000f3: PUSH2 0x03f2
000000f6: JUMPI
000000f7: DUP1
000000f8: PUSH4 0x8da5cb5b
000000fd: EQ
000000fe: PUSH2 0x03cb
00000101: JUMPI
00000102: DUP1
00000103: PUSH4 0xa3a56249
00000108: EQ
00000109: PUSH2 0x034e
0000010c: JUMPI
0000010d: DUP1
0000010e: PUSH4 0xb3ab15fb
00000113: EQ
00000114: PUSH2 0x02d9
00000117: JUMPI
00000118: DUP1
00000119: PUSH4 0xbc46e99a
0000011e: EQ
0000011f: PUSH2 0x029a
00000122: JUMPI
00000123: DUP1
00000124: PUSH4 0xc42fc2f6
00000129: EQ
0000012a: PUSH2 0x020e
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0xe30c3978
00000134: EQ
00000135: PUSH2 0x01e5
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0xf2fde38b
0000013f: EQ
00000140: PUSH2 0x0178
00000143: JUMPI
00000144: PUSH4 0xfbfa77cf
00000149: SUB
0000014a: PUSH2 0x000f
0000014d: JUMPI
0000014e: CALLVALUE
0000014f: PUSH2 0x0175
00000152: JUMPI
00000153: DUP1
00000154: PUSH1 0x03
00000156: NOT
00000157: CALLDATASIZE
00000158: ADD
00000159: SLT
0000015a: PUSH2 0x0175
0000015d: JUMPI
0000015e: PUSH1 0x04
00000160: SLOAD
00000161: PUSH1 0x40
00000163: MLOAD
00000164: PUSH1 0x01
00000166: PUSH1 0x01
00000168: PUSH1 0xa0
0000016a: SHL
0000016b: SUB
0000016c: SWAP1
0000016d: SWAP2
0000016e: AND
0000016f: DUP2
00000170: MSTORE
00000171: PUSH1 0x20
00000173: SWAP1
00000174: RETURN
00000175: JUMPDEST
00000176: DUP1
00000177: REVERT
00000178: JUMPDEST
00000179: POP
0000017a: CALLVALUE
0000017b: PUSH2 0x0175
0000017e: JUMPI
0000017f: PUSH1 0x20
00000181: CALLDATASIZE
00000182: PUSH1 0x03
00000184: NOT
00000185: ADD
00000186: SLT
00000187: PUSH2 0x0175
0000018a: JUMPI
0000018b: PUSH2 0x0192
0000018e: PUSH2 0x1091
00000191: JUMP
00000192: JUMPDEST
00000193: PUSH2 0x019a
00000196: PUSH2 0x1262
00000199: JUMP
0000019a: JUMPDEST
0000019b: PUSH1 0x01
0000019d: DUP1
0000019e: SLOAD
0000019f: PUSH1 0x01
000001a1: PUSH1 0x01
000001a3: PUSH1 0xa0
000001a5: SHL
000001a6: SUB
000001a7: NOT
000001a8: AND
000001a9: PUSH1 0x01
000001ab: PUSH1 0x01
000001ad: PUSH1 0xa0
000001af: SHL
000001b0: SUB
000001b1: SWAP3
000001b2: DUP4
000001b3: AND
000001b4: SWAP1
000001b5: DUP2
000001b6: OR
000001b7: SWAP1
000001b8: SWAP2
000001b9: SSTORE
000001ba: DUP3
000001bb: SLOAD
000001bc: SWAP1
000001bd: SWAP2
000001be: AND
000001bf: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
000001e0: DUP4
000001e1: DUP1
000001e2: LOG3
000001e3: DUP1
000001e4: RETURN
000001e5: JUMPDEST
000001e6: POP
000001e7: CALLVALUE
000001e8: PUSH2 0x0175
000001eb: JUMPI
000001ec: DUP1
000001ed: PUSH1 0x03
000001ef: NOT
000001f0: CALLDATASIZE
000001f1: ADD
000001f2: SLT
000001f3: PUSH2 0x0175
000001f6: JUMPI
000001f7: PUSH1 0x01
000001f9: SLOAD
000001fa: PUSH1 0x40
000001fc: MLOAD
000001fd: PUSH1 0x01
000001ff: PUSH1 0x01
00000201: PUSH1 0xa0
00000203: SHL
00000204: SUB
00000205: SWAP1
00000206: SWAP2
00000207: AND
00000208: DUP2
00000209: MSTORE
0000020a: PUSH1 0x20
0000020c: SWAP1
0000020d: RETURN
0000020e: JUMPDEST
0000020f: POP
00000210: CALLVALUE
00000211: PUSH2 0x0175
00000214: JUMPI
00000215: PUSH1 0x20
00000217: CALLDATASIZE
00000218: PUSH1 0x03
0000021a: NOT
0000021b: ADD
0000021c: SLT
0000021d: PUSH2 0x0175
00000220: JUMPI
00000221: PUSH2 0x0228
00000224: PUSH2 0x1091
00000227: JUMP
00000228: JUMPDEST
00000229: PUSH2 0x0230
0000022c: PUSH2 0x1244
0000022f: JUMP
00000230: JUMPDEST
00000231: PUSH2 0x0238
00000234: PUSH2 0x1262
00000237: JUMP
00000238: JUMPDEST
00000239: PUSH1 0x01
0000023b: PUSH1 0x01
0000023d: PUSH1 0xa0
0000023f: SHL
00000240: SUB
00000241: AND
00000242: DUP1
00000243: ISZERO
00000244: PUSH2 0x028b
00000247: JUMPI
00000248: PUSH1 0x09
0000024a: DUP1
0000024b: SLOAD
0000024c: PUSH1 0x01
0000024e: PUSH1 0x01
00000250: PUSH1 0xa0
00000252: SHL
00000253: SUB
00000254: NOT
00000255: DUP2
00000256: AND
00000257: DUP4
00000258: OR
00000259: SWAP1
0000025a: SWAP2
0000025b: SSTORE
0000025c: PUSH1 0x01
0000025e: PUSH1 0x01
00000260: PUSH1 0xa0
00000262: SHL
00000263: SUB
00000264: AND
00000265: PUSH32 0x09145fe6f3c8bca051a21cc293ecc9065d9636751d4c95e2fdaddd91d47c0b1b
00000286: DUP4
00000287: DUP1
00000288: LOG3
00000289: DUP1
0000028a: RETURN
0000028b: JUMPDEST
0000028c: PUSH4 0x0191b71b
00000291: PUSH1 0xe6
00000293: SHL
00000294: DUP3
00000295: MSTORE
00000296: PUSH1 0x04
00000298: DUP3
00000299: REVERT
0000029a: JUMPDEST
0000029b: POP
0000029c: CALLVALUE
0000029d: PUSH2 0x0175
000002a0: JUMPI
000002a1: PUSH1 0x20
000002a3: CALLDATASIZE
000002a4: PUSH1 0x03
000002a6: NOT
000002a7: ADD
000002a8: SLT
000002a9: PUSH2 0x0175
000002ac: JUMPI
000002ad: PUSH1 0x20
000002af: SWAP1
000002b0: PUSH1 0xff
000002b2: SWAP1
000002b3: PUSH1 0x40
000002b5: SWAP1
000002b6: PUSH1 0x01
000002b8: PUSH1 0x01
000002ba: PUSH1 0xa0
000002bc: SHL
000002bd: SUB
000002be: PUSH2 0x02c5
000002c1: PUSH2 0x1091
000002c4: JUMP
000002c5: JUMPDEST
000002c6: AND
000002c7: DUP2
000002c8: MSTORE
000002c9: PUSH1 0x08
000002cb: DUP5
000002cc: MSTORE
000002cd: KECCAK256
000002ce: SLOAD
000002cf: AND
000002d0: PUSH1 0x40
000002d2: MLOAD
000002d3: SWAP1
000002d4: ISZERO
000002d5: ISZERO
000002d6: DUP2
000002d7: MSTORE
000002d8: RETURN
000002d9: JUMPDEST
000002da: POP
000002db: CALLVALUE
000002dc: PUSH2 0x0175
000002df: JUMPI
000002e0: PUSH1 0x20
000002e2: CALLDATASIZE
000002e3: PUSH1 0x03
000002e5: NOT
000002e6: ADD
000002e7: SLT
000002e8: PUSH2 0x0175
000002eb: JUMPI
000002ec: PUSH2 0x02f3
000002ef: PUSH2 0x1091
000002f2: JUMP
000002f3: JUMPDEST
000002f4: PUSH2 0x02fb
000002f7: PUSH2 0x1262
000002fa: JUMP
000002fb: JUMPDEST
000002fc: PUSH1 0x01
000002fe: PUSH1 0x01
00000300: PUSH1 0xa0
00000302: SHL
00000303: SUB
00000304: AND
00000305: DUP1
00000306: ISZERO
00000307: PUSH2 0x028b
0000030a: JUMPI
0000030b: PUSH1 0x03
0000030d: DUP1
0000030e: SLOAD
0000030f: PUSH1 0x01
00000311: PUSH1 0x01
00000313: PUSH1 0xa0
00000315: SHL
00000316: SUB
00000317: NOT
00000318: DUP2
00000319: AND
0000031a: DUP4
0000031b: OR
0000031c: SWAP1
0000031d: SWAP2
0000031e: SSTORE
0000031f: PUSH1 0x01
00000321: PUSH1 0x01
00000323: PUSH1 0xa0
00000325: SHL
00000326: SUB
00000327: AND
00000328: PUSH32 0xfbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03
00000349: DUP4
0000034a: DUP1
0000034b: LOG3
0000034c: DUP1
0000034d: RETURN
0000034e: JUMPDEST
0000034f: POP
00000350: CALLVALUE
00000351: PUSH2 0x0175
00000354: JUMPI
00000355: PUSH1 0x20
00000357: CALLDATASIZE
00000358: PUSH1 0x03
0000035a: NOT
0000035b: ADD
0000035c: SLT
0000035d: PUSH2 0x0175
00000360: JUMPI
00000361: PUSH2 0x0368
00000364: PUSH2 0x1091
00000367: JUMP
00000368: JUMPDEST
00000369: PUSH2 0x0370
0000036c: PUSH2 0x1244
0000036f: JUMP
00000370: JUMPDEST
00000371: PUSH2 0x0378
00000374: PUSH2 0x1262
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH1 0x01
0000037b: PUSH1 0x01
0000037d: PUSH1 0xa0
0000037f: SHL
00000380: SUB
00000381: AND
00000382: DUP1
00000383: ISZERO
00000384: PUSH2 0x028b
00000387: JUMPI
00000388: PUSH1 0x0a
0000038a: DUP1
0000038b: SLOAD
0000038c: PUSH1 0x01
0000038e: PUSH1 0x01
00000390: PUSH1 0xa0
00000392: SHL
00000393: SUB
00000394: NOT
00000395: DUP2
00000396: AND
00000397: DUP4
00000398: OR
00000399: SWAP1
0000039a: SWAP2
0000039b: SSTORE
0000039c: PUSH1 0x01
0000039e: PUSH1 0x01
000003a0: PUSH1 0xa0
000003a2: SHL
000003a3: SUB
000003a4: AND
000003a5: PUSH32 0xeba78dd39e48c4a74634d5e9e037016353a0ed869d6eb149db0e72745089c3b2
000003c6: DUP4
000003c7: DUP1
000003c8: LOG3
000003c9: DUP1
000003ca: RETURN
000003cb: JUMPDEST
000003cc: POP
000003cd: CALLVALUE
000003ce: PUSH2 0x0175
000003d1: JUMPI
000003d2: DUP1
000003d3: PUSH1 0x03
000003d5: NOT
000003d6: CALLDATASIZE
000003d7: ADD
000003d8: SLT
000003d9: PUSH2 0x0175
000003dc: JUMPI
000003dd: SLOAD
000003de: PUSH1 0x40
000003e0: MLOAD
000003e1: PUSH1 0x01
000003e3: PUSH1 0x01
000003e5: PUSH1 0xa0
000003e7: SHL
000003e8: SUB
000003e9: SWAP1
000003ea: SWAP2
000003eb: AND
000003ec: DUP2
000003ed: MSTORE
000003ee: PUSH1 0x20
000003f0: SWAP1
000003f1: RETURN
000003f2: JUMPDEST
000003f3: POP
000003f4: CALLVALUE
000003f5: PUSH2 0x0175
000003f8: JUMPI
000003f9: DUP1
000003fa: PUSH1 0x03
000003fc: NOT
000003fd: CALLDATASIZE
000003fe: ADD
000003ff: SLT
00000400: PUSH2 0x0175
00000403: JUMPI
00000404: PUSH1 0x03
00000406: SLOAD
00000407: PUSH1 0x01
00000409: PUSH1 0x01
0000040b: PUSH1 0xa0
0000040d: SHL
0000040e: SUB
0000040f: AND
00000410: CALLER
00000411: SUB
00000412: PUSH2 0x045f
00000415: JUMPI
00000416: PUSH2 0x041d
00000419: PUSH2 0x1244
0000041c: JUMP
0000041d: JUMPDEST
0000041e: PUSH1 0x01
00000420: DUP1
00000421: SLOAD
00000422: PUSH1 0xff
00000424: PUSH1 0xa0
00000426: SHL
00000427: NOT
00000428: AND
00000429: PUSH1 0x01
0000042b: PUSH1 0xa0
0000042d: SHL
0000042e: OR
0000042f: SWAP1
00000430: SSTORE
00000431: PUSH1 0x40
00000433: MLOAD
00000434: CALLER
00000435: DUP2
00000436: MSTORE
00000437: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
00000458: SWAP1
00000459: PUSH1 0x20
0000045b: SWAP1
0000045c: LOG1
0000045d: DUP1
0000045e: RETURN
0000045f: JUMPDEST
00000460: PUSH4 0x27e1f1e5
00000465: PUSH1 0xe0
00000467: SHL
00000468: DUP2
00000469: MSTORE
0000046a: PUSH1 0x04
0000046c: SWAP1
0000046d: REVERT
0000046e: JUMPDEST
0000046f: POP
00000470: CALLVALUE
00000471: PUSH2 0x0175
00000474: JUMPI
00000475: DUP1
00000476: PUSH1 0x03
00000478: NOT
00000479: CALLDATASIZE
0000047a: ADD
0000047b: SLT
0000047c: PUSH2 0x0175
0000047f: JUMPI
00000480: PUSH1 0x01
00000482: SLOAD
00000483: CALLER
00000484: PUSH1 0x01
00000486: PUSH1 0x01
00000488: PUSH1 0xa0
0000048a: SHL
0000048b: SUB
0000048c: SWAP1
0000048d: SWAP2
0000048e: AND
0000048f: SUB
00000490: PUSH2 0x04e0
00000493: JUMPI
00000494: PUSH1 0x01
00000496: DUP1
00000497: SLOAD
00000498: PUSH1 0x01
0000049a: PUSH1 0x01
0000049c: PUSH1 0xa0
0000049e: SHL
0000049f: SUB
000004a0: NOT
000004a1: SWAP1
000004a2: DUP2
000004a3: AND
000004a4: SWAP1
000004a5: SWAP2
000004a6: SSTORE
000004a7: DUP2
000004a8: SLOAD
000004a9: CALLER
000004aa: SWAP2
000004ab: DUP2
000004ac: AND
000004ad: DUP3
000004ae: OR
000004af: DUP4
000004b0: SSTORE
000004b1: PUSH1 0x01
000004b3: PUSH1 0x01
000004b5: PUSH1 0xa0
000004b7: SHL
000004b8: SUB
000004b9: AND
000004ba: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000004db: DUP4
000004dc: DUP1
000004dd: LOG3
000004de: DUP1
000004df: RETURN
000004e0: JUMPDEST
000004e1: PUSH4 0x118cdaa7
000004e6: PUSH1 0xe0
000004e8: SHL
000004e9: DUP2
000004ea: MSTORE
000004eb: CALLER
000004ec: PUSH1 0x04
000004ee: MSTORE
000004ef: PUSH1 0x24
000004f1: SWAP1
000004f2: REVERT
000004f3: JUMPDEST
000004f4: POP
000004f5: CALLVALUE
000004f6: PUSH2 0x0175
000004f9: JUMPI
000004fa: DUP1
000004fb: PUSH1 0x03
000004fd: NOT
000004fe: CALLDATASIZE
000004ff: ADD
00000500: SLT
00000501: PUSH2 0x0175
00000504: JUMPI
00000505: PUSH2 0x050c
00000508: PUSH2 0x1262
0000050b: JUMP
0000050c: JUMPDEST
0000050d: PUSH1 0x01
0000050f: DUP1
00000510: SLOAD
00000511: PUSH1 0x01
00000513: PUSH1 0x01
00000515: PUSH1 0xa0
00000517: SHL
00000518: SUB
00000519: NOT
0000051a: SWAP1
0000051b: DUP2
0000051c: AND
0000051d: SWAP1
0000051e: SWAP2
0000051f: SSTORE
00000520: DUP2
00000521: SLOAD
00000522: SWAP1
00000523: DUP2
00000524: AND
00000525: DUP3
00000526: SSTORE
00000527: DUP2
00000528: SWAP1
00000529: PUSH1 0x01
0000052b: PUSH1 0x01
0000052d: PUSH1 0xa0
0000052f: SHL
00000530: SUB
00000531: AND
00000532: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000553: DUP3
00000554: DUP1
00000555: LOG3
00000556: DUP1
00000557: RETURN
00000558: JUMPDEST
00000559: POP
0000055a: CALLVALUE
0000055b: PUSH2 0x0175
0000055e: JUMPI
0000055f: PUSH1 0x20
00000561: CALLDATASIZE
00000562: PUSH1 0x03
00000564: NOT
00000565: ADD
00000566: SLT
00000567: PUSH2 0x0175
0000056a: JUMPI
0000056b: PUSH2 0x0572
0000056e: PUSH2 0x1091
00000571: JUMP
00000572: JUMPDEST
00000573: PUSH1 0x03
00000575: SLOAD
00000576: PUSH1 0x01
00000578: PUSH1 0x01
0000057a: PUSH1 0xa0
0000057c: SHL
0000057d: SUB
0000057e: AND
0000057f: CALLER
00000580: SUB
00000581: PUSH2 0x06b9
00000584: JUMPI
00000585: PUSH1 0x04
00000587: SLOAD
00000588: PUSH1 0x01
0000058a: PUSH1 0x01
0000058c: PUSH1 0xa0
0000058e: SHL
0000058f: SUB
00000590: AND
00000591: SWAP1
00000592: PUSH2 0x059a
00000595: DUP2
00000596: PUSH2 0x11aa
00000599: JUMP
0000059a: JUMPDEST
0000059b: ISZERO
0000059c: PUSH2 0x05e3
0000059f: JUMPI
000005a0: POP
000005a1: SELFBALANCE
000005a2: DUP1
000005a3: PUSH2 0x05ab
000005a6: JUMPI
000005a7: POP
000005a8: POP
000005a9: DUP1
000005aa: RETURN
000005ab: JUMPDEST
000005ac: PUSH1 0x20
000005ae: DUP2
000005af: PUSH2 0x05d9
000005b2: PUSH32 0x77f67778e9529a2fd2147ffb2b10ca2e0d1efd8cb925e1f1d5702e39c5fa8da6
000005d3: SWAP4
000005d4: DUP6
000005d5: PUSH2 0x11da
000005d8: JUMP
000005d9: JUMPDEST
000005da: PUSH1 0x40
000005dc: MLOAD
000005dd: SWAP1
000005de: DUP2
000005df: MSTORE
000005e0: LOG2
000005e1: DUP1
000005e2: RETURN
000005e3: JUMPDEST
000005e4: PUSH1 0x40
000005e6: MLOAD
000005e7: PUSH4 0x70a08231
000005ec: PUSH1 0xe0
000005ee: SHL
000005ef: DUP2
000005f0: MSTORE
000005f1: ADDRESS
000005f2: PUSH1 0x04
000005f4: DUP3
000005f5: ADD
000005f6: MSTORE
000005f7: PUSH1 0x01
000005f9: PUSH1 0x01
000005fb: PUSH1 0xa0
000005fd: SHL
000005fe: SUB
000005ff: SWAP2
00000600: SWAP1
00000601: SWAP2
00000602: AND
00000603: SWAP2
00000604: SWAP1
00000605: PUSH1 0x20
00000607: DUP2
00000608: PUSH1 0x24
0000060a: DUP2
0000060b: DUP7
0000060c: GAS
0000060d: STATICCALL
0000060e: SWAP1
0000060f: DUP2
00000610: ISZERO
00000611: PUSH2 0x06ae
00000614: JUMPI
00000615: DUP5
00000616: SWAP2
00000617: PUSH2 0x0678
0000061a: JUMPI
0000061b: JUMPDEST
0000061c: POP
0000061d: DUP1
0000061e: PUSH2 0x0628
00000621: JUMPI
00000622: JUMPDEST
00000623: POP
00000624: POP
00000625: POP
00000626: DUP1
00000627: RETURN
00000628: JUMPDEST
00000629: DUP2
0000062a: PUSH2 0x0655
0000062d: DUP3
0000062e: PUSH32 0x9b793652de97f04c5168920587bad4b1c6345295a8f5ad31c59ff946a26f91d2
0000064f: SWAP5
00000650: DUP7
00000651: PUSH2 0x1306
00000654: JUMP
00000655: JUMPDEST
00000656: PUSH1 0x40
00000658: DUP1
00000659: MLOAD
0000065a: PUSH1 0x01
0000065c: PUSH1 0x01
0000065e: PUSH1 0xa0
00000660: SHL
00000661: SUB
00000662: SWAP3
00000663: SWAP1
00000664: SWAP3
00000665: AND
00000666: DUP3
00000667: MSTORE
00000668: PUSH1 0x20
0000066a: DUP3
0000066b: ADD
0000066c: SWAP3
0000066d: SWAP1
0000066e: SWAP3
0000066f: MSTORE
00000670: LOG2
00000671: PUSH0
00000672: DUP1
00000673: DUP1
00000674: PUSH2 0x0622
00000677: JUMP
00000678: JUMPDEST
00000679: SWAP1
0000067a: POP
0000067b: PUSH1 0x20
0000067d: DUP2
0000067e: RETURNDATASIZE
0000067f: PUSH1 0x20
00000681: GT
00000682: PUSH2 0x06a6
00000685: JUMPI
00000686: JUMPDEST
00000687: DUP2
00000688: PUSH2 0x0693
0000068b: PUSH1 0x20
0000068d: SWAP4
0000068e: DUP4
0000068f: PUSH2 0x1154
00000692: JUMP
00000693: JUMPDEST
00000694: DUP2
00000695: ADD
00000696: SUB
00000697: SLT
00000698: PUSH2 0x06a2
0000069b: JUMPI
0000069c: MLOAD
0000069d: PUSH0
0000069e: PUSH2 0x061b
000006a1: JUMP
000006a2: JUMPDEST
000006a3: PUSH0
000006a4: DUP1
000006a5: REVERT
000006a6: JUMPDEST
000006a7: RETURNDATASIZE
000006a8: SWAP2
000006a9: POP
000006aa: PUSH2 0x0686
000006ad: JUMP
000006ae: JUMPDEST
000006af: PUSH1 0x40
000006b1: MLOAD
000006b2: RETURNDATASIZE
000006b3: DUP7
000006b4: DUP3
000006b5: RETURNDATACOPY
000006b6: RETURNDATASIZE
000006b7: SWAP1
000006b8: REVERT
000006b9: JUMPDEST
000006ba: PUSH4 0x27e1f1e5
000006bf: PUSH1 0xe0
000006c1: SHL
000006c2: DUP3
000006c3: MSTORE
000006c4: PUSH1 0x04
000006c6: DUP3
000006c7: REVERT
000006c8: JUMPDEST
000006c9: POP
000006ca: CALLVALUE
000006cb: PUSH2 0x0175
000006ce: JUMPI
000006cf: PUSH1 0x20
000006d1: CALLDATASIZE
000006d2: PUSH1 0x03
000006d4: NOT
000006d5: ADD
000006d6: SLT
000006d7: PUSH2 0x0175
000006da: JUMPI
000006db: PUSH2 0x06e2
000006de: PUSH2 0x1091
000006e1: JUMP
000006e2: JUMPDEST
000006e3: PUSH2 0x06ea
000006e6: PUSH2 0x1262
000006e9: JUMP
000006ea: JUMPDEST
000006eb: PUSH1 0x01
000006ed: PUSH1 0x01
000006ef: PUSH1 0xa0
000006f1: SHL
000006f2: SUB
000006f3: AND
000006f4: DUP1
000006f5: ISZERO
000006f6: PUSH2 0x028b
000006f9: JUMPI
000006fa: PUSH1 0x04
000006fc: DUP1
000006fd: SLOAD
000006fe: PUSH1 0x01
00000700: PUSH1 0x01
00000702: PUSH1 0xa0
00000704: SHL
00000705: SUB
00000706: NOT
00000707: DUP2
00000708: AND
00000709: DUP4
0000070a: OR
0000070b: SWAP1
0000070c: SWAP2
0000070d: SSTORE
0000070e: PUSH1 0x01
00000710: PUSH1 0x01
00000712: PUSH1 0xa0
00000714: SHL
00000715: SUB
00000716: AND
00000717: PUSH32 0x483bdedaaf23706a9800ac1af0d852b34927780d79f9d6ba60a80c7cad75ea39
00000738: DUP4
00000739: DUP1
0000073a: LOG3
0000073b: DUP1
0000073c: RETURN
0000073d: JUMPDEST
0000073e: POP
0000073f: CALLVALUE
00000740: PUSH2 0x0175
00000743: JUMPI
00000744: DUP1
00000745: PUSH1 0x03
00000747: NOT
00000748: CALLDATASIZE
00000749: ADD
0000074a: SLT
0000074b: PUSH2 0x0175
0000074e: JUMPI
0000074f: PUSH1 0x20
00000751: PUSH1 0xff
00000753: PUSH1 0x01
00000755: SLOAD
00000756: PUSH1 0xa0
00000758: SHR
00000759: AND
0000075a: PUSH1 0x40
0000075c: MLOAD
0000075d: SWAP1
0000075e: ISZERO
0000075f: ISZERO
00000760: DUP2
00000761: MSTORE
00000762: RETURN
00000763: JUMPDEST
00000764: POP
00000765: CALLVALUE
00000766: PUSH2 0x0175
00000769: JUMPI
0000076a: DUP1
0000076b: PUSH1 0x03
0000076d: NOT
0000076e: CALLDATASIZE
0000076f: ADD
00000770: SLT
00000771: PUSH2 0x0175
00000774: JUMPI
00000775: PUSH1 0x03
00000777: SLOAD
00000778: PUSH1 0x40
0000077a: MLOAD
0000077b: PUSH1 0x01
0000077d: PUSH1 0x01
0000077f: PUSH1 0xa0
00000781: SHL
00000782: SUB
00000783: SWAP1
00000784: SWAP2
00000785: AND
00000786: DUP2
00000787: MSTORE
00000788: PUSH1 0x20
0000078a: SWAP1
0000078b: RETURN
0000078c: JUMPDEST
0000078d: POP
0000078e: CALLVALUE
0000078f: PUSH2 0x0175
00000792: JUMPI
00000793: DUP1
00000794: PUSH1 0x03
00000796: NOT
00000797: CALLDATASIZE
00000798: ADD
00000799: SLT
0000079a: PUSH2 0x0175
0000079d: JUMPI
0000079e: PUSH1 0x20
000007a0: SWAP1
000007a1: PUSH1 0x40
000007a3: MLOAD
000007a4: SWAP1
000007a5: DUP2
000007a6: MSTORE
000007a7: RETURN
000007a8: JUMPDEST
000007a9: POP
000007aa: CALLVALUE
000007ab: PUSH2 0x0175
000007ae: JUMPI
000007af: PUSH1 0x20
000007b1: CALLDATASIZE
000007b2: PUSH1 0x03
000007b4: NOT
000007b5: ADD
000007b6: SLT
000007b7: PUSH2 0x0175
000007ba: JUMPI
000007bb: PUSH1 0x20
000007bd: SWAP1
000007be: PUSH1 0xff
000007c0: SWAP1
000007c1: PUSH1 0x40
000007c3: SWAP1
000007c4: PUSH1 0x01
000007c6: PUSH1 0x01
000007c8: PUSH1 0xa0
000007ca: SHL
000007cb: SUB
000007cc: PUSH2 0x07d3
000007cf: PUSH2 0x1091
000007d2: JUMP
000007d3: JUMPDEST
000007d4: AND
000007d5: DUP2
000007d6: MSTORE
000007d7: PUSH1 0x05
000007d9: DUP5
000007da: MSTORE
000007db: KECCAK256
000007dc: SLOAD
000007dd: AND
000007de: PUSH1 0x40
000007e0: MLOAD
000007e1: SWAP1
000007e2: ISZERO
000007e3: ISZERO
000007e4: DUP2
000007e5: MSTORE
000007e6: RETURN
000007e7: JUMPDEST
000007e8: POP
000007e9: CALLVALUE
000007ea: PUSH2 0x0175
000007ed: JUMPI
000007ee: PUSH1 0x20
000007f0: CALLDATASIZE
000007f1: PUSH1 0x03
000007f3: NOT
000007f4: ADD
000007f5: SLT
000007f6: PUSH2 0x0175
000007f9: JUMPI
000007fa: PUSH1 0xff
000007fc: PUSH1 0x40
000007fe: PUSH1 0x20
00000800: SWAP3
00000801: PUSH1 0x04
00000803: CALLDATALOAD
00000804: DUP2
00000805: MSTORE
00000806: PUSH1 0x06
00000808: DUP5
00000809: MSTORE
0000080a: KECCAK256
0000080b: SLOAD
0000080c: AND
0000080d: PUSH1 0x40
0000080f: MLOAD
00000810: SWAP1
00000811: ISZERO
00000812: ISZERO
00000813: DUP2
00000814: MSTORE
00000815: RETURN
00000816: JUMPDEST
00000817: POP
00000818: CALLVALUE
00000819: PUSH2 0x0175
0000081c: JUMPI
0000081d: DUP1
0000081e: PUSH1 0x03
00000820: NOT
00000821: CALLDATASIZE
00000822: ADD
00000823: SLT
00000824: PUSH2 0x0175
00000827: JUMPI
00000828: PUSH1 0x09
0000082a: SLOAD
0000082b: PUSH1 0x40
0000082d: MLOAD
0000082e: PUSH1 0x01
00000830: PUSH1 0x01
00000832: PUSH1 0xa0
00000834: SHL
00000835: SUB
00000836: SWAP1
00000837: SWAP2
00000838: AND
00000839: DUP2
0000083a: MSTORE
0000083b: PUSH1 0x20
0000083d: SWAP1
0000083e: RETURN
0000083f: JUMPDEST
00000840: POP
00000841: CALLVALUE
00000842: PUSH2 0x0175
00000845: JUMPI
00000846: DUP1
00000847: PUSH1 0x03
00000849: NOT
0000084a: CALLDATASIZE
0000084b: ADD
0000084c: SLT
0000084d: PUSH2 0x0175
00000850: JUMPI
00000851: PUSH2 0x0858
00000854: PUSH2 0x1262
00000857: JUMP
00000858: JUMPDEST
00000859: PUSH1 0x01
0000085b: SLOAD
0000085c: PUSH1 0xff
0000085e: DUP2
0000085f: PUSH1 0xa0
00000861: SHR
00000862: AND
00000863: ISZERO
00000864: PUSH2 0x08a0
00000867: JUMPI
00000868: PUSH1 0xff
0000086a: PUSH1 0xa0
0000086c: SHL
0000086d: NOT
0000086e: AND
0000086f: PUSH1 0x01
00000871: SSTORE
00000872: PUSH1 0x40
00000874: MLOAD
00000875: CALLER
00000876: DUP2
00000877: MSTORE
00000878: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
00000899: SWAP1
0000089a: PUSH1 0x20
0000089c: SWAP1
0000089d: LOG1
0000089e: DUP1
0000089f: RETURN
000008a0: JUMPDEST
000008a1: PUSH4 0x8dfc202b
000008a6: PUSH1 0xe0
000008a8: SHL
000008a9: DUP3
000008aa: MSTORE
000008ab: PUSH1 0x04
000008ad: DUP3
000008ae: REVERT
000008af: JUMPDEST
000008b0: POP
000008b1: PUSH1 0x40
000008b3: CALLDATASIZE
000008b4: PUSH1 0x03
000008b6: NOT
000008b7: ADD
000008b8: SLT
000008b9: PUSH2 0x06a2
000008bc: JUMPI
000008bd: PUSH1 0x04
000008bf: CALLDATALOAD
000008c0: PUSH8 0xffffffffffffffff
000008c9: DUP2
000008ca: GT
000008cb: PUSH2 0x06a2
000008ce: JUMPI
000008cf: PUSH2 0x0120
000008d2: PUSH1 0x03
000008d4: NOT
000008d5: DUP3
000008d6: CALLDATASIZE
000008d7: SUB
000008d8: ADD
000008d9: SLT
000008da: PUSH2 0x06a2
000008dd: JUMPI
000008de: PUSH1 0x24
000008e0: CALLDATALOAD
000008e1: SWAP1
000008e2: PUSH8 0xffffffffffffffff
000008eb: DUP3
000008ec: GT
000008ed: PUSH2 0x06a2
000008f0: JUMPI
000008f1: CALLDATASIZE
000008f2: PUSH1 0x23
000008f4: DUP4
000008f5: ADD
000008f6: SLT
000008f7: ISZERO
000008f8: PUSH2 0x06a2
000008fb: JUMPI
000008fc: DUP2
000008fd: PUSH1 0x04
000008ff: ADD
00000900: CALLDATALOAD
00000901: SWAP2
00000902: PUSH8 0xffffffffffffffff
0000090b: DUP4
0000090c: GT
0000090d: PUSH2 0x06a2
00000910: JUMPI
00000911: CALLDATASIZE
00000912: PUSH1 0x24
00000914: DUP5
00000915: DUP4
00000916: ADD
00000917: ADD
00000918: GT
00000919: PUSH2 0x06a2
0000091c: JUMPI
0000091d: PUSH1 0x02
0000091f: DUP1
00000920: SLOAD
00000921: EQ
00000922: PUSH2 0x0ccb
00000925: JUMPI
00000926: PUSH1 0x02
00000928: DUP1
00000929: SSTORE
0000092a: PUSH2 0x0931
0000092d: PUSH2 0x1244
00000930: JUMP
00000931: JUMPDEST
00000932: CALLER
00000933: PUSH0
00000934: MSTORE
00000935: PUSH1 0x05
00000937: PUSH1 0x20
00000939: MSTORE
0000093a: PUSH1 0xff
0000093c: PUSH1 0x40
0000093e: PUSH0
0000093f: KECCAK256
00000940: SLOAD
00000941: AND
00000942: ISZERO
00000943: PUSH2 0x0cbc
00000946: JUMPI
00000947: PUSH1 0xc4
00000949: DUP3
0000094a: ADD
0000094b: PUSH1 0x01
0000094d: PUSH1 0x01
0000094f: PUSH1 0xa0
00000951: SHL
00000952: SUB
00000953: PUSH2 0x095b
00000956: DUP3
00000957: PUSH2 0x1140
0000095a: JUMP
0000095b: JUMPDEST
0000095c: AND
0000095d: PUSH0
0000095e: MSTORE
0000095f: PUSH1 0x07
00000961: PUSH1 0x20
00000963: MSTORE
00000964: PUSH1 0xff
00000966: PUSH1 0x40
00000968: PUSH0
00000969: KECCAK256
0000096a: SLOAD
0000096b: AND
0000096c: ISZERO
0000096d: PUSH2 0x0cad
00000970: JUMPI
00000971: PUSH1 0xe4
00000973: DUP4
00000974: ADD
00000975: SWAP2
00000976: PUSH1 0x01
00000978: PUSH1 0x01
0000097a: PUSH1 0xa0
0000097c: SHL
0000097d: SUB
0000097e: PUSH2 0x0986
00000981: DUP5
00000982: PUSH2 0x1140
00000985: JUMP
00000986: JUMPDEST
00000987: AND
00000988: PUSH0
00000989: MSTORE
0000098a: PUSH1 0x08
0000098c: PUSH1 0x20
0000098e: MSTORE
0000098f: PUSH1 0xff
00000991: PUSH1 0x40
00000993: PUSH0
00000994: KECCAK256
00000995: SLOAD
00000996: AND
00000997: ISZERO
00000998: PUSH2 0x0c9e
0000099b: JUMPI
0000099c: DUP4
0000099d: PUSH1 0x04
0000099f: ADD
000009a0: CALLDATALOAD
000009a1: SWAP3
000009a2: DUP4
000009a3: PUSH0
000009a4: MSTORE
000009a5: PUSH1 0x06
000009a7: PUSH1 0x20
000009a9: MSTORE
000009aa: PUSH1 0xff
000009ac: PUSH1 0x40
000009ae: PUSH0
000009af: KECCAK256
000009b0: SLOAD
000009b1: AND
000009b2: PUSH2 0x0c8f
000009b5: JUMPI
000009b6: DUP4
000009b7: PUSH0
000009b8: MSTORE
000009b9: PUSH1 0x06
000009bb: PUSH1 0x20
000009bd: MSTORE
000009be: PUSH1 0x40
000009c0: PUSH0
000009c1: KECCAK256
000009c2: PUSH1 0x01
000009c4: PUSH1 0xff
000009c6: NOT
000009c7: DUP3
000009c8: SLOAD
000009c9: AND
000009ca: OR
000009cb: SWAP1
000009cc: SSTORE
000009cd: PUSH1 0x64
000009cf: DUP6
000009d0: ADD
000009d1: CALLDATALOAD
000009d2: SWAP5
000009d3: DUP6
000009d4: TIMESTAMP
000009d5: GT
000009d6: PUSH2 0x0c80
000009d9: JUMPI
000009da: PUSH1 0x44
000009dc: DUP2
000009dd: ADD
000009de: CALLDATALOAD
000009df: DUP1
000009e0: ISZERO
000009e1: PUSH2 0x0c71
000009e4: JUMPI
000009e5: PUSH1 0x84
000009e7: DUP3
000009e8: ADD
000009e9: SWAP7
000009ea: PUSH2 0x09f2
000009ed: DUP9
000009ee: PUSH2 0x1140
000009f1: JUMP
000009f2: JUMPDEST
000009f3: PUSH1 0xa4
000009f5: DUP5
000009f6: ADD
000009f7: SWAP10
000009f8: SWAP1
000009f9: PUSH1 0x01
000009fb: PUSH1 0x01
000009fd: PUSH1 0xa0
000009ff: SHL
00000a00: SUB
00000a01: PUSH2 0x0a09
00000a04: DUP13
00000a05: PUSH2 0x1140
00000a08: JUMP
00000a09: JUMPDEST
00000a0a: PUSH1 0x01
00000a0c: PUSH1 0x01
00000a0e: PUSH1 0xa0
00000a10: SHL
00000a11: SUB
00000a12: SWAP1
00000a13: SWAP3
00000a14: AND
00000a15: SWAP2
00000a16: AND
00000a17: EQ
00000a18: PUSH2 0x0c62
00000a1b: JUMPI
00000a1c: PUSH1 0x24
00000a1e: DUP5
00000a1f: ADD
00000a20: CALLDATALOAD
00000a21: SWAP6
00000a22: PUSH2 0x0a2a
00000a25: DUP9
00000a26: PUSH2 0x1140
00000a29: JUMP
00000a2a: JUMPDEST
00000a2b: PUSH2 0x0a33
00000a2e: DUP12
00000a2f: PUSH2 0x1140
00000a32: JUMP
00000a33: JUMPDEST
00000a34: SWAP6
00000a35: PUSH2 0x0a3d
00000a38: DUP14
00000a39: PUSH2 0x1140
00000a3c: JUMP
00000a3d: JUMPDEST
00000a3e: SWAP8
00000a3f: PUSH2 0x0a47
00000a42: DUP2
00000a43: PUSH2 0x1140
00000a46: JUMP
00000a47: JUMPDEST
00000a48: SWAP11
00000a49: PUSH2 0x0a52
00000a4c: DUP13
00000a4d: DUP12
00000a4e: PUSH2 0x1288
00000a51: JUMP
00000a52: JUMPDEST
00000a53: SWAP15
00000a54: PUSH0
00000a55: PUSH2 0x0a5d
00000a58: DUP12
00000a59: PUSH2 0x11aa
00000a5c: JUMP
00000a5d: JUMPDEST
00000a5e: ISZERO
00000a5f: PUSH2 0x0c48
00000a62: JUMPI
00000a63: POP
00000a64: DUP12
00000a65: SWAP5
00000a66: JUMPDEST
00000a67: PUSH1 0x01
00000a69: PUSH1 0x01
00000a6b: PUSH1 0xa0
00000a6d: SHL
00000a6e: SUB
00000a6f: AND
00000a70: SWAP15
00000a71: DUP16
00000a72: EXTCODESIZE
00000a73: ISZERO
00000a74: PUSH2 0x06a2
00000a77: JUMPI
00000a78: DUP15
00000a79: SWAP9
00000a7a: PUSH1 0x40
00000a7c: MLOAD
00000a7d: SWAP10
00000a7e: PUSH4 0xa2cc1f23
00000a83: PUSH1 0xe0
00000a85: SHL
00000a86: DUP12
00000a87: MSTORE
00000a88: PUSH1 0x40
00000a8a: PUSH1 0x04
00000a8c: DUP13
00000a8d: ADD
00000a8e: MSTORE
00000a8f: PUSH1 0x44
00000a91: DUP12
00000a92: ADD
00000a93: MSTORE
00000a94: DUP14
00000a95: PUSH1 0x64
00000a97: DUP12
00000a98: ADD
00000a99: MSTORE
00000a9a: DUP11
00000a9b: PUSH1 0x84
00000a9d: DUP12
00000a9e: ADD
00000a9f: MSTORE
00000aa0: PUSH1 0xa4
00000aa2: DUP11
00000aa3: ADD
00000aa4: MSTORE
00000aa5: PUSH2 0x0ab4
00000aa8: PUSH1 0x01
00000aaa: DUP1
00000aab: PUSH1 0xa0
00000aad: SHL
00000aae: SUB
00000aaf: SWAP2
00000ab0: PUSH2 0x10a7
00000ab3: JUMP
00000ab4: JUMPDEST
00000ab5: AND
00000ab6: PUSH1 0xc4
00000ab8: DUP10
00000ab9: ADD
00000aba: MSTORE
00000abb: PUSH1 0x01
00000abd: PUSH1 0x01
00000abf: PUSH1 0xa0
00000ac1: SHL
00000ac2: SUB
00000ac3: SWAP1
00000ac4: PUSH2 0x0acc
00000ac7: SWAP1
00000ac8: PUSH2 0x10a7
00000acb: JUMP
00000acc: JUMPDEST
00000acd: AND
00000ace: PUSH1 0xe4
00000ad0: DUP9
00000ad1: ADD
00000ad2: MSTORE
00000ad3: PUSH1 0x01
00000ad5: PUSH1 0x01
00000ad7: PUSH1 0xa0
00000ad9: SHL
00000ada: SUB
00000adb: SWAP1
00000adc: PUSH2 0x0ae4
00000adf: SWAP1
00000ae0: PUSH2 0x10a7
00000ae3: JUMP
00000ae4: JUMPDEST
00000ae5: AND
00000ae6: PUSH2 0x0104
00000ae9: DUP8
00000aea: ADD
00000aeb: MSTORE
00000aec: PUSH1 0x01
00000aee: PUSH1 0x01
00000af0: PUSH1 0xa0
00000af2: SHL
00000af3: SUB
00000af4: SWAP1
00000af5: PUSH2 0x0afd
00000af8: SWAP1
00000af9: PUSH2 0x10a7
00000afc: JUMP
00000afd: JUMPDEST
00000afe: AND
00000aff: PUSH2 0x0124
00000b02: DUP7
00000b03: ADD
00000b04: MSTORE
00000b05: PUSH2 0x0104
00000b08: DUP2
00000b09: ADD
00000b0a: CALLDATALOAD
00000b0b: PUSH1 0x22
00000b0d: NOT
00000b0e: DUP3
00000b0f: CALLDATASIZE
00000b10: SUB
00000b11: ADD
00000b12: DUP2
00000b13: SLT
00000b14: ISZERO
00000b15: PUSH2 0x06a2
00000b18: JUMPI
00000b19: ADD
00000b1a: SWAP3
00000b1b: PUSH1 0x24
00000b1d: PUSH1 0x04
00000b1f: DUP6
00000b20: ADD
00000b21: CALLDATALOAD
00000b22: SWAP5
00000b23: ADD
00000b24: PUSH8 0xffffffffffffffff
00000b2d: DUP6
00000b2e: GT
00000b2f: PUSH2 0x06a2
00000b32: JUMPI
00000b33: DUP5
00000b34: CALLDATASIZE
00000b35: SUB
00000b36: DUP2
00000b37: SGT
00000b38: PUSH2 0x06a2
00000b3b: JUMPI
00000b3c: PUSH2 0x0b71
00000b3f: DUP7
00000b40: SWAP5
00000b41: DUP6
00000b42: SWAP4
00000b43: PUSH1 0x24
00000b45: PUSH2 0x0b5f
00000b48: DUP7
00000b49: SWAP6
00000b4a: PUSH0
00000b4b: SWAP11
00000b4c: PUSH2 0x0120
00000b4f: PUSH2 0x0144
00000b52: DUP10
00000b53: ADD
00000b54: MSTORE
00000b55: PUSH2 0x0164
00000b58: DUP9
00000b59: ADD
00000b5a: SWAP2
00000b5b: PUSH2 0x118a
00000b5e: JUMP
00000b5f: JUMPDEST
00000b60: DUP6
00000b61: DUP2
00000b62: SUB
00000b63: PUSH1 0x03
00000b65: NOT
00000b66: ADD
00000b67: DUP3
00000b68: DUP8
00000b69: ADD
00000b6a: MSTORE
00000b6b: SWAP3
00000b6c: ADD
00000b6d: PUSH2 0x118a
00000b70: JUMP
00000b71: JUMPDEST
00000b72: SUB
00000b73: SWAP2
00000b74: DUP13
00000b75: GAS
00000b76: CALL
00000b77: DUP1
00000b78: ISZERO
00000b79: PUSH2 0x0c3d
00000b7c: JUMPI
00000b7d: PUSH2 0x0c28
00000b80: JUMPI
00000b81: JUMPDEST
00000b82: POP
00000b83: PUSH2 0x0b8c
00000b86: DUP6
00000b87: DUP5
00000b88: PUSH2 0x1288
00000b8b: JUMP
00000b8c: JUMPDEST
00000b8d: SWAP8
00000b8e: DUP9
00000b8f: SUB
00000b90: SWAP8
00000b91: DUP9
00000b92: GT
00000b93: PUSH2 0x0c14
00000b96: JUMPI
00000b97: DUP8
00000b98: LT
00000b99: PUSH2 0x0c05
00000b9c: JUMPI
00000b9d: PUSH1 0x20
00000b9f: SWAP8
00000ba0: POP
00000ba1: PUSH1 0x40
00000ba3: MLOAD
00000ba4: SWAP4
00000ba5: PUSH1 0x01
00000ba7: DUP1
00000ba8: PUSH1 0xa0
00000baa: SHL
00000bab: SUB
00000bac: AND
00000bad: DUP5
00000bae: MSTORE
00000baf: PUSH1 0x01
00000bb1: DUP1
00000bb2: PUSH1 0xa0
00000bb4: SHL
00000bb5: SUB
00000bb6: AND
00000bb7: DUP8
00000bb8: DUP5
00000bb9: ADD
00000bba: MSTORE
00000bbb: PUSH1 0x01
00000bbd: DUP1
00000bbe: PUSH1 0xa0
00000bc0: SHL
00000bc1: SUB
00000bc2: AND
00000bc3: PUSH1 0x40
00000bc5: DUP4
00000bc6: ADD
00000bc7: MSTORE
00000bc8: PUSH1 0x60
00000bca: DUP3
00000bcb: ADD
00000bcc: MSTORE
00000bcd: DUP4
00000bce: PUSH1 0x80
00000bd0: DUP3
00000bd1: ADD
00000bd2: MSTORE
00000bd3: PUSH32 0x09ba3bf674011e6bab27c1c33b473b8e6e5c89940af8bb2ff7e2d01bb2475aac
00000bf4: PUSH1 0xa0
00000bf6: CALLER
00000bf7: SWAP3
00000bf8: LOG4
00000bf9: PUSH1 0x01
00000bfb: PUSH1 0x02
00000bfd: SSTORE
00000bfe: PUSH1 0x40
00000c00: MLOAD
00000c01: SWAP1
00000c02: DUP2
00000c03: MSTORE
00000c04: RETURN
00000c05: JUMPDEST
00000c06: PUSH4 0x7294b855
00000c0b: PUSH1 0xe1
00000c0d: SHL
00000c0e: DUP9
00000c0f: MSTORE
00000c10: PUSH1 0x04
00000c12: DUP9
00000c13: REVERT
00000c14: JUMPDEST
00000c15: PUSH4 0x4e487b71
00000c1a: PUSH1 0xe0
00000c1c: SHL
00000c1d: DUP10
00000c1e: MSTORE
00000c1f: PUSH1 0x11
00000c21: PUSH1 0x04
00000c23: MSTORE
00000c24: PUSH1 0x24
00000c26: DUP10
00000c27: REVERT
00000c28: JUMPDEST
00000c29: PUSH2 0x0c35
00000c2c: SWAP2
00000c2d: SWAP10
00000c2e: POP
00000c2f: PUSH0
00000c30: SWAP1
00000c31: PUSH2 0x1154
00000c34: JUMP
00000c35: JUMPDEST
00000c36: PUSH0
00000c37: SWAP8
00000c38: PUSH0
00000c39: PUSH2 0x0b81
00000c3c: JUMP
00000c3d: JUMPDEST
00000c3e: PUSH1 0x40
00000c40: MLOAD
00000c41: RETURNDATASIZE
00000c42: PUSH0
00000c43: DUP3
00000c44: RETURNDATACOPY
00000c45: RETURNDATASIZE
00000c46: SWAP1
00000c47: REVERT
00000c48: JUMPDEST
00000c49: SWAP5
00000c4a: PUSH2 0x0c5d
00000c4d: DUP14
00000c4e: DUP3
00000c4f: PUSH1 0x01
00000c51: PUSH1 0x01
00000c53: PUSH1 0xa0
00000c55: SHL
00000c56: SUB
00000c57: DUP15
00000c58: AND
00000c59: PUSH2 0x1306
00000c5c: JUMP
00000c5d: JUMPDEST
00000c5e: PUSH2 0x0a66
00000c61: JUMP
00000c62: JUMPDEST
00000c63: PUSH4 0x591c75ef
00000c68: PUSH1 0xe0
00000c6a: SHL
00000c6b: PUSH0
00000c6c: MSTORE
00000c6d: PUSH1 0x04
00000c6f: PUSH0
00000c70: REVERT
00000c71: JUMPDEST
00000c72: PUSH4 0x046535fd
00000c77: PUSH1 0xe2
00000c79: SHL
00000c7a: PUSH0
00000c7b: MSTORE
00000c7c: PUSH1 0x04
00000c7e: PUSH0
00000c7f: REVERT
00000c80: JUMPDEST
00000c81: PUSH4 0x62b439dd
00000c86: PUSH1 0xe1
00000c88: SHL
00000c89: PUSH0
00000c8a: MSTORE
00000c8b: PUSH1 0x04
00000c8d: PUSH0
00000c8e: REVERT
00000c8f: JUMPDEST
00000c90: PUSH4 0x4517788b
00000c95: PUSH1 0xe1
00000c97: SHL
00000c98: PUSH0
00000c99: MSTORE
00000c9a: PUSH1 0x04
00000c9c: PUSH0
00000c9d: REVERT
00000c9e: JUMPDEST
00000c9f: PUSH4 0x4e469669
00000ca4: PUSH1 0xe1
00000ca6: SHL
00000ca7: PUSH0
00000ca8: MSTORE
00000ca9: PUSH1 0x04
00000cab: PUSH0
00000cac: REVERT
00000cad: JUMPDEST
00000cae: PUSH4 0x710c9497
00000cb3: PUSH1 0xe0
00000cb5: SHL
00000cb6: PUSH0
00000cb7: MSTORE
00000cb8: PUSH1 0x04
00000cba: PUSH0
00000cbb: REVERT
00000cbc: JUMPDEST
00000cbd: PUSH4 0x2f23ed3b
00000cc2: PUSH1 0xe2
00000cc4: SHL
00000cc5: PUSH0
00000cc6: MSTORE
00000cc7: PUSH1 0x04
00000cc9: PUSH0
00000cca: REVERT
00000ccb: JUMPDEST
00000ccc: PUSH4 0x3ee5aeb5
00000cd1: PUSH1 0xe0
00000cd3: SHL
00000cd4: PUSH0
00000cd5: MSTORE
00000cd6: PUSH1 0x04
00000cd8: PUSH0
00000cd9: REVERT
00000cda: JUMPDEST
00000cdb: CALLVALUE
00000cdc: PUSH2 0x06a2
00000cdf: JUMPI
00000ce0: PUSH2 0x0ce8
00000ce3: CALLDATASIZE
00000ce4: PUSH2 0x10bb
00000ce7: JUMP
00000ce8: JUMPDEST
00000ce9: PUSH2 0x0cf0
00000cec: PUSH2 0x1244
00000cef: JUMP
00000cf0: JUMPDEST
00000cf1: PUSH2 0x0cf8
00000cf4: PUSH2 0x1262
00000cf7: JUMP
00000cf8: JUMPDEST
00000cf9: DUP1
00000cfa: ISZERO
00000cfb: ISZERO
00000cfc: SWAP1
00000cfd: PUSH0
00000cfe: JUMPDEST
00000cff: DUP4
00000d00: DUP2
00000d01: LT
00000d02: PUSH2 0x0d07
00000d05: JUMPI
00000d06: STOP
00000d07: JUMPDEST
00000d08: PUSH1 0x01
00000d0a: PUSH1 0x01
00000d0c: PUSH1 0xa0
00000d0e: SHL
00000d0f: SUB
00000d10: PUSH2 0x0d22
00000d13: PUSH2 0x0d1d
00000d16: DUP4
00000d17: DUP8
00000d18: DUP10
00000d19: PUSH2 0x111c
00000d1c: JUMP
00000d1d: JUMPDEST
00000d1e: PUSH2 0x1140
00000d21: JUMP
00000d22: JUMPDEST
00000d23: AND
00000d24: ISZERO
00000d25: PUSH2 0x0da7
00000d28: JUMPI
00000d29: PUSH1 0x01
00000d2b: SWAP1
00000d2c: PUSH1 0x01
00000d2e: PUSH1 0x01
00000d30: PUSH1 0xa0
00000d32: SHL
00000d33: SUB
00000d34: PUSH2 0x0d41
00000d37: PUSH2 0x0d1d
00000d3a: DUP4
00000d3b: DUP9
00000d3c: DUP11
00000d3d: PUSH2 0x111c
00000d40: JUMP
00000d41: JUMPDEST
00000d42: AND
00000d43: PUSH0
00000d44: MSTORE
00000d45: PUSH1 0x07
00000d47: PUSH1 0x20
00000d49: MSTORE
00000d4a: PUSH2 0x0d62
00000d4d: DUP4
00000d4e: PUSH1 0x40
00000d50: PUSH0
00000d51: KECCAK256
00000d52: SWAP1
00000d53: PUSH1 0xff
00000d55: DUP1
00000d56: NOT
00000d57: DUP4
00000d58: SLOAD
00000d59: AND
00000d5a: SWAP2
00000d5b: ISZERO
00000d5c: ISZERO
00000d5d: AND
00000d5e: OR
00000d5f: SWAP1
00000d60: SSTORE
00000d61: JUMP
00000d62: JUMPDEST
00000d63: DUP2
00000d64: DUP1
00000d65: PUSH1 0xa0
00000d67: SHL
00000d68: SUB
00000d69: PUSH2 0x0d76
00000d6c: PUSH2 0x0d1d
00000d6f: DUP4
00000d70: DUP9
00000d71: DUP11
00000d72: PUSH2 0x111c
00000d75: JUMP
00000d76: JUMPDEST
00000d77: AND
00000d78: PUSH32 0x9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea2
00000d99: PUSH1 0x20
00000d9b: PUSH1 0x40
00000d9d: MLOAD
00000d9e: DUP8
00000d9f: DUP2
00000da0: MSTORE
00000da1: LOG2
00000da2: ADD
00000da3: PUSH2 0x0cfe
00000da6: JUMP
00000da7: JUMPDEST
00000da8: PUSH4 0x0191b71b
00000dad: PUSH1 0xe6
00000daf: SHL
00000db0: PUSH0
00000db1: MSTORE
00000db2: PUSH1 0x04
00000db4: PUSH0
00000db5: REVERT
00000db6: JUMPDEST
00000db7: CALLVALUE
00000db8: PUSH2 0x06a2
00000dbb: JUMPI
00000dbc: PUSH2 0x0dc4
00000dbf: CALLDATASIZE
00000dc0: PUSH2 0x10bb
00000dc3: JUMP
00000dc4: JUMPDEST
00000dc5: PUSH2 0x0dcc
00000dc8: PUSH2 0x1244
00000dcb: JUMP
00000dcc: JUMPDEST
00000dcd: PUSH2 0x0dd4
00000dd0: PUSH2 0x1262
00000dd3: JUMP
00000dd4: JUMPDEST
00000dd5: DUP1
00000dd6: ISZERO
00000dd7: ISZERO
00000dd8: SWAP1
00000dd9: PUSH0
00000dda: JUMPDEST
00000ddb: DUP4
00000ddc: DUP2
00000ddd: LT
00000dde: PUSH2 0x0de3
00000de1: JUMPI
00000de2: STOP
00000de3: JUMPDEST
00000de4: PUSH1 0x01
00000de6: PUSH1 0x01
00000de8: PUSH1 0xa0
00000dea: SHL
00000deb: SUB
00000dec: PUSH2 0x0df9
00000def: PUSH2 0x0d1d
00000df2: DUP4
00000df3: DUP8
00000df4: DUP10
00000df5: PUSH2 0x111c
00000df8: JUMP
00000df9: JUMPDEST
00000dfa: AND
00000dfb: ISZERO
00000dfc: PUSH2 0x0da7
00000dff: JUMPI
00000e00: PUSH1 0x01
00000e02: SWAP1
00000e03: PUSH1 0x01
00000e05: PUSH1 0x01
00000e07: PUSH1 0xa0
00000e09: SHL
00000e0a: SUB
00000e0b: PUSH2 0x0e18
00000e0e: PUSH2 0x0d1d
00000e11: DUP4
00000e12: DUP9
00000e13: DUP11
00000e14: PUSH2 0x111c
00000e17: JUMP
00000e18: JUMPDEST
00000e19: AND
00000e1a: PUSH0
00000e1b: MSTORE
00000e1c: PUSH1 0x08
00000e1e: PUSH1 0x20
00000e20: MSTORE
00000e21: PUSH2 0x0e39
00000e24: DUP4
00000e25: PUSH1 0x40
00000e27: PUSH0
00000e28: KECCAK256
00000e29: SWAP1
00000e2a: PUSH1 0xff
00000e2c: DUP1
00000e2d: NOT
00000e2e: DUP4
00000e2f: SLOAD
00000e30: AND
00000e31: SWAP2
00000e32: ISZERO
00000e33: ISZERO
00000e34: AND
00000e35: OR
00000e36: SWAP1
00000e37: SSTORE
00000e38: JUMP
00000e39: JUMPDEST
00000e3a: DUP2
00000e3b: DUP1
00000e3c: PUSH1 0xa0
00000e3e: SHL
00000e3f: SUB
00000e40: PUSH2 0x0e4d
00000e43: PUSH2 0x0d1d
00000e46: DUP4
00000e47: DUP9
00000e48: DUP11
00000e49: PUSH2 0x111c
00000e4c: JUMP
00000e4d: JUMPDEST
00000e4e: AND
00000e4f: PUSH32 0x03885198d5d4cb856625d22550e7a6aa0c6210a256a4540267731dec336e66f2
00000e70: PUSH1 0x20
00000e72: PUSH1 0x40
00000e74: MLOAD
00000e75: DUP8
00000e76: DUP2
00000e77: MSTORE
00000e78: LOG2
00000e79: ADD
00000e7a: PUSH2 0x0dda
00000e7d: JUMP
00000e7e: JUMPDEST
00000e7f: CALLVALUE
00000e80: PUSH2 0x06a2
00000e83: JUMPI
00000e84: PUSH2 0x0e8c
00000e87: CALLDATASIZE
00000e88: PUSH2 0x10bb
00000e8b: JUMP
00000e8c: JUMPDEST
00000e8d: PUSH2 0x0e94
00000e90: PUSH2 0x1244
00000e93: JUMP
00000e94: JUMPDEST
00000e95: PUSH2 0x0e9c
00000e98: PUSH2 0x1262
00000e9b: JUMP
00000e9c: JUMPDEST
00000e9d: DUP1
00000e9e: ISZERO
00000e9f: ISZERO
00000ea0: SWAP1
00000ea1: PUSH0
00000ea2: JUMPDEST
00000ea3: DUP4
00000ea4: DUP2
00000ea5: LT
00000ea6: PUSH2 0x0eab
00000ea9: JUMPI
00000eaa: STOP
00000eab: JUMPDEST
00000eac: PUSH1 0x01
00000eae: PUSH1 0x01
00000eb0: PUSH1 0xa0
00000eb2: SHL
00000eb3: SUB
00000eb4: PUSH2 0x0ec1
00000eb7: PUSH2 0x0d1d
00000eba: DUP4
00000ebb: DUP8
00000ebc: DUP10
00000ebd: PUSH2 0x111c
00000ec0: JUMP
00000ec1: JUMPDEST
00000ec2: AND
00000ec3: ISZERO
00000ec4: PUSH2 0x0da7
00000ec7: JUMPI
00000ec8: PUSH1 0x01
00000eca: SWAP1
00000ecb: PUSH1 0x01
00000ecd: PUSH1 0x01
00000ecf: PUSH1 0xa0
00000ed1: SHL
00000ed2: SUB
00000ed3: PUSH2 0x0ee0
00000ed6: PUSH2 0x0d1d
00000ed9: DUP4
00000eda: DUP9
00000edb: DUP11
00000edc: PUSH2 0x111c
00000edf: JUMP
00000ee0: JUMPDEST
00000ee1: AND
00000ee2: PUSH0
00000ee3: MSTORE
00000ee4: PUSH1 0x05
00000ee6: PUSH1 0x20
00000ee8: MSTORE
00000ee9: PUSH2 0x0f01
00000eec: DUP4
00000eed: PUSH1 0x40
00000eef: PUSH0
00000ef0: KECCAK256
00000ef1: SWAP1
00000ef2: PUSH1 0xff
00000ef4: DUP1
00000ef5: NOT
00000ef6: DUP4
00000ef7: SLOAD
00000ef8: AND
00000ef9: SWAP2
00000efa: ISZERO
00000efb: ISZERO
00000efc: AND
00000efd: OR
00000efe: SWAP1
00000eff: SSTORE
00000f00: JUMP
00000f01: JUMPDEST
00000f02: DUP2
00000f03: DUP1
00000f04: PUSH1 0xa0
00000f06: SHL
00000f07: SUB
00000f08: PUSH2 0x0f15
00000f0b: PUSH2 0x0d1d
00000f0e: DUP4
00000f0f: DUP9
00000f10: DUP11
00000f11: PUSH2 0x111c
00000f14: JUMP
00000f15: JUMPDEST
00000f16: AND
00000f17: PUSH32 0x28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c2796
00000f38: PUSH1 0x20
00000f3a: PUSH1 0x40
00000f3c: MLOAD
00000f3d: DUP8
00000f3e: DUP2
00000f3f: MSTORE
00000f40: LOG2
00000f41: ADD
00000f42: PUSH2 0x0ea2
00000f45: JUMP
00000f46: JUMPDEST
00000f47: CALLVALUE
00000f48: PUSH2 0x06a2
00000f4b: JUMPI
00000f4c: PUSH1 0x60
00000f4e: CALLDATASIZE
00000f4f: PUSH1 0x03
00000f51: NOT
00000f52: ADD
00000f53: SLT
00000f54: PUSH2 0x06a2
00000f57: JUMPI
00000f58: PUSH2 0x0f5f
00000f5b: PUSH2 0x1091
00000f5e: JUMP
00000f5f: JUMPDEST
00000f60: PUSH1 0x24
00000f62: CALLDATALOAD
00000f63: SWAP1
00000f64: PUSH1 0x44
00000f66: CALLDATALOAD
00000f67: SWAP1
00000f68: DUP2
00000f69: ISZERO
00000f6a: ISZERO
00000f6b: DUP3
00000f6c: SUB
00000f6d: PUSH2 0x06a2
00000f70: JUMPI
00000f71: PUSH1 0x03
00000f73: SLOAD
00000f74: PUSH1 0x01
00000f76: PUSH1 0x01
00000f78: PUSH1 0xa0
00000f7a: SHL
00000f7b: SUB
00000f7c: AND
00000f7d: CALLER
00000f7e: SUB
00000f7f: PUSH2 0x1021
00000f82: JUMPI
00000f83: PUSH32 0x2b42cc202c3913f9e80a3577571c031c545e8a0d53a25c67a8046c06afa17fe5
00000fa4: SWAP3
00000fa5: PUSH1 0x60
00000fa7: SWAP3
00000fa8: ISZERO
00000fa9: PUSH2 0x100f
00000fac: JUMPI
00000fad: PUSH1 0x09
00000faf: SLOAD
00000fb0: PUSH1 0x01
00000fb2: PUSH1 0x01
00000fb4: PUSH1 0xa0
00000fb6: SHL
00000fb7: SUB
00000fb8: AND
00000fb9: SWAP1
00000fba: JUMPDEST
00000fbb: PUSH2 0x0fc3
00000fbe: DUP4
00000fbf: PUSH2 0x11aa
00000fc2: JUMP
00000fc3: JUMPDEST
00000fc4: ISZERO
00000fc5: PUSH2 0x0ff6
00000fc8: JUMPI
00000fc9: PUSH2 0x0fd2
00000fcc: DUP2
00000fcd: DUP4
00000fce: PUSH2 0x11da
00000fd1: JUMP
00000fd2: JUMPDEST
00000fd3: PUSH1 0x40
00000fd5: DUP1
00000fd6: MLOAD
00000fd7: PUSH1 0x01
00000fd9: PUSH1 0x01
00000fdb: PUSH1 0xa0
00000fdd: SHL
00000fde: SUB
00000fdf: SWAP5
00000fe0: DUP6
00000fe1: AND
00000fe2: DUP2
00000fe3: MSTORE
00000fe4: PUSH1 0x20
00000fe6: DUP2
00000fe7: ADD
00000fe8: SWAP3
00000fe9: SWAP1
00000fea: SWAP3
00000feb: MSTORE
00000fec: SWAP2
00000fed: SWAP1
00000fee: SWAP3
00000fef: AND
00000ff0: SWAP1
00000ff1: DUP3
00000ff2: ADD
00000ff3: MSTORE
00000ff4: LOG1
00000ff5: STOP
00000ff6: JUMPDEST
00000ff7: PUSH2 0x100a
00000ffa: DUP2
00000ffb: DUP4
00000ffc: PUSH1 0x01
00000ffe: PUSH1 0x01
00001000: PUSH1 0xa0
00001002: SHL
00001003: SUB
00001004: DUP7
00001005: AND
00001006: PUSH2 0x1306
00001009: JUMP
0000100a: JUMPDEST
0000100b: PUSH2 0x0fd2
0000100e: JUMP
0000100f: JUMPDEST
00001010: PUSH1 0x0a
00001012: SLOAD
00001013: PUSH1 0x01
00001015: PUSH1 0x01
00001017: PUSH1 0xa0
00001019: SHL
0000101a: SUB
0000101b: AND
0000101c: SWAP1
0000101d: PUSH2 0x0fba
00001020: JUMP
00001021: JUMPDEST
00001022: PUSH4 0x27e1f1e5
00001027: PUSH1 0xe0
00001029: SHL
0000102a: PUSH0
0000102b: MSTORE
0000102c: PUSH1 0x04
0000102e: PUSH0
0000102f: REVERT
00001030: JUMPDEST
00001031: CALLVALUE
00001032: PUSH2 0x06a2
00001035: JUMPI
00001036: PUSH0
00001037: CALLDATASIZE
00001038: PUSH1 0x03
0000103a: NOT
0000103b: ADD
0000103c: SLT
0000103d: PUSH2 0x06a2
00001040: JUMPI
00001041: PUSH1 0x0a
00001043: SLOAD
00001044: PUSH1 0x40
00001046: MLOAD
00001047: PUSH1 0x01
00001049: PUSH1 0x01
0000104b: PUSH1 0xa0
0000104d: SHL
0000104e: SUB
0000104f: SWAP1
00001050: SWAP2
00001051: AND
00001052: DUP2
00001053: MSTORE
00001054: PUSH1 0x20
00001056: SWAP1
00001057: RETURN
00001058: JUMPDEST
00001059: CALLVALUE
0000105a: PUSH2 0x06a2
0000105d: JUMPI
0000105e: PUSH1 0x20
00001060: CALLDATASIZE
00001061: PUSH1 0x03
00001063: NOT
00001064: ADD
00001065: SLT
00001066: PUSH2 0x06a2
00001069: JUMPI
0000106a: PUSH1 0x20
0000106c: SWAP1
0000106d: PUSH1 0x01
0000106f: PUSH1 0x01
00001071: PUSH1 0xa0
00001073: SHL
00001074: SUB
00001075: PUSH2 0x107c
00001078: PUSH2 0x1091
0000107b: JUMP
0000107c: JUMPDEST
0000107d: AND
0000107e: PUSH0
0000107f: MSTORE
00001080: PUSH1 0x07
00001082: DUP3
00001083: MSTORE
00001084: PUSH1 0xff
00001086: PUSH1 0x40
00001088: PUSH0
00001089: KECCAK256
0000108a: SLOAD
0000108b: AND
0000108c: ISZERO
0000108d: ISZERO
0000108e: DUP2
0000108f: MSTORE
00001090: RETURN
00001091: JUMPDEST
00001092: PUSH1 0x04
00001094: CALLDATALOAD
00001095: SWAP1
00001096: PUSH1 0x01
00001098: PUSH1 0x01
0000109a: PUSH1 0xa0
0000109c: SHL
0000109d: SUB
0000109e: DUP3
0000109f: AND
000010a0: DUP3
000010a1: SUB
000010a2: PUSH2 0x06a2
000010a5: JUMPI
000010a6: JUMP
000010a7: JUMPDEST
000010a8: CALLDATALOAD
000010a9: SWAP1
000010aa: PUSH1 0x01
000010ac: PUSH1 0x01
000010ae: PUSH1 0xa0
000010b0: SHL
000010b1: SUB
000010b2: DUP3
000010b3: AND
000010b4: DUP3
000010b5: SUB
000010b6: PUSH2 0x06a2
000010b9: JUMPI
000010ba: JUMP
000010bb: JUMPDEST
000010bc: SWAP1
000010bd: PUSH1 0x40
000010bf: PUSH1 0x03
000010c1: NOT
000010c2: DUP4
000010c3: ADD
000010c4: SLT
000010c5: PUSH2 0x06a2
000010c8: JUMPI
000010c9: PUSH1 0x04
000010cb: CALLDATALOAD
000010cc: PUSH8 0xffffffffffffffff
000010d5: DUP2
000010d6: GT
000010d7: PUSH2 0x06a2
000010da: JUMPI
000010db: DUP3
000010dc: PUSH1 0x23
000010de: DUP3
000010df: ADD
000010e0: SLT
000010e1: ISZERO
000010e2: PUSH2 0x06a2
000010e5: JUMPI
000010e6: DUP1
000010e7: PUSH1 0x04
000010e9: ADD
000010ea: CALLDATALOAD
000010eb: SWAP3
000010ec: PUSH8 0xffffffffffffffff
000010f5: DUP5
000010f6: GT
000010f7: PUSH2 0x06a2
000010fa: JUMPI
000010fb: PUSH1 0x24
000010fd: DUP5
000010fe: PUSH1 0x05
00001100: SHL
00001101: DUP4
00001102: ADD
00001103: ADD
00001104: GT
00001105: PUSH2 0x06a2
00001108: JUMPI
00001109: PUSH1 0x24
0000110b: ADD
0000110c: SWAP2
0000110d: SWAP1
0000110e: PUSH1 0x24
00001110: CALLDATALOAD
00001111: DUP1
00001112: ISZERO
00001113: ISZERO
00001114: DUP2
00001115: SUB
00001116: PUSH2 0x06a2
00001119: JUMPI
0000111a: SWAP1
0000111b: JUMP
0000111c: JUMPDEST
0000111d: SWAP2
0000111e: SWAP1
0000111f: DUP2
00001120: LT
00001121: ISZERO
00001122: PUSH2 0x112c
00001125: JUMPI
00001126: PUSH1 0x05
00001128: SHL
00001129: ADD
0000112a: SWAP1
0000112b: JUMP
0000112c: JUMPDEST
0000112d: PUSH4 0x4e487b71
00001132: PUSH1 0xe0
00001134: SHL
00001135: PUSH0
00001136: MSTORE
00001137: PUSH1 0x32
00001139: PUSH1 0x04
0000113b: MSTORE
0000113c: PUSH1 0x24
0000113e: PUSH0
0000113f: REVERT
00001140: JUMPDEST
00001141: CALLDATALOAD
00001142: PUSH1 0x01
00001144: PUSH1 0x01
00001146: PUSH1 0xa0
00001148: SHL
00001149: SUB
0000114a: DUP2
0000114b: AND
0000114c: DUP2
0000114d: SUB
0000114e: PUSH2 0x06a2
00001151: JUMPI
00001152: SWAP1
00001153: JUMP
00001154: JUMPDEST
00001155: SWAP1
00001156: PUSH1 0x1f
00001158: DUP1
00001159: NOT
0000115a: SWAP2
0000115b: ADD
0000115c: AND
0000115d: DUP2
0000115e: ADD
0000115f: SWAP1
00001160: DUP2
00001161: LT
00001162: PUSH8 0xffffffffffffffff
0000116b: DUP3
0000116c: GT
0000116d: OR
0000116e: PUSH2 0x1176
00001171: JUMPI
00001172: PUSH1 0x40
00001174: MSTORE
00001175: JUMP
00001176: JUMPDEST
00001177: PUSH4 0x4e487b71
0000117c: PUSH1 0xe0
0000117e: SHL
0000117f: PUSH0
00001180: MSTORE
00001181: PUSH1 0x41
00001183: PUSH1 0x04
00001185: MSTORE
00001186: PUSH1 0x24
00001188: PUSH0
00001189: REVERT
0000118a: JUMPDEST
0000118b: SWAP1
0000118c: DUP1
0000118d: PUSH1 0x20
0000118f: SWAP4
00001190: SWAP3
00001191: DUP2
00001192: DUP5
00001193: MSTORE
00001194: DUP5
00001195: DUP5
00001196: ADD
00001197: CALLDATACOPY
00001198: PUSH0
00001199: DUP3
0000119a: DUP3
0000119b: ADD
0000119c: DUP5
0000119d: ADD
0000119e: MSTORE
0000119f: PUSH1 0x1f
000011a1: ADD
000011a2: PUSH1 0x1f
000011a4: NOT
000011a5: AND
000011a6: ADD
000011a7: ADD
000011a8: SWAP1
000011a9: JUMP
000011aa: JUMPDEST
000011ab: PUSH1 0x01
000011ad: DUP1
000011ae: PUSH1 0xa0
000011b0: SHL
000011b1: SUB
000011b2: AND
000011b3: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
000011c8: DUP2
000011c9: EQ
000011ca: SWAP1
000011cb: DUP2
000011cc: ISZERO
000011cd: PUSH2 0x11d4
000011d0: JUMPI
000011d1: POP
000011d2: SWAP1
000011d3: JUMP
000011d4: JUMPDEST
000011d5: SWAP1
000011d6: POP
000011d7: ISZERO
000011d8: SWAP1
000011d9: JUMP
000011da: JUMPDEST
000011db: PUSH1 0x01
000011dd: PUSH1 0x01
000011df: PUSH1 0xa0
000011e1: SHL
000011e2: SUB
000011e3: AND
000011e4: DUP1
000011e5: ISZERO
000011e6: PUSH2 0x0da7
000011e9: JUMPI
000011ea: PUSH0
000011eb: DUP1
000011ec: DUP1
000011ed: SWAP4
000011ee: DUP2
000011ef: SWAP4
000011f0: GAS
000011f1: CALL
000011f2: RETURNDATASIZE
000011f3: ISZERO
000011f4: PUSH2 0x123f
000011f7: JUMPI
000011f8: RETURNDATASIZE
000011f9: PUSH8 0xffffffffffffffff
00001202: DUP2
00001203: GT
00001204: PUSH2 0x1176
00001207: JUMPI
00001208: PUSH1 0x40
0000120a: MLOAD
0000120b: SWAP1
0000120c: PUSH2 0x121f
0000120f: PUSH1 0x1f
00001211: DUP3
00001212: ADD
00001213: PUSH1 0x1f
00001215: NOT
00001216: AND
00001217: PUSH1 0x20
00001219: ADD
0000121a: DUP4
0000121b: PUSH2 0x1154
0000121e: JUMP
0000121f: JUMPDEST
00001220: DUP2
00001221: MSTORE
00001222: PUSH0
00001223: PUSH1 0x20
00001225: RETURNDATASIZE
00001226: SWAP3
00001227: ADD
00001228: RETURNDATACOPY
00001229: JUMPDEST
0000122a: ISZERO
0000122b: PUSH2 0x1230
0000122e: JUMPI
0000122f: JUMP
00001230: JUMPDEST
00001231: PUSH4 0xb12d13eb
00001236: PUSH1 0xe0
00001238: SHL
00001239: PUSH0
0000123a: MSTORE
0000123b: PUSH1 0x04
0000123d: PUSH0
0000123e: REVERT
0000123f: JUMPDEST
00001240: PUSH2 0x1229
00001243: JUMP
00001244: JUMPDEST
00001245: PUSH1 0xff
00001247: PUSH1 0x01
00001249: SLOAD
0000124a: PUSH1 0xa0
0000124c: SHR
0000124d: AND
0000124e: PUSH2 0x1253
00001251: JUMPI
00001252: JUMP
00001253: JUMPDEST
00001254: PUSH4 0xd93c0665
00001259: PUSH1 0xe0
0000125b: SHL
0000125c: PUSH0
0000125d: MSTORE
0000125e: PUSH1 0x04
00001260: PUSH0
00001261: REVERT
00001262: JUMPDEST
00001263: PUSH0
00001264: SLOAD
00001265: PUSH1 0x01
00001267: PUSH1 0x01
00001269: PUSH1 0xa0
0000126b: SHL
0000126c: SUB
0000126d: AND
0000126e: CALLER
0000126f: SUB
00001270: PUSH2 0x1275
00001273: JUMPI
00001274: JUMP
00001275: JUMPDEST
00001276: PUSH4 0x118cdaa7
0000127b: PUSH1 0xe0
0000127d: SHL
0000127e: PUSH0
0000127f: MSTORE
00001280: CALLER
00001281: PUSH1 0x04
00001283: MSTORE
00001284: PUSH1 0x24
00001286: PUSH0
00001287: REVERT
00001288: JUMPDEST
00001289: PUSH2 0x1291
0000128c: DUP2
0000128d: PUSH2 0x11aa
00001290: JUMP
00001291: JUMPDEST
00001292: ISZERO
00001293: PUSH2 0x129b
00001296: JUMPI
00001297: POP
00001298: BALANCE
00001299: SWAP1
0000129a: JUMP
0000129b: JUMPDEST
0000129c: PUSH1 0x40
0000129e: MLOAD
0000129f: PUSH4 0x70a08231
000012a4: PUSH1 0xe0
000012a6: SHL
000012a7: DUP2
000012a8: MSTORE
000012a9: PUSH1 0x01
000012ab: PUSH1 0x01
000012ad: PUSH1 0xa0
000012af: SHL
000012b0: SUB
000012b1: SWAP3
000012b2: DUP4
000012b3: AND
000012b4: PUSH1 0x04
000012b6: DUP3
000012b7: ADD
000012b8: MSTORE
000012b9: SWAP2
000012ba: PUSH1 0x20
000012bc: SWAP2
000012bd: DUP4
000012be: SWAP2
000012bf: PUSH1 0x24
000012c1: SWAP2
000012c2: DUP4
000012c3: SWAP2
000012c4: AND
000012c5: GAS
000012c6: STATICCALL
000012c7: SWAP1
000012c8: DUP2
000012c9: ISZERO
000012ca: PUSH2 0x0c3d
000012cd: JUMPI
000012ce: PUSH0
000012cf: SWAP2
000012d0: PUSH2 0x12d7
000012d3: JUMPI
000012d4: POP
000012d5: SWAP1
000012d6: JUMP
000012d7: JUMPDEST
000012d8: SWAP1
000012d9: POP
000012da: PUSH1 0x20
000012dc: DUP2
000012dd: RETURNDATASIZE
000012de: PUSH1 0x20
000012e0: GT
000012e1: PUSH2 0x12fe
000012e4: JUMPI
000012e5: JUMPDEST
000012e6: DUP2
000012e7: PUSH2 0x12f2
000012ea: PUSH1 0x20
000012ec: SWAP4
000012ed: DUP4
000012ee: PUSH2 0x1154
000012f1: JUMP
000012f2: JUMPDEST
000012f3: DUP2
000012f4: ADD
000012f5: SUB
000012f6: SLT
000012f7: PUSH2 0x06a2
000012fa: JUMPI
000012fb: MLOAD
000012fc: SWAP1
000012fd: JUMP
000012fe: JUMPDEST
000012ff: RETURNDATASIZE
00001300: SWAP2
00001301: POP
00001302: PUSH2 0x12e5
00001305: JUMP
00001306: JUMPDEST
00001307: PUSH1 0x40
00001309: MLOAD
0000130a: PUSH4 0xa9059cbb
0000130f: PUSH1 0xe0
00001311: SHL
00001312: PUSH1 0x20
00001314: DUP1
00001315: DUP4
00001316: ADD
00001317: SWAP2
00001318: DUP3
00001319: MSTORE
0000131a: PUSH1 0x01
0000131c: PUSH1 0x01
0000131e: PUSH1 0xa0
00001320: SHL
00001321: SUB
00001322: SWAP5
00001323: SWAP1
00001324: SWAP5
00001325: AND
00001326: PUSH1 0x24
00001328: DUP4
00001329: ADD
0000132a: MSTORE
0000132b: PUSH1 0x44
0000132d: DUP1
0000132e: DUP4
0000132f: ADD
00001330: SWAP6
00001331: SWAP1
00001332: SWAP6
00001333: MSTORE
00001334: SWAP4
00001335: DUP2
00001336: MSTORE
00001337: SWAP1
00001338: SWAP3
00001339: PUSH0
0000133a: SWAP2
0000133b: PUSH2 0x1345
0000133e: PUSH1 0x64
00001340: DUP3
00001341: PUSH2 0x1154
00001344: JUMP
00001345: JUMPDEST
00001346: MLOAD
00001347: SWAP1
00001348: DUP3
00001349: DUP6
0000134a: GAS
0000134b: CALL
0000134c: ISZERO
0000134d: PUSH2 0x0c3d
00001350: JUMPI
00001351: PUSH0
00001352: MLOAD
00001353: RETURNDATASIZE
00001354: PUSH2 0x138c
00001357: JUMPI
00001358: POP
00001359: PUSH1 0x01
0000135b: PUSH1 0x01
0000135d: PUSH1 0xa0
0000135f: SHL
00001360: SUB
00001361: DUP2
00001362: AND
00001363: EXTCODESIZE
00001364: ISZERO
00001365: JUMPDEST
00001366: PUSH2 0x136c
00001369: JUMPI
0000136a: POP
0000136b: JUMP
0000136c: JUMPDEST
0000136d: PUSH4 0x5274afe7
00001372: PUSH1 0xe0
00001374: SHL
00001375: PUSH0
00001376: SWAP1
00001377: DUP2
00001378: MSTORE
00001379: PUSH1 0x01
0000137b: PUSH1 0x01
0000137d: PUSH1 0xa0
0000137f: SHL
00001380: SUB
00001381: SWAP2
00001382: SWAP1
00001383: SWAP2
00001384: AND
00001385: PUSH1 0x04
00001387: MSTORE
00001388: PUSH1 0x24
0000138a: SWAP1
0000138b: REVERT
0000138c: JUMPDEST
0000138d: PUSH1 0x01
0000138f: EQ
00001390: ISZERO
00001391: PUSH2 0x1365
00001394: JUMP
00001395: INVALID
00001396: LOG2
00001397: PUSH5 0x6970667358
0000139d: UNKNOWN(0x22)
0000139e: SLT
0000139f: KECCAK256
000013a0: JUMP
000013a1: GASPRICE
000013a2: BYTE
000013a3: ADDRESS
000013a4: DIV
000013a5: EXTCODECOPY
000013a6: ISZERO
000013a7: DIFFICULTY
000013a8: UNKNOWN(0x1F)
000013a9: DUP11
000013aa: DUP16
000013ab: UNKNOWN(0x4C)
000013ac: PUSH19 0x847836778f5bfbc7ded91615455a774e866417
000013c0: PUSH5 0x736f6c6343
000013c6: STOP
000013c7: ADDMOD
000013c8: SHR
000013c9: STOP
000013ca: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xb82c12b59bb3dce11e7fb718bd63c317b5af794a7a95923d8b566ac97d6bb603
call_targets: 0xad2eae16157002a97e11b4201d111e6cd4c977ca
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xb82c12b59bb3dce11e7fb718bd63c317b5af794a7a95923d8b566ac97d6bb603",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xad2eae16157002a97e11b4201d111e6cd4c977ca"
    ],
    "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": "0x06b14fb4",
            "selector": "0x06b14fb4",
            "calldata_variants": [
                "0x06b14fb4",
                "0x06b14fb40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x190dc79b",
            "selector": "0x190dc79b",
            "calldata_variants": [
                "0x190dc79b",
                "0x190dc79b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1f166440",
            "selector": "0x1f166440",
            "calldata_variants": [
                "0x1f166440",
                "0x1f1664400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x213a2ba3",
            "selector": "0x213a2ba3",
            "calldata_variants": [
                "0x213a2ba3",
                "0x213a2ba30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x298b641d",
            "selector": "0x298b641d",
            "calldata_variants": [
                "0x298b641d",
                "0x298b641d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x37016ad1",
            "selector": "0x37016ad1",
            "calldata_variants": [
                "0x37016ad1",
                "0x37016ad10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3e9714c1",
            "selector": "0x3e9714c1",
            "calldata_variants": [
                "0x3e9714c1",
                "0x3e9714c10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3f4ba83a",
            "selector": "0x3f4ba83a",
            "calldata_variants": [
                "0x3f4ba83a",
                "0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2934,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4593,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4939,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xb82c12b59bb3dce11e7fb718bd63c317b5af794a7a95923d8b566ac97d6bb603
call_targets: 0xad2eae16157002a97e11b4201d111e6cd4c977ca
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xb82c12b59bb3dce11e7fb718bd63c317b5af794a7a95923d8b566ac97d6bb603",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xad2eae16157002a97e11b4201d111e6cd4c977ca"
    ],
    "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": "0x06b14fb4",
            "selector": "0x06b14fb4",
            "calldata_variants": [
                "0x06b14fb4",
                "0x06b14fb40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x190dc79b",
            "selector": "0x190dc79b",
            "calldata_variants": [
                "0x190dc79b",
                "0x190dc79b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1f166440",
            "selector": "0x1f166440",
            "calldata_variants": [
                "0x1f166440",
                "0x1f1664400000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x213a2ba3",
            "selector": "0x213a2ba3",
            "calldata_variants": [
                "0x213a2ba3",
                "0x213a2ba30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x298b641d",
            "selector": "0x298b641d",
            "calldata_variants": [
                "0x298b641d",
                "0x298b641d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x37016ad1",
            "selector": "0x37016ad1",
            "calldata_variants": [
                "0x37016ad1",
                "0x37016ad10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3e9714c1",
            "selector": "0x3e9714c1",
            "calldata_variants": [
                "0x3e9714c1",
                "0x3e9714c10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3f4ba83a",
            "selector": "0x3f4ba83a",
            "calldata_variants": [
                "0x3f4ba83a",
                "0x3f4ba83a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2934,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4593,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4939,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}