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

Analysis Run

6c04c03d-2887-418e-9dec-367c35781c43

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 12:43 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31497 report.consolidate complete 1 / 1 3 months ago
77608 artifact.fetch complete 1 / 3 1 week ago
77609 tool.cast_disasm complete 1 / 3 1 week ago
77610 analysis.bundle complete 1 / 3 1 week ago
77611 capability.graph complete 1 / 3 1 week ago
77612 detector.run complete 1 / 3 1 week ago
77613 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable profit path identified in the provided runtime bytecode; external calls/value transfers appear gated by internal checks or role restrictions, with no unprotected upgrade/selfdestruct or direct arbitrary value transfer observable from bytecode alone.
View stderr
[codex:1218309] OpenAI Codex v0.77.0 (research preview)
[codex:1218309] --------
[codex:1218309] workdir: /tmp/codex-multi-8295m99t
[codex:1218309] model: gpt-5.2-codex
[codex:1218309] provider: openai
[codex:1218309] approval: never
[codex:1218309] sandbox: read-only
[codex:1218309] reasoning effort: xhigh
[codex:1218309] reasoning summaries: auto
[codex:1218309] session id: 019b8670-3500-7651-a8c4-5bc29d264524
[codex:1218309] --------
[codex:1218309] user
[codex:1218309] 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:1218309] 
[codex:1218309] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1218309] 
[codex:1218309] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1218309] - Gas inefficiency, code quality, or best practices
[codex:1218309] - Theoretical vulnerabilities without a clear extraction path
[codex:1218309] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1218309] - Issues requiring social engineering or off-chain coordination
[codex:1218309] 
[codex:1218309] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1218309] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1218309] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1218309] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1218309] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1218309] - External calls before state updates (reentrancy)
[codex:1218309] - SELFDESTRUCT with controllable beneficiary
[codex:1218309] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1218309] 
[codex:1218309] For each finding, you MUST explain:
[codex:1218309] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1218309] 2. The concrete sequence of transactions to extract value
[codex:1218309] 3. Why you believe this is exploitable (not just suspicious)
[codex:1218309] 
[codex:1218309] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1218309] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1218309] 
[codex:1218309] Output MUST be valid JSON matching the provided schema.
[codex:1218309] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1218309] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1218309] mcp startup: no servers
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Opening BYTECODE_BUNDLE.txt**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc ls in /tmp/codex-multi-8295m99t succeeded in 5ms:
[codex:1218309] BYTECODE_BUNDLE.txt
[codex:1218309] codex-output-schema.json
[codex:1218309] exec
[codex:1218309] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-8295m99t succeeded in 5ms:
[codex:1218309] Runtime bytecode bundle for best-effort auditing.
[codex:1218309] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1218309] 
[codex:1218309] FILE: runtime_bytecode.hex
[codex:1218309] 0x6080604052600436106100e15760003560e01c80636e764a3c1161007f5780638459e45a116100595780638459e45a1461023c578063b588d2251461025c578063c4d2b1b31461027c578063cb76ef2d146102ac576100e8565b80636e764a3c146101e75780636e947298146102075780637e695d561461021c576100e8565b80632391b6a6116100bb5780632391b6a61461016757806338e4f064146101875780634d34425e146101a75780634d3c7fb8146101c7576100e8565b806301ad194f146100ed5780631bc6dec81461010f5780631cb0c3e714610145576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004611a6f565b6102cc565b005b34801561011b57600080fd5b5061012f61012a366004611926565b6102e8565b60405161013c9190611ea0565b60405180910390f35b34801561015157600080fd5b5061015a610307565b60405161013c9190611e26565b34801561017357600080fd5b5061010d610182366004611926565b61031c565b34801561019357600080fd5b5061010d6101a2366004611941565b6103ca565b3480156101b357600080fd5b5061010d6101c2366004611a6f565b610437565b3480156101d357600080fd5b5061010d6101e2366004611a23565b610551565b3480156101f357600080fd5b5061015a6102023660046119a3565b61079f565b34801561021357600080fd5b5061012f610a18565b34801561022857600080fd5b5061012f610237366004611926565b610a1c565b34801561024857600080fd5b5061010d610257366004611a6f565b610a7c565b34801561026857600080fd5b5061012f610277366004611926565b610a94565b34801561028857600080fd5b5061029c61029736600461198b565b610b19565b60405161013c9493929190611f96565b3480156102b857600080fd5b5061012f6102c7366004611a9b565b610b3f565b6102e46102de36849003840184611a9b565b82610bc0565b5050565b6001600160a01b0381166000908152600160205260409020545b919050565b6000546201000090046001600160a01b031690565b600054610100900460ff16806103355750610335610e91565b80610343575060005460ff16155b6103685760405162461bcd60e51b815260040161035f90612215565b60405180910390fd5b600054610100900460ff16158015610393576000805460ff1961ff0019909116610100171660011790555b6000805462010000600160b01b031916620100006001600160a01b0385160217905580156102e4576000805461ff00191690555050565b6000546201000090046001600160a01b031633146103fa5760405162461bcd60e51b815260040161035f90612523565b600061040583610a1c565b9050818110156104275760405162461bcd60e51b815260040161035f90612196565b610432833384610e97565b505050565b813560009081526002602052604090205461045a6102c736859003850185611a9b565b146104775760405162461bcd60e51b815260040161035f906122e6565b813560009081526002602052604090206003015442106104a95760405162461bcd60e51b815260040161035f90612489565b81356000908152600260205260409020600101805482019055806104d7610237610100850160e08601611926565b10156104f55760405162461bcd60e51b815260040161035f906120a5565b61050f610509610100840160e08501611926565b82610ed6565b81600001357fe2511e4cea073cd1ede5b25a5089509b8d88ab0c1c3d8ddb3717e7afbf8239813383604051610545929190611e3a565b60405180910390a25050565b7331ba589072278d82207212702de9a1c2b9d42c2833146105845760405162461bcd60e51b815260040161035f906123ba565b82356000908152600260205260409020546105a76102c736869003860186611a9b565b146105c45760405162461bcd60e51b815260040161035f906122e6565b823560009081526002602081905260409091200154158015906105f95750823560009081526002602052604090206001015415155b6106155760405162461bcd60e51b815260040161035f9061236b565b82356000908152600260205260409020600301544211806106f257506001600160a01b03811663041abcde610651610100860160e08701611926565b61066361012087016101008801611926565b8635600090815260026020526040908190206001015490516001600160e01b031960e086901b1681526106a093929160608a013591600401611e77565b602060405180830381600087803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f2919061196b565b61070e5760405162461bcd60e51b815260040161035f9061215f565b82356000908152600260205260408120600101805491905561074061073a610100860160e08701611926565b82610f1f565b61075b610754610100860160e08701611926565b8483610f48565b83600001357fd46d78fa6d2c31ef7370232916f555e0972dcff745a87e3faf1d72b4c999c5708483604051610791929190611e3a565b60405180910390a250505050565b60007331ba589072278d82207212702de9a1c2b9d42c2833146107d45760405162461bcd60e51b815260040161035f906123ba565b6000546201000090046001600160a01b031661083c6108006107fb36869003860186611a9b565b610f52565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110a092505050565b6001600160a01b0316146108625760405162461bcd60e51b815260040161035f906121e0565b6108746102c736849003840184611a9b565b82356000908152600260205260409081902091825560a08401356001909201919091556108bc9042906108ad9060608601908601611b6d565b67ffffffffffffffff16611114565b8235600090815260026020908152604091829020600301929092556108ff916060850135916108f091908601908601611b6d565b67ffffffffffffffff16611140565b82356000908152600260208190526040909120015560a082013561092d610237610100850160e08601611926565b101561094b5760405162461bcd60e51b815260040161035f9061240c565b61096961095f610100840160e08501611926565b8360a00135610ed6565b81357faf0a96c5e2199c01ff2f213e7cce383bcf7c9e108a9096717e55d53a4816317e60608401356109a16040860160208701611b6d565b6109b16060870160408801611b6d565b6109c2610100880160e08901611926565b6109d461012089016101008a01611926565b6109e460e08a0160c08b01611926565b6040516109f6969594939291906125df565b60405180910390a250506000546201000090046001600160a01b031692915050565b4790565b600080610a28836102e8565b90506001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610a6f57610a6781610a5b610a18565b9063ffffffff61117f16565b915050610302565b610a6781610a5b85610a94565b6102e4610a8e36849003840184611a9b565b826111c1565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610ac3903090600401611e26565b60206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190611b55565b92915050565b600090815260026020819052604090912080546001820154600383015492909301549093565b6000604051610b4d90611bb1565b6040518091039020826000015183602001518460400151856060015186608001518760a001518860c001518960e001518a61010001518b6101200151604051602001610ba39b9a99989796959493929190611f2d565b604051602081830303815290604052805190602001209050919050565b8151600090815260026020526040902054610bda83610b3f565b14610bf75760405162461bcd60e51b815260040161035f906122e6565b6000610c07836101000151610a1c565b6101008401519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610c4657610c43818363ffffffff6113af16565b90505b8251600090815260026020819052604090912001548015801590610c7d575083516000908152600260205260409020600301544211155b8015610c9b5750835160009081526002602052604090206001015415155b610cb75760405162461bcd60e51b815260040161035f90612039565b8215610ccc57610ccc846101000151846113d4565b81811115610d1157610ce384610100015183610ed6565b610cf3818363ffffffff61117f16565b84516000908152600260208190526040909120018190559050610e5b565b6000610d2f8560600151866020015167ffffffffffffffff16611140565b610100860151909150610d5190610d4c838563ffffffff61117f16565b610f1f565b8451600090815260026020819052604080832090910182905560e08701518751835290822060010154919350610d8691610f1f565b8451600090815260026020526040812060010181905560608601516080870151610db091906113ef565b61010087015160c0880151919250610dd791610dd2858563ffffffff61117f16565b611407565b610dec86610100015187610120015183611407565b8560c001516001600160a01b03166385a336c5876060015188604001516040518363ffffffff1660e01b8152600401610e269291906125c7565b600060405180830381600087803b158015610e4057600080fd5b505af1158015610e54573d6000803e3d6000fd5b5050505050505b83516040517f9bd393ad3b7beb95a663b7d1becdd0cecb8b3dd0734109be567e8bb707a787b190610791908690859042906125b1565b303b1590565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610ecb57610ec68282611412565b610432565b610ec68383836114b3565b6001600160a01b038216600090815260016020526040902054610eff908263ffffffff6113af16565b6001600160a01b0390921660009081526001602052604090209190915550565b6001600160a01b038216600090815260016020526040902054610eff908263ffffffff61117f16565b6104328282611412565b600080604051610f6190611cd9565b604080519182900382208282018252600b83526a437265646974204c696e6560a81b6020938401528151808301835260058152640312e302e360dc1b9084015290519092507f5e420c907c7ced2c7df83d4dc6c080ad1bca3c265fdd2ee768fae7918253a466917f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c914691600091611003918791879187918791309101611ea9565b604051602081830303815290604052805190602001209050600060405161102990611d46565b6040518091039020886000015189602001518a604001518b606001518c608001518d60a001518e60e001518f610100015160405160200161107299989796959493929190611ed5565b60405160208183030381529060405280519060200120905061109482826114cd565b98975050505050505050565b60008151604114156110d45760208201516040830151606084015160001a6110ca86828585611500565b9350505050610b13565b8151604014156110fc57602082015160408301516110f38583836115f6565b92505050610b13565b60405162461bcd60e51b815260040161035f9061206e565b600061113961112c836201518063ffffffff61162016565b849063ffffffff6113af16565b9392505050565b600080611165612710611159868663ffffffff61162016565b9063ffffffff61165a16565b9050611177848263ffffffff6113af16565b949350505050565b600061113983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061169c565b81516000908152600260205260409020546111db83610b3f565b146111f85760405162461bcd60e51b815260040161035f906122e6565b60006112168360600151846020015167ffffffffffffffff16611140565b905080821015801561123957508251600090815260026020526040902060010154155b6112555760405162461bcd60e51b815260040161035f9061236b565b82516000908152600260208190526040822001549061127a838363ffffffff61117f16565b85516000908152600260208190526040822001556101008601519091506112a190856113d4565b6112b085610100015182610f1f565b60006112c4866060015187608001516113ef565b61010087015160c08801519192506112e691610dd2878563ffffffff61117f16565b6112fb86610100015187610120015183611407565b8560c001516001600160a01b03166385a336c5876060015188604001516040518363ffffffff1660e01b81526004016113359291906125c7565b600060405180830381600087803b15801561134f57600080fd5b505af1158015611363573d6000803e3d6000fd5b5050505085600001517f9bd393ad3b7beb95a663b7d1becdd0cecb8b3dd0734109be567e8bb707a787b186854260405161139f939291906125b1565b60405180910390a2505050505050565b6000828201838110156111395760405162461bcd60e51b815260040161035f906120e6565b6102e46001600160a01b03831633308463ffffffff6116c816565b6000611139612710611159858563ffffffff61162016565b6104328383836114b3565b478111156114325760405162461bcd60e51b815260040161035f9061256e565b6000826001600160a01b0316826109609060405161144f90611d43565b600060405180830381858888f193505050503d806000811461148d576040519150601f19603f3d011682016040523d82523d6000602084013e611492565b606091505b50509050806104325760405162461bcd60e51b815260040161035f90612328565b6104326001600160a01b038416838363ffffffff61172616565b600082826040516020016114e2929190611cbe565b60405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156115425760405162461bcd60e51b815260040161035f9061211d565b8360ff16601b148061155757508360ff16601c145b6115735760405162461bcd60e51b815260040161035f90612263565b6000600186868686604051600081526020016040526040516115989493929190611fb1565b6020604051602081039080840390855afa1580156115ba573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ed5760405162461bcd60e51b815260040161035f90612002565b95945050505050565b60006001600160ff1b03821660ff83901c601b0161161686828785611500565b9695505050505050565b60008261162f57506000610b13565b8282028284828161163c57fe5b04146111395760405162461bcd60e51b815260040161035f906122a5565b600061113983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611745565b600081848411156116c05760405162461bcd60e51b815260040161035f9190611fcf565b505050900390565b611720846323b872dd60e01b8585856040516024016116e993929190611e53565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261177c565b50505050565b6104328363a9059cbb60e01b84846040516024016116e9929190611e3a565b600081836117665760405162461bcd60e51b815260040161035f9190611fcf565b50600083858161177257fe5b0495945050505050565b60606117d1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661180b9092919063ffffffff16565b80519091501561043257808060200190518101906117ef919061196b565b6104325760405162461bcd60e51b815260040161035f906124d9565b606061117784846000856060611820856118d9565b61183c5760405162461bcd60e51b815260040161035f90612452565b60006060866001600160a01b031685876040516118599190611b95565b60006040518083038185875af1925050503d8060008114611896576040519150601f19603f3d011682016040523d82523d6000602084013e61189b565b606091505b509150915081156118af5791506111779050565b8051156118bf5780518082602001fd5b8360405162461bcd60e51b815260040161035f9190611fcf565b3b151590565b80356001600160a01b0381168114610b1357600080fd5b60006101408284031215611908578081fd5b50919050565b803567ffffffffffffffff81168114610b1357600080fd5b600060208284031215611937578081fd5b61113983836118df565b60008060408385031215611953578081fd5b61195d84846118df565b946020939093013593505050565b60006020828403121561197c578081fd5b81518015158114611139578182fd5b60006020828403121561199c578081fd5b5035919050565b600080600061016084860312156119b8578081fd5b833567ffffffffffffffff808211156119cf578283fd5b81860187601f8201126119e0578384fd5b80359250818311156119f0578384fd5b876020848301011115611a01578384fd5b602081019550505080925050611a1a85602086016118f6565b90509250925092565b60008060006101808486031215611a38578283fd5b611a4285856118f6565b9250610140840135611a5381612673565b9150610160840135611a6481612673565b809150509250925092565b6000806101608385031215611a82578182fd5b611a8c84846118f6565b94610140939093013593505050565b6000610140808385031215611aae578182fd5b611ab781612620565b83358152611ac8856020860161190e565b6020820152611ada856040860161190e565b6040820152606084013560608201526080840135608082015260a084013560a0820152611b0a8560c086016118df565b60c0820152611b1c8560e086016118df565b60e08201526101009150611b32858386016118df565b828201526101209150611b47858386016118df565b918101919091529392505050565b600060208284031215611b66578081fd5b5051919050565b600060208284031215611b7e578081fd5b813567ffffffffffffffff81168114611139578182fd5b60008251611ba7818460208701612647565b9190910192915050565b7f4c6f616e526571756573742862797465733332206c6f616e49642c2075696e7481527f3634206c6f616e496e746572657374526174652c2075696e743634206c6f616e60208201527f5465726d2c2075696e74323536206c6f616e416d6f756e742c2075696e74323560408201527f36206665652c2075696e7432353620696e697469616c436f6c6c61746572616c60608201527f416d6f756e742c2061646472657373206c656e6465722c20616464726573732060808201527f636f6c6c61746572616c416464726573732c206164647265737320756e64657260a08201527f6c79696e67416464726573732c206164647265737320696e737572657229000060c082015260de0190565b61190160f01b81526002810192909252602282015260420190565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520190565b90565b7f4c6f616e526571756573742862797465733332206c6f616e49642c75696e743681527f34206c6f616e496e746572657374526174652c75696e743634206c6f616e546560208201527f726d2c75696e74323536206c6f616e416d6f756e742c75696e7432353620666560408201527f652c75696e7432353620696e697469616c436f6c6c61746572616c416d6f756e60608201527f742c6164647265737320636f6c6c61746572616c416464726573732c6164647260808201527565737320756e6465726c79696e67416464726573732960501b60a082015260b60190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b90815260200190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b988952602089019790975267ffffffffffffffff9586166040890152939094166060870152608086019190915260a085015260c08401919091526001600160a01b0390811660e0840152166101008201526101200190565b9a8b5260208b019990995267ffffffffffffffff97881660408b0152959096166060890152608088019390935260a087019190915260c08601526001600160a01b0390811660e08601529182166101008501528116610120840152166101408201526101600190565b93845260208401929092526040830152606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152611fee816040850160208701612647565b601f01601f19169190910160400192915050565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252818101527f4c6f616e20436f6e74726163743a20496e76616c69642072657061796d656e74604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526021908201527f4c6f616e20436f6e74726163743a20496e73756666696369656e7420617373656040820152601d60fa1b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252601f908201527f4c697175696461746f723a20496e76616c6964206c69717569646174696f6e00604082015260600190565b6020808252602a908201527f4c6f616e20436f6e74726163743a20496e73756666696369656e7420756e6c6f60408201526918dad95908185cdcd95d60b21b606082015260800190565b6020808252818101527f4c6f616e20436f6e74726163743a20496e76616c6964207369676e6174757265604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f4c6f616e20436f6e74726163743a20496e636f7272656374206c6f616e206461604082015261746160f01b606082015260800190565b60208082526023908201527f4c6f616e20436f6e74726163743a204661696c656420746f2073656e642045746040820152623432b960e91b606082015260800190565b6020808252602f908201527f4c6f616e20436f6e74726163743a20496e76616c6964206c697175696461746960408201526e6f6e207374617465206368616e676560881b606082015260800190565b60208082526032908201527f4c6f616e20436f6e74726163743a2043616c6c6572206d75737420626520536d604082015271185c9d10dc99591a5d0810dbdb9d1c9858dd60721b606082015260800190565b60208082526026908201527f4c6f616e20436f6e74726163743a20496e73756666696369656e7420636f6c6c604082015265185d195c985b60d21b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526030908201527f4c6f616e20436f6e74726163743a20496e6372656173696e6720636f6c6c617460408201526f195c985b081b9bdd08185b1b1bddd95960821b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252602b908201527f4c6f616e20436f6e74726163743a20417574686f72697a6564206f6e6c79206660408201526a37b9103137b93937bbb2b960a91b606082015260800190565b60208082526023908201527f4c6f616e20436f6e74726163743a20496e73756666696369656e742062616c616040820152626e636560e81b606082015260800190565b9283526020830191909152604082015260600190565b91825267ffffffffffffffff16602082015260400190565b95865267ffffffffffffffff94851660208701529290931660408501526001600160a01b03908116606085015291821660808401521660a082015260c00190565b60405181810167ffffffffffffffff8111828210171561263f57600080fd5b604052919050565b60005b8381101561266257818101518382015260200161264a565b838111156117205750506000910152565b6001600160a01b038116811461268857600080fd5b5056fea2646970667358221220b329c5275a6caba7610cb74ecb65f399fbf4f5f84770dc3670024478b103d51164736f6c63430006060033
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Planning bytecode exploit analysis**
[codex:1218309] 
[codex:1218309] I'm preparing to analyze the bytecode of a suspected loan contract for any exploitable patterns, focusing on function selectors and potential unauthorized fund transfers. Since there's no source code, I'll rely on heuristics and possibly a Python script to disassemble and inspect key opcodes like CALL, DELEGATECALL, SELFDESTRUCT, and SSTORE to identify vulnerabilities or access control issues.
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re
[codex:1218309] from binascii import unhexlify
[codex:1218309] 
[codex:1218309] hexcode=open('runtime_bytecode.hex','rb').read().strip()
[codex:1218309] if hexcode.startswith(b'0x'): hexcode=hexcode[2:]
[codex:1218309] code=unhexlify(hexcode)
[codex:1218309] 
[codex:1218309] # opcode table: opcode byte -> (name, immediate bytes)
[codex:1218309] # Build standard EVM opcodes
[codex:1218309] ops = {}
[codex:1218309] # 0x00-0x0f
[codex:1218309] names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] ops.update(names)
[codex:1218309] # PUSH1-32
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] # DUP1-16
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] # SWAP1-16
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] # LOG0-4
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] # Disassemble and capture CALL/DELEGATECALL/SELFDESTRUCT/SSTORE/JUMPI
[codex:1218309] positions=[]
[codex:1218309] 
[codex:1218309] offset=0
[codex:1218309] while offset < len(code):
[codex:1218309]     op=code[offset]
[codex:1218309]     if op in ops:
[codex:1218309]         name, imm = ops[op]
[codex:1218309]     else:
[codex:1218309]         name='UNKNOWN'
[codex:1218309]         imm=0
[codex:1218309]     if name in ('CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT','SSTORE','SLOAD','CALLCODE'):
[codex:1218309]         positions.append((offset,name))
[codex:1218309]     # skip immediate bytes
[codex:1218309]     offset+=1+imm
[codex:1218309] 
[codex:1218309] # print positions
[codex:1218309] print('Total length',len(code))
[codex:1218309] print('Key op positions:',len(positions))
[codex:1218309] for off,name in positions[:50]:
[codex:1218309]     print(hex(off),name)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t exited 1 in 27ms:
[codex:1218309] Traceback (most recent call last):
[codex:1218309]   File "<stdin>", line 4, in <module>
[codex:1218309] FileNotFoundError: [Errno 2] No such file or directory: 'runtime_bytecode.hex'
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Extracting bytecode from file**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] # extract hex after 'FILE: runtime_bytecode.hex'
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] if not match:
[codex:1218309]     raise SystemExit('not found')
[codex:1218309] hexcode=match.group(1)
[codex:1218309] print('hex len', len(hexcode))
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] print('bytes', len(code))
[codex:1218309] 
[codex:1218309] # opcode table
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] ops.update(base_names)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] positions=[]
[codex:1218309] offset=0
[codex:1218309] while offset < len(code):
[codex:1218309]     op=code[offset]
[codex:1218309]     if op in ops:
[codex:1218309]         name, imm = ops[op]
[codex:1218309]     else:
[codex:1218309]         name='UNKNOWN'
[codex:1218309]         imm=0
[codex:1218309]     if name in ('CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT','SSTORE','SLOAD','CALLCODE'):
[codex:1218309]         positions.append((offset,name))
[codex:1218309]     offset+=1+imm
[codex:1218309] 
[codex:1218309] print('key op count', len(positions))
[codex:1218309] for off,name in positions[:80]:
[codex:1218309]     print(hex(off), name)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t exited 1 in 30ms:
[codex:1218309] hex len 19844
[codex:1218309] bytes 9921
[codex:1218309] Traceback (most recent call last):
[codex:1218309]   File "<stdin>", line 38, in <module>
[codex:1218309] ValueError: too many values to unpack (expected 2)
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Standardizing ops dictionary entries**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] if not match:
[codex:1218309]     raise SystemExit('not found')
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] 
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] positions=[]
[codex:1218309] offset=0
[codex:1218309] while offset < len(code):
[codex:1218309]     op=code[offset]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     if name in ('CALL','DELEGATECALL','STATICCALL','SELFDESTRUCT','SSTORE','SLOAD','CALLCODE'):
[codex:1218309]         positions.append((offset,name))
[codex:1218309]     offset+=1+imm
[codex:1218309] 
[codex:1218309] print('length bytes', len(code))
[codex:1218309] print('key op count', len(positions))
[codex:1218309] for off,name in positions[:80]:
[codex:1218309]     print(hex(off), name)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 26ms:
[codex:1218309] length bytes 9921
[codex:1218309] key op count 55
[codex:1218309] 0x301 SLOAD
[codex:1218309] 0x30a SLOAD
[codex:1218309] 0x31f SLOAD
[codex:1218309] 0x33e SLOAD
[codex:1218309] 0x36b SLOAD
[codex:1218309] 0x37e SLOAD
[codex:1218309] 0x392 SSTORE
[codex:1218309] 0x397 SLOAD
[codex:1218309] 0x3b5 SSTORE
[codex:1218309] 0x3bf SLOAD
[codex:1218309] 0x3c6 SSTORE
[codex:1218309] 0x3cd SLOAD
[codex:1218309] 0x448 SLOAD
[codex:1218309] 0x48b SLOAD
[codex:1218309] 0x4be SLOAD
[codex:1218309] 0x4c2 SSTORE
[codex:1218309] 0x595 SLOAD
[codex:1218309] 0x5d9 SLOAD
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing contract call patterns**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] 
[codex:1218309] # opcode table
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] # disassemble to list
[codex:1218309] ops_list=[]
[codex:1218309] off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     data=None
[codex:1218309]     if imm:
[codex:1218309]         data=code[off+1:off+1+imm]
[codex:1218309]     ops_list.append((off, name, imm, data))
[codex:1218309]     off += 1+imm
[codex:1218309] 
[codex:1218309] # build map offset->index
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] def show_context(target_off, before=8, after=10):
[codex:1218309]     idx=index_by_off.get(target_off)
[codex:1218309]     if idx is None:
[codex:1218309]         print('offset not found', target_off)
[codex:1218309]         return
[codex:1218309]     start=max(0, idx-before)
[codex:1218309]     end=min(len(ops_list), idx+after+1)
[codex:1218309]     for off,name,imm,data in ops_list[start:end]:
[codex:1218309]         if data is not None and imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309]     print('----')
[codex:1218309] 
[codex:1218309] call_offsets=[0x6bd,0xe43,0x1352,0x145c,0x1866]
[codex:1218309] static_offsets=[0xade,0x15a9]
[codex:1218309] print('CALL contexts')
[codex:1218309] for o in call_offsets:
[codex:1218309]     show_context(o)
[codex:1218309] print('STATICCALL contexts')
[codex:1218309] for o in static_offsets:
[codex:1218309]     show_context(o)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 30ms:
[codex:1218309] CALL contexts
[codex:1218309] 06b2: PUSH2 0x06ba
[codex:1218309] 06b5: JUMPI
[codex:1218309] 06b6: PUSH1 0x00
[codex:1218309] 06b8: DUP1
[codex:1218309] 06b9: REVERT
[codex:1218309] 06ba: JUMPDEST
[codex:1218309] 06bb: POP
[codex:1218309] 06bc: GAS
[codex:1218309] 06bd: CALL
[codex:1218309] 06be: ISZERO
[codex:1218309] 06bf: DUP1
[codex:1218309] 06c0: ISZERO
[codex:1218309] 06c1: PUSH2 0x06ce
[codex:1218309] 06c4: JUMPI
[codex:1218309] 06c5: RETURNDATASIZE
[codex:1218309] 06c6: PUSH1 0x00
[codex:1218309] 06c8: DUP1
[codex:1218309] 06c9: RETURNDATACOPY
[codex:1218309] 06ca: RETURNDATASIZE
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing call argument context in bytecode**
[codex:1218309] 
[codex:1218309] I'm examining opcode patterns around low-level calls to understand arguments like value, address, and calldata. I want to detect access controls, owner checks, and whether any functions might allow unauthorized withdrawals, focusing on revert strings and known ERC20 function selectors for clues. This deep inspection involves tracing stack pushes and decoding revert messages to find possible exploitable functions or initialization issues.
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] 
[codex:1218309] # opcode table
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] # disassemble to list
[codex:1218309] ops_list=[]
[codex:1218309] off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     data=None
[codex:1218309]     if imm:
[codex:1218309]         data=code[off+1:off+1+imm]
[codex:1218309]     ops_list.append((off, name, imm, data))
[codex:1218309]     off += 1+imm
[codex:1218309] 
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] def show_context(target_off, before=30, after=30):
[codex:1218309]     idx=index_by_off.get(target_off)
[codex:1218309]     if idx is None:
[codex:1218309]         print('offset not found', target_off)
[codex:1218309]         return
[codex:1218309]     start=max(0, idx-before)
[codex:1218309]     end=min(len(ops_list), idx+after+1)
[codex:1218309]     for off,name,imm,data in ops_list[start:end]:
[codex:1218309]         if data is not None and imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309]     print('----')
[codex:1218309] 
[codex:1218309] for o in [0x6bd,0xe43,0x1352,0x145c,0x1866]:
[codex:1218309]     print('context for', hex(o))
[codex:1218309]     show_context(o)
[codex:1218309] 
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 30ms:
[codex:1218309] context for 0x6bd
[codex:1218309] 0696: ADD
[codex:1218309] 0697: CALLDATALOAD
[codex:1218309] 0698: SWAP2
[codex:1218309] 0699: PUSH1 0x04
[codex:1218309] 069b: ADD
[codex:1218309] 069c: PUSH2 0x1e77
[codex:1218309] 069f: JUMP
[codex:1218309] 06a0: JUMPDEST
[codex:1218309] 06a1: PUSH1 0x20
[codex:1218309] 06a3: PUSH1 0x40
[codex:1218309] 06a5: MLOAD
[codex:1218309] 06a6: DUP1
[codex:1218309] 06a7: DUP4
[codex:1218309] 06a8: SUB
[codex:1218309] 06a9: DUP2
[codex:1218309] 06aa: PUSH1 0x00
[codex:1218309] 06ac: DUP8
[codex:1218309] 06ad: DUP1
[codex:1218309] 06ae: EXTCODESIZE
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing low-level calls and dispatcher selectors**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] 
[codex:1218309] # opcode table
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] # disassemble to list
[codex:1218309] ops_list=[]
[codex:1218309] off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     data=None
[codex:1218309]     if imm:
[codex:1218309]         data=code[off+1:off+1+imm]
[codex:1218309]     ops_list.append((off, name, imm, data))
[codex:1218309]     off += 1+imm
[codex:1218309] 
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] def show_context(target_off, before=8, after=30):
[codex:1218309]     idx=index_by_off.get(target_off)
[codex:1218309]     if idx is None:
[codex:1218309]         print('offset not found', target_off)
[codex:1218309]         return
[codex:1218309]     start=max(0, idx-before)
[codex:1218309]     end=min(len(ops_list), idx+after+1)
[codex:1218309]     for off,name,imm,data in ops_list[start:end]:
[codex:1218309]         if data is not None and imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309]     print('----')
[codex:1218309] 
[codex:1218309] # function entrypoints from dispatcher
[codex:1218309] entries=[0x00ed,0x010f,0x0145,0x0167,0x0187,0x01a7,0x01c7,0x01e7,0x0207,0x021c,0x023c,0x025c,0x027c,0x02ac]
[codex:1218309] for e in entries:
[codex:1218309]     print('entry', hex(e))
[codex:1218309]     show_context(e)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 31ms:
[codex:1218309] entry 0xed
[codex:1218309] 00e2: CALLDATASIZE
[codex:1218309] 00e3: PUSH2 0x00e8
[codex:1218309] 00e6: JUMPI
[codex:1218309] 00e7: STOP
[codex:1218309] 00e8: JUMPDEST
[codex:1218309] 00e9: PUSH1 0x00
[codex:1218309] 00eb: DUP1
[codex:1218309] 00ec: REVERT
[codex:1218309] 00ed: JUMPDEST
[codex:1218309] 00ee: CALLVALUE
[codex:1218309] 00ef: DUP1
[codex:1218309] 00f0: ISZERO
[codex:1218309] 00f1: PUSH2 0x00f9
[codex:1218309] 00f4: JUMPI
[codex:1218309] 00f5: PUSH1 0x00
[codex:1218309] 00f7: DUP1
[codex:1218309] 00f8: REVERT
[codex:1218309] 00f9: JUMPDEST
[codex:1218309] 00fa: POP
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Examining internal function addresses**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] 
[codex:1218309] # opcode table
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] ops_list=[]
[codex:1218309] off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     data=None
[codex:1218309]     if imm:
[codex:1218309]         data=code[off+1:off+1+imm]
[codex:1218309]     ops_list.append((off, name, imm, data))
[codex:1218309]     off += 1+imm
[codex:1218309] 
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] def show_from(start_off, count=80):
[codex:1218309]     idx=index_by_off.get(start_off)
[codex:1218309]     if idx is None:
[codex:1218309]         print('offset not found', start_off)
[codex:1218309]         return
[codex:1218309]     end=min(len(ops_list), idx+count)
[codex:1218309]     for off,name,imm,data in ops_list[idx:end]:
[codex:1218309]         if data is not None and imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309]     print('----')
[codex:1218309] 
[codex:1218309] internal=[0x02cc,0x02e8,0x0307,0x031c,0x03ca,0x0437,0x0551,0x079f,0x0a18,0x0a1c,0x0a7c,0x0a94,0x0b19,0x0b3f]
[codex:1218309] for off in internal:
[codex:1218309]     print('func', hex(off))
[codex:1218309]     show_from(off, 80)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 31ms:
[codex:1218309] func 0x2cc
[codex:1218309] 02cc: JUMPDEST
[codex:1218309] 02cd: PUSH2 0x02e4
[codex:1218309] 02d0: PUSH2 0x02de
[codex:1218309] 02d3: CALLDATASIZE
[codex:1218309] 02d4: DUP5
[codex:1218309] 02d5: SWAP1
[codex:1218309] 02d6: SUB
[codex:1218309] 02d7: DUP5
[codex:1218309] 02d8: ADD
[codex:1218309] 02d9: DUP5
[codex:1218309] 02da: PUSH2 0x1a9b
[codex:1218309] 02dd: JUMP
[codex:1218309] 02de: JUMPDEST
[codex:1218309] 02df: DUP3
[codex:1218309] 02e0: PUSH2 0x0bc0
[codex:1218309] 02e3: JUMP
[codex:1218309] 02e4: JUMPDEST
[codex:1218309] 02e5: POP
[codex:1218309] 02e6: POP
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing function roles and call sites**
[codex:1218309] 
[codex:1218309] I'm dissecting various internal functions to understand their role in state changes, ownership checks, and external calls. I’m focusing on mapping CALL instructions to their containing functions to identify potential unauthorized fund transfers or unprotected state modifications. This involves verifying access restrictions, hardcoded addresses, balance queries, and initializer safeguards around key storage slots. I'll keep checking initialization functions and calls to see if any critical state updates can be exploited.
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] # opcode table
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] ops_list=[]
[codex:1218309] off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     data=None
[codex:1218309]     if imm:
[codex:1218309]         data=code[off+1:off+1+imm]
[codex:1218309]     ops_list.append((off, name, imm, data))
[codex:1218309]     off += 1+imm
[codex:1218309] 
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] # show around 0x31c
[codex:1218309] start=0x031c
[codex:1218309] idx=index_by_off[start]
[codex:1218309] for off,name,imm,data in ops_list[idx:idx+120]:
[codex:1218309]     if data is not None and imm:
[codex:1218309]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]     else:
[codex:1218309]         print(f\"{off:04x}: {name}\")
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 28ms:
[codex:1218309] 031c: JUMPDEST
[codex:1218309] 031d: PUSH1 0x00
[codex:1218309] 031f: SLOAD
[codex:1218309] 0320: PUSH2 0x0100
[codex:1218309] 0323: SWAP1
[codex:1218309] 0324: DIV
[codex:1218309] 0325: PUSH1 0xff
[codex:1218309] 0327: AND
[codex:1218309] 0328: DUP1
[codex:1218309] 0329: PUSH2 0x0335
[codex:1218309] 032c: JUMPI
[codex:1218309] 032d: POP
[codex:1218309] 032e: PUSH2 0x0335
[codex:1218309] 0331: PUSH2 0x0e91
[codex:1218309] 0334: JUMP
[codex:1218309] 0335: JUMPDEST
[codex:1218309] 0336: DUP1
[codex:1218309] 0337: PUSH2 0x0343
[codex:1218309] 033a: JUMPI
[codex:1218309] 033b: POP
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing initializer and owner-restricted withdrawal**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re, binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)
[codex:1218309] code=binascii.unhexlify(hexcode[2:])
[codex:1218309] 
[codex:1218309] ops = {}
[codex:1218309] base_names = {
[codex:1218309] 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:1218309] 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:1218309] 0x20:'SHA3',
[codex:1218309] 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:1218309] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1218309] 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:1218309] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1218309] }
[codex:1218309] for k,v in base_names.items():
[codex:1218309]     ops[k]=(v,0)
[codex:1218309] for i in range(1,33):
[codex:1218309]     ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17):
[codex:1218309]     ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5):
[codex:1218309]     ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] ops_list=[]
[codex:1218309] off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name, imm = ops.get(op, ('UNKNOWN',0))
[codex:1218309]     data=None
[codex:1218309]     if imm:
[codex:1218309]         data=code[off+1:off+1+imm]
[codex:1218309]     ops_list.append((off, name, imm, data))
[codex:1218309]     off += 1+imm
[codex:1218309] 
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] def show_from(start_off, count=80):
[codex:1218309]     idx=index_by_off.get(start_off)
[codex:1218309]     if idx is None:
[codex:1218309]         print('offset not found', start_off)
[codex:1218309]         return
[codex:1218309]     end=min(len(ops_list), idx+count)
[codex:1218309]     for off,name,imm,data in ops_list[idx:end]:
[codex:1218309]         if data is not None and imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309]     print('----')
[codex:1218309] 
[codex:1218309] for off in [0x0e91,0x0e97,0x0ed6,0x0f1f,0x0f48,0x0f52,0x1114,0x1140,0x13af,0x13d4,0x1412,0x14b3,0x14cd]:
[codex:1218309]     print('func', hex(off))
[codex:1218309]     show_from(off, 80)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 36ms:
[codex:1218309] func 0xe91
[codex:1218309] 0e91: JUMPDEST
[codex:1218309] 0e92: ADDRESS
[codex:1218309] 0e93: EXTCODESIZE
[codex:1218309] 0e94: ISZERO
[codex:1218309] 0e95: SWAP1
[codex:1218309] 0e96: JUMP
[codex:1218309] 0e97: JUMPDEST
[codex:1218309] 0e98: PUSH1 0x01
[codex:1218309] 0e9a: PUSH1 0x01
[codex:1218309] 0e9c: PUSH1 0xa0
[codex:1218309] 0e9e: SHL
[codex:1218309] 0e9f: SUB
[codex:1218309] 0ea0: DUP4
[codex:1218309] 0ea1: AND
[codex:1218309] 0ea2: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
[codex:1218309] 0eb7: EQ
[codex:1218309] 0eb8: ISZERO
[codex:1218309] 0eb9: PUSH2 0x0ecb
[codex:1218309] 0ebc: JUMPI
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing ETH/token transfer functions**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re,binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] match=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1218309] hexcode=match.group(1)[2:]
[codex:1218309] code=binascii.unhexlify(hexcode)
[codex:1218309] # find occurrences of PUSH2 0x0e97 (opcode 0x61 0x0e 0x97)
[codex:1218309] pattern=b'\\x61\\x0e\\x97'
[codex:1218309] idx=0
[codex:1218309] positions=[]
[codex:1218309] while True:
[codex:1218309]     i=code.find(pattern, idx)
[codex:1218309]     if i==-1: break
[codex:1218309]     positions.append(i)
[codex:1218309]     idx=i+1
[codex:1218309] print('PUSH2 0x0e97 positions', [hex(p) for p in positions])
[codex:1218309] # also push2 0x1412 and 0x14b3
[codex:1218309] for target in [0x1412,0x14b3,0x0ed6]:
[codex:1218309]     pat=b'\\x61'+target.to_bytes(2,'big')
[codex:1218309]     idx=0
[codex:1218309]     pos=[]
[codex:1218309]     while True:
[codex:1218309]         i=code.find(pat, idx)
[codex:1218309]         if i==-1: break
[codex:1218309]         pos.append(i)
[codex:1218309]         idx=i+1
[codex:1218309]     print('PUSH2',hex(target), 'positions', [hex(p) for p in pos])
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 25ms:
[codex:1218309] PUSH2 0x0e97 positions ['0x42e']
[codex:1218309] PUSH2 0x1412 positions ['0xec2', '0xf4e']
[codex:1218309] PUSH2 0x14b3 positions ['0xed2', '0x140e']
[codex:1218309] PUSH2 0xed6 positions ['0x50b', '0x965', '0xcdf']
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing send function usage**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re,binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] hexcode=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text).group(1)[2:]
[codex:1218309] code=binascii.unhexlify(hexcode)
[codex:1218309] for target in [0x13d4,0x1412,0x14b3,0x1726,0x16c8,0x117f,0x13af]:
[codex:1218309]     pat=b'\\x61'+target.to_bytes(2,'big')
[codex:1218309]     pos=[]; idx=0
[codex:1218309]     while True:
[codex:1218309]         i=code.find(pat, idx)
[codex:1218309]         if i==-1: break
[codex:1218309]         pos.append(i)
[codex:1218309]         idx=i+1
[codex:1218309]     print(hex(target), [hex(p) for p in pos])
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 23ms:
[codex:1218309] 0x13d4 ['0xcc8', '0x129d']
[codex:1218309] 0x1412 ['0xec2', '0xf4e']
[codex:1218309] 0x14b3 ['0xed2', '0x140e']
[codex:1218309] 0x1726 ['0x14c8']
[codex:1218309] 0x16c8 ['0x13ea']
[codex:1218309] 0x117f ['0xa62', '0xcee', '0xd47', '0xdcd', '0xf43', '0x1275', '0x12e1']
[codex:1218309] 0x13af ['0xc3e', '0xefa', '0x1134', '0x1172']
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing ETH transfer function calls**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re,binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] hexcode=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text).group(1)[2:]
[codex:1218309] code=binascii.unhexlify(hexcode)
[codex:1218309] 
[codex:1218309] # disassemble
[codex:1218309] ops = {}
[codex:1218309] base_names = {0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1218309] for k,v in base_names.items(): ops[k]=(v,0)
[codex:1218309] for i in range(1,33): ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17): ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17): ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5): ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] ops_list=[]; off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name,imm=ops.get(op,('UNKNOWN',0))
[codex:1218309]     data=code[off+1:off+1+imm] if imm else None
[codex:1218309]     ops_list.append((off,name,imm,data)); off += 1+imm
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] def show_context(target_off,before=20,after=20):
[codex:1218309]     idx=index_by_off[target_off]
[codex:1218309]     for off,name,imm,data in ops_list[max(0,idx-before):min(len(ops_list),idx+after)]:
[codex:1218309]         if imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309]     print('---')
[codex:1218309] 
[codex:1218309] for off in [0xcc8,0x129d]:
[codex:1218309]     print('context', hex(off))
[codex:1218309]     show_context(off)
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 31ms:
[codex:1218309] context 0xcc8
[codex:1218309] 0ca9: SHL
[codex:1218309] 0caa: DUP2
[codex:1218309] 0cab: MSTORE
[codex:1218309] 0cac: PUSH1 0x04
[codex:1218309] 0cae: ADD
[codex:1218309] 0caf: PUSH2 0x035f
[codex:1218309] 0cb2: SWAP1
[codex:1218309] 0cb3: PUSH2 0x2039
[codex:1218309] 0cb6: JUMP
[codex:1218309] 0cb7: JUMPDEST
[codex:1218309] 0cb8: DUP3
[codex:1218309] 0cb9: ISZERO
[codex:1218309] 0cba: PUSH2 0x0ccc
[codex:1218309] 0cbd: JUMPI
[codex:1218309] 0cbe: PUSH2 0x0ccc
[codex:1218309] 0cc1: DUP5
[codex:1218309] 0cc2: PUSH2 0x0100
[codex:1218309] 0cc5: ADD
[codex:1218309] 0cc6: MLOAD
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing contract call and access control**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re,binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] hexcode=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text).group(1)[2:]
[codex:1218309] code=binascii.unhexlify(hexcode)
[codex:1218309] 
[codex:1218309] # disassemble
[codex:1218309] ops={}
[codex:1218309] base={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1218309] for k,v in base.items(): ops[k]=(v,0)
[codex:1218309] for i in range(1,33): ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17): ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17): ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5): ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] ops_list=[]; off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name,imm=ops.get(op,('UNKNOWN',0))
[codex:1218309]     data=code[off+1:off+1+imm] if imm else None
[codex:1218309]     ops_list.append((off,name,imm,data)); off += 1+imm
[codex:1218309] index_by_off={off:i for i,(off,_,_,_) in enumerate(ops_list)}
[codex:1218309] 
[codex:1218309] start=0xb80; end=0xd80
[codex:1218309] for off,name,imm,data in ops_list[index_by_off[start]:index_by_off[end]]:
[codex:1218309]     if imm:
[codex:1218309]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]     else:
[codex:1218309]         print(f\"{off:04x}: {name}\")
[codex:1218309] PY" in /tmp/codex-multi-8295m99t exited 1 in 38ms:
[codex:1218309] Traceback (most recent call last):
[codex:1218309]   File "<stdin>", line 24, in <module>
[codex:1218309] KeyError: 2944
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Checking start offset alignment**
[codex:1218309] exec
[codex:1218309] /bin/bash -lc "python - <<'PY'
[codex:1218309] import re,binascii
[codex:1218309] text=open('BYTECODE_BUNDLE.txt','r').read()
[codex:1218309] hexcode=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text).group(1)[2:]
[codex:1218309] code=binascii.unhexlify(hexcode)
[codex:1218309] 
[codex:1218309] # disassemble
[codex:1218309] ops={}
[codex:1218309] base={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1218309] for k,v in base.items(): ops[k]=(v,0)
[codex:1218309] for i in range(1,33): ops[0x5f+i]=('PUSH%d'%i,i)
[codex:1218309] for i in range(1,17): ops[0x7f+i]=('DUP%d'%i,0)
[codex:1218309] for i in range(1,17): ops[0x8f+i]=('SWAP%d'%i,0)
[codex:1218309] for i in range(0,5): ops[0xa0+i]=('LOG%d'%i,0)
[codex:1218309] 
[codex:1218309] ops_list=[]; off=0
[codex:1218309] while off < len(code):
[codex:1218309]     op=code[off]
[codex:1218309]     name,imm=ops.get(op,('UNKNOWN',0))
[codex:1218309]     data=code[off+1:off+1+imm] if imm else None
[codex:1218309]     ops_list.append((off,name,imm,data)); off += 1+imm
[codex:1218309] 
[codex:1218309] start=0xb80; end=0xd80
[codex:1218309] for off,name,imm,data in ops_list:
[codex:1218309]     if start <= off <= end:
[codex:1218309]         if imm:
[codex:1218309]             print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:1218309]         else:
[codex:1218309]             print(f\"{off:04x}: {name}\")
[codex:1218309] PY" in /tmp/codex-multi-8295m99t succeeded in 27ms:
[codex:1218309] 0b82: ADD
[codex:1218309] 0b83: MLOAD
[codex:1218309] 0b84: DUP12
[codex:1218309] 0b85: PUSH2 0x0120
[codex:1218309] 0b88: ADD
[codex:1218309] 0b89: MLOAD
[codex:1218309] 0b8a: PUSH1 0x40
[codex:1218309] 0b8c: MLOAD
[codex:1218309] 0b8d: PUSH1 0x20
[codex:1218309] 0b8f: ADD
[codex:1218309] 0b90: PUSH2 0x0ba3
[codex:1218309] 0b93: SWAP12
[codex:1218309] 0b94: SWAP11
[codex:1218309] 0b95: SWAP10
[codex:1218309] 0b96: SWAP9
[codex:1218309] 0b97: SWAP8
[codex:1218309] 0b98: SWAP7
[codex:1218309] 0b99: SWAP6
[codex:1218309] 0b9a: SWAP5
[codex:1218309] 0b9b: SWAP4
[codex:1218309] 
[codex:1218309] thinking
[codex:1218309] **Analyzing reentrancy and exploitability risks**
[codex:1218309] 
[codex:1218309] I’m carefully reviewing the call order and state updates to see if any reentrancy vulnerabilities enable profit, but I find no definitive exploit path due to access controls and function restrictions; I’ll conclude with no findings and produce a minimal JSON report accordingly.
[codex:1218309] codex
[codex:1218309] {"no_findings":true,"summary":"No concrete, exploitable profit path identified in the provided runtime bytecode; external calls/value transfers appear gated by internal checks or role restrictions, with no unprotected upgrade/selfdestruct or direct arbitrary value transfer observable from bytecode alone.","findings":[]}
[codex:1218309] tokens used
[codex:1218309] 114,943
[codex:1218309] {"no_findings":true,"summary":"No concrete, exploitable profit path identified in the provided runtime bytecode; external calls/value transfers appear gated by internal checks or role restrictions, with no unprotected upgrade/selfdestruct or direct arbitrary value transfer observable from bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T00:43:51.564668+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable profit path identified in the provided runtime bytecode; external calls/value transfers appear gated by internal checks or role restrictions, with no unprotected upgrade/selfdestruct or direct arbitrary value transfer observable from bytecode alone.",
    "raw_final": {
        "summary": "No concrete, exploitable profit path identified in the provided runtime bytecode; external calls/value transfers appear gated by internal checks or role restrictions, with no unprotected upgrade/selfdestruct or direct arbitrary value transfer observable from bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
7
EXT*/BALANCE
6
Total opcodes
5727
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00e1
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x6e764a3c
00000019: GT
0000001a: PUSH2 0x007f
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x8459e45a
00000024: GT
00000025: PUSH2 0x0059
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x8459e45a
0000002f: EQ
00000030: PUSH2 0x023c
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xb588d225
0000003a: EQ
0000003b: PUSH2 0x025c
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xc4d2b1b3
00000045: EQ
00000046: PUSH2 0x027c
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xcb76ef2d
00000050: EQ
00000051: PUSH2 0x02ac
00000054: JUMPI
00000055: PUSH2 0x00e8
00000058: JUMP
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0x6e764a3c
00000060: EQ
00000061: PUSH2 0x01e7
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x6e947298
0000006b: EQ
0000006c: PUSH2 0x0207
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x7e695d56
00000076: EQ
00000077: PUSH2 0x021c
0000007a: JUMPI
0000007b: PUSH2 0x00e8
0000007e: JUMP
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0x2391b6a6
00000086: GT
00000087: PUSH2 0x00bb
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0x2391b6a6
00000091: EQ
00000092: PUSH2 0x0167
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0x38e4f064
0000009c: EQ
0000009d: PUSH2 0x0187
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x4d34425e
000000a7: EQ
000000a8: PUSH2 0x01a7
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x4d3c7fb8
000000b2: EQ
000000b3: PUSH2 0x01c7
000000b6: JUMPI
000000b7: PUSH2 0x00e8
000000ba: JUMP
000000bb: JUMPDEST
000000bc: DUP1
000000bd: PUSH4 0x01ad194f
000000c2: EQ
000000c3: PUSH2 0x00ed
000000c6: JUMPI
000000c7: DUP1
000000c8: PUSH4 0x1bc6dec8
000000cd: EQ
000000ce: PUSH2 0x010f
000000d1: JUMPI
000000d2: DUP1
000000d3: PUSH4 0x1cb0c3e7
000000d8: EQ
000000d9: PUSH2 0x0145
000000dc: JUMPI
000000dd: PUSH2 0x00e8
000000e0: JUMP
000000e1: JUMPDEST
000000e2: CALLDATASIZE
000000e3: PUSH2 0x00e8
000000e6: JUMPI
000000e7: STOP
000000e8: JUMPDEST
000000e9: PUSH1 0x00
000000eb: DUP1
000000ec: REVERT
000000ed: JUMPDEST
000000ee: CALLVALUE
000000ef: DUP1
000000f0: ISZERO
000000f1: PUSH2 0x00f9
000000f4: JUMPI
000000f5: PUSH1 0x00
000000f7: DUP1
000000f8: REVERT
000000f9: JUMPDEST
000000fa: POP
000000fb: PUSH2 0x010d
000000fe: PUSH2 0x0108
00000101: CALLDATASIZE
00000102: PUSH1 0x04
00000104: PUSH2 0x1a6f
00000107: JUMP
00000108: JUMPDEST
00000109: PUSH2 0x02cc
0000010c: JUMP
0000010d: JUMPDEST
0000010e: STOP
0000010f: JUMPDEST
00000110: CALLVALUE
00000111: DUP1
00000112: ISZERO
00000113: PUSH2 0x011b
00000116: JUMPI
00000117: PUSH1 0x00
00000119: DUP1
0000011a: REVERT
0000011b: JUMPDEST
0000011c: POP
0000011d: PUSH2 0x012f
00000120: PUSH2 0x012a
00000123: CALLDATASIZE
00000124: PUSH1 0x04
00000126: PUSH2 0x1926
00000129: JUMP
0000012a: JUMPDEST
0000012b: PUSH2 0x02e8
0000012e: JUMP
0000012f: JUMPDEST
00000130: PUSH1 0x40
00000132: MLOAD
00000133: PUSH2 0x013c
00000136: SWAP2
00000137: SWAP1
00000138: PUSH2 0x1ea0
0000013b: JUMP
0000013c: JUMPDEST
0000013d: PUSH1 0x40
0000013f: MLOAD
00000140: DUP1
00000141: SWAP2
00000142: SUB
00000143: SWAP1
00000144: RETURN
00000145: JUMPDEST
00000146: CALLVALUE
00000147: DUP1
00000148: ISZERO
00000149: PUSH2 0x0151
0000014c: JUMPI
0000014d: PUSH1 0x00
0000014f: DUP1
00000150: REVERT
00000151: JUMPDEST
00000152: POP
00000153: PUSH2 0x015a
00000156: PUSH2 0x0307
00000159: JUMP
0000015a: JUMPDEST
0000015b: PUSH1 0x40
0000015d: MLOAD
0000015e: PUSH2 0x013c
00000161: SWAP2
00000162: SWAP1
00000163: PUSH2 0x1e26
00000166: JUMP
00000167: JUMPDEST
00000168: CALLVALUE
00000169: DUP1
0000016a: ISZERO
0000016b: PUSH2 0x0173
0000016e: JUMPI
0000016f: PUSH1 0x00
00000171: DUP1
00000172: REVERT
00000173: JUMPDEST
00000174: POP
00000175: PUSH2 0x010d
00000178: PUSH2 0x0182
0000017b: CALLDATASIZE
0000017c: PUSH1 0x04
0000017e: PUSH2 0x1926
00000181: JUMP
00000182: JUMPDEST
00000183: PUSH2 0x031c
00000186: JUMP
00000187: JUMPDEST
00000188: CALLVALUE
00000189: DUP1
0000018a: ISZERO
0000018b: PUSH2 0x0193
0000018e: JUMPI
0000018f: PUSH1 0x00
00000191: DUP1
00000192: REVERT
00000193: JUMPDEST
00000194: POP
00000195: PUSH2 0x010d
00000198: PUSH2 0x01a2
0000019b: CALLDATASIZE
0000019c: PUSH1 0x04
0000019e: PUSH2 0x1941
000001a1: JUMP
000001a2: JUMPDEST
000001a3: PUSH2 0x03ca
000001a6: JUMP
000001a7: JUMPDEST
000001a8: CALLVALUE
000001a9: DUP1
000001aa: ISZERO
000001ab: PUSH2 0x01b3
000001ae: JUMPI
000001af: PUSH1 0x00
000001b1: DUP1
000001b2: REVERT
000001b3: JUMPDEST
000001b4: POP
000001b5: PUSH2 0x010d
000001b8: PUSH2 0x01c2
000001bb: CALLDATASIZE
000001bc: PUSH1 0x04
000001be: PUSH2 0x1a6f
000001c1: JUMP
000001c2: JUMPDEST
000001c3: PUSH2 0x0437
000001c6: JUMP
000001c7: JUMPDEST
000001c8: CALLVALUE
000001c9: DUP1
000001ca: ISZERO
000001cb: PUSH2 0x01d3
000001ce: JUMPI
000001cf: PUSH1 0x00
000001d1: DUP1
000001d2: REVERT
000001d3: JUMPDEST
000001d4: POP
000001d5: PUSH2 0x010d
000001d8: PUSH2 0x01e2
000001db: CALLDATASIZE
000001dc: PUSH1 0x04
000001de: PUSH2 0x1a23
000001e1: JUMP
000001e2: JUMPDEST
000001e3: PUSH2 0x0551
000001e6: JUMP
000001e7: JUMPDEST
000001e8: CALLVALUE
000001e9: DUP1
000001ea: ISZERO
000001eb: PUSH2 0x01f3
000001ee: JUMPI
000001ef: PUSH1 0x00
000001f1: DUP1
000001f2: REVERT
000001f3: JUMPDEST
000001f4: POP
000001f5: PUSH2 0x015a
000001f8: PUSH2 0x0202
000001fb: CALLDATASIZE
000001fc: PUSH1 0x04
000001fe: PUSH2 0x19a3
00000201: JUMP
00000202: JUMPDEST
00000203: PUSH2 0x079f
00000206: JUMP
00000207: JUMPDEST
00000208: CALLVALUE
00000209: DUP1
0000020a: ISZERO
0000020b: PUSH2 0x0213
0000020e: JUMPI
0000020f: PUSH1 0x00
00000211: DUP1
00000212: REVERT
00000213: JUMPDEST
00000214: POP
00000215: PUSH2 0x012f
00000218: PUSH2 0x0a18
0000021b: JUMP
0000021c: JUMPDEST
0000021d: CALLVALUE
0000021e: DUP1
0000021f: ISZERO
00000220: PUSH2 0x0228
00000223: JUMPI
00000224: PUSH1 0x00
00000226: DUP1
00000227: REVERT
00000228: JUMPDEST
00000229: POP
0000022a: PUSH2 0x012f
0000022d: PUSH2 0x0237
00000230: CALLDATASIZE
00000231: PUSH1 0x04
00000233: PUSH2 0x1926
00000236: JUMP
00000237: JUMPDEST
00000238: PUSH2 0x0a1c
0000023b: JUMP
0000023c: JUMPDEST
0000023d: CALLVALUE
0000023e: DUP1
0000023f: ISZERO
00000240: PUSH2 0x0248
00000243: JUMPI
00000244: PUSH1 0x00
00000246: DUP1
00000247: REVERT
00000248: JUMPDEST
00000249: POP
0000024a: PUSH2 0x010d
0000024d: PUSH2 0x0257
00000250: CALLDATASIZE
00000251: PUSH1 0x04
00000253: PUSH2 0x1a6f
00000256: JUMP
00000257: JUMPDEST
00000258: PUSH2 0x0a7c
0000025b: JUMP
0000025c: JUMPDEST
0000025d: CALLVALUE
0000025e: DUP1
0000025f: ISZERO
00000260: PUSH2 0x0268
00000263: JUMPI
00000264: PUSH1 0x00
00000266: DUP1
00000267: REVERT
00000268: JUMPDEST
00000269: POP
0000026a: PUSH2 0x012f
0000026d: PUSH2 0x0277
00000270: CALLDATASIZE
00000271: PUSH1 0x04
00000273: PUSH2 0x1926
00000276: JUMP
00000277: JUMPDEST
00000278: PUSH2 0x0a94
0000027b: JUMP
0000027c: JUMPDEST
0000027d: CALLVALUE
0000027e: DUP1
0000027f: ISZERO
00000280: PUSH2 0x0288
00000283: JUMPI
00000284: PUSH1 0x00
00000286: DUP1
00000287: REVERT
00000288: JUMPDEST
00000289: POP
0000028a: PUSH2 0x029c
0000028d: PUSH2 0x0297
00000290: CALLDATASIZE
00000291: PUSH1 0x04
00000293: PUSH2 0x198b
00000296: JUMP
00000297: JUMPDEST
00000298: PUSH2 0x0b19
0000029b: JUMP
0000029c: JUMPDEST
0000029d: PUSH1 0x40
0000029f: MLOAD
000002a0: PUSH2 0x013c
000002a3: SWAP5
000002a4: SWAP4
000002a5: SWAP3
000002a6: SWAP2
000002a7: SWAP1
000002a8: PUSH2 0x1f96
000002ab: JUMP
000002ac: JUMPDEST
000002ad: CALLVALUE
000002ae: DUP1
000002af: ISZERO
000002b0: PUSH2 0x02b8
000002b3: JUMPI
000002b4: PUSH1 0x00
000002b6: DUP1
000002b7: REVERT
000002b8: JUMPDEST
000002b9: POP
000002ba: PUSH2 0x012f
000002bd: PUSH2 0x02c7
000002c0: CALLDATASIZE
000002c1: PUSH1 0x04
000002c3: PUSH2 0x1a9b
000002c6: JUMP
000002c7: JUMPDEST
000002c8: PUSH2 0x0b3f
000002cb: JUMP
000002cc: JUMPDEST
000002cd: PUSH2 0x02e4
000002d0: PUSH2 0x02de
000002d3: CALLDATASIZE
000002d4: DUP5
000002d5: SWAP1
000002d6: SUB
000002d7: DUP5
000002d8: ADD
000002d9: DUP5
000002da: PUSH2 0x1a9b
000002dd: JUMP
000002de: JUMPDEST
000002df: DUP3
000002e0: PUSH2 0x0bc0
000002e3: JUMP
000002e4: JUMPDEST
000002e5: POP
000002e6: POP
000002e7: JUMP
000002e8: JUMPDEST
000002e9: PUSH1 0x01
000002eb: PUSH1 0x01
000002ed: PUSH1 0xa0
000002ef: SHL
000002f0: SUB
000002f1: DUP2
000002f2: AND
000002f3: PUSH1 0x00
000002f5: SWAP1
000002f6: DUP2
000002f7: MSTORE
000002f8: PUSH1 0x01
000002fa: PUSH1 0x20
000002fc: MSTORE
000002fd: PUSH1 0x40
000002ff: SWAP1
00000300: KECCAK256
00000301: SLOAD
00000302: JUMPDEST
00000303: SWAP2
00000304: SWAP1
00000305: POP
00000306: JUMP
00000307: JUMPDEST
00000308: PUSH1 0x00
0000030a: SLOAD
0000030b: PUSH3 0x010000
0000030f: SWAP1
00000310: DIV
00000311: PUSH1 0x01
00000313: PUSH1 0x01
00000315: PUSH1 0xa0
00000317: SHL
00000318: SUB
00000319: AND
0000031a: SWAP1
0000031b: JUMP
0000031c: JUMPDEST
0000031d: PUSH1 0x00
0000031f: SLOAD
00000320: PUSH2 0x0100
00000323: SWAP1
00000324: DIV
00000325: PUSH1 0xff
00000327: AND
00000328: DUP1
00000329: PUSH2 0x0335
0000032c: JUMPI
0000032d: POP
0000032e: PUSH2 0x0335
00000331: PUSH2 0x0e91
00000334: JUMP
00000335: JUMPDEST
00000336: DUP1
00000337: PUSH2 0x0343
0000033a: JUMPI
0000033b: POP
0000033c: PUSH1 0x00
0000033e: SLOAD
0000033f: PUSH1 0xff
00000341: AND
00000342: ISZERO
00000343: JUMPDEST
00000344: PUSH2 0x0368
00000347: JUMPI
00000348: PUSH1 0x40
0000034a: MLOAD
0000034b: PUSH3 0x461bcd
0000034f: PUSH1 0xe5
00000351: SHL
00000352: DUP2
00000353: MSTORE
00000354: PUSH1 0x04
00000356: ADD
00000357: PUSH2 0x035f
0000035a: SWAP1
0000035b: PUSH2 0x2215
0000035e: JUMP
0000035f: JUMPDEST
00000360: PUSH1 0x40
00000362: MLOAD
00000363: DUP1
00000364: SWAP2
00000365: SUB
00000366: SWAP1
00000367: REVERT
00000368: JUMPDEST
00000369: PUSH1 0x00
0000036b: SLOAD
0000036c: PUSH2 0x0100
0000036f: SWAP1
00000370: DIV
00000371: PUSH1 0xff
00000373: AND
00000374: ISZERO
00000375: DUP1
00000376: ISZERO
00000377: PUSH2 0x0393
0000037a: JUMPI
0000037b: PUSH1 0x00
0000037d: DUP1
0000037e: SLOAD
0000037f: PUSH1 0xff
00000381: NOT
00000382: PUSH2 0xff00
00000385: NOT
00000386: SWAP1
00000387: SWAP2
00000388: AND
00000389: PUSH2 0x0100
0000038c: OR
0000038d: AND
0000038e: PUSH1 0x01
00000390: OR
00000391: SWAP1
00000392: SSTORE
00000393: JUMPDEST
00000394: PUSH1 0x00
00000396: DUP1
00000397: SLOAD
00000398: PUSH3 0x010000
0000039c: PUSH1 0x01
0000039e: PUSH1 0xb0
000003a0: SHL
000003a1: SUB
000003a2: NOT
000003a3: AND
000003a4: PUSH3 0x010000
000003a8: PUSH1 0x01
000003aa: PUSH1 0x01
000003ac: PUSH1 0xa0
000003ae: SHL
000003af: SUB
000003b0: DUP6
000003b1: AND
000003b2: MUL
000003b3: OR
000003b4: SWAP1
000003b5: SSTORE
000003b6: DUP1
000003b7: ISZERO
000003b8: PUSH2 0x02e4
000003bb: JUMPI
000003bc: PUSH1 0x00
000003be: DUP1
000003bf: SLOAD
000003c0: PUSH2 0xff00
000003c3: NOT
000003c4: AND
000003c5: SWAP1
000003c6: SSTORE
000003c7: POP
000003c8: POP
000003c9: JUMP
000003ca: JUMPDEST
000003cb: PUSH1 0x00
000003cd: SLOAD
000003ce: PUSH3 0x010000
000003d2: SWAP1
000003d3: DIV
000003d4: PUSH1 0x01
000003d6: PUSH1 0x01
000003d8: PUSH1 0xa0
000003da: SHL
000003db: SUB
000003dc: AND
000003dd: CALLER
000003de: EQ
000003df: PUSH2 0x03fa
000003e2: JUMPI
000003e3: PUSH1 0x40
000003e5: MLOAD
000003e6: PUSH3 0x461bcd
000003ea: PUSH1 0xe5
000003ec: SHL
000003ed: DUP2
000003ee: MSTORE
000003ef: PUSH1 0x04
000003f1: ADD
000003f2: PUSH2 0x035f
000003f5: SWAP1
000003f6: PUSH2 0x2523
000003f9: JUMP
000003fa: JUMPDEST
000003fb: PUSH1 0x00
000003fd: PUSH2 0x0405
00000400: DUP4
00000401: PUSH2 0x0a1c
00000404: JUMP
00000405: JUMPDEST
00000406: SWAP1
00000407: POP
00000408: DUP2
00000409: DUP2
0000040a: LT
0000040b: ISZERO
0000040c: PUSH2 0x0427
0000040f: JUMPI
00000410: PUSH1 0x40
00000412: MLOAD
00000413: PUSH3 0x461bcd
00000417: PUSH1 0xe5
00000419: SHL
0000041a: DUP2
0000041b: MSTORE
0000041c: PUSH1 0x04
0000041e: ADD
0000041f: PUSH2 0x035f
00000422: SWAP1
00000423: PUSH2 0x2196
00000426: JUMP
00000427: JUMPDEST
00000428: PUSH2 0x0432
0000042b: DUP4
0000042c: CALLER
0000042d: DUP5
0000042e: PUSH2 0x0e97
00000431: JUMP
00000432: JUMPDEST
00000433: POP
00000434: POP
00000435: POP
00000436: JUMP
00000437: JUMPDEST
00000438: DUP2
00000439: CALLDATALOAD
0000043a: PUSH1 0x00
0000043c: SWAP1
0000043d: DUP2
0000043e: MSTORE
0000043f: PUSH1 0x02
00000441: PUSH1 0x20
00000443: MSTORE
00000444: PUSH1 0x40
00000446: SWAP1
00000447: KECCAK256
00000448: SLOAD
00000449: PUSH2 0x045a
0000044c: PUSH2 0x02c7
0000044f: CALLDATASIZE
00000450: DUP6
00000451: SWAP1
00000452: SUB
00000453: DUP6
00000454: ADD
00000455: DUP6
00000456: PUSH2 0x1a9b
00000459: JUMP
0000045a: JUMPDEST
0000045b: EQ
0000045c: PUSH2 0x0477
0000045f: JUMPI
00000460: PUSH1 0x40
00000462: MLOAD
00000463: PUSH3 0x461bcd
00000467: PUSH1 0xe5
00000469: SHL
0000046a: DUP2
0000046b: MSTORE
0000046c: PUSH1 0x04
0000046e: ADD
0000046f: PUSH2 0x035f
00000472: SWAP1
00000473: PUSH2 0x22e6
00000476: JUMP
00000477: JUMPDEST
00000478: DUP2
00000479: CALLDATALOAD
0000047a: PUSH1 0x00
0000047c: SWAP1
0000047d: DUP2
0000047e: MSTORE
0000047f: PUSH1 0x02
00000481: PUSH1 0x20
00000483: MSTORE
00000484: PUSH1 0x40
00000486: SWAP1
00000487: KECCAK256
00000488: PUSH1 0x03
0000048a: ADD
0000048b: SLOAD
0000048c: TIMESTAMP
0000048d: LT
0000048e: PUSH2 0x04a9
00000491: JUMPI
00000492: PUSH1 0x40
00000494: MLOAD
00000495: PUSH3 0x461bcd
00000499: PUSH1 0xe5
0000049b: SHL
0000049c: DUP2
0000049d: MSTORE
0000049e: PUSH1 0x04
000004a0: ADD
000004a1: PUSH2 0x035f
000004a4: SWAP1
000004a5: PUSH2 0x2489
000004a8: JUMP
000004a9: JUMPDEST
000004aa: DUP2
000004ab: CALLDATALOAD
000004ac: PUSH1 0x00
000004ae: SWAP1
000004af: DUP2
000004b0: MSTORE
000004b1: PUSH1 0x02
000004b3: PUSH1 0x20
000004b5: MSTORE
000004b6: PUSH1 0x40
000004b8: SWAP1
000004b9: KECCAK256
000004ba: PUSH1 0x01
000004bc: ADD
000004bd: DUP1
000004be: SLOAD
000004bf: DUP3
000004c0: ADD
000004c1: SWAP1
000004c2: SSTORE
000004c3: DUP1
000004c4: PUSH2 0x04d7
000004c7: PUSH2 0x0237
000004ca: PUSH2 0x0100
000004cd: DUP6
000004ce: ADD
000004cf: PUSH1 0xe0
000004d1: DUP7
000004d2: ADD
000004d3: PUSH2 0x1926
000004d6: JUMP
000004d7: JUMPDEST
000004d8: LT
000004d9: ISZERO
000004da: PUSH2 0x04f5
000004dd: JUMPI
000004de: PUSH1 0x40
000004e0: MLOAD
000004e1: PUSH3 0x461bcd
000004e5: PUSH1 0xe5
000004e7: SHL
000004e8: DUP2
000004e9: MSTORE
000004ea: PUSH1 0x04
000004ec: ADD
000004ed: PUSH2 0x035f
000004f0: SWAP1
000004f1: PUSH2 0x20a5
000004f4: JUMP
000004f5: JUMPDEST
000004f6: PUSH2 0x050f
000004f9: PUSH2 0x0509
000004fc: PUSH2 0x0100
000004ff: DUP5
00000500: ADD
00000501: PUSH1 0xe0
00000503: DUP6
00000504: ADD
00000505: PUSH2 0x1926
00000508: JUMP
00000509: JUMPDEST
0000050a: DUP3
0000050b: PUSH2 0x0ed6
0000050e: JUMP
0000050f: JUMPDEST
00000510: DUP2
00000511: PUSH1 0x00
00000513: ADD
00000514: CALLDATALOAD
00000515: PUSH32 0xe2511e4cea073cd1ede5b25a5089509b8d88ab0c1c3d8ddb3717e7afbf823981
00000536: CALLER
00000537: DUP4
00000538: PUSH1 0x40
0000053a: MLOAD
0000053b: PUSH2 0x0545
0000053e: SWAP3
0000053f: SWAP2
00000540: SWAP1
00000541: PUSH2 0x1e3a
00000544: JUMP
00000545: JUMPDEST
00000546: PUSH1 0x40
00000548: MLOAD
00000549: DUP1
0000054a: SWAP2
0000054b: SUB
0000054c: SWAP1
0000054d: LOG2
0000054e: POP
0000054f: POP
00000550: JUMP
00000551: JUMPDEST
00000552: PUSH20 0x31ba589072278d82207212702de9a1c2b9d42c28
00000567: CALLER
00000568: EQ
00000569: PUSH2 0x0584
0000056c: JUMPI
0000056d: PUSH1 0x40
0000056f: MLOAD
00000570: PUSH3 0x461bcd
00000574: PUSH1 0xe5
00000576: SHL
00000577: DUP2
00000578: MSTORE
00000579: PUSH1 0x04
0000057b: ADD
0000057c: PUSH2 0x035f
0000057f: SWAP1
00000580: PUSH2 0x23ba
00000583: JUMP
00000584: JUMPDEST
00000585: DUP3
00000586: CALLDATALOAD
00000587: PUSH1 0x00
00000589: SWAP1
0000058a: DUP2
0000058b: MSTORE
0000058c: PUSH1 0x02
0000058e: PUSH1 0x20
00000590: MSTORE
00000591: PUSH1 0x40
00000593: SWAP1
00000594: KECCAK256
00000595: SLOAD
00000596: PUSH2 0x05a7
00000599: PUSH2 0x02c7
0000059c: CALLDATASIZE
0000059d: DUP7
0000059e: SWAP1
0000059f: SUB
000005a0: DUP7
000005a1: ADD
000005a2: DUP7
000005a3: PUSH2 0x1a9b
000005a6: JUMP
000005a7: JUMPDEST
000005a8: EQ
000005a9: PUSH2 0x05c4
000005ac: JUMPI
000005ad: PUSH1 0x40
000005af: MLOAD
000005b0: PUSH3 0x461bcd
000005b4: PUSH1 0xe5
000005b6: SHL
000005b7: DUP2
000005b8: MSTORE
000005b9: PUSH1 0x04
000005bb: ADD
000005bc: PUSH2 0x035f
000005bf: SWAP1
000005c0: PUSH2 0x22e6
000005c3: JUMP
000005c4: JUMPDEST
000005c5: DUP3
000005c6: CALLDATALOAD
000005c7: PUSH1 0x00
000005c9: SWAP1
000005ca: DUP2
000005cb: MSTORE
000005cc: PUSH1 0x02
000005ce: PUSH1 0x20
000005d0: DUP2
000005d1: SWAP1
000005d2: MSTORE
000005d3: PUSH1 0x40
000005d5: SWAP1
000005d6: SWAP2
000005d7: KECCAK256
000005d8: ADD
000005d9: SLOAD
000005da: ISZERO
000005db: DUP1
000005dc: ISZERO
000005dd: SWAP1
000005de: PUSH2 0x05f9
000005e1: JUMPI
000005e2: POP
000005e3: DUP3
000005e4: CALLDATALOAD
000005e5: PUSH1 0x00
000005e7: SWAP1
000005e8: DUP2
000005e9: MSTORE
000005ea: PUSH1 0x02
000005ec: PUSH1 0x20
000005ee: MSTORE
000005ef: PUSH1 0x40
000005f1: SWAP1
000005f2: KECCAK256
000005f3: PUSH1 0x01
000005f5: ADD
000005f6: SLOAD
000005f7: ISZERO
000005f8: ISZERO
000005f9: JUMPDEST
000005fa: PUSH2 0x0615
000005fd: JUMPI
000005fe: PUSH1 0x40
00000600: MLOAD
00000601: PUSH3 0x461bcd
00000605: PUSH1 0xe5
00000607: SHL
00000608: DUP2
00000609: MSTORE
0000060a: PUSH1 0x04
0000060c: ADD
0000060d: PUSH2 0x035f
00000610: SWAP1
00000611: PUSH2 0x236b
00000614: JUMP
00000615: JUMPDEST
00000616: DUP3
00000617: CALLDATALOAD
00000618: PUSH1 0x00
0000061a: SWAP1
0000061b: DUP2
0000061c: MSTORE
0000061d: PUSH1 0x02
0000061f: PUSH1 0x20
00000621: MSTORE
00000622: PUSH1 0x40
00000624: SWAP1
00000625: KECCAK256
00000626: PUSH1 0x03
00000628: ADD
00000629: SLOAD
0000062a: TIMESTAMP
0000062b: GT
0000062c: DUP1
0000062d: PUSH2 0x06f2
00000630: JUMPI
00000631: POP
00000632: PUSH1 0x01
00000634: PUSH1 0x01
00000636: PUSH1 0xa0
00000638: SHL
00000639: SUB
0000063a: DUP2
0000063b: AND
0000063c: PUSH4 0x041abcde
00000641: PUSH2 0x0651
00000644: PUSH2 0x0100
00000647: DUP7
00000648: ADD
00000649: PUSH1 0xe0
0000064b: DUP8
0000064c: ADD
0000064d: PUSH2 0x1926
00000650: JUMP
00000651: JUMPDEST
00000652: PUSH2 0x0663
00000655: PUSH2 0x0120
00000658: DUP8
00000659: ADD
0000065a: PUSH2 0x0100
0000065d: DUP9
0000065e: ADD
0000065f: PUSH2 0x1926
00000662: JUMP
00000663: JUMPDEST
00000664: DUP7
00000665: CALLDATALOAD
00000666: PUSH1 0x00
00000668: SWAP1
00000669: DUP2
0000066a: MSTORE
0000066b: PUSH1 0x02
0000066d: PUSH1 0x20
0000066f: MSTORE
00000670: PUSH1 0x40
00000672: SWAP1
00000673: DUP2
00000674: SWAP1
00000675: KECCAK256
00000676: PUSH1 0x01
00000678: ADD
00000679: SLOAD
0000067a: SWAP1
0000067b: MLOAD
0000067c: PUSH1 0x01
0000067e: PUSH1 0x01
00000680: PUSH1 0xe0
00000682: SHL
00000683: SUB
00000684: NOT
00000685: PUSH1 0xe0
00000687: DUP7
00000688: SWAP1
00000689: SHL
0000068a: AND
0000068b: DUP2
0000068c: MSTORE
0000068d: PUSH2 0x06a0
00000690: SWAP4
00000691: SWAP3
00000692: SWAP2
00000693: PUSH1 0x60
00000695: DUP11
00000696: ADD
00000697: CALLDATALOAD
00000698: SWAP2
00000699: PUSH1 0x04
0000069b: ADD
0000069c: PUSH2 0x1e77
0000069f: JUMP
000006a0: JUMPDEST
000006a1: PUSH1 0x20
000006a3: PUSH1 0x40
000006a5: MLOAD
000006a6: DUP1
000006a7: DUP4
000006a8: SUB
000006a9: DUP2
000006aa: PUSH1 0x00
000006ac: DUP8
000006ad: DUP1
000006ae: EXTCODESIZE
000006af: ISZERO
000006b0: DUP1
000006b1: ISZERO
000006b2: PUSH2 0x06ba
000006b5: JUMPI
000006b6: PUSH1 0x00
000006b8: DUP1
000006b9: REVERT
000006ba: JUMPDEST
000006bb: POP
000006bc: GAS
000006bd: CALL
000006be: ISZERO
000006bf: DUP1
000006c0: ISZERO
000006c1: PUSH2 0x06ce
000006c4: JUMPI
000006c5: RETURNDATASIZE
000006c6: PUSH1 0x00
000006c8: DUP1
000006c9: RETURNDATACOPY
000006ca: RETURNDATASIZE
000006cb: PUSH1 0x00
000006cd: REVERT
000006ce: JUMPDEST
000006cf: POP
000006d0: POP
000006d1: POP
000006d2: POP
000006d3: PUSH1 0x40
000006d5: MLOAD
000006d6: RETURNDATASIZE
000006d7: PUSH1 0x1f
000006d9: NOT
000006da: PUSH1 0x1f
000006dc: DUP3
000006dd: ADD
000006de: AND
000006df: DUP3
000006e0: ADD
000006e1: DUP1
000006e2: PUSH1 0x40
000006e4: MSTORE
000006e5: POP
000006e6: DUP2
000006e7: ADD
000006e8: SWAP1
000006e9: PUSH2 0x06f2
000006ec: SWAP2
000006ed: SWAP1
000006ee: PUSH2 0x196b
000006f1: JUMP
000006f2: JUMPDEST
000006f3: PUSH2 0x070e
000006f6: JUMPI
000006f7: PUSH1 0x40
000006f9: MLOAD
000006fa: PUSH3 0x461bcd
000006fe: PUSH1 0xe5
00000700: SHL
00000701: DUP2
00000702: MSTORE
00000703: PUSH1 0x04
00000705: ADD
00000706: PUSH2 0x035f
00000709: SWAP1
0000070a: PUSH2 0x215f
0000070d: JUMP
0000070e: JUMPDEST
0000070f: DUP3
00000710: CALLDATALOAD
00000711: PUSH1 0x00
00000713: SWAP1
00000714: DUP2
00000715: MSTORE
00000716: PUSH1 0x02
00000718: PUSH1 0x20
0000071a: MSTORE
0000071b: PUSH1 0x40
0000071d: DUP2
0000071e: KECCAK256
0000071f: PUSH1 0x01
00000721: ADD
00000722: DUP1
00000723: SLOAD
00000724: SWAP2
00000725: SWAP1
00000726: SSTORE
00000727: PUSH2 0x0740
0000072a: PUSH2 0x073a
0000072d: PUSH2 0x0100
00000730: DUP7
00000731: ADD
00000732: PUSH1 0xe0
00000734: DUP8
00000735: ADD
00000736: PUSH2 0x1926
00000739: JUMP
0000073a: JUMPDEST
0000073b: DUP3
0000073c: PUSH2 0x0f1f
0000073f: JUMP
00000740: JUMPDEST
00000741: PUSH2 0x075b
00000744: PUSH2 0x0754
00000747: PUSH2 0x0100
0000074a: DUP7
0000074b: ADD
0000074c: PUSH1 0xe0
0000074e: DUP8
0000074f: ADD
00000750: PUSH2 0x1926
00000753: JUMP
00000754: JUMPDEST
00000755: DUP5
00000756: DUP4
00000757: PUSH2 0x0f48
0000075a: JUMP
0000075b: JUMPDEST
0000075c: DUP4
0000075d: PUSH1 0x00
0000075f: ADD
00000760: CALLDATALOAD
00000761: PUSH32 0xd46d78fa6d2c31ef7370232916f555e0972dcff745a87e3faf1d72b4c999c570
00000782: DUP5
00000783: DUP4
00000784: PUSH1 0x40
00000786: MLOAD
00000787: PUSH2 0x0791
0000078a: SWAP3
0000078b: SWAP2
0000078c: SWAP1
0000078d: PUSH2 0x1e3a
00000790: JUMP
00000791: JUMPDEST
00000792: PUSH1 0x40
00000794: MLOAD
00000795: DUP1
00000796: SWAP2
00000797: SUB
00000798: SWAP1
00000799: LOG2
0000079a: POP
0000079b: POP
0000079c: POP
0000079d: POP
0000079e: JUMP
0000079f: JUMPDEST
000007a0: PUSH1 0x00
000007a2: PUSH20 0x31ba589072278d82207212702de9a1c2b9d42c28
000007b7: CALLER
000007b8: EQ
000007b9: PUSH2 0x07d4
000007bc: JUMPI
000007bd: PUSH1 0x40
000007bf: MLOAD
000007c0: PUSH3 0x461bcd
000007c4: PUSH1 0xe5
000007c6: SHL
000007c7: DUP2
000007c8: MSTORE
000007c9: PUSH1 0x04
000007cb: ADD
000007cc: PUSH2 0x035f
000007cf: SWAP1
000007d0: PUSH2 0x23ba
000007d3: JUMP
000007d4: JUMPDEST
000007d5: PUSH1 0x00
000007d7: SLOAD
000007d8: PUSH3 0x010000
000007dc: SWAP1
000007dd: DIV
000007de: PUSH1 0x01
000007e0: PUSH1 0x01
000007e2: PUSH1 0xa0
000007e4: SHL
000007e5: SUB
000007e6: AND
000007e7: PUSH2 0x083c
000007ea: PUSH2 0x0800
000007ed: PUSH2 0x07fb
000007f0: CALLDATASIZE
000007f1: DUP7
000007f2: SWAP1
000007f3: SUB
000007f4: DUP7
000007f5: ADD
000007f6: DUP7
000007f7: PUSH2 0x1a9b
000007fa: JUMP
000007fb: JUMPDEST
000007fc: PUSH2 0x0f52
000007ff: JUMP
00000800: JUMPDEST
00000801: DUP7
00000802: DUP7
00000803: DUP1
00000804: DUP1
00000805: PUSH1 0x1f
00000807: ADD
00000808: PUSH1 0x20
0000080a: DUP1
0000080b: SWAP2
0000080c: DIV
0000080d: MUL
0000080e: PUSH1 0x20
00000810: ADD
00000811: PUSH1 0x40
00000813: MLOAD
00000814: SWAP1
00000815: DUP2
00000816: ADD
00000817: PUSH1 0x40
00000819: MSTORE
0000081a: DUP1
0000081b: SWAP4
0000081c: SWAP3
0000081d: SWAP2
0000081e: SWAP1
0000081f: DUP2
00000820: DUP2
00000821: MSTORE
00000822: PUSH1 0x20
00000824: ADD
00000825: DUP4
00000826: DUP4
00000827: DUP1
00000828: DUP3
00000829: DUP5
0000082a: CALLDATACOPY
0000082b: PUSH1 0x00
0000082d: SWAP3
0000082e: ADD
0000082f: SWAP2
00000830: SWAP1
00000831: SWAP2
00000832: MSTORE
00000833: POP
00000834: PUSH2 0x10a0
00000837: SWAP3
00000838: POP
00000839: POP
0000083a: POP
0000083b: JUMP
0000083c: JUMPDEST
0000083d: PUSH1 0x01
0000083f: PUSH1 0x01
00000841: PUSH1 0xa0
00000843: SHL
00000844: SUB
00000845: AND
00000846: EQ
00000847: PUSH2 0x0862
0000084a: JUMPI
0000084b: PUSH1 0x40
0000084d: MLOAD
0000084e: PUSH3 0x461bcd
00000852: PUSH1 0xe5
00000854: SHL
00000855: DUP2
00000856: MSTORE
00000857: PUSH1 0x04
00000859: ADD
0000085a: PUSH2 0x035f
0000085d: SWAP1
0000085e: PUSH2 0x21e0
00000861: JUMP
00000862: JUMPDEST
00000863: PUSH2 0x0874
00000866: PUSH2 0x02c7
00000869: CALLDATASIZE
0000086a: DUP5
0000086b: SWAP1
0000086c: SUB
0000086d: DUP5
0000086e: ADD
0000086f: DUP5
00000870: PUSH2 0x1a9b
00000873: JUMP
00000874: JUMPDEST
00000875: DUP3
00000876: CALLDATALOAD
00000877: PUSH1 0x00
00000879: SWAP1
0000087a: DUP2
0000087b: MSTORE
0000087c: PUSH1 0x02
0000087e: PUSH1 0x20
00000880: MSTORE
00000881: PUSH1 0x40
00000883: SWAP1
00000884: DUP2
00000885: SWAP1
00000886: KECCAK256
00000887: SWAP2
00000888: DUP3
00000889: SSTORE
0000088a: PUSH1 0xa0
0000088c: DUP5
0000088d: ADD
0000088e: CALLDATALOAD
0000088f: PUSH1 0x01
00000891: SWAP1
00000892: SWAP3
00000893: ADD
00000894: SWAP2
00000895: SWAP1
00000896: SWAP2
00000897: SSTORE
00000898: PUSH2 0x08bc
0000089b: SWAP1
0000089c: TIMESTAMP
0000089d: SWAP1
0000089e: PUSH2 0x08ad
000008a1: SWAP1
000008a2: PUSH1 0x60
000008a4: DUP7
000008a5: ADD
000008a6: SWAP1
000008a7: DUP7
000008a8: ADD
000008a9: PUSH2 0x1b6d
000008ac: JUMP
000008ad: JUMPDEST
000008ae: PUSH8 0xffffffffffffffff
000008b7: AND
000008b8: PUSH2 0x1114
000008bb: JUMP
000008bc: JUMPDEST
000008bd: DUP3
000008be: CALLDATALOAD
000008bf: PUSH1 0x00
000008c1: SWAP1
000008c2: DUP2
000008c3: MSTORE
000008c4: PUSH1 0x02
000008c6: PUSH1 0x20
000008c8: SWAP1
000008c9: DUP2
000008ca: MSTORE
000008cb: PUSH1 0x40
000008cd: SWAP2
000008ce: DUP3
000008cf: SWAP1
000008d0: KECCAK256
000008d1: PUSH1 0x03
000008d3: ADD
000008d4: SWAP3
000008d5: SWAP1
000008d6: SWAP3
000008d7: SSTORE
000008d8: PUSH2 0x08ff
000008db: SWAP2
000008dc: PUSH1 0x60
000008de: DUP6
000008df: ADD
000008e0: CALLDATALOAD
000008e1: SWAP2
000008e2: PUSH2 0x08f0
000008e5: SWAP2
000008e6: SWAP1
000008e7: DUP7
000008e8: ADD
000008e9: SWAP1
000008ea: DUP7
000008eb: ADD
000008ec: PUSH2 0x1b6d
000008ef: JUMP
000008f0: JUMPDEST
000008f1: PUSH8 0xffffffffffffffff
000008fa: AND
000008fb: PUSH2 0x1140
000008fe: JUMP
000008ff: JUMPDEST
00000900: DUP3
00000901: CALLDATALOAD
00000902: PUSH1 0x00
00000904: SWAP1
00000905: DUP2
00000906: MSTORE
00000907: PUSH1 0x02
00000909: PUSH1 0x20
0000090b: DUP2
0000090c: SWAP1
0000090d: MSTORE
0000090e: PUSH1 0x40
00000910: SWAP1
00000911: SWAP2
00000912: KECCAK256
00000913: ADD
00000914: SSTORE
00000915: PUSH1 0xa0
00000917: DUP3
00000918: ADD
00000919: CALLDATALOAD
0000091a: PUSH2 0x092d
0000091d: PUSH2 0x0237
00000920: PUSH2 0x0100
00000923: DUP6
00000924: ADD
00000925: PUSH1 0xe0
00000927: DUP7
00000928: ADD
00000929: PUSH2 0x1926
0000092c: JUMP
0000092d: JUMPDEST
0000092e: LT
0000092f: ISZERO
00000930: PUSH2 0x094b
00000933: JUMPI
00000934: PUSH1 0x40
00000936: MLOAD
00000937: PUSH3 0x461bcd
0000093b: PUSH1 0xe5
0000093d: SHL
0000093e: DUP2
0000093f: MSTORE
00000940: PUSH1 0x04
00000942: ADD
00000943: PUSH2 0x035f
00000946: SWAP1
00000947: PUSH2 0x240c
0000094a: JUMP
0000094b: JUMPDEST
0000094c: PUSH2 0x0969
0000094f: PUSH2 0x095f
00000952: PUSH2 0x0100
00000955: DUP5
00000956: ADD
00000957: PUSH1 0xe0
00000959: DUP6
0000095a: ADD
0000095b: PUSH2 0x1926
0000095e: JUMP
0000095f: JUMPDEST
00000960: DUP4
00000961: PUSH1 0xa0
00000963: ADD
00000964: CALLDATALOAD
00000965: PUSH2 0x0ed6
00000968: JUMP
00000969: JUMPDEST
0000096a: DUP2
0000096b: CALLDATALOAD
0000096c: PUSH32 0xaf0a96c5e2199c01ff2f213e7cce383bcf7c9e108a9096717e55d53a4816317e
0000098d: PUSH1 0x60
0000098f: DUP5
00000990: ADD
00000991: CALLDATALOAD
00000992: PUSH2 0x09a1
00000995: PUSH1 0x40
00000997: DUP7
00000998: ADD
00000999: PUSH1 0x20
0000099b: DUP8
0000099c: ADD
0000099d: PUSH2 0x1b6d
000009a0: JUMP
000009a1: JUMPDEST
000009a2: PUSH2 0x09b1
000009a5: PUSH1 0x60
000009a7: DUP8
000009a8: ADD
000009a9: PUSH1 0x40
000009ab: DUP9
000009ac: ADD
000009ad: PUSH2 0x1b6d
000009b0: JUMP
000009b1: JUMPDEST
000009b2: PUSH2 0x09c2
000009b5: PUSH2 0x0100
000009b8: DUP9
000009b9: ADD
000009ba: PUSH1 0xe0
000009bc: DUP10
000009bd: ADD
000009be: PUSH2 0x1926
000009c1: JUMP
000009c2: JUMPDEST
000009c3: PUSH2 0x09d4
000009c6: PUSH2 0x0120
000009c9: DUP10
000009ca: ADD
000009cb: PUSH2 0x0100
000009ce: DUP11
000009cf: ADD
000009d0: PUSH2 0x1926
000009d3: JUMP
000009d4: JUMPDEST
000009d5: PUSH2 0x09e4
000009d8: PUSH1 0xe0
000009da: DUP11
000009db: ADD
000009dc: PUSH1 0xc0
000009de: DUP12
000009df: ADD
000009e0: PUSH2 0x1926
000009e3: JUMP
000009e4: JUMPDEST
000009e5: PUSH1 0x40
000009e7: MLOAD
000009e8: PUSH2 0x09f6
000009eb: SWAP7
000009ec: SWAP6
000009ed: SWAP5
000009ee: SWAP4
000009ef: SWAP3
000009f0: SWAP2
000009f1: SWAP1
000009f2: PUSH2 0x25df
000009f5: JUMP
000009f6: JUMPDEST
000009f7: PUSH1 0x40
000009f9: MLOAD
000009fa: DUP1
000009fb: SWAP2
000009fc: SUB
000009fd: SWAP1
000009fe: LOG2
000009ff: POP
00000a00: POP
00000a01: PUSH1 0x00
00000a03: SLOAD
00000a04: PUSH3 0x010000
00000a08: SWAP1
00000a09: DIV
00000a0a: PUSH1 0x01
00000a0c: PUSH1 0x01
00000a0e: PUSH1 0xa0
00000a10: SHL
00000a11: SUB
00000a12: AND
00000a13: SWAP3
00000a14: SWAP2
00000a15: POP
00000a16: POP
00000a17: JUMP
00000a18: JUMPDEST
00000a19: SELFBALANCE
00000a1a: SWAP1
00000a1b: JUMP
00000a1c: JUMPDEST
00000a1d: PUSH1 0x00
00000a1f: DUP1
00000a20: PUSH2 0x0a28
00000a23: DUP4
00000a24: PUSH2 0x02e8
00000a27: JUMP
00000a28: JUMPDEST
00000a29: SWAP1
00000a2a: POP
00000a2b: PUSH1 0x01
00000a2d: PUSH1 0x01
00000a2f: PUSH1 0xa0
00000a31: SHL
00000a32: SUB
00000a33: DUP4
00000a34: AND
00000a35: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
00000a4a: EQ
00000a4b: ISZERO
00000a4c: PUSH2 0x0a6f
00000a4f: JUMPI
00000a50: PUSH2 0x0a67
00000a53: DUP2
00000a54: PUSH2 0x0a5b
00000a57: PUSH2 0x0a18
00000a5a: JUMP
00000a5b: JUMPDEST
00000a5c: SWAP1
00000a5d: PUSH4 0xffffffff
00000a62: PUSH2 0x117f
00000a65: AND
00000a66: JUMP
00000a67: JUMPDEST
00000a68: SWAP2
00000a69: POP
00000a6a: POP
00000a6b: PUSH2 0x0302
00000a6e: JUMP
00000a6f: JUMPDEST
00000a70: PUSH2 0x0a67
00000a73: DUP2
00000a74: PUSH2 0x0a5b
00000a77: DUP6
00000a78: PUSH2 0x0a94
00000a7b: JUMP
00000a7c: JUMPDEST
00000a7d: PUSH2 0x02e4
00000a80: PUSH2 0x0a8e
00000a83: CALLDATASIZE
00000a84: DUP5
00000a85: SWAP1
00000a86: SUB
00000a87: DUP5
00000a88: ADD
00000a89: DUP5
00000a8a: PUSH2 0x1a9b
00000a8d: JUMP
00000a8e: JUMPDEST
00000a8f: DUP3
00000a90: PUSH2 0x11c1
00000a93: JUMP
00000a94: JUMPDEST
00000a95: PUSH1 0x40
00000a97: MLOAD
00000a98: PUSH4 0x70a08231
00000a9d: PUSH1 0xe0
00000a9f: SHL
00000aa0: DUP2
00000aa1: MSTORE
00000aa2: PUSH1 0x00
00000aa4: SWAP1
00000aa5: PUSH1 0x01
00000aa7: PUSH1 0x01
00000aa9: PUSH1 0xa0
00000aab: SHL
00000aac: SUB
00000aad: DUP4
00000aae: AND
00000aaf: SWAP1
00000ab0: PUSH4 0x70a08231
00000ab5: SWAP1
00000ab6: PUSH2 0x0ac3
00000ab9: SWAP1
00000aba: ADDRESS
00000abb: SWAP1
00000abc: PUSH1 0x04
00000abe: ADD
00000abf: PUSH2 0x1e26
00000ac2: JUMP
00000ac3: JUMPDEST
00000ac4: PUSH1 0x20
00000ac6: PUSH1 0x40
00000ac8: MLOAD
00000ac9: DUP1
00000aca: DUP4
00000acb: SUB
00000acc: DUP2
00000acd: DUP7
00000ace: DUP1
00000acf: EXTCODESIZE
00000ad0: ISZERO
00000ad1: DUP1
00000ad2: ISZERO
00000ad3: PUSH2 0x0adb
00000ad6: JUMPI
00000ad7: PUSH1 0x00
00000ad9: DUP1
00000ada: REVERT
00000adb: JUMPDEST
00000adc: POP
00000add: GAS
00000ade: STATICCALL
00000adf: ISZERO
00000ae0: DUP1
00000ae1: ISZERO
00000ae2: PUSH2 0x0aef
00000ae5: JUMPI
00000ae6: RETURNDATASIZE
00000ae7: PUSH1 0x00
00000ae9: DUP1
00000aea: RETURNDATACOPY
00000aeb: RETURNDATASIZE
00000aec: PUSH1 0x00
00000aee: REVERT
00000aef: JUMPDEST
00000af0: POP
00000af1: POP
00000af2: POP
00000af3: POP
00000af4: PUSH1 0x40
00000af6: MLOAD
00000af7: RETURNDATASIZE
00000af8: PUSH1 0x1f
00000afa: NOT
00000afb: PUSH1 0x1f
00000afd: DUP3
00000afe: ADD
00000aff: AND
00000b00: DUP3
00000b01: ADD
00000b02: DUP1
00000b03: PUSH1 0x40
00000b05: MSTORE
00000b06: POP
00000b07: DUP2
00000b08: ADD
00000b09: SWAP1
00000b0a: PUSH2 0x0b13
00000b0d: SWAP2
00000b0e: SWAP1
00000b0f: PUSH2 0x1b55
00000b12: JUMP
00000b13: JUMPDEST
00000b14: SWAP3
00000b15: SWAP2
00000b16: POP
00000b17: POP
00000b18: JUMP
00000b19: JUMPDEST
00000b1a: PUSH1 0x00
00000b1c: SWAP1
00000b1d: DUP2
00000b1e: MSTORE
00000b1f: PUSH1 0x02
00000b21: PUSH1 0x20
00000b23: DUP2
00000b24: SWAP1
00000b25: MSTORE
00000b26: PUSH1 0x40
00000b28: SWAP1
00000b29: SWAP2
00000b2a: KECCAK256
00000b2b: DUP1
00000b2c: SLOAD
00000b2d: PUSH1 0x01
00000b2f: DUP3
00000b30: ADD
00000b31: SLOAD
00000b32: PUSH1 0x03
00000b34: DUP4
00000b35: ADD
00000b36: SLOAD
00000b37: SWAP3
00000b38: SWAP1
00000b39: SWAP4
00000b3a: ADD
00000b3b: SLOAD
00000b3c: SWAP1
00000b3d: SWAP4
00000b3e: JUMP
00000b3f: JUMPDEST
00000b40: PUSH1 0x00
00000b42: PUSH1 0x40
00000b44: MLOAD
00000b45: PUSH2 0x0b4d
00000b48: SWAP1
00000b49: PUSH2 0x1bb1
00000b4c: JUMP
00000b4d: JUMPDEST
00000b4e: PUSH1 0x40
00000b50: MLOAD
00000b51: DUP1
00000b52: SWAP2
00000b53: SUB
00000b54: SWAP1
00000b55: KECCAK256
00000b56: DUP3
00000b57: PUSH1 0x00
00000b59: ADD
00000b5a: MLOAD
00000b5b: DUP4
00000b5c: PUSH1 0x20
00000b5e: ADD
00000b5f: MLOAD
00000b60: DUP5
00000b61: PUSH1 0x40
00000b63: ADD
00000b64: MLOAD
00000b65: DUP6
00000b66: PUSH1 0x60
00000b68: ADD
00000b69: MLOAD
00000b6a: DUP7
00000b6b: PUSH1 0x80
00000b6d: ADD
00000b6e: MLOAD
00000b6f: DUP8
00000b70: PUSH1 0xa0
00000b72: ADD
00000b73: MLOAD
00000b74: DUP9
00000b75: PUSH1 0xc0
00000b77: ADD
00000b78: MLOAD
00000b79: DUP10
00000b7a: PUSH1 0xe0
00000b7c: ADD
00000b7d: MLOAD
00000b7e: DUP11
00000b7f: PUSH2 0x0100
00000b82: ADD
00000b83: MLOAD
00000b84: DUP12
00000b85: PUSH2 0x0120
00000b88: ADD
00000b89: MLOAD
00000b8a: PUSH1 0x40
00000b8c: MLOAD
00000b8d: PUSH1 0x20
00000b8f: ADD
00000b90: PUSH2 0x0ba3
00000b93: SWAP12
00000b94: SWAP11
00000b95: SWAP10
00000b96: SWAP9
00000b97: SWAP8
00000b98: SWAP7
00000b99: SWAP6
00000b9a: SWAP5
00000b9b: SWAP4
00000b9c: SWAP3
00000b9d: SWAP2
00000b9e: SWAP1
00000b9f: PUSH2 0x1f2d
00000ba2: JUMP
00000ba3: JUMPDEST
00000ba4: PUSH1 0x40
00000ba6: MLOAD
00000ba7: PUSH1 0x20
00000ba9: DUP2
00000baa: DUP4
00000bab: SUB
00000bac: SUB
00000bad: DUP2
00000bae: MSTORE
00000baf: SWAP1
00000bb0: PUSH1 0x40
00000bb2: MSTORE
00000bb3: DUP1
00000bb4: MLOAD
00000bb5: SWAP1
00000bb6: PUSH1 0x20
00000bb8: ADD
00000bb9: KECCAK256
00000bba: SWAP1
00000bbb: POP
00000bbc: SWAP2
00000bbd: SWAP1
00000bbe: POP
00000bbf: JUMP
00000bc0: JUMPDEST
00000bc1: DUP2
00000bc2: MLOAD
00000bc3: PUSH1 0x00
00000bc5: SWAP1
00000bc6: DUP2
00000bc7: MSTORE
00000bc8: PUSH1 0x02
00000bca: PUSH1 0x20
00000bcc: MSTORE
00000bcd: PUSH1 0x40
00000bcf: SWAP1
00000bd0: KECCAK256
00000bd1: SLOAD
00000bd2: PUSH2 0x0bda
00000bd5: DUP4
00000bd6: PUSH2 0x0b3f
00000bd9: JUMP
00000bda: JUMPDEST
00000bdb: EQ
00000bdc: PUSH2 0x0bf7
00000bdf: JUMPI
00000be0: PUSH1 0x40
00000be2: MLOAD
00000be3: PUSH3 0x461bcd
00000be7: PUSH1 0xe5
00000be9: SHL
00000bea: DUP2
00000beb: MSTORE
00000bec: PUSH1 0x04
00000bee: ADD
00000bef: PUSH2 0x035f
00000bf2: SWAP1
00000bf3: PUSH2 0x22e6
00000bf6: JUMP
00000bf7: JUMPDEST
00000bf8: PUSH1 0x00
00000bfa: PUSH2 0x0c07
00000bfd: DUP4
00000bfe: PUSH2 0x0100
00000c01: ADD
00000c02: MLOAD
00000c03: PUSH2 0x0a1c
00000c06: JUMP
00000c07: JUMPDEST
00000c08: PUSH2 0x0100
00000c0b: DUP5
00000c0c: ADD
00000c0d: MLOAD
00000c0e: SWAP1
00000c0f: SWAP2
00000c10: POP
00000c11: PUSH1 0x01
00000c13: PUSH1 0x01
00000c15: PUSH1 0xa0
00000c17: SHL
00000c18: SUB
00000c19: AND
00000c1a: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
00000c2f: EQ
00000c30: PUSH2 0x0c46
00000c33: JUMPI
00000c34: PUSH2 0x0c43
00000c37: DUP2
00000c38: DUP4
00000c39: PUSH4 0xffffffff
00000c3e: PUSH2 0x13af
00000c41: AND
00000c42: JUMP
00000c43: JUMPDEST
00000c44: SWAP1
00000c45: POP
00000c46: JUMPDEST
00000c47: DUP3
00000c48: MLOAD
00000c49: PUSH1 0x00
00000c4b: SWAP1
00000c4c: DUP2
00000c4d: MSTORE
00000c4e: PUSH1 0x02
00000c50: PUSH1 0x20
00000c52: DUP2
00000c53: SWAP1
00000c54: MSTORE
00000c55: PUSH1 0x40
00000c57: SWAP1
00000c58: SWAP2
00000c59: KECCAK256
00000c5a: ADD
00000c5b: SLOAD
00000c5c: DUP1
00000c5d: ISZERO
00000c5e: DUP1
00000c5f: ISZERO
00000c60: SWAP1
00000c61: PUSH2 0x0c7d
00000c64: JUMPI
00000c65: POP
00000c66: DUP4
00000c67: MLOAD
00000c68: PUSH1 0x00
00000c6a: SWAP1
00000c6b: DUP2
00000c6c: MSTORE
00000c6d: PUSH1 0x02
00000c6f: PUSH1 0x20
00000c71: MSTORE
00000c72: PUSH1 0x40
00000c74: SWAP1
00000c75: KECCAK256
00000c76: PUSH1 0x03
00000c78: ADD
00000c79: SLOAD
00000c7a: TIMESTAMP
00000c7b: GT
00000c7c: ISZERO
00000c7d: JUMPDEST
00000c7e: DUP1
00000c7f: ISZERO
00000c80: PUSH2 0x0c9b
00000c83: JUMPI
00000c84: POP
00000c85: DUP4
00000c86: MLOAD
00000c87: PUSH1 0x00
00000c89: SWAP1
00000c8a: DUP2
00000c8b: MSTORE
00000c8c: PUSH1 0x02
00000c8e: PUSH1 0x20
00000c90: MSTORE
00000c91: PUSH1 0x40
00000c93: SWAP1
00000c94: KECCAK256
00000c95: PUSH1 0x01
00000c97: ADD
00000c98: SLOAD
00000c99: ISZERO
00000c9a: ISZERO
00000c9b: JUMPDEST
00000c9c: PUSH2 0x0cb7
00000c9f: JUMPI
00000ca0: PUSH1 0x40
00000ca2: MLOAD
00000ca3: PUSH3 0x461bcd
00000ca7: PUSH1 0xe5
00000ca9: SHL
00000caa: DUP2
00000cab: MSTORE
00000cac: PUSH1 0x04
00000cae: ADD
00000caf: PUSH2 0x035f
00000cb2: SWAP1
00000cb3: PUSH2 0x2039
00000cb6: JUMP
00000cb7: JUMPDEST
00000cb8: DUP3
00000cb9: ISZERO
00000cba: PUSH2 0x0ccc
00000cbd: JUMPI
00000cbe: PUSH2 0x0ccc
00000cc1: DUP5
00000cc2: PUSH2 0x0100
00000cc5: ADD
00000cc6: MLOAD
00000cc7: DUP5
00000cc8: PUSH2 0x13d4
00000ccb: JUMP
00000ccc: JUMPDEST
00000ccd: DUP2
00000cce: DUP2
00000ccf: GT
00000cd0: ISZERO
00000cd1: PUSH2 0x0d11
00000cd4: JUMPI
00000cd5: PUSH2 0x0ce3
00000cd8: DUP5
00000cd9: PUSH2 0x0100
00000cdc: ADD
00000cdd: MLOAD
00000cde: DUP4
00000cdf: PUSH2 0x0ed6
00000ce2: JUMP
00000ce3: JUMPDEST
00000ce4: PUSH2 0x0cf3
00000ce7: DUP2
00000ce8: DUP4
00000ce9: PUSH4 0xffffffff
00000cee: PUSH2 0x117f
00000cf1: AND
00000cf2: JUMP
00000cf3: JUMPDEST
00000cf4: DUP5
00000cf5: MLOAD
00000cf6: PUSH1 0x00
00000cf8: SWAP1
00000cf9: DUP2
00000cfa: MSTORE
00000cfb: PUSH1 0x02
00000cfd: PUSH1 0x20
00000cff: DUP2
00000d00: SWAP1
00000d01: MSTORE
00000d02: PUSH1 0x40
00000d04: SWAP1
00000d05: SWAP2
00000d06: KECCAK256
00000d07: ADD
00000d08: DUP2
00000d09: SWAP1
00000d0a: SSTORE
00000d0b: SWAP1
00000d0c: POP
00000d0d: PUSH2 0x0e5b
00000d10: JUMP
00000d11: JUMPDEST
00000d12: PUSH1 0x00
00000d14: PUSH2 0x0d2f
00000d17: DUP6
00000d18: PUSH1 0x60
00000d1a: ADD
00000d1b: MLOAD
00000d1c: DUP7
00000d1d: PUSH1 0x20
00000d1f: ADD
00000d20: MLOAD
00000d21: PUSH8 0xffffffffffffffff
00000d2a: AND
00000d2b: PUSH2 0x1140
00000d2e: JUMP
00000d2f: JUMPDEST
00000d30: PUSH2 0x0100
00000d33: DUP7
00000d34: ADD
00000d35: MLOAD
00000d36: SWAP1
00000d37: SWAP2
00000d38: POP
00000d39: PUSH2 0x0d51
00000d3c: SWAP1
00000d3d: PUSH2 0x0d4c
00000d40: DUP4
00000d41: DUP6
00000d42: PUSH4 0xffffffff
00000d47: PUSH2 0x117f
00000d4a: AND
00000d4b: JUMP
00000d4c: JUMPDEST
00000d4d: PUSH2 0x0f1f
00000d50: JUMP
00000d51: JUMPDEST
00000d52: DUP5
00000d53: MLOAD
00000d54: PUSH1 0x00
00000d56: SWAP1
00000d57: DUP2
00000d58: MSTORE
00000d59: PUSH1 0x02
00000d5b: PUSH1 0x20
00000d5d: DUP2
00000d5e: SWAP1
00000d5f: MSTORE
00000d60: PUSH1 0x40
00000d62: DUP1
00000d63: DUP4
00000d64: KECCAK256
00000d65: SWAP1
00000d66: SWAP2
00000d67: ADD
00000d68: DUP3
00000d69: SWAP1
00000d6a: SSTORE
00000d6b: PUSH1 0xe0
00000d6d: DUP8
00000d6e: ADD
00000d6f: MLOAD
00000d70: DUP8
00000d71: MLOAD
00000d72: DUP4
00000d73: MSTORE
00000d74: SWAP1
00000d75: DUP3
00000d76: KECCAK256
00000d77: PUSH1 0x01
00000d79: ADD
00000d7a: SLOAD
00000d7b: SWAP2
00000d7c: SWAP4
00000d7d: POP
00000d7e: PUSH2 0x0d86
00000d81: SWAP2
00000d82: PUSH2 0x0f1f
00000d85: JUMP
00000d86: JUMPDEST
00000d87: DUP5
00000d88: MLOAD
00000d89: PUSH1 0x00
00000d8b: SWAP1
00000d8c: DUP2
00000d8d: MSTORE
00000d8e: PUSH1 0x02
00000d90: PUSH1 0x20
00000d92: MSTORE
00000d93: PUSH1 0x40
00000d95: DUP2
00000d96: KECCAK256
00000d97: PUSH1 0x01
00000d99: ADD
00000d9a: DUP2
00000d9b: SWAP1
00000d9c: SSTORE
00000d9d: PUSH1 0x60
00000d9f: DUP7
00000da0: ADD
00000da1: MLOAD
00000da2: PUSH1 0x80
00000da4: DUP8
00000da5: ADD
00000da6: MLOAD
00000da7: PUSH2 0x0db0
00000daa: SWAP2
00000dab: SWAP1
00000dac: PUSH2 0x13ef
00000daf: JUMP
00000db0: JUMPDEST
00000db1: PUSH2 0x0100
00000db4: DUP8
00000db5: ADD
00000db6: MLOAD
00000db7: PUSH1 0xc0
00000db9: DUP9
00000dba: ADD
00000dbb: MLOAD
00000dbc: SWAP2
00000dbd: SWAP3
00000dbe: POP
00000dbf: PUSH2 0x0dd7
00000dc2: SWAP2
00000dc3: PUSH2 0x0dd2
00000dc6: DUP6
00000dc7: DUP6
00000dc8: PUSH4 0xffffffff
00000dcd: PUSH2 0x117f
00000dd0: AND
00000dd1: JUMP
00000dd2: JUMPDEST
00000dd3: PUSH2 0x1407
00000dd6: JUMP
00000dd7: JUMPDEST
00000dd8: PUSH2 0x0dec
00000ddb: DUP7
00000ddc: PUSH2 0x0100
00000ddf: ADD
00000de0: MLOAD
00000de1: DUP8
00000de2: PUSH2 0x0120
00000de5: ADD
00000de6: MLOAD
00000de7: DUP4
00000de8: PUSH2 0x1407
00000deb: JUMP
00000dec: JUMPDEST
00000ded: DUP6
00000dee: PUSH1 0xc0
00000df0: ADD
00000df1: MLOAD
00000df2: PUSH1 0x01
00000df4: PUSH1 0x01
00000df6: PUSH1 0xa0
00000df8: SHL
00000df9: SUB
00000dfa: AND
00000dfb: PUSH4 0x85a336c5
00000e00: DUP8
00000e01: PUSH1 0x60
00000e03: ADD
00000e04: MLOAD
00000e05: DUP9
00000e06: PUSH1 0x40
00000e08: ADD
00000e09: MLOAD
00000e0a: PUSH1 0x40
00000e0c: MLOAD
00000e0d: DUP4
00000e0e: PUSH4 0xffffffff
00000e13: AND
00000e14: PUSH1 0xe0
00000e16: SHL
00000e17: DUP2
00000e18: MSTORE
00000e19: PUSH1 0x04
00000e1b: ADD
00000e1c: PUSH2 0x0e26
00000e1f: SWAP3
00000e20: SWAP2
00000e21: SWAP1
00000e22: PUSH2 0x25c7
00000e25: JUMP
00000e26: JUMPDEST
00000e27: PUSH1 0x00
00000e29: PUSH1 0x40
00000e2b: MLOAD
00000e2c: DUP1
00000e2d: DUP4
00000e2e: SUB
00000e2f: DUP2
00000e30: PUSH1 0x00
00000e32: DUP8
00000e33: DUP1
00000e34: EXTCODESIZE
00000e35: ISZERO
00000e36: DUP1
00000e37: ISZERO
00000e38: PUSH2 0x0e40
00000e3b: JUMPI
00000e3c: PUSH1 0x00
00000e3e: DUP1
00000e3f: REVERT
00000e40: JUMPDEST
00000e41: POP
00000e42: GAS
00000e43: CALL
00000e44: ISZERO
00000e45: DUP1
00000e46: ISZERO
00000e47: PUSH2 0x0e54
00000e4a: JUMPI
00000e4b: RETURNDATASIZE
00000e4c: PUSH1 0x00
00000e4e: DUP1
00000e4f: RETURNDATACOPY
00000e50: RETURNDATASIZE
00000e51: PUSH1 0x00
00000e53: REVERT
00000e54: JUMPDEST
00000e55: POP
00000e56: POP
00000e57: POP
00000e58: POP
00000e59: POP
00000e5a: POP
00000e5b: JUMPDEST
00000e5c: DUP4
00000e5d: MLOAD
00000e5e: PUSH1 0x40
00000e60: MLOAD
00000e61: PUSH32 0x9bd393ad3b7beb95a663b7d1becdd0cecb8b3dd0734109be567e8bb707a787b1
00000e82: SWAP1
00000e83: PUSH2 0x0791
00000e86: SWAP1
00000e87: DUP7
00000e88: SWAP1
00000e89: DUP6
00000e8a: SWAP1
00000e8b: TIMESTAMP
00000e8c: SWAP1
00000e8d: PUSH2 0x25b1
00000e90: JUMP
00000e91: JUMPDEST
00000e92: ADDRESS
00000e93: EXTCODESIZE
00000e94: ISZERO
00000e95: SWAP1
00000e96: JUMP
00000e97: JUMPDEST
00000e98: PUSH1 0x01
00000e9a: PUSH1 0x01
00000e9c: PUSH1 0xa0
00000e9e: SHL
00000e9f: SUB
00000ea0: DUP4
00000ea1: AND
00000ea2: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
00000eb7: EQ
00000eb8: ISZERO
00000eb9: PUSH2 0x0ecb
00000ebc: JUMPI
00000ebd: PUSH2 0x0ec6
00000ec0: DUP3
00000ec1: DUP3
00000ec2: PUSH2 0x1412
00000ec5: JUMP
00000ec6: JUMPDEST
00000ec7: PUSH2 0x0432
00000eca: JUMP
00000ecb: JUMPDEST
00000ecc: PUSH2 0x0ec6
00000ecf: DUP4
00000ed0: DUP4
00000ed1: DUP4
00000ed2: PUSH2 0x14b3
00000ed5: JUMP
00000ed6: JUMPDEST
00000ed7: PUSH1 0x01
00000ed9: PUSH1 0x01
00000edb: PUSH1 0xa0
00000edd: SHL
00000ede: SUB
00000edf: DUP3
00000ee0: AND
00000ee1: PUSH1 0x00
00000ee3: SWAP1
00000ee4: DUP2
00000ee5: MSTORE
00000ee6: PUSH1 0x01
00000ee8: PUSH1 0x20
00000eea: MSTORE
00000eeb: PUSH1 0x40
00000eed: SWAP1
00000eee: KECCAK256
00000eef: SLOAD
00000ef0: PUSH2 0x0eff
00000ef3: SWAP1
00000ef4: DUP3
00000ef5: PUSH4 0xffffffff
00000efa: PUSH2 0x13af
00000efd: AND
00000efe: JUMP
00000eff: JUMPDEST
00000f00: PUSH1 0x01
00000f02: PUSH1 0x01
00000f04: PUSH1 0xa0
00000f06: SHL
00000f07: SUB
00000f08: SWAP1
00000f09: SWAP3
00000f0a: AND
00000f0b: PUSH1 0x00
00000f0d: SWAP1
00000f0e: DUP2
00000f0f: MSTORE
00000f10: PUSH1 0x01
00000f12: PUSH1 0x20
00000f14: MSTORE
00000f15: PUSH1 0x40
00000f17: SWAP1
00000f18: KECCAK256
00000f19: SWAP2
00000f1a: SWAP1
00000f1b: SWAP2
00000f1c: SSTORE
00000f1d: POP
00000f1e: JUMP
00000f1f: JUMPDEST
00000f20: PUSH1 0x01
00000f22: PUSH1 0x01
00000f24: PUSH1 0xa0
00000f26: SHL
00000f27: SUB
00000f28: DUP3
00000f29: AND
00000f2a: PUSH1 0x00
00000f2c: SWAP1
00000f2d: DUP2
00000f2e: MSTORE
00000f2f: PUSH1 0x01
00000f31: PUSH1 0x20
00000f33: MSTORE
00000f34: PUSH1 0x40
00000f36: SWAP1
00000f37: KECCAK256
00000f38: SLOAD
00000f39: PUSH2 0x0eff
00000f3c: SWAP1
00000f3d: DUP3
00000f3e: PUSH4 0xffffffff
00000f43: PUSH2 0x117f
00000f46: AND
00000f47: JUMP
00000f48: JUMPDEST
00000f49: PUSH2 0x0432
00000f4c: DUP3
00000f4d: DUP3
00000f4e: PUSH2 0x1412
00000f51: JUMP
00000f52: JUMPDEST
00000f53: PUSH1 0x00
00000f55: DUP1
00000f56: PUSH1 0x40
00000f58: MLOAD
00000f59: PUSH2 0x0f61
00000f5c: SWAP1
00000f5d: PUSH2 0x1cd9
00000f60: JUMP
00000f61: JUMPDEST
00000f62: PUSH1 0x40
00000f64: DUP1
00000f65: MLOAD
00000f66: SWAP2
00000f67: DUP3
00000f68: SWAP1
00000f69: SUB
00000f6a: DUP3
00000f6b: KECCAK256
00000f6c: DUP3
00000f6d: DUP3
00000f6e: ADD
00000f6f: DUP3
00000f70: MSTORE
00000f71: PUSH1 0x0b
00000f73: DUP4
00000f74: MSTORE
00000f75: PUSH11 0x437265646974204c696e65
00000f81: PUSH1 0xa8
00000f83: SHL
00000f84: PUSH1 0x20
00000f86: SWAP4
00000f87: DUP5
00000f88: ADD
00000f89: MSTORE
00000f8a: DUP2
00000f8b: MLOAD
00000f8c: DUP1
00000f8d: DUP4
00000f8e: ADD
00000f8f: DUP4
00000f90: MSTORE
00000f91: PUSH1 0x05
00000f93: DUP2
00000f94: MSTORE
00000f95: PUSH5 0x0312e302e3
00000f9b: PUSH1 0xdc
00000f9d: SHL
00000f9e: SWAP1
00000f9f: DUP5
00000fa0: ADD
00000fa1: MSTORE
00000fa2: SWAP1
00000fa3: MLOAD
00000fa4: SWAP1
00000fa5: SWAP3
00000fa6: POP
00000fa7: PUSH32 0x5e420c907c7ced2c7df83d4dc6c080ad1bca3c265fdd2ee768fae7918253a466
00000fc8: SWAP2
00000fc9: PUSH32 0x06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c
00000fea: SWAP2
00000feb: CHAINID
00000fec: SWAP2
00000fed: PUSH1 0x00
00000fef: SWAP2
00000ff0: PUSH2 0x1003
00000ff3: SWAP2
00000ff4: DUP8
00000ff5: SWAP2
00000ff6: DUP8
00000ff7: SWAP2
00000ff8: DUP8
00000ff9: SWAP2
00000ffa: DUP8
00000ffb: SWAP2
00000ffc: ADDRESS
00000ffd: SWAP2
00000ffe: ADD
00000fff: PUSH2 0x1ea9
00001002: JUMP
00001003: JUMPDEST
00001004: PUSH1 0x40
00001006: MLOAD
00001007: PUSH1 0x20
00001009: DUP2
0000100a: DUP4
0000100b: SUB
0000100c: SUB
0000100d: DUP2
0000100e: MSTORE
0000100f: SWAP1
00001010: PUSH1 0x40
00001012: MSTORE
00001013: DUP1
00001014: MLOAD
00001015: SWAP1
00001016: PUSH1 0x20
00001018: ADD
00001019: KECCAK256
0000101a: SWAP1
0000101b: POP
0000101c: PUSH1 0x00
0000101e: PUSH1 0x40
00001020: MLOAD
00001021: PUSH2 0x1029
00001024: SWAP1
00001025: PUSH2 0x1d46
00001028: JUMP
00001029: JUMPDEST
0000102a: PUSH1 0x40
0000102c: MLOAD
0000102d: DUP1
0000102e: SWAP2
0000102f: SUB
00001030: SWAP1
00001031: KECCAK256
00001032: DUP9
00001033: PUSH1 0x00
00001035: ADD
00001036: MLOAD
00001037: DUP10
00001038: PUSH1 0x20
0000103a: ADD
0000103b: MLOAD
0000103c: DUP11
0000103d: PUSH1 0x40
0000103f: ADD
00001040: MLOAD
00001041: DUP12
00001042: PUSH1 0x60
00001044: ADD
00001045: MLOAD
00001046: DUP13
00001047: PUSH1 0x80
00001049: ADD
0000104a: MLOAD
0000104b: DUP14
0000104c: PUSH1 0xa0
0000104e: ADD
0000104f: MLOAD
00001050: DUP15
00001051: PUSH1 0xe0
00001053: ADD
00001054: MLOAD
00001055: DUP16
00001056: PUSH2 0x0100
00001059: ADD
0000105a: MLOAD
0000105b: PUSH1 0x40
0000105d: MLOAD
0000105e: PUSH1 0x20
00001060: ADD
00001061: PUSH2 0x1072
00001064: SWAP10
00001065: SWAP9
00001066: SWAP8
00001067: SWAP7
00001068: SWAP6
00001069: SWAP5
0000106a: SWAP4
0000106b: SWAP3
0000106c: SWAP2
0000106d: SWAP1
0000106e: PUSH2 0x1ed5
00001071: JUMP
00001072: JUMPDEST
00001073: PUSH1 0x40
00001075: MLOAD
00001076: PUSH1 0x20
00001078: DUP2
00001079: DUP4
0000107a: SUB
0000107b: SUB
0000107c: DUP2
0000107d: MSTORE
0000107e: SWAP1
0000107f: PUSH1 0x40
00001081: MSTORE
00001082: DUP1
00001083: MLOAD
00001084: SWAP1
00001085: PUSH1 0x20
00001087: ADD
00001088: KECCAK256
00001089: SWAP1
0000108a: POP
0000108b: PUSH2 0x1094
0000108e: DUP3
0000108f: DUP3
00001090: PUSH2 0x14cd
00001093: JUMP
00001094: JUMPDEST
00001095: SWAP9
00001096: SWAP8
00001097: POP
00001098: POP
00001099: POP
0000109a: POP
0000109b: POP
0000109c: POP
0000109d: POP
0000109e: POP
0000109f: JUMP
000010a0: JUMPDEST
000010a1: PUSH1 0x00
000010a3: DUP2
000010a4: MLOAD
000010a5: PUSH1 0x41
000010a7: EQ
000010a8: ISZERO
000010a9: PUSH2 0x10d4
000010ac: JUMPI
000010ad: PUSH1 0x20
000010af: DUP3
000010b0: ADD
000010b1: MLOAD
000010b2: PUSH1 0x40
000010b4: DUP4
000010b5: ADD
000010b6: MLOAD
000010b7: PUSH1 0x60
000010b9: DUP5
000010ba: ADD
000010bb: MLOAD
000010bc: PUSH1 0x00
000010be: BYTE
000010bf: PUSH2 0x10ca
000010c2: DUP7
000010c3: DUP3
000010c4: DUP6
000010c5: DUP6
000010c6: PUSH2 0x1500
000010c9: JUMP
000010ca: JUMPDEST
000010cb: SWAP4
000010cc: POP
000010cd: POP
000010ce: POP
000010cf: POP
000010d0: PUSH2 0x0b13
000010d3: JUMP
000010d4: JUMPDEST
000010d5: DUP2
000010d6: MLOAD
000010d7: PUSH1 0x40
000010d9: EQ
000010da: ISZERO
000010db: PUSH2 0x10fc
000010de: JUMPI
000010df: PUSH1 0x20
000010e1: DUP3
000010e2: ADD
000010e3: MLOAD
000010e4: PUSH1 0x40
000010e6: DUP4
000010e7: ADD
000010e8: MLOAD
000010e9: PUSH2 0x10f3
000010ec: DUP6
000010ed: DUP4
000010ee: DUP4
000010ef: PUSH2 0x15f6
000010f2: JUMP
000010f3: JUMPDEST
000010f4: SWAP3
000010f5: POP
000010f6: POP
000010f7: POP
000010f8: PUSH2 0x0b13
000010fb: JUMP
000010fc: JUMPDEST
000010fd: PUSH1 0x40
000010ff: MLOAD
00001100: PUSH3 0x461bcd
00001104: PUSH1 0xe5
00001106: SHL
00001107: DUP2
00001108: MSTORE
00001109: PUSH1 0x04
0000110b: ADD
0000110c: PUSH2 0x035f
0000110f: SWAP1
00001110: PUSH2 0x206e
00001113: JUMP
00001114: JUMPDEST
00001115: PUSH1 0x00
00001117: PUSH2 0x1139
0000111a: PUSH2 0x112c
0000111d: DUP4
0000111e: PUSH3 0x015180
00001122: PUSH4 0xffffffff
00001127: PUSH2 0x1620
0000112a: AND
0000112b: JUMP
0000112c: JUMPDEST
0000112d: DUP5
0000112e: SWAP1
0000112f: PUSH4 0xffffffff
00001134: PUSH2 0x13af
00001137: AND
00001138: JUMP
00001139: JUMPDEST
0000113a: SWAP4
0000113b: SWAP3
0000113c: POP
0000113d: POP
0000113e: POP
0000113f: JUMP
00001140: JUMPDEST
00001141: PUSH1 0x00
00001143: DUP1
00001144: PUSH2 0x1165
00001147: PUSH2 0x2710
0000114a: PUSH2 0x1159
0000114d: DUP7
0000114e: DUP7
0000114f: PUSH4 0xffffffff
00001154: PUSH2 0x1620
00001157: AND
00001158: JUMP
00001159: JUMPDEST
0000115a: SWAP1
0000115b: PUSH4 0xffffffff
00001160: PUSH2 0x165a
00001163: AND
00001164: JUMP
00001165: JUMPDEST
00001166: SWAP1
00001167: POP
00001168: PUSH2 0x1177
0000116b: DUP5
0000116c: DUP3
0000116d: PUSH4 0xffffffff
00001172: PUSH2 0x13af
00001175: AND
00001176: JUMP
00001177: JUMPDEST
00001178: SWAP5
00001179: SWAP4
0000117a: POP
0000117b: POP
0000117c: POP
0000117d: POP
0000117e: JUMP
0000117f: JUMPDEST
00001180: PUSH1 0x00
00001182: PUSH2 0x1139
00001185: DUP4
00001186: DUP4
00001187: PUSH1 0x40
00001189: MLOAD
0000118a: DUP1
0000118b: PUSH1 0x40
0000118d: ADD
0000118e: PUSH1 0x40
00001190: MSTORE
00001191: DUP1
00001192: PUSH1 0x1e
00001194: DUP2
00001195: MSTORE
00001196: PUSH1 0x20
00001198: ADD
00001199: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
000011ba: DUP2
000011bb: MSTORE
000011bc: POP
000011bd: PUSH2 0x169c
000011c0: JUMP
000011c1: JUMPDEST
000011c2: DUP2
000011c3: MLOAD
000011c4: PUSH1 0x00
000011c6: SWAP1
000011c7: DUP2
000011c8: MSTORE
000011c9: PUSH1 0x02
000011cb: PUSH1 0x20
000011cd: MSTORE
000011ce: PUSH1 0x40
000011d0: SWAP1
000011d1: KECCAK256
000011d2: SLOAD
000011d3: PUSH2 0x11db
000011d6: DUP4
000011d7: PUSH2 0x0b3f
000011da: JUMP
000011db: JUMPDEST
000011dc: EQ
000011dd: PUSH2 0x11f8
000011e0: JUMPI
000011e1: PUSH1 0x40
000011e3: MLOAD
000011e4: PUSH3 0x461bcd
000011e8: PUSH1 0xe5
000011ea: SHL
000011eb: DUP2
000011ec: MSTORE
000011ed: PUSH1 0x04
000011ef: ADD
000011f0: PUSH2 0x035f
000011f3: SWAP1
000011f4: PUSH2 0x22e6
000011f7: JUMP
000011f8: JUMPDEST
000011f9: PUSH1 0x00
000011fb: PUSH2 0x1216
000011fe: DUP4
000011ff: PUSH1 0x60
00001201: ADD
00001202: MLOAD
00001203: DUP5
00001204: PUSH1 0x20
00001206: ADD
00001207: MLOAD
00001208: PUSH8 0xffffffffffffffff
00001211: AND
00001212: PUSH2 0x1140
00001215: JUMP
00001216: JUMPDEST
00001217: SWAP1
00001218: POP
00001219: DUP1
0000121a: DUP3
0000121b: LT
0000121c: ISZERO
0000121d: DUP1
0000121e: ISZERO
0000121f: PUSH2 0x1239
00001222: JUMPI
00001223: POP
00001224: DUP3
00001225: MLOAD
00001226: PUSH1 0x00
00001228: SWAP1
00001229: DUP2
0000122a: MSTORE
0000122b: PUSH1 0x02
0000122d: PUSH1 0x20
0000122f: MSTORE
00001230: PUSH1 0x40
00001232: SWAP1
00001233: KECCAK256
00001234: PUSH1 0x01
00001236: ADD
00001237: SLOAD
00001238: ISZERO
00001239: JUMPDEST
0000123a: PUSH2 0x1255
0000123d: JUMPI
0000123e: PUSH1 0x40
00001240: MLOAD
00001241: PUSH3 0x461bcd
00001245: PUSH1 0xe5
00001247: SHL
00001248: DUP2
00001249: MSTORE
0000124a: PUSH1 0x04
0000124c: ADD
0000124d: PUSH2 0x035f
00001250: SWAP1
00001251: PUSH2 0x236b
00001254: JUMP
00001255: JUMPDEST
00001256: DUP3
00001257: MLOAD
00001258: PUSH1 0x00
0000125a: SWAP1
0000125b: DUP2
0000125c: MSTORE
0000125d: PUSH1 0x02
0000125f: PUSH1 0x20
00001261: DUP2
00001262: SWAP1
00001263: MSTORE
00001264: PUSH1 0x40
00001266: DUP3
00001267: KECCAK256
00001268: ADD
00001269: SLOAD
0000126a: SWAP1
0000126b: PUSH2 0x127a
0000126e: DUP4
0000126f: DUP4
00001270: PUSH4 0xffffffff
00001275: PUSH2 0x117f
00001278: AND
00001279: JUMP
0000127a: JUMPDEST
0000127b: DUP6
0000127c: MLOAD
0000127d: PUSH1 0x00
0000127f: SWAP1
00001280: DUP2
00001281: MSTORE
00001282: PUSH1 0x02
00001284: PUSH1 0x20
00001286: DUP2
00001287: SWAP1
00001288: MSTORE
00001289: PUSH1 0x40
0000128b: DUP3
0000128c: KECCAK256
0000128d: ADD
0000128e: SSTORE
0000128f: PUSH2 0x0100
00001292: DUP7
00001293: ADD
00001294: MLOAD
00001295: SWAP1
00001296: SWAP2
00001297: POP
00001298: PUSH2 0x12a1
0000129b: SWAP1
0000129c: DUP6
0000129d: PUSH2 0x13d4
000012a0: JUMP
000012a1: JUMPDEST
000012a2: PUSH2 0x12b0
000012a5: DUP6
000012a6: PUSH2 0x0100
000012a9: ADD
000012aa: MLOAD
000012ab: DUP3
000012ac: PUSH2 0x0f1f
000012af: JUMP
000012b0: JUMPDEST
000012b1: PUSH1 0x00
000012b3: PUSH2 0x12c4
000012b6: DUP7
000012b7: PUSH1 0x60
000012b9: ADD
000012ba: MLOAD
000012bb: DUP8
000012bc: PUSH1 0x80
000012be: ADD
000012bf: MLOAD
000012c0: PUSH2 0x13ef
000012c3: JUMP
000012c4: JUMPDEST
000012c5: PUSH2 0x0100
000012c8: DUP8
000012c9: ADD
000012ca: MLOAD
000012cb: PUSH1 0xc0
000012cd: DUP9
000012ce: ADD
000012cf: MLOAD
000012d0: SWAP2
000012d1: SWAP3
000012d2: POP
000012d3: PUSH2 0x12e6
000012d6: SWAP2
000012d7: PUSH2 0x0dd2
000012da: DUP8
000012db: DUP6
000012dc: PUSH4 0xffffffff
000012e1: PUSH2 0x117f
000012e4: AND
000012e5: JUMP
000012e6: JUMPDEST
000012e7: PUSH2 0x12fb
000012ea: DUP7
000012eb: PUSH2 0x0100
000012ee: ADD
000012ef: MLOAD
000012f0: DUP8
000012f1: PUSH2 0x0120
000012f4: ADD
000012f5: MLOAD
000012f6: DUP4
000012f7: PUSH2 0x1407
000012fa: JUMP
000012fb: JUMPDEST
000012fc: DUP6
000012fd: PUSH1 0xc0
000012ff: ADD
00001300: MLOAD
00001301: PUSH1 0x01
00001303: PUSH1 0x01
00001305: PUSH1 0xa0
00001307: SHL
00001308: SUB
00001309: AND
0000130a: PUSH4 0x85a336c5
0000130f: DUP8
00001310: PUSH1 0x60
00001312: ADD
00001313: MLOAD
00001314: DUP9
00001315: PUSH1 0x40
00001317: ADD
00001318: MLOAD
00001319: PUSH1 0x40
0000131b: MLOAD
0000131c: DUP4
0000131d: PUSH4 0xffffffff
00001322: AND
00001323: PUSH1 0xe0
00001325: SHL
00001326: DUP2
00001327: MSTORE
00001328: PUSH1 0x04
0000132a: ADD
0000132b: PUSH2 0x1335
0000132e: SWAP3
0000132f: SWAP2
00001330: SWAP1
00001331: PUSH2 0x25c7
00001334: JUMP
00001335: JUMPDEST
00001336: PUSH1 0x00
00001338: PUSH1 0x40
0000133a: MLOAD
0000133b: DUP1
0000133c: DUP4
0000133d: SUB
0000133e: DUP2
0000133f: PUSH1 0x00
00001341: DUP8
00001342: DUP1
00001343: EXTCODESIZE
00001344: ISZERO
00001345: DUP1
00001346: ISZERO
00001347: PUSH2 0x134f
0000134a: JUMPI
0000134b: PUSH1 0x00
0000134d: DUP1
0000134e: REVERT
0000134f: JUMPDEST
00001350: POP
00001351: GAS
00001352: CALL
00001353: ISZERO
00001354: DUP1
00001355: ISZERO
00001356: PUSH2 0x1363
00001359: JUMPI
0000135a: RETURNDATASIZE
0000135b: PUSH1 0x00
0000135d: DUP1
0000135e: RETURNDATACOPY
0000135f: RETURNDATASIZE
00001360: PUSH1 0x00
00001362: REVERT
00001363: JUMPDEST
00001364: POP
00001365: POP
00001366: POP
00001367: POP
00001368: DUP6
00001369: PUSH1 0x00
0000136b: ADD
0000136c: MLOAD
0000136d: PUSH32 0x9bd393ad3b7beb95a663b7d1becdd0cecb8b3dd0734109be567e8bb707a787b1
0000138e: DUP7
0000138f: DUP6
00001390: TIMESTAMP
00001391: PUSH1 0x40
00001393: MLOAD
00001394: PUSH2 0x139f
00001397: SWAP4
00001398: SWAP3
00001399: SWAP2
0000139a: SWAP1
0000139b: PUSH2 0x25b1
0000139e: JUMP
0000139f: JUMPDEST
000013a0: PUSH1 0x40
000013a2: MLOAD
000013a3: DUP1
000013a4: SWAP2
000013a5: SUB
000013a6: SWAP1
000013a7: LOG2
000013a8: POP
000013a9: POP
000013aa: POP
000013ab: POP
000013ac: POP
000013ad: POP
000013ae: JUMP
000013af: JUMPDEST
000013b0: PUSH1 0x00
000013b2: DUP3
000013b3: DUP3
000013b4: ADD
000013b5: DUP4
000013b6: DUP2
000013b7: LT
000013b8: ISZERO
000013b9: PUSH2 0x1139
000013bc: JUMPI
000013bd: PUSH1 0x40
000013bf: MLOAD
000013c0: PUSH3 0x461bcd
000013c4: PUSH1 0xe5
000013c6: SHL
000013c7: DUP2
000013c8: MSTORE
000013c9: PUSH1 0x04
000013cb: ADD
000013cc: PUSH2 0x035f
000013cf: SWAP1
000013d0: PUSH2 0x20e6
000013d3: JUMP
000013d4: JUMPDEST
000013d5: PUSH2 0x02e4
000013d8: PUSH1 0x01
000013da: PUSH1 0x01
000013dc: PUSH1 0xa0
000013de: SHL
000013df: SUB
000013e0: DUP4
000013e1: AND
000013e2: CALLER
000013e3: ADDRESS
000013e4: DUP5
000013e5: PUSH4 0xffffffff
000013ea: PUSH2 0x16c8
000013ed: AND
000013ee: JUMP
000013ef: JUMPDEST
000013f0: PUSH1 0x00
000013f2: PUSH2 0x1139
000013f5: PUSH2 0x2710
000013f8: PUSH2 0x1159
000013fb: DUP6
000013fc: DUP6
000013fd: PUSH4 0xffffffff
00001402: PUSH2 0x1620
00001405: AND
00001406: JUMP
00001407: JUMPDEST
00001408: PUSH2 0x0432
0000140b: DUP4
0000140c: DUP4
0000140d: DUP4
0000140e: PUSH2 0x14b3
00001411: JUMP
00001412: JUMPDEST
00001413: SELFBALANCE
00001414: DUP2
00001415: GT
00001416: ISZERO
00001417: PUSH2 0x1432
0000141a: JUMPI
0000141b: PUSH1 0x40
0000141d: MLOAD
0000141e: PUSH3 0x461bcd
00001422: PUSH1 0xe5
00001424: SHL
00001425: DUP2
00001426: MSTORE
00001427: PUSH1 0x04
00001429: ADD
0000142a: PUSH2 0x035f
0000142d: SWAP1
0000142e: PUSH2 0x256e
00001431: JUMP
00001432: JUMPDEST
00001433: PUSH1 0x00
00001435: DUP3
00001436: PUSH1 0x01
00001438: PUSH1 0x01
0000143a: PUSH1 0xa0
0000143c: SHL
0000143d: SUB
0000143e: AND
0000143f: DUP3
00001440: PUSH2 0x0960
00001443: SWAP1
00001444: PUSH1 0x40
00001446: MLOAD
00001447: PUSH2 0x144f
0000144a: SWAP1
0000144b: PUSH2 0x1d43
0000144e: JUMP
0000144f: JUMPDEST
00001450: PUSH1 0x00
00001452: PUSH1 0x40
00001454: MLOAD
00001455: DUP1
00001456: DUP4
00001457: SUB
00001458: DUP2
00001459: DUP6
0000145a: DUP9
0000145b: DUP9
0000145c: CALL
0000145d: SWAP4
0000145e: POP
0000145f: POP
00001460: POP
00001461: POP
00001462: RETURNDATASIZE
00001463: DUP1
00001464: PUSH1 0x00
00001466: DUP2
00001467: EQ
00001468: PUSH2 0x148d
0000146b: JUMPI
0000146c: PUSH1 0x40
0000146e: MLOAD
0000146f: SWAP2
00001470: POP
00001471: PUSH1 0x1f
00001473: NOT
00001474: PUSH1 0x3f
00001476: RETURNDATASIZE
00001477: ADD
00001478: AND
00001479: DUP3
0000147a: ADD
0000147b: PUSH1 0x40
0000147d: MSTORE
0000147e: RETURNDATASIZE
0000147f: DUP3
00001480: MSTORE
00001481: RETURNDATASIZE
00001482: PUSH1 0x00
00001484: PUSH1 0x20
00001486: DUP5
00001487: ADD
00001488: RETURNDATACOPY
00001489: PUSH2 0x1492
0000148c: JUMP
0000148d: JUMPDEST
0000148e: PUSH1 0x60
00001490: SWAP2
00001491: POP
00001492: JUMPDEST
00001493: POP
00001494: POP
00001495: SWAP1
00001496: POP
00001497: DUP1
00001498: PUSH2 0x0432
0000149b: JUMPI
0000149c: PUSH1 0x40
0000149e: MLOAD
0000149f: PUSH3 0x461bcd
000014a3: PUSH1 0xe5
000014a5: SHL
000014a6: DUP2
000014a7: MSTORE
000014a8: PUSH1 0x04
000014aa: ADD
000014ab: PUSH2 0x035f
000014ae: SWAP1
000014af: PUSH2 0x2328
000014b2: JUMP
000014b3: JUMPDEST
000014b4: PUSH2 0x0432
000014b7: PUSH1 0x01
000014b9: PUSH1 0x01
000014bb: PUSH1 0xa0
000014bd: SHL
000014be: SUB
000014bf: DUP5
000014c0: AND
000014c1: DUP4
000014c2: DUP4
000014c3: PUSH4 0xffffffff
000014c8: PUSH2 0x1726
000014cb: AND
000014cc: JUMP
000014cd: JUMPDEST
000014ce: PUSH1 0x00
000014d0: DUP3
000014d1: DUP3
000014d2: PUSH1 0x40
000014d4: MLOAD
000014d5: PUSH1 0x20
000014d7: ADD
000014d8: PUSH2 0x14e2
000014db: SWAP3
000014dc: SWAP2
000014dd: SWAP1
000014de: PUSH2 0x1cbe
000014e1: JUMP
000014e2: JUMPDEST
000014e3: PUSH1 0x40
000014e5: MLOAD
000014e6: PUSH1 0x20
000014e8: DUP2
000014e9: DUP4
000014ea: SUB
000014eb: SUB
000014ec: DUP2
000014ed: MSTORE
000014ee: SWAP1
000014ef: PUSH1 0x40
000014f1: MSTORE
000014f2: DUP1
000014f3: MLOAD
000014f4: SWAP1
000014f5: PUSH1 0x20
000014f7: ADD
000014f8: KECCAK256
000014f9: SWAP1
000014fa: POP
000014fb: SWAP3
000014fc: SWAP2
000014fd: POP
000014fe: POP
000014ff: JUMP
00001500: JUMPDEST
00001501: PUSH1 0x00
00001503: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0
00001524: DUP3
00001525: GT
00001526: ISZERO
00001527: PUSH2 0x1542
0000152a: JUMPI
0000152b: PUSH1 0x40
0000152d: MLOAD
0000152e: PUSH3 0x461bcd
00001532: PUSH1 0xe5
00001534: SHL
00001535: DUP2
00001536: MSTORE
00001537: PUSH1 0x04
00001539: ADD
0000153a: PUSH2 0x035f
0000153d: SWAP1
0000153e: PUSH2 0x211d
00001541: JUMP
00001542: JUMPDEST
00001543: DUP4
00001544: PUSH1 0xff
00001546: AND
00001547: PUSH1 0x1b
00001549: EQ
0000154a: DUP1
0000154b: PUSH2 0x1557
0000154e: JUMPI
0000154f: POP
00001550: DUP4
00001551: PUSH1 0xff
00001553: AND
00001554: PUSH1 0x1c
00001556: EQ
00001557: JUMPDEST
00001558: PUSH2 0x1573
0000155b: JUMPI
0000155c: PUSH1 0x40
0000155e: MLOAD
0000155f: PUSH3 0x461bcd
00001563: PUSH1 0xe5
00001565: SHL
00001566: DUP2
00001567: MSTORE
00001568: PUSH1 0x04
0000156a: ADD
0000156b: PUSH2 0x035f
0000156e: SWAP1
0000156f: PUSH2 0x2263
00001572: JUMP
00001573: JUMPDEST
00001574: PUSH1 0x00
00001576: PUSH1 0x01
00001578: DUP7
00001579: DUP7
0000157a: DUP7
0000157b: DUP7
0000157c: PUSH1 0x40
0000157e: MLOAD
0000157f: PUSH1 0x00
00001581: DUP2
00001582: MSTORE
00001583: PUSH1 0x20
00001585: ADD
00001586: PUSH1 0x40
00001588: MSTORE
00001589: PUSH1 0x40
0000158b: MLOAD
0000158c: PUSH2 0x1598
0000158f: SWAP5
00001590: SWAP4
00001591: SWAP3
00001592: SWAP2
00001593: SWAP1
00001594: PUSH2 0x1fb1
00001597: JUMP
00001598: JUMPDEST
00001599: PUSH1 0x20
0000159b: PUSH1 0x40
0000159d: MLOAD
0000159e: PUSH1 0x20
000015a0: DUP2
000015a1: SUB
000015a2: SWAP1
000015a3: DUP1
000015a4: DUP5
000015a5: SUB
000015a6: SWAP1
000015a7: DUP6
000015a8: GAS
000015a9: STATICCALL
000015aa: ISZERO
000015ab: DUP1
000015ac: ISZERO
000015ad: PUSH2 0x15ba
000015b0: JUMPI
000015b1: RETURNDATASIZE
000015b2: PUSH1 0x00
000015b4: DUP1
000015b5: RETURNDATACOPY
000015b6: RETURNDATASIZE
000015b7: PUSH1 0x00
000015b9: REVERT
000015ba: JUMPDEST
000015bb: POP
000015bc: POP
000015bd: PUSH1 0x40
000015bf: MLOAD
000015c0: PUSH1 0x1f
000015c2: NOT
000015c3: ADD
000015c4: MLOAD
000015c5: SWAP2
000015c6: POP
000015c7: POP
000015c8: PUSH1 0x01
000015ca: PUSH1 0x01
000015cc: PUSH1 0xa0
000015ce: SHL
000015cf: SUB
000015d0: DUP2
000015d1: AND
000015d2: PUSH2 0x15ed
000015d5: JUMPI
000015d6: PUSH1 0x40
000015d8: MLOAD
000015d9: PUSH3 0x461bcd
000015dd: PUSH1 0xe5
000015df: SHL
000015e0: DUP2
000015e1: MSTORE
000015e2: PUSH1 0x04
000015e4: ADD
000015e5: PUSH2 0x035f
000015e8: SWAP1
000015e9: PUSH2 0x2002
000015ec: JUMP
000015ed: JUMPDEST
000015ee: SWAP6
000015ef: SWAP5
000015f0: POP
000015f1: POP
000015f2: POP
000015f3: POP
000015f4: POP
000015f5: JUMP
000015f6: JUMPDEST
000015f7: PUSH1 0x00
000015f9: PUSH1 0x01
000015fb: PUSH1 0x01
000015fd: PUSH1 0xff
000015ff: SHL
00001600: SUB
00001601: DUP3
00001602: AND
00001603: PUSH1 0xff
00001605: DUP4
00001606: SWAP1
00001607: SHR
00001608: PUSH1 0x1b
0000160a: ADD
0000160b: PUSH2 0x1616
0000160e: DUP7
0000160f: DUP3
00001610: DUP8
00001611: DUP6
00001612: PUSH2 0x1500
00001615: JUMP
00001616: JUMPDEST
00001617: SWAP7
00001618: SWAP6
00001619: POP
0000161a: POP
0000161b: POP
0000161c: POP
0000161d: POP
0000161e: POP
0000161f: JUMP
00001620: JUMPDEST
00001621: PUSH1 0x00
00001623: DUP3
00001624: PUSH2 0x162f
00001627: JUMPI
00001628: POP
00001629: PUSH1 0x00
0000162b: PUSH2 0x0b13
0000162e: JUMP
0000162f: JUMPDEST
00001630: DUP3
00001631: DUP3
00001632: MUL
00001633: DUP3
00001634: DUP5
00001635: DUP3
00001636: DUP2
00001637: PUSH2 0x163c
0000163a: JUMPI
0000163b: INVALID
0000163c: JUMPDEST
0000163d: DIV
0000163e: EQ
0000163f: PUSH2 0x1139
00001642: JUMPI
00001643: PUSH1 0x40
00001645: MLOAD
00001646: PUSH3 0x461bcd
0000164a: PUSH1 0xe5
0000164c: SHL
0000164d: DUP2
0000164e: MSTORE
0000164f: PUSH1 0x04
00001651: ADD
00001652: PUSH2 0x035f
00001655: SWAP1
00001656: PUSH2 0x22a5
00001659: JUMP
0000165a: JUMPDEST
0000165b: PUSH1 0x00
0000165d: PUSH2 0x1139
00001660: DUP4
00001661: DUP4
00001662: PUSH1 0x40
00001664: MLOAD
00001665: DUP1
00001666: PUSH1 0x40
00001668: ADD
00001669: PUSH1 0x40
0000166b: MSTORE
0000166c: DUP1
0000166d: PUSH1 0x1a
0000166f: DUP2
00001670: MSTORE
00001671: PUSH1 0x20
00001673: ADD
00001674: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00001695: DUP2
00001696: MSTORE
00001697: POP
00001698: PUSH2 0x1745
0000169b: JUMP
0000169c: JUMPDEST
0000169d: PUSH1 0x00
0000169f: DUP2
000016a0: DUP5
000016a1: DUP5
000016a2: GT
000016a3: ISZERO
000016a4: PUSH2 0x16c0
000016a7: JUMPI
000016a8: PUSH1 0x40
000016aa: MLOAD
000016ab: PUSH3 0x461bcd
000016af: PUSH1 0xe5
000016b1: SHL
000016b2: DUP2
000016b3: MSTORE
000016b4: PUSH1 0x04
000016b6: ADD
000016b7: PUSH2 0x035f
000016ba: SWAP2
000016bb: SWAP1
000016bc: PUSH2 0x1fcf
000016bf: JUMP
000016c0: JUMPDEST
000016c1: POP
000016c2: POP
000016c3: POP
000016c4: SWAP1
000016c5: SUB
000016c6: SWAP1
000016c7: JUMP
000016c8: JUMPDEST
000016c9: PUSH2 0x1720
000016cc: DUP5
000016cd: PUSH4 0x23b872dd
000016d2: PUSH1 0xe0
000016d4: SHL
000016d5: DUP6
000016d6: DUP6
000016d7: DUP6
000016d8: PUSH1 0x40
000016da: MLOAD
000016db: PUSH1 0x24
000016dd: ADD
000016de: PUSH2 0x16e9
000016e1: SWAP4
000016e2: SWAP3
000016e3: SWAP2
000016e4: SWAP1
000016e5: PUSH2 0x1e53
000016e8: JUMP
000016e9: JUMPDEST
000016ea: PUSH1 0x40
000016ec: DUP1
000016ed: MLOAD
000016ee: PUSH1 0x1f
000016f0: NOT
000016f1: DUP2
000016f2: DUP5
000016f3: SUB
000016f4: ADD
000016f5: DUP2
000016f6: MSTORE
000016f7: SWAP2
000016f8: SWAP1
000016f9: MSTORE
000016fa: PUSH1 0x20
000016fc: DUP2
000016fd: ADD
000016fe: DUP1
000016ff: MLOAD
00001700: PUSH1 0x01
00001702: PUSH1 0x01
00001704: PUSH1 0xe0
00001706: SHL
00001707: SUB
00001708: AND
00001709: PUSH1 0x01
0000170b: PUSH1 0x01
0000170d: PUSH1 0xe0
0000170f: SHL
00001710: SUB
00001711: NOT
00001712: SWAP1
00001713: SWAP4
00001714: AND
00001715: SWAP3
00001716: SWAP1
00001717: SWAP3
00001718: OR
00001719: SWAP1
0000171a: SWAP2
0000171b: MSTORE
0000171c: PUSH2 0x177c
0000171f: JUMP
00001720: JUMPDEST
00001721: POP
00001722: POP
00001723: POP
00001724: POP
00001725: JUMP
00001726: JUMPDEST
00001727: PUSH2 0x0432
0000172a: DUP4
0000172b: PUSH4 0xa9059cbb
00001730: PUSH1 0xe0
00001732: SHL
00001733: DUP5
00001734: DUP5
00001735: PUSH1 0x40
00001737: MLOAD
00001738: PUSH1 0x24
0000173a: ADD
0000173b: PUSH2 0x16e9
0000173e: SWAP3
0000173f: SWAP2
00001740: SWAP1
00001741: PUSH2 0x1e3a
00001744: JUMP
00001745: JUMPDEST
00001746: PUSH1 0x00
00001748: DUP2
00001749: DUP4
0000174a: PUSH2 0x1766
0000174d: JUMPI
0000174e: PUSH1 0x40
00001750: MLOAD
00001751: PUSH3 0x461bcd
00001755: PUSH1 0xe5
00001757: SHL
00001758: DUP2
00001759: MSTORE
0000175a: PUSH1 0x04
0000175c: ADD
0000175d: PUSH2 0x035f
00001760: SWAP2
00001761: SWAP1
00001762: PUSH2 0x1fcf
00001765: JUMP
00001766: JUMPDEST
00001767: POP
00001768: PUSH1 0x00
0000176a: DUP4
0000176b: DUP6
0000176c: DUP2
0000176d: PUSH2 0x1772
00001770: JUMPI
00001771: INVALID
00001772: JUMPDEST
00001773: DIV
00001774: SWAP6
00001775: SWAP5
00001776: POP
00001777: POP
00001778: POP
00001779: POP
0000177a: POP
0000177b: JUMP
0000177c: JUMPDEST
0000177d: PUSH1 0x60
0000177f: PUSH2 0x17d1
00001782: DUP3
00001783: PUSH1 0x40
00001785: MLOAD
00001786: DUP1
00001787: PUSH1 0x40
00001789: ADD
0000178a: PUSH1 0x40
0000178c: MSTORE
0000178d: DUP1
0000178e: PUSH1 0x20
00001790: DUP2
00001791: MSTORE
00001792: PUSH1 0x20
00001794: ADD
00001795: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
000017b6: DUP2
000017b7: MSTORE
000017b8: POP
000017b9: DUP6
000017ba: PUSH1 0x01
000017bc: PUSH1 0x01
000017be: PUSH1 0xa0
000017c0: SHL
000017c1: SUB
000017c2: AND
000017c3: PUSH2 0x180b
000017c6: SWAP1
000017c7: SWAP3
000017c8: SWAP2
000017c9: SWAP1
000017ca: PUSH4 0xffffffff
000017cf: AND
000017d0: JUMP
000017d1: JUMPDEST
000017d2: DUP1
000017d3: MLOAD
000017d4: SWAP1
000017d5: SWAP2
000017d6: POP
000017d7: ISZERO
000017d8: PUSH2 0x0432
000017db: JUMPI
000017dc: DUP1
000017dd: DUP1
000017de: PUSH1 0x20
000017e0: ADD
000017e1: SWAP1
000017e2: MLOAD
000017e3: DUP2
000017e4: ADD
000017e5: SWAP1
000017e6: PUSH2 0x17ef
000017e9: SWAP2
000017ea: SWAP1
000017eb: PUSH2 0x196b
000017ee: JUMP
000017ef: JUMPDEST
000017f0: PUSH2 0x0432
000017f3: JUMPI
000017f4: PUSH1 0x40
000017f6: MLOAD
000017f7: PUSH3 0x461bcd
000017fb: PUSH1 0xe5
000017fd: SHL
000017fe: DUP2
000017ff: MSTORE
00001800: PUSH1 0x04
00001802: ADD
00001803: PUSH2 0x035f
00001806: SWAP1
00001807: PUSH2 0x24d9
0000180a: JUMP
0000180b: JUMPDEST
0000180c: PUSH1 0x60
0000180e: PUSH2 0x1177
00001811: DUP5
00001812: DUP5
00001813: PUSH1 0x00
00001815: DUP6
00001816: PUSH1 0x60
00001818: PUSH2 0x1820
0000181b: DUP6
0000181c: PUSH2 0x18d9
0000181f: JUMP
00001820: JUMPDEST
00001821: PUSH2 0x183c
00001824: JUMPI
00001825: PUSH1 0x40
00001827: MLOAD
00001828: PUSH3 0x461bcd
0000182c: PUSH1 0xe5
0000182e: SHL
0000182f: DUP2
00001830: MSTORE
00001831: PUSH1 0x04
00001833: ADD
00001834: PUSH2 0x035f
00001837: SWAP1
00001838: PUSH2 0x2452
0000183b: JUMP
0000183c: JUMPDEST
0000183d: PUSH1 0x00
0000183f: PUSH1 0x60
00001841: DUP7
00001842: PUSH1 0x01
00001844: PUSH1 0x01
00001846: PUSH1 0xa0
00001848: SHL
00001849: SUB
0000184a: AND
0000184b: DUP6
0000184c: DUP8
0000184d: PUSH1 0x40
0000184f: MLOAD
00001850: PUSH2 0x1859
00001853: SWAP2
00001854: SWAP1
00001855: PUSH2 0x1b95
00001858: JUMP
00001859: JUMPDEST
0000185a: PUSH1 0x00
0000185c: PUSH1 0x40
0000185e: MLOAD
0000185f: DUP1
00001860: DUP4
00001861: SUB
00001862: DUP2
00001863: DUP6
00001864: DUP8
00001865: GAS
00001866: CALL
00001867: SWAP3
00001868: POP
00001869: POP
0000186a: POP
0000186b: RETURNDATASIZE
0000186c: DUP1
0000186d: PUSH1 0x00
0000186f: DUP2
00001870: EQ
00001871: PUSH2 0x1896
00001874: JUMPI
00001875: PUSH1 0x40
00001877: MLOAD
00001878: SWAP2
00001879: POP
0000187a: PUSH1 0x1f
0000187c: NOT
0000187d: PUSH1 0x3f
0000187f: RETURNDATASIZE
00001880: ADD
00001881: AND
00001882: DUP3
00001883: ADD
00001884: PUSH1 0x40
00001886: MSTORE
00001887: RETURNDATASIZE
00001888: DUP3
00001889: MSTORE
0000188a: RETURNDATASIZE
0000188b: PUSH1 0x00
0000188d: PUSH1 0x20
0000188f: DUP5
00001890: ADD
00001891: RETURNDATACOPY
00001892: PUSH2 0x189b
00001895: JUMP
00001896: JUMPDEST
00001897: PUSH1 0x60
00001899: SWAP2
0000189a: POP
0000189b: JUMPDEST
0000189c: POP
0000189d: SWAP2
0000189e: POP
0000189f: SWAP2
000018a0: POP
000018a1: DUP2
000018a2: ISZERO
000018a3: PUSH2 0x18af
000018a6: JUMPI
000018a7: SWAP2
000018a8: POP
000018a9: PUSH2 0x1177
000018ac: SWAP1
000018ad: POP
000018ae: JUMP
000018af: JUMPDEST
000018b0: DUP1
000018b1: MLOAD
000018b2: ISZERO
000018b3: PUSH2 0x18bf
000018b6: JUMPI
000018b7: DUP1
000018b8: MLOAD
000018b9: DUP1
000018ba: DUP3
000018bb: PUSH1 0x20
000018bd: ADD
000018be: REVERT
000018bf: JUMPDEST
000018c0: DUP4
000018c1: PUSH1 0x40
000018c3: MLOAD
000018c4: PUSH3 0x461bcd
000018c8: PUSH1 0xe5
000018ca: SHL
000018cb: DUP2
000018cc: MSTORE
000018cd: PUSH1 0x04
000018cf: ADD
000018d0: PUSH2 0x035f
000018d3: SWAP2
000018d4: SWAP1
000018d5: PUSH2 0x1fcf
000018d8: JUMP
000018d9: JUMPDEST
000018da: EXTCODESIZE
000018db: ISZERO
000018dc: ISZERO
000018dd: SWAP1
000018de: JUMP
000018df: JUMPDEST
000018e0: DUP1
000018e1: CALLDATALOAD
000018e2: PUSH1 0x01
000018e4: PUSH1 0x01
000018e6: PUSH1 0xa0
000018e8: SHL
000018e9: SUB
000018ea: DUP2
000018eb: AND
000018ec: DUP2
000018ed: EQ
000018ee: PUSH2 0x0b13
000018f1: JUMPI
000018f2: PUSH1 0x00
000018f4: DUP1
000018f5: REVERT
000018f6: JUMPDEST
000018f7: PUSH1 0x00
000018f9: PUSH2 0x0140
000018fc: DUP3
000018fd: DUP5
000018fe: SUB
000018ff: SLT
00001900: ISZERO
00001901: PUSH2 0x1908
00001904: JUMPI
00001905: DUP1
00001906: DUP2
00001907: REVERT
00001908: JUMPDEST
00001909: POP
0000190a: SWAP2
0000190b: SWAP1
0000190c: POP
0000190d: JUMP
0000190e: JUMPDEST
0000190f: DUP1
00001910: CALLDATALOAD
00001911: PUSH8 0xffffffffffffffff
0000191a: DUP2
0000191b: AND
0000191c: DUP2
0000191d: EQ
0000191e: PUSH2 0x0b13
00001921: JUMPI
00001922: PUSH1 0x00
00001924: DUP1
00001925: REVERT
00001926: JUMPDEST
00001927: PUSH1 0x00
00001929: PUSH1 0x20
0000192b: DUP3
0000192c: DUP5
0000192d: SUB
0000192e: SLT
0000192f: ISZERO
00001930: PUSH2 0x1937
00001933: JUMPI
00001934: DUP1
00001935: DUP2
00001936: REVERT
00001937: JUMPDEST
00001938: PUSH2 0x1139
0000193b: DUP4
0000193c: DUP4
0000193d: PUSH2 0x18df
00001940: JUMP
00001941: JUMPDEST
00001942: PUSH1 0x00
00001944: DUP1
00001945: PUSH1 0x40
00001947: DUP4
00001948: DUP6
00001949: SUB
0000194a: SLT
0000194b: ISZERO
0000194c: PUSH2 0x1953
0000194f: JUMPI
00001950: DUP1
00001951: DUP2
00001952: REVERT
00001953: JUMPDEST
00001954: PUSH2 0x195d
00001957: DUP5
00001958: DUP5
00001959: PUSH2 0x18df
0000195c: JUMP
0000195d: JUMPDEST
0000195e: SWAP5
0000195f: PUSH1 0x20
00001961: SWAP4
00001962: SWAP1
00001963: SWAP4
00001964: ADD
00001965: CALLDATALOAD
00001966: SWAP4
00001967: POP
00001968: POP
00001969: POP
0000196a: JUMP
0000196b: JUMPDEST
0000196c: PUSH1 0x00
0000196e: PUSH1 0x20
00001970: DUP3
00001971: DUP5
00001972: SUB
00001973: SLT
00001974: ISZERO
00001975: PUSH2 0x197c
00001978: JUMPI
00001979: DUP1
0000197a: DUP2
0000197b: REVERT
0000197c: JUMPDEST
0000197d: DUP2
0000197e: MLOAD
0000197f: DUP1
00001980: ISZERO
00001981: ISZERO
00001982: DUP2
00001983: EQ
00001984: PUSH2 0x1139
00001987: JUMPI
00001988: DUP2
00001989: DUP3
0000198a: REVERT
0000198b: JUMPDEST
0000198c: PUSH1 0x00
0000198e: PUSH1 0x20
00001990: DUP3
00001991: DUP5
00001992: SUB
00001993: SLT
00001994: ISZERO
00001995: PUSH2 0x199c
00001998: JUMPI
00001999: DUP1
0000199a: DUP2
0000199b: REVERT
0000199c: JUMPDEST
0000199d: POP
0000199e: CALLDATALOAD
0000199f: SWAP2
000019a0: SWAP1
000019a1: POP
000019a2: JUMP
000019a3: JUMPDEST
000019a4: PUSH1 0x00
000019a6: DUP1
000019a7: PUSH1 0x00
000019a9: PUSH2 0x0160
000019ac: DUP5
000019ad: DUP7
000019ae: SUB
000019af: SLT
000019b0: ISZERO
000019b1: PUSH2 0x19b8
000019b4: JUMPI
000019b5: DUP1
000019b6: DUP2
000019b7: REVERT
000019b8: JUMPDEST
000019b9: DUP4
000019ba: CALLDATALOAD
000019bb: PUSH8 0xffffffffffffffff
000019c4: DUP1
000019c5: DUP3
000019c6: GT
000019c7: ISZERO
000019c8: PUSH2 0x19cf
000019cb: JUMPI
000019cc: DUP3
000019cd: DUP4
000019ce: REVERT
000019cf: JUMPDEST
000019d0: DUP2
000019d1: DUP7
000019d2: ADD
000019d3: DUP8
000019d4: PUSH1 0x1f
000019d6: DUP3
000019d7: ADD
000019d8: SLT
000019d9: PUSH2 0x19e0
000019dc: JUMPI
000019dd: DUP4
000019de: DUP5
000019df: REVERT
000019e0: JUMPDEST
000019e1: DUP1
000019e2: CALLDATALOAD
000019e3: SWAP3
000019e4: POP
000019e5: DUP2
000019e6: DUP4
000019e7: GT
000019e8: ISZERO
000019e9: PUSH2 0x19f0
000019ec: JUMPI
000019ed: DUP4
000019ee: DUP5
000019ef: REVERT
000019f0: JUMPDEST
000019f1: DUP8
000019f2: PUSH1 0x20
000019f4: DUP5
000019f5: DUP4
000019f6: ADD
000019f7: ADD
000019f8: GT
000019f9: ISZERO
000019fa: PUSH2 0x1a01
000019fd: JUMPI
000019fe: DUP4
000019ff: DUP5
00001a00: REVERT
00001a01: JUMPDEST
00001a02: PUSH1 0x20
00001a04: DUP2
00001a05: ADD
00001a06: SWAP6
00001a07: POP
00001a08: POP
00001a09: POP
00001a0a: DUP1
00001a0b: SWAP3
00001a0c: POP
00001a0d: POP
00001a0e: PUSH2 0x1a1a
00001a11: DUP6
00001a12: PUSH1 0x20
00001a14: DUP7
00001a15: ADD
00001a16: PUSH2 0x18f6
00001a19: JUMP
00001a1a: JUMPDEST
00001a1b: SWAP1
00001a1c: POP
00001a1d: SWAP3
00001a1e: POP
00001a1f: SWAP3
00001a20: POP
00001a21: SWAP3
00001a22: JUMP
00001a23: JUMPDEST
00001a24: PUSH1 0x00
00001a26: DUP1
00001a27: PUSH1 0x00
00001a29: PUSH2 0x0180
00001a2c: DUP5
00001a2d: DUP7
00001a2e: SUB
00001a2f: SLT
00001a30: ISZERO
00001a31: PUSH2 0x1a38
00001a34: JUMPI
00001a35: DUP3
00001a36: DUP4
00001a37: REVERT
00001a38: JUMPDEST
00001a39: PUSH2 0x1a42
00001a3c: DUP6
00001a3d: DUP6
00001a3e: PUSH2 0x18f6
00001a41: JUMP
00001a42: JUMPDEST
00001a43: SWAP3
00001a44: POP
00001a45: PUSH2 0x0140
00001a48: DUP5
00001a49: ADD
00001a4a: CALLDATALOAD
00001a4b: PUSH2 0x1a53
00001a4e: DUP2
00001a4f: PUSH2 0x2673
00001a52: JUMP
00001a53: JUMPDEST
00001a54: SWAP2
00001a55: POP
00001a56: PUSH2 0x0160
00001a59: DUP5
00001a5a: ADD
00001a5b: CALLDATALOAD
00001a5c: PUSH2 0x1a64
00001a5f: DUP2
00001a60: PUSH2 0x2673
00001a63: JUMP
00001a64: JUMPDEST
00001a65: DUP1
00001a66: SWAP2
00001a67: POP
00001a68: POP
00001a69: SWAP3
00001a6a: POP
00001a6b: SWAP3
00001a6c: POP
00001a6d: SWAP3
00001a6e: JUMP
00001a6f: JUMPDEST
00001a70: PUSH1 0x00
00001a72: DUP1
00001a73: PUSH2 0x0160
00001a76: DUP4
00001a77: DUP6
00001a78: SUB
00001a79: SLT
00001a7a: ISZERO
00001a7b: PUSH2 0x1a82
00001a7e: JUMPI
00001a7f: DUP2
00001a80: DUP3
00001a81: REVERT
00001a82: JUMPDEST
00001a83: PUSH2 0x1a8c
00001a86: DUP5
00001a87: DUP5
00001a88: PUSH2 0x18f6
00001a8b: JUMP
00001a8c: JUMPDEST
00001a8d: SWAP5
00001a8e: PUSH2 0x0140
00001a91: SWAP4
00001a92: SWAP1
00001a93: SWAP4
00001a94: ADD
00001a95: CALLDATALOAD
00001a96: SWAP4
00001a97: POP
00001a98: POP
00001a99: POP
00001a9a: JUMP
00001a9b: JUMPDEST
00001a9c: PUSH1 0x00
00001a9e: PUSH2 0x0140
00001aa1: DUP1
00001aa2: DUP4
00001aa3: DUP6
00001aa4: SUB
00001aa5: SLT
00001aa6: ISZERO
00001aa7: PUSH2 0x1aae
00001aaa: JUMPI
00001aab: DUP2
00001aac: DUP3
00001aad: REVERT
00001aae: JUMPDEST
00001aaf: PUSH2 0x1ab7
00001ab2: DUP2
00001ab3: PUSH2 0x2620
00001ab6: JUMP
00001ab7: JUMPDEST
00001ab8: DUP4
00001ab9: CALLDATALOAD
00001aba: DUP2
00001abb: MSTORE
00001abc: PUSH2 0x1ac8
00001abf: DUP6
00001ac0: PUSH1 0x20
00001ac2: DUP7
00001ac3: ADD
00001ac4: PUSH2 0x190e
00001ac7: JUMP
00001ac8: JUMPDEST
00001ac9: PUSH1 0x20
00001acb: DUP3
00001acc: ADD
00001acd: MSTORE
00001ace: PUSH2 0x1ada
00001ad1: DUP6
00001ad2: PUSH1 0x40
00001ad4: DUP7
00001ad5: ADD
00001ad6: PUSH2 0x190e
00001ad9: JUMP
00001ada: JUMPDEST
00001adb: PUSH1 0x40
00001add: DUP3
00001ade: ADD
00001adf: MSTORE
00001ae0: PUSH1 0x60
00001ae2: DUP5
00001ae3: ADD
00001ae4: CALLDATALOAD
00001ae5: PUSH1 0x60
00001ae7: DUP3
00001ae8: ADD
00001ae9: MSTORE
00001aea: PUSH1 0x80
00001aec: DUP5
00001aed: ADD
00001aee: CALLDATALOAD
00001aef: PUSH1 0x80
00001af1: DUP3
00001af2: ADD
00001af3: MSTORE
00001af4: PUSH1 0xa0
00001af6: DUP5
00001af7: ADD
00001af8: CALLDATALOAD
00001af9: PUSH1 0xa0
00001afb: DUP3
00001afc: ADD
00001afd: MSTORE
00001afe: PUSH2 0x1b0a
00001b01: DUP6
00001b02: PUSH1 0xc0
00001b04: DUP7
00001b05: ADD
00001b06: PUSH2 0x18df
00001b09: JUMP
00001b0a: JUMPDEST
00001b0b: PUSH1 0xc0
00001b0d: DUP3
00001b0e: ADD
00001b0f: MSTORE
00001b10: PUSH2 0x1b1c
00001b13: DUP6
00001b14: PUSH1 0xe0
00001b16: DUP7
00001b17: ADD
00001b18: PUSH2 0x18df
00001b1b: JUMP
00001b1c: JUMPDEST
00001b1d: PUSH1 0xe0
00001b1f: DUP3
00001b20: ADD
00001b21: MSTORE
00001b22: PUSH2 0x0100
00001b25: SWAP2
00001b26: POP
00001b27: PUSH2 0x1b32
00001b2a: DUP6
00001b2b: DUP4
00001b2c: DUP7
00001b2d: ADD
00001b2e: PUSH2 0x18df
00001b31: JUMP
00001b32: JUMPDEST
00001b33: DUP3
00001b34: DUP3
00001b35: ADD
00001b36: MSTORE
00001b37: PUSH2 0x0120
00001b3a: SWAP2
00001b3b: POP
00001b3c: PUSH2 0x1b47
00001b3f: DUP6
00001b40: DUP4
00001b41: DUP7
00001b42: ADD
00001b43: PUSH2 0x18df
00001b46: JUMP
00001b47: JUMPDEST
00001b48: SWAP2
00001b49: DUP2
00001b4a: ADD
00001b4b: SWAP2
00001b4c: SWAP1
00001b4d: SWAP2
00001b4e: MSTORE
00001b4f: SWAP4
00001b50: SWAP3
00001b51: POP
00001b52: POP
00001b53: POP
00001b54: JUMP
00001b55: JUMPDEST
00001b56: PUSH1 0x00
00001b58: PUSH1 0x20
00001b5a: DUP3
00001b5b: DUP5
00001b5c: SUB
00001b5d: SLT
00001b5e: ISZERO
00001b5f: PUSH2 0x1b66
00001b62: JUMPI
00001b63: DUP1
00001b64: DUP2
00001b65: REVERT
00001b66: JUMPDEST
00001b67: POP
00001b68: MLOAD
00001b69: SWAP2
00001b6a: SWAP1
00001b6b: POP
00001b6c: JUMP
00001b6d: JUMPDEST
00001b6e: PUSH1 0x00
00001b70: PUSH1 0x20
00001b72: DUP3
00001b73: DUP5
00001b74: SUB
00001b75: SLT
00001b76: ISZERO
00001b77: PUSH2 0x1b7e
00001b7a: JUMPI
00001b7b: DUP1
00001b7c: DUP2
00001b7d: REVERT
00001b7e: JUMPDEST
00001b7f: DUP2
00001b80: CALLDATALOAD
00001b81: PUSH8 0xffffffffffffffff
00001b8a: DUP2
00001b8b: AND
00001b8c: DUP2
00001b8d: EQ
00001b8e: PUSH2 0x1139
00001b91: JUMPI
00001b92: DUP2
00001b93: DUP3
00001b94: REVERT
00001b95: JUMPDEST
00001b96: PUSH1 0x00
00001b98: DUP3
00001b99: MLOAD
00001b9a: PUSH2 0x1ba7
00001b9d: DUP2
00001b9e: DUP5
00001b9f: PUSH1 0x20
00001ba1: DUP8
00001ba2: ADD
00001ba3: PUSH2 0x2647
00001ba6: JUMP
00001ba7: JUMPDEST
00001ba8: SWAP2
00001ba9: SWAP1
00001baa: SWAP2
00001bab: ADD
00001bac: SWAP3
00001bad: SWAP2
00001bae: POP
00001baf: POP
00001bb0: JUMP
00001bb1: JUMPDEST
00001bb2: PUSH32 0x4c6f616e526571756573742862797465733332206c6f616e49642c2075696e74
00001bd3: DUP2
00001bd4: MSTORE
00001bd5: PUSH32 0x3634206c6f616e496e746572657374526174652c2075696e743634206c6f616e
00001bf6: PUSH1 0x20
00001bf8: DUP3
00001bf9: ADD
00001bfa: MSTORE
00001bfb: PUSH32 0x5465726d2c2075696e74323536206c6f616e416d6f756e742c2075696e743235
00001c1c: PUSH1 0x40
00001c1e: DUP3
00001c1f: ADD
00001c20: MSTORE
00001c21: PUSH32 0x36206665652c2075696e7432353620696e697469616c436f6c6c61746572616c
00001c42: PUSH1 0x60
00001c44: DUP3
00001c45: ADD
00001c46: MSTORE
00001c47: PUSH32 0x416d6f756e742c2061646472657373206c656e6465722c206164647265737320
00001c68: PUSH1 0x80
00001c6a: DUP3
00001c6b: ADD
00001c6c: MSTORE
00001c6d: PUSH32 0x636f6c6c61746572616c416464726573732c206164647265737320756e646572
00001c8e: PUSH1 0xa0
00001c90: DUP3
00001c91: ADD
00001c92: MSTORE
00001c93: PUSH32 0x6c79696e67416464726573732c206164647265737320696e7375726572290000
00001cb4: PUSH1 0xc0
00001cb6: DUP3
00001cb7: ADD
00001cb8: MSTORE
00001cb9: PUSH1 0xde
00001cbb: ADD
00001cbc: SWAP1
00001cbd: JUMP
00001cbe: JUMPDEST
00001cbf: PUSH2 0x1901
00001cc2: PUSH1 0xf0
00001cc4: SHL
00001cc5: DUP2
00001cc6: MSTORE
00001cc7: PUSH1 0x02
00001cc9: DUP2
00001cca: ADD
00001ccb: SWAP3
00001ccc: SWAP1
00001ccd: SWAP3
00001cce: MSTORE
00001ccf: PUSH1 0x22
00001cd1: DUP3
00001cd2: ADD
00001cd3: MSTORE
00001cd4: PUSH1 0x42
00001cd6: ADD
00001cd7: SWAP1
00001cd8: JUMP
00001cd9: JUMPDEST
00001cda: PUSH32 0x454950373132446f6d61696e28737472696e67206e616d652c737472696e6720
00001cfb: DUP2
00001cfc: MSTORE
00001cfd: PUSH32 0x76657273696f6e2c75696e7432353620636861696e49642c6164647265737320
00001d1e: PUSH1 0x20
00001d20: DUP3
00001d21: ADD
00001d22: MSTORE
00001d23: PUSH18 0x766572696679696e67436f6e747261637429
00001d36: PUSH1 0x70
00001d38: SHL
00001d39: PUSH1 0x40
00001d3b: DUP3
00001d3c: ADD
00001d3d: MSTORE
00001d3e: PUSH1 0x52
00001d40: ADD
00001d41: SWAP1
00001d42: JUMP
00001d43: JUMPDEST
00001d44: SWAP1
00001d45: JUMP
00001d46: JUMPDEST
00001d47: PUSH32 0x4c6f616e526571756573742862797465733332206c6f616e49642c75696e7436
00001d68: DUP2
00001d69: MSTORE
00001d6a: PUSH32 0x34206c6f616e496e746572657374526174652c75696e743634206c6f616e5465
00001d8b: PUSH1 0x20
00001d8d: DUP3
00001d8e: ADD
00001d8f: MSTORE
00001d90: PUSH32 0x726d2c75696e74323536206c6f616e416d6f756e742c75696e74323536206665
00001db1: PUSH1 0x40
00001db3: DUP3
00001db4: ADD
00001db5: MSTORE
00001db6: PUSH32 0x652c75696e7432353620696e697469616c436f6c6c61746572616c416d6f756e
00001dd7: PUSH1 0x60
00001dd9: DUP3
00001dda: ADD
00001ddb: MSTORE
00001ddc: PUSH32 0x742c6164647265737320636f6c6c61746572616c416464726573732c61646472
00001dfd: PUSH1 0x80
00001dff: DUP3
00001e00: ADD
00001e01: MSTORE
00001e02: PUSH22 0x65737320756e6465726c79696e674164647265737329
00001e19: PUSH1 0x50
00001e1b: SHL
00001e1c: PUSH1 0xa0
00001e1e: DUP3
00001e1f: ADD
00001e20: MSTORE
00001e21: PUSH1 0xb6
00001e23: ADD
00001e24: SWAP1
00001e25: JUMP
00001e26: JUMPDEST
00001e27: PUSH1 0x01
00001e29: PUSH1 0x01
00001e2b: PUSH1 0xa0
00001e2d: SHL
00001e2e: SUB
00001e2f: SWAP2
00001e30: SWAP1
00001e31: SWAP2
00001e32: AND
00001e33: DUP2
00001e34: MSTORE
00001e35: PUSH1 0x20
00001e37: ADD
00001e38: SWAP1
00001e39: JUMP
00001e3a: JUMPDEST
00001e3b: PUSH1 0x01
00001e3d: PUSH1 0x01
00001e3f: PUSH1 0xa0
00001e41: SHL
00001e42: SUB
00001e43: SWAP3
00001e44: SWAP1
00001e45: SWAP3
00001e46: AND
00001e47: DUP3
00001e48: MSTORE
00001e49: PUSH1 0x20
00001e4b: DUP3
00001e4c: ADD
00001e4d: MSTORE
00001e4e: PUSH1 0x40
00001e50: ADD
00001e51: SWAP1
00001e52: JUMP
00001e53: JUMPDEST
00001e54: PUSH1 0x01
00001e56: PUSH1 0x01
00001e58: PUSH1 0xa0
00001e5a: SHL
00001e5b: SUB
00001e5c: SWAP4
00001e5d: DUP5
00001e5e: AND
00001e5f: DUP2
00001e60: MSTORE
00001e61: SWAP2
00001e62: SWAP1
00001e63: SWAP3
00001e64: AND
00001e65: PUSH1 0x20
00001e67: DUP3
00001e68: ADD
00001e69: MSTORE
00001e6a: PUSH1 0x40
00001e6c: DUP2
00001e6d: ADD
00001e6e: SWAP2
00001e6f: SWAP1
00001e70: SWAP2
00001e71: MSTORE
00001e72: PUSH1 0x60
00001e74: ADD
00001e75: SWAP1
00001e76: JUMP
00001e77: JUMPDEST
00001e78: PUSH1 0x01
00001e7a: PUSH1 0x01
00001e7c: PUSH1 0xa0
00001e7e: SHL
00001e7f: SUB
00001e80: SWAP5
00001e81: DUP6
00001e82: AND
00001e83: DUP2
00001e84: MSTORE
00001e85: SWAP3
00001e86: SWAP1
00001e87: SWAP4
00001e88: AND
00001e89: PUSH1 0x20
00001e8b: DUP4
00001e8c: ADD
00001e8d: MSTORE
00001e8e: PUSH1 0x40
00001e90: DUP3
00001e91: ADD
00001e92: MSTORE
00001e93: PUSH1 0x60
00001e95: DUP2
00001e96: ADD
00001e97: SWAP2
00001e98: SWAP1
00001e99: SWAP2
00001e9a: MSTORE
00001e9b: PUSH1 0x80
00001e9d: ADD
00001e9e: SWAP1
00001e9f: JUMP
00001ea0: JUMPDEST
00001ea1: SWAP1
00001ea2: DUP2
00001ea3: MSTORE
00001ea4: PUSH1 0x20
00001ea6: ADD
00001ea7: SWAP1
00001ea8: JUMP
00001ea9: JUMPDEST
00001eaa: SWAP5
00001eab: DUP6
00001eac: MSTORE
00001ead: PUSH1 0x20
00001eaf: DUP6
00001eb0: ADD
00001eb1: SWAP4
00001eb2: SWAP1
00001eb3: SWAP4
00001eb4: MSTORE
00001eb5: PUSH1 0x40
00001eb7: DUP5
00001eb8: ADD
00001eb9: SWAP2
00001eba: SWAP1
00001ebb: SWAP2
00001ebc: MSTORE
00001ebd: PUSH1 0x60
00001ebf: DUP4
00001ec0: ADD
00001ec1: MSTORE
00001ec2: PUSH1 0x01
00001ec4: PUSH1 0x01
00001ec6: PUSH1 0xa0
00001ec8: SHL
00001ec9: SUB
00001eca: AND
00001ecb: PUSH1 0x80
00001ecd: DUP3
00001ece: ADD
00001ecf: MSTORE
00001ed0: PUSH1 0xa0
00001ed2: ADD
00001ed3: SWAP1
00001ed4: JUMP
00001ed5: JUMPDEST
00001ed6: SWAP9
00001ed7: DUP10
00001ed8: MSTORE
00001ed9: PUSH1 0x20
00001edb: DUP10
00001edc: ADD
00001edd: SWAP8
00001ede: SWAP1
00001edf: SWAP8
00001ee0: MSTORE
00001ee1: PUSH8 0xffffffffffffffff
00001eea: SWAP6
00001eeb: DUP7
00001eec: AND
00001eed: PUSH1 0x40
00001eef: DUP10
00001ef0: ADD
00001ef1: MSTORE
00001ef2: SWAP4
00001ef3: SWAP1
00001ef4: SWAP5
00001ef5: AND
00001ef6: PUSH1 0x60
00001ef8: DUP8
00001ef9: ADD
00001efa: MSTORE
00001efb: PUSH1 0x80
00001efd: DUP7
00001efe: ADD
00001eff: SWAP2
00001f00: SWAP1
00001f01: SWAP2
00001f02: MSTORE
00001f03: PUSH1 0xa0
00001f05: DUP6
00001f06: ADD
00001f07: MSTORE
00001f08: PUSH1 0xc0
00001f0a: DUP5
00001f0b: ADD
00001f0c: SWAP2
00001f0d: SWAP1
00001f0e: SWAP2
00001f0f: MSTORE
00001f10: PUSH1 0x01
00001f12: PUSH1 0x01
00001f14: PUSH1 0xa0
00001f16: SHL
00001f17: SUB
00001f18: SWAP1
00001f19: DUP2
00001f1a: AND
00001f1b: PUSH1 0xe0
00001f1d: DUP5
00001f1e: ADD
00001f1f: MSTORE
00001f20: AND
00001f21: PUSH2 0x0100
00001f24: DUP3
00001f25: ADD
00001f26: MSTORE
00001f27: PUSH2 0x0120
00001f2a: ADD
00001f2b: SWAP1
00001f2c: JUMP
00001f2d: JUMPDEST
00001f2e: SWAP11
00001f2f: DUP12
00001f30: MSTORE
00001f31: PUSH1 0x20
00001f33: DUP12
00001f34: ADD
00001f35: SWAP10
00001f36: SWAP1
00001f37: SWAP10
00001f38: MSTORE
00001f39: PUSH8 0xffffffffffffffff
00001f42: SWAP8
00001f43: DUP9
00001f44: AND
00001f45: PUSH1 0x40
00001f47: DUP12
00001f48: ADD
00001f49: MSTORE
00001f4a: SWAP6
00001f4b: SWAP1
00001f4c: SWAP7
00001f4d: AND
00001f4e: PUSH1 0x60
00001f50: DUP10
00001f51: ADD
00001f52: MSTORE
00001f53: PUSH1 0x80
00001f55: DUP9
00001f56: ADD
00001f57: SWAP4
00001f58: SWAP1
00001f59: SWAP4
00001f5a: MSTORE
00001f5b: PUSH1 0xa0
00001f5d: DUP8
00001f5e: ADD
00001f5f: SWAP2
00001f60: SWAP1
00001f61: SWAP2
00001f62: MSTORE
00001f63: PUSH1 0xc0
00001f65: DUP7
00001f66: ADD
00001f67: MSTORE
00001f68: PUSH1 0x01
00001f6a: PUSH1 0x01
00001f6c: PUSH1 0xa0
00001f6e: SHL
00001f6f: SUB
00001f70: SWAP1
00001f71: DUP2
00001f72: AND
00001f73: PUSH1 0xe0
00001f75: DUP7
00001f76: ADD
00001f77: MSTORE
00001f78: SWAP2
00001f79: DUP3
00001f7a: AND
00001f7b: PUSH2 0x0100
00001f7e: DUP6
00001f7f: ADD
00001f80: MSTORE
00001f81: DUP2
00001f82: AND
00001f83: PUSH2 0x0120
00001f86: DUP5
00001f87: ADD
00001f88: MSTORE
00001f89: AND
00001f8a: PUSH2 0x0140
00001f8d: DUP3
00001f8e: ADD
00001f8f: MSTORE
00001f90: PUSH2 0x0160
00001f93: ADD
00001f94: SWAP1
00001f95: JUMP
00001f96: JUMPDEST
00001f97: SWAP4
00001f98: DUP5
00001f99: MSTORE
00001f9a: PUSH1 0x20
00001f9c: DUP5
00001f9d: ADD
00001f9e: SWAP3
00001f9f: SWAP1
00001fa0: SWAP3
00001fa1: MSTORE
00001fa2: PUSH1 0x40
00001fa4: DUP4
00001fa5: ADD
00001fa6: MSTORE
00001fa7: PUSH1 0x60
00001fa9: DUP3
00001faa: ADD
00001fab: MSTORE
00001fac: PUSH1 0x80
00001fae: ADD
00001faf: SWAP1
00001fb0: JUMP
00001fb1: JUMPDEST
00001fb2: SWAP4
00001fb3: DUP5
00001fb4: MSTORE
00001fb5: PUSH1 0xff
00001fb7: SWAP3
00001fb8: SWAP1
00001fb9: SWAP3
00001fba: AND
00001fbb: PUSH1 0x20
00001fbd: DUP5
00001fbe: ADD
00001fbf: MSTORE
00001fc0: PUSH1 0x40
00001fc2: DUP4
00001fc3: ADD
00001fc4: MSTORE
00001fc5: PUSH1 0x60
00001fc7: DUP3
00001fc8: ADD
00001fc9: MSTORE
00001fca: PUSH1 0x80
00001fcc: ADD
00001fcd: SWAP1
00001fce: JUMP
00001fcf: JUMPDEST
00001fd0: PUSH1 0x00
00001fd2: PUSH1 0x20
00001fd4: DUP3
00001fd5: MSTORE
00001fd6: DUP3
00001fd7: MLOAD
00001fd8: DUP1
00001fd9: PUSH1 0x20
00001fdb: DUP5
00001fdc: ADD
00001fdd: MSTORE
00001fde: PUSH2 0x1fee
00001fe1: DUP2
00001fe2: PUSH1 0x40
00001fe4: DUP6
00001fe5: ADD
00001fe6: PUSH1 0x20
00001fe8: DUP8
00001fe9: ADD
00001fea: PUSH2 0x2647
00001fed: JUMP
00001fee: JUMPDEST
00001fef: PUSH1 0x1f
00001ff1: ADD
00001ff2: PUSH1 0x1f
00001ff4: NOT
00001ff5: AND
00001ff6: SWAP2
00001ff7: SWAP1
00001ff8: SWAP2
00001ff9: ADD
00001ffa: PUSH1 0x40
00001ffc: ADD
00001ffd: SWAP3
00001ffe: SWAP2
00001fff: POP
00002000: POP
00002001: JUMP
00002002: JUMPDEST
00002003: PUSH1 0x20
00002005: DUP1
00002006: DUP3
00002007: MSTORE
00002008: PUSH1 0x18
0000200a: SWAP1
0000200b: DUP3
0000200c: ADD
0000200d: MSTORE
0000200e: PUSH32 0x45434453413a20696e76616c6964207369676e61747572650000000000000000
0000202f: PUSH1 0x40
00002031: DUP3
00002032: ADD
00002033: MSTORE
00002034: PUSH1 0x60
00002036: ADD
00002037: SWAP1
00002038: JUMP
00002039: JUMPDEST
0000203a: PUSH1 0x20
0000203c: DUP1
0000203d: DUP3
0000203e: MSTORE
0000203f: DUP2
00002040: DUP2
00002041: ADD
00002042: MSTORE
00002043: PUSH32 0x4c6f616e20436f6e74726163743a20496e76616c69642072657061796d656e74
00002064: PUSH1 0x40
00002066: DUP3
00002067: ADD
00002068: MSTORE
00002069: PUSH1 0x60
0000206b: ADD
0000206c: SWAP1
0000206d: JUMP
0000206e: JUMPDEST
0000206f: PUSH1 0x20
00002071: DUP1
00002072: DUP3
00002073: MSTORE
00002074: PUSH1 0x1f
00002076: SWAP1
00002077: DUP3
00002078: ADD
00002079: MSTORE
0000207a: PUSH32 0x45434453413a20696e76616c6964207369676e6174757265206c656e67746800
0000209b: PUSH1 0x40
0000209d: DUP3
0000209e: ADD
0000209f: MSTORE
000020a0: PUSH1 0x60
000020a2: ADD
000020a3: SWAP1
000020a4: JUMP
000020a5: JUMPDEST
000020a6: PUSH1 0x20
000020a8: DUP1
000020a9: DUP3
000020aa: MSTORE
000020ab: PUSH1 0x21
000020ad: SWAP1
000020ae: DUP3
000020af: ADD
000020b0: MSTORE
000020b1: PUSH32 0x4c6f616e20436f6e74726163743a20496e73756666696369656e742061737365
000020d2: PUSH1 0x40
000020d4: DUP3
000020d5: ADD
000020d6: MSTORE
000020d7: PUSH1 0x1d
000020d9: PUSH1 0xfa
000020db: SHL
000020dc: PUSH1 0x60
000020de: DUP3
000020df: ADD
000020e0: MSTORE
000020e1: PUSH1 0x80
000020e3: ADD
000020e4: SWAP1
000020e5: JUMP
000020e6: JUMPDEST
000020e7: PUSH1 0x20
000020e9: DUP1
000020ea: DUP3
000020eb: MSTORE
000020ec: PUSH1 0x1b
000020ee: SWAP1
000020ef: DUP3
000020f0: ADD
000020f1: MSTORE
000020f2: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
00002113: PUSH1 0x40
00002115: DUP3
00002116: ADD
00002117: MSTORE
00002118: PUSH1 0x60
0000211a: ADD
0000211b: SWAP1
0000211c: JUMP
0000211d: JUMPDEST
0000211e: PUSH1 0x20
00002120: DUP1
00002121: DUP3
00002122: MSTORE
00002123: PUSH1 0x22
00002125: SWAP1
00002126: DUP3
00002127: ADD
00002128: MSTORE
00002129: PUSH32 0x45434453413a20696e76616c6964207369676e6174757265202773272076616c
0000214a: PUSH1 0x40
0000214c: DUP3
0000214d: ADD
0000214e: MSTORE
0000214f: PUSH2 0x7565
00002152: PUSH1 0xf0
00002154: SHL
00002155: PUSH1 0x60
00002157: DUP3
00002158: ADD
00002159: MSTORE
0000215a: PUSH1 0x80
0000215c: ADD
0000215d: SWAP1
0000215e: JUMP
0000215f: JUMPDEST
00002160: PUSH1 0x20
00002162: DUP1
00002163: DUP3
00002164: MSTORE
00002165: PUSH1 0x1f
00002167: SWAP1
00002168: DUP3
00002169: ADD
0000216a: MSTORE
0000216b: PUSH32 0x4c697175696461746f723a20496e76616c6964206c69717569646174696f6e00
0000218c: PUSH1 0x40
0000218e: DUP3
0000218f: ADD
00002190: MSTORE
00002191: PUSH1 0x60
00002193: ADD
00002194: SWAP1
00002195: JUMP
00002196: JUMPDEST
00002197: PUSH1 0x20
00002199: DUP1
0000219a: DUP3
0000219b: MSTORE
0000219c: PUSH1 0x2a
0000219e: SWAP1
0000219f: DUP3
000021a0: ADD
000021a1: MSTORE
000021a2: PUSH32 0x4c6f616e20436f6e74726163743a20496e73756666696369656e7420756e6c6f
000021c3: PUSH1 0x40
000021c5: DUP3
000021c6: ADD
000021c7: MSTORE
000021c8: PUSH10 0x18dad95908185cdcd95d
000021d3: PUSH1 0xb2
000021d5: SHL
000021d6: PUSH1 0x60
000021d8: DUP3
000021d9: ADD
000021da: MSTORE
000021db: PUSH1 0x80
000021dd: ADD
000021de: SWAP1
000021df: JUMP
000021e0: JUMPDEST
000021e1: PUSH1 0x20
000021e3: DUP1
000021e4: DUP3
000021e5: MSTORE
000021e6: DUP2
000021e7: DUP2
000021e8: ADD
000021e9: MSTORE
000021ea: PUSH32 0x4c6f616e20436f6e74726163743a20496e76616c6964207369676e6174757265
0000220b: PUSH1 0x40
0000220d: DUP3
0000220e: ADD
0000220f: MSTORE
00002210: PUSH1 0x60
00002212: ADD
00002213: SWAP1
00002214: JUMP
00002215: JUMPDEST
00002216: PUSH1 0x20
00002218: DUP1
00002219: DUP3
0000221a: MSTORE
0000221b: PUSH1 0x2e
0000221d: SWAP1
0000221e: DUP3
0000221f: ADD
00002220: MSTORE
00002221: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00002242: PUSH1 0x40
00002244: DUP3
00002245: ADD
00002246: MSTORE
00002247: PUSH14 0x191e481a5b9a5d1a585b1a5e9959
00002256: PUSH1 0x92
00002258: SHL
00002259: PUSH1 0x60
0000225b: DUP3
0000225c: ADD
0000225d: MSTORE
0000225e: PUSH1 0x80
00002260: ADD
00002261: SWAP1
00002262: JUMP
00002263: JUMPDEST
00002264: PUSH1 0x20
00002266: DUP1
00002267: DUP3
00002268: MSTORE
00002269: PUSH1 0x22
0000226b: SWAP1
0000226c: DUP3
0000226d: ADD
0000226e: MSTORE
0000226f: PUSH32 0x45434453413a20696e76616c6964207369676e6174757265202776272076616c
00002290: PUSH1 0x40
00002292: DUP3
00002293: ADD
00002294: MSTORE
00002295: PUSH2 0x7565
00002298: PUSH1 0xf0
0000229a: SHL
0000229b: PUSH1 0x60
0000229d: DUP3
0000229e: ADD
0000229f: MSTORE
000022a0: PUSH1 0x80
000022a2: ADD
000022a3: SWAP1
000022a4: JUMP
000022a5: JUMPDEST
000022a6: PUSH1 0x20
000022a8: DUP1
000022a9: DUP3
000022aa: MSTORE
000022ab: PUSH1 0x21
000022ad: SWAP1
000022ae: DUP3
000022af: ADD
000022b0: MSTORE
000022b1: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f
000022d2: PUSH1 0x40
000022d4: DUP3
000022d5: ADD
000022d6: MSTORE
000022d7: PUSH1 0x77
000022d9: PUSH1 0xf8
000022db: SHL
000022dc: PUSH1 0x60
000022de: DUP3
000022df: ADD
000022e0: MSTORE
000022e1: PUSH1 0x80
000022e3: ADD
000022e4: SWAP1
000022e5: JUMP
000022e6: JUMPDEST
000022e7: PUSH1 0x20
000022e9: DUP1
000022ea: DUP3
000022eb: MSTORE
000022ec: PUSH1 0x22
000022ee: SWAP1
000022ef: DUP3
000022f0: ADD
000022f1: MSTORE
000022f2: PUSH32 0x4c6f616e20436f6e74726163743a20496e636f7272656374206c6f616e206461
00002313: PUSH1 0x40
00002315: DUP3
00002316: ADD
00002317: MSTORE
00002318: PUSH2 0x7461
0000231b: PUSH1 0xf0
0000231d: SHL
0000231e: PUSH1 0x60
00002320: DUP3
00002321: ADD
00002322: MSTORE
00002323: PUSH1 0x80
00002325: ADD
00002326: SWAP1
00002327: JUMP
00002328: JUMPDEST
00002329: PUSH1 0x20
0000232b: DUP1
0000232c: DUP3
0000232d: MSTORE
0000232e: PUSH1 0x23
00002330: SWAP1
00002331: DUP3
00002332: ADD
00002333: MSTORE
00002334: PUSH32 0x4c6f616e20436f6e74726163743a204661696c656420746f2073656e64204574
00002355: PUSH1 0x40
00002357: DUP3
00002358: ADD
00002359: MSTORE
0000235a: PUSH3 0x3432b9
0000235e: PUSH1 0xe9
00002360: SHL
00002361: PUSH1 0x60
00002363: DUP3
00002364: ADD
00002365: MSTORE
00002366: PUSH1 0x80
00002368: ADD
00002369: SWAP1
0000236a: JUMP
0000236b: JUMPDEST
0000236c: PUSH1 0x20
0000236e: DUP1
0000236f: DUP3
00002370: MSTORE
00002371: PUSH1 0x2f
00002373: SWAP1
00002374: DUP3
00002375: ADD
00002376: MSTORE
00002377: PUSH32 0x4c6f616e20436f6e74726163743a20496e76616c6964206c6971756964617469
00002398: PUSH1 0x40
0000239a: DUP3
0000239b: ADD
0000239c: MSTORE
0000239d: PUSH15 0x6f6e207374617465206368616e6765
000023ad: PUSH1 0x88
000023af: SHL
000023b0: PUSH1 0x60
000023b2: DUP3
000023b3: ADD
000023b4: MSTORE
000023b5: PUSH1 0x80
000023b7: ADD
000023b8: SWAP1
000023b9: JUMP
000023ba: JUMPDEST
000023bb: PUSH1 0x20
000023bd: DUP1
000023be: DUP3
000023bf: MSTORE
000023c0: PUSH1 0x32
000023c2: SWAP1
000023c3: DUP3
000023c4: ADD
000023c5: MSTORE
000023c6: PUSH32 0x4c6f616e20436f6e74726163743a2043616c6c6572206d75737420626520536d
000023e7: PUSH1 0x40
000023e9: DUP3
000023ea: ADD
000023eb: MSTORE
000023ec: PUSH18 0x185c9d10dc99591a5d0810dbdb9d1c9858dd
000023ff: PUSH1 0x72
00002401: SHL
00002402: PUSH1 0x60
00002404: DUP3
00002405: ADD
00002406: MSTORE
00002407: PUSH1 0x80
00002409: ADD
0000240a: SWAP1
0000240b: JUMP
0000240c: JUMPDEST
0000240d: PUSH1 0x20
0000240f: DUP1
00002410: DUP3
00002411: MSTORE
00002412: PUSH1 0x26
00002414: SWAP1
00002415: DUP3
00002416: ADD
00002417: MSTORE
00002418: PUSH32 0x4c6f616e20436f6e74726163743a20496e73756666696369656e7420636f6c6c
00002439: PUSH1 0x40
0000243b: DUP3
0000243c: ADD
0000243d: MSTORE
0000243e: PUSH6 0x185d195c985b
00002445: PUSH1 0xd2
00002447: SHL
00002448: PUSH1 0x60
0000244a: DUP3
0000244b: ADD
0000244c: MSTORE
0000244d: PUSH1 0x80
0000244f: ADD
00002450: SWAP1
00002451: JUMP
00002452: JUMPDEST
00002453: PUSH1 0x20
00002455: DUP1
00002456: DUP3
00002457: MSTORE
00002458: PUSH1 0x1d
0000245a: SWAP1
0000245b: DUP3
0000245c: ADD
0000245d: MSTORE
0000245e: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
0000247f: PUSH1 0x40
00002481: DUP3
00002482: ADD
00002483: MSTORE
00002484: PUSH1 0x60
00002486: ADD
00002487: SWAP1
00002488: JUMP
00002489: JUMPDEST
0000248a: PUSH1 0x20
0000248c: DUP1
0000248d: DUP3
0000248e: MSTORE
0000248f: PUSH1 0x30
00002491: SWAP1
00002492: DUP3
00002493: ADD
00002494: MSTORE
00002495: PUSH32 0x4c6f616e20436f6e74726163743a20496e6372656173696e6720636f6c6c6174
000024b6: PUSH1 0x40
000024b8: DUP3
000024b9: ADD
000024ba: MSTORE
000024bb: PUSH16 0x195c985b081b9bdd08185b1b1bddd959
000024cc: PUSH1 0x82
000024ce: SHL
000024cf: PUSH1 0x60
000024d1: DUP3
000024d2: ADD
000024d3: MSTORE
000024d4: PUSH1 0x80
000024d6: ADD
000024d7: SWAP1
000024d8: JUMP
000024d9: JUMPDEST
000024da: PUSH1 0x20
000024dc: DUP1
000024dd: DUP3
000024de: MSTORE
000024df: PUSH1 0x2a
000024e1: SWAP1
000024e2: DUP3
000024e3: ADD
000024e4: MSTORE
000024e5: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00002506: PUSH1 0x40
00002508: DUP3
00002509: ADD
0000250a: MSTORE
0000250b: PUSH10 0x1bdd081cdd58d8d95959
00002516: PUSH1 0xb2
00002518: SHL
00002519: PUSH1 0x60
0000251b: DUP3
0000251c: ADD
0000251d: MSTORE
0000251e: PUSH1 0x80
00002520: ADD
00002521: SWAP1
00002522: JUMP
00002523: JUMPDEST
00002524: PUSH1 0x20
00002526: DUP1
00002527: DUP3
00002528: MSTORE
00002529: PUSH1 0x2b
0000252b: SWAP1
0000252c: DUP3
0000252d: ADD
0000252e: MSTORE
0000252f: PUSH32 0x4c6f616e20436f6e74726163743a20417574686f72697a6564206f6e6c792066
00002550: PUSH1 0x40
00002552: DUP3
00002553: ADD
00002554: MSTORE
00002555: PUSH11 0x37b9103137b93937bbb2b9
00002561: PUSH1 0xa9
00002563: SHL
00002564: PUSH1 0x60
00002566: DUP3
00002567: ADD
00002568: MSTORE
00002569: PUSH1 0x80
0000256b: ADD
0000256c: SWAP1
0000256d: JUMP
0000256e: JUMPDEST
0000256f: PUSH1 0x20
00002571: DUP1
00002572: DUP3
00002573: MSTORE
00002574: PUSH1 0x23
00002576: SWAP1
00002577: DUP3
00002578: ADD
00002579: MSTORE
0000257a: PUSH32 0x4c6f616e20436f6e74726163743a20496e73756666696369656e742062616c61
0000259b: PUSH1 0x40
0000259d: DUP3
0000259e: ADD
0000259f: MSTORE
000025a0: PUSH3 0x6e6365
000025a4: PUSH1 0xe8
000025a6: SHL
000025a7: PUSH1 0x60
000025a9: DUP3
000025aa: ADD
000025ab: MSTORE
000025ac: PUSH1 0x80
000025ae: ADD
000025af: SWAP1
000025b0: JUMP
000025b1: JUMPDEST
000025b2: SWAP3
000025b3: DUP4
000025b4: MSTORE
000025b5: PUSH1 0x20
000025b7: DUP4
000025b8: ADD
000025b9: SWAP2
000025ba: SWAP1
000025bb: SWAP2
000025bc: MSTORE
000025bd: PUSH1 0x40
000025bf: DUP3
000025c0: ADD
000025c1: MSTORE
000025c2: PUSH1 0x60
000025c4: ADD
000025c5: SWAP1
000025c6: JUMP
000025c7: JUMPDEST
000025c8: SWAP2
000025c9: DUP3
000025ca: MSTORE
000025cb: PUSH8 0xffffffffffffffff
000025d4: AND
000025d5: PUSH1 0x20
000025d7: DUP3
000025d8: ADD
000025d9: MSTORE
000025da: PUSH1 0x40
000025dc: ADD
000025dd: SWAP1
000025de: JUMP
000025df: JUMPDEST
000025e0: SWAP6
000025e1: DUP7
000025e2: MSTORE
000025e3: PUSH8 0xffffffffffffffff
000025ec: SWAP5
000025ed: DUP6
000025ee: AND
000025ef: PUSH1 0x20
000025f1: DUP8
000025f2: ADD
000025f3: MSTORE
000025f4: SWAP3
000025f5: SWAP1
000025f6: SWAP4
000025f7: AND
000025f8: PUSH1 0x40
000025fa: DUP6
000025fb: ADD
000025fc: MSTORE
000025fd: PUSH1 0x01
000025ff: PUSH1 0x01
00002601: PUSH1 0xa0
00002603: SHL
00002604: SUB
00002605: SWAP1
00002606: DUP2
00002607: AND
00002608: PUSH1 0x60
0000260a: DUP6
0000260b: ADD
0000260c: MSTORE
0000260d: SWAP2
0000260e: DUP3
0000260f: AND
00002610: PUSH1 0x80
00002612: DUP5
00002613: ADD
00002614: MSTORE
00002615: AND
00002616: PUSH1 0xa0
00002618: DUP3
00002619: ADD
0000261a: MSTORE
0000261b: PUSH1 0xc0
0000261d: ADD
0000261e: SWAP1
0000261f: JUMP
00002620: JUMPDEST
00002621: PUSH1 0x40
00002623: MLOAD
00002624: DUP2
00002625: DUP2
00002626: ADD
00002627: PUSH8 0xffffffffffffffff
00002630: DUP2
00002631: GT
00002632: DUP3
00002633: DUP3
00002634: LT
00002635: OR
00002636: ISZERO
00002637: PUSH2 0x263f
0000263a: JUMPI
0000263b: PUSH1 0x00
0000263d: DUP1
0000263e: REVERT
0000263f: JUMPDEST
00002640: PUSH1 0x40
00002642: MSTORE
00002643: SWAP2
00002644: SWAP1
00002645: POP
00002646: JUMP
00002647: JUMPDEST
00002648: PUSH1 0x00
0000264a: JUMPDEST
0000264b: DUP4
0000264c: DUP2
0000264d: LT
0000264e: ISZERO
0000264f: PUSH2 0x2662
00002652: JUMPI
00002653: DUP2
00002654: DUP2
00002655: ADD
00002656: MLOAD
00002657: DUP4
00002658: DUP3
00002659: ADD
0000265a: MSTORE
0000265b: PUSH1 0x20
0000265d: ADD
0000265e: PUSH2 0x264a
00002661: JUMP
00002662: JUMPDEST
00002663: DUP4
00002664: DUP2
00002665: GT
00002666: ISZERO
00002667: PUSH2 0x1720
0000266a: JUMPI
0000266b: POP
0000266c: POP
0000266d: PUSH1 0x00
0000266f: SWAP2
00002670: ADD
00002671: MSTORE
00002672: JUMP
00002673: JUMPDEST
00002674: PUSH1 0x01
00002676: PUSH1 0x01
00002678: PUSH1 0xa0
0000267a: SHL
0000267b: SUB
0000267c: DUP2
0000267d: AND
0000267e: DUP2
0000267f: EQ
00002680: PUSH2 0x2688
00002683: JUMPI
00002684: PUSH1 0x00
00002686: DUP1
00002687: REVERT
00002688: JUMPDEST
00002689: POP
0000268a: JUMP
0000268b: INVALID
0000268c: LOG2
0000268d: PUSH5 0x6970667358
00002693: UNKNOWN(0x22)
00002694: SLT
00002695: KECCAK256
00002696: UNKNOWN(0xB3)
00002697: UNKNOWN(0x29)
00002698: UNKNOWN(0xC5)
00002699: UNKNOWN(0x27)
0000269a: GAS
0000269b: PUSH13 0xaba7610cb74ecb65f399fbf4f5
000026a9: UNKNOWN(0xF8)
000026aa: SELFBALANCE
000026ab: PUSH17 0xdc3670024478b103d51164736f6c634300
000026bd: MOD
000026be: MOD
000026bf: STOP
000026c0: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xab2aa95d43048f0a8a5bdb5e32eb80256a5807a29a9d62f01e46684cbc514b4b
call_targets: 0xc46507ce7b32e4243ae39644f4b2fe42e6d9c46f
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xab2aa95d43048f0a8a5bdb5e32eb80256a5807a29a9d62f01e46684cbc514b4b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc46507ce7b32e4243ae39644f4b2fe42e6d9c46f"
    ],
    "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": "0x8459e45a",
            "selector": "0x8459e45a",
            "calldata_variants": [
                "0x8459e45a",
                "0x8459e45a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb588d225",
            "selector": "0xb588d225",
            "calldata_variants": [
                "0xb588d225",
                "0xb588d2250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d2b1b3",
            "selector": "0xc4d2b1b3",
            "calldata_variants": [
                "0xc4d2b1b3",
                "0xc4d2b1b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb76ef2d",
            "selector": "0xcb76ef2d",
            "calldata_variants": [
                "0xcb76ef2d",
                "0xcb76ef2d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e764a3c",
            "selector": "0x6e764a3c",
            "calldata_variants": [
                "0x6e764a3c",
                "0x6e764a3c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e947298",
            "selector": "0x6e947298",
            "calldata_variants": [
                "0x6e947298",
                "0x6e9472980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7e695d56",
            "selector": "0x7e695d56",
            "calldata_variants": [
                "0x7e695d56",
                "0x7e695d560000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2391b6a6",
            "selector": "0x2391b6a6",
            "calldata_variants": [
                "0x2391b6a6",
                "0x2391b6a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1725,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3651,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4946,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 5,
    "guards_detected": [
        {
            "pc": 1384,
            "type": "msg_sender_eq_const",
            "value": 2.8389620141085504e+47
        },
        {
            "pc": 1976,
            "type": "msg_sender_eq_const",
            "value": 2.8389620141085504e+47
        }
    ],
    "untrusted_call_count": 5
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xab2aa95d43048f0a8a5bdb5e32eb80256a5807a29a9d62f01e46684cbc514b4b
call_targets: 0xc46507ce7b32e4243ae39644f4b2fe42e6d9c46f
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xab2aa95d43048f0a8a5bdb5e32eb80256a5807a29a9d62f01e46684cbc514b4b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc46507ce7b32e4243ae39644f4b2fe42e6d9c46f"
    ],
    "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": "0x8459e45a",
            "selector": "0x8459e45a",
            "calldata_variants": [
                "0x8459e45a",
                "0x8459e45a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb588d225",
            "selector": "0xb588d225",
            "calldata_variants": [
                "0xb588d225",
                "0xb588d2250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d2b1b3",
            "selector": "0xc4d2b1b3",
            "calldata_variants": [
                "0xc4d2b1b3",
                "0xc4d2b1b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb76ef2d",
            "selector": "0xcb76ef2d",
            "calldata_variants": [
                "0xcb76ef2d",
                "0xcb76ef2d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e764a3c",
            "selector": "0x6e764a3c",
            "calldata_variants": [
                "0x6e764a3c",
                "0x6e764a3c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6e947298",
            "selector": "0x6e947298",
            "calldata_variants": [
                "0x6e947298",
                "0x6e9472980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7e695d56",
            "selector": "0x7e695d56",
            "calldata_variants": [
                "0x7e695d56",
                "0x7e695d560000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2391b6a6",
            "selector": "0x2391b6a6",
            "calldata_variants": [
                "0x2391b6a6",
                "0x2391b6a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1725,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3651,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4946,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 5,
    "guards_detected": [
        {
            "pc": 1384,
            "type": "msg_sender_eq_const",
            "value": 2.8389620141085504e+47
        },
        {
            "pc": 1976,
            "type": "msg_sender_eq_const",
            "value": 2.8389620141085504e+47
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 6
}