957b3efc-0a4c-4bfd-acd0-fc4213acca25
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 |
|---|---|---|---|---|
| 31535 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77837 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 77838 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 77839 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 77840 | capability.graph | complete | 1 / 3 | 1 week ago |
| 77841 | detector.run | complete | 1 / 3 | 1 week ago |
| 77842 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:595555] OpenAI Codex v0.77.0 (research preview)
[codex:595555] --------
[codex:595555] workdir: /tmp/codex-multi-nqz4d5cu
[codex:595555] model: gpt-5.2-codex
[codex:595555] provider: openai
[codex:595555] approval: never
[codex:595555] sandbox: read-only
[codex:595555] reasoning effort: xhigh
[codex:595555] reasoning summaries: auto
[codex:595555] session id: 019b86ee-4557-7950-829d-f6ebfd343f40
[codex:595555] --------
[codex:595555] user
[codex:595555] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:595555]
[codex:595555] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:595555]
[codex:595555] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:595555] - Gas inefficiency, code quality, or best practices
[codex:595555] - Theoretical vulnerabilities without a clear extraction path
[codex:595555] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:595555] - Issues requiring social engineering or off-chain coordination
[codex:595555]
[codex:595555] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:595555] - CALL/DELEGATECALL with controllable destination or calldata
[codex:595555] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:595555] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:595555] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:595555] - External calls before state updates (reentrancy)
[codex:595555] - SELFDESTRUCT with controllable beneficiary
[codex:595555] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:595555]
[codex:595555] For each finding, you MUST explain:
[codex:595555] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:595555] 2. The concrete sequence of transactions to extract value
[codex:595555] 3. Why you believe this is exploitable (not just suspicious)
[codex:595555]
[codex:595555] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:595555] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:595555]
[codex:595555] Output MUST be valid JSON matching the provided schema.
[codex:595555] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:595555] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:595555] mcp startup: no servers
[codex:595555]
[codex:595555] thinking
[codex:595555] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:595555] exec
[codex:595555] /bin/bash -lc ls in /tmp/codex-multi-nqz4d5cu succeeded in 5ms:
[codex:595555] BYTECODE_BUNDLE.txt
[codex:595555] codex-output-schema.json
[codex:595555] exec
[codex:595555] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-nqz4d5cu succeeded in 5ms:
[codex:595555] Runtime bytecode bundle for best-effort auditing.
[codex:595555] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:595555]
[codex:595555] FILE: runtime_bytecode.hex
[codex:595555] 0x6080604052600436106100a05760003560e01c80638b4c40b0116100645780638b4c40b0146101a45780638f601f66146101ac57806391c49bf8146101d95780639a2ac6d5146101ee578063a9f9e67514610201578063b1a1a88214610221576100f4565b80631532ec34146100f95780633cb747bf14610119578063485cc9551461014457806358a997f614610164578063838b252014610184576100f4565b366100f4576100ae33610234565b156100d45760405162461bcd60e51b81526004016100cb9061137d565b60405180910390fd5b6100f233336213d6206040518060200160405280600081525061023e565b005b600080fd5b34801561010557600080fd5b506100f261011436600461108b565b61030b565b34801561012557600080fd5b5061012e61050e565b60405161013b9190611297565b60405180910390f35b34801561015057600080fd5b506100f261015f366004610f5c565b61051d565b34801561017057600080fd5b506100f261017f3660046110f8565b610574565b34801561019057600080fd5b506100f261019f36600461101c565b6105b2565b6100f26105cb565b3480156101b857600080fd5b506101cc6101c7366004610f5c565b6105cd565b60405161013b9190611440565b3480156101e557600080fd5b5061012e6105ea565b6100f26101fc366004611175565b6105f9565b34801561020d57600080fd5b506100f261021c366004610f8e565b610641565b6100f261022f3660046111d4565b61082b565b803b15155b919050565b600063662a633a60e01b60006006602160991b018787348760405160240161026b969594939291906112ab565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526001549091506102b7906001600160a01b03168483610898565b836001600160a01b0316856001600160a01b03167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f2334856040516102fc92919061146c565b60405180910390a35050505050565b6001546001600160a01b031661031f61097a565b6001600160a01b0316336001600160a01b03161461036e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611532602e913960400191505060405180910390fd5b806001600160a01b031661038061097a565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b857600080fd5b505afa1580156103cc573d6000803e3d6000fd5b505050506040513d60208110156103e257600080fd5b50516001600160a01b0316146104295760405162461bcd60e51b81526004018080602001828103825260308152602001806114b26030913960400191505060405180910390fd5b604080516000808252602082019092526001600160a01b038716908690604051610453919061127b565b60006040518083038185875af1925050503d8060008114610490576040519150601f19603f3d011682016040523d82523d6000602084013e610495565b606091505b50509050806104b65760405162461bcd60e51b81526004016100cb906113a6565b856001600160a01b0316876001600160a01b03167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e6318787876040516104fd93929190611449565b60405180910390a350505050505050565b6000546001600160a01b031681565b6000546001600160a01b0316156105465760405162461bcd60e51b81526004016100cb906113fa565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055565b61057d33610234565b1561059a5760405162461bcd60e51b81526004016100cb9061137d565b6105aa8686333388888888610989565b505050505050565b6105c28787338888888888610989565b50505050505050565b565b600260209081526000928352604080842090915290825290205481565b6001546001600160a01b031681565b61063b33858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061023e92505050565b50505050565b6001546001600160a01b031661065561097a565b6001600160a01b0316336001600160a01b0316146106a45760405162461bcd60e51b815260040180806020018281038252602e815260200180611532602e913960400191505060405180910390fd5b806001600160a01b03166106b661097a565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ee57600080fd5b505afa158015610702573d6000803e3d6000fd5b505050506040513d602081101561071857600080fd5b50516001600160a01b03161461075f5760405162461bcd60e51b81526004018080602001828103825260308152602001806114b26030913960400191505060405180910390fd5b6001600160a01b038089166000908152600260209081526040808320938b168352929052205461078f9085610ab9565b6001600160a01b03808a166000818152600260209081526040808320948d16835293905291909120919091556107c6908686610b16565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610819949392919061134b565b60405180910390a45050505050505050565b61083433610234565b156108515760405162461bcd60e51b81526004016100cb9061137d565b61089333338585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061023e92505050565b505050565b6108a061097a565b6001600160a01b0316633dbb202b8483856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018363ffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610918578181015183820152602001610900565b50505050905090810190601f1680156109455780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561096657600080fd5b505af11580156105c2573d6000803e3d6000fd5b6000546001600160a01b031690565b61099e6001600160a01b038916873087610b68565b600063662a633a60e01b898989898988886040516024016109c597969594939291906112fa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152600154909150610a11906001600160a01b03168583610898565b6001600160a01b03808a166000908152600260209081526040808320938c1683529290522054610a419086610bc2565b6001600160a01b03808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610aa6908b908b908a908a9061134b565b60405180910390a4505050505050505050565b600082821115610b10576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610893908490610c23565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261063b908590610c23565b600082820183811015610c1c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000610c78826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610cd49092919063ffffffff16565b80519091501561089357808060200190516020811015610c9757600080fd5b50516108935760405162461bcd60e51b815260040180806020018281038252602a815260200180611508602a913960400191505060405180910390fd5b6060610ce38484600085610ceb565b949350505050565b606082471015610d2c5760405162461bcd60e51b81526004018080602001828103825260268152602001806114e26026913960400191505060405180910390fd5b610d3585610234565b610d86576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310610dc45780518252601f199092019160209182019101610da5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610e26576040519150601f19603f3d011682016040523d82523d6000602084013e610e2b565b606091505b5091509150610e3b828286610e46565b979650505050505050565b60608315610e55575081610c1c565b825115610e655782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610eaf578181015183820152602001610e97565b50505050905090810190601f168015610edc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356001600160a01b038116811461023957600080fd5b60008083601f840112610f12578182fd5b50813567ffffffffffffffff811115610f29578182fd5b602083019150836020828501011115610f4157600080fd5b9250929050565b803563ffffffff8116811461023957600080fd5b60008060408385031215610f6e578182fd5b610f7783610eea565b9150610f8560208401610eea565b90509250929050565b600080600080600080600060c0888a031215610fa8578283fd5b610fb188610eea565b9650610fbf60208901610eea565b9550610fcd60408901610eea565b9450610fdb60608901610eea565b93506080880135925060a088013567ffffffffffffffff811115610ffd578283fd5b6110098a828b01610f01565b989b979a50959850939692959293505050565b600080600080600080600060c0888a031215611036578283fd5b61103f88610eea565b965061104d60208901610eea565b955061105b60408901610eea565b94506060880135935061107060808901610f48565b925060a088013567ffffffffffffffff811115610ffd578283fd5b6000806000806000608086880312156110a2578081fd5b6110ab86610eea565b94506110b960208701610eea565b935060408601359250606086013567ffffffffffffffff8111156110db578182fd5b6110e788828901610f01565b969995985093965092949392505050565b60008060008060008060a08789031215611110578182fd5b61111987610eea565b955061112760208801610eea565b94506040870135935061113c60608801610f48565b9250608087013567ffffffffffffffff811115611157578283fd5b61116389828a01610f01565b979a9699509497509295939492505050565b6000806000806060858703121561118a578384fd5b61119385610eea565b93506111a160208601610f48565b9250604085013567ffffffffffffffff8111156111bc578283fd5b6111c887828801610f01565b95989497509550505050565b6000806000604084860312156111e8578283fd5b6111f184610f48565b9250602084013567ffffffffffffffff81111561120c578283fd5b61121886828701610f01565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452611267816020860160208601611485565b601f01601f19169290920160200192915050565b6000825161128d818460208701611485565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03878116825286811660208301528581166040830152841660608201526080810183905260c060a082018190526000906112ee9083018461124f565b98975050505050505050565b6001600160a01b03888116825287811660208301528681166040830152851660608201526080810184905260c060a0820181905260009061133e9083018486611225565b9998505050505050505050565b600060018060a01b038616825284602083015260606040830152611373606083018486611225565b9695505050505050565b6020808252600f908201526e4163636f756e74206e6f7420454f4160881b604082015260600190565b60208082526034908201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60408201527308115512081d1c985b9cd9995c8819985a5b195960621b606082015260800190565b60208082526026908201527f436f6e74726163742068617320616c7265616479206265656e20696e697469616040820152653634bd32b21760d11b606082015260800190565b90815260200190565b600084825260406020830152611463604083018486611225565b95945050505050565b600083825260406020830152610ce3604083018461124f565b60005b838110156114a0578181015183820152602001611488565b8381111561063b575050600091015256fe4e564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f6d61696e206d657373616765416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644e564d5f58434841494e3a206d657373656e67657220636f6e747261637420756e61757468656e74696361746564a164736f6c6343000706000a
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing bytecode for exploit potential**
[codex:595555]
[codex:595555] I'm examining the contract's bytecode and function selectors to spot any vulnerabilities, especially around unauthorized cross-domain messaging and unprotected initializers. I plan to decode selectors and storage slots to uncover any exploit paths, and I'll use Python scripts to assist with parsing since I can run code but not write files.
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] import re
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] # print first bytes
[codex:595555] print('len', len(code)//2)
[codex:595555] # find function selectors in dispatcher? We'll parse occurrences of 63???????? and then 14?? etc? We'll just list unique 4-byte selectors from initial dispatcher region.
[codex:595555] # Basic parsing of first 200 bytes.
[codex:595555] from binascii import unhexlify
[codex:595555] b=unhexlify(code)
[codex:595555] # scan for PUSH4 instructions (0x63)
[codex:595555] selectors=[]
[codex:595555] for i in range(len(b)-4):
[codex:595555] if b[i]==0x63:
[codex:595555] sel=b[i+1:i+5].hex()
[codex:595555] selectors.append(sel)
[codex:595555] # show first 20 unique
[codex:595555] seen=[]
[codex:595555] for s in selectors:
[codex:595555] if s not in seen:
[codex:595555] seen.append(s)
[codex:595555] print('push4 count', len(selectors),'unique',len(seen))
[codex:595555] print('unique selectors', seen[:20])
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] len 5484
[codex:595555] push4 count 48 unique 37
[codex:595555] unique selectors ['8b4c40b0', '8f601f66', '91c49bf8', '9a2ac6d5', 'a9f9e675', 'b1a1a882', '1532ec34', '3cb747bf', '485cc955', '58a997f6', '838b2520', '662a633a', '3a60e01b', '6e296e45', 'ffffffff', '3dbb202b', 'e0cc6d0e', '74696f6e', 'a9059cbb', '23b872dd']
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing bytecode for exploit paths**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] ops={'CALL':0xf1,'DELEGATECALL':0xf4,'STATICCALL':0xfa,'SELFDESTRUCT':0xff}
[codex:595555] for name,op in ops.items():
[codex:595555] idx=[i for i,byte in enumerate(b) if byte==op]
[codex:595555] print(name, len(idx), idx[:10])
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 18ms:
[codex:595555] CALL 4 [1120, 2409, 3574, 4587]
[codex:595555] DELEGATECALL 4 [98, 158, 164, 744]
[codex:595555] STATICCALL 4 [955, 1348, 1777, 2499]
[codex:595555] SELFDESTRUCT 80 [916, 917, 918, 919, 1738, 1739, 1740, 1741, 2231, 2232]
[codex:595555]
[codex:595555] thinking
[codex:595555] **Planning EVM opcode parsing**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # simple disassemble
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] # Add DUP, SWAP
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] # basic names
[codex:595555] basic={
[codex:595555] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:595555] }
[codex:595555] for k,v in basic.items():
[codex:595555] opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] # find CALL/DELEGATECALL/STATICCALL/SELFDESTRUCT positions
[codex:595555] for target in ['CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT']:
[codex:595555] positions=[pos for pos,name,_ in ops if name==target]
[codex:595555] print(target, positions)
[codex:595555]
[codex:595555] # also list SSTORE positions around storage slots small? Look for SSTORE preceded by PUSH1/PUSH2 with small value? We'll just print context for each SSTORE.
[codex:595555] print('SSTORE count', sum(1 for _,n,_ in ops if n=='SSTORE'))
[codex:595555] # print context around SSTORE for manual analyze
[codex:595555] for idx,(pos,name,data) in enumerate(ops):
[codex:595555] if name=='SSTORE':
[codex:595555] # show last 5 ops before
[codex:595555] context=ops[max(0,idx-5):idx+1]
[codex:595555] print('SSTORE at',pos, 'context:', [(n,(d.hex() if d else None)) for _,n,d in context])
[codex:595555]
[codex:595555] # Print CALL contexts
[codex:595555] for idx,(pos,name,data) in enumerate(ops):
[codex:595555] if name in ('CALL','DELEGATECALL','STATICCALL'):
[codex:595555] context=ops[max(0,idx-7):idx+1]
[codex:595555] print('\\n',name,'at',pos, 'context:')
[codex:595555] for p,n,d in context:
[codex:595555] print(p, n, d.hex() if d else '')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] CALL [1120, 2409, 3574]
[codex:595555] DELEGATECALL []
[codex:595555] STATICCALL [955, 1777]
[codex:595555] SELFDESTRUCT []
[codex:595555] SSTORE count 4
[codex:595555] SSTORE at 1381 context: [('DUP3', None), ('AND', None), ('OR', None), ('SWAP1', None), ('SWAP2', None), ('SSTORE', None)]
[codex:595555] SSTORE at 1394 context: [('AND', None), ('SWAP2', None), ('AND', None), ('OR', None), ('SWAP1', None), ('SSTORE', None)]
[codex:595555] SSTORE at 1979 context: [('SWAP2', None), ('SHA3', None), ('SWAP2', None), ('SWAP1', None), ('SWAP2', None), ('SSTORE', None)]
[codex:595555] SSTORE at 2669 context: [('SWAP1', None), ('SHA3', None), ('SWAP5', None), ('SWAP1', None), ('SWAP5', None), ('SSTORE', None)]
[codex:595555]
[codex:595555] STATICCALL at 955 context:
[codex:595555] 947 JUMPI
[codex:595555] 948 PUSH1 00
[codex:595555] 950 DUP1
[codex:595555] 951 REVERT
[codex:595555] 952 JUMPDEST
[codex:595555] 953 POP
[codex:595555] 954 GAS
[codex:595555] 955 STATICCALL
[codex:595555]
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing CALL instructions context**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] # index map from position to op index
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] def dump_context(target, span=20):
[codex:595555] for pos,name,_ in ops:
[codex:595555] if name==target:
[codex:595555] idx=pos_to_idx[pos]
[codex:595555] start=max(0,idx-span)
[codex:595555] end=min(len(ops), idx+1)
[codex:595555] print('\\n==',target,'at',pos,'==')
[codex:595555] for p,n,d in ops[start:end]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555]
[codex:595555] dump_context('CALL', span=35)
[codex:595555] dump_context('STATICCALL', span=35)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 28ms:
[codex:595555]
[codex:595555] == CALL at 1120 ==
[codex:595555] 0432 MSTORE
[codex:595555] 0433 PUSH1 0x20
[codex:595555] 0435 DUP3
[codex:595555] 0436 ADD
[codex:595555] 0437 SWAP1
[codex:595555] 0438 SWAP3
[codex:595555] 0439 MSTORE
[codex:595555] 043a PUSH1 0x01
[codex:595555] 043c PUSH1 0x01
[codex:595555] 043e PUSH1 0xa0
[codex:595555] 0440 SHL
[codex:595555] 0441 SUB
[codex:595555] 0442 DUP8
[codex:595555] 0443 AND
[codex:595555] 0444 SWAP1
[codex:595555] 0445 DUP7
[codex:595555] 0446 SWAP1
[codex:595555] 0447 PUSH1 0x40
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing function selectors and CALL usage**
[codex:595555]
[codex:595555] I'm piecing together the contract’s functions by mapping selectors to jump destinations and inspecting their code blocks to identify ETH-transferring CALLs and potential missing access controls on withdraw functions. I plan to script a disassembly parser to break down each function's instructions and look for security checks or dangerous CALL patterns. This approach should help reveal if there’s an exploit path involving unauthorized ETH or token withdrawals.
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] # Known function entry points from dispatcher (found by scanning for JUMPDESTs after selector dispatch)
[codex:595555] entry_points=[0x0f9,0x119,0x144,0x164,0x184,0x1a4,0x1ac,0x1d9,0x1ee,0x201,0x221]
[codex:595555]
[codex:595555] # function to dump up to first STOP/RETURN/REVERT/JUMPDEST? We'll limit length.
[codex:595555] terminals={'STOP','RETURN','REVERT','INVALID','SELFDESTRUCT'}
[codex:595555]
[codex:595555] def dump_from(addr, max_ops=80):
[codex:595555] idx=pos_to_idx.get(addr)
[codex:595555] if idx is None:
[codex:595555] print('addr',hex(addr),'not found')
[codex:595555] return
[codex:595555] print('\\n== Function @',hex(addr),'==')
[codex:595555] count=0
[codex:595555] for p,n,d in ops[idx:]:
[codex:595555] if count>=max_ops: break
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] count+=1
[codex:595555] if n in terminals:
[codex:595555] break
[codex:595555]
[codex:595555] for ep in entry_points:
[codex:595555] dump_from(ep, max_ops=80)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 24ms:
[codex:595555]
[codex:595555] == Function @ 0xf9 ==
[codex:595555] 00f9 JUMPDEST
[codex:595555] 00fa CALLVALUE
[codex:595555] 00fb DUP1
[codex:595555] 00fc ISZERO
[codex:595555] 00fd PUSH2 0x0105
[codex:595555] 0100 JUMPI
[codex:595555] 0101 PUSH1 0x00
[codex:595555] 0103 DUP1
[codex:595555] 0104 REVERT
[codex:595555]
[codex:595555] == Function @ 0x119 ==
[codex:595555] 0119 JUMPDEST
[codex:595555] 011a CALLVALUE
[codex:595555] 011b DUP1
[codex:595555] 011c ISZERO
[codex:595555] 011d PUSH2 0x0125
[codex:595555] 0120 JUMPI
[codex:595555] 0121 PUSH1 0x00
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing function entry points and control flow**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm function
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] def dump(addr, max_ops=120):
[codex:595555] idx=pos_to_idx.get(addr)
[codex:595555] print('\\n-- dump',hex(addr),'--')
[codex:595555] for p,n,d in ops[idx:idx+max_ops]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555]
[codex:595555] for addr in [0x00f9,0x0119,0x0144,0x0164,0x0184,0x01a4,0x01ac,0x01d9,0x01ee,0x0201,0x0221]:
[codex:595555] dump(addr, max_ops=100)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 22ms:
[codex:595555]
[codex:595555] -- dump 0xf9 --
[codex:595555] 00f9 JUMPDEST
[codex:595555] 00fa CALLVALUE
[codex:595555] 00fb DUP1
[codex:595555] 00fc ISZERO
[codex:595555] 00fd PUSH2 0x0105
[codex:595555] 0100 JUMPI
[codex:595555] 0101 PUSH1 0x00
[codex:595555] 0103 DUP1
[codex:595555] 0104 REVERT
[codex:595555] 0105 JUMPDEST
[codex:595555] 0106 POP
[codex:595555] 0107 PUSH2 0x00f2
[codex:595555] 010a PUSH2 0x0114
[codex:595555] 010d CALLDATASIZE
[codex:595555] 010e PUSH1 0x04
[codex:595555] 0110 PUSH2 0x108b
[codex:595555] 0113 JUMP
[codex:595555] 0114 JUMPDEST
[codex:595555]
[codex:595555] thinking
[codex:595555] **Identifying and dumping internal functions**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm setup
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555]
[codex:595555] def dump(addr, max_ops=120):
[codex:595555] idx=pos_to_idx.get(addr)
[codex:595555] if idx is None:
[codex:595555] print('addr',hex(addr),'not found')
[codex:595555] return
[codex:595555] print('\\n-- dump',hex(addr),'--')
[codex:595555] for p,n,d in ops[idx:idx+max_ops]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555]
[codex:595555] for addr in [0x030b,0x050e,0x051d,0x0574,0x05b2,0x05cb,0x05cd,0x05ea,0x05f9,0x0641,0x082b,0x0898,0x0989,0x0ab9,0x0b16,0x0b68,0x0bc2,0x0c23,0x0ce3,0x0e46]:
[codex:595555] dump(addr, max_ops=80)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555]
[codex:595555] -- dump 0x30b --
[codex:595555] 030b JUMPDEST
[codex:595555] 030c PUSH1 0x01
[codex:595555] 030e SLOAD
[codex:595555] 030f PUSH1 0x01
[codex:595555] 0311 PUSH1 0x01
[codex:595555] 0313 PUSH1 0xa0
[codex:595555] 0315 SHL
[codex:595555] 0316 SUB
[codex:595555] 0317 AND
[codex:595555] 0318 PUSH2 0x031f
[codex:595555] 031b PUSH2 0x097a
[codex:595555] 031e JUMP
[codex:595555] 031f JUMPDEST
[codex:595555] 0320 PUSH1 0x01
[codex:595555] 0322 PUSH1 0x01
[codex:595555] 0324 PUSH1 0xa0
[codex:595555] 0326 SHL
[codex:595555] 0327 SUB
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing storage slots and access control**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] def dump(addr, max_ops=120):
[codex:595555] idx=pos_to_idx.get(addr)
[codex:595555] if idx is None:
[codex:595555] print('addr',hex(addr),'not found')
[codex:595555] return
[codex:595555] print('\\n-- dump',hex(addr),'--')
[codex:595555] for p,n,d in ops[idx:idx+max_ops]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555]
[codex:595555] for addr in [0x097a]:
[codex:595555] dump(addr, max_ops=80)
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 24ms:
[codex:595555]
[codex:595555] -- dump 0x97a --
[codex:595555] 097a JUMPDEST
[codex:595555] 097b PUSH1 0x00
[codex:595555] 097d SLOAD
[codex:595555] 097e PUSH1 0x01
[codex:595555] 0980 PUSH1 0x01
[codex:595555] 0982 PUSH1 0xa0
[codex:595555] 0984 SHL
[codex:595555] 0985 SUB
[codex:595555] 0986 AND
[codex:595555] 0987 SWAP1
[codex:595555] 0988 JUMP
[codex:595555] 0989 JUMPDEST
[codex:595555] 098a PUSH2 0x099e
[codex:595555] 098d PUSH1 0x01
[codex:595555] 098f PUSH1 0x01
[codex:595555] 0991 PUSH1 0xa0
[codex:595555] 0993 SHL
[codex:595555] 0994 SUB
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing internal function calls and storage slots**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] addr=0x030b
[codex:595555] idx=pos_to_idx[addr]
[codex:595555] for p,n,d in ops[idx:idx+200]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 24ms:
[codex:595555] 030b JUMPDEST
[codex:595555] 030c PUSH1 0x01
[codex:595555] 030e SLOAD
[codex:595555] 030f PUSH1 0x01
[codex:595555] 0311 PUSH1 0x01
[codex:595555] 0313 PUSH1 0xa0
[codex:595555] 0315 SHL
[codex:595555] 0316 SUB
[codex:595555] 0317 AND
[codex:595555] 0318 PUSH2 0x031f
[codex:595555] 031b PUSH2 0x097a
[codex:595555] 031e JUMP
[codex:595555] 031f JUMPDEST
[codex:595555] 0320 PUSH1 0x01
[codex:595555] 0322 PUSH1 0x01
[codex:595555] 0324 PUSH1 0xa0
[codex:595555] 0326 SHL
[codex:595555] 0327 SUB
[codex:595555] 0328 AND
[codex:595555] 0329 CALLER
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing access control and cross-domain calls**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] # find instructions from 0x0420 onwards for 120 ops
[codex:595555] start=0x0420
[codex:595555] # locate index
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+160]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 23ms:
[codex:595555] 0420 POP
[codex:595555] 0421 PUSH1 0x40
[codex:595555] 0423 MLOAD
[codex:595555] 0424 DUP1
[codex:595555] 0425 SWAP2
[codex:595555] 0426 SUB
[codex:595555] 0427 SWAP1
[codex:595555] 0428 REVERT
[codex:595555] 0429 JUMPDEST
[codex:595555] 042a PUSH1 0x40
[codex:595555] 042c DUP1
[codex:595555] 042d MLOAD
[codex:595555] 042e PUSH1 0x00
[codex:595555] 0430 DUP1
[codex:595555] 0431 DUP3
[codex:595555] 0432 MSTORE
[codex:595555] 0433 PUSH1 0x20
[codex:595555] 0435 DUP3
[codex:595555] 0436 ADD
[codex:595555] 0437 SWAP1
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing token and ETH transfer functions for vulnerabilities**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',
[codex:595555] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555]
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op, f'UNKNOWN_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555]
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] start=0x0641
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+260]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 21ms:
[codex:595555] 0641 JUMPDEST
[codex:595555] 0642 PUSH1 0x01
[codex:595555] 0644 SLOAD
[codex:595555] 0645 PUSH1 0x01
[codex:595555] 0647 PUSH1 0x01
[codex:595555] 0649 PUSH1 0xa0
[codex:595555] 064b SHL
[codex:595555] 064c SUB
[codex:595555] 064d AND
[codex:595555] 064e PUSH2 0x0655
[codex:595555] 0651 PUSH2 0x097a
[codex:595555] 0654 JUMP
[codex:595555] 0655 JUMPDEST
[codex:595555] 0656 PUSH1 0x01
[codex:595555] 0658 PUSH1 0x01
[codex:595555] 065a PUSH1 0xa0
[codex:595555] 065c SHL
[codex:595555] 065d SUB
[codex:595555] 065e AND
[codex:595555] 065f CALLER
[codex:595555]
[codex:595555] thinking
[codex:595555] **Examining EVM bytecode after 0x07a7**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op,f'UNK_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555] start=0x0780
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+220]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 26ms:
[codex:595555] 0780 MSTORE
[codex:595555] 0781 SWAP3
[codex:595555] 0782 SWAP1
[codex:595555] 0783 MSTORE
[codex:595555] 0784 SHA3
[codex:595555] 0785 SLOAD
[codex:595555] 0786 PUSH2 0x078f
[codex:595555] 0789 SWAP1
[codex:595555] 078a DUP6
[codex:595555] 078b PUSH2 0x0ab9
[codex:595555] 078e JUMP
[codex:595555] 078f JUMPDEST
[codex:595555] 0790 PUSH1 0x01
[codex:595555] 0792 PUSH1 0x01
[codex:595555] 0794 PUSH1 0xa0
[codex:595555] 0796 SHL
[codex:595555] 0797 SUB
[codex:595555] 0798 DUP1
[codex:595555] 0799 DUP11
[codex:595555] 079a AND
[codex:595555]
[codex:595555]
[codex:595555] thinking
[codex:595555] **Analyzing cross-domain function security and initialization**
[codex:595555] thinking
[codex:595555] **Evaluating storage integrity and external call safety**
[codex:595555]
[codex:595555] I'm verifying that slot0 holds a valid messenger address after initialization, preventing re-initialization exploits, and checking that no functions allow ETH transfers or delegatecalls without proper access control. I'm carefully inspecting external calls to ensure none allow unauthorized token or ETH transfers.
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]
[codex:595555] name=opnames.get(op,f'UNK_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f
[codex:595555] data=b[i+1:i+1+n]
[codex:595555] ops.append((i,name,data))
[codex:595555] i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None))
[codex:595555] i+=1
[codex:595555] pos_to_idx={pos:idx for idx,(pos,_,_) in enumerate(ops)}
[codex:595555]
[codex:595555] # dump around 0x0d80 and 0x0df0
[codex:595555] for start in [0x0d60,0x0de0]:
[codex:595555] print('\\n-- around',hex(start),'--')
[codex:595555] idx=pos_to_idx[start]
[codex:595555] for p,n,d in ops[idx:idx+160]:
[codex:595555] if d is None:
[codex:595555] print(f'{p:04x} {n}')
[codex:595555] else:
[codex:595555] print(f'{p:04x} {n} 0x{d.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu exited 1 in 33ms:
[codex:595555]
[codex:595555] -- around 0xd60 --
[codex:595555] Traceback (most recent call last):
[codex:595555] File "<stdin>", line 35, in <module>
[codex:595555] KeyError: 3424
[codex:595555]
[codex:595555] thinking
[codex:595555] **Adjusting instruction offset search**
[codex:595555] exec
[codex:595555] /bin/bash -lc "python - <<'PY'
[codex:595555] from binascii import unhexlify
[codex:595555] code=open('/tmp/codex-multi-nqz4d5cu/BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex\\n')[1].strip()
[codex:595555] code=code[2:] if code.startswith('0x') else code
[codex:595555] b=unhexlify(code)
[codex:595555] # disasm
[codex:595555] opnames={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:595555] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:595555] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:595555] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:595555] basic={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:595555] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:595555] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:595555] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:595555] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:595555] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:595555] for k,v in basic.items(): opnames.setdefault(k,v)
[codex:595555] ops=[]
[codex:595555] i=0
[codex:595555] while i < len(b):
[codex:595555] op=b[i]; name=opnames.get(op,f'UNK_{op:02x}')
[codex:595555] if 0x60 <= op <= 0x7f:
[codex:595555] n=op-0x5f; data=b[i+1:i+1+n]; ops.append((i,name,data)); i+=1+n
[codex:595555] else:
[codex:595555] ops.append((i,name,None)); i+=1
[codex:595555]
[codex:595555] # find ops positions around 0xd50
[codex:595555] for pos,name,data in ops:
[codex:595555] if 0xd40 <= pos <= 0xe20:
[codex:595555] if data is None:
[codex:595555] print(f'{pos:04x} {name}')
[codex:595555] else:
[codex:595555] print(f'{pos:04x} {name} 0x{data.hex()}')
[codex:595555] PY" in /tmp/codex-multi-nqz4d5cu succeeded in 22ms:
[codex:595555] 0d42 PUSH1 0xe5
[codex:595555] 0d44 SHL
[codex:595555] 0d45 DUP2
[codex:595555] 0d46 MSTORE
[codex:595555] 0d47 PUSH1 0x20
[codex:595555] 0d49 PUSH1 0x04
[codex:595555] 0d4b DUP3
[codex:595555] 0d4c ADD
[codex:595555] 0d4d MSTORE
[codex:595555] 0d4e PUSH1 0x1d
[codex:595555] 0d50 PUSH1 0x24
[codex:595555] 0d52 DUP3
[codex:595555] 0d53 ADD
[codex:595555] 0d54 MSTORE
[codex:595555] 0d55 PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
[codex:595555] 0d76 PUSH1 0x44
[codex:595555] 0d78 DUP3
[codex:595555] 0d79 ADD
[codex:595555] 0d7a MSTORE
[codex:595555] 0d7b SWAP1
[codex:595555]
[codex:595555] thinking
[codex:595555] **Confirming no exploit paths**
[codex:595555] codex
[codex:595555] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.","findings":[]}
[codex:595555] tokens used
[codex:595555] 114,964
[codex:595555] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T03:02:55.923533+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path is visible in the provided bytecode; ETH/token transfer paths are gated by messenger/xDomain checks and no unprotected delegatecall/selfdestruct or unrestricted value transfer patterns are observed.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00a0 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8b4c40b0 00000019: GT 0000001a: PUSH2 0x0064 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x8b4c40b0 00000024: EQ 00000025: PUSH2 0x01a4 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0x8f601f66 0000002f: EQ 00000030: PUSH2 0x01ac 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0x91c49bf8 0000003a: EQ 0000003b: PUSH2 0x01d9 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0x9a2ac6d5 00000045: EQ 00000046: PUSH2 0x01ee 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xa9f9e675 00000050: EQ 00000051: PUSH2 0x0201 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xb1a1a882 0000005b: EQ 0000005c: PUSH2 0x0221 0000005f: JUMPI 00000060: PUSH2 0x00f4 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x1532ec34 0000006b: EQ 0000006c: PUSH2 0x00f9 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x3cb747bf 00000076: EQ 00000077: PUSH2 0x0119 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x485cc955 00000081: EQ 00000082: PUSH2 0x0144 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x58a997f6 0000008c: EQ 0000008d: PUSH2 0x0164 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0x838b2520 00000097: EQ 00000098: PUSH2 0x0184 0000009b: JUMPI 0000009c: PUSH2 0x00f4 0000009f: JUMP 000000a0: JUMPDEST 000000a1: CALLDATASIZE 000000a2: PUSH2 0x00f4 000000a5: JUMPI 000000a6: PUSH2 0x00ae 000000a9: CALLER 000000aa: PUSH2 0x0234 000000ad: JUMP 000000ae: JUMPDEST 000000af: ISZERO 000000b0: PUSH2 0x00d4 000000b3: JUMPI 000000b4: PUSH1 0x40 000000b6: MLOAD 000000b7: PUSH3 0x461bcd 000000bb: PUSH1 0xe5 000000bd: SHL 000000be: DUP2 000000bf: MSTORE 000000c0: PUSH1 0x04 000000c2: ADD 000000c3: PUSH2 0x00cb 000000c6: SWAP1 000000c7: PUSH2 0x137d 000000ca: JUMP 000000cb: JUMPDEST 000000cc: PUSH1 0x40 000000ce: MLOAD 000000cf: DUP1 000000d0: SWAP2 000000d1: SUB 000000d2: SWAP1 000000d3: REVERT 000000d4: JUMPDEST 000000d5: PUSH2 0x00f2 000000d8: CALLER 000000d9: CALLER 000000da: PUSH3 0x13d620 000000de: PUSH1 0x40 000000e0: MLOAD 000000e1: DUP1 000000e2: PUSH1 0x20 000000e4: ADD 000000e5: PUSH1 0x40 000000e7: MSTORE 000000e8: DUP1 000000e9: PUSH1 0x00 000000eb: DUP2 000000ec: MSTORE 000000ed: POP 000000ee: PUSH2 0x023e 000000f1: JUMP 000000f2: JUMPDEST 000000f3: STOP 000000f4: JUMPDEST 000000f5: PUSH1 0x00 000000f7: DUP1 000000f8: REVERT 000000f9: JUMPDEST 000000fa: CALLVALUE 000000fb: DUP1 000000fc: ISZERO 000000fd: PUSH2 0x0105 00000100: JUMPI 00000101: PUSH1 0x00 00000103: DUP1 00000104: REVERT 00000105: JUMPDEST 00000106: POP 00000107: PUSH2 0x00f2 0000010a: PUSH2 0x0114 0000010d: CALLDATASIZE 0000010e: PUSH1 0x04 00000110: PUSH2 0x108b 00000113: JUMP 00000114: JUMPDEST 00000115: PUSH2 0x030b 00000118: JUMP 00000119: JUMPDEST 0000011a: CALLVALUE 0000011b: DUP1 0000011c: ISZERO 0000011d: PUSH2 0x0125 00000120: JUMPI 00000121: PUSH1 0x00 00000123: DUP1 00000124: REVERT 00000125: JUMPDEST 00000126: POP 00000127: PUSH2 0x012e 0000012a: PUSH2 0x050e 0000012d: JUMP 0000012e: JUMPDEST 0000012f: PUSH1 0x40 00000131: MLOAD 00000132: PUSH2 0x013b 00000135: SWAP2 00000136: SWAP1 00000137: PUSH2 0x1297 0000013a: JUMP 0000013b: JUMPDEST 0000013c: PUSH1 0x40 0000013e: MLOAD 0000013f: DUP1 00000140: SWAP2 00000141: SUB 00000142: SWAP1 00000143: RETURN 00000144: JUMPDEST 00000145: CALLVALUE 00000146: DUP1 00000147: ISZERO 00000148: PUSH2 0x0150 0000014b: JUMPI 0000014c: PUSH1 0x00 0000014e: DUP1 0000014f: REVERT 00000150: JUMPDEST 00000151: POP 00000152: PUSH2 0x00f2 00000155: PUSH2 0x015f 00000158: CALLDATASIZE 00000159: PUSH1 0x04 0000015b: PUSH2 0x0f5c 0000015e: JUMP 0000015f: JUMPDEST 00000160: PUSH2 0x051d 00000163: JUMP 00000164: JUMPDEST 00000165: CALLVALUE 00000166: DUP1 00000167: ISZERO 00000168: PUSH2 0x0170 0000016b: JUMPI 0000016c: PUSH1 0x00 0000016e: DUP1 0000016f: REVERT 00000170: JUMPDEST 00000171: POP 00000172: PUSH2 0x00f2 00000175: PUSH2 0x017f 00000178: CALLDATASIZE 00000179: PUSH1 0x04 0000017b: PUSH2 0x10f8 0000017e: JUMP 0000017f: JUMPDEST 00000180: PUSH2 0x0574 00000183: JUMP 00000184: JUMPDEST 00000185: CALLVALUE 00000186: DUP1 00000187: ISZERO 00000188: PUSH2 0x0190 0000018b: JUMPI 0000018c: PUSH1 0x00 0000018e: DUP1 0000018f: REVERT 00000190: JUMPDEST 00000191: POP 00000192: PUSH2 0x00f2 00000195: PUSH2 0x019f 00000198: CALLDATASIZE 00000199: PUSH1 0x04 0000019b: PUSH2 0x101c 0000019e: JUMP 0000019f: JUMPDEST 000001a0: PUSH2 0x05b2 000001a3: JUMP 000001a4: JUMPDEST 000001a5: PUSH2 0x00f2 000001a8: PUSH2 0x05cb 000001ab: JUMP 000001ac: JUMPDEST 000001ad: CALLVALUE 000001ae: DUP1 000001af: ISZERO 000001b0: PUSH2 0x01b8 000001b3: JUMPI 000001b4: PUSH1 0x00 000001b6: DUP1 000001b7: REVERT 000001b8: JUMPDEST 000001b9: POP 000001ba: PUSH2 0x01cc 000001bd: PUSH2 0x01c7 000001c0: CALLDATASIZE 000001c1: PUSH1 0x04 000001c3: PUSH2 0x0f5c 000001c6: JUMP 000001c7: JUMPDEST 000001c8: PUSH2 0x05cd 000001cb: JUMP 000001cc: JUMPDEST 000001cd: PUSH1 0x40 000001cf: MLOAD 000001d0: PUSH2 0x013b 000001d3: SWAP2 000001d4: SWAP1 000001d5: PUSH2 0x1440 000001d8: JUMP 000001d9: JUMPDEST 000001da: CALLVALUE 000001db: DUP1 000001dc: ISZERO 000001dd: PUSH2 0x01e5 000001e0: JUMPI 000001e1: PUSH1 0x00 000001e3: DUP1 000001e4: REVERT 000001e5: JUMPDEST 000001e6: POP 000001e7: PUSH2 0x012e 000001ea: PUSH2 0x05ea 000001ed: JUMP 000001ee: JUMPDEST 000001ef: PUSH2 0x00f2 000001f2: PUSH2 0x01fc 000001f5: CALLDATASIZE 000001f6: PUSH1 0x04 000001f8: PUSH2 0x1175 000001fb: JUMP 000001fc: JUMPDEST 000001fd: PUSH2 0x05f9 00000200: JUMP 00000201: JUMPDEST 00000202: CALLVALUE 00000203: DUP1 00000204: ISZERO 00000205: PUSH2 0x020d 00000208: JUMPI 00000209: PUSH1 0x00 0000020b: DUP1 0000020c: REVERT 0000020d: JUMPDEST 0000020e: POP 0000020f: PUSH2 0x00f2 00000212: PUSH2 0x021c 00000215: CALLDATASIZE 00000216: PUSH1 0x04 00000218: PUSH2 0x0f8e 0000021b: JUMP 0000021c: JUMPDEST 0000021d: PUSH2 0x0641 00000220: JUMP 00000221: JUMPDEST 00000222: PUSH2 0x00f2 00000225: PUSH2 0x022f 00000228: CALLDATASIZE 00000229: PUSH1 0x04 0000022b: PUSH2 0x11d4 0000022e: JUMP 0000022f: JUMPDEST 00000230: PUSH2 0x082b 00000233: JUMP 00000234: JUMPDEST 00000235: DUP1 00000236: EXTCODESIZE 00000237: ISZERO 00000238: ISZERO 00000239: JUMPDEST 0000023a: SWAP2 0000023b: SWAP1 0000023c: POP 0000023d: JUMP 0000023e: JUMPDEST 0000023f: PUSH1 0x00 00000241: PUSH4 0x662a633a 00000246: PUSH1 0xe0 00000248: SHL 00000249: PUSH1 0x00 0000024b: PUSH1 0x06 0000024d: PUSH1 0x21 0000024f: PUSH1 0x99 00000251: SHL 00000252: ADD 00000253: DUP8 00000254: DUP8 00000255: CALLVALUE 00000256: DUP8 00000257: PUSH1 0x40 00000259: MLOAD 0000025a: PUSH1 0x24 0000025c: ADD 0000025d: PUSH2 0x026b 00000260: SWAP7 00000261: SWAP6 00000262: SWAP5 00000263: SWAP4 00000264: SWAP3 00000265: SWAP2 00000266: SWAP1 00000267: PUSH2 0x12ab 0000026a: JUMP 0000026b: JUMPDEST 0000026c: PUSH1 0x40 0000026e: DUP1 0000026f: MLOAD 00000270: PUSH1 0x1f 00000272: NOT 00000273: DUP2 00000274: DUP5 00000275: SUB 00000276: ADD 00000277: DUP2 00000278: MSTORE 00000279: SWAP2 0000027a: SWAP1 0000027b: MSTORE 0000027c: PUSH1 0x20 0000027e: DUP2 0000027f: ADD 00000280: DUP1 00000281: MLOAD 00000282: PUSH1 0x01 00000284: PUSH1 0x01 00000286: PUSH1 0xe0 00000288: SHL 00000289: SUB 0000028a: AND 0000028b: PUSH1 0x01 0000028d: PUSH1 0x01 0000028f: PUSH1 0xe0 00000291: SHL 00000292: SUB 00000293: NOT 00000294: SWAP1 00000295: SWAP4 00000296: AND 00000297: SWAP3 00000298: SWAP1 00000299: SWAP3 0000029a: OR 0000029b: SWAP1 0000029c: SWAP2 0000029d: MSTORE 0000029e: PUSH1 0x01 000002a0: SLOAD 000002a1: SWAP1 000002a2: SWAP2 000002a3: POP 000002a4: PUSH2 0x02b7 000002a7: SWAP1 000002a8: PUSH1 0x01 000002aa: PUSH1 0x01 000002ac: PUSH1 0xa0 000002ae: SHL 000002af: SUB 000002b0: AND 000002b1: DUP5 000002b2: DUP4 000002b3: PUSH2 0x0898 000002b6: JUMP 000002b7: JUMPDEST 000002b8: DUP4 000002b9: PUSH1 0x01 000002bb: PUSH1 0x01 000002bd: PUSH1 0xa0 000002bf: SHL 000002c0: SUB 000002c1: AND 000002c2: DUP6 000002c3: PUSH1 0x01 000002c5: PUSH1 0x01 000002c7: PUSH1 0xa0 000002c9: SHL 000002ca: SUB 000002cb: AND 000002cc: PUSH32 0x35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23 000002ed: CALLVALUE 000002ee: DUP6 000002ef: PUSH1 0x40 000002f1: MLOAD 000002f2: PUSH2 0x02fc 000002f5: SWAP3 000002f6: SWAP2 000002f7: SWAP1 000002f8: PUSH2 0x146c 000002fb: JUMP 000002fc: JUMPDEST 000002fd: PUSH1 0x40 000002ff: MLOAD 00000300: DUP1 00000301: SWAP2 00000302: SUB 00000303: SWAP1 00000304: LOG3 00000305: POP 00000306: POP 00000307: POP 00000308: POP 00000309: POP 0000030a: JUMP 0000030b: JUMPDEST 0000030c: PUSH1 0x01 0000030e: SLOAD 0000030f: PUSH1 0x01 00000311: PUSH1 0x01 00000313: PUSH1 0xa0 00000315: SHL 00000316: SUB 00000317: AND 00000318: PUSH2 0x031f 0000031b: PUSH2 0x097a 0000031e: JUMP 0000031f: JUMPDEST 00000320: PUSH1 0x01 00000322: PUSH1 0x01 00000324: PUSH1 0xa0 00000326: SHL 00000327: SUB 00000328: AND 00000329: CALLER 0000032a: PUSH1 0x01 0000032c: PUSH1 0x01 0000032e: PUSH1 0xa0 00000330: SHL 00000331: SUB 00000332: AND 00000333: EQ 00000334: PUSH2 0x036e 00000337: JUMPI 00000338: PUSH1 0x40 0000033a: MLOAD 0000033b: PUSH3 0x461bcd 0000033f: PUSH1 0xe5 00000341: SHL 00000342: DUP2 00000343: MSTORE 00000344: PUSH1 0x04 00000346: ADD 00000347: DUP1 00000348: DUP1 00000349: PUSH1 0x20 0000034b: ADD 0000034c: DUP3 0000034d: DUP2 0000034e: SUB 0000034f: DUP3 00000350: MSTORE 00000351: PUSH1 0x2e 00000353: DUP2 00000354: MSTORE 00000355: PUSH1 0x20 00000357: ADD 00000358: DUP1 00000359: PUSH2 0x1532 0000035c: PUSH1 0x2e 0000035e: SWAP2 0000035f: CODECOPY 00000360: PUSH1 0x40 00000362: ADD 00000363: SWAP2 00000364: POP 00000365: POP 00000366: PUSH1 0x40 00000368: MLOAD 00000369: DUP1 0000036a: SWAP2 0000036b: SUB 0000036c: SWAP1 0000036d: REVERT 0000036e: JUMPDEST 0000036f: DUP1 00000370: PUSH1 0x01 00000372: PUSH1 0x01 00000374: PUSH1 0xa0 00000376: SHL 00000377: SUB 00000378: AND 00000379: PUSH2 0x0380 0000037c: PUSH2 0x097a 0000037f: JUMP 00000380: JUMPDEST 00000381: PUSH1 0x01 00000383: PUSH1 0x01 00000385: PUSH1 0xa0 00000387: SHL 00000388: SUB 00000389: AND 0000038a: PUSH4 0x6e296e45 0000038f: PUSH1 0x40 00000391: MLOAD 00000392: DUP2 00000393: PUSH4 0xffffffff 00000398: AND 00000399: PUSH1 0xe0 0000039b: SHL 0000039c: DUP2 0000039d: MSTORE 0000039e: PUSH1 0x04 000003a0: ADD 000003a1: PUSH1 0x20 000003a3: PUSH1 0x40 000003a5: MLOAD 000003a6: DUP1 000003a7: DUP4 000003a8: SUB 000003a9: DUP2 000003aa: DUP7 000003ab: DUP1 000003ac: EXTCODESIZE 000003ad: ISZERO 000003ae: DUP1 000003af: ISZERO 000003b0: PUSH2 0x03b8 000003b3: JUMPI 000003b4: PUSH1 0x00 000003b6: DUP1 000003b7: REVERT 000003b8: JUMPDEST 000003b9: POP 000003ba: GAS 000003bb: STATICCALL 000003bc: ISZERO 000003bd: DUP1 000003be: ISZERO 000003bf: PUSH2 0x03cc 000003c2: JUMPI 000003c3: RETURNDATASIZE 000003c4: PUSH1 0x00 000003c6: DUP1 000003c7: RETURNDATACOPY 000003c8: RETURNDATASIZE 000003c9: PUSH1 0x00 000003cb: REVERT 000003cc: JUMPDEST 000003cd: POP 000003ce: POP 000003cf: POP 000003d0: POP 000003d1: PUSH1 0x40 000003d3: MLOAD 000003d4: RETURNDATASIZE 000003d5: PUSH1 0x20 000003d7: DUP2 000003d8: LT 000003d9: ISZERO 000003da: PUSH2 0x03e2 000003dd: JUMPI 000003de: PUSH1 0x00 000003e0: DUP1 000003e1: REVERT 000003e2: JUMPDEST 000003e3: POP 000003e4: MLOAD 000003e5: PUSH1 0x01 000003e7: PUSH1 0x01 000003e9: PUSH1 0xa0 000003eb: SHL 000003ec: SUB 000003ed: AND 000003ee: EQ 000003ef: PUSH2 0x0429 000003f2: JUMPI 000003f3: PUSH1 0x40 000003f5: MLOAD 000003f6: PUSH3 0x461bcd 000003fa: PUSH1 0xe5 000003fc: SHL 000003fd: DUP2 000003fe: MSTORE 000003ff: PUSH1 0x04 00000401: ADD 00000402: DUP1 00000403: DUP1 00000404: PUSH1 0x20 00000406: ADD 00000407: DUP3 00000408: DUP2 00000409: SUB 0000040a: DUP3 0000040b: MSTORE 0000040c: PUSH1 0x30 0000040e: DUP2 0000040f: MSTORE 00000410: PUSH1 0x20 00000412: ADD 00000413: DUP1 00000414: PUSH2 0x14b2 00000417: PUSH1 0x30 00000419: SWAP2 0000041a: CODECOPY 0000041b: PUSH1 0x40 0000041d: ADD 0000041e: SWAP2 0000041f: POP 00000420: POP 00000421: PUSH1 0x40 00000423: MLOAD 00000424: DUP1 00000425: SWAP2 00000426: SUB 00000427: SWAP1 00000428: REVERT 00000429: JUMPDEST 0000042a: PUSH1 0x40 0000042c: DUP1 0000042d: MLOAD 0000042e: PUSH1 0x00 00000430: DUP1 00000431: DUP3 00000432: MSTORE 00000433: PUSH1 0x20 00000435: DUP3 00000436: ADD 00000437: SWAP1 00000438: SWAP3 00000439: MSTORE 0000043a: PUSH1 0x01 0000043c: PUSH1 0x01 0000043e: PUSH1 0xa0 00000440: SHL 00000441: SUB 00000442: DUP8 00000443: AND 00000444: SWAP1 00000445: DUP7 00000446: SWAP1 00000447: PUSH1 0x40 00000449: MLOAD 0000044a: PUSH2 0x0453 0000044d: SWAP2 0000044e: SWAP1 0000044f: PUSH2 0x127b 00000452: JUMP 00000453: JUMPDEST 00000454: PUSH1 0x00 00000456: PUSH1 0x40 00000458: MLOAD 00000459: DUP1 0000045a: DUP4 0000045b: SUB 0000045c: DUP2 0000045d: DUP6 0000045e: DUP8 0000045f: GAS 00000460: CALL 00000461: SWAP3 00000462: POP 00000463: POP 00000464: POP 00000465: RETURNDATASIZE 00000466: DUP1 00000467: PUSH1 0x00 00000469: DUP2 0000046a: EQ 0000046b: PUSH2 0x0490 0000046e: JUMPI 0000046f: PUSH1 0x40 00000471: MLOAD 00000472: SWAP2 00000473: POP 00000474: PUSH1 0x1f 00000476: NOT 00000477: PUSH1 0x3f 00000479: RETURNDATASIZE 0000047a: ADD 0000047b: AND 0000047c: DUP3 0000047d: ADD 0000047e: PUSH1 0x40 00000480: MSTORE 00000481: RETURNDATASIZE 00000482: DUP3 00000483: MSTORE 00000484: RETURNDATASIZE 00000485: PUSH1 0x00 00000487: PUSH1 0x20 00000489: DUP5 0000048a: ADD 0000048b: RETURNDATACOPY 0000048c: PUSH2 0x0495 0000048f: JUMP 00000490: JUMPDEST 00000491: PUSH1 0x60 00000493: SWAP2 00000494: POP 00000495: JUMPDEST 00000496: POP 00000497: POP 00000498: SWAP1 00000499: POP 0000049a: DUP1 0000049b: PUSH2 0x04b6 0000049e: JUMPI 0000049f: PUSH1 0x40 000004a1: MLOAD 000004a2: PUSH3 0x461bcd 000004a6: PUSH1 0xe5 000004a8: SHL 000004a9: DUP2 000004aa: MSTORE 000004ab: PUSH1 0x04 000004ad: ADD 000004ae: PUSH2 0x00cb 000004b1: SWAP1 000004b2: PUSH2 0x13a6 000004b5: JUMP 000004b6: JUMPDEST 000004b7: DUP6 000004b8: PUSH1 0x01 000004ba: PUSH1 0x01 000004bc: PUSH1 0xa0 000004be: SHL 000004bf: SUB 000004c0: AND 000004c1: DUP8 000004c2: PUSH1 0x01 000004c4: PUSH1 0x01 000004c6: PUSH1 0xa0 000004c8: SHL 000004c9: SUB 000004ca: AND 000004cb: PUSH32 0x2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e631 000004ec: DUP8 000004ed: DUP8 000004ee: DUP8 000004ef: PUSH1 0x40 000004f1: MLOAD 000004f2: PUSH2 0x04fd 000004f5: SWAP4 000004f6: SWAP3 000004f7: SWAP2 000004f8: SWAP1 000004f9: PUSH2 0x1449 000004fc: JUMP 000004fd: JUMPDEST 000004fe: PUSH1 0x40 00000500: MLOAD 00000501: DUP1 00000502: SWAP2 00000503: SUB 00000504: SWAP1 00000505: LOG3 00000506: POP 00000507: POP 00000508: POP 00000509: POP 0000050a: POP 0000050b: POP 0000050c: POP 0000050d: JUMP 0000050e: JUMPDEST 0000050f: PUSH1 0x00 00000511: SLOAD 00000512: PUSH1 0x01 00000514: PUSH1 0x01 00000516: PUSH1 0xa0 00000518: SHL 00000519: SUB 0000051a: AND 0000051b: DUP2 0000051c: JUMP 0000051d: JUMPDEST 0000051e: PUSH1 0x00 00000520: SLOAD 00000521: PUSH1 0x01 00000523: PUSH1 0x01 00000525: PUSH1 0xa0 00000527: SHL 00000528: SUB 00000529: AND 0000052a: ISZERO 0000052b: PUSH2 0x0546 0000052e: JUMPI 0000052f: PUSH1 0x40 00000531: MLOAD 00000532: PUSH3 0x461bcd 00000536: PUSH1 0xe5 00000538: SHL 00000539: DUP2 0000053a: MSTORE 0000053b: PUSH1 0x04 0000053d: ADD 0000053e: PUSH2 0x00cb 00000541: SWAP1 00000542: PUSH2 0x13fa 00000545: JUMP 00000546: JUMPDEST 00000547: PUSH1 0x00 00000549: DUP1 0000054a: SLOAD 0000054b: PUSH1 0x01 0000054d: PUSH1 0x01 0000054f: PUSH1 0xa0 00000551: SHL 00000552: SUB 00000553: SWAP4 00000554: DUP5 00000555: AND 00000556: PUSH1 0x01 00000558: PUSH1 0x01 0000055a: PUSH1 0xa0 0000055c: SHL 0000055d: SUB 0000055e: NOT 0000055f: SWAP2 00000560: DUP3 00000561: AND 00000562: OR 00000563: SWAP1 00000564: SWAP2 00000565: SSTORE 00000566: PUSH1 0x01 00000568: DUP1 00000569: SLOAD 0000056a: SWAP3 0000056b: SWAP1 0000056c: SWAP4 0000056d: AND 0000056e: SWAP2 0000056f: AND 00000570: OR 00000571: SWAP1 00000572: SSTORE 00000573: JUMP 00000574: JUMPDEST 00000575: PUSH2 0x057d 00000578: CALLER 00000579: PUSH2 0x0234 0000057c: JUMP 0000057d: JUMPDEST 0000057e: ISZERO 0000057f: PUSH2 0x059a 00000582: JUMPI 00000583: PUSH1 0x40 00000585: MLOAD 00000586: PUSH3 0x461bcd 0000058a: PUSH1 0xe5 0000058c: SHL 0000058d: DUP2 0000058e: MSTORE 0000058f: PUSH1 0x04 00000591: ADD 00000592: PUSH2 0x00cb 00000595: SWAP1 00000596: PUSH2 0x137d 00000599: JUMP 0000059a: JUMPDEST 0000059b: PUSH2 0x05aa 0000059e: DUP7 0000059f: DUP7 000005a0: CALLER 000005a1: CALLER 000005a2: DUP9 000005a3: DUP9 000005a4: DUP9 000005a5: DUP9 000005a6: PUSH2 0x0989 000005a9: JUMP 000005aa: JUMPDEST 000005ab: POP 000005ac: POP 000005ad: POP 000005ae: POP 000005af: POP 000005b0: POP 000005b1: JUMP 000005b2: JUMPDEST 000005b3: PUSH2 0x05c2 000005b6: DUP8 000005b7: DUP8 000005b8: CALLER 000005b9: DUP9 000005ba: DUP9 000005bb: DUP9 000005bc: DUP9 000005bd: DUP9 000005be: PUSH2 0x0989 000005c1: JUMP 000005c2: JUMPDEST 000005c3: POP 000005c4: POP 000005c5: POP 000005c6: POP 000005c7: POP 000005c8: POP 000005c9: POP 000005ca: JUMP 000005cb: JUMPDEST 000005cc: JUMP 000005cd: JUMPDEST 000005ce: PUSH1 0x02 000005d0: PUSH1 0x20 000005d2: SWAP1 000005d3: DUP2 000005d4: MSTORE 000005d5: PUSH1 0x00 000005d7: SWAP3 000005d8: DUP4 000005d9: MSTORE 000005da: PUSH1 0x40 000005dc: DUP1 000005dd: DUP5 000005de: KECCAK256 000005df: SWAP1 000005e0: SWAP2 000005e1: MSTORE 000005e2: SWAP1 000005e3: DUP3 000005e4: MSTORE 000005e5: SWAP1 000005e6: KECCAK256 000005e7: SLOAD 000005e8: DUP2 000005e9: JUMP 000005ea: JUMPDEST 000005eb: PUSH1 0x01 000005ed: SLOAD 000005ee: PUSH1 0x01 000005f0: PUSH1 0x01 000005f2: PUSH1 0xa0 000005f4: SHL 000005f5: SUB 000005f6: AND 000005f7: DUP2 000005f8: JUMP 000005f9: JUMPDEST 000005fa: PUSH2 0x063b 000005fd: CALLER 000005fe: DUP6 000005ff: DUP6 00000600: DUP6 00000601: DUP6 00000602: DUP1 00000603: DUP1 00000604: PUSH1 0x1f 00000606: ADD 00000607: PUSH1 0x20 00000609: DUP1 0000060a: SWAP2 0000060b: DIV 0000060c: MUL 0000060d: PUSH1 0x20 0000060f: ADD 00000610: PUSH1 0x40 00000612: MLOAD 00000613: SWAP1 00000614: DUP2 00000615: ADD 00000616: PUSH1 0x40 00000618: MSTORE 00000619: DUP1 0000061a: SWAP4 0000061b: SWAP3 0000061c: SWAP2 0000061d: SWAP1 0000061e: DUP2 0000061f: DUP2 00000620: MSTORE 00000621: PUSH1 0x20 00000623: ADD 00000624: DUP4 00000625: DUP4 00000626: DUP1 00000627: DUP3 00000628: DUP5 00000629: CALLDATACOPY 0000062a: PUSH1 0x00 0000062c: SWAP3 0000062d: ADD 0000062e: SWAP2 0000062f: SWAP1 00000630: SWAP2 00000631: MSTORE 00000632: POP 00000633: PUSH2 0x023e 00000636: SWAP3 00000637: POP 00000638: POP 00000639: POP 0000063a: JUMP 0000063b: JUMPDEST 0000063c: POP 0000063d: POP 0000063e: POP 0000063f: POP 00000640: JUMP 00000641: JUMPDEST 00000642: PUSH1 0x01 00000644: SLOAD 00000645: PUSH1 0x01 00000647: PUSH1 0x01 00000649: PUSH1 0xa0 0000064b: SHL 0000064c: SUB 0000064d: AND 0000064e: PUSH2 0x0655 00000651: PUSH2 0x097a 00000654: JUMP 00000655: JUMPDEST 00000656: PUSH1 0x01 00000658: PUSH1 0x01 0000065a: PUSH1 0xa0 0000065c: SHL 0000065d: SUB 0000065e: AND 0000065f: CALLER 00000660: PUSH1 0x01 00000662: PUSH1 0x01 00000664: PUSH1 0xa0 00000666: SHL 00000667: SUB 00000668: AND 00000669: EQ 0000066a: PUSH2 0x06a4 0000066d: JUMPI 0000066e: PUSH1 0x40 00000670: MLOAD 00000671: PUSH3 0x461bcd 00000675: PUSH1 0xe5 00000677: SHL 00000678: DUP2 00000679: MSTORE 0000067a: PUSH1 0x04 0000067c: ADD 0000067d: DUP1 0000067e: DUP1 0000067f: PUSH1 0x20 00000681: ADD 00000682: DUP3 00000683: DUP2 00000684: SUB 00000685: DUP3 00000686: MSTORE 00000687: PUSH1 0x2e 00000689: DUP2 0000068a: MSTORE 0000068b: PUSH1 0x20 0000068d: ADD 0000068e: DUP1 0000068f: PUSH2 0x1532 00000692: PUSH1 0x2e 00000694: SWAP2 00000695: CODECOPY 00000696: PUSH1 0x40 00000698: ADD 00000699: SWAP2 0000069a: POP 0000069b: POP 0000069c: PUSH1 0x40 0000069e: MLOAD 0000069f: DUP1 000006a0: SWAP2 000006a1: SUB 000006a2: SWAP1 000006a3: REVERT 000006a4: JUMPDEST 000006a5: DUP1 000006a6: PUSH1 0x01 000006a8: PUSH1 0x01 000006aa: PUSH1 0xa0 000006ac: SHL 000006ad: SUB 000006ae: AND 000006af: PUSH2 0x06b6 000006b2: PUSH2 0x097a 000006b5: JUMP 000006b6: JUMPDEST 000006b7: PUSH1 0x01 000006b9: PUSH1 0x01 000006bb: PUSH1 0xa0 000006bd: SHL 000006be: SUB 000006bf: AND 000006c0: PUSH4 0x6e296e45 000006c5: PUSH1 0x40 000006c7: MLOAD 000006c8: DUP2 000006c9: PUSH4 0xffffffff 000006ce: AND 000006cf: PUSH1 0xe0 000006d1: SHL 000006d2: DUP2 000006d3: MSTORE 000006d4: PUSH1 0x04 000006d6: ADD 000006d7: PUSH1 0x20 000006d9: PUSH1 0x40 000006db: MLOAD 000006dc: DUP1 000006dd: DUP4 000006de: SUB 000006df: DUP2 000006e0: DUP7 000006e1: DUP1 000006e2: EXTCODESIZE 000006e3: ISZERO 000006e4: DUP1 000006e5: ISZERO 000006e6: PUSH2 0x06ee 000006e9: JUMPI 000006ea: PUSH1 0x00 000006ec: DUP1 000006ed: REVERT 000006ee: JUMPDEST 000006ef: POP 000006f0: GAS 000006f1: STATICCALL 000006f2: ISZERO 000006f3: DUP1 000006f4: ISZERO 000006f5: PUSH2 0x0702 000006f8: JUMPI 000006f9: RETURNDATASIZE 000006fa: PUSH1 0x00 000006fc: DUP1 000006fd: RETURNDATACOPY 000006fe: RETURNDATASIZE 000006ff: PUSH1 0x00 00000701: REVERT 00000702: JUMPDEST 00000703: POP 00000704: POP 00000705: POP 00000706: POP 00000707: PUSH1 0x40 00000709: MLOAD 0000070a: RETURNDATASIZE 0000070b: PUSH1 0x20 0000070d: DUP2 0000070e: LT 0000070f: ISZERO 00000710: PUSH2 0x0718 00000713: JUMPI 00000714: PUSH1 0x00 00000716: DUP1 00000717: REVERT 00000718: JUMPDEST 00000719: POP 0000071a: MLOAD 0000071b: PUSH1 0x01 0000071d: PUSH1 0x01 0000071f: PUSH1 0xa0 00000721: SHL 00000722: SUB 00000723: AND 00000724: EQ 00000725: PUSH2 0x075f 00000728: JUMPI 00000729: PUSH1 0x40 0000072b: MLOAD 0000072c: PUSH3 0x461bcd 00000730: PUSH1 0xe5 00000732: SHL 00000733: DUP2 00000734: MSTORE 00000735: PUSH1 0x04 00000737: ADD 00000738: DUP1 00000739: DUP1 0000073a: PUSH1 0x20 0000073c: ADD 0000073d: DUP3 0000073e: DUP2 0000073f: SUB 00000740: DUP3 00000741: MSTORE 00000742: PUSH1 0x30 00000744: DUP2 00000745: MSTORE 00000746: PUSH1 0x20 00000748: ADD 00000749: DUP1 0000074a: PUSH2 0x14b2 0000074d: PUSH1 0x30 0000074f: SWAP2 00000750: CODECOPY 00000751: PUSH1 0x40 00000753: ADD 00000754: SWAP2 00000755: POP 00000756: POP 00000757: PUSH1 0x40 00000759: MLOAD 0000075a: DUP1 0000075b: SWAP2 0000075c: SUB 0000075d: SWAP1 0000075e: REVERT 0000075f: JUMPDEST 00000760: PUSH1 0x01 00000762: PUSH1 0x01 00000764: PUSH1 0xa0 00000766: SHL 00000767: SUB 00000768: DUP1 00000769: DUP10 0000076a: AND 0000076b: PUSH1 0x00 0000076d: SWAP1 0000076e: DUP2 0000076f: MSTORE 00000770: PUSH1 0x02 00000772: PUSH1 0x20 00000774: SWAP1 00000775: DUP2 00000776: MSTORE 00000777: PUSH1 0x40 00000779: DUP1 0000077a: DUP4 0000077b: KECCAK256 0000077c: SWAP4 0000077d: DUP12 0000077e: AND 0000077f: DUP4 00000780: MSTORE 00000781: SWAP3 00000782: SWAP1 00000783: MSTORE 00000784: KECCAK256 00000785: SLOAD 00000786: PUSH2 0x078f 00000789: SWAP1 0000078a: DUP6 0000078b: PUSH2 0x0ab9 0000078e: JUMP 0000078f: JUMPDEST 00000790: PUSH1 0x01 00000792: PUSH1 0x01 00000794: PUSH1 0xa0 00000796: SHL 00000797: SUB 00000798: DUP1 00000799: DUP11 0000079a: AND 0000079b: PUSH1 0x00 0000079d: DUP2 0000079e: DUP2 0000079f: MSTORE 000007a0: PUSH1 0x02 000007a2: PUSH1 0x20 000007a4: SWAP1 000007a5: DUP2 000007a6: MSTORE 000007a7: PUSH1 0x40 000007a9: DUP1 000007aa: DUP4 000007ab: KECCAK256 000007ac: SWAP5 000007ad: DUP14 000007ae: AND 000007af: DUP4 000007b0: MSTORE 000007b1: SWAP4 000007b2: SWAP1 000007b3: MSTORE 000007b4: SWAP2 000007b5: SWAP1 000007b6: SWAP2 000007b7: KECCAK256 000007b8: SWAP2 000007b9: SWAP1 000007ba: SWAP2 000007bb: SSTORE 000007bc: PUSH2 0x07c6 000007bf: SWAP1 000007c0: DUP7 000007c1: DUP7 000007c2: PUSH2 0x0b16 000007c5: JUMP 000007c6: JUMPDEST 000007c7: DUP6 000007c8: PUSH1 0x01 000007ca: PUSH1 0x01 000007cc: PUSH1 0xa0 000007ce: SHL 000007cf: SUB 000007d0: AND 000007d1: DUP8 000007d2: PUSH1 0x01 000007d4: PUSH1 0x01 000007d6: PUSH1 0xa0 000007d8: SHL 000007d9: SUB 000007da: AND 000007db: DUP10 000007dc: PUSH1 0x01 000007de: PUSH1 0x01 000007e0: PUSH1 0xa0 000007e2: SHL 000007e3: SUB 000007e4: AND 000007e5: PUSH32 0x3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3 00000806: DUP9 00000807: DUP9 00000808: DUP9 00000809: DUP9 0000080a: PUSH1 0x40 0000080c: MLOAD 0000080d: PUSH2 0x0819 00000810: SWAP5 00000811: SWAP4 00000812: SWAP3 00000813: SWAP2 00000814: SWAP1 00000815: PUSH2 0x134b 00000818: JUMP 00000819: JUMPDEST 0000081a: PUSH1 0x40 0000081c: MLOAD 0000081d: DUP1 0000081e: SWAP2 0000081f: SUB 00000820: SWAP1 00000821: LOG4 00000822: POP 00000823: POP 00000824: POP 00000825: POP 00000826: POP 00000827: POP 00000828: POP 00000829: POP 0000082a: JUMP 0000082b: JUMPDEST 0000082c: PUSH2 0x0834 0000082f: CALLER 00000830: PUSH2 0x0234 00000833: JUMP 00000834: JUMPDEST 00000835: ISZERO 00000836: PUSH2 0x0851 00000839: JUMPI 0000083a: PUSH1 0x40 0000083c: MLOAD 0000083d: PUSH3 0x461bcd 00000841: PUSH1 0xe5 00000843: SHL 00000844: DUP2 00000845: MSTORE 00000846: PUSH1 0x04 00000848: ADD 00000849: PUSH2 0x00cb 0000084c: SWAP1 0000084d: PUSH2 0x137d 00000850: JUMP 00000851: JUMPDEST 00000852: PUSH2 0x0893 00000855: CALLER 00000856: CALLER 00000857: DUP6 00000858: DUP6 00000859: DUP6 0000085a: DUP1 0000085b: DUP1 0000085c: PUSH1 0x1f 0000085e: ADD 0000085f: PUSH1 0x20 00000861: DUP1 00000862: SWAP2 00000863: DIV 00000864: MUL 00000865: PUSH1 0x20 00000867: ADD 00000868: PUSH1 0x40 0000086a: MLOAD 0000086b: SWAP1 0000086c: DUP2 0000086d: ADD 0000086e: PUSH1 0x40 00000870: MSTORE 00000871: DUP1 00000872: SWAP4 00000873: SWAP3 00000874: SWAP2 00000875: SWAP1 00000876: DUP2 00000877: DUP2 00000878: MSTORE 00000879: PUSH1 0x20 0000087b: ADD 0000087c: DUP4 0000087d: DUP4 0000087e: DUP1 0000087f: DUP3 00000880: DUP5 00000881: CALLDATACOPY 00000882: PUSH1 0x00 00000884: SWAP3 00000885: ADD 00000886: SWAP2 00000887: SWAP1 00000888: SWAP2 00000889: MSTORE 0000088a: POP 0000088b: PUSH2 0x023e 0000088e: SWAP3 0000088f: POP 00000890: POP 00000891: POP 00000892: JUMP 00000893: JUMPDEST 00000894: POP 00000895: POP 00000896: POP 00000897: JUMP 00000898: JUMPDEST 00000899: PUSH2 0x08a0 0000089c: PUSH2 0x097a 0000089f: JUMP 000008a0: JUMPDEST 000008a1: PUSH1 0x01 000008a3: PUSH1 0x01 000008a5: PUSH1 0xa0 000008a7: SHL 000008a8: SUB 000008a9: AND 000008aa: PUSH4 0x3dbb202b 000008af: DUP5 000008b0: DUP4 000008b1: DUP6 000008b2: PUSH1 0x40 000008b4: MLOAD 000008b5: DUP5 000008b6: PUSH4 0xffffffff 000008bb: AND 000008bc: PUSH1 0xe0 000008be: SHL 000008bf: DUP2 000008c0: MSTORE 000008c1: PUSH1 0x04 000008c3: ADD 000008c4: DUP1 000008c5: DUP5 000008c6: PUSH1 0x01 000008c8: PUSH1 0x01 000008ca: PUSH1 0xa0 000008cc: SHL 000008cd: SUB 000008ce: AND 000008cf: DUP2 000008d0: MSTORE 000008d1: PUSH1 0x20 000008d3: ADD 000008d4: DUP1 000008d5: PUSH1 0x20 000008d7: ADD 000008d8: DUP4 000008d9: PUSH4 0xffffffff 000008de: AND 000008df: DUP2 000008e0: MSTORE 000008e1: PUSH1 0x20 000008e3: ADD 000008e4: DUP3 000008e5: DUP2 000008e6: SUB 000008e7: DUP3 000008e8: MSTORE 000008e9: DUP5 000008ea: DUP2 000008eb: DUP2 000008ec: MLOAD 000008ed: DUP2 000008ee: MSTORE 000008ef: PUSH1 0x20 000008f1: ADD 000008f2: SWAP2 000008f3: POP 000008f4: DUP1 000008f5: MLOAD 000008f6: SWAP1 000008f7: PUSH1 0x20 000008f9: ADD 000008fa: SWAP1 000008fb: DUP1 000008fc: DUP4 000008fd: DUP4 000008fe: PUSH1 0x00 00000900: JUMPDEST 00000901: DUP4 00000902: DUP2 00000903: LT 00000904: ISZERO 00000905: PUSH2 0x0918 00000908: JUMPI 00000909: DUP2 0000090a: DUP2 0000090b: ADD 0000090c: MLOAD 0000090d: DUP4 0000090e: DUP3 0000090f: ADD 00000910: MSTORE 00000911: PUSH1 0x20 00000913: ADD 00000914: PUSH2 0x0900 00000917: JUMP 00000918: JUMPDEST 00000919: POP 0000091a: POP 0000091b: POP 0000091c: POP 0000091d: SWAP1 0000091e: POP 0000091f: SWAP1 00000920: DUP2 00000921: ADD 00000922: SWAP1 00000923: PUSH1 0x1f 00000925: AND 00000926: DUP1 00000927: ISZERO 00000928: PUSH2 0x0945 0000092b: JUMPI 0000092c: DUP1 0000092d: DUP3 0000092e: SUB 0000092f: DUP1 00000930: MLOAD 00000931: PUSH1 0x01 00000933: DUP4 00000934: PUSH1 0x20 00000936: SUB 00000937: PUSH2 0x0100 0000093a: EXP 0000093b: SUB 0000093c: NOT 0000093d: AND 0000093e: DUP2 0000093f: MSTORE 00000940: PUSH1 0x20 00000942: ADD 00000943: SWAP2 00000944: POP 00000945: JUMPDEST 00000946: POP 00000947: SWAP5 00000948: POP 00000949: POP 0000094a: POP 0000094b: POP 0000094c: POP 0000094d: PUSH1 0x00 0000094f: PUSH1 0x40 00000951: MLOAD 00000952: DUP1 00000953: DUP4 00000954: SUB 00000955: DUP2 00000956: PUSH1 0x00 00000958: DUP8 00000959: DUP1 0000095a: EXTCODESIZE 0000095b: ISZERO 0000095c: DUP1 0000095d: ISZERO 0000095e: PUSH2 0x0966 00000961: JUMPI 00000962: PUSH1 0x00 00000964: DUP1 00000965: REVERT 00000966: JUMPDEST 00000967: POP 00000968: GAS 00000969: CALL 0000096a: ISZERO 0000096b: DUP1 0000096c: ISZERO 0000096d: PUSH2 0x05c2 00000970: JUMPI 00000971: RETURNDATASIZE 00000972: PUSH1 0x00 00000974: DUP1 00000975: RETURNDATACOPY 00000976: RETURNDATASIZE 00000977: PUSH1 0x00 00000979: REVERT 0000097a: JUMPDEST 0000097b: PUSH1 0x00 0000097d: SLOAD 0000097e: PUSH1 0x01 00000980: PUSH1 0x01 00000982: PUSH1 0xa0 00000984: SHL 00000985: SUB 00000986: AND 00000987: SWAP1 00000988: JUMP 00000989: JUMPDEST 0000098a: PUSH2 0x099e 0000098d: PUSH1 0x01 0000098f: PUSH1 0x01 00000991: PUSH1 0xa0 00000993: SHL 00000994: SUB 00000995: DUP10 00000996: AND 00000997: DUP8 00000998: ADDRESS 00000999: DUP8 0000099a: PUSH2 0x0b68 0000099d: JUMP 0000099e: JUMPDEST 0000099f: PUSH1 0x00 000009a1: PUSH4 0x662a633a 000009a6: PUSH1 0xe0 000009a8: SHL 000009a9: DUP10 000009aa: DUP10 000009ab: DUP10 000009ac: DUP10 000009ad: DUP10 000009ae: DUP9 000009af: DUP9 000009b0: PUSH1 0x40 000009b2: MLOAD 000009b3: PUSH1 0x24 000009b5: ADD 000009b6: PUSH2 0x09c5 000009b9: SWAP8 000009ba: SWAP7 000009bb: SWAP6 000009bc: SWAP5 000009bd: SWAP4 000009be: SWAP3 000009bf: SWAP2 000009c0: SWAP1 000009c1: PUSH2 0x12fa 000009c4: JUMP 000009c5: JUMPDEST 000009c6: PUSH1 0x40 000009c8: DUP1 000009c9: MLOAD 000009ca: PUSH1 0x1f 000009cc: NOT 000009cd: DUP2 000009ce: DUP5 000009cf: SUB 000009d0: ADD 000009d1: DUP2 000009d2: MSTORE 000009d3: SWAP2 000009d4: SWAP1 000009d5: MSTORE 000009d6: PUSH1 0x20 000009d8: DUP2 000009d9: ADD 000009da: DUP1 000009db: MLOAD 000009dc: PUSH1 0x01 000009de: PUSH1 0x01 000009e0: PUSH1 0xe0 000009e2: SHL 000009e3: SUB 000009e4: AND 000009e5: PUSH1 0x01 000009e7: PUSH1 0x01 000009e9: PUSH1 0xe0 000009eb: SHL 000009ec: SUB 000009ed: NOT 000009ee: SWAP1 000009ef: SWAP4 000009f0: AND 000009f1: SWAP3 000009f2: SWAP1 000009f3: SWAP3 000009f4: OR 000009f5: SWAP1 000009f6: SWAP2 000009f7: MSTORE 000009f8: PUSH1 0x01 000009fa: SLOAD 000009fb: SWAP1 000009fc: SWAP2 000009fd: POP 000009fe: PUSH2 0x0a11 00000a01: SWAP1 00000a02: PUSH1 0x01 00000a04: PUSH1 0x01 00000a06: PUSH1 0xa0 00000a08: SHL 00000a09: SUB 00000a0a: AND 00000a0b: DUP6 00000a0c: DUP4 00000a0d: PUSH2 0x0898 00000a10: JUMP 00000a11: JUMPDEST 00000a12: PUSH1 0x01 00000a14: PUSH1 0x01 00000a16: PUSH1 0xa0 00000a18: SHL 00000a19: SUB 00000a1a: DUP1 00000a1b: DUP11 00000a1c: AND 00000a1d: PUSH1 0x00 00000a1f: SWAP1 00000a20: DUP2 00000a21: MSTORE 00000a22: PUSH1 0x02 00000a24: PUSH1 0x20 00000a26: SWAP1 00000a27: DUP2 00000a28: MSTORE 00000a29: PUSH1 0x40 00000a2b: DUP1 00000a2c: DUP4 00000a2d: KECCAK256 00000a2e: SWAP4 00000a2f: DUP13 00000a30: AND 00000a31: DUP4 00000a32: MSTORE 00000a33: SWAP3 00000a34: SWAP1 00000a35: MSTORE 00000a36: KECCAK256 00000a37: SLOAD 00000a38: PUSH2 0x0a41 00000a3b: SWAP1 00000a3c: DUP7 00000a3d: PUSH2 0x0bc2 00000a40: JUMP 00000a41: JUMPDEST 00000a42: PUSH1 0x01 00000a44: PUSH1 0x01 00000a46: PUSH1 0xa0 00000a48: SHL 00000a49: SUB 00000a4a: DUP1 00000a4b: DUP12 00000a4c: AND 00000a4d: PUSH1 0x00 00000a4f: DUP2 00000a50: DUP2 00000a51: MSTORE 00000a52: PUSH1 0x02 00000a54: PUSH1 0x20 00000a56: SWAP1 00000a57: DUP2 00000a58: MSTORE 00000a59: PUSH1 0x40 00000a5b: DUP1 00000a5c: DUP4 00000a5d: KECCAK256 00000a5e: DUP15 00000a5f: DUP7 00000a60: AND 00000a61: DUP1 00000a62: DUP6 00000a63: MSTORE 00000a64: SWAP3 00000a65: MSTORE 00000a66: SWAP2 00000a67: DUP3 00000a68: SWAP1 00000a69: KECCAK256 00000a6a: SWAP5 00000a6b: SWAP1 00000a6c: SWAP5 00000a6d: SSTORE 00000a6e: MLOAD 00000a6f: SWAP2 00000a70: DUP11 00000a71: AND 00000a72: SWAP3 00000a73: SWAP2 00000a74: PUSH32 0x718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396 00000a95: SWAP1 00000a96: PUSH2 0x0aa6 00000a99: SWAP1 00000a9a: DUP12 00000a9b: SWAP1 00000a9c: DUP12 00000a9d: SWAP1 00000a9e: DUP11 00000a9f: SWAP1 00000aa0: DUP11 00000aa1: SWAP1 00000aa2: PUSH2 0x134b 00000aa5: JUMP 00000aa6: JUMPDEST 00000aa7: PUSH1 0x40 00000aa9: MLOAD 00000aaa: DUP1 00000aab: SWAP2 00000aac: SUB 00000aad: SWAP1 00000aae: LOG4 00000aaf: POP 00000ab0: POP 00000ab1: POP 00000ab2: POP 00000ab3: POP 00000ab4: POP 00000ab5: POP 00000ab6: POP 00000ab7: POP 00000ab8: JUMP 00000ab9: JUMPDEST 00000aba: PUSH1 0x00 00000abc: DUP3 00000abd: DUP3 00000abe: GT 00000abf: ISZERO 00000ac0: PUSH2 0x0b10 00000ac3: JUMPI 00000ac4: PUSH1 0x40 00000ac6: DUP1 00000ac7: MLOAD 00000ac8: PUSH3 0x461bcd 00000acc: PUSH1 0xe5 00000ace: SHL 00000acf: DUP2 00000ad0: MSTORE 00000ad1: PUSH1 0x20 00000ad3: PUSH1 0x04 00000ad5: DUP3 00000ad6: ADD 00000ad7: MSTORE 00000ad8: PUSH1 0x1e 00000ada: PUSH1 0x24 00000adc: DUP3 00000add: ADD 00000ade: MSTORE 00000adf: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00000b00: PUSH1 0x44 00000b02: DUP3 00000b03: ADD 00000b04: MSTORE 00000b05: SWAP1 00000b06: MLOAD 00000b07: SWAP1 00000b08: DUP2 00000b09: SWAP1 00000b0a: SUB 00000b0b: PUSH1 0x64 00000b0d: ADD 00000b0e: SWAP1 00000b0f: REVERT 00000b10: JUMPDEST 00000b11: POP 00000b12: SWAP1 00000b13: SUB 00000b14: SWAP1 00000b15: JUMP 00000b16: JUMPDEST 00000b17: PUSH1 0x40 00000b19: DUP1 00000b1a: MLOAD 00000b1b: PUSH1 0x01 00000b1d: PUSH1 0x01 00000b1f: PUSH1 0xa0 00000b21: SHL 00000b22: SUB 00000b23: DUP5 00000b24: AND 00000b25: PUSH1 0x24 00000b27: DUP3 00000b28: ADD 00000b29: MSTORE 00000b2a: PUSH1 0x44 00000b2c: DUP1 00000b2d: DUP3 00000b2e: ADD 00000b2f: DUP5 00000b30: SWAP1 00000b31: MSTORE 00000b32: DUP3 00000b33: MLOAD 00000b34: DUP1 00000b35: DUP4 00000b36: SUB 00000b37: SWAP1 00000b38: SWAP2 00000b39: ADD 00000b3a: DUP2 00000b3b: MSTORE 00000b3c: PUSH1 0x64 00000b3e: SWAP1 00000b3f: SWAP2 00000b40: ADD 00000b41: SWAP1 00000b42: SWAP2 00000b43: MSTORE 00000b44: PUSH1 0x20 00000b46: DUP2 00000b47: ADD 00000b48: DUP1 00000b49: MLOAD 00000b4a: PUSH1 0x01 00000b4c: PUSH1 0x01 00000b4e: PUSH1 0xe0 00000b50: SHL 00000b51: SUB 00000b52: AND 00000b53: PUSH4 0xa9059cbb 00000b58: PUSH1 0xe0 00000b5a: SHL 00000b5b: OR 00000b5c: SWAP1 00000b5d: MSTORE 00000b5e: PUSH2 0x0893 00000b61: SWAP1 00000b62: DUP5 00000b63: SWAP1 00000b64: PUSH2 0x0c23 00000b67: JUMP 00000b68: JUMPDEST 00000b69: PUSH1 0x40 00000b6b: DUP1 00000b6c: MLOAD 00000b6d: PUSH1 0x01 00000b6f: PUSH1 0x01 00000b71: PUSH1 0xa0 00000b73: SHL 00000b74: SUB 00000b75: DUP1 00000b76: DUP7 00000b77: AND 00000b78: PUSH1 0x24 00000b7a: DUP4 00000b7b: ADD 00000b7c: MSTORE 00000b7d: DUP5 00000b7e: AND 00000b7f: PUSH1 0x44 00000b81: DUP3 00000b82: ADD 00000b83: MSTORE 00000b84: PUSH1 0x64 00000b86: DUP1 00000b87: DUP3 00000b88: ADD 00000b89: DUP5 00000b8a: SWAP1 00000b8b: MSTORE 00000b8c: DUP3 00000b8d: MLOAD 00000b8e: DUP1 00000b8f: DUP4 00000b90: SUB 00000b91: SWAP1 00000b92: SWAP2 00000b93: ADD 00000b94: DUP2 00000b95: MSTORE 00000b96: PUSH1 0x84 00000b98: SWAP1 00000b99: SWAP2 00000b9a: ADD 00000b9b: SWAP1 00000b9c: SWAP2 00000b9d: MSTORE 00000b9e: PUSH1 0x20 00000ba0: DUP2 00000ba1: ADD 00000ba2: DUP1 00000ba3: MLOAD 00000ba4: PUSH1 0x01 00000ba6: PUSH1 0x01 00000ba8: PUSH1 0xe0 00000baa: SHL 00000bab: SUB 00000bac: AND 00000bad: PUSH4 0x23b872dd 00000bb2: PUSH1 0xe0 00000bb4: SHL 00000bb5: OR 00000bb6: SWAP1 00000bb7: MSTORE 00000bb8: PUSH2 0x063b 00000bbb: SWAP1 00000bbc: DUP6 00000bbd: SWAP1 00000bbe: PUSH2 0x0c23 00000bc1: JUMP 00000bc2: JUMPDEST 00000bc3: PUSH1 0x00 00000bc5: DUP3 00000bc6: DUP3 00000bc7: ADD 00000bc8: DUP4 00000bc9: DUP2 00000bca: LT 00000bcb: ISZERO 00000bcc: PUSH2 0x0c1c 00000bcf: JUMPI 00000bd0: PUSH1 0x40 00000bd2: DUP1 00000bd3: MLOAD 00000bd4: PUSH3 0x461bcd 00000bd8: PUSH1 0xe5 00000bda: SHL 00000bdb: DUP2 00000bdc: MSTORE 00000bdd: PUSH1 0x20 00000bdf: PUSH1 0x04 00000be1: DUP3 00000be2: ADD 00000be3: MSTORE 00000be4: PUSH1 0x1b 00000be6: PUSH1 0x24 00000be8: DUP3 00000be9: ADD 00000bea: MSTORE 00000beb: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00000c0c: PUSH1 0x44 00000c0e: DUP3 00000c0f: ADD 00000c10: MSTORE 00000c11: SWAP1 00000c12: MLOAD 00000c13: SWAP1 00000c14: DUP2 00000c15: SWAP1 00000c16: SUB 00000c17: PUSH1 0x64 00000c19: ADD 00000c1a: SWAP1 00000c1b: REVERT 00000c1c: JUMPDEST 00000c1d: SWAP4 00000c1e: SWAP3 00000c1f: POP 00000c20: POP 00000c21: POP 00000c22: JUMP 00000c23: JUMPDEST 00000c24: PUSH1 0x00 00000c26: PUSH2 0x0c78 00000c29: DUP3 00000c2a: PUSH1 0x40 00000c2c: MLOAD 00000c2d: DUP1 00000c2e: PUSH1 0x40 00000c30: ADD 00000c31: PUSH1 0x40 00000c33: MSTORE 00000c34: DUP1 00000c35: PUSH1 0x20 00000c37: DUP2 00000c38: MSTORE 00000c39: PUSH1 0x20 00000c3b: ADD 00000c3c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00000c5d: DUP2 00000c5e: MSTORE 00000c5f: POP 00000c60: DUP6 00000c61: PUSH1 0x01 00000c63: PUSH1 0x01 00000c65: PUSH1 0xa0 00000c67: SHL 00000c68: SUB 00000c69: AND 00000c6a: PUSH2 0x0cd4 00000c6d: SWAP1 00000c6e: SWAP3 00000c6f: SWAP2 00000c70: SWAP1 00000c71: PUSH4 0xffffffff 00000c76: AND 00000c77: JUMP 00000c78: JUMPDEST 00000c79: DUP1 00000c7a: MLOAD 00000c7b: SWAP1 00000c7c: SWAP2 00000c7d: POP 00000c7e: ISZERO 00000c7f: PUSH2 0x0893 00000c82: JUMPI 00000c83: DUP1 00000c84: DUP1 00000c85: PUSH1 0x20 00000c87: ADD 00000c88: SWAP1 00000c89: MLOAD 00000c8a: PUSH1 0x20 00000c8c: DUP2 00000c8d: LT 00000c8e: ISZERO 00000c8f: PUSH2 0x0c97 00000c92: JUMPI 00000c93: PUSH1 0x00 00000c95: DUP1 00000c96: REVERT 00000c97: JUMPDEST 00000c98: POP 00000c99: MLOAD 00000c9a: PUSH2 0x0893 00000c9d: JUMPI 00000c9e: PUSH1 0x40 00000ca0: MLOAD 00000ca1: PUSH3 0x461bcd 00000ca5: PUSH1 0xe5 00000ca7: SHL 00000ca8: DUP2 00000ca9: MSTORE 00000caa: PUSH1 0x04 00000cac: ADD 00000cad: DUP1 00000cae: DUP1 00000caf: PUSH1 0x20 00000cb1: ADD 00000cb2: DUP3 00000cb3: DUP2 00000cb4: SUB 00000cb5: DUP3 00000cb6: MSTORE 00000cb7: PUSH1 0x2a 00000cb9: DUP2 00000cba: MSTORE 00000cbb: PUSH1 0x20 00000cbd: ADD 00000cbe: DUP1 00000cbf: PUSH2 0x1508 00000cc2: PUSH1 0x2a 00000cc4: SWAP2 00000cc5: CODECOPY 00000cc6: PUSH1 0x40 00000cc8: ADD 00000cc9: SWAP2 00000cca: POP 00000ccb: POP 00000ccc: PUSH1 0x40 00000cce: MLOAD 00000ccf: DUP1 00000cd0: SWAP2 00000cd1: SUB 00000cd2: SWAP1 00000cd3: REVERT 00000cd4: JUMPDEST 00000cd5: PUSH1 0x60 00000cd7: PUSH2 0x0ce3 00000cda: DUP5 00000cdb: DUP5 00000cdc: PUSH1 0x00 00000cde: DUP6 00000cdf: PUSH2 0x0ceb 00000ce2: JUMP 00000ce3: JUMPDEST 00000ce4: SWAP5 00000ce5: SWAP4 00000ce6: POP 00000ce7: POP 00000ce8: POP 00000ce9: POP 00000cea: JUMP 00000ceb: JUMPDEST 00000cec: PUSH1 0x60 00000cee: DUP3 00000cef: SELFBALANCE 00000cf0: LT 00000cf1: ISZERO 00000cf2: PUSH2 0x0d2c 00000cf5: JUMPI 00000cf6: PUSH1 0x40 00000cf8: MLOAD 00000cf9: PUSH3 0x461bcd 00000cfd: PUSH1 0xe5 00000cff: SHL 00000d00: DUP2 00000d01: MSTORE 00000d02: PUSH1 0x04 00000d04: ADD 00000d05: DUP1 00000d06: DUP1 00000d07: PUSH1 0x20 00000d09: ADD 00000d0a: DUP3 00000d0b: DUP2 00000d0c: SUB 00000d0d: DUP3 00000d0e: MSTORE 00000d0f: PUSH1 0x26 00000d11: DUP2 00000d12: MSTORE 00000d13: PUSH1 0x20 00000d15: ADD 00000d16: DUP1 00000d17: PUSH2 0x14e2 00000d1a: PUSH1 0x26 00000d1c: SWAP2 00000d1d: CODECOPY 00000d1e: PUSH1 0x40 00000d20: ADD 00000d21: SWAP2 00000d22: POP 00000d23: POP 00000d24: PUSH1 0x40 00000d26: MLOAD 00000d27: DUP1 00000d28: SWAP2 00000d29: SUB 00000d2a: SWAP1 00000d2b: REVERT 00000d2c: JUMPDEST 00000d2d: PUSH2 0x0d35 00000d30: DUP6 00000d31: PUSH2 0x0234 00000d34: JUMP 00000d35: JUMPDEST 00000d36: PUSH2 0x0d86 00000d39: JUMPI 00000d3a: PUSH1 0x40 00000d3c: DUP1 00000d3d: MLOAD 00000d3e: PUSH3 0x461bcd 00000d42: PUSH1 0xe5 00000d44: SHL 00000d45: DUP2 00000d46: MSTORE 00000d47: PUSH1 0x20 00000d49: PUSH1 0x04 00000d4b: DUP3 00000d4c: ADD 00000d4d: MSTORE 00000d4e: PUSH1 0x1d 00000d50: PUSH1 0x24 00000d52: DUP3 00000d53: ADD 00000d54: MSTORE 00000d55: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00000d76: PUSH1 0x44 00000d78: DUP3 00000d79: ADD 00000d7a: MSTORE 00000d7b: SWAP1 00000d7c: MLOAD 00000d7d: SWAP1 00000d7e: DUP2 00000d7f: SWAP1 00000d80: SUB 00000d81: PUSH1 0x64 00000d83: ADD 00000d84: SWAP1 00000d85: REVERT 00000d86: JUMPDEST 00000d87: PUSH1 0x00 00000d89: DUP1 00000d8a: DUP7 00000d8b: PUSH1 0x01 00000d8d: PUSH1 0x01 00000d8f: PUSH1 0xa0 00000d91: SHL 00000d92: SUB 00000d93: AND 00000d94: DUP6 00000d95: DUP8 00000d96: PUSH1 0x40 00000d98: MLOAD 00000d99: DUP1 00000d9a: DUP3 00000d9b: DUP1 00000d9c: MLOAD 00000d9d: SWAP1 00000d9e: PUSH1 0x20 00000da0: ADD 00000da1: SWAP1 00000da2: DUP1 00000da3: DUP4 00000da4: DUP4 00000da5: JUMPDEST 00000da6: PUSH1 0x20 00000da8: DUP4 00000da9: LT 00000daa: PUSH2 0x0dc4 00000dad: JUMPI 00000dae: DUP1 00000daf: MLOAD 00000db0: DUP3 00000db1: MSTORE 00000db2: PUSH1 0x1f 00000db4: NOT 00000db5: SWAP1 00000db6: SWAP3 00000db7: ADD 00000db8: SWAP2 00000db9: PUSH1 0x20 00000dbb: SWAP2 00000dbc: DUP3 00000dbd: ADD 00000dbe: SWAP2 00000dbf: ADD 00000dc0: PUSH2 0x0da5 00000dc3: JUMP 00000dc4: JUMPDEST 00000dc5: PUSH1 0x01 00000dc7: DUP4 00000dc8: PUSH1 0x20 00000dca: SUB 00000dcb: PUSH2 0x0100 00000dce: EXP 00000dcf: SUB 00000dd0: DUP1 00000dd1: NOT 00000dd2: DUP3 00000dd3: MLOAD 00000dd4: AND 00000dd5: DUP2 00000dd6: DUP5 00000dd7: MLOAD 00000dd8: AND 00000dd9: DUP1 00000dda: DUP3 00000ddb: OR 00000ddc: DUP6 00000ddd: MSTORE 00000dde: POP 00000ddf: POP 00000de0: POP 00000de1: POP 00000de2: POP 00000de3: POP 00000de4: SWAP1 00000de5: POP 00000de6: ADD 00000de7: SWAP2 00000de8: POP 00000de9: POP 00000dea: PUSH1 0x00 00000dec: PUSH1 0x40 00000dee: MLOAD 00000def: DUP1 00000df0: DUP4 00000df1: SUB 00000df2: DUP2 00000df3: DUP6 00000df4: DUP8 00000df5: GAS 00000df6: CALL 00000df7: SWAP3 00000df8: POP 00000df9: POP 00000dfa: POP 00000dfb: RETURNDATASIZE 00000dfc: DUP1 00000dfd: PUSH1 0x00 00000dff: DUP2 00000e00: EQ 00000e01: PUSH2 0x0e26 00000e04: JUMPI 00000e05: PUSH1 0x40 00000e07: MLOAD 00000e08: SWAP2 00000e09: POP 00000e0a: PUSH1 0x1f 00000e0c: NOT 00000e0d: PUSH1 0x3f 00000e0f: RETURNDATASIZE 00000e10: ADD 00000e11: AND 00000e12: DUP3 00000e13: ADD 00000e14: PUSH1 0x40 00000e16: MSTORE 00000e17: RETURNDATASIZE 00000e18: DUP3 00000e19: MSTORE 00000e1a: RETURNDATASIZE 00000e1b: PUSH1 0x00 00000e1d: PUSH1 0x20 00000e1f: DUP5 00000e20: ADD 00000e21: RETURNDATACOPY 00000e22: PUSH2 0x0e2b 00000e25: JUMP 00000e26: JUMPDEST 00000e27: PUSH1 0x60 00000e29: SWAP2 00000e2a: POP 00000e2b: JUMPDEST 00000e2c: POP 00000e2d: SWAP2 00000e2e: POP 00000e2f: SWAP2 00000e30: POP 00000e31: PUSH2 0x0e3b 00000e34: DUP3 00000e35: DUP3 00000e36: DUP7 00000e37: PUSH2 0x0e46 00000e3a: JUMP 00000e3b: JUMPDEST 00000e3c: SWAP8 00000e3d: SWAP7 00000e3e: POP 00000e3f: POP 00000e40: POP 00000e41: POP 00000e42: POP 00000e43: POP 00000e44: POP 00000e45: JUMP 00000e46: JUMPDEST 00000e47: PUSH1 0x60 00000e49: DUP4 00000e4a: ISZERO 00000e4b: PUSH2 0x0e55 00000e4e: JUMPI 00000e4f: POP 00000e50: DUP2 00000e51: PUSH2 0x0c1c 00000e54: JUMP 00000e55: JUMPDEST 00000e56: DUP3 00000e57: MLOAD 00000e58: ISZERO 00000e59: PUSH2 0x0e65 00000e5c: JUMPI 00000e5d: DUP3 00000e5e: MLOAD 00000e5f: DUP1 00000e60: DUP5 00000e61: PUSH1 0x20 00000e63: ADD 00000e64: REVERT 00000e65: JUMPDEST 00000e66: DUP2 00000e67: PUSH1 0x40 00000e69: MLOAD 00000e6a: PUSH3 0x461bcd 00000e6e: PUSH1 0xe5 00000e70: SHL 00000e71: DUP2 00000e72: MSTORE 00000e73: PUSH1 0x04 00000e75: ADD 00000e76: DUP1 00000e77: DUP1 00000e78: PUSH1 0x20 00000e7a: ADD 00000e7b: DUP3 00000e7c: DUP2 00000e7d: SUB 00000e7e: DUP3 00000e7f: MSTORE 00000e80: DUP4 00000e81: DUP2 00000e82: DUP2 00000e83: MLOAD 00000e84: DUP2 00000e85: MSTORE 00000e86: PUSH1 0x20 00000e88: ADD 00000e89: SWAP2 00000e8a: POP 00000e8b: DUP1 00000e8c: MLOAD 00000e8d: SWAP1 00000e8e: PUSH1 0x20 00000e90: ADD 00000e91: SWAP1 00000e92: DUP1 00000e93: DUP4 00000e94: DUP4 00000e95: PUSH1 0x00 00000e97: JUMPDEST 00000e98: DUP4 00000e99: DUP2 00000e9a: LT 00000e9b: ISZERO 00000e9c: PUSH2 0x0eaf 00000e9f: JUMPI 00000ea0: DUP2 00000ea1: DUP2 00000ea2: ADD 00000ea3: MLOAD 00000ea4: DUP4 00000ea5: DUP3 00000ea6: ADD 00000ea7: MSTORE 00000ea8: PUSH1 0x20 00000eaa: ADD 00000eab: PUSH2 0x0e97 00000eae: JUMP 00000eaf: JUMPDEST 00000eb0: POP 00000eb1: POP 00000eb2: POP 00000eb3: POP 00000eb4: SWAP1 00000eb5: POP 00000eb6: SWAP1 00000eb7: DUP2 00000eb8: ADD 00000eb9: SWAP1 00000eba: PUSH1 0x1f 00000ebc: AND 00000ebd: DUP1 00000ebe: ISZERO 00000ebf: PUSH2 0x0edc 00000ec2: JUMPI 00000ec3: DUP1 00000ec4: DUP3 00000ec5: SUB 00000ec6: DUP1 00000ec7: MLOAD 00000ec8: PUSH1 0x01 00000eca: DUP4 00000ecb: PUSH1 0x20 00000ecd: SUB 00000ece: PUSH2 0x0100 00000ed1: EXP 00000ed2: SUB 00000ed3: NOT 00000ed4: AND 00000ed5: DUP2 00000ed6: MSTORE 00000ed7: PUSH1 0x20 00000ed9: ADD 00000eda: SWAP2 00000edb: POP 00000edc: JUMPDEST 00000edd: POP 00000ede: SWAP3 00000edf: POP 00000ee0: POP 00000ee1: POP 00000ee2: PUSH1 0x40 00000ee4: MLOAD 00000ee5: DUP1 00000ee6: SWAP2 00000ee7: SUB 00000ee8: SWAP1 00000ee9: REVERT 00000eea: JUMPDEST 00000eeb: DUP1 00000eec: CALLDATALOAD 00000eed: PUSH1 0x01 00000eef: PUSH1 0x01 00000ef1: PUSH1 0xa0 00000ef3: SHL 00000ef4: SUB 00000ef5: DUP2 00000ef6: AND 00000ef7: DUP2 00000ef8: EQ 00000ef9: PUSH2 0x0239 00000efc: JUMPI 00000efd: PUSH1 0x00 00000eff: DUP1 00000f00: REVERT 00000f01: JUMPDEST 00000f02: PUSH1 0x00 00000f04: DUP1 00000f05: DUP4 00000f06: PUSH1 0x1f 00000f08: DUP5 00000f09: ADD 00000f0a: SLT 00000f0b: PUSH2 0x0f12 00000f0e: JUMPI 00000f0f: DUP2 00000f10: DUP3 00000f11: REVERT 00000f12: JUMPDEST 00000f13: POP 00000f14: DUP2 00000f15: CALLDATALOAD 00000f16: PUSH8 0xffffffffffffffff 00000f1f: DUP2 00000f20: GT 00000f21: ISZERO 00000f22: PUSH2 0x0f29 00000f25: JUMPI 00000f26: DUP2 00000f27: DUP3 00000f28: REVERT 00000f29: JUMPDEST 00000f2a: PUSH1 0x20 00000f2c: DUP4 00000f2d: ADD 00000f2e: SWAP2 00000f2f: POP 00000f30: DUP4 00000f31: PUSH1 0x20 00000f33: DUP3 00000f34: DUP6 00000f35: ADD 00000f36: ADD 00000f37: GT 00000f38: ISZERO 00000f39: PUSH2 0x0f41 00000f3c: JUMPI 00000f3d: PUSH1 0x00 00000f3f: DUP1 00000f40: REVERT 00000f41: JUMPDEST 00000f42: SWAP3 00000f43: POP 00000f44: SWAP3 00000f45: SWAP1 00000f46: POP 00000f47: JUMP 00000f48: JUMPDEST 00000f49: DUP1 00000f4a: CALLDATALOAD 00000f4b: PUSH4 0xffffffff 00000f50: DUP2 00000f51: AND 00000f52: DUP2 00000f53: EQ 00000f54: PUSH2 0x0239 00000f57: JUMPI 00000f58: PUSH1 0x00 00000f5a: DUP1 00000f5b: REVERT 00000f5c: JUMPDEST 00000f5d: PUSH1 0x00 00000f5f: DUP1 00000f60: PUSH1 0x40 00000f62: DUP4 00000f63: DUP6 00000f64: SUB 00000f65: SLT 00000f66: ISZERO 00000f67: PUSH2 0x0f6e 00000f6a: JUMPI 00000f6b: DUP2 00000f6c: DUP3 00000f6d: REVERT 00000f6e: JUMPDEST 00000f6f: PUSH2 0x0f77 00000f72: DUP4 00000f73: PUSH2 0x0eea 00000f76: JUMP 00000f77: JUMPDEST 00000f78: SWAP2 00000f79: POP 00000f7a: PUSH2 0x0f85 00000f7d: PUSH1 0x20 00000f7f: DUP5 00000f80: ADD 00000f81: PUSH2 0x0eea 00000f84: JUMP 00000f85: JUMPDEST 00000f86: SWAP1 00000f87: POP 00000f88: SWAP3 00000f89: POP 00000f8a: SWAP3 00000f8b: SWAP1 00000f8c: POP 00000f8d: JUMP 00000f8e: JUMPDEST 00000f8f: PUSH1 0x00 00000f91: DUP1 00000f92: PUSH1 0x00 00000f94: DUP1 00000f95: PUSH1 0x00 00000f97: DUP1 00000f98: PUSH1 0x00 00000f9a: PUSH1 0xc0 00000f9c: DUP9 00000f9d: DUP11 00000f9e: SUB 00000f9f: SLT 00000fa0: ISZERO 00000fa1: PUSH2 0x0fa8 00000fa4: JUMPI 00000fa5: DUP3 00000fa6: DUP4 00000fa7: REVERT 00000fa8: JUMPDEST 00000fa9: PUSH2 0x0fb1 00000fac: DUP9 00000fad: PUSH2 0x0eea 00000fb0: JUMP 00000fb1: JUMPDEST 00000fb2: SWAP7 00000fb3: POP 00000fb4: PUSH2 0x0fbf 00000fb7: PUSH1 0x20 00000fb9: DUP10 00000fba: ADD 00000fbb: PUSH2 0x0eea 00000fbe: JUMP 00000fbf: JUMPDEST 00000fc0: SWAP6 00000fc1: POP 00000fc2: PUSH2 0x0fcd 00000fc5: PUSH1 0x40 00000fc7: DUP10 00000fc8: ADD 00000fc9: PUSH2 0x0eea 00000fcc: JUMP 00000fcd: JUMPDEST 00000fce: SWAP5 00000fcf: POP 00000fd0: PUSH2 0x0fdb 00000fd3: PUSH1 0x60 00000fd5: DUP10 00000fd6: ADD 00000fd7: PUSH2 0x0eea 00000fda: JUMP 00000fdb: JUMPDEST 00000fdc: SWAP4 00000fdd: POP 00000fde: PUSH1 0x80 00000fe0: DUP9 00000fe1: ADD 00000fe2: CALLDATALOAD 00000fe3: SWAP3 00000fe4: POP 00000fe5: PUSH1 0xa0 00000fe7: DUP9 00000fe8: ADD 00000fe9: CALLDATALOAD 00000fea: PUSH8 0xffffffffffffffff 00000ff3: DUP2 00000ff4: GT 00000ff5: ISZERO 00000ff6: PUSH2 0x0ffd 00000ff9: JUMPI 00000ffa: DUP3 00000ffb: DUP4 00000ffc: REVERT 00000ffd: JUMPDEST 00000ffe: PUSH2 0x1009 00001001: DUP11 00001002: DUP3 00001003: DUP12 00001004: ADD 00001005: PUSH2 0x0f01 00001008: JUMP 00001009: JUMPDEST 0000100a: SWAP9 0000100b: SWAP12 0000100c: SWAP8 0000100d: SWAP11 0000100e: POP 0000100f: SWAP6 00001010: SWAP9 00001011: POP 00001012: SWAP4 00001013: SWAP7 00001014: SWAP3 00001015: SWAP6 00001016: SWAP3 00001017: SWAP4 00001018: POP 00001019: POP 0000101a: POP 0000101b: JUMP 0000101c: JUMPDEST 0000101d: PUSH1 0x00 0000101f: DUP1 00001020: PUSH1 0x00 00001022: DUP1 00001023: PUSH1 0x00 00001025: DUP1 00001026: PUSH1 0x00 00001028: PUSH1 0xc0 0000102a: DUP9 0000102b: DUP11 0000102c: SUB 0000102d: SLT 0000102e: ISZERO 0000102f: PUSH2 0x1036 00001032: JUMPI 00001033: DUP3 00001034: DUP4 00001035: REVERT 00001036: JUMPDEST 00001037: PUSH2 0x103f 0000103a: DUP9 0000103b: PUSH2 0x0eea 0000103e: JUMP 0000103f: JUMPDEST 00001040: SWAP7 00001041: POP 00001042: PUSH2 0x104d 00001045: PUSH1 0x20 00001047: DUP10 00001048: ADD 00001049: PUSH2 0x0eea 0000104c: JUMP 0000104d: JUMPDEST 0000104e: SWAP6 0000104f: POP 00001050: PUSH2 0x105b 00001053: PUSH1 0x40 00001055: DUP10 00001056: ADD 00001057: PUSH2 0x0eea 0000105a: JUMP 0000105b: JUMPDEST 0000105c: SWAP5 0000105d: POP 0000105e: PUSH1 0x60 00001060: DUP9 00001061: ADD 00001062: CALLDATALOAD 00001063: SWAP4 00001064: POP 00001065: PUSH2 0x1070 00001068: PUSH1 0x80 0000106a: DUP10 0000106b: ADD 0000106c: PUSH2 0x0f48 0000106f: JUMP 00001070: JUMPDEST 00001071: SWAP3 00001072: POP 00001073: PUSH1 0xa0 00001075: DUP9 00001076: ADD 00001077: CALLDATALOAD 00001078: PUSH8 0xffffffffffffffff 00001081: DUP2 00001082: GT 00001083: ISZERO 00001084: PUSH2 0x0ffd 00001087: JUMPI 00001088: DUP3 00001089: DUP4 0000108a: REVERT 0000108b: JUMPDEST 0000108c: PUSH1 0x00 0000108e: DUP1 0000108f: PUSH1 0x00 00001091: DUP1 00001092: PUSH1 0x00 00001094: PUSH1 0x80 00001096: DUP7 00001097: DUP9 00001098: SUB 00001099: SLT 0000109a: ISZERO 0000109b: PUSH2 0x10a2 0000109e: JUMPI 0000109f: DUP1 000010a0: DUP2 000010a1: REVERT 000010a2: JUMPDEST 000010a3: PUSH2 0x10ab 000010a6: DUP7 000010a7: PUSH2 0x0eea 000010aa: JUMP 000010ab: JUMPDEST 000010ac: SWAP5 000010ad: POP 000010ae: PUSH2 0x10b9 000010b1: PUSH1 0x20 000010b3: DUP8 000010b4: ADD 000010b5: PUSH2 0x0eea 000010b8: JUMP 000010b9: JUMPDEST 000010ba: SWAP4 000010bb: POP 000010bc: PUSH1 0x40 000010be: DUP7 000010bf: ADD 000010c0: CALLDATALOAD 000010c1: SWAP3 000010c2: POP 000010c3: PUSH1 0x60 000010c5: DUP7 000010c6: ADD 000010c7: CALLDATALOAD 000010c8: PUSH8 0xffffffffffffffff 000010d1: DUP2 000010d2: GT 000010d3: ISZERO 000010d4: PUSH2 0x10db 000010d7: JUMPI 000010d8: DUP2 000010d9: DUP3 000010da: REVERT 000010db: JUMPDEST 000010dc: PUSH2 0x10e7 000010df: DUP9 000010e0: DUP3 000010e1: DUP10 000010e2: ADD 000010e3: PUSH2 0x0f01 000010e6: JUMP 000010e7: JUMPDEST 000010e8: SWAP7 000010e9: SWAP10 000010ea: SWAP6 000010eb: SWAP9 000010ec: POP 000010ed: SWAP4 000010ee: SWAP7 000010ef: POP 000010f0: SWAP3 000010f1: SWAP5 000010f2: SWAP4 000010f3: SWAP3 000010f4: POP 000010f5: POP 000010f6: POP 000010f7: JUMP 000010f8: JUMPDEST 000010f9: PUSH1 0x00 000010fb: DUP1 000010fc: PUSH1 0x00 000010fe: DUP1 000010ff: PUSH1 0x00 00001101: DUP1 00001102: PUSH1 0xa0 00001104: DUP8 00001105: DUP10 00001106: SUB 00001107: SLT 00001108: ISZERO 00001109: PUSH2 0x1110 0000110c: JUMPI 0000110d: DUP2 0000110e: DUP3 0000110f: REVERT 00001110: JUMPDEST 00001111: PUSH2 0x1119 00001114: DUP8 00001115: PUSH2 0x0eea 00001118: JUMP 00001119: JUMPDEST 0000111a: SWAP6 0000111b: POP 0000111c: PUSH2 0x1127 0000111f: PUSH1 0x20 00001121: DUP9 00001122: ADD 00001123: PUSH2 0x0eea 00001126: JUMP 00001127: JUMPDEST 00001128: SWAP5 00001129: POP 0000112a: PUSH1 0x40 0000112c: DUP8 0000112d: ADD 0000112e: CALLDATALOAD 0000112f: SWAP4 00001130: POP 00001131: PUSH2 0x113c 00001134: PUSH1 0x60 00001136: DUP9 00001137: ADD 00001138: PUSH2 0x0f48 0000113b: JUMP 0000113c: JUMPDEST 0000113d: SWAP3 0000113e: POP 0000113f: PUSH1 0x80 00001141: DUP8 00001142: ADD 00001143: CALLDATALOAD 00001144: PUSH8 0xffffffffffffffff 0000114d: DUP2 0000114e: GT 0000114f: ISZERO 00001150: PUSH2 0x1157 00001153: JUMPI 00001154: DUP3 00001155: DUP4 00001156: REVERT 00001157: JUMPDEST 00001158: PUSH2 0x1163 0000115b: DUP10 0000115c: DUP3 0000115d: DUP11 0000115e: ADD 0000115f: PUSH2 0x0f01 00001162: JUMP 00001163: JUMPDEST 00001164: SWAP8 00001165: SWAP11 00001166: SWAP7 00001167: SWAP10 00001168: POP 00001169: SWAP5 0000116a: SWAP8 0000116b: POP 0000116c: SWAP3 0000116d: SWAP6 0000116e: SWAP4 0000116f: SWAP5 00001170: SWAP3 00001171: POP 00001172: POP 00001173: POP 00001174: JUMP 00001175: JUMPDEST 00001176: PUSH1 0x00 00001178: DUP1 00001179: PUSH1 0x00 0000117b: DUP1 0000117c: PUSH1 0x60 0000117e: DUP6 0000117f: DUP8 00001180: SUB 00001181: SLT 00001182: ISZERO 00001183: PUSH2 0x118a 00001186: JUMPI 00001187: DUP4 00001188: DUP5 00001189: REVERT 0000118a: JUMPDEST 0000118b: PUSH2 0x1193 0000118e: DUP6 0000118f: PUSH2 0x0eea 00001192: JUMP 00001193: JUMPDEST 00001194: SWAP4 00001195: POP 00001196: PUSH2 0x11a1 00001199: PUSH1 0x20 0000119b: DUP7 0000119c: ADD 0000119d: PUSH2 0x0f48 000011a0: JUMP 000011a1: JUMPDEST 000011a2: SWAP3 000011a3: POP 000011a4: PUSH1 0x40 000011a6: DUP6 000011a7: ADD 000011a8: CALLDATALOAD 000011a9: PUSH8 0xffffffffffffffff 000011b2: DUP2 000011b3: GT 000011b4: ISZERO 000011b5: PUSH2 0x11bc 000011b8: JUMPI 000011b9: DUP3 000011ba: DUP4 000011bb: REVERT 000011bc: JUMPDEST 000011bd: PUSH2 0x11c8 000011c0: DUP8 000011c1: DUP3 000011c2: DUP9 000011c3: ADD 000011c4: PUSH2 0x0f01 000011c7: JUMP 000011c8: JUMPDEST 000011c9: SWAP6 000011ca: SWAP9 000011cb: SWAP5 000011cc: SWAP8 000011cd: POP 000011ce: SWAP6 000011cf: POP 000011d0: POP 000011d1: POP 000011d2: POP 000011d3: JUMP 000011d4: JUMPDEST 000011d5: PUSH1 0x00 000011d7: DUP1 000011d8: PUSH1 0x00 000011da: PUSH1 0x40 000011dc: DUP5 000011dd: DUP7 000011de: SUB 000011df: SLT 000011e0: ISZERO 000011e1: PUSH2 0x11e8 000011e4: JUMPI 000011e5: DUP3 000011e6: DUP4 000011e7: REVERT 000011e8: JUMPDEST 000011e9: PUSH2 0x11f1 000011ec: DUP5 000011ed: PUSH2 0x0f48 000011f0: JUMP 000011f1: JUMPDEST 000011f2: SWAP3 000011f3: POP 000011f4: PUSH1 0x20 000011f6: DUP5 000011f7: ADD 000011f8: CALLDATALOAD 000011f9: PUSH8 0xffffffffffffffff 00001202: DUP2 00001203: GT 00001204: ISZERO 00001205: PUSH2 0x120c 00001208: JUMPI 00001209: DUP3 0000120a: DUP4 0000120b: REVERT 0000120c: JUMPDEST 0000120d: PUSH2 0x1218 00001210: DUP7 00001211: DUP3 00001212: DUP8 00001213: ADD 00001214: PUSH2 0x0f01 00001217: JUMP 00001218: JUMPDEST 00001219: SWAP5 0000121a: SWAP8 0000121b: SWAP1 0000121c: SWAP7 0000121d: POP 0000121e: SWAP4 0000121f: SWAP5 00001220: POP 00001221: POP 00001222: POP 00001223: POP 00001224: JUMP 00001225: JUMPDEST 00001226: PUSH1 0x00 00001228: DUP3 00001229: DUP5 0000122a: MSTORE 0000122b: DUP3 0000122c: DUP3 0000122d: PUSH1 0x20 0000122f: DUP7 00001230: ADD 00001231: CALLDATACOPY 00001232: DUP1 00001233: PUSH1 0x20 00001235: DUP5 00001236: DUP7 00001237: ADD 00001238: ADD 00001239: MSTORE 0000123a: PUSH1 0x20 0000123c: PUSH1 0x1f 0000123e: NOT 0000123f: PUSH1 0x1f 00001241: DUP6 00001242: ADD 00001243: AND 00001244: DUP6 00001245: ADD 00001246: ADD 00001247: SWAP1 00001248: POP 00001249: SWAP4 0000124a: SWAP3 0000124b: POP 0000124c: POP 0000124d: POP 0000124e: JUMP 0000124f: JUMPDEST 00001250: PUSH1 0x00 00001252: DUP2 00001253: MLOAD 00001254: DUP1 00001255: DUP5 00001256: MSTORE 00001257: PUSH2 0x1267 0000125a: DUP2 0000125b: PUSH1 0x20 0000125d: DUP7 0000125e: ADD 0000125f: PUSH1 0x20 00001261: DUP7 00001262: ADD 00001263: PUSH2 0x1485 00001266: JUMP 00001267: JUMPDEST 00001268: PUSH1 0x1f 0000126a: ADD 0000126b: PUSH1 0x1f 0000126d: NOT 0000126e: AND 0000126f: SWAP3 00001270: SWAP1 00001271: SWAP3 00001272: ADD 00001273: PUSH1 0x20 00001275: ADD 00001276: SWAP3 00001277: SWAP2 00001278: POP 00001279: POP 0000127a: JUMP 0000127b: JUMPDEST 0000127c: PUSH1 0x00 0000127e: DUP3 0000127f: MLOAD 00001280: PUSH2 0x128d 00001283: DUP2 00001284: DUP5 00001285: PUSH1 0x20 00001287: DUP8 00001288: ADD 00001289: PUSH2 0x1485 0000128c: JUMP 0000128d: JUMPDEST 0000128e: SWAP2 0000128f: SWAP1 00001290: SWAP2 00001291: ADD 00001292: SWAP3 00001293: SWAP2 00001294: POP 00001295: POP 00001296: JUMP 00001297: JUMPDEST 00001298: PUSH1 0x01 0000129a: PUSH1 0x01 0000129c: PUSH1 0xa0 0000129e: SHL 0000129f: SUB 000012a0: SWAP2 000012a1: SWAP1 000012a2: SWAP2 000012a3: AND 000012a4: DUP2 000012a5: MSTORE 000012a6: PUSH1 0x20 000012a8: ADD 000012a9: SWAP1 000012aa: JUMP 000012ab: JUMPDEST 000012ac: PUSH1 0x01 000012ae: PUSH1 0x01 000012b0: PUSH1 0xa0 000012b2: SHL 000012b3: SUB 000012b4: DUP8 000012b5: DUP2 000012b6: AND 000012b7: DUP3 000012b8: MSTORE 000012b9: DUP7 000012ba: DUP2 000012bb: AND 000012bc: PUSH1 0x20 000012be: DUP4 000012bf: ADD 000012c0: MSTORE 000012c1: DUP6 000012c2: DUP2 000012c3: AND 000012c4: PUSH1 0x40 000012c6: DUP4 000012c7: ADD 000012c8: MSTORE 000012c9: DUP5 000012ca: AND 000012cb: PUSH1 0x60 000012cd: DUP3 000012ce: ADD 000012cf: MSTORE 000012d0: PUSH1 0x80 000012d2: DUP2 000012d3: ADD 000012d4: DUP4 000012d5: SWAP1 000012d6: MSTORE 000012d7: PUSH1 0xc0 000012d9: PUSH1 0xa0 000012db: DUP3 000012dc: ADD 000012dd: DUP2 000012de: SWAP1 000012df: MSTORE 000012e0: PUSH1 0x00 000012e2: SWAP1 000012e3: PUSH2 0x12ee 000012e6: SWAP1 000012e7: DUP4 000012e8: ADD 000012e9: DUP5 000012ea: PUSH2 0x124f 000012ed: JUMP 000012ee: JUMPDEST 000012ef: SWAP9 000012f0: SWAP8 000012f1: POP 000012f2: POP 000012f3: POP 000012f4: POP 000012f5: POP 000012f6: POP 000012f7: POP 000012f8: POP 000012f9: JUMP 000012fa: JUMPDEST 000012fb: PUSH1 0x01 000012fd: PUSH1 0x01 000012ff: PUSH1 0xa0 00001301: SHL 00001302: SUB 00001303: DUP9 00001304: DUP2 00001305: AND 00001306: DUP3 00001307: MSTORE 00001308: DUP8 00001309: DUP2 0000130a: AND 0000130b: PUSH1 0x20 0000130d: DUP4 0000130e: ADD 0000130f: MSTORE 00001310: DUP7 00001311: DUP2 00001312: AND 00001313: PUSH1 0x40 00001315: DUP4 00001316: ADD 00001317: MSTORE 00001318: DUP6 00001319: AND 0000131a: PUSH1 0x60 0000131c: DUP3 0000131d: ADD 0000131e: MSTORE 0000131f: PUSH1 0x80 00001321: DUP2 00001322: ADD 00001323: DUP5 00001324: SWAP1 00001325: MSTORE 00001326: PUSH1 0xc0 00001328: PUSH1 0xa0 0000132a: DUP3 0000132b: ADD 0000132c: DUP2 0000132d: SWAP1 0000132e: MSTORE 0000132f: PUSH1 0x00 00001331: SWAP1 00001332: PUSH2 0x133e 00001335: SWAP1 00001336: DUP4 00001337: ADD 00001338: DUP5 00001339: DUP7 0000133a: PUSH2 0x1225 0000133d: JUMP 0000133e: JUMPDEST 0000133f: SWAP10 00001340: SWAP9 00001341: POP 00001342: POP 00001343: POP 00001344: POP 00001345: POP 00001346: POP 00001347: POP 00001348: POP 00001349: POP 0000134a: JUMP 0000134b: JUMPDEST 0000134c: PUSH1 0x00 0000134e: PUSH1 0x01 00001350: DUP1 00001351: PUSH1 0xa0 00001353: SHL 00001354: SUB 00001355: DUP7 00001356: AND 00001357: DUP3 00001358: MSTORE 00001359: DUP5 0000135a: PUSH1 0x20 0000135c: DUP4 0000135d: ADD 0000135e: MSTORE 0000135f: PUSH1 0x60 00001361: PUSH1 0x40 00001363: DUP4 00001364: ADD 00001365: MSTORE 00001366: PUSH2 0x1373 00001369: PUSH1 0x60 0000136b: DUP4 0000136c: ADD 0000136d: DUP5 0000136e: DUP7 0000136f: PUSH2 0x1225 00001372: JUMP 00001373: JUMPDEST 00001374: SWAP7 00001375: SWAP6 00001376: POP 00001377: POP 00001378: POP 00001379: POP 0000137a: POP 0000137b: POP 0000137c: JUMP 0000137d: JUMPDEST 0000137e: PUSH1 0x20 00001380: DUP1 00001381: DUP3 00001382: MSTORE 00001383: PUSH1 0x0f 00001385: SWAP1 00001386: DUP3 00001387: ADD 00001388: MSTORE 00001389: PUSH15 0x4163636f756e74206e6f7420454f41 00001399: PUSH1 0x88 0000139b: SHL 0000139c: PUSH1 0x40 0000139e: DUP3 0000139f: ADD 000013a0: MSTORE 000013a1: PUSH1 0x60 000013a3: ADD 000013a4: SWAP1 000013a5: JUMP 000013a6: JUMPDEST 000013a7: PUSH1 0x20 000013a9: DUP1 000013aa: DUP3 000013ab: MSTORE 000013ac: PUSH1 0x34 000013ae: SWAP1 000013af: DUP3 000013b0: ADD 000013b1: MSTORE 000013b2: PUSH32 0x5472616e7366657248656c7065723a3a736166655472616e736665724554483a 000013d3: PUSH1 0x40 000013d5: DUP3 000013d6: ADD 000013d7: MSTORE 000013d8: PUSH20 0x08115512081d1c985b9cd9995c8819985a5b1959 000013ed: PUSH1 0x62 000013ef: SHL 000013f0: PUSH1 0x60 000013f2: DUP3 000013f3: ADD 000013f4: MSTORE 000013f5: PUSH1 0x80 000013f7: ADD 000013f8: SWAP1 000013f9: JUMP 000013fa: JUMPDEST 000013fb: PUSH1 0x20 000013fd: DUP1 000013fe: DUP3 000013ff: MSTORE 00001400: PUSH1 0x26 00001402: SWAP1 00001403: DUP3 00001404: ADD 00001405: MSTORE 00001406: PUSH32 0x436f6e74726163742068617320616c7265616479206265656e20696e69746961 00001427: PUSH1 0x40 00001429: DUP3 0000142a: ADD 0000142b: MSTORE 0000142c: PUSH6 0x3634bd32b217 00001433: PUSH1 0xd1 00001435: SHL 00001436: PUSH1 0x60 00001438: DUP3 00001439: ADD 0000143a: MSTORE 0000143b: PUSH1 0x80 0000143d: ADD 0000143e: SWAP1 0000143f: JUMP 00001440: JUMPDEST 00001441: SWAP1 00001442: DUP2 00001443: MSTORE 00001444: PUSH1 0x20 00001446: ADD 00001447: SWAP1 00001448: JUMP 00001449: JUMPDEST 0000144a: PUSH1 0x00 0000144c: DUP5 0000144d: DUP3 0000144e: MSTORE 0000144f: PUSH1 0x40 00001451: PUSH1 0x20 00001453: DUP4 00001454: ADD 00001455: MSTORE 00001456: PUSH2 0x1463 00001459: PUSH1 0x40 0000145b: DUP4 0000145c: ADD 0000145d: DUP5 0000145e: DUP7 0000145f: PUSH2 0x1225 00001462: JUMP 00001463: JUMPDEST 00001464: SWAP6 00001465: SWAP5 00001466: POP 00001467: POP 00001468: POP 00001469: POP 0000146a: POP 0000146b: JUMP 0000146c: JUMPDEST 0000146d: PUSH1 0x00 0000146f: DUP4 00001470: DUP3 00001471: MSTORE 00001472: PUSH1 0x40 00001474: PUSH1 0x20 00001476: DUP4 00001477: ADD 00001478: MSTORE 00001479: PUSH2 0x0ce3 0000147c: PUSH1 0x40 0000147e: DUP4 0000147f: ADD 00001480: DUP5 00001481: PUSH2 0x124f 00001484: JUMP 00001485: JUMPDEST 00001486: PUSH1 0x00 00001488: JUMPDEST 00001489: DUP4 0000148a: DUP2 0000148b: LT 0000148c: ISZERO 0000148d: PUSH2 0x14a0 00001490: JUMPI 00001491: DUP2 00001492: DUP2 00001493: ADD 00001494: MLOAD 00001495: DUP4 00001496: DUP3 00001497: ADD 00001498: MSTORE 00001499: PUSH1 0x20 0000149b: ADD 0000149c: PUSH2 0x1488 0000149f: JUMP 000014a0: JUMPDEST 000014a1: DUP4 000014a2: DUP2 000014a3: GT 000014a4: ISZERO 000014a5: PUSH2 0x063b 000014a8: JUMPI 000014a9: POP 000014aa: POP 000014ab: PUSH1 0x00 000014ad: SWAP2 000014ae: ADD 000014af: MSTORE 000014b0: JUMP 000014b1: INVALID 000014b2: UNKNOWN(0x4E) 000014b3: JUMP 000014b4: UNKNOWN(0x4D) 000014b5: PUSH0 000014b6: PC 000014b7: NUMBER 000014b8: BASEFEE 000014b9: COINBASE 000014ba: BLOBHASH 000014bb: UNKNOWN(0x4E) 000014bc: GASPRICE 000014bd: KECCAK256 000014be: PUSH24 0x726f6e672073656e646572206f662063726f73732d646f6d 000014d7: PUSH2 0x696e 000014da: KECCAK256 000014db: PUSH14 0x657373616765416464726573733a 000014ea: KECCAK256 000014eb: PUSH10 0x6e73756666696369656e 000014f6: PUSH21 0x2062616c616e636520666f722063616c6c53616665 0000150c: GASLIMIT 0000150d: MSTORE 0000150e: NUMBER 0000150f: ORIGIN 00001510: ADDRESS 00001511: GASPRICE 00001512: KECCAK256 00001513: GASLIMIT 00001514: MSTORE 00001515: NUMBER 00001516: ORIGIN 00001517: ADDRESS 00001518: KECCAK256 00001519: PUSH16 0x7065726174696f6e20646964206e6f74 0000152a: KECCAK256 0000152b: PUSH20 0x7563636565644e564d5f58434841494e3a206d65 00001540: PUSH20 0x73656e67657220636f6e747261637420756e6175 00001555: PUSH21 0x68656e74696361746564a164736f6c634300070600 0000156b: EXP
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x8b4c40b0",
"selector": "0x8b4c40b0",
"calldata_variants": [
"0x8b4c40b0",
"0x8b4c40b00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8f601f66",
"selector": "0x8f601f66",
"calldata_variants": [
"0x8f601f66",
"0x8f601f660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91c49bf8",
"selector": "0x91c49bf8",
"calldata_variants": [
"0x91c49bf8",
"0x91c49bf80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a2ac6d5",
"selector": "0x9a2ac6d5",
"calldata_variants": [
"0x9a2ac6d5",
"0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9f9e675",
"selector": "0xa9f9e675",
"calldata_variants": [
"0xa9f9e675",
"0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1a1a882",
"selector": "0xb1a1a882",
"calldata_variants": [
"0xb1a1a882",
"0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1532ec34",
"selector": "0x1532ec34",
"calldata_variants": [
"0x1532ec34",
"0x1532ec340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3cb747bf",
"selector": "0x3cb747bf",
"calldata_variants": [
"0x3cb747bf",
"0x3cb747bf0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 5391,
"type": "tx_origin_used"
},
{
"pc": 5398,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63
call_targets:
0xf46655cad8c7db3719af4eb9cfdac0987985080c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xf46655cad8c7db3719af4eb9cfdac0987985080c"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x8b4c40b0",
"selector": "0x8b4c40b0",
"calldata_variants": [
"0x8b4c40b0",
"0x8b4c40b00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8f601f66",
"selector": "0x8f601f66",
"calldata_variants": [
"0x8f601f66",
"0x8f601f660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91c49bf8",
"selector": "0x91c49bf8",
"calldata_variants": [
"0x91c49bf8",
"0x91c49bf80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a2ac6d5",
"selector": "0x9a2ac6d5",
"calldata_variants": [
"0x9a2ac6d5",
"0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9f9e675",
"selector": "0xa9f9e675",
"calldata_variants": [
"0xa9f9e675",
"0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1a1a882",
"selector": "0xb1a1a882",
"calldata_variants": [
"0xb1a1a882",
"0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1532ec34",
"selector": "0x1532ec34",
"calldata_variants": [
"0x1532ec34",
"0x1532ec340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3cb747bf",
"selector": "0x3cb747bf",
"calldata_variants": [
"0x3cb747bf",
"0x3cb747bf0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1120,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2409,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3574,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [
{
"pc": 5391,
"type": "tx_origin_used"
},
{
"pc": 5398,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63
call_targets:
0xf46655cad8c7db3719af4eb9cfdac0987985080c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xc87645fe14713a25a04cb0d26816a187fb238097531e6fb9cc4c50ad63ba9b63",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xf46655cad8c7db3719af4eb9cfdac0987985080c"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x8b4c40b0",
"selector": "0x8b4c40b0",
"calldata_variants": [
"0x8b4c40b0",
"0x8b4c40b00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8f601f66",
"selector": "0x8f601f66",
"calldata_variants": [
"0x8f601f66",
"0x8f601f660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91c49bf8",
"selector": "0x91c49bf8",
"calldata_variants": [
"0x91c49bf8",
"0x91c49bf80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a2ac6d5",
"selector": "0x9a2ac6d5",
"calldata_variants": [
"0x9a2ac6d5",
"0x9a2ac6d50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9f9e675",
"selector": "0xa9f9e675",
"calldata_variants": [
"0xa9f9e675",
"0xa9f9e6750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1a1a882",
"selector": "0xb1a1a882",
"calldata_variants": [
"0xb1a1a882",
"0xb1a1a8820000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1532ec34",
"selector": "0x1532ec34",
"calldata_variants": [
"0x1532ec34",
"0x1532ec340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3cb747bf",
"selector": "0x3cb747bf",
"calldata_variants": [
"0x3cb747bf",
"0x3cb747bf0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1120,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2409,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3574,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": [
{
"pc": 5391,
"type": "tx_origin_used"
},
{
"pc": 5398,
"type": "tx_origin_used"
}
]
}
|