302e36da-a349-4734-86ec-4c8186a5d24e
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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": []
}
|