a2d29766-0c37-4d3c-95bb-4129518aaaa8
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31113 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 76492 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 76493 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 76494 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 76495 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 76496 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 76497 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:720267] OpenAI Codex v0.77.0 (research preview)
[codex:720267] --------
[codex:720267] workdir: /tmp/codex-multi-nxl7_xcl
[codex:720267] model: gpt-5.2-codex
[codex:720267] provider: openai
[codex:720267] approval: never
[codex:720267] sandbox: read-only
[codex:720267] reasoning effort: xhigh
[codex:720267] reasoning summaries: auto
[codex:720267] session id: 019b7af2-b841-7612-853a-f3e23312da6b
[codex:720267] --------
[codex:720267] user
[codex:720267] 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:720267]
[codex:720267] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:720267]
[codex:720267] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:720267] - Gas inefficiency, code quality, or best practices
[codex:720267] - Theoretical vulnerabilities without a clear extraction path
[codex:720267] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:720267] - Issues requiring social engineering or off-chain coordination
[codex:720267]
[codex:720267] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:720267] - CALL/DELEGATECALL with controllable destination or calldata
[codex:720267] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:720267] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:720267] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:720267] - External calls before state updates (reentrancy)
[codex:720267] - SELFDESTRUCT with controllable beneficiary
[codex:720267] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:720267]
[codex:720267] For each finding, you MUST explain:
[codex:720267] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:720267] 2. The concrete sequence of transactions to extract value
[codex:720267] 3. Why you believe this is exploitable (not just suspicious)
[codex:720267]
[codex:720267] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:720267] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:720267]
[codex:720267] Output MUST be valid JSON matching the provided schema.
[codex:720267] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:720267] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:720267] mcp startup: no servers
[codex:720267]
[codex:720267] thinking
[codex:720267] **Preparing to read skill files**
[codex:720267] exec
[codex:720267] /bin/bash -lc ls in /tmp/codex-multi-nxl7_xcl succeeded in 5ms:
[codex:720267] BYTECODE_BUNDLE.txt
[codex:720267] codex-output-schema.json
[codex:720267] exec
[codex:720267] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-nxl7_xcl succeeded in 6ms:
[codex:720267] Runtime bytecode bundle for best-effort auditing.
[codex:720267] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:720267]
[codex:720267] FILE: runtime_bytecode.hex
[codex:720267] 0x6080604052600436106100bc5760003560e01c8063948f507611610074578063a90e87311161004e578063a90e8731146103c4578063bf353dbb146103d7578063c9892a5f14610412576100e1565b8063948f50761461035457806397645e37146103845780639c52a7f1146103a4576100e1565b806360c7d295116100a557806360c7d295146102bd57806365fae35e1461031457806378e111f614610334576100e1565b80631cff79cd146102955780631f6a1eb9146102aa575b6100e1565b6308c379a060e01b60005260206004526002602452806044525060646000fd5b60003560e01c63fa461e338114156102925760ff6000537f1f98431c8ad98523631ae4a59f267346ea31f9840000000000000000000000006001526084356015527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54603552605560002073ffffffffffffffffffffffffffffffffffffffff16338114610191576101917f30320000000000000000000000000000000000000000000000000000000000006100c1565b600435600081136101d15750602435600081136101d1576101d17f30310000000000000000000000000000000000000000000000000000000000006100c1565b60a435308114600181146101ea57801561023c5761028d565b63a9059cbb60e01b6000528360045282602452600080604460008060c4355af1610237576102377f30340000000000000000000000000000000000000000000000000000000000006100c1565b61028d565b6323b872dd60e01b600052816004528360245282604452600080606460008060c4355af161028d5761028d7f30330000000000000000000000000000000000000000000000000000000000006100c1565b505050505b50005b6102a86102a3366004612b3c565b610432565b005b6102a86102b8366004612b8c565b610469565b3480156102c957600080fd5b506001546102ea9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561032057600080fd5b506102a861032f366004612be6565b6105e7565b610347610342366004612b3c565b610622565b60405161030b9190612c0a565b34801561036057600080fd5b5061037461036f366004612be6565b610681565b604051901515815260200161030b565b34801561039057600080fd5b506102a861039f366004612c7d565b61075d565b3480156103b057600080fd5b506102a86103bf366004612be6565b6107ee565b6103476103d2366004612b8c565b610826565b3480156103e357600080fd5b506104046103f2366004612be6565b60006020819052908152604090205481565b60405190815260200161030b565b34801561041e57600080fd5b506102a861042d366004612c7d565b6109ac565b61043a610a39565b61044357600080fd5b600080825160208401855af480156001811461045e57610463565b600080fd5b50505050565b6001546040517f8bf4515c00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638bf4515c906104c0908690600401612c0a565b60206040518083038186803b1580156104d857600080fd5b505afa1580156104ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105109190612d2f565b905073ffffffffffffffffffffffffffffffffffffffff81166105d8576001546040517f7ed0c3b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637ed0c3b290610583908690600401612c0a565b602060405180830381600087803b15801561059d57600080fd5b505af11580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190612d2f565b90505b6105e28183610432565b505050565b6105ef610a39565b6105f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902060019055565b606061062c610a39565b61063557600080fd5b600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e81156001811461067157610678565b8160208501fd5b50505092915050565b600061068b610a39565b61069457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015260640160405180910390fd5b506001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178155919050565b610765610a39565b61076e57600080fd5b60005b81518110156107ea57600160008084848151811061079157610791612d4c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806107e290612d7b565b915050610771565b5050565b6107f6610a39565b6107ff57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040812055565b6001546040517f8bf4515c00000000000000000000000000000000000000000000000000000000815260609160009173ffffffffffffffffffffffffffffffffffffffff90911690638bf4515c90610882908790600401612c0a565b60206040518083038186803b15801561089a57600080fd5b505afa1580156108ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d29190612d2f565b905073ffffffffffffffffffffffffffffffffffffffff811661099a576001546040517f7ed0c3b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637ed0c3b290610945908790600401612c0a565b602060405180830381600087803b15801561095f57600080fd5b505af1158015610973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109979190612d2f565b90505b6109a48184610622565b949350505050565b6109b4610a39565b6109bd57600080fd5b60005b81518110156107ea5760008060008484815181106109e0576109e0612d4c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610a3190612d7b565b9150506109c0565b60007379071d243055e6d3bf9dbea842dda69905fa636f331060018114610a65578015611a2b576129ed565b7344151e75925860be5dba0d0f705d03abb6e6bbd9331060018114610a8f57801561125c57611a25565b7326bce6ecb5b10138e4bf14ac0ffcc8727fef3b2e331060018114610ab9578015610e6157611256565b730f3f32f5f684bb6f99b6f414ca27cded9e2d0e87331060018114610ae3578015610ca157610e5b565b73065e3dbafcb2c26a978720f9eb4bce6ad9d644a1331060018114610b0d578015610bd657610c9b565b73042523db4f3effc33d2742022b2490258494f8b3331060018114610b37578015610b5d57610bd0565b730364aabefc13885f05d8ca86cbe3e564cd07f6f1331415610b5857600196505b610bd0565b73061979019711fd0c9ef93510a996f770a9fc7b60331060018114610b87578015610bad57610bce565b73042523db4f3effc33d2742022b2490258494f8b3331415610ba857600197505b610bce565b73061979019711fd0c9ef93510a996f770a9fc7b60331415610bce57600197505b505b50610c9b565b730b275aaeb7e834520f34a24027091edba49b7a58331060018114610c00578015610c2657610c99565b73065e3dbafcb2c26a978720f9eb4bce6ad9d644a1331415610c2157600196505b610c99565b730cac3d1a887206e0f6169222c4504301a8b4b993331060018114610c50578015610c7657610c97565b730b275aaeb7e834520f34a24027091edba49b7a58331415610c7157600197505b610c97565b730cac3d1a887206e0f6169222c4504301a8b4b993331415610c9757600197505b505b505b50610e5b565b731bb9bc5be209b77786f59e739dfdb9fe9aac916e331060018114610ccb578015610d9457610e59565b73177b8ebe208cb71da818b6b8814c946c027240cd331060018114610cf5578015610d1b57610d8e565b730f3f32f5f684bb6f99b6f414ca27cded9e2d0e87331415610d1657600196505b610d8e565b731a54220656fa426a20331141324260398a549314331060018114610d45578015610d6b57610d8c565b73177b8ebe208cb71da818b6b8814c946c027240cd331415610d6657600197505b610d8c565b731a54220656fa426a20331141324260398a549314331415610d8c57600197505b505b50610e59565b731c8f6a5f009e051cab9c3851ca2da2c936b2775a331060018114610dbe578015610de457610e57565b731bb9bc5be209b77786f59e739dfdb9fe9aac916e331415610ddf57600196505b610e57565b73235909a5345af86536e4ddbe9f753db6b3c919f7331060018114610e0e578015610e3457610e55565b731c8f6a5f009e051cab9c3851ca2da2c936b2775a331415610e2f57600197505b610e55565b73235909a5345af86536e4ddbe9f753db6b3c919f7331415610e5557600197505b505b505b505b50611256565b73368dec1eb6e533119f8740c15613144bf5a668ca331060018114610e8b57801561104957611254565b732b728f85296b0cf98fc08f492e7f983636ca3870331060018114610eb5578015610f7e57611043565b7329d92a1517034636720fd3bd7e48c4649a249ee8331060018114610edf578015610f0557610f78565b7326bce6ecb5b10138e4bf14ac0ffcc8727fef3b2e331415610f0057600196505b610f78565b732b271ac88a4caa57e67b5bcb49fbea3d5963b990331060018114610f2f578015610f5557610f76565b7329d92a1517034636720fd3bd7e48c4649a249ee8331415610f5057600197505b610f76565b732b271ac88a4caa57e67b5bcb49fbea3d5963b990331415610f7657600197505b505b50611043565b732d525a7eab9b6645053e22816450f27ee242303d331060018114610fa8578015610fce57611041565b732b728f85296b0cf98fc08f492e7f983636ca3870331415610fc957600196505b611041565b732e9262b2a4f2934ab60c836e63029f52e296a55d331060018114610ff857801561101e5761103f565b732d525a7eab9b6645053e22816450f27ee242303d33141561101957600197505b61103f565b732e9262b2a4f2934ab60c836e63029f52e296a55d33141561103f57600197505b505b505b50611254565b733fbaea01b228368e67ca40d8cb195018fd09531833106001811461107357801561113c57611252565b7336a454aef52938c8637cd4689b2980c1cfd4338933106001811461109d5780156110c357611136565b73368dec1eb6e533119f8740c15613144bf5a668ca3314156110be57600196505b611136565b733cb3ef0368a6548f71357f4d346330195bca11603310600181146110ed57801561111357611134565b7336a454aef52938c8637cd4689b2980c1cfd4338933141561110e57600197505b611134565b733cb3ef0368a6548f71357f4d346330195bca116033141561113457600197505b505b50611252565b73431b5a84acc1297eda88259f300262f1bc3a74f33310600181146111665780156111dd57611250565b73421125ca608a35458b2c99da39cd55b70ba202a43310600181146111905780156111b6576111d7565b733fbaea01b228368e67ca40d8cb195018fd0953183314156111b157600197505b6111d7565b73421125ca608a35458b2c99da39cd55b70ba202a43314156111d757600197505b50611250565b7343e4715ae093a4c86b5ecddb52216c4f879e967233106001811461120757801561122d5761124e565b73431b5a84acc1297eda88259f300262f1bc3a74f333141561122857600197505b61124e565b7343e4715ae093a4c86b5ecddb52216c4f879e967233141561124e57600197505b505b505b505b505b50611a25565b7359927b1208051b07118ee542a86414ed74eef4b733106001811461128657801561162e57611a23565b734deacb315fc16b746aa3c5f42363a0bff694c42f3310600181146112b057801561146e57611628565b734bfcf7a62e5c0acc874d496182915c3642e64cb63310600181146112da5780156113a357611468565b734603180bbb8221157880afaa84638e0fc467738d33106001811461130457801561132a5761139d565b7344151e75925860be5dba0d0f705d03abb6e6bbd933141561132557600196505b61139d565b73479b454f499333551682214f3859c2520a83c6ad33106001811461135457801561137a5761139b565b734603180bbb8221157880afaa84638e0fc467738d33141561137557600197505b61139b565b73479b454f499333551682214f3859c2520a83c6ad33141561139b57600197505b505b50611468565b734c055329042980eea72b49e8b8f2b1f2672243e83310600181146113cd5780156113f357611466565b734bfcf7a62e5c0acc874d496182915c3642e64cb63314156113ee57600196505b611466565b734c33c0e010aa2cb240cf73a683c1c6c4ccab562633106001811461141d57801561144357611464565b734c055329042980eea72b49e8b8f2b1f2672243e833141561143e57600197505b611464565b734c33c0e010aa2cb240cf73a683c1c6c4ccab562633141561146457600197505b505b505b50611628565b73520c602cb82538e9eb71d0310449f3e2eafa9d1833106001811461149857801561156157611626565b734e3ca608f17ec15236a0ce6dff03175f89c2bdcf3310600181146114c25780156114e85761155b565b734deacb315fc16b746aa3c5f42363a0bff694c42f3314156114e357600196505b61155b565b73500af6e7c53dfd8e083e7e8c07f3898411face2a33106001811461151257801561153857611559565b734e3ca608f17ec15236a0ce6dff03175f89c2bdcf33141561153357600197505b611559565b73500af6e7c53dfd8e083e7e8c07f3898411face2a33141561155957600197505b505b50611626565b735687872eb3cba26ee20945e62647b438d309ff0e33106001811461158b5780156115b157611624565b73520c602cb82538e9eb71d0310449f3e2eafa9d183314156115ac57600196505b611624565b7356f03dbc2d16f4a252a7176e1fc3f05b53c6aad53310600181146115db57801561160157611622565b735687872eb3cba26ee20945e62647b438d309ff0e3314156115fc57600197505b611622565b7356f03dbc2d16f4a252a7176e1fc3f05b53c6aad533141561162257600197505b505b505b505b50611a23565b7366c4f101d61f784eccec1b5aa48cbac4e1512e0c33106001811461165857801561181657611a21565b7360b86af869f23aeb552fb7f3cabd11b829f6ab2f33106001811461168257801561174b57611810565b735a243879d1a43f48042c33bbc8051c69756f67d43310600181146116ac5780156116d257611745565b7359927b1208051b07118ee542a86414ed74eef4b73314156116cd57600196505b611745565b736046945c5b5ef5933b8e73a98a6ad7bf3e031df73310600181146116fc57801561172257611743565b735a243879d1a43f48042c33bbc8051c69756f67d433141561171d57600197505b611743565b736046945c5b5ef5933b8e73a98a6ad7bf3e031df733141561174357600197505b505b50611810565b736298357c08988e0229b00fca5cb89aa12c9f70a333106001811461177557801561179b5761180e565b7360b86af869f23aeb552fb7f3cabd11b829f6ab2f33141561179657600196505b61180e565b7364bbde373e909501de1309231336761adeaa07d53310600181146117c55780156117eb5761180c565b736298357c08988e0229b00fca5cb89aa12c9f70a33314156117e657600197505b61180c565b7364bbde373e909501de1309231336761adeaa07d533141561180c57600197505b505b505b50611a21565b7375bcdbc99d9ce8ea5c8b0298cf2db409c8a9790a33106001811461184057801561190957611a1f565b7369181a03fd84d1e2679eb520dfde72c97e1ce52433106001811461186a57801561189057611903565b7366c4f101d61f784eccec1b5aa48cbac4e1512e0c33141561188b57600196505b611903565b7372aa4640c61639b8df7f135355995a75d295b9f93310600181146118ba5780156118e057611901565b7369181a03fd84d1e2679eb520dfde72c97e1ce5243314156118db57600197505b611901565b7372aa4640c61639b8df7f135355995a75d295b9f933141561190157600197505b505b50611a1f565b7376e40d0a69fd81826b5eb7d18145626d46eafdef3310600181146119335780156119aa57611a1d565b7376dd32063b2899a59f6e15dbc474a160cc92275133106001811461195d578015611983576119a4565b7375bcdbc99d9ce8ea5c8b0298cf2db409c8a9790a33141561197e57600197505b6119a4565b7376dd32063b2899a59f6e15dbc474a160cc9227513314156119a457600197505b50611a1d565b7377eb9084ce8168901bcb11f14f02a7aab36fcd0c3310600181146119d45780156119fa57611a1b565b7376e40d0a69fd81826b5eb7d18145626d46eafdef3314156119f557600197505b611a1b565b7377eb9084ce8168901bcb11f14f02a7aab36fcd0c331415611a1b57600197505b505b505b505b505b505b506129ed565b73bd1876611b9ee9927d2c892479bff5b31e9e96d8331060018114611a55578015612222576129eb565b739da9e152ee8d6c6d504cb392f22039bb5205655f331060018114611a7f578015611e275761221c565b738e2400a8822fe2da5a8c52b7f7b412acb49813c8331060018114611aa9578015611c6757611e21565b7381ca1f172891be4573f88745eac074f7fea90d42331060018114611ad3578015611b9c57611c61565b737f63e88c8a1c65d1a25ac02c8d37645b96f691b2331060018114611afd578015611b2357611b96565b7379071d243055e6d3bf9dbea842dda69905fa636f331415611b1e57600196505b611b96565b73804abde86c3ecc4eb738c452a4cf129e151c3014331060018114611b4d578015611b7357611b94565b737f63e88c8a1c65d1a25ac02c8d37645b96f691b2331415611b6e57600197505b611b94565b73804abde86c3ecc4eb738c452a4cf129e151c3014331415611b9457600197505b505b50611c61565b73870b81cebf36c6ee34f98f04ae6f8ed92dcf5153331060018114611bc6578015611bec57611c5f565b7381ca1f172891be4573f88745eac074f7fea90d42331415611be757600196505b611c5f565b738d6e15cb3442ff24f2b8538c203b829f3d879705331060018114611c16578015611c3c57611c5d565b73870b81cebf36c6ee34f98f04ae6f8ed92dcf5153331415611c3757600197505b611c5d565b738d6e15cb3442ff24f2b8538c203b829f3d879705331415611c5d57600197505b505b505b50611e21565b7393f635372008b7c5d770aaa6ff313454c8dc498c331060018114611c91578015611d5a57611e1f565b73922b2b25059355fcea3bece46636e7bb234fed36331060018114611cbb578015611ce157611d54565b738e2400a8822fe2da5a8c52b7f7b412acb49813c8331415611cdc57600196505b611d54565b7392d6c5cb3b6148fde44d0d7295dbecb8dae40ef2331060018114611d0b578015611d3157611d52565b73922b2b25059355fcea3bece46636e7bb234fed36331415611d2c57600197505b611d52565b7392d6c5cb3b6148fde44d0d7295dbecb8dae40ef2331415611d5257600197505b505b50611e1f565b739a4b736749bdeb4b481fa57198ba4caeb3b07723331060018114611d84578015611daa57611e1d565b7393f635372008b7c5d770aaa6ff313454c8dc498c331415611da557600196505b611e1d565b739aab3f81604c683a1a0d14019fbfe15bef7aa1ee331060018114611dd4578015611dfa57611e1b565b739a4b736749bdeb4b481fa57198ba4caeb3b07723331415611df557600197505b611e1b565b739aab3f81604c683a1a0d14019fbfe15bef7aa1ee331415611e1b57600197505b505b505b505b5061221c565b73ac221503406190103b8cb7d9393ae66d9c9af6a3331060018114611e5157801561200f5761221a565b73a49beb93fdf20bc38c61d516804d87f2632fd41d331060018114611e7b578015611f4457612009565b73a2927844dc549ca7446e5ed3e007751716fcd3ee331060018114611ea5578015611ecb57611f3e565b739da9e152ee8d6c6d504cb392f22039bb5205655f331415611ec657600196505b611f3e565b73a483254773cfe94d502557099945caf90725473f331060018114611ef5578015611f1b57611f3c565b73a2927844dc549ca7446e5ed3e007751716fcd3ee331415611f1657600197505b611f3c565b73a483254773cfe94d502557099945caf90725473f331415611f3c57600197505b505b50612009565b73a5a13f62ce1113838e0d9b4559b8caf5f76463c0331060018114611f6e578015611f9457612007565b73a49beb93fdf20bc38c61d516804d87f2632fd41d331415611f8f57600196505b612007565b73a9f8db9d7791e40d34ee431677715ecccc5916c7331060018114611fbe578015611fe457612005565b73a5a13f62ce1113838e0d9b4559b8caf5f76463c0331415611fdf57600197505b612005565b73a9f8db9d7791e40d34ee431677715ecccc5916c733141561200557600197505b505b505b5061221a565b73b59171a8d1cff2647330096a28d73223e7b2739333106001811461203957801561210257612218565b73ad259a73b6b0b04fec294996064adf7a719d26e8331060018114612063578015612089576120fc565b73ac221503406190103b8cb7d9393ae66d9c9af6a333141561208457600196505b6120fc565b73afdc6373e653fcbd4583f41e2a5742cfcb5effc73310600181146120b35780156120d9576120fa565b73ad259a73b6b0b04fec294996064adf7a719d26e83314156120d457600197505b6120fa565b73afdc6373e653fcbd4583f41e2a5742cfcb5effc73314156120fa57600197505b505b50612218565b73ba4ff5f9d6508000b7fd0035bd616aaec070384f33106001811461212c5780156121a357612216565b73b9b4bb195f5dbfbd6f88643ec694996ad30f83b233106001811461215657801561217c5761219d565b73b59171a8d1cff2647330096a28d73223e7b2739333141561217757600197505b61219d565b73b9b4bb195f5dbfbd6f88643ec694996ad30f83b233141561219d57600197505b50612216565b73bbad96336943a36e3e292d973b3382dd0ba4d1ef3310600181146121cd5780156121f357612214565b73ba4ff5f9d6508000b7fd0035bd616aaec070384f3314156121ee57600197505b612214565b73bbad96336943a36e3e292d973b3382dd0ba4d1ef33141561221457600197505b505b505b505b505b506129eb565b73e58e5ed4544f58831a84c18178b911a5957ada0833106001811461224c5780156125f4576129e9565b73d1b076dd3b2ba2514cf9b02a5a425e1ec2534c89331060018114612276578015612434576125ee565b73c4d219b78ec5d105253e016d7401ce005ed7346d3310600181146122a05780156123695761242e565b73c140485899c3e0c739dd5e0f480317695ae274af3310600181146122ca5780156122f057612363565b73bd1876611b9ee9927d2c892479bff5b31e9e96d83314156122eb57600196505b612363565b73c4a675c5041e9687768ce154554d6cddd254071233106001811461231a57801561234057612361565b73c140485899c3e0c739dd5e0f480317695ae274af33141561233b57600197505b612361565b73c4a675c5041e9687768ce154554d6cddd254071233141561236157600197505b505b5061242e565b73cc5ce245a296667aca1b5855f1a05ca950017e683310600181146123935780156123b95761242c565b73c4d219b78ec5d105253e016d7401ce005ed7346d3314156123b457600196505b61242c565b73cf351e3b6fc104d9906897b16f2043ed593bea253310600181146123e35780156124095761242a565b73cc5ce245a296667aca1b5855f1a05ca950017e6833141561240457600197505b61242a565b73cf351e3b6fc104d9906897b16f2043ed593bea2533141561242a57600197505b505b505b506125ee565b73d68fe83d3834bf35c6e1aa8a9d81c56249a6188133106001811461245e578015612527576125ec565b73d295879063be7a6c49f7327afaa831a4f3f648823310600181146124885780156124ae57612521565b73d1b076dd3b2ba2514cf9b02a5a425e1ec2534c893314156124a957600196505b612521565b73d603499a2b0f8f5c5b344c361060d1acd89d1f033310600181146124d85780156124fe5761251f565b73d295879063be7a6c49f7327afaa831a4f3f648823314156124f957600197505b61251f565b73d603499a2b0f8f5c5b344c361060d1acd89d1f0333141561251f57600197505b505b506125ec565b73d6f9f050049d34782e934e40b946be2f70184d89331060018114612551578015612577576125ea565b73d68fe83d3834bf35c6e1aa8a9d81c56249a6188133141561257257600196505b6125ea565b73e43e0c27b0891e3ffdcf617d90c47be37d55ad683310600181146125a15780156125c7576125e8565b73d6f9f050049d34782e934e40b946be2f70184d893314156125c257600197505b6125e8565b73e43e0c27b0891e3ffdcf617d90c47be37d55ad683314156125e857600197505b505b505b505b506129e9565b73f34804568a14aac794401bd401ba2101a084b24433106001811461261e5780156127dc576129e7565b73ef491256a90611103395da600afe64bb062fd655331060018114612648578015612711576127d6565b73e6c4e99725541992a34477849c93901a96bf78123310600181146126725780156126985761270b565b73e58e5ed4544f58831a84c18178b911a5957ada0833141561269357600196505b61270b565b73eca2e2d894d19778939bd4dfc34d2a3c45e964563310600181146126c25780156126e857612709565b73e6c4e99725541992a34477849c93901a96bf78123314156126e357600197505b612709565b73eca2e2d894d19778939bd4dfc34d2a3c45e9645633141561270957600197505b505b506127d6565b73f0594c390e6dd5d4626d367d7fb2079b1d5cd67d33106001811461273b578015612761576127d4565b73ef491256a90611103395da600afe64bb062fd65533141561275c57600196505b6127d4565b73f20dce1e8efd106c871c3872200234225a20b71233106001811461278b5780156127b1576127d2565b73f0594c390e6dd5d4626d367d7fb2079b1d5cd67d3314156127ac57600197505b6127d2565b73f20dce1e8efd106c871c3872200234225a20b7123314156127d257600197505b505b505b506129e7565b73fa66759e7905297daf1e312751a85885fc2657773310600181146128065780156128cf576129e5565b73f621b27508b5bc902ff553d0323105c59351a634331060018114612830578015612856576128c9565b73f34804568a14aac794401bd401ba2101a084b24433141561285157600196505b6128c9565b73fa1d4ce9f0423bf353795ba85b47c3bb46e9a69f3310600181146128805780156128a6576128c7565b73f621b27508b5bc902ff553d0323105c59351a6343314156128a157600197505b6128c7565b73fa1d4ce9f0423bf353795ba85b47c3bb46e9a69f3314156128c757600197505b505b506129e5565b73fc23b61db3a1dce083e82da5a2ccfd91a2211f7c3310600181146128f9578015612970576129e3565b73fb9779477e5b4834bf2bc02dd29b97b344d0f7003310600181146129235780156129495761296a565b73fa66759e7905297daf1e312751a85885fc26577733141561294457600197505b61296a565b73fb9779477e5b4834bf2bc02dd29b97b344d0f70033141561296a57600197505b506129e3565b73ff82bf5238637b7e5e345888bab9cd99f5ebe33133106001811461299a5780156129c0576129e1565b73fc23b61db3a1dce083e82da5a2ccfd91a2211f7c3314156129bb57600197505b6129e1565b73ff82bf5238637b7e5e345888bab9cd99f5ebe3313314156129e157600197505b505b505b505b505b505b505b5080612a085750336000908152602081905260409020546001145b90565b73ffffffffffffffffffffffffffffffffffffffff81168114612a2d57600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612aa657612aa6612a30565b604052919050565b600082601f830112612abf57600080fd5b813567ffffffffffffffff811115612ad957612ad9612a30565b612b0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a5f565b818152846020838601011115612b1f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612b4f57600080fd5b8235612b5a81612a0b565b9150602083013567ffffffffffffffff811115612b7657600080fd5b612b8285828601612aae565b9150509250929050565b60008060408385031215612b9f57600080fd5b823567ffffffffffffffff80821115612bb757600080fd5b612bc386838701612aae565b93506020850135915080821115612bd957600080fd5b50612b8285828601612aae565b600060208284031215612bf857600080fd5b8135612c0381612a0b565b9392505050565b600060208083528351808285015260005b81811015612c3757858101830151858201604001528201612c1b565b81811115612c49576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020808385031215612c9057600080fd5b823567ffffffffffffffff80821115612ca857600080fd5b818501915085601f830112612cbc57600080fd5b813581811115612cce57612cce612a30565b8060051b9150612cdf848301612a5f565b8181529183018401918481019088841115612cf957600080fd5b938501935b83851015612d235784359250612d1383612a0b565b8282529385019390850190612cfe565b98975050505050505050565b600060208284031215612d4157600080fd5b8151612c0381612a0b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612dd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220b5fc3879af9dc4ca98a5ca0c383e9738a3fc0e6d3e0c9cb398d76bd2a81ea32464736f6c63430008090033
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing bytecode for call-related exploits**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] import re
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] if not hexdata:
[codex:720267] raise SystemExit('no hex')
[codex:720267] # ensure even length
[codex:720267] if len(hexdata)%2:
[codex:720267] print('odd length')
[codex:720267] hexdata=hexdata[:-1]
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267] # find opcodes of interest
[codex:720267] ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xf5:'CREATE2'}
[codex:720267] for op,val in ops.items():
[codex:720267] idxs=[i for i,b in enumerate(code) if b==op]
[codex:720267] if idxs:
[codex:720267] print(val, len(idxs), 'first', idxs[:10])
[codex:720267] print('code length', len(code))
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 26ms:
[codex:720267] CALL 16 first [106, 522, 608, 1440, 2402, 2892, 4429, 4632, 5278, 5400]
[codex:720267] CALLCODE 25 first [1002, 3982, 4053, 4104, 4133, 5042, 5044, 5164, 5166, 5727]
[codex:720267] DELEGATECALL 18 first [299, 1103, 1138, 1199, 1601, 2095, 2161, 2757, 3329, 4720]
[codex:720267] SELFDESTRUCT 554 first [169, 245, 333, 334, 335, 336, 337, 338, 339, 340]
[codex:720267] CREATE 11 first [5556, 5569, 5636, 5649, 8900, 9515, 9637, 10003, 10125, 10332]
[codex:720267] CREATE2 24 first [2750, 3244, 3305, 3322, 3529, 3699, 4217, 4271, 4339, 5850]
[codex:720267] code length 11793
[codex:720267]
[codex:720267] thinking
[codex:720267] **Planning precise opcode parsing**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267] ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xf5:'CREATE2'}
[codex:720267] idxs={k:[] for k in ops}
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] if op in ops:
[codex:720267] idxs[op].append(pc)
[codex:720267] # push handling
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] pc += 1 + (op-0x5f)
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267]
[codex:720267] for op,name in ops.items():
[codex:720267] if idxs[op]:
[codex:720267] print(name, len(idxs[op]), 'pcs', idxs[op][:20])
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 20ms:
[codex:720267] CALL 4 pcs [522, 608, 1440, 2402]
[codex:720267] DELEGATECALL 2 pcs [1103, 1601]
[codex:720267]
[codex:720267] thinking
[codex:720267] **Preparing disassembler for call analysis**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267]
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] # fill push opnames
[codex:720267] for i in range(1,33):
[codex:720267] opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] # dup
[codex:720267] for i in range(1,17):
[codex:720267] opnames[0x7f+i]=f'DUP{i}'
[codex:720267] # swap
[codex:720267] for i in range(1,17):
[codex:720267] opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] # log
[codex:720267] for i in range(0,5):
[codex:720267] opnames[0xa0+i]=f'LOG{i}'
[codex:720267] # calls
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] # disassemble and keep mapping pc->(opcode, imm)
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] # Build pc to index
[codex:720267] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(insts)}
[codex:720267]
[codex:720267] # function to print around a pc
[codex:720267]
[codex:720267] def print_around(target, radius=10):
[codex:720267] if target not in pc_to_idx:
[codex:720267] # find nearest previous
[codex:720267] pcs=[pc for pc,_,_ in insts]
[codex:720267] prev=max([pc for pc in pcs if pc<=target])
[codex:720267] idx=pc_to_idx[prev]
[codex:720267] else:
[codex:720267] idx=pc_to_idx[target]
[codex:720267] start=max(0, idx-radius)
[codex:720267] end=min(len(insts), idx+radius+1)
[codex:720267] for pc,name,imm in insts[start:end]:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] print('---')
[codex:720267]
[codex:720267] # print around CALL and DELEGATECALL pcs
[codex:720267] call_pcs=[pc for pc,name,imm in insts if name in ('CALL','DELEGATECALL')]
[codex:720267] for pc in call_pcs:
[codex:720267] print('around', pc)
[codex:720267] print_around(pc, radius=12)
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 24ms:
[codex:720267] around 522
[codex:720267] 01f9: MSTORE
[codex:720267] 01fa: DUP3
[codex:720267] 01fb: PUSH1 0x24
[codex:720267] 01fd: MSTORE
[codex:720267] 01fe: PUSH1 0x00
[codex:720267] 0200: DUP1
[codex:720267] 0201: PUSH1 0x44
[codex:720267] 0203: PUSH1 0x00
[codex:720267] 0205: DUP1
[codex:720267] 0206: PUSH1 0xc4
[codex:720267] 0208: CALLDATALOAD
[codex:720267] 0209: GAS
[codex:720267] 020a: CALL
[codex:720267] 020b: PUSH2 0x0237
[codex:720267] 020e: JUMPI
[codex:720267] 020f: PUSH2 0x0237
[codex:720267] 0212: PUSH32 0x3034000000000000000000000000000000000000000000000000000000000000
[codex:720267] 0233: PUSH2 0x00c1
[codex:720267] 0236: JUMP
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing CALL instructions and context**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267] # disassembler
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] # print section between pcs 0x0180 and 0x02a0
[codex:720267] start=0x0180
[codex:720267] end=0x02a0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 018d: PUSH2 0x00c1
[codex:720267] 0190: JUMP
[codex:720267] 0191: JUMPDEST
[codex:720267] 0192: PUSH1 0x04
[codex:720267] 0194: CALLDATALOAD
[codex:720267] 0195: PUSH1 0x00
[codex:720267] 0197: DUP2
[codex:720267] 0198: SGT
[codex:720267] 0199: PUSH2 0x01d1
[codex:720267] 019c: JUMPI
[codex:720267] 019d: POP
[codex:720267] 019e: PUSH1 0x24
[codex:720267] 01a0: CALLDATALOAD
[codex:720267] 01a1: PUSH1 0x00
[codex:720267] 01a3: DUP2
[codex:720267] 01a4: SGT
[codex:720267] 01a5: PUSH2 0x01d1
[codex:720267] 01a8: JUMPI
[codex:720267] 01a9: PUSH2 0x01d1
[codex:720267] 01ac: PUSH32 0x3031000000000000000000000000000000000000000000000000000000000000
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing token transfer and access controls**
[codex:720267]
[codex:720267] I'm parsing the token transfer function logic, decoding calldata offsets and CALL usage, to understand how arguments map to token transfers and transferFrom calls. I'm also exploring the extensive address checks at the end, which look like a binary search whitelist verifying caller permissions. This might restrict transfer functions to approved callers, suggesting access control, but I need to verify the absence of unrestricted value transfers or delegatecall vulnerabilities by inspecting SSTORE usage and call contexts.
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] sstore_pcs=[pc for pc,name,imm in insts if name=='SSTORE']
[codex:720267] print('SSTORE pcs', sstore_pcs)
[codex:720267]
[codex:720267] # function to print around pc
[codex:720267] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(insts)}
[codex:720267]
[codex:720267] def print_around(target, radius=12):
[codex:720267] idx=pc_to_idx.get(target)
[codex:720267] start=max(0, idx-radius)
[codex:720267] end=min(len(insts), idx+radius+1)
[codex:720267] for pc,name,imm in insts[start:end]:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] print('---')
[codex:720267]
[codex:720267] for pc in sstore_pcs:
[codex:720267] print('around',pc)
[codex:720267] print_around(pc, radius=10)
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 29ms:
[codex:720267] SSTORE pcs [1568, 1880, 2006, 2084, 2597]
[codex:720267] around 1568
[codex:720267] 0613: MSTORE
[codex:720267] 0614: PUSH1 0x20
[codex:720267] 0616: DUP2
[codex:720267] 0617: SWAP1
[codex:720267] 0618: MSTORE
[codex:720267] 0619: PUSH1 0x40
[codex:720267] 061b: SWAP1
[codex:720267] 061c: SHA3
[codex:720267] 061d: PUSH1 0x01
[codex:720267] 061f: SWAP1
[codex:720267] 0620: SSTORE
[codex:720267] 0621: JUMP
[codex:720267] 0622: JUMPDEST
[codex:720267] 0623: PUSH1 0x60
[codex:720267] 0625: PUSH2 0x062c
[codex:720267] 0628: PUSH2 0x0a39
[codex:720267] 062b: JUMP
[codex:720267] 062c: JUMPDEST
[codex:720267]
[codex:720267] thinking
[codex:720267] **Inspecting access control functions**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0a00
[codex:720267] end=0x0a80
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 22ms:
[codex:720267] 0a14: AND
[codex:720267] 0a15: DUP2
[codex:720267] 0a16: MSTORE
[codex:720267] 0a17: PUSH1 0x20
[codex:720267] 0a19: ADD
[codex:720267] 0a1a: SWAP1
[codex:720267] 0a1b: DUP2
[codex:720267] 0a1c: MSTORE
[codex:720267] 0a1d: PUSH1 0x20
[codex:720267] 0a1f: ADD
[codex:720267] 0a20: PUSH1 0x00
[codex:720267] 0a22: SHA3
[codex:720267] 0a23: DUP2
[codex:720267] 0a24: SWAP1
[codex:720267] 0a25: SSTORE
[codex:720267] 0a26: POP
[codex:720267] 0a27: DUP1
[codex:720267] 0a28: DUP1
[codex:720267] 0a29: PUSH2 0x0a31
[codex:720267] 0a2c: SWAP1
[codex:720267]
[codex:720267] thinking
[codex:720267] **Examining allowlist binary search logic**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x29d0
[codex:720267] end=0x2a30
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 29d6: CALLER
[codex:720267] 29d7: EQ
[codex:720267] 29d8: ISZERO
[codex:720267] 29d9: PUSH2 0x29e1
[codex:720267] 29dc: JUMPI
[codex:720267] 29dd: PUSH1 0x01
[codex:720267] 29df: SWAP8
[codex:720267] 29e0: POP
[codex:720267] 29e1: JUMPDEST
[codex:720267] 29e2: POP
[codex:720267] 29e3: JUMPDEST
[codex:720267] 29e4: POP
[codex:720267] 29e5: JUMPDEST
[codex:720267] 29e6: POP
[codex:720267] 29e7: JUMPDEST
[codex:720267] 29e8: POP
[codex:720267] 29e9: JUMPDEST
[codex:720267] 29ea: POP
[codex:720267] 29eb: JUMPDEST
[codex:720267] 29ec: POP
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing access control function and storage usage**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x05d0
[codex:720267] end=0x0650
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 05d0: SWAP1
[codex:720267] 05d1: PUSH2 0x2d2f
[codex:720267] 05d4: JUMP
[codex:720267] 05d5: JUMPDEST
[codex:720267] 05d6: SWAP1
[codex:720267] 05d7: POP
[codex:720267] 05d8: JUMPDEST
[codex:720267] 05d9: PUSH2 0x05e2
[codex:720267] 05dc: DUP2
[codex:720267] 05dd: DUP4
[codex:720267] 05de: PUSH2 0x0432
[codex:720267] 05e1: JUMP
[codex:720267] 05e2: JUMPDEST
[codex:720267] 05e3: POP
[codex:720267] 05e4: POP
[codex:720267] 05e5: POP
[codex:720267] 05e6: JUMP
[codex:720267] 05e7: JUMPDEST
[codex:720267] 05e8: PUSH2 0x05ef
[codex:720267] 05eb: PUSH2 0x0a39
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing allowlist control flow**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0720
[codex:720267] end=0x0780
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 22ms:
[codex:720267] 0730: DUP4
[codex:720267] 0731: AND
[codex:720267] 0732: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
[codex:720267] 0753: SWAP1
[codex:720267] 0754: SWAP2
[codex:720267] 0755: AND
[codex:720267] 0756: OR
[codex:720267] 0757: DUP2
[codex:720267] 0758: SSTORE
[codex:720267] 0759: SWAP2
[codex:720267] 075a: SWAP1
[codex:720267] 075b: POP
[codex:720267] 075c: JUMP
[codex:720267] 075d: JUMPDEST
[codex:720267] 075e: PUSH2 0x0765
[codex:720267] 0761: PUSH2 0x0a39
[codex:720267] 0764: JUMP
[codex:720267] 0765: JUMPDEST
[codex:720267] 0766: PUSH2 0x076e
[codex:720267] 0769: JUMPI
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing allowlist and delegatecall logic**
[codex:720267]
[codex:720267] I'm unraveling how the allowlist binary search uses caller address comparisons to restrict storage modifications, confirming the logic with EVM LT opcode semantics. I'm also tracking delegatecall sites and considering if access controls around implementation changes could be exploitable, so I’m preparing to decode the relevant instruction blocks next.
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0400
[codex:720267] end=0x0480
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 24ms:
[codex:720267] 0400: SHA3
[codex:720267] 0401: SLOAD
[codex:720267] 0402: DUP2
[codex:720267] 0403: JUMP
[codex:720267] 0404: JUMPDEST
[codex:720267] 0405: PUSH1 0x40
[codex:720267] 0407: MLOAD
[codex:720267] 0408: SWAP1
[codex:720267] 0409: DUP2
[codex:720267] 040a: MSTORE
[codex:720267] 040b: PUSH1 0x20
[codex:720267] 040d: ADD
[codex:720267] 040e: PUSH2 0x030b
[codex:720267] 0411: JUMP
[codex:720267] 0412: JUMPDEST
[codex:720267] 0413: CALLVALUE
[codex:720267] 0414: DUP1
[codex:720267] 0415: ISZERO
[codex:720267] 0416: PUSH2 0x041e
[codex:720267] 0419: JUMPI
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing delegatecall and control flow**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0980
[codex:720267] end=0x0a10
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 22ms:
[codex:720267] 0981: DUP3
[codex:720267] 0982: ADD
[codex:720267] 0983: AND
[codex:720267] 0984: DUP3
[codex:720267] 0985: ADD
[codex:720267] 0986: DUP1
[codex:720267] 0987: PUSH1 0x40
[codex:720267] 0989: MSTORE
[codex:720267] 098a: POP
[codex:720267] 098b: DUP2
[codex:720267] 098c: ADD
[codex:720267] 098d: SWAP1
[codex:720267] 098e: PUSH2 0x0997
[codex:720267] 0991: SWAP2
[codex:720267] 0992: SWAP1
[codex:720267] 0993: PUSH2 0x2d2f
[codex:720267] 0996: JUMP
[codex:720267] 0997: JUMPDEST
[codex:720267] 0998: SWAP1
[codex:720267] 0999: POP
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing delegatecall and allowlist usage**
[codex:720267]
[codex:720267] I'm piecing together how some functions use delegatecall with memory-loaded targets, guarded by an allowlist, likely to enable controlled multicall behavior. I want to verify whether allowlist checks protect all sensitive calls or if some, like transfer functions, might be unprotected and potentially exploitable. To do that, I'm starting to decode the initial dispatch logic to map function selectors to their entry points.
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] # simple disassembler to find PUSH4 selectors in dispatcher region (first 0x150 bytes)
[codex:720267] ops=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code) and pc < 0x200:
[codex:720267] op=code[pc]
[codex:720267] start=pc
[codex:720267] imm=None
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] ops.append((start,op,imm))
[codex:720267]
[codex:720267] # find patterns: PUSH4 <sel> ... JUMPI with preceding EQ, etc
[codex:720267] for i,(pc,op,imm) in enumerate(ops):
[codex:720267] if op==0x63 and imm and len(imm)==4:
[codex:720267] sel=imm.hex()
[codex:720267] # look ahead for PUSH2 dest and JUMPI
[codex:720267] dest=None
[codex:720267] for j in range(i+1, min(i+10,len(ops))):
[codex:720267] if ops[j][1]==0x61: # PUSH2
[codex:720267] dest=int.from_bytes(ops[j][2],'big')
[codex:720267] if ops[j][1]==0x57: # JUMPI
[codex:720267] if dest is not None:
[codex:720267] print(f'selector 0x{sel} -> dest 0x{dest:x}')
[codex:720267] break
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 17ms:
[codex:720267] selector 0x948f5076 -> dest 0x74
[codex:720267] selector 0xa90e8731 -> dest 0x4e
[codex:720267] selector 0xa90e8731 -> dest 0x3c4
[codex:720267] selector 0xbf353dbb -> dest 0x3d7
[codex:720267] selector 0xc9892a5f -> dest 0x412
[codex:720267] selector 0x948f5076 -> dest 0x354
[codex:720267] selector 0x97645e37 -> dest 0x384
[codex:720267] selector 0x9c52a7f1 -> dest 0x3a4
[codex:720267] selector 0x60c7d295 -> dest 0xa5
[codex:720267] selector 0x60c7d295 -> dest 0x2bd
[codex:720267] selector 0x65fae35e -> dest 0x314
[codex:720267] selector 0x78e111f6 -> dest 0x334
[codex:720267] selector 0x1cff79cd -> dest 0x295
[codex:720267] selector 0x1f6a1eb9 -> dest 0x2aa
[codex:720267] selector 0xfa461e33 -> dest 0x292
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing dispatcher function addresses**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0260
[codex:720267] end=0x0360
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 36ms:
[codex:720267] 0260: CALL
[codex:720267] 0261: PUSH2 0x028d
[codex:720267] 0264: JUMPI
[codex:720267] 0265: PUSH2 0x028d
[codex:720267] 0268: PUSH32 0x3033000000000000000000000000000000000000000000000000000000000000
[codex:720267] 0289: PUSH2 0x00c1
[codex:720267] 028c: JUMP
[codex:720267] 028d: JUMPDEST
[codex:720267] 028e: POP
[codex:720267] 028f: POP
[codex:720267] 0290: POP
[codex:720267] 0291: POP
[codex:720267] 0292: JUMPDEST
[codex:720267] 0293: POP
[codex:720267] 0294: STOP
[codex:720267] 0295: JUMPDEST
[codex:720267] 0296: PUSH2 0x02a8
[codex:720267] 0299: PUSH2 0x02a3
[codex:720267] 029c: CALLDATASIZE
[codex:720267] 029d: PUSH1 0x04
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing function selectors and dispatch**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x00b0
[codex:720267] end=0x01a0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 00b0: JUMPI
[codex:720267] 00b1: DUP1
[codex:720267] 00b2: PUSH4 0x1f6a1eb9
[codex:720267] 00b7: EQ
[codex:720267] 00b8: PUSH2 0x02aa
[codex:720267] 00bb: JUMPI
[codex:720267] 00bc: JUMPDEST
[codex:720267] 00bd: PUSH2 0x00e1
[codex:720267] 00c0: JUMP
[codex:720267] 00c1: JUMPDEST
[codex:720267] 00c2: PUSH4 0x08c379a0
[codex:720267] 00c7: PUSH1 0xe0
[codex:720267] 00c9: SHL
[codex:720267] 00ca: PUSH1 0x00
[codex:720267] 00cc: MSTORE
[codex:720267] 00cd: PUSH1 0x20
[codex:720267] 00cf: PUSH1 0x04
[codex:720267] 00d1: MSTORE
[codex:720267] 00d2: PUSH1 0x02
[codex:720267] 00d4: PUSH1 0x24
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing Uniswap V3 swap callback**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0354
[codex:720267] end=0x03d0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 0354: JUMPDEST
[codex:720267] 0355: CALLVALUE
[codex:720267] 0356: DUP1
[codex:720267] 0357: ISZERO
[codex:720267] 0358: PUSH2 0x0360
[codex:720267] 035b: JUMPI
[codex:720267] 035c: PUSH1 0x00
[codex:720267] 035e: DUP1
[codex:720267] 035f: REVERT
[codex:720267] 0360: JUMPDEST
[codex:720267] 0361: POP
[codex:720267] 0362: PUSH2 0x0374
[codex:720267] 0365: PUSH2 0x036f
[codex:720267] 0368: CALLDATASIZE
[codex:720267] 0369: PUSH1 0x04
[codex:720267] 036b: PUSH2 0x2be6
[codex:720267] 036e: JUMP
[codex:720267] 036f: JUMPDEST
[codex:720267] 0370: PUSH2 0x0681
[codex:720267] 0373: JUMP
[codex:720267]
[codex:720267] thinking
[codex:720267] **Examining function dependencies**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0660
[codex:720267] end=0x06b0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 25ms:
[codex:720267] 0660: DUP6
[codex:720267] 0661: ADD
[codex:720267] 0662: RETURNDATACOPY
[codex:720267] 0663: DUP2
[codex:720267] 0664: ISZERO
[codex:720267] 0665: PUSH1 0x01
[codex:720267] 0667: DUP2
[codex:720267] 0668: EQ
[codex:720267] 0669: PUSH2 0x0671
[codex:720267] 066c: JUMPI
[codex:720267] 066d: PUSH2 0x0678
[codex:720267] 0670: JUMP
[codex:720267] 0671: JUMPDEST
[codex:720267] 0672: DUP2
[codex:720267] 0673: PUSH1 0x20
[codex:720267] 0675: DUP6
[codex:720267] 0676: ADD
[codex:720267] 0677: REVERT
[codex:720267] 0678: JUMPDEST
[codex:720267] 0679: POP
[codex:720267]
[codex:720267] thinking
[codex:720267] **Checking allowlist status of functions**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x07e0
[codex:720267] end=0x0860
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 07e1: JUMP
[codex:720267] 07e2: JUMPDEST
[codex:720267] 07e3: SWAP2
[codex:720267] 07e4: POP
[codex:720267] 07e5: POP
[codex:720267] 07e6: PUSH2 0x0771
[codex:720267] 07e9: JUMP
[codex:720267] 07ea: JUMPDEST
[codex:720267] 07eb: POP
[codex:720267] 07ec: POP
[codex:720267] 07ed: JUMP
[codex:720267] 07ee: JUMPDEST
[codex:720267] 07ef: PUSH2 0x07f6
[codex:720267] 07f2: PUSH2 0x0a39
[codex:720267] 07f5: JUMP
[codex:720267] 07f6: JUMPDEST
[codex:720267] 07f7: PUSH2 0x07ff
[codex:720267] 07fa: JUMPI
[codex:720267] 07fb: PUSH1 0x00
[codex:720267] 07fd: DUP1
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing allowlist and call logic**
[codex:720267]
[codex:720267] I'm carefully examining the allowlist function at 0xa39 to verify its correctness since any bug could let unauthorized callers bypass restrictions. The intricate bytecode resembles a binary search for allowed addresses, and after a detailed walkthrough, it mostly looks sound with unreachable code paths probably due to compiler structure. I'm also scanning for external calls possibly using user inputs unsafely, especially around 0x0469 where calls use stored addresses, to ensure no token or ETH transfers can be exploited. This thorough check helps me confirm whether all state-changing functions are properly guarded or if upgradeable implementation setting might be exposed.
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0460
[codex:720267] end=0x05d0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 23ms:
[codex:720267] 0461: DUP1
[codex:720267] 0462: REVERT
[codex:720267] 0463: JUMPDEST
[codex:720267] 0464: POP
[codex:720267] 0465: POP
[codex:720267] 0466: POP
[codex:720267] 0467: POP
[codex:720267] 0468: JUMP
[codex:720267] 0469: JUMPDEST
[codex:720267] 046a: PUSH1 0x01
[codex:720267] 046c: SLOAD
[codex:720267] 046d: PUSH1 0x40
[codex:720267] 046f: MLOAD
[codex:720267] 0470: PUSH32 0x8bf4515c00000000000000000000000000000000000000000000000000000000
[codex:720267] 0491: DUP2
[codex:720267] 0492: MSTORE
[codex:720267] 0493: PUSH1 0x00
[codex:720267] 0495: SWAP2
[codex:720267] 0496: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:720267] 04ab: AND
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing proxy-related external calls**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x2b80
[codex:720267] end=0x2bc0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 24ms:
[codex:720267] 2b81: JUMP
[codex:720267] 2b82: JUMPDEST
[codex:720267] 2b83: SWAP2
[codex:720267] 2b84: POP
[codex:720267] 2b85: POP
[codex:720267] 2b86: SWAP3
[codex:720267] 2b87: POP
[codex:720267] 2b88: SWAP3
[codex:720267] 2b89: SWAP1
[codex:720267] 2b8a: POP
[codex:720267] 2b8b: JUMP
[codex:720267] 2b8c: JUMPDEST
[codex:720267] 2b8d: PUSH1 0x00
[codex:720267] 2b8f: DUP1
[codex:720267] 2b90: PUSH1 0x40
[codex:720267] 2b92: DUP4
[codex:720267] 2b93: DUP6
[codex:720267] 2b94: SUB
[codex:720267] 2b95: SLT
[codex:720267] 2b96: ISZERO
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing proxy-related function selectors**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x03c0
[codex:720267] end=0x0420
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 37ms:
[codex:720267] 03c0: PUSH2 0x07ee
[codex:720267] 03c3: JUMP
[codex:720267] 03c4: JUMPDEST
[codex:720267] 03c5: PUSH2 0x0347
[codex:720267] 03c8: PUSH2 0x03d2
[codex:720267] 03cb: CALLDATASIZE
[codex:720267] 03cc: PUSH1 0x04
[codex:720267] 03ce: PUSH2 0x2b8c
[codex:720267] 03d1: JUMP
[codex:720267] 03d2: JUMPDEST
[codex:720267] 03d3: PUSH2 0x0826
[codex:720267] 03d6: JUMP
[codex:720267] 03d7: JUMPDEST
[codex:720267] 03d8: CALLVALUE
[codex:720267] 03d9: DUP1
[codex:720267] 03da: ISZERO
[codex:720267] 03db: PUSH2 0x03e3
[codex:720267] 03de: JUMPI
[codex:720267] 03df: PUSH1 0x00
[codex:720267] 03e1: DUP1
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing function 0x826 behavior**
[codex:720267] exec
[codex:720267] /bin/bash -lc "python - <<'PY'
[codex:720267] import binascii
[codex:720267] path='BYTECODE_BUNDLE.txt'
[codex:720267] hexdata=None
[codex:720267] with open(path) as f:
[codex:720267] for line in f:
[codex:720267] if line.startswith('0x'):
[codex:720267] hexdata=line.strip()[2:]
[codex:720267] break
[codex:720267] code=binascii.unhexlify(hexdata)
[codex:720267]
[codex:720267] opnames={
[codex:720267] 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:720267] 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:720267] 0x20:'SHA3',
[codex:720267] 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:720267] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:720267] 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:720267] 0x5f:'PUSH0',
[codex:720267] }
[codex:720267] for i in range(1,33): opnames[0x5f+i]=f'PUSH{i}'
[codex:720267] for i in range(1,17): opnames[0x7f+i]=f'DUP{i}'
[codex:720267] for i in range(1,17): opnames[0x8f+i]=f'SWAP{i}'
[codex:720267] for i in range(0,5): opnames[0xa0+i]=f'LOG{i}'
[codex:720267] opnames.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:720267]
[codex:720267] insts=[]
[codex:720267] pc=0
[codex:720267] while pc < len(code):
[codex:720267] op=code[pc]
[codex:720267] name=opnames.get(op,f'OP{op:02x}')
[codex:720267] imm=None
[codex:720267] start=pc
[codex:720267] if 0x60 <= op <= 0x7f:
[codex:720267] n=op-0x5f
[codex:720267] imm=code[pc+1:pc+1+n]
[codex:720267] pc += 1+n
[codex:720267] else:
[codex:720267] pc += 1
[codex:720267] insts.append((start,name,imm))
[codex:720267]
[codex:720267] start=0x0820
[codex:720267] end=0x09b0
[codex:720267] for pc,name,imm in insts:
[codex:720267] if start <= pc <= end:
[codex:720267] if imm is None:
[codex:720267] print(f\"{pc:04x}: {name}\")
[codex:720267] else:
[codex:720267] print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:720267] PY" in /tmp/codex-multi-nxl7_xcl succeeded in 24ms:
[codex:720267] 0820: PUSH1 0x40
[codex:720267] 0822: DUP2
[codex:720267] 0823: SHA3
[codex:720267] 0824: SSTORE
[codex:720267] 0825: JUMP
[codex:720267] 0826: JUMPDEST
[codex:720267] 0827: PUSH1 0x01
[codex:720267] 0829: SLOAD
[codex:720267] 082a: PUSH1 0x40
[codex:720267] 082c: MLOAD
[codex:720267] 082d: PUSH32 0x8bf4515c00000000000000000000000000000000000000000000000000000000
[codex:720267] 084e: DUP2
[codex:720267] 084f: MSTORE
[codex:720267] 0850: PUSH1 0x60
[codex:720267] 0852: SWAP2
[codex:720267] 0853: PUSH1 0x00
[codex:720267] 0855: SWAP2
[codex:720267] 0856: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:720267] 086b: SWAP1
[codex:720267] 086c: SWAP2
[codex:720267]
[codex:720267] thinking
[codex:720267] **Analyzing function delegatecall and allowlist checks**
[codex:720267] codex
[codex:720267] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path found in the bytecode; external calls either enforce the UniswapV3 swap callback pool check or route through allowlist gating, and no unprotected value-transfer or selfdestruct paths are visible.","findings":[]}
[codex:720267] tokens used
[codex:720267] 126,243
[codex:720267] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path found in the bytecode; external calls either enforce the UniswapV3 swap callback pool check or route through allowlist gating, and no unprotected value-transfer or selfdestruct paths are visible.","findings":[]}
{
"codex": {
"ran_at": "2026-01-01T19:15:44.633487+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path found in the bytecode; external calls either enforce the UniswapV3 swap callback pool check or route through allowlist gating, and no unprotected value-transfer or selfdestruct paths are visible.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path found in the bytecode; external calls either enforce the UniswapV3 swap callback pool check or route through allowlist gating, and no unprotected value-transfer or selfdestruct paths are visible.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00bc 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x948f5076 00000019: GT 0000001a: PUSH2 0x0074 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xa90e8731 00000024: GT 00000025: PUSH2 0x004e 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xa90e8731 0000002f: EQ 00000030: PUSH2 0x03c4 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xbf353dbb 0000003a: EQ 0000003b: PUSH2 0x03d7 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xc9892a5f 00000045: EQ 00000046: PUSH2 0x0412 00000049: JUMPI 0000004a: PUSH2 0x00e1 0000004d: JUMP 0000004e: JUMPDEST 0000004f: DUP1 00000050: PUSH4 0x948f5076 00000055: EQ 00000056: PUSH2 0x0354 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x97645e37 00000060: EQ 00000061: PUSH2 0x0384 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0x9c52a7f1 0000006b: EQ 0000006c: PUSH2 0x03a4 0000006f: JUMPI 00000070: PUSH2 0x00e1 00000073: JUMP 00000074: JUMPDEST 00000075: DUP1 00000076: PUSH4 0x60c7d295 0000007b: GT 0000007c: PUSH2 0x00a5 0000007f: JUMPI 00000080: DUP1 00000081: PUSH4 0x60c7d295 00000086: EQ 00000087: PUSH2 0x02bd 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0x65fae35e 00000091: EQ 00000092: PUSH2 0x0314 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x78e111f6 0000009c: EQ 0000009d: PUSH2 0x0334 000000a0: JUMPI 000000a1: PUSH2 0x00e1 000000a4: JUMP 000000a5: JUMPDEST 000000a6: DUP1 000000a7: PUSH4 0x1cff79cd 000000ac: EQ 000000ad: PUSH2 0x0295 000000b0: JUMPI 000000b1: DUP1 000000b2: PUSH4 0x1f6a1eb9 000000b7: EQ 000000b8: PUSH2 0x02aa 000000bb: JUMPI 000000bc: JUMPDEST 000000bd: PUSH2 0x00e1 000000c0: JUMP 000000c1: JUMPDEST 000000c2: PUSH4 0x08c379a0 000000c7: PUSH1 0xe0 000000c9: SHL 000000ca: PUSH1 0x00 000000cc: MSTORE 000000cd: PUSH1 0x20 000000cf: PUSH1 0x04 000000d1: MSTORE 000000d2: PUSH1 0x02 000000d4: PUSH1 0x24 000000d6: MSTORE 000000d7: DUP1 000000d8: PUSH1 0x44 000000da: MSTORE 000000db: POP 000000dc: PUSH1 0x64 000000de: PUSH1 0x00 000000e0: REVERT 000000e1: JUMPDEST 000000e2: PUSH1 0x00 000000e4: CALLDATALOAD 000000e5: PUSH1 0xe0 000000e7: SHR 000000e8: PUSH4 0xfa461e33 000000ed: DUP2 000000ee: EQ 000000ef: ISZERO 000000f0: PUSH2 0x0292 000000f3: JUMPI 000000f4: PUSH1 0xff 000000f6: PUSH1 0x00 000000f8: MSTORE8 000000f9: PUSH32 0x1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000 0000011a: PUSH1 0x01 0000011c: MSTORE 0000011d: PUSH1 0x84 0000011f: CALLDATALOAD 00000120: PUSH1 0x15 00000122: MSTORE 00000123: PUSH32 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54 00000144: PUSH1 0x35 00000146: MSTORE 00000147: PUSH1 0x55 00000149: PUSH1 0x00 0000014b: KECCAK256 0000014c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000161: AND 00000162: CALLER 00000163: DUP2 00000164: EQ 00000165: PUSH2 0x0191 00000168: JUMPI 00000169: PUSH2 0x0191 0000016c: PUSH32 0x3032000000000000000000000000000000000000000000000000000000000000 0000018d: PUSH2 0x00c1 00000190: JUMP 00000191: JUMPDEST 00000192: PUSH1 0x04 00000194: CALLDATALOAD 00000195: PUSH1 0x00 00000197: DUP2 00000198: SGT 00000199: PUSH2 0x01d1 0000019c: JUMPI 0000019d: POP 0000019e: PUSH1 0x24 000001a0: CALLDATALOAD 000001a1: PUSH1 0x00 000001a3: DUP2 000001a4: SGT 000001a5: PUSH2 0x01d1 000001a8: JUMPI 000001a9: PUSH2 0x01d1 000001ac: PUSH32 0x3031000000000000000000000000000000000000000000000000000000000000 000001cd: PUSH2 0x00c1 000001d0: JUMP 000001d1: JUMPDEST 000001d2: PUSH1 0xa4 000001d4: CALLDATALOAD 000001d5: ADDRESS 000001d6: DUP2 000001d7: EQ 000001d8: PUSH1 0x01 000001da: DUP2 000001db: EQ 000001dc: PUSH2 0x01ea 000001df: JUMPI 000001e0: DUP1 000001e1: ISZERO 000001e2: PUSH2 0x023c 000001e5: JUMPI 000001e6: PUSH2 0x028d 000001e9: JUMP 000001ea: JUMPDEST 000001eb: PUSH4 0xa9059cbb 000001f0: PUSH1 0xe0 000001f2: SHL 000001f3: PUSH1 0x00 000001f5: MSTORE 000001f6: DUP4 000001f7: PUSH1 0x04 000001f9: MSTORE 000001fa: DUP3 000001fb: PUSH1 0x24 000001fd: MSTORE 000001fe: PUSH1 0x00 00000200: DUP1 00000201: PUSH1 0x44 00000203: PUSH1 0x00 00000205: DUP1 00000206: PUSH1 0xc4 00000208: CALLDATALOAD 00000209: GAS 0000020a: CALL 0000020b: PUSH2 0x0237 0000020e: JUMPI 0000020f: PUSH2 0x0237 00000212: PUSH32 0x3034000000000000000000000000000000000000000000000000000000000000 00000233: PUSH2 0x00c1 00000236: JUMP 00000237: JUMPDEST 00000238: PUSH2 0x028d 0000023b: JUMP 0000023c: JUMPDEST 0000023d: PUSH4 0x23b872dd 00000242: PUSH1 0xe0 00000244: SHL 00000245: PUSH1 0x00 00000247: MSTORE 00000248: DUP2 00000249: PUSH1 0x04 0000024b: MSTORE 0000024c: DUP4 0000024d: PUSH1 0x24 0000024f: MSTORE 00000250: DUP3 00000251: PUSH1 0x44 00000253: MSTORE 00000254: PUSH1 0x00 00000256: DUP1 00000257: PUSH1 0x64 00000259: PUSH1 0x00 0000025b: DUP1 0000025c: PUSH1 0xc4 0000025e: CALLDATALOAD 0000025f: GAS 00000260: CALL 00000261: PUSH2 0x028d 00000264: JUMPI 00000265: PUSH2 0x028d 00000268: PUSH32 0x3033000000000000000000000000000000000000000000000000000000000000 00000289: PUSH2 0x00c1 0000028c: JUMP 0000028d: JUMPDEST 0000028e: POP 0000028f: POP 00000290: POP 00000291: POP 00000292: JUMPDEST 00000293: POP 00000294: STOP 00000295: JUMPDEST 00000296: PUSH2 0x02a8 00000299: PUSH2 0x02a3 0000029c: CALLDATASIZE 0000029d: PUSH1 0x04 0000029f: PUSH2 0x2b3c 000002a2: JUMP 000002a3: JUMPDEST 000002a4: PUSH2 0x0432 000002a7: JUMP 000002a8: JUMPDEST 000002a9: STOP 000002aa: JUMPDEST 000002ab: PUSH2 0x02a8 000002ae: PUSH2 0x02b8 000002b1: CALLDATASIZE 000002b2: PUSH1 0x04 000002b4: PUSH2 0x2b8c 000002b7: JUMP 000002b8: JUMPDEST 000002b9: PUSH2 0x0469 000002bc: JUMP 000002bd: JUMPDEST 000002be: CALLVALUE 000002bf: DUP1 000002c0: ISZERO 000002c1: PUSH2 0x02c9 000002c4: JUMPI 000002c5: PUSH1 0x00 000002c7: DUP1 000002c8: REVERT 000002c9: JUMPDEST 000002ca: POP 000002cb: PUSH1 0x01 000002cd: SLOAD 000002ce: PUSH2 0x02ea 000002d1: SWAP1 000002d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002e7: AND 000002e8: DUP2 000002e9: JUMP 000002ea: JUMPDEST 000002eb: PUSH1 0x40 000002ed: MLOAD 000002ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000303: SWAP1 00000304: SWAP2 00000305: AND 00000306: DUP2 00000307: MSTORE 00000308: PUSH1 0x20 0000030a: ADD 0000030b: JUMPDEST 0000030c: PUSH1 0x40 0000030e: MLOAD 0000030f: DUP1 00000310: SWAP2 00000311: SUB 00000312: SWAP1 00000313: RETURN 00000314: JUMPDEST 00000315: CALLVALUE 00000316: DUP1 00000317: ISZERO 00000318: PUSH2 0x0320 0000031b: JUMPI 0000031c: PUSH1 0x00 0000031e: DUP1 0000031f: REVERT 00000320: JUMPDEST 00000321: POP 00000322: PUSH2 0x02a8 00000325: PUSH2 0x032f 00000328: CALLDATASIZE 00000329: PUSH1 0x04 0000032b: PUSH2 0x2be6 0000032e: JUMP 0000032f: JUMPDEST 00000330: PUSH2 0x05e7 00000333: JUMP 00000334: JUMPDEST 00000335: PUSH2 0x0347 00000338: PUSH2 0x0342 0000033b: CALLDATASIZE 0000033c: PUSH1 0x04 0000033e: PUSH2 0x2b3c 00000341: JUMP 00000342: JUMPDEST 00000343: PUSH2 0x0622 00000346: JUMP 00000347: JUMPDEST 00000348: PUSH1 0x40 0000034a: MLOAD 0000034b: PUSH2 0x030b 0000034e: SWAP2 0000034f: SWAP1 00000350: PUSH2 0x2c0a 00000353: JUMP 00000354: JUMPDEST 00000355: CALLVALUE 00000356: DUP1 00000357: ISZERO 00000358: PUSH2 0x0360 0000035b: JUMPI 0000035c: PUSH1 0x00 0000035e: DUP1 0000035f: REVERT 00000360: JUMPDEST 00000361: POP 00000362: PUSH2 0x0374 00000365: PUSH2 0x036f 00000368: CALLDATASIZE 00000369: PUSH1 0x04 0000036b: PUSH2 0x2be6 0000036e: JUMP 0000036f: JUMPDEST 00000370: PUSH2 0x0681 00000373: JUMP 00000374: JUMPDEST 00000375: PUSH1 0x40 00000377: MLOAD 00000378: SWAP1 00000379: ISZERO 0000037a: ISZERO 0000037b: DUP2 0000037c: MSTORE 0000037d: PUSH1 0x20 0000037f: ADD 00000380: PUSH2 0x030b 00000383: JUMP 00000384: JUMPDEST 00000385: CALLVALUE 00000386: DUP1 00000387: ISZERO 00000388: PUSH2 0x0390 0000038b: JUMPI 0000038c: PUSH1 0x00 0000038e: DUP1 0000038f: REVERT 00000390: JUMPDEST 00000391: POP 00000392: PUSH2 0x02a8 00000395: PUSH2 0x039f 00000398: CALLDATASIZE 00000399: PUSH1 0x04 0000039b: PUSH2 0x2c7d 0000039e: JUMP 0000039f: JUMPDEST 000003a0: PUSH2 0x075d 000003a3: JUMP 000003a4: JUMPDEST 000003a5: CALLVALUE 000003a6: DUP1 000003a7: ISZERO 000003a8: PUSH2 0x03b0 000003ab: JUMPI 000003ac: PUSH1 0x00 000003ae: DUP1 000003af: REVERT 000003b0: JUMPDEST 000003b1: POP 000003b2: PUSH2 0x02a8 000003b5: PUSH2 0x03bf 000003b8: CALLDATASIZE 000003b9: PUSH1 0x04 000003bb: PUSH2 0x2be6 000003be: JUMP 000003bf: JUMPDEST 000003c0: PUSH2 0x07ee 000003c3: JUMP 000003c4: JUMPDEST 000003c5: PUSH2 0x0347 000003c8: PUSH2 0x03d2 000003cb: CALLDATASIZE 000003cc: PUSH1 0x04 000003ce: PUSH2 0x2b8c 000003d1: JUMP 000003d2: JUMPDEST 000003d3: PUSH2 0x0826 000003d6: JUMP 000003d7: JUMPDEST 000003d8: CALLVALUE 000003d9: DUP1 000003da: ISZERO 000003db: PUSH2 0x03e3 000003de: JUMPI 000003df: PUSH1 0x00 000003e1: DUP1 000003e2: REVERT 000003e3: JUMPDEST 000003e4: POP 000003e5: PUSH2 0x0404 000003e8: PUSH2 0x03f2 000003eb: CALLDATASIZE 000003ec: PUSH1 0x04 000003ee: PUSH2 0x2be6 000003f1: JUMP 000003f2: JUMPDEST 000003f3: PUSH1 0x00 000003f5: PUSH1 0x20 000003f7: DUP2 000003f8: SWAP1 000003f9: MSTORE 000003fa: SWAP1 000003fb: DUP2 000003fc: MSTORE 000003fd: PUSH1 0x40 000003ff: SWAP1 00000400: KECCAK256 00000401: SLOAD 00000402: DUP2 00000403: JUMP 00000404: JUMPDEST 00000405: PUSH1 0x40 00000407: MLOAD 00000408: SWAP1 00000409: DUP2 0000040a: MSTORE 0000040b: PUSH1 0x20 0000040d: ADD 0000040e: PUSH2 0x030b 00000411: JUMP 00000412: JUMPDEST 00000413: CALLVALUE 00000414: DUP1 00000415: ISZERO 00000416: PUSH2 0x041e 00000419: JUMPI 0000041a: PUSH1 0x00 0000041c: DUP1 0000041d: REVERT 0000041e: JUMPDEST 0000041f: POP 00000420: PUSH2 0x02a8 00000423: PUSH2 0x042d 00000426: CALLDATASIZE 00000427: PUSH1 0x04 00000429: PUSH2 0x2c7d 0000042c: JUMP 0000042d: JUMPDEST 0000042e: PUSH2 0x09ac 00000431: JUMP 00000432: JUMPDEST 00000433: PUSH2 0x043a 00000436: PUSH2 0x0a39 00000439: JUMP 0000043a: JUMPDEST 0000043b: PUSH2 0x0443 0000043e: JUMPI 0000043f: PUSH1 0x00 00000441: DUP1 00000442: REVERT 00000443: JUMPDEST 00000444: PUSH1 0x00 00000446: DUP1 00000447: DUP3 00000448: MLOAD 00000449: PUSH1 0x20 0000044b: DUP5 0000044c: ADD 0000044d: DUP6 0000044e: GAS 0000044f: DELEGATECALL 00000450: DUP1 00000451: ISZERO 00000452: PUSH1 0x01 00000454: DUP2 00000455: EQ 00000456: PUSH2 0x045e 00000459: JUMPI 0000045a: PUSH2 0x0463 0000045d: JUMP 0000045e: JUMPDEST 0000045f: PUSH1 0x00 00000461: DUP1 00000462: REVERT 00000463: JUMPDEST 00000464: POP 00000465: POP 00000466: POP 00000467: POP 00000468: JUMP 00000469: JUMPDEST 0000046a: PUSH1 0x01 0000046c: SLOAD 0000046d: PUSH1 0x40 0000046f: MLOAD 00000470: PUSH32 0x8bf4515c00000000000000000000000000000000000000000000000000000000 00000491: DUP2 00000492: MSTORE 00000493: PUSH1 0x00 00000495: SWAP2 00000496: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004ab: AND 000004ac: SWAP1 000004ad: PUSH4 0x8bf4515c 000004b2: SWAP1 000004b3: PUSH2 0x04c0 000004b6: SWAP1 000004b7: DUP7 000004b8: SWAP1 000004b9: PUSH1 0x04 000004bb: ADD 000004bc: PUSH2 0x2c0a 000004bf: JUMP 000004c0: JUMPDEST 000004c1: PUSH1 0x20 000004c3: PUSH1 0x40 000004c5: MLOAD 000004c6: DUP1 000004c7: DUP4 000004c8: SUB 000004c9: DUP2 000004ca: DUP7 000004cb: DUP1 000004cc: EXTCODESIZE 000004cd: ISZERO 000004ce: DUP1 000004cf: ISZERO 000004d0: PUSH2 0x04d8 000004d3: JUMPI 000004d4: PUSH1 0x00 000004d6: DUP1 000004d7: REVERT 000004d8: JUMPDEST 000004d9: POP 000004da: GAS 000004db: STATICCALL 000004dc: ISZERO 000004dd: DUP1 000004de: ISZERO 000004df: PUSH2 0x04ec 000004e2: JUMPI 000004e3: RETURNDATASIZE 000004e4: PUSH1 0x00 000004e6: DUP1 000004e7: RETURNDATACOPY 000004e8: RETURNDATASIZE 000004e9: PUSH1 0x00 000004eb: REVERT 000004ec: JUMPDEST 000004ed: POP 000004ee: POP 000004ef: POP 000004f0: POP 000004f1: PUSH1 0x40 000004f3: MLOAD 000004f4: RETURNDATASIZE 000004f5: PUSH1 0x1f 000004f7: NOT 000004f8: PUSH1 0x1f 000004fa: DUP3 000004fb: ADD 000004fc: AND 000004fd: DUP3 000004fe: ADD 000004ff: DUP1 00000500: PUSH1 0x40 00000502: MSTORE 00000503: POP 00000504: DUP2 00000505: ADD 00000506: SWAP1 00000507: PUSH2 0x0510 0000050a: SWAP2 0000050b: SWAP1 0000050c: PUSH2 0x2d2f 0000050f: JUMP 00000510: JUMPDEST 00000511: SWAP1 00000512: POP 00000513: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000528: DUP2 00000529: AND 0000052a: PUSH2 0x05d8 0000052d: JUMPI 0000052e: PUSH1 0x01 00000530: SLOAD 00000531: PUSH1 0x40 00000533: MLOAD 00000534: PUSH32 0x7ed0c3b200000000000000000000000000000000000000000000000000000000 00000555: DUP2 00000556: MSTORE 00000557: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000056c: SWAP1 0000056d: SWAP2 0000056e: AND 0000056f: SWAP1 00000570: PUSH4 0x7ed0c3b2 00000575: SWAP1 00000576: PUSH2 0x0583 00000579: SWAP1 0000057a: DUP7 0000057b: SWAP1 0000057c: PUSH1 0x04 0000057e: ADD 0000057f: PUSH2 0x2c0a 00000582: JUMP 00000583: JUMPDEST 00000584: PUSH1 0x20 00000586: PUSH1 0x40 00000588: MLOAD 00000589: DUP1 0000058a: DUP4 0000058b: SUB 0000058c: DUP2 0000058d: PUSH1 0x00 0000058f: DUP8 00000590: DUP1 00000591: EXTCODESIZE 00000592: ISZERO 00000593: DUP1 00000594: ISZERO 00000595: PUSH2 0x059d 00000598: JUMPI 00000599: PUSH1 0x00 0000059b: DUP1 0000059c: REVERT 0000059d: JUMPDEST 0000059e: POP 0000059f: GAS 000005a0: CALL 000005a1: ISZERO 000005a2: DUP1 000005a3: ISZERO 000005a4: PUSH2 0x05b1 000005a7: JUMPI 000005a8: RETURNDATASIZE 000005a9: PUSH1 0x00 000005ab: DUP1 000005ac: RETURNDATACOPY 000005ad: RETURNDATASIZE 000005ae: PUSH1 0x00 000005b0: REVERT 000005b1: JUMPDEST 000005b2: POP 000005b3: POP 000005b4: POP 000005b5: POP 000005b6: PUSH1 0x40 000005b8: MLOAD 000005b9: RETURNDATASIZE 000005ba: PUSH1 0x1f 000005bc: NOT 000005bd: PUSH1 0x1f 000005bf: DUP3 000005c0: ADD 000005c1: AND 000005c2: DUP3 000005c3: ADD 000005c4: DUP1 000005c5: PUSH1 0x40 000005c7: MSTORE 000005c8: POP 000005c9: DUP2 000005ca: ADD 000005cb: SWAP1 000005cc: PUSH2 0x05d5 000005cf: SWAP2 000005d0: SWAP1 000005d1: PUSH2 0x2d2f 000005d4: JUMP 000005d5: JUMPDEST 000005d6: SWAP1 000005d7: POP 000005d8: JUMPDEST 000005d9: PUSH2 0x05e2 000005dc: DUP2 000005dd: DUP4 000005de: PUSH2 0x0432 000005e1: JUMP 000005e2: JUMPDEST 000005e3: POP 000005e4: POP 000005e5: POP 000005e6: JUMP 000005e7: JUMPDEST 000005e8: PUSH2 0x05ef 000005eb: PUSH2 0x0a39 000005ee: JUMP 000005ef: JUMPDEST 000005f0: PUSH2 0x05f8 000005f3: JUMPI 000005f4: PUSH1 0x00 000005f6: DUP1 000005f7: REVERT 000005f8: JUMPDEST 000005f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000060e: AND 0000060f: PUSH1 0x00 00000611: SWAP1 00000612: DUP2 00000613: MSTORE 00000614: PUSH1 0x20 00000616: DUP2 00000617: SWAP1 00000618: MSTORE 00000619: PUSH1 0x40 0000061b: SWAP1 0000061c: KECCAK256 0000061d: PUSH1 0x01 0000061f: SWAP1 00000620: SSTORE 00000621: JUMP 00000622: JUMPDEST 00000623: PUSH1 0x60 00000625: PUSH2 0x062c 00000628: PUSH2 0x0a39 0000062b: JUMP 0000062c: JUMPDEST 0000062d: PUSH2 0x0635 00000630: JUMPI 00000631: PUSH1 0x00 00000633: DUP1 00000634: REVERT 00000635: JUMPDEST 00000636: PUSH1 0x00 00000638: DUP1 00000639: DUP4 0000063a: MLOAD 0000063b: PUSH1 0x20 0000063d: DUP6 0000063e: ADD 0000063f: DUP7 00000640: GAS 00000641: DELEGATECALL 00000642: RETURNDATASIZE 00000643: PUSH1 0x40 00000645: MLOAD 00000646: SWAP3 00000647: POP 00000648: PUSH1 0x1f 0000064a: NOT 0000064b: PUSH1 0x1f 0000064d: PUSH1 0x20 0000064f: DUP4 00000650: ADD 00000651: ADD 00000652: AND 00000653: DUP4 00000654: ADD 00000655: PUSH1 0x40 00000657: MSTORE 00000658: DUP1 00000659: DUP4 0000065a: MSTORE 0000065b: DUP1 0000065c: PUSH1 0x00 0000065e: PUSH1 0x20 00000660: DUP6 00000661: ADD 00000662: RETURNDATACOPY 00000663: DUP2 00000664: ISZERO 00000665: PUSH1 0x01 00000667: DUP2 00000668: EQ 00000669: PUSH2 0x0671 0000066c: JUMPI 0000066d: PUSH2 0x0678 00000670: JUMP 00000671: JUMPDEST 00000672: DUP2 00000673: PUSH1 0x20 00000675: DUP6 00000676: ADD 00000677: REVERT 00000678: JUMPDEST 00000679: POP 0000067a: POP 0000067b: POP 0000067c: SWAP3 0000067d: SWAP2 0000067e: POP 0000067f: POP 00000680: JUMP 00000681: JUMPDEST 00000682: PUSH1 0x00 00000684: PUSH2 0x068b 00000687: PUSH2 0x0a39 0000068a: JUMP 0000068b: JUMPDEST 0000068c: PUSH2 0x0694 0000068f: JUMPI 00000690: PUSH1 0x00 00000692: DUP1 00000693: REVERT 00000694: JUMPDEST 00000695: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006aa: DUP3 000006ab: AND 000006ac: PUSH2 0x0715 000006af: JUMPI 000006b0: PUSH1 0x40 000006b2: MLOAD 000006b3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006d4: DUP2 000006d5: MSTORE 000006d6: PUSH1 0x20 000006d8: PUSH1 0x04 000006da: DUP3 000006db: ADD 000006dc: MSTORE 000006dd: PUSH1 0x1f 000006df: PUSH1 0x24 000006e1: DUP3 000006e2: ADD 000006e3: MSTORE 000006e4: PUSH32 0x64732d70726f78792d63616368652d616464726573732d726571756972656400 00000705: PUSH1 0x44 00000707: DUP3 00000708: ADD 00000709: MSTORE 0000070a: PUSH1 0x64 0000070c: ADD 0000070d: PUSH1 0x40 0000070f: MLOAD 00000710: DUP1 00000711: SWAP2 00000712: SUB 00000713: SWAP1 00000714: REVERT 00000715: JUMPDEST 00000716: POP 00000717: PUSH1 0x01 00000719: DUP1 0000071a: SLOAD 0000071b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000730: DUP4 00000731: AND 00000732: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000753: SWAP1 00000754: SWAP2 00000755: AND 00000756: OR 00000757: DUP2 00000758: SSTORE 00000759: SWAP2 0000075a: SWAP1 0000075b: POP 0000075c: JUMP 0000075d: JUMPDEST 0000075e: PUSH2 0x0765 00000761: PUSH2 0x0a39 00000764: JUMP 00000765: JUMPDEST 00000766: PUSH2 0x076e 00000769: JUMPI 0000076a: PUSH1 0x00 0000076c: DUP1 0000076d: REVERT 0000076e: JUMPDEST 0000076f: PUSH1 0x00 00000771: JUMPDEST 00000772: DUP2 00000773: MLOAD 00000774: DUP2 00000775: LT 00000776: ISZERO 00000777: PUSH2 0x07ea 0000077a: JUMPI 0000077b: PUSH1 0x01 0000077d: PUSH1 0x00 0000077f: DUP1 00000780: DUP5 00000781: DUP5 00000782: DUP2 00000783: MLOAD 00000784: DUP2 00000785: LT 00000786: PUSH2 0x0791 00000789: JUMPI 0000078a: PUSH2 0x0791 0000078d: PUSH2 0x2d4c 00000790: JUMP 00000791: JUMPDEST 00000792: PUSH1 0x20 00000794: MUL 00000795: PUSH1 0x20 00000797: ADD 00000798: ADD 00000799: MLOAD 0000079a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007af: AND 000007b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007c5: AND 000007c6: DUP2 000007c7: MSTORE 000007c8: PUSH1 0x20 000007ca: ADD 000007cb: SWAP1 000007cc: DUP2 000007cd: MSTORE 000007ce: PUSH1 0x20 000007d0: ADD 000007d1: PUSH1 0x00 000007d3: KECCAK256 000007d4: DUP2 000007d5: SWAP1 000007d6: SSTORE 000007d7: POP 000007d8: DUP1 000007d9: DUP1 000007da: PUSH2 0x07e2 000007dd: SWAP1 000007de: PUSH2 0x2d7b 000007e1: JUMP 000007e2: JUMPDEST 000007e3: SWAP2 000007e4: POP 000007e5: POP 000007e6: PUSH2 0x0771 000007e9: JUMP 000007ea: JUMPDEST 000007eb: POP 000007ec: POP 000007ed: JUMP 000007ee: JUMPDEST 000007ef: PUSH2 0x07f6 000007f2: PUSH2 0x0a39 000007f5: JUMP 000007f6: JUMPDEST 000007f7: PUSH2 0x07ff 000007fa: JUMPI 000007fb: PUSH1 0x00 000007fd: DUP1 000007fe: REVERT 000007ff: JUMPDEST 00000800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000815: AND 00000816: PUSH1 0x00 00000818: SWAP1 00000819: DUP2 0000081a: MSTORE 0000081b: PUSH1 0x20 0000081d: DUP2 0000081e: SWAP1 0000081f: MSTORE 00000820: PUSH1 0x40 00000822: DUP2 00000823: KECCAK256 00000824: SSTORE 00000825: JUMP 00000826: JUMPDEST 00000827: PUSH1 0x01 00000829: SLOAD 0000082a: PUSH1 0x40 0000082c: MLOAD 0000082d: PUSH32 0x8bf4515c00000000000000000000000000000000000000000000000000000000 0000084e: DUP2 0000084f: MSTORE 00000850: PUSH1 0x60 00000852: SWAP2 00000853: PUSH1 0x00 00000855: SWAP2 00000856: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000086b: SWAP1 0000086c: SWAP2 0000086d: AND 0000086e: SWAP1 0000086f: PUSH4 0x8bf4515c 00000874: SWAP1 00000875: PUSH2 0x0882 00000878: SWAP1 00000879: DUP8 0000087a: SWAP1 0000087b: PUSH1 0x04 0000087d: ADD 0000087e: PUSH2 0x2c0a 00000881: JUMP 00000882: JUMPDEST 00000883: PUSH1 0x20 00000885: PUSH1 0x40 00000887: MLOAD 00000888: DUP1 00000889: DUP4 0000088a: SUB 0000088b: DUP2 0000088c: DUP7 0000088d: DUP1 0000088e: EXTCODESIZE 0000088f: ISZERO 00000890: DUP1 00000891: ISZERO 00000892: PUSH2 0x089a 00000895: JUMPI 00000896: PUSH1 0x00 00000898: DUP1 00000899: REVERT 0000089a: JUMPDEST 0000089b: POP 0000089c: GAS 0000089d: STATICCALL 0000089e: ISZERO 0000089f: DUP1 000008a0: ISZERO 000008a1: PUSH2 0x08ae 000008a4: JUMPI 000008a5: RETURNDATASIZE 000008a6: PUSH1 0x00 000008a8: DUP1 000008a9: RETURNDATACOPY 000008aa: RETURNDATASIZE 000008ab: PUSH1 0x00 000008ad: REVERT 000008ae: JUMPDEST 000008af: POP 000008b0: POP 000008b1: POP 000008b2: POP 000008b3: PUSH1 0x40 000008b5: MLOAD 000008b6: RETURNDATASIZE 000008b7: PUSH1 0x1f 000008b9: NOT 000008ba: PUSH1 0x1f 000008bc: DUP3 000008bd: ADD 000008be: AND 000008bf: DUP3 000008c0: ADD 000008c1: DUP1 000008c2: PUSH1 0x40 000008c4: MSTORE 000008c5: POP 000008c6: DUP2 000008c7: ADD 000008c8: SWAP1 000008c9: PUSH2 0x08d2 000008cc: SWAP2 000008cd: SWAP1 000008ce: PUSH2 0x2d2f 000008d1: JUMP 000008d2: JUMPDEST 000008d3: SWAP1 000008d4: POP 000008d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008ea: DUP2 000008eb: AND 000008ec: PUSH2 0x099a 000008ef: JUMPI 000008f0: PUSH1 0x01 000008f2: SLOAD 000008f3: PUSH1 0x40 000008f5: MLOAD 000008f6: PUSH32 0x7ed0c3b200000000000000000000000000000000000000000000000000000000 00000917: DUP2 00000918: MSTORE 00000919: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000092e: SWAP1 0000092f: SWAP2 00000930: AND 00000931: SWAP1 00000932: PUSH4 0x7ed0c3b2 00000937: SWAP1 00000938: PUSH2 0x0945 0000093b: SWAP1 0000093c: DUP8 0000093d: SWAP1 0000093e: PUSH1 0x04 00000940: ADD 00000941: PUSH2 0x2c0a 00000944: JUMP 00000945: JUMPDEST 00000946: PUSH1 0x20 00000948: PUSH1 0x40 0000094a: MLOAD 0000094b: DUP1 0000094c: DUP4 0000094d: SUB 0000094e: DUP2 0000094f: PUSH1 0x00 00000951: DUP8 00000952: DUP1 00000953: EXTCODESIZE 00000954: ISZERO 00000955: DUP1 00000956: ISZERO 00000957: PUSH2 0x095f 0000095a: JUMPI 0000095b: PUSH1 0x00 0000095d: DUP1 0000095e: REVERT 0000095f: JUMPDEST 00000960: POP 00000961: GAS 00000962: CALL 00000963: ISZERO 00000964: DUP1 00000965: ISZERO 00000966: PUSH2 0x0973 00000969: JUMPI 0000096a: RETURNDATASIZE 0000096b: PUSH1 0x00 0000096d: DUP1 0000096e: RETURNDATACOPY 0000096f: RETURNDATASIZE 00000970: PUSH1 0x00 00000972: REVERT 00000973: JUMPDEST 00000974: POP 00000975: POP 00000976: POP 00000977: POP 00000978: PUSH1 0x40 0000097a: MLOAD 0000097b: RETURNDATASIZE 0000097c: PUSH1 0x1f 0000097e: NOT 0000097f: PUSH1 0x1f 00000981: DUP3 00000982: ADD 00000983: AND 00000984: DUP3 00000985: ADD 00000986: DUP1 00000987: PUSH1 0x40 00000989: MSTORE 0000098a: POP 0000098b: DUP2 0000098c: ADD 0000098d: SWAP1 0000098e: PUSH2 0x0997 00000991: SWAP2 00000992: SWAP1 00000993: PUSH2 0x2d2f 00000996: JUMP 00000997: JUMPDEST 00000998: SWAP1 00000999: POP 0000099a: JUMPDEST 0000099b: PUSH2 0x09a4 0000099e: DUP2 0000099f: DUP5 000009a0: PUSH2 0x0622 000009a3: JUMP 000009a4: JUMPDEST 000009a5: SWAP5 000009a6: SWAP4 000009a7: POP 000009a8: POP 000009a9: POP 000009aa: POP 000009ab: JUMP 000009ac: JUMPDEST 000009ad: PUSH2 0x09b4 000009b0: PUSH2 0x0a39 000009b3: JUMP 000009b4: JUMPDEST 000009b5: PUSH2 0x09bd 000009b8: JUMPI 000009b9: PUSH1 0x00 000009bb: DUP1 000009bc: REVERT 000009bd: JUMPDEST 000009be: PUSH1 0x00 000009c0: JUMPDEST 000009c1: DUP2 000009c2: MLOAD 000009c3: DUP2 000009c4: LT 000009c5: ISZERO 000009c6: PUSH2 0x07ea 000009c9: JUMPI 000009ca: PUSH1 0x00 000009cc: DUP1 000009cd: PUSH1 0x00 000009cf: DUP5 000009d0: DUP5 000009d1: DUP2 000009d2: MLOAD 000009d3: DUP2 000009d4: LT 000009d5: PUSH2 0x09e0 000009d8: JUMPI 000009d9: PUSH2 0x09e0 000009dc: PUSH2 0x2d4c 000009df: JUMP 000009e0: JUMPDEST 000009e1: PUSH1 0x20 000009e3: MUL 000009e4: PUSH1 0x20 000009e6: ADD 000009e7: ADD 000009e8: MLOAD 000009e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009fe: AND 000009ff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a14: AND 00000a15: DUP2 00000a16: MSTORE 00000a17: PUSH1 0x20 00000a19: ADD 00000a1a: SWAP1 00000a1b: DUP2 00000a1c: MSTORE 00000a1d: PUSH1 0x20 00000a1f: ADD 00000a20: PUSH1 0x00 00000a22: KECCAK256 00000a23: DUP2 00000a24: SWAP1 00000a25: SSTORE 00000a26: POP 00000a27: DUP1 00000a28: DUP1 00000a29: PUSH2 0x0a31 00000a2c: SWAP1 00000a2d: PUSH2 0x2d7b 00000a30: JUMP 00000a31: JUMPDEST 00000a32: SWAP2 00000a33: POP 00000a34: POP 00000a35: PUSH2 0x09c0 00000a38: JUMP 00000a39: JUMPDEST 00000a3a: PUSH1 0x00 00000a3c: PUSH20 0x79071d243055e6d3bf9dbea842dda69905fa636f 00000a51: CALLER 00000a52: LT 00000a53: PUSH1 0x01 00000a55: DUP2 00000a56: EQ 00000a57: PUSH2 0x0a65 00000a5a: JUMPI 00000a5b: DUP1 00000a5c: ISZERO 00000a5d: PUSH2 0x1a2b 00000a60: JUMPI 00000a61: PUSH2 0x29ed 00000a64: JUMP 00000a65: JUMPDEST 00000a66: PUSH20 0x44151e75925860be5dba0d0f705d03abb6e6bbd9 00000a7b: CALLER 00000a7c: LT 00000a7d: PUSH1 0x01 00000a7f: DUP2 00000a80: EQ 00000a81: PUSH2 0x0a8f 00000a84: JUMPI 00000a85: DUP1 00000a86: ISZERO 00000a87: PUSH2 0x125c 00000a8a: JUMPI 00000a8b: PUSH2 0x1a25 00000a8e: JUMP 00000a8f: JUMPDEST 00000a90: PUSH20 0x26bce6ecb5b10138e4bf14ac0ffcc8727fef3b2e 00000aa5: CALLER 00000aa6: LT 00000aa7: PUSH1 0x01 00000aa9: DUP2 00000aaa: EQ 00000aab: PUSH2 0x0ab9 00000aae: JUMPI 00000aaf: DUP1 00000ab0: ISZERO 00000ab1: PUSH2 0x0e61 00000ab4: JUMPI 00000ab5: PUSH2 0x1256 00000ab8: JUMP 00000ab9: JUMPDEST 00000aba: PUSH20 0x0f3f32f5f684bb6f99b6f414ca27cded9e2d0e87 00000acf: CALLER 00000ad0: LT 00000ad1: PUSH1 0x01 00000ad3: DUP2 00000ad4: EQ 00000ad5: PUSH2 0x0ae3 00000ad8: JUMPI 00000ad9: DUP1 00000ada: ISZERO 00000adb: PUSH2 0x0ca1 00000ade: JUMPI 00000adf: PUSH2 0x0e5b 00000ae2: JUMP 00000ae3: JUMPDEST 00000ae4: PUSH20 0x065e3dbafcb2c26a978720f9eb4bce6ad9d644a1 00000af9: CALLER 00000afa: LT 00000afb: PUSH1 0x01 00000afd: DUP2 00000afe: EQ 00000aff: PUSH2 0x0b0d 00000b02: JUMPI 00000b03: DUP1 00000b04: ISZERO 00000b05: PUSH2 0x0bd6 00000b08: JUMPI 00000b09: PUSH2 0x0c9b 00000b0c: JUMP 00000b0d: JUMPDEST 00000b0e: PUSH20 0x042523db4f3effc33d2742022b2490258494f8b3 00000b23: CALLER 00000b24: LT 00000b25: PUSH1 0x01 00000b27: DUP2 00000b28: EQ 00000b29: PUSH2 0x0b37 00000b2c: JUMPI 00000b2d: DUP1 00000b2e: ISZERO 00000b2f: PUSH2 0x0b5d 00000b32: JUMPI 00000b33: PUSH2 0x0bd0 00000b36: JUMP 00000b37: JUMPDEST 00000b38: PUSH20 0x0364aabefc13885f05d8ca86cbe3e564cd07f6f1 00000b4d: CALLER 00000b4e: EQ 00000b4f: ISZERO 00000b50: PUSH2 0x0b58 00000b53: JUMPI 00000b54: PUSH1 0x01 00000b56: SWAP7 00000b57: POP 00000b58: JUMPDEST 00000b59: PUSH2 0x0bd0 00000b5c: JUMP 00000b5d: JUMPDEST 00000b5e: PUSH20 0x061979019711fd0c9ef93510a996f770a9fc7b60 00000b73: CALLER 00000b74: LT 00000b75: PUSH1 0x01 00000b77: DUP2 00000b78: EQ 00000b79: PUSH2 0x0b87 00000b7c: JUMPI 00000b7d: DUP1 00000b7e: ISZERO 00000b7f: PUSH2 0x0bad 00000b82: JUMPI 00000b83: PUSH2 0x0bce 00000b86: JUMP 00000b87: JUMPDEST 00000b88: PUSH20 0x042523db4f3effc33d2742022b2490258494f8b3 00000b9d: CALLER 00000b9e: EQ 00000b9f: ISZERO 00000ba0: PUSH2 0x0ba8 00000ba3: JUMPI 00000ba4: PUSH1 0x01 00000ba6: SWAP8 00000ba7: POP 00000ba8: JUMPDEST 00000ba9: PUSH2 0x0bce 00000bac: JUMP 00000bad: JUMPDEST 00000bae: PUSH20 0x061979019711fd0c9ef93510a996f770a9fc7b60 00000bc3: CALLER 00000bc4: EQ 00000bc5: ISZERO 00000bc6: PUSH2 0x0bce 00000bc9: JUMPI 00000bca: PUSH1 0x01 00000bcc: SWAP8 00000bcd: POP 00000bce: JUMPDEST 00000bcf: POP 00000bd0: JUMPDEST 00000bd1: POP 00000bd2: PUSH2 0x0c9b 00000bd5: JUMP 00000bd6: JUMPDEST 00000bd7: PUSH20 0x0b275aaeb7e834520f34a24027091edba49b7a58 00000bec: CALLER 00000bed: LT 00000bee: PUSH1 0x01 00000bf0: DUP2 00000bf1: EQ 00000bf2: PUSH2 0x0c00 00000bf5: JUMPI 00000bf6: DUP1 00000bf7: ISZERO 00000bf8: PUSH2 0x0c26 00000bfb: JUMPI 00000bfc: PUSH2 0x0c99 00000bff: JUMP 00000c00: JUMPDEST 00000c01: PUSH20 0x065e3dbafcb2c26a978720f9eb4bce6ad9d644a1 00000c16: CALLER 00000c17: EQ 00000c18: ISZERO 00000c19: PUSH2 0x0c21 00000c1c: JUMPI 00000c1d: PUSH1 0x01 00000c1f: SWAP7 00000c20: POP 00000c21: JUMPDEST 00000c22: PUSH2 0x0c99 00000c25: JUMP 00000c26: JUMPDEST 00000c27: PUSH20 0x0cac3d1a887206e0f6169222c4504301a8b4b993 00000c3c: CALLER 00000c3d: LT 00000c3e: PUSH1 0x01 00000c40: DUP2 00000c41: EQ 00000c42: PUSH2 0x0c50 00000c45: JUMPI 00000c46: DUP1 00000c47: ISZERO 00000c48: PUSH2 0x0c76 00000c4b: JUMPI 00000c4c: PUSH2 0x0c97 00000c4f: JUMP 00000c50: JUMPDEST 00000c51: PUSH20 0x0b275aaeb7e834520f34a24027091edba49b7a58 00000c66: CALLER 00000c67: EQ 00000c68: ISZERO 00000c69: PUSH2 0x0c71 00000c6c: JUMPI 00000c6d: PUSH1 0x01 00000c6f: SWAP8 00000c70: POP 00000c71: JUMPDEST 00000c72: PUSH2 0x0c97 00000c75: JUMP 00000c76: JUMPDEST 00000c77: PUSH20 0x0cac3d1a887206e0f6169222c4504301a8b4b993 00000c8c: CALLER 00000c8d: EQ 00000c8e: ISZERO 00000c8f: PUSH2 0x0c97 00000c92: JUMPI 00000c93: PUSH1 0x01 00000c95: SWAP8 00000c96: POP 00000c97: JUMPDEST 00000c98: POP 00000c99: JUMPDEST 00000c9a: POP 00000c9b: JUMPDEST 00000c9c: POP 00000c9d: PUSH2 0x0e5b 00000ca0: JUMP 00000ca1: JUMPDEST 00000ca2: PUSH20 0x1bb9bc5be209b77786f59e739dfdb9fe9aac916e 00000cb7: CALLER 00000cb8: LT 00000cb9: PUSH1 0x01 00000cbb: DUP2 00000cbc: EQ 00000cbd: PUSH2 0x0ccb 00000cc0: JUMPI 00000cc1: DUP1 00000cc2: ISZERO 00000cc3: PUSH2 0x0d94 00000cc6: JUMPI 00000cc7: PUSH2 0x0e59 00000cca: JUMP 00000ccb: JUMPDEST 00000ccc: PUSH20 0x177b8ebe208cb71da818b6b8814c946c027240cd 00000ce1: CALLER 00000ce2: LT 00000ce3: PUSH1 0x01 00000ce5: DUP2 00000ce6: EQ 00000ce7: PUSH2 0x0cf5 00000cea: JUMPI 00000ceb: DUP1 00000cec: ISZERO 00000ced: PUSH2 0x0d1b 00000cf0: JUMPI 00000cf1: PUSH2 0x0d8e 00000cf4: JUMP 00000cf5: JUMPDEST 00000cf6: PUSH20 0x0f3f32f5f684bb6f99b6f414ca27cded9e2d0e87 00000d0b: CALLER 00000d0c: EQ 00000d0d: ISZERO 00000d0e: PUSH2 0x0d16 00000d11: JUMPI 00000d12: PUSH1 0x01 00000d14: SWAP7 00000d15: POP 00000d16: JUMPDEST 00000d17: PUSH2 0x0d8e 00000d1a: JUMP 00000d1b: JUMPDEST 00000d1c: PUSH20 0x1a54220656fa426a20331141324260398a549314 00000d31: CALLER 00000d32: LT 00000d33: PUSH1 0x01 00000d35: DUP2 00000d36: EQ 00000d37: PUSH2 0x0d45 00000d3a: JUMPI 00000d3b: DUP1 00000d3c: ISZERO 00000d3d: PUSH2 0x0d6b 00000d40: JUMPI 00000d41: PUSH2 0x0d8c 00000d44: JUMP 00000d45: JUMPDEST 00000d46: PUSH20 0x177b8ebe208cb71da818b6b8814c946c027240cd 00000d5b: CALLER 00000d5c: EQ 00000d5d: ISZERO 00000d5e: PUSH2 0x0d66 00000d61: JUMPI 00000d62: PUSH1 0x01 00000d64: SWAP8 00000d65: POP 00000d66: JUMPDEST 00000d67: PUSH2 0x0d8c 00000d6a: JUMP 00000d6b: JUMPDEST 00000d6c: PUSH20 0x1a54220656fa426a20331141324260398a549314 00000d81: CALLER 00000d82: EQ 00000d83: ISZERO 00000d84: PUSH2 0x0d8c 00000d87: JUMPI 00000d88: PUSH1 0x01 00000d8a: SWAP8 00000d8b: POP 00000d8c: JUMPDEST 00000d8d: POP 00000d8e: JUMPDEST 00000d8f: POP 00000d90: PUSH2 0x0e59 00000d93: JUMP 00000d94: JUMPDEST 00000d95: PUSH20 0x1c8f6a5f009e051cab9c3851ca2da2c936b2775a 00000daa: CALLER 00000dab: LT 00000dac: PUSH1 0x01 00000dae: DUP2 00000daf: EQ 00000db0: PUSH2 0x0dbe 00000db3: JUMPI 00000db4: DUP1 00000db5: ISZERO 00000db6: PUSH2 0x0de4 00000db9: JUMPI 00000dba: PUSH2 0x0e57 00000dbd: JUMP 00000dbe: JUMPDEST 00000dbf: PUSH20 0x1bb9bc5be209b77786f59e739dfdb9fe9aac916e 00000dd4: CALLER 00000dd5: EQ 00000dd6: ISZERO 00000dd7: PUSH2 0x0ddf 00000dda: JUMPI 00000ddb: PUSH1 0x01 00000ddd: SWAP7 00000dde: POP 00000ddf: JUMPDEST 00000de0: PUSH2 0x0e57 00000de3: JUMP 00000de4: JUMPDEST 00000de5: PUSH20 0x235909a5345af86536e4ddbe9f753db6b3c919f7 00000dfa: CALLER 00000dfb: LT 00000dfc: PUSH1 0x01 00000dfe: DUP2 00000dff: EQ 00000e00: PUSH2 0x0e0e 00000e03: JUMPI 00000e04: DUP1 00000e05: ISZERO 00000e06: PUSH2 0x0e34 00000e09: JUMPI 00000e0a: PUSH2 0x0e55 00000e0d: JUMP 00000e0e: JUMPDEST 00000e0f: PUSH20 0x1c8f6a5f009e051cab9c3851ca2da2c936b2775a 00000e24: CALLER 00000e25: EQ 00000e26: ISZERO 00000e27: PUSH2 0x0e2f 00000e2a: JUMPI 00000e2b: PUSH1 0x01 00000e2d: SWAP8 00000e2e: POP 00000e2f: JUMPDEST 00000e30: PUSH2 0x0e55 00000e33: JUMP 00000e34: JUMPDEST 00000e35: PUSH20 0x235909a5345af86536e4ddbe9f753db6b3c919f7 00000e4a: CALLER 00000e4b: EQ 00000e4c: ISZERO 00000e4d: PUSH2 0x0e55 00000e50: JUMPI 00000e51: PUSH1 0x01 00000e53: SWAP8 00000e54: POP 00000e55: JUMPDEST 00000e56: POP 00000e57: JUMPDEST 00000e58: POP 00000e59: JUMPDEST 00000e5a: POP 00000e5b: JUMPDEST 00000e5c: POP 00000e5d: PUSH2 0x1256 00000e60: JUMP 00000e61: JUMPDEST 00000e62: PUSH20 0x368dec1eb6e533119f8740c15613144bf5a668ca 00000e77: CALLER 00000e78: LT 00000e79: PUSH1 0x01 00000e7b: DUP2 00000e7c: EQ 00000e7d: PUSH2 0x0e8b 00000e80: JUMPI 00000e81: DUP1 00000e82: ISZERO 00000e83: PUSH2 0x1049 00000e86: JUMPI 00000e87: PUSH2 0x1254 00000e8a: JUMP 00000e8b: JUMPDEST 00000e8c: PUSH20 0x2b728f85296b0cf98fc08f492e7f983636ca3870 00000ea1: CALLER 00000ea2: LT 00000ea3: PUSH1 0x01 00000ea5: DUP2 00000ea6: EQ 00000ea7: PUSH2 0x0eb5 00000eaa: JUMPI 00000eab: DUP1 00000eac: ISZERO 00000ead: PUSH2 0x0f7e 00000eb0: JUMPI 00000eb1: PUSH2 0x1043 00000eb4: JUMP 00000eb5: JUMPDEST 00000eb6: PUSH20 0x29d92a1517034636720fd3bd7e48c4649a249ee8 00000ecb: CALLER 00000ecc: LT 00000ecd: PUSH1 0x01 00000ecf: DUP2 00000ed0: EQ 00000ed1: PUSH2 0x0edf 00000ed4: JUMPI 00000ed5: DUP1 00000ed6: ISZERO 00000ed7: PUSH2 0x0f05 00000eda: JUMPI 00000edb: PUSH2 0x0f78 00000ede: JUMP 00000edf: JUMPDEST 00000ee0: PUSH20 0x26bce6ecb5b10138e4bf14ac0ffcc8727fef3b2e 00000ef5: CALLER 00000ef6: EQ 00000ef7: ISZERO 00000ef8: PUSH2 0x0f00 00000efb: JUMPI 00000efc: PUSH1 0x01 00000efe: SWAP7 00000eff: POP 00000f00: JUMPDEST 00000f01: PUSH2 0x0f78 00000f04: JUMP 00000f05: JUMPDEST 00000f06: PUSH20 0x2b271ac88a4caa57e67b5bcb49fbea3d5963b990 00000f1b: CALLER 00000f1c: LT 00000f1d: PUSH1 0x01 00000f1f: DUP2 00000f20: EQ 00000f21: PUSH2 0x0f2f 00000f24: JUMPI 00000f25: DUP1 00000f26: ISZERO 00000f27: PUSH2 0x0f55 00000f2a: JUMPI 00000f2b: PUSH2 0x0f76 00000f2e: JUMP 00000f2f: JUMPDEST 00000f30: PUSH20 0x29d92a1517034636720fd3bd7e48c4649a249ee8 00000f45: CALLER 00000f46: EQ 00000f47: ISZERO 00000f48: PUSH2 0x0f50 00000f4b: JUMPI 00000f4c: PUSH1 0x01 00000f4e: SWAP8 00000f4f: POP 00000f50: JUMPDEST 00000f51: PUSH2 0x0f76 00000f54: JUMP 00000f55: JUMPDEST 00000f56: PUSH20 0x2b271ac88a4caa57e67b5bcb49fbea3d5963b990 00000f6b: CALLER 00000f6c: EQ 00000f6d: ISZERO 00000f6e: PUSH2 0x0f76 00000f71: JUMPI 00000f72: PUSH1 0x01 00000f74: SWAP8 00000f75: POP 00000f76: JUMPDEST 00000f77: POP 00000f78: JUMPDEST 00000f79: POP 00000f7a: PUSH2 0x1043 00000f7d: JUMP 00000f7e: JUMPDEST 00000f7f: PUSH20 0x2d525a7eab9b6645053e22816450f27ee242303d 00000f94: CALLER 00000f95: LT 00000f96: PUSH1 0x01 00000f98: DUP2 00000f99: EQ 00000f9a: PUSH2 0x0fa8 00000f9d: JUMPI 00000f9e: DUP1 00000f9f: ISZERO 00000fa0: PUSH2 0x0fce 00000fa3: JUMPI 00000fa4: PUSH2 0x1041 00000fa7: JUMP 00000fa8: JUMPDEST 00000fa9: PUSH20 0x2b728f85296b0cf98fc08f492e7f983636ca3870 00000fbe: CALLER 00000fbf: EQ 00000fc0: ISZERO 00000fc1: PUSH2 0x0fc9 00000fc4: JUMPI 00000fc5: PUSH1 0x01 00000fc7: SWAP7 00000fc8: POP 00000fc9: JUMPDEST 00000fca: PUSH2 0x1041 00000fcd: JUMP 00000fce: JUMPDEST 00000fcf: PUSH20 0x2e9262b2a4f2934ab60c836e63029f52e296a55d 00000fe4: CALLER 00000fe5: LT 00000fe6: PUSH1 0x01 00000fe8: DUP2 00000fe9: EQ 00000fea: PUSH2 0x0ff8 00000fed: JUMPI 00000fee: DUP1 00000fef: ISZERO 00000ff0: PUSH2 0x101e 00000ff3: JUMPI 00000ff4: PUSH2 0x103f 00000ff7: JUMP 00000ff8: JUMPDEST 00000ff9: PUSH20 0x2d525a7eab9b6645053e22816450f27ee242303d 0000100e: CALLER 0000100f: EQ 00001010: ISZERO 00001011: PUSH2 0x1019 00001014: JUMPI 00001015: PUSH1 0x01 00001017: SWAP8 00001018: POP 00001019: JUMPDEST 0000101a: PUSH2 0x103f 0000101d: JUMP 0000101e: JUMPDEST 0000101f: PUSH20 0x2e9262b2a4f2934ab60c836e63029f52e296a55d 00001034: CALLER 00001035: EQ 00001036: ISZERO 00001037: PUSH2 0x103f 0000103a: JUMPI 0000103b: PUSH1 0x01 0000103d: SWAP8 0000103e: POP 0000103f: JUMPDEST 00001040: POP 00001041: JUMPDEST 00001042: POP 00001043: JUMPDEST 00001044: POP 00001045: PUSH2 0x1254 00001048: JUMP 00001049: JUMPDEST 0000104a: PUSH20 0x3fbaea01b228368e67ca40d8cb195018fd095318 0000105f: CALLER 00001060: LT 00001061: PUSH1 0x01 00001063: DUP2 00001064: EQ 00001065: PUSH2 0x1073 00001068: JUMPI 00001069: DUP1 0000106a: ISZERO 0000106b: PUSH2 0x113c 0000106e: JUMPI 0000106f: PUSH2 0x1252 00001072: JUMP 00001073: JUMPDEST 00001074: PUSH20 0x36a454aef52938c8637cd4689b2980c1cfd43389 00001089: CALLER 0000108a: LT 0000108b: PUSH1 0x01 0000108d: DUP2 0000108e: EQ 0000108f: PUSH2 0x109d 00001092: JUMPI 00001093: DUP1 00001094: ISZERO 00001095: PUSH2 0x10c3 00001098: JUMPI 00001099: PUSH2 0x1136 0000109c: JUMP 0000109d: JUMPDEST 0000109e: PUSH20 0x368dec1eb6e533119f8740c15613144bf5a668ca 000010b3: CALLER 000010b4: EQ 000010b5: ISZERO 000010b6: PUSH2 0x10be 000010b9: JUMPI 000010ba: PUSH1 0x01 000010bc: SWAP7 000010bd: POP 000010be: JUMPDEST 000010bf: PUSH2 0x1136 000010c2: JUMP 000010c3: JUMPDEST 000010c4: PUSH20 0x3cb3ef0368a6548f71357f4d346330195bca1160 000010d9: CALLER 000010da: LT 000010db: PUSH1 0x01 000010dd: DUP2 000010de: EQ 000010df: PUSH2 0x10ed 000010e2: JUMPI 000010e3: DUP1 000010e4: ISZERO 000010e5: PUSH2 0x1113 000010e8: JUMPI 000010e9: PUSH2 0x1134 000010ec: JUMP 000010ed: JUMPDEST 000010ee: PUSH20 0x36a454aef52938c8637cd4689b2980c1cfd43389 00001103: CALLER 00001104: EQ 00001105: ISZERO 00001106: PUSH2 0x110e 00001109: JUMPI 0000110a: PUSH1 0x01 0000110c: SWAP8 0000110d: POP 0000110e: JUMPDEST 0000110f: PUSH2 0x1134 00001112: JUMP 00001113: JUMPDEST 00001114: PUSH20 0x3cb3ef0368a6548f71357f4d346330195bca1160 00001129: CALLER 0000112a: EQ 0000112b: ISZERO 0000112c: PUSH2 0x1134 0000112f: JUMPI 00001130: PUSH1 0x01 00001132: SWAP8 00001133: POP 00001134: JUMPDEST 00001135: POP 00001136: JUMPDEST 00001137: POP 00001138: PUSH2 0x1252 0000113b: JUMP 0000113c: JUMPDEST 0000113d: PUSH20 0x431b5a84acc1297eda88259f300262f1bc3a74f3 00001152: CALLER 00001153: LT 00001154: PUSH1 0x01 00001156: DUP2 00001157: EQ 00001158: PUSH2 0x1166 0000115b: JUMPI 0000115c: DUP1 0000115d: ISZERO 0000115e: PUSH2 0x11dd 00001161: JUMPI 00001162: PUSH2 0x1250 00001165: JUMP 00001166: JUMPDEST 00001167: PUSH20 0x421125ca608a35458b2c99da39cd55b70ba202a4 0000117c: CALLER 0000117d: LT 0000117e: PUSH1 0x01 00001180: DUP2 00001181: EQ 00001182: PUSH2 0x1190 00001185: JUMPI 00001186: DUP1 00001187: ISZERO 00001188: PUSH2 0x11b6 0000118b: JUMPI 0000118c: PUSH2 0x11d7 0000118f: JUMP 00001190: JUMPDEST 00001191: PUSH20 0x3fbaea01b228368e67ca40d8cb195018fd095318 000011a6: CALLER 000011a7: EQ 000011a8: ISZERO 000011a9: PUSH2 0x11b1 000011ac: JUMPI 000011ad: PUSH1 0x01 000011af: SWAP8 000011b0: POP 000011b1: JUMPDEST 000011b2: PUSH2 0x11d7 000011b5: JUMP 000011b6: JUMPDEST 000011b7: PUSH20 0x421125ca608a35458b2c99da39cd55b70ba202a4 000011cc: CALLER 000011cd: EQ 000011ce: ISZERO 000011cf: PUSH2 0x11d7 000011d2: JUMPI 000011d3: PUSH1 0x01 000011d5: SWAP8 000011d6: POP 000011d7: JUMPDEST 000011d8: POP 000011d9: PUSH2 0x1250 000011dc: JUMP 000011dd: JUMPDEST 000011de: PUSH20 0x43e4715ae093a4c86b5ecddb52216c4f879e9672 000011f3: CALLER 000011f4: LT 000011f5: PUSH1 0x01 000011f7: DUP2 000011f8: EQ 000011f9: PUSH2 0x1207 000011fc: JUMPI 000011fd: DUP1 000011fe: ISZERO 000011ff: PUSH2 0x122d 00001202: JUMPI 00001203: PUSH2 0x124e 00001206: JUMP 00001207: JUMPDEST 00001208: PUSH20 0x431b5a84acc1297eda88259f300262f1bc3a74f3 0000121d: CALLER 0000121e: EQ 0000121f: ISZERO 00001220: PUSH2 0x1228 00001223: JUMPI 00001224: PUSH1 0x01 00001226: SWAP8 00001227: POP 00001228: JUMPDEST 00001229: PUSH2 0x124e 0000122c: JUMP 0000122d: JUMPDEST 0000122e: PUSH20 0x43e4715ae093a4c86b5ecddb52216c4f879e9672 00001243: CALLER 00001244: EQ 00001245: ISZERO 00001246: PUSH2 0x124e 00001249: JUMPI 0000124a: PUSH1 0x01 0000124c: SWAP8 0000124d: POP 0000124e: JUMPDEST 0000124f: POP 00001250: JUMPDEST 00001251: POP 00001252: JUMPDEST 00001253: POP 00001254: JUMPDEST 00001255: POP 00001256: JUMPDEST 00001257: POP 00001258: PUSH2 0x1a25 0000125b: JUMP 0000125c: JUMPDEST 0000125d: PUSH20 0x59927b1208051b07118ee542a86414ed74eef4b7 00001272: CALLER 00001273: LT 00001274: PUSH1 0x01 00001276: DUP2 00001277: EQ 00001278: PUSH2 0x1286 0000127b: JUMPI 0000127c: DUP1 0000127d: ISZERO 0000127e: PUSH2 0x162e 00001281: JUMPI 00001282: PUSH2 0x1a23 00001285: JUMP 00001286: JUMPDEST 00001287: PUSH20 0x4deacb315fc16b746aa3c5f42363a0bff694c42f 0000129c: CALLER 0000129d: LT 0000129e: PUSH1 0x01 000012a0: DUP2 000012a1: EQ 000012a2: PUSH2 0x12b0 000012a5: JUMPI 000012a6: DUP1 000012a7: ISZERO 000012a8: PUSH2 0x146e 000012ab: JUMPI 000012ac: PUSH2 0x1628 000012af: JUMP 000012b0: JUMPDEST 000012b1: PUSH20 0x4bfcf7a62e5c0acc874d496182915c3642e64cb6 000012c6: CALLER 000012c7: LT 000012c8: PUSH1 0x01 000012ca: DUP2 000012cb: EQ 000012cc: PUSH2 0x12da 000012cf: JUMPI 000012d0: DUP1 000012d1: ISZERO 000012d2: PUSH2 0x13a3 000012d5: JUMPI 000012d6: PUSH2 0x1468 000012d9: JUMP 000012da: JUMPDEST 000012db: PUSH20 0x4603180bbb8221157880afaa84638e0fc467738d 000012f0: CALLER 000012f1: LT 000012f2: PUSH1 0x01 000012f4: DUP2 000012f5: EQ 000012f6: PUSH2 0x1304 000012f9: JUMPI 000012fa: DUP1 000012fb: ISZERO 000012fc: PUSH2 0x132a 000012ff: JUMPI 00001300: PUSH2 0x139d 00001303: JUMP 00001304: JUMPDEST 00001305: PUSH20 0x44151e75925860be5dba0d0f705d03abb6e6bbd9 0000131a: CALLER 0000131b: EQ 0000131c: ISZERO 0000131d: PUSH2 0x1325 00001320: JUMPI 00001321: PUSH1 0x01 00001323: SWAP7 00001324: POP 00001325: JUMPDEST 00001326: PUSH2 0x139d 00001329: JUMP 0000132a: JUMPDEST 0000132b: PUSH20 0x479b454f499333551682214f3859c2520a83c6ad 00001340: CALLER 00001341: LT 00001342: PUSH1 0x01 00001344: DUP2 00001345: EQ 00001346: PUSH2 0x1354 00001349: JUMPI 0000134a: DUP1 0000134b: ISZERO 0000134c: PUSH2 0x137a 0000134f: JUMPI 00001350: PUSH2 0x139b 00001353: JUMP 00001354: JUMPDEST 00001355: PUSH20 0x4603180bbb8221157880afaa84638e0fc467738d 0000136a: CALLER 0000136b: EQ 0000136c: ISZERO 0000136d: PUSH2 0x1375 00001370: JUMPI 00001371: PUSH1 0x01 00001373: SWAP8 00001374: POP 00001375: JUMPDEST 00001376: PUSH2 0x139b 00001379: JUMP 0000137a: JUMPDEST 0000137b: PUSH20 0x479b454f499333551682214f3859c2520a83c6ad 00001390: CALLER 00001391: EQ 00001392: ISZERO 00001393: PUSH2 0x139b 00001396: JUMPI 00001397: PUSH1 0x01 00001399: SWAP8 0000139a: POP 0000139b: JUMPDEST 0000139c: POP 0000139d: JUMPDEST 0000139e: POP 0000139f: PUSH2 0x1468 000013a2: JUMP 000013a3: JUMPDEST 000013a4: PUSH20 0x4c055329042980eea72b49e8b8f2b1f2672243e8 000013b9: CALLER 000013ba: LT 000013bb: PUSH1 0x01 000013bd: DUP2 000013be: EQ 000013bf: PUSH2 0x13cd 000013c2: JUMPI 000013c3: DUP1 000013c4: ISZERO 000013c5: PUSH2 0x13f3 000013c8: JUMPI 000013c9: PUSH2 0x1466 000013cc: JUMP 000013cd: JUMPDEST 000013ce: PUSH20 0x4bfcf7a62e5c0acc874d496182915c3642e64cb6 000013e3: CALLER 000013e4: EQ 000013e5: ISZERO 000013e6: PUSH2 0x13ee 000013e9: JUMPI 000013ea: PUSH1 0x01 000013ec: SWAP7 000013ed: POP 000013ee: JUMPDEST 000013ef: PUSH2 0x1466 000013f2: JUMP 000013f3: JUMPDEST 000013f4: PUSH20 0x4c33c0e010aa2cb240cf73a683c1c6c4ccab5626 00001409: CALLER 0000140a: LT 0000140b: PUSH1 0x01 0000140d: DUP2 0000140e: EQ 0000140f: PUSH2 0x141d 00001412: JUMPI 00001413: DUP1 00001414: ISZERO 00001415: PUSH2 0x1443 00001418: JUMPI 00001419: PUSH2 0x1464 0000141c: JUMP 0000141d: JUMPDEST 0000141e: PUSH20 0x4c055329042980eea72b49e8b8f2b1f2672243e8 00001433: CALLER 00001434: EQ 00001435: ISZERO 00001436: PUSH2 0x143e 00001439: JUMPI 0000143a: PUSH1 0x01 0000143c: SWAP8 0000143d: POP 0000143e: JUMPDEST 0000143f: PUSH2 0x1464 00001442: JUMP 00001443: JUMPDEST 00001444: PUSH20 0x4c33c0e010aa2cb240cf73a683c1c6c4ccab5626 00001459: CALLER 0000145a: EQ 0000145b: ISZERO 0000145c: PUSH2 0x1464 0000145f: JUMPI 00001460: PUSH1 0x01 00001462: SWAP8 00001463: POP 00001464: JUMPDEST 00001465: POP 00001466: JUMPDEST 00001467: POP 00001468: JUMPDEST 00001469: POP 0000146a: PUSH2 0x1628 0000146d: JUMP 0000146e: JUMPDEST 0000146f: PUSH20 0x520c602cb82538e9eb71d0310449f3e2eafa9d18 00001484: CALLER 00001485: LT 00001486: PUSH1 0x01 00001488: DUP2 00001489: EQ 0000148a: PUSH2 0x1498 0000148d: JUMPI 0000148e: DUP1 0000148f: ISZERO 00001490: PUSH2 0x1561 00001493: JUMPI 00001494: PUSH2 0x1626 00001497: JUMP 00001498: JUMPDEST 00001499: PUSH20 0x4e3ca608f17ec15236a0ce6dff03175f89c2bdcf 000014ae: CALLER 000014af: LT 000014b0: PUSH1 0x01 000014b2: DUP2 000014b3: EQ 000014b4: PUSH2 0x14c2 000014b7: JUMPI 000014b8: DUP1 000014b9: ISZERO 000014ba: PUSH2 0x14e8 000014bd: JUMPI 000014be: PUSH2 0x155b 000014c1: JUMP 000014c2: JUMPDEST 000014c3: PUSH20 0x4deacb315fc16b746aa3c5f42363a0bff694c42f 000014d8: CALLER 000014d9: EQ 000014da: ISZERO 000014db: PUSH2 0x14e3 000014de: JUMPI 000014df: PUSH1 0x01 000014e1: SWAP7 000014e2: POP 000014e3: JUMPDEST 000014e4: PUSH2 0x155b 000014e7: JUMP 000014e8: JUMPDEST 000014e9: PUSH20 0x500af6e7c53dfd8e083e7e8c07f3898411face2a 000014fe: CALLER 000014ff: LT 00001500: PUSH1 0x01 00001502: DUP2 00001503: EQ 00001504: PUSH2 0x1512 00001507: JUMPI 00001508: DUP1 00001509: ISZERO 0000150a: PUSH2 0x1538 0000150d: JUMPI 0000150e: PUSH2 0x1559 00001511: JUMP 00001512: JUMPDEST 00001513: PUSH20 0x4e3ca608f17ec15236a0ce6dff03175f89c2bdcf 00001528: CALLER 00001529: EQ 0000152a: ISZERO 0000152b: PUSH2 0x1533 0000152e: JUMPI 0000152f: PUSH1 0x01 00001531: SWAP8 00001532: POP 00001533: JUMPDEST 00001534: PUSH2 0x1559 00001537: JUMP 00001538: JUMPDEST 00001539: PUSH20 0x500af6e7c53dfd8e083e7e8c07f3898411face2a 0000154e: CALLER 0000154f: EQ 00001550: ISZERO 00001551: PUSH2 0x1559 00001554: JUMPI 00001555: PUSH1 0x01 00001557: SWAP8 00001558: POP 00001559: JUMPDEST 0000155a: POP 0000155b: JUMPDEST 0000155c: POP 0000155d: PUSH2 0x1626 00001560: JUMP 00001561: JUMPDEST 00001562: PUSH20 0x5687872eb3cba26ee20945e62647b438d309ff0e 00001577: CALLER 00001578: LT 00001579: PUSH1 0x01 0000157b: DUP2 0000157c: EQ 0000157d: PUSH2 0x158b 00001580: JUMPI 00001581: DUP1 00001582: ISZERO 00001583: PUSH2 0x15b1 00001586: JUMPI 00001587: PUSH2 0x1624 0000158a: JUMP 0000158b: JUMPDEST 0000158c: PUSH20 0x520c602cb82538e9eb71d0310449f3e2eafa9d18 000015a1: CALLER 000015a2: EQ 000015a3: ISZERO 000015a4: PUSH2 0x15ac 000015a7: JUMPI 000015a8: PUSH1 0x01 000015aa: SWAP7 000015ab: POP 000015ac: JUMPDEST 000015ad: PUSH2 0x1624 000015b0: JUMP 000015b1: JUMPDEST 000015b2: PUSH20 0x56f03dbc2d16f4a252a7176e1fc3f05b53c6aad5 000015c7: CALLER 000015c8: LT 000015c9: PUSH1 0x01 000015cb: DUP2 000015cc: EQ 000015cd: PUSH2 0x15db 000015d0: JUMPI 000015d1: DUP1 000015d2: ISZERO 000015d3: PUSH2 0x1601 000015d6: JUMPI 000015d7: PUSH2 0x1622 000015da: JUMP 000015db: JUMPDEST 000015dc: PUSH20 0x5687872eb3cba26ee20945e62647b438d309ff0e 000015f1: CALLER 000015f2: EQ 000015f3: ISZERO 000015f4: PUSH2 0x15fc 000015f7: JUMPI 000015f8: PUSH1 0x01 000015fa: SWAP8 000015fb: POP 000015fc: JUMPDEST 000015fd: PUSH2 0x1622 00001600: JUMP 00001601: JUMPDEST 00001602: PUSH20 0x56f03dbc2d16f4a252a7176e1fc3f05b53c6aad5 00001617: CALLER 00001618: EQ 00001619: ISZERO 0000161a: PUSH2 0x1622 0000161d: JUMPI 0000161e: PUSH1 0x01 00001620: SWAP8 00001621: POP 00001622: JUMPDEST 00001623: POP 00001624: JUMPDEST 00001625: POP 00001626: JUMPDEST 00001627: POP 00001628: JUMPDEST 00001629: POP 0000162a: PUSH2 0x1a23 0000162d: JUMP 0000162e: JUMPDEST 0000162f: PUSH20 0x66c4f101d61f784eccec1b5aa48cbac4e1512e0c 00001644: CALLER 00001645: LT 00001646: PUSH1 0x01 00001648: DUP2 00001649: EQ 0000164a: PUSH2 0x1658 0000164d: JUMPI 0000164e: DUP1 0000164f: ISZERO 00001650: PUSH2 0x1816 00001653: JUMPI 00001654: PUSH2 0x1a21 00001657: JUMP 00001658: JUMPDEST 00001659: PUSH20 0x60b86af869f23aeb552fb7f3cabd11b829f6ab2f 0000166e: CALLER 0000166f: LT 00001670: PUSH1 0x01 00001672: DUP2 00001673: EQ 00001674: PUSH2 0x1682 00001677: JUMPI 00001678: DUP1 00001679: ISZERO 0000167a: PUSH2 0x174b 0000167d: JUMPI 0000167e: PUSH2 0x1810 00001681: JUMP 00001682: JUMPDEST 00001683: PUSH20 0x5a243879d1a43f48042c33bbc8051c69756f67d4 00001698: CALLER 00001699: LT 0000169a: PUSH1 0x01 0000169c: DUP2 0000169d: EQ 0000169e: PUSH2 0x16ac 000016a1: JUMPI 000016a2: DUP1 000016a3: ISZERO 000016a4: PUSH2 0x16d2 000016a7: JUMPI 000016a8: PUSH2 0x1745 000016ab: JUMP 000016ac: JUMPDEST 000016ad: PUSH20 0x59927b1208051b07118ee542a86414ed74eef4b7 000016c2: CALLER 000016c3: EQ 000016c4: ISZERO 000016c5: PUSH2 0x16cd 000016c8: JUMPI 000016c9: PUSH1 0x01 000016cb: SWAP7 000016cc: POP 000016cd: JUMPDEST 000016ce: PUSH2 0x1745 000016d1: JUMP 000016d2: JUMPDEST 000016d3: PUSH20 0x6046945c5b5ef5933b8e73a98a6ad7bf3e031df7 000016e8: CALLER 000016e9: LT 000016ea: PUSH1 0x01 000016ec: DUP2 000016ed: EQ 000016ee: PUSH2 0x16fc 000016f1: JUMPI 000016f2: DUP1 000016f3: ISZERO 000016f4: PUSH2 0x1722 000016f7: JUMPI 000016f8: PUSH2 0x1743 000016fb: JUMP 000016fc: JUMPDEST 000016fd: PUSH20 0x5a243879d1a43f48042c33bbc8051c69756f67d4 00001712: CALLER 00001713: EQ 00001714: ISZERO 00001715: PUSH2 0x171d 00001718: JUMPI 00001719: PUSH1 0x01 0000171b: SWAP8 0000171c: POP 0000171d: JUMPDEST 0000171e: PUSH2 0x1743 00001721: JUMP 00001722: JUMPDEST 00001723: PUSH20 0x6046945c5b5ef5933b8e73a98a6ad7bf3e031df7 00001738: CALLER 00001739: EQ 0000173a: ISZERO 0000173b: PUSH2 0x1743 0000173e: JUMPI 0000173f: PUSH1 0x01 00001741: SWAP8 00001742: POP 00001743: JUMPDEST 00001744: POP 00001745: JUMPDEST 00001746: POP 00001747: PUSH2 0x1810 0000174a: JUMP 0000174b: JUMPDEST 0000174c: PUSH20 0x6298357c08988e0229b00fca5cb89aa12c9f70a3 00001761: CALLER 00001762: LT 00001763: PUSH1 0x01 00001765: DUP2 00001766: EQ 00001767: PUSH2 0x1775 0000176a: JUMPI 0000176b: DUP1 0000176c: ISZERO 0000176d: PUSH2 0x179b 00001770: JUMPI 00001771: PUSH2 0x180e 00001774: JUMP 00001775: JUMPDEST 00001776: PUSH20 0x60b86af869f23aeb552fb7f3cabd11b829f6ab2f 0000178b: CALLER 0000178c: EQ 0000178d: ISZERO 0000178e: PUSH2 0x1796 00001791: JUMPI 00001792: PUSH1 0x01 00001794: SWAP7 00001795: POP 00001796: JUMPDEST 00001797: PUSH2 0x180e 0000179a: JUMP 0000179b: JUMPDEST 0000179c: PUSH20 0x64bbde373e909501de1309231336761adeaa07d5 000017b1: CALLER 000017b2: LT 000017b3: PUSH1 0x01 000017b5: DUP2 000017b6: EQ 000017b7: PUSH2 0x17c5 000017ba: JUMPI 000017bb: DUP1 000017bc: ISZERO 000017bd: PUSH2 0x17eb 000017c0: JUMPI 000017c1: PUSH2 0x180c 000017c4: JUMP 000017c5: JUMPDEST 000017c6: PUSH20 0x6298357c08988e0229b00fca5cb89aa12c9f70a3 000017db: CALLER 000017dc: EQ 000017dd: ISZERO 000017de: PUSH2 0x17e6 000017e1: JUMPI 000017e2: PUSH1 0x01 000017e4: SWAP8 000017e5: POP 000017e6: JUMPDEST 000017e7: PUSH2 0x180c 000017ea: JUMP 000017eb: JUMPDEST 000017ec: PUSH20 0x64bbde373e909501de1309231336761adeaa07d5 00001801: CALLER 00001802: EQ 00001803: ISZERO 00001804: PUSH2 0x180c 00001807: JUMPI 00001808: PUSH1 0x01 0000180a: SWAP8 0000180b: POP 0000180c: JUMPDEST 0000180d: POP 0000180e: JUMPDEST 0000180f: POP 00001810: JUMPDEST 00001811: POP 00001812: PUSH2 0x1a21 00001815: JUMP 00001816: JUMPDEST 00001817: PUSH20 0x75bcdbc99d9ce8ea5c8b0298cf2db409c8a9790a 0000182c: CALLER 0000182d: LT 0000182e: PUSH1 0x01 00001830: DUP2 00001831: EQ 00001832: PUSH2 0x1840 00001835: JUMPI 00001836: DUP1 00001837: ISZERO 00001838: PUSH2 0x1909 0000183b: JUMPI 0000183c: PUSH2 0x1a1f 0000183f: JUMP 00001840: JUMPDEST 00001841: PUSH20 0x69181a03fd84d1e2679eb520dfde72c97e1ce524 00001856: CALLER 00001857: LT 00001858: PUSH1 0x01 0000185a: DUP2 0000185b: EQ 0000185c: PUSH2 0x186a 0000185f: JUMPI 00001860: DUP1 00001861: ISZERO 00001862: PUSH2 0x1890 00001865: JUMPI 00001866: PUSH2 0x1903 00001869: JUMP 0000186a: JUMPDEST 0000186b: PUSH20 0x66c4f101d61f784eccec1b5aa48cbac4e1512e0c 00001880: CALLER 00001881: EQ 00001882: ISZERO 00001883: PUSH2 0x188b 00001886: JUMPI 00001887: PUSH1 0x01 00001889: SWAP7 0000188a: POP 0000188b: JUMPDEST 0000188c: PUSH2 0x1903 0000188f: JUMP 00001890: JUMPDEST 00001891: PUSH20 0x72aa4640c61639b8df7f135355995a75d295b9f9 000018a6: CALLER 000018a7: LT 000018a8: PUSH1 0x01 000018aa: DUP2 000018ab: EQ 000018ac: PUSH2 0x18ba 000018af: JUMPI 000018b0: DUP1 000018b1: ISZERO 000018b2: PUSH2 0x18e0 000018b5: JUMPI 000018b6: PUSH2 0x1901 000018b9: JUMP 000018ba: JUMPDEST 000018bb: PUSH20 0x69181a03fd84d1e2679eb520dfde72c97e1ce524 000018d0: CALLER 000018d1: EQ 000018d2: ISZERO 000018d3: PUSH2 0x18db 000018d6: JUMPI 000018d7: PUSH1 0x01 000018d9: SWAP8 000018da: POP 000018db: JUMPDEST 000018dc: PUSH2 0x1901 000018df: JUMP 000018e0: JUMPDEST 000018e1: PUSH20 0x72aa4640c61639b8df7f135355995a75d295b9f9 000018f6: CALLER 000018f7: EQ 000018f8: ISZERO 000018f9: PUSH2 0x1901 000018fc: JUMPI 000018fd: PUSH1 0x01 000018ff: SWAP8 00001900: POP 00001901: JUMPDEST 00001902: POP 00001903: JUMPDEST 00001904: POP 00001905: PUSH2 0x1a1f 00001908: JUMP 00001909: JUMPDEST 0000190a: PUSH20 0x76e40d0a69fd81826b5eb7d18145626d46eafdef 0000191f: CALLER 00001920: LT 00001921: PUSH1 0x01 00001923: DUP2 00001924: EQ 00001925: PUSH2 0x1933 00001928: JUMPI 00001929: DUP1 0000192a: ISZERO 0000192b: PUSH2 0x19aa 0000192e: JUMPI 0000192f: PUSH2 0x1a1d 00001932: JUMP 00001933: JUMPDEST 00001934: PUSH20 0x76dd32063b2899a59f6e15dbc474a160cc922751 00001949: CALLER 0000194a: LT 0000194b: PUSH1 0x01 0000194d: DUP2 0000194e: EQ 0000194f: PUSH2 0x195d 00001952: JUMPI 00001953: DUP1 00001954: ISZERO 00001955: PUSH2 0x1983 00001958: JUMPI 00001959: PUSH2 0x19a4 0000195c: JUMP 0000195d: JUMPDEST 0000195e: PUSH20 0x75bcdbc99d9ce8ea5c8b0298cf2db409c8a9790a 00001973: CALLER 00001974: EQ 00001975: ISZERO 00001976: PUSH2 0x197e 00001979: JUMPI 0000197a: PUSH1 0x01 0000197c: SWAP8 0000197d: POP 0000197e: JUMPDEST 0000197f: PUSH2 0x19a4 00001982: JUMP 00001983: JUMPDEST 00001984: PUSH20 0x76dd32063b2899a59f6e15dbc474a160cc922751 00001999: CALLER 0000199a: EQ 0000199b: ISZERO 0000199c: PUSH2 0x19a4 0000199f: JUMPI 000019a0: PUSH1 0x01 000019a2: SWAP8 000019a3: POP 000019a4: JUMPDEST 000019a5: POP 000019a6: PUSH2 0x1a1d 000019a9: JUMP 000019aa: JUMPDEST 000019ab: PUSH20 0x77eb9084ce8168901bcb11f14f02a7aab36fcd0c 000019c0: CALLER 000019c1: LT 000019c2: PUSH1 0x01 000019c4: DUP2 000019c5: EQ 000019c6: PUSH2 0x19d4 000019c9: JUMPI 000019ca: DUP1 000019cb: ISZERO 000019cc: PUSH2 0x19fa 000019cf: JUMPI 000019d0: PUSH2 0x1a1b 000019d3: JUMP 000019d4: JUMPDEST 000019d5: PUSH20 0x76e40d0a69fd81826b5eb7d18145626d46eafdef 000019ea: CALLER 000019eb: EQ 000019ec: ISZERO 000019ed: PUSH2 0x19f5 000019f0: JUMPI 000019f1: PUSH1 0x01 000019f3: SWAP8 000019f4: POP 000019f5: JUMPDEST 000019f6: PUSH2 0x1a1b 000019f9: JUMP 000019fa: JUMPDEST 000019fb: PUSH20 0x77eb9084ce8168901bcb11f14f02a7aab36fcd0c 00001a10: CALLER 00001a11: EQ 00001a12: ISZERO 00001a13: PUSH2 0x1a1b 00001a16: JUMPI 00001a17: PUSH1 0x01 00001a19: SWAP8 00001a1a: POP 00001a1b: JUMPDEST 00001a1c: POP 00001a1d: JUMPDEST 00001a1e: POP 00001a1f: JUMPDEST 00001a20: POP 00001a21: JUMPDEST 00001a22: POP 00001a23: JUMPDEST 00001a24: POP 00001a25: JUMPDEST 00001a26: POP 00001a27: PUSH2 0x29ed 00001a2a: JUMP 00001a2b: JUMPDEST 00001a2c: PUSH20 0xbd1876611b9ee9927d2c892479bff5b31e9e96d8 00001a41: CALLER 00001a42: LT 00001a43: PUSH1 0x01 00001a45: DUP2 00001a46: EQ 00001a47: PUSH2 0x1a55 00001a4a: JUMPI 00001a4b: DUP1 00001a4c: ISZERO 00001a4d: PUSH2 0x2222 00001a50: JUMPI 00001a51: PUSH2 0x29eb 00001a54: JUMP 00001a55: JUMPDEST 00001a56: PUSH20 0x9da9e152ee8d6c6d504cb392f22039bb5205655f 00001a6b: CALLER 00001a6c: LT 00001a6d: PUSH1 0x01 00001a6f: DUP2 00001a70: EQ 00001a71: PUSH2 0x1a7f 00001a74: JUMPI 00001a75: DUP1 00001a76: ISZERO 00001a77: PUSH2 0x1e27 00001a7a: JUMPI 00001a7b: PUSH2 0x221c 00001a7e: JUMP 00001a7f: JUMPDEST 00001a80: PUSH20 0x8e2400a8822fe2da5a8c52b7f7b412acb49813c8 00001a95: CALLER 00001a96: LT 00001a97: PUSH1 0x01 00001a99: DUP2 00001a9a: EQ 00001a9b: PUSH2 0x1aa9 00001a9e: JUMPI 00001a9f: DUP1 00001aa0: ISZERO 00001aa1: PUSH2 0x1c67 00001aa4: JUMPI 00001aa5: PUSH2 0x1e21 00001aa8: JUMP 00001aa9: JUMPDEST 00001aaa: PUSH20 0x81ca1f172891be4573f88745eac074f7fea90d42 00001abf: CALLER 00001ac0: LT 00001ac1: PUSH1 0x01 00001ac3: DUP2 00001ac4: EQ 00001ac5: PUSH2 0x1ad3 00001ac8: JUMPI 00001ac9: DUP1 00001aca: ISZERO 00001acb: PUSH2 0x1b9c 00001ace: JUMPI 00001acf: PUSH2 0x1c61 00001ad2: JUMP 00001ad3: JUMPDEST 00001ad4: PUSH20 0x7f63e88c8a1c65d1a25ac02c8d37645b96f691b2 00001ae9: CALLER 00001aea: LT 00001aeb: PUSH1 0x01 00001aed: DUP2 00001aee: EQ 00001aef: PUSH2 0x1afd 00001af2: JUMPI 00001af3: DUP1 00001af4: ISZERO 00001af5: PUSH2 0x1b23 00001af8: JUMPI 00001af9: PUSH2 0x1b96 00001afc: JUMP 00001afd: JUMPDEST 00001afe: PUSH20 0x79071d243055e6d3bf9dbea842dda69905fa636f 00001b13: CALLER 00001b14: EQ 00001b15: ISZERO 00001b16: PUSH2 0x1b1e 00001b19: JUMPI 00001b1a: PUSH1 0x01 00001b1c: SWAP7 00001b1d: POP 00001b1e: JUMPDEST 00001b1f: PUSH2 0x1b96 00001b22: JUMP 00001b23: JUMPDEST 00001b24: PUSH20 0x804abde86c3ecc4eb738c452a4cf129e151c3014 00001b39: CALLER 00001b3a: LT 00001b3b: PUSH1 0x01 00001b3d: DUP2 00001b3e: EQ 00001b3f: PUSH2 0x1b4d 00001b42: JUMPI 00001b43: DUP1 00001b44: ISZERO 00001b45: PUSH2 0x1b73 00001b48: JUMPI 00001b49: PUSH2 0x1b94 00001b4c: JUMP 00001b4d: JUMPDEST 00001b4e: PUSH20 0x7f63e88c8a1c65d1a25ac02c8d37645b96f691b2 00001b63: CALLER 00001b64: EQ 00001b65: ISZERO 00001b66: PUSH2 0x1b6e 00001b69: JUMPI 00001b6a: PUSH1 0x01 00001b6c: SWAP8 00001b6d: POP 00001b6e: JUMPDEST 00001b6f: PUSH2 0x1b94 00001b72: JUMP 00001b73: JUMPDEST 00001b74: PUSH20 0x804abde86c3ecc4eb738c452a4cf129e151c3014 00001b89: CALLER 00001b8a: EQ 00001b8b: ISZERO 00001b8c: PUSH2 0x1b94 00001b8f: JUMPI 00001b90: PUSH1 0x01 00001b92: SWAP8 00001b93: POP 00001b94: JUMPDEST 00001b95: POP 00001b96: JUMPDEST 00001b97: POP 00001b98: PUSH2 0x1c61 00001b9b: JUMP 00001b9c: JUMPDEST 00001b9d: PUSH20 0x870b81cebf36c6ee34f98f04ae6f8ed92dcf5153 00001bb2: CALLER 00001bb3: LT 00001bb4: PUSH1 0x01 00001bb6: DUP2 00001bb7: EQ 00001bb8: PUSH2 0x1bc6 00001bbb: JUMPI 00001bbc: DUP1 00001bbd: ISZERO 00001bbe: PUSH2 0x1bec 00001bc1: JUMPI 00001bc2: PUSH2 0x1c5f 00001bc5: JUMP 00001bc6: JUMPDEST 00001bc7: PUSH20 0x81ca1f172891be4573f88745eac074f7fea90d42 00001bdc: CALLER 00001bdd: EQ 00001bde: ISZERO 00001bdf: PUSH2 0x1be7 00001be2: JUMPI 00001be3: PUSH1 0x01 00001be5: SWAP7 00001be6: POP 00001be7: JUMPDEST 00001be8: PUSH2 0x1c5f 00001beb: JUMP 00001bec: JUMPDEST 00001bed: PUSH20 0x8d6e15cb3442ff24f2b8538c203b829f3d879705 00001c02: CALLER 00001c03: LT 00001c04: PUSH1 0x01 00001c06: DUP2 00001c07: EQ 00001c08: PUSH2 0x1c16 00001c0b: JUMPI 00001c0c: DUP1 00001c0d: ISZERO 00001c0e: PUSH2 0x1c3c 00001c11: JUMPI 00001c12: PUSH2 0x1c5d 00001c15: JUMP 00001c16: JUMPDEST 00001c17: PUSH20 0x870b81cebf36c6ee34f98f04ae6f8ed92dcf5153 00001c2c: CALLER 00001c2d: EQ 00001c2e: ISZERO 00001c2f: PUSH2 0x1c37 00001c32: JUMPI 00001c33: PUSH1 0x01 00001c35: SWAP8 00001c36: POP 00001c37: JUMPDEST 00001c38: PUSH2 0x1c5d 00001c3b: JUMP 00001c3c: JUMPDEST 00001c3d: PUSH20 0x8d6e15cb3442ff24f2b8538c203b829f3d879705 00001c52: CALLER 00001c53: EQ 00001c54: ISZERO 00001c55: PUSH2 0x1c5d 00001c58: JUMPI 00001c59: PUSH1 0x01 00001c5b: SWAP8 00001c5c: POP 00001c5d: JUMPDEST 00001c5e: POP 00001c5f: JUMPDEST 00001c60: POP 00001c61: JUMPDEST 00001c62: POP 00001c63: PUSH2 0x1e21 00001c66: JUMP 00001c67: JUMPDEST 00001c68: PUSH20 0x93f635372008b7c5d770aaa6ff313454c8dc498c 00001c7d: CALLER 00001c7e: LT 00001c7f: PUSH1 0x01 00001c81: DUP2 00001c82: EQ 00001c83: PUSH2 0x1c91 00001c86: JUMPI 00001c87: DUP1 00001c88: ISZERO 00001c89: PUSH2 0x1d5a 00001c8c: JUMPI 00001c8d: PUSH2 0x1e1f 00001c90: JUMP 00001c91: JUMPDEST 00001c92: PUSH20 0x922b2b25059355fcea3bece46636e7bb234fed36 00001ca7: CALLER 00001ca8: LT 00001ca9: PUSH1 0x01 00001cab: DUP2 00001cac: EQ 00001cad: PUSH2 0x1cbb 00001cb0: JUMPI 00001cb1: DUP1 00001cb2: ISZERO 00001cb3: PUSH2 0x1ce1 00001cb6: JUMPI 00001cb7: PUSH2 0x1d54 00001cba: JUMP 00001cbb: JUMPDEST 00001cbc: PUSH20 0x8e2400a8822fe2da5a8c52b7f7b412acb49813c8 00001cd1: CALLER 00001cd2: EQ 00001cd3: ISZERO 00001cd4: PUSH2 0x1cdc 00001cd7: JUMPI 00001cd8: PUSH1 0x01 00001cda: SWAP7 00001cdb: POP 00001cdc: JUMPDEST 00001cdd: PUSH2 0x1d54 00001ce0: JUMP 00001ce1: JUMPDEST 00001ce2: PUSH20 0x92d6c5cb3b6148fde44d0d7295dbecb8dae40ef2 00001cf7: CALLER 00001cf8: LT 00001cf9: PUSH1 0x01 00001cfb: DUP2 00001cfc: EQ 00001cfd: PUSH2 0x1d0b 00001d00: JUMPI 00001d01: DUP1 00001d02: ISZERO 00001d03: PUSH2 0x1d31 00001d06: JUMPI 00001d07: PUSH2 0x1d52 00001d0a: JUMP 00001d0b: JUMPDEST 00001d0c: PUSH20 0x922b2b25059355fcea3bece46636e7bb234fed36 00001d21: CALLER 00001d22: EQ 00001d23: ISZERO 00001d24: PUSH2 0x1d2c 00001d27: JUMPI 00001d28: PUSH1 0x01 00001d2a: SWAP8 00001d2b: POP 00001d2c: JUMPDEST 00001d2d: PUSH2 0x1d52 00001d30: JUMP 00001d31: JUMPDEST 00001d32: PUSH20 0x92d6c5cb3b6148fde44d0d7295dbecb8dae40ef2 00001d47: CALLER 00001d48: EQ 00001d49: ISZERO 00001d4a: PUSH2 0x1d52 00001d4d: JUMPI 00001d4e: PUSH1 0x01 00001d50: SWAP8 00001d51: POP 00001d52: JUMPDEST 00001d53: POP 00001d54: JUMPDEST 00001d55: POP 00001d56: PUSH2 0x1e1f 00001d59: JUMP 00001d5a: JUMPDEST 00001d5b: PUSH20 0x9a4b736749bdeb4b481fa57198ba4caeb3b07723 00001d70: CALLER 00001d71: LT 00001d72: PUSH1 0x01 00001d74: DUP2 00001d75: EQ 00001d76: PUSH2 0x1d84 00001d79: JUMPI 00001d7a: DUP1 00001d7b: ISZERO 00001d7c: PUSH2 0x1daa 00001d7f: JUMPI 00001d80: PUSH2 0x1e1d 00001d83: JUMP 00001d84: JUMPDEST 00001d85: PUSH20 0x93f635372008b7c5d770aaa6ff313454c8dc498c 00001d9a: CALLER 00001d9b: EQ 00001d9c: ISZERO 00001d9d: PUSH2 0x1da5 00001da0: JUMPI 00001da1: PUSH1 0x01 00001da3: SWAP7 00001da4: POP 00001da5: JUMPDEST 00001da6: PUSH2 0x1e1d 00001da9: JUMP 00001daa: JUMPDEST 00001dab: PUSH20 0x9aab3f81604c683a1a0d14019fbfe15bef7aa1ee 00001dc0: CALLER 00001dc1: LT 00001dc2: PUSH1 0x01 00001dc4: DUP2 00001dc5: EQ 00001dc6: PUSH2 0x1dd4 00001dc9: JUMPI 00001dca: DUP1 00001dcb: ISZERO 00001dcc: PUSH2 0x1dfa 00001dcf: JUMPI 00001dd0: PUSH2 0x1e1b 00001dd3: JUMP 00001dd4: JUMPDEST 00001dd5: PUSH20 0x9a4b736749bdeb4b481fa57198ba4caeb3b07723 00001dea: CALLER 00001deb: EQ 00001dec: ISZERO 00001ded: PUSH2 0x1df5 00001df0: JUMPI 00001df1: PUSH1 0x01 00001df3: SWAP8 00001df4: POP 00001df5: JUMPDEST 00001df6: PUSH2 0x1e1b 00001df9: JUMP 00001dfa: JUMPDEST 00001dfb: PUSH20 0x9aab3f81604c683a1a0d14019fbfe15bef7aa1ee 00001e10: CALLER 00001e11: EQ 00001e12: ISZERO 00001e13: PUSH2 0x1e1b 00001e16: JUMPI 00001e17: PUSH1 0x01 00001e19: SWAP8 00001e1a: POP 00001e1b: JUMPDEST 00001e1c: POP 00001e1d: JUMPDEST 00001e1e: POP 00001e1f: JUMPDEST 00001e20: POP 00001e21: JUMPDEST 00001e22: POP 00001e23: PUSH2 0x221c 00001e26: JUMP 00001e27: JUMPDEST 00001e28: PUSH20 0xac221503406190103b8cb7d9393ae66d9c9af6a3 00001e3d: CALLER 00001e3e: LT 00001e3f: PUSH1 0x01 00001e41: DUP2 00001e42: EQ 00001e43: PUSH2 0x1e51 00001e46: JUMPI 00001e47: DUP1 00001e48: ISZERO 00001e49: PUSH2 0x200f 00001e4c: JUMPI 00001e4d: PUSH2 0x221a 00001e50: JUMP 00001e51: JUMPDEST 00001e52: PUSH20 0xa49beb93fdf20bc38c61d516804d87f2632fd41d 00001e67: CALLER 00001e68: LT 00001e69: PUSH1 0x01 00001e6b: DUP2 00001e6c: EQ 00001e6d: PUSH2 0x1e7b 00001e70: JUMPI 00001e71: DUP1 00001e72: ISZERO 00001e73: PUSH2 0x1f44 00001e76: JUMPI 00001e77: PUSH2 0x2009 00001e7a: JUMP 00001e7b: JUMPDEST 00001e7c: PUSH20 0xa2927844dc549ca7446e5ed3e007751716fcd3ee 00001e91: CALLER 00001e92: LT 00001e93: PUSH1 0x01 00001e95: DUP2 00001e96: EQ 00001e97: PUSH2 0x1ea5 00001e9a: JUMPI 00001e9b: DUP1 00001e9c: ISZERO 00001e9d: PUSH2 0x1ecb 00001ea0: JUMPI 00001ea1: PUSH2 0x1f3e 00001ea4: JUMP 00001ea5: JUMPDEST 00001ea6: PUSH20 0x9da9e152ee8d6c6d504cb392f22039bb5205655f 00001ebb: CALLER 00001ebc: EQ 00001ebd: ISZERO 00001ebe: PUSH2 0x1ec6 00001ec1: JUMPI 00001ec2: PUSH1 0x01 00001ec4: SWAP7 00001ec5: POP 00001ec6: JUMPDEST 00001ec7: PUSH2 0x1f3e 00001eca: JUMP 00001ecb: JUMPDEST 00001ecc: PUSH20 0xa483254773cfe94d502557099945caf90725473f 00001ee1: CALLER 00001ee2: LT 00001ee3: PUSH1 0x01 00001ee5: DUP2 00001ee6: EQ 00001ee7: PUSH2 0x1ef5 00001eea: JUMPI 00001eeb: DUP1 00001eec: ISZERO 00001eed: PUSH2 0x1f1b 00001ef0: JUMPI 00001ef1: PUSH2 0x1f3c 00001ef4: JUMP 00001ef5: JUMPDEST 00001ef6: PUSH20 0xa2927844dc549ca7446e5ed3e007751716fcd3ee 00001f0b: CALLER 00001f0c: EQ 00001f0d: ISZERO 00001f0e: PUSH2 0x1f16 00001f11: JUMPI 00001f12: PUSH1 0x01 00001f14: SWAP8 00001f15: POP 00001f16: JUMPDEST 00001f17: PUSH2 0x1f3c 00001f1a: JUMP 00001f1b: JUMPDEST 00001f1c: PUSH20 0xa483254773cfe94d502557099945caf90725473f 00001f31: CALLER 00001f32: EQ 00001f33: ISZERO 00001f34: PUSH2 0x1f3c 00001f37: JUMPI 00001f38: PUSH1 0x01 00001f3a: SWAP8 00001f3b: POP 00001f3c: JUMPDEST 00001f3d: POP 00001f3e: JUMPDEST 00001f3f: POP 00001f40: PUSH2 0x2009 00001f43: JUMP 00001f44: JUMPDEST 00001f45: PUSH20 0xa5a13f62ce1113838e0d9b4559b8caf5f76463c0 00001f5a: CALLER 00001f5b: LT 00001f5c: PUSH1 0x01 00001f5e: DUP2 00001f5f: EQ 00001f60: PUSH2 0x1f6e 00001f63: JUMPI 00001f64: DUP1 00001f65: ISZERO 00001f66: PUSH2 0x1f94 00001f69: JUMPI 00001f6a: PUSH2 0x2007 00001f6d: JUMP 00001f6e: JUMPDEST 00001f6f: PUSH20 0xa49beb93fdf20bc38c61d516804d87f2632fd41d 00001f84: CALLER 00001f85: EQ 00001f86: ISZERO 00001f87: PUSH2 0x1f8f 00001f8a: JUMPI 00001f8b: PUSH1 0x01 00001f8d: SWAP7 00001f8e: POP 00001f8f: JUMPDEST 00001f90: PUSH2 0x2007 00001f93: JUMP 00001f94: JUMPDEST 00001f95: PUSH20 0xa9f8db9d7791e40d34ee431677715ecccc5916c7 00001faa: CALLER 00001fab: LT 00001fac: PUSH1 0x01 00001fae: DUP2 00001faf: EQ 00001fb0: PUSH2 0x1fbe 00001fb3: JUMPI 00001fb4: DUP1 00001fb5: ISZERO 00001fb6: PUSH2 0x1fe4 00001fb9: JUMPI 00001fba: PUSH2 0x2005 00001fbd: JUMP 00001fbe: JUMPDEST 00001fbf: PUSH20 0xa5a13f62ce1113838e0d9b4559b8caf5f76463c0 00001fd4: CALLER 00001fd5: EQ 00001fd6: ISZERO 00001fd7: PUSH2 0x1fdf 00001fda: JUMPI 00001fdb: PUSH1 0x01 00001fdd: SWAP8 00001fde: POP 00001fdf: JUMPDEST 00001fe0: PUSH2 0x2005 00001fe3: JUMP 00001fe4: JUMPDEST 00001fe5: PUSH20 0xa9f8db9d7791e40d34ee431677715ecccc5916c7 00001ffa: CALLER 00001ffb: EQ 00001ffc: ISZERO 00001ffd: PUSH2 0x2005 00002000: JUMPI 00002001: PUSH1 0x01 00002003: SWAP8 00002004: POP 00002005: JUMPDEST 00002006: POP 00002007: JUMPDEST 00002008: POP 00002009: JUMPDEST 0000200a: POP 0000200b: PUSH2 0x221a 0000200e: JUMP 0000200f: JUMPDEST 00002010: PUSH20 0xb59171a8d1cff2647330096a28d73223e7b27393 00002025: CALLER 00002026: LT 00002027: PUSH1 0x01 00002029: DUP2 0000202a: EQ 0000202b: PUSH2 0x2039 0000202e: JUMPI 0000202f: DUP1 00002030: ISZERO 00002031: PUSH2 0x2102 00002034: JUMPI 00002035: PUSH2 0x2218 00002038: JUMP 00002039: JUMPDEST 0000203a: PUSH20 0xad259a73b6b0b04fec294996064adf7a719d26e8 0000204f: CALLER 00002050: LT 00002051: PUSH1 0x01 00002053: DUP2 00002054: EQ 00002055: PUSH2 0x2063 00002058: JUMPI 00002059: DUP1 0000205a: ISZERO 0000205b: PUSH2 0x2089 0000205e: JUMPI 0000205f: PUSH2 0x20fc 00002062: JUMP 00002063: JUMPDEST 00002064: PUSH20 0xac221503406190103b8cb7d9393ae66d9c9af6a3 00002079: CALLER 0000207a: EQ 0000207b: ISZERO 0000207c: PUSH2 0x2084 0000207f: JUMPI 00002080: PUSH1 0x01 00002082: SWAP7 00002083: POP 00002084: JUMPDEST 00002085: PUSH2 0x20fc 00002088: JUMP 00002089: JUMPDEST 0000208a: PUSH20 0xafdc6373e653fcbd4583f41e2a5742cfcb5effc7 0000209f: CALLER 000020a0: LT 000020a1: PUSH1 0x01 000020a3: DUP2 000020a4: EQ 000020a5: PUSH2 0x20b3 000020a8: JUMPI 000020a9: DUP1 000020aa: ISZERO 000020ab: PUSH2 0x20d9 000020ae: JUMPI 000020af: PUSH2 0x20fa 000020b2: JUMP 000020b3: JUMPDEST 000020b4: PUSH20 0xad259a73b6b0b04fec294996064adf7a719d26e8 000020c9: CALLER 000020ca: EQ 000020cb: ISZERO 000020cc: PUSH2 0x20d4 000020cf: JUMPI 000020d0: PUSH1 0x01 000020d2: SWAP8 000020d3: POP 000020d4: JUMPDEST 000020d5: PUSH2 0x20fa 000020d8: JUMP 000020d9: JUMPDEST 000020da: PUSH20 0xafdc6373e653fcbd4583f41e2a5742cfcb5effc7 000020ef: CALLER 000020f0: EQ 000020f1: ISZERO 000020f2: PUSH2 0x20fa 000020f5: JUMPI 000020f6: PUSH1 0x01 000020f8: SWAP8 000020f9: POP 000020fa: JUMPDEST 000020fb: POP 000020fc: JUMPDEST 000020fd: POP 000020fe: PUSH2 0x2218 00002101: JUMP 00002102: JUMPDEST 00002103: PUSH20 0xba4ff5f9d6508000b7fd0035bd616aaec070384f 00002118: CALLER 00002119: LT 0000211a: PUSH1 0x01 0000211c: DUP2 0000211d: EQ 0000211e: PUSH2 0x212c 00002121: JUMPI 00002122: DUP1 00002123: ISZERO 00002124: PUSH2 0x21a3 00002127: JUMPI 00002128: PUSH2 0x2216 0000212b: JUMP 0000212c: JUMPDEST 0000212d: PUSH20 0xb9b4bb195f5dbfbd6f88643ec694996ad30f83b2 00002142: CALLER 00002143: LT 00002144: PUSH1 0x01 00002146: DUP2 00002147: EQ 00002148: PUSH2 0x2156 0000214b: JUMPI 0000214c: DUP1 0000214d: ISZERO 0000214e: PUSH2 0x217c 00002151: JUMPI 00002152: PUSH2 0x219d 00002155: JUMP 00002156: JUMPDEST 00002157: PUSH20 0xb59171a8d1cff2647330096a28d73223e7b27393 0000216c: CALLER 0000216d: EQ 0000216e: ISZERO 0000216f: PUSH2 0x2177 00002172: JUMPI 00002173: PUSH1 0x01 00002175: SWAP8 00002176: POP 00002177: JUMPDEST 00002178: PUSH2 0x219d 0000217b: JUMP 0000217c: JUMPDEST 0000217d: PUSH20 0xb9b4bb195f5dbfbd6f88643ec694996ad30f83b2 00002192: CALLER 00002193: EQ 00002194: ISZERO 00002195: PUSH2 0x219d 00002198: JUMPI 00002199: PUSH1 0x01 0000219b: SWAP8 0000219c: POP 0000219d: JUMPDEST 0000219e: POP 0000219f: PUSH2 0x2216 000021a2: JUMP 000021a3: JUMPDEST 000021a4: PUSH20 0xbbad96336943a36e3e292d973b3382dd0ba4d1ef 000021b9: CALLER 000021ba: LT 000021bb: PUSH1 0x01 000021bd: DUP2 000021be: EQ 000021bf: PUSH2 0x21cd 000021c2: JUMPI 000021c3: DUP1 000021c4: ISZERO 000021c5: PUSH2 0x21f3 000021c8: JUMPI 000021c9: PUSH2 0x2214 000021cc: JUMP 000021cd: JUMPDEST 000021ce: PUSH20 0xba4ff5f9d6508000b7fd0035bd616aaec070384f 000021e3: CALLER 000021e4: EQ 000021e5: ISZERO 000021e6: PUSH2 0x21ee 000021e9: JUMPI 000021ea: PUSH1 0x01 000021ec: SWAP8 000021ed: POP 000021ee: JUMPDEST 000021ef: PUSH2 0x2214 000021f2: JUMP 000021f3: JUMPDEST 000021f4: PUSH20 0xbbad96336943a36e3e292d973b3382dd0ba4d1ef 00002209: CALLER 0000220a: EQ 0000220b: ISZERO 0000220c: PUSH2 0x2214 0000220f: JUMPI 00002210: PUSH1 0x01 00002212: SWAP8 00002213: POP 00002214: JUMPDEST 00002215: POP 00002216: JUMPDEST 00002217: POP 00002218: JUMPDEST 00002219: POP 0000221a: JUMPDEST 0000221b: POP 0000221c: JUMPDEST 0000221d: POP 0000221e: PUSH2 0x29eb 00002221: JUMP 00002222: JUMPDEST 00002223: PUSH20 0xe58e5ed4544f58831a84c18178b911a5957ada08 00002238: CALLER 00002239: LT 0000223a: PUSH1 0x01 0000223c: DUP2 0000223d: EQ 0000223e: PUSH2 0x224c 00002241: JUMPI 00002242: DUP1 00002243: ISZERO 00002244: PUSH2 0x25f4 00002247: JUMPI 00002248: PUSH2 0x29e9 0000224b: JUMP 0000224c: JUMPDEST 0000224d: PUSH20 0xd1b076dd3b2ba2514cf9b02a5a425e1ec2534c89 00002262: CALLER 00002263: LT 00002264: PUSH1 0x01 00002266: DUP2 00002267: EQ 00002268: PUSH2 0x2276 0000226b: JUMPI 0000226c: DUP1 0000226d: ISZERO 0000226e: PUSH2 0x2434 00002271: JUMPI 00002272: PUSH2 0x25ee 00002275: JUMP 00002276: JUMPDEST 00002277: PUSH20 0xc4d219b78ec5d105253e016d7401ce005ed7346d 0000228c: CALLER 0000228d: LT 0000228e: PUSH1 0x01 00002290: DUP2 00002291: EQ 00002292: PUSH2 0x22a0 00002295: JUMPI 00002296: DUP1 00002297: ISZERO 00002298: PUSH2 0x2369 0000229b: JUMPI 0000229c: PUSH2 0x242e 0000229f: JUMP 000022a0: JUMPDEST 000022a1: PUSH20 0xc140485899c3e0c739dd5e0f480317695ae274af 000022b6: CALLER 000022b7: LT 000022b8: PUSH1 0x01 000022ba: DUP2 000022bb: EQ 000022bc: PUSH2 0x22ca 000022bf: JUMPI 000022c0: DUP1 000022c1: ISZERO 000022c2: PUSH2 0x22f0 000022c5: JUMPI 000022c6: PUSH2 0x2363 000022c9: JUMP 000022ca: JUMPDEST 000022cb: PUSH20 0xbd1876611b9ee9927d2c892479bff5b31e9e96d8 000022e0: CALLER 000022e1: EQ 000022e2: ISZERO 000022e3: PUSH2 0x22eb 000022e6: JUMPI 000022e7: PUSH1 0x01 000022e9: SWAP7 000022ea: POP 000022eb: JUMPDEST 000022ec: PUSH2 0x2363 000022ef: JUMP 000022f0: JUMPDEST 000022f1: PUSH20 0xc4a675c5041e9687768ce154554d6cddd2540712 00002306: CALLER 00002307: LT 00002308: PUSH1 0x01 0000230a: DUP2 0000230b: EQ 0000230c: PUSH2 0x231a 0000230f: JUMPI 00002310: DUP1 00002311: ISZERO 00002312: PUSH2 0x2340 00002315: JUMPI 00002316: PUSH2 0x2361 00002319: JUMP 0000231a: JUMPDEST 0000231b: PUSH20 0xc140485899c3e0c739dd5e0f480317695ae274af 00002330: CALLER 00002331: EQ 00002332: ISZERO 00002333: PUSH2 0x233b 00002336: JUMPI 00002337: PUSH1 0x01 00002339: SWAP8 0000233a: POP 0000233b: JUMPDEST 0000233c: PUSH2 0x2361 0000233f: JUMP 00002340: JUMPDEST 00002341: PUSH20 0xc4a675c5041e9687768ce154554d6cddd2540712 00002356: CALLER 00002357: EQ 00002358: ISZERO 00002359: PUSH2 0x2361 0000235c: JUMPI 0000235d: PUSH1 0x01 0000235f: SWAP8 00002360: POP 00002361: JUMPDEST 00002362: POP 00002363: JUMPDEST 00002364: POP 00002365: PUSH2 0x242e 00002368: JUMP 00002369: JUMPDEST 0000236a: PUSH20 0xcc5ce245a296667aca1b5855f1a05ca950017e68 0000237f: CALLER 00002380: LT 00002381: PUSH1 0x01 00002383: DUP2 00002384: EQ 00002385: PUSH2 0x2393 00002388: JUMPI 00002389: DUP1 0000238a: ISZERO 0000238b: PUSH2 0x23b9 0000238e: JUMPI 0000238f: PUSH2 0x242c 00002392: JUMP 00002393: JUMPDEST 00002394: PUSH20 0xc4d219b78ec5d105253e016d7401ce005ed7346d 000023a9: CALLER 000023aa: EQ 000023ab: ISZERO 000023ac: PUSH2 0x23b4 000023af: JUMPI 000023b0: PUSH1 0x01 000023b2: SWAP7 000023b3: POP 000023b4: JUMPDEST 000023b5: PUSH2 0x242c 000023b8: JUMP 000023b9: JUMPDEST 000023ba: PUSH20 0xcf351e3b6fc104d9906897b16f2043ed593bea25 000023cf: CALLER 000023d0: LT 000023d1: PUSH1 0x01 000023d3: DUP2 000023d4: EQ 000023d5: PUSH2 0x23e3 000023d8: JUMPI 000023d9: DUP1 000023da: ISZERO 000023db: PUSH2 0x2409 000023de: JUMPI 000023df: PUSH2 0x242a 000023e2: JUMP 000023e3: JUMPDEST 000023e4: PUSH20 0xcc5ce245a296667aca1b5855f1a05ca950017e68 000023f9: CALLER 000023fa: EQ 000023fb: ISZERO 000023fc: PUSH2 0x2404 000023ff: JUMPI 00002400: PUSH1 0x01 00002402: SWAP8 00002403: POP 00002404: JUMPDEST 00002405: PUSH2 0x242a 00002408: JUMP 00002409: JUMPDEST 0000240a: PUSH20 0xcf351e3b6fc104d9906897b16f2043ed593bea25 0000241f: CALLER 00002420: EQ 00002421: ISZERO 00002422: PUSH2 0x242a 00002425: JUMPI 00002426: PUSH1 0x01 00002428: SWAP8 00002429: POP 0000242a: JUMPDEST 0000242b: POP 0000242c: JUMPDEST 0000242d: POP 0000242e: JUMPDEST 0000242f: POP 00002430: PUSH2 0x25ee 00002433: JUMP 00002434: JUMPDEST 00002435: PUSH20 0xd68fe83d3834bf35c6e1aa8a9d81c56249a61881 0000244a: CALLER 0000244b: LT 0000244c: PUSH1 0x01 0000244e: DUP2 0000244f: EQ 00002450: PUSH2 0x245e 00002453: JUMPI 00002454: DUP1 00002455: ISZERO 00002456: PUSH2 0x2527 00002459: JUMPI 0000245a: PUSH2 0x25ec 0000245d: JUMP 0000245e: JUMPDEST 0000245f: PUSH20 0xd295879063be7a6c49f7327afaa831a4f3f64882 00002474: CALLER 00002475: LT 00002476: PUSH1 0x01 00002478: DUP2 00002479: EQ 0000247a: PUSH2 0x2488 0000247d: JUMPI 0000247e: DUP1 0000247f: ISZERO 00002480: PUSH2 0x24ae 00002483: JUMPI 00002484: PUSH2 0x2521 00002487: JUMP 00002488: JUMPDEST 00002489: PUSH20 0xd1b076dd3b2ba2514cf9b02a5a425e1ec2534c89 0000249e: CALLER 0000249f: EQ 000024a0: ISZERO 000024a1: PUSH2 0x24a9 000024a4: JUMPI 000024a5: PUSH1 0x01 000024a7: SWAP7 000024a8: POP 000024a9: JUMPDEST 000024aa: PUSH2 0x2521 000024ad: JUMP 000024ae: JUMPDEST 000024af: PUSH20 0xd603499a2b0f8f5c5b344c361060d1acd89d1f03 000024c4: CALLER 000024c5: LT 000024c6: PUSH1 0x01 000024c8: DUP2 000024c9: EQ 000024ca: PUSH2 0x24d8 000024cd: JUMPI 000024ce: DUP1 000024cf: ISZERO 000024d0: PUSH2 0x24fe 000024d3: JUMPI 000024d4: PUSH2 0x251f 000024d7: JUMP 000024d8: JUMPDEST 000024d9: PUSH20 0xd295879063be7a6c49f7327afaa831a4f3f64882 000024ee: CALLER 000024ef: EQ 000024f0: ISZERO 000024f1: PUSH2 0x24f9 000024f4: JUMPI 000024f5: PUSH1 0x01 000024f7: SWAP8 000024f8: POP 000024f9: JUMPDEST 000024fa: PUSH2 0x251f 000024fd: JUMP 000024fe: JUMPDEST 000024ff: PUSH20 0xd603499a2b0f8f5c5b344c361060d1acd89d1f03 00002514: CALLER 00002515: EQ 00002516: ISZERO 00002517: PUSH2 0x251f 0000251a: JUMPI 0000251b: PUSH1 0x01 0000251d: SWAP8 0000251e: POP 0000251f: JUMPDEST 00002520: POP 00002521: JUMPDEST 00002522: POP 00002523: PUSH2 0x25ec 00002526: JUMP 00002527: JUMPDEST 00002528: PUSH20 0xd6f9f050049d34782e934e40b946be2f70184d89 0000253d: CALLER 0000253e: LT 0000253f: PUSH1 0x01 00002541: DUP2 00002542: EQ 00002543: PUSH2 0x2551 00002546: JUMPI 00002547: DUP1 00002548: ISZERO 00002549: PUSH2 0x2577 0000254c: JUMPI 0000254d: PUSH2 0x25ea 00002550: JUMP 00002551: JUMPDEST 00002552: PUSH20 0xd68fe83d3834bf35c6e1aa8a9d81c56249a61881 00002567: CALLER 00002568: EQ 00002569: ISZERO 0000256a: PUSH2 0x2572 0000256d: JUMPI 0000256e: PUSH1 0x01 00002570: SWAP7 00002571: POP 00002572: JUMPDEST 00002573: PUSH2 0x25ea 00002576: JUMP 00002577: JUMPDEST 00002578: PUSH20 0xe43e0c27b0891e3ffdcf617d90c47be37d55ad68 0000258d: CALLER 0000258e: LT 0000258f: PUSH1 0x01 00002591: DUP2 00002592: EQ 00002593: PUSH2 0x25a1 00002596: JUMPI 00002597: DUP1 00002598: ISZERO 00002599: PUSH2 0x25c7 0000259c: JUMPI 0000259d: PUSH2 0x25e8 000025a0: JUMP 000025a1: JUMPDEST 000025a2: PUSH20 0xd6f9f050049d34782e934e40b946be2f70184d89 000025b7: CALLER 000025b8: EQ 000025b9: ISZERO 000025ba: PUSH2 0x25c2 000025bd: JUMPI 000025be: PUSH1 0x01 000025c0: SWAP8 000025c1: POP 000025c2: JUMPDEST 000025c3: PUSH2 0x25e8 000025c6: JUMP 000025c7: JUMPDEST 000025c8: PUSH20 0xe43e0c27b0891e3ffdcf617d90c47be37d55ad68 000025dd: CALLER 000025de: EQ 000025df: ISZERO 000025e0: PUSH2 0x25e8 000025e3: JUMPI 000025e4: PUSH1 0x01 000025e6: SWAP8 000025e7: POP 000025e8: JUMPDEST 000025e9: POP 000025ea: JUMPDEST 000025eb: POP 000025ec: JUMPDEST 000025ed: POP 000025ee: JUMPDEST 000025ef: POP 000025f0: PUSH2 0x29e9 000025f3: JUMP 000025f4: JUMPDEST 000025f5: PUSH20 0xf34804568a14aac794401bd401ba2101a084b244 0000260a: CALLER 0000260b: LT 0000260c: PUSH1 0x01 0000260e: DUP2 0000260f: EQ 00002610: PUSH2 0x261e 00002613: JUMPI 00002614: DUP1 00002615: ISZERO 00002616: PUSH2 0x27dc 00002619: JUMPI 0000261a: PUSH2 0x29e7 0000261d: JUMP 0000261e: JUMPDEST 0000261f: PUSH20 0xef491256a90611103395da600afe64bb062fd655 00002634: CALLER 00002635: LT 00002636: PUSH1 0x01 00002638: DUP2 00002639: EQ 0000263a: PUSH2 0x2648 0000263d: JUMPI 0000263e: DUP1 0000263f: ISZERO 00002640: PUSH2 0x2711 00002643: JUMPI 00002644: PUSH2 0x27d6 00002647: JUMP 00002648: JUMPDEST 00002649: PUSH20 0xe6c4e99725541992a34477849c93901a96bf7812 0000265e: CALLER 0000265f: LT 00002660: PUSH1 0x01 00002662: DUP2 00002663: EQ 00002664: PUSH2 0x2672 00002667: JUMPI 00002668: DUP1 00002669: ISZERO 0000266a: PUSH2 0x2698 0000266d: JUMPI 0000266e: PUSH2 0x270b 00002671: JUMP 00002672: JUMPDEST 00002673: PUSH20 0xe58e5ed4544f58831a84c18178b911a5957ada08 00002688: CALLER 00002689: EQ 0000268a: ISZERO 0000268b: PUSH2 0x2693 0000268e: JUMPI 0000268f: PUSH1 0x01 00002691: SWAP7 00002692: POP 00002693: JUMPDEST 00002694: PUSH2 0x270b 00002697: JUMP 00002698: JUMPDEST 00002699: PUSH20 0xeca2e2d894d19778939bd4dfc34d2a3c45e96456 000026ae: CALLER 000026af: LT 000026b0: PUSH1 0x01 000026b2: DUP2 000026b3: EQ 000026b4: PUSH2 0x26c2 000026b7: JUMPI 000026b8: DUP1 000026b9: ISZERO 000026ba: PUSH2 0x26e8 000026bd: JUMPI 000026be: PUSH2 0x2709 000026c1: JUMP 000026c2: JUMPDEST 000026c3: PUSH20 0xe6c4e99725541992a34477849c93901a96bf7812 000026d8: CALLER 000026d9: EQ 000026da: ISZERO 000026db: PUSH2 0x26e3 000026de: JUMPI 000026df: PUSH1 0x01 000026e1: SWAP8 000026e2: POP 000026e3: JUMPDEST 000026e4: PUSH2 0x2709 000026e7: JUMP 000026e8: JUMPDEST 000026e9: PUSH20 0xeca2e2d894d19778939bd4dfc34d2a3c45e96456 000026fe: CALLER 000026ff: EQ 00002700: ISZERO 00002701: PUSH2 0x2709 00002704: JUMPI 00002705: PUSH1 0x01 00002707: SWAP8 00002708: POP 00002709: JUMPDEST 0000270a: POP 0000270b: JUMPDEST 0000270c: POP 0000270d: PUSH2 0x27d6 00002710: JUMP 00002711: JUMPDEST 00002712: PUSH20 0xf0594c390e6dd5d4626d367d7fb2079b1d5cd67d 00002727: CALLER 00002728: LT 00002729: PUSH1 0x01 0000272b: DUP2 0000272c: EQ 0000272d: PUSH2 0x273b 00002730: JUMPI 00002731: DUP1 00002732: ISZERO 00002733: PUSH2 0x2761 00002736: JUMPI 00002737: PUSH2 0x27d4 0000273a: JUMP 0000273b: JUMPDEST 0000273c: PUSH20 0xef491256a90611103395da600afe64bb062fd655 00002751: CALLER 00002752: EQ 00002753: ISZERO 00002754: PUSH2 0x275c 00002757: JUMPI 00002758: PUSH1 0x01 0000275a: SWAP7 0000275b: POP 0000275c: JUMPDEST 0000275d: PUSH2 0x27d4 00002760: JUMP 00002761: JUMPDEST 00002762: PUSH20 0xf20dce1e8efd106c871c3872200234225a20b712 00002777: CALLER 00002778: LT 00002779: PUSH1 0x01 0000277b: DUP2 0000277c: EQ 0000277d: PUSH2 0x278b 00002780: JUMPI 00002781: DUP1 00002782: ISZERO 00002783: PUSH2 0x27b1 00002786: JUMPI 00002787: PUSH2 0x27d2 0000278a: JUMP 0000278b: JUMPDEST 0000278c: PUSH20 0xf0594c390e6dd5d4626d367d7fb2079b1d5cd67d 000027a1: CALLER 000027a2: EQ 000027a3: ISZERO 000027a4: PUSH2 0x27ac 000027a7: JUMPI 000027a8: PUSH1 0x01 000027aa: SWAP8 000027ab: POP 000027ac: JUMPDEST 000027ad: PUSH2 0x27d2 000027b0: JUMP 000027b1: JUMPDEST 000027b2: PUSH20 0xf20dce1e8efd106c871c3872200234225a20b712 000027c7: CALLER 000027c8: EQ 000027c9: ISZERO 000027ca: PUSH2 0x27d2 000027cd: JUMPI 000027ce: PUSH1 0x01 000027d0: SWAP8 000027d1: POP 000027d2: JUMPDEST 000027d3: POP 000027d4: JUMPDEST 000027d5: POP 000027d6: JUMPDEST 000027d7: POP 000027d8: PUSH2 0x29e7 000027db: JUMP 000027dc: JUMPDEST 000027dd: PUSH20 0xfa66759e7905297daf1e312751a85885fc265777 000027f2: CALLER 000027f3: LT 000027f4: PUSH1 0x01 000027f6: DUP2 000027f7: EQ 000027f8: PUSH2 0x2806 000027fb: JUMPI 000027fc: DUP1 000027fd: ISZERO 000027fe: PUSH2 0x28cf 00002801: JUMPI 00002802: PUSH2 0x29e5 00002805: JUMP 00002806: JUMPDEST 00002807: PUSH20 0xf621b27508b5bc902ff553d0323105c59351a634 0000281c: CALLER 0000281d: LT 0000281e: PUSH1 0x01 00002820: DUP2 00002821: EQ 00002822: PUSH2 0x2830 00002825: JUMPI 00002826: DUP1 00002827: ISZERO 00002828: PUSH2 0x2856 0000282b: JUMPI 0000282c: PUSH2 0x28c9 0000282f: JUMP 00002830: JUMPDEST 00002831: PUSH20 0xf34804568a14aac794401bd401ba2101a084b244 00002846: CALLER 00002847: EQ 00002848: ISZERO 00002849: PUSH2 0x2851 0000284c: JUMPI 0000284d: PUSH1 0x01 0000284f: SWAP7 00002850: POP 00002851: JUMPDEST 00002852: PUSH2 0x28c9 00002855: JUMP 00002856: JUMPDEST 00002857: PUSH20 0xfa1d4ce9f0423bf353795ba85b47c3bb46e9a69f 0000286c: CALLER 0000286d: LT 0000286e: PUSH1 0x01 00002870: DUP2 00002871: EQ 00002872: PUSH2 0x2880 00002875: JUMPI 00002876: DUP1 00002877: ISZERO 00002878: PUSH2 0x28a6 0000287b: JUMPI 0000287c: PUSH2 0x28c7 0000287f: JUMP 00002880: JUMPDEST 00002881: PUSH20 0xf621b27508b5bc902ff553d0323105c59351a634 00002896: CALLER 00002897: EQ 00002898: ISZERO 00002899: PUSH2 0x28a1 0000289c: JUMPI 0000289d: PUSH1 0x01 0000289f: SWAP8 000028a0: POP 000028a1: JUMPDEST 000028a2: PUSH2 0x28c7 000028a5: JUMP 000028a6: JUMPDEST 000028a7: PUSH20 0xfa1d4ce9f0423bf353795ba85b47c3bb46e9a69f 000028bc: CALLER 000028bd: EQ 000028be: ISZERO 000028bf: PUSH2 0x28c7 000028c2: JUMPI 000028c3: PUSH1 0x01 000028c5: SWAP8 000028c6: POP 000028c7: JUMPDEST 000028c8: POP 000028c9: JUMPDEST 000028ca: POP 000028cb: PUSH2 0x29e5 000028ce: JUMP 000028cf: JUMPDEST 000028d0: PUSH20 0xfc23b61db3a1dce083e82da5a2ccfd91a2211f7c 000028e5: CALLER 000028e6: LT 000028e7: PUSH1 0x01 000028e9: DUP2 000028ea: EQ 000028eb: PUSH2 0x28f9 000028ee: JUMPI 000028ef: DUP1 000028f0: ISZERO 000028f1: PUSH2 0x2970 000028f4: JUMPI 000028f5: PUSH2 0x29e3 000028f8: JUMP 000028f9: JUMPDEST 000028fa: PUSH20 0xfb9779477e5b4834bf2bc02dd29b97b344d0f700 0000290f: CALLER 00002910: LT 00002911: PUSH1 0x01 00002913: DUP2 00002914: EQ 00002915: PUSH2 0x2923 00002918: JUMPI 00002919: DUP1 0000291a: ISZERO 0000291b: PUSH2 0x2949 0000291e: JUMPI 0000291f: PUSH2 0x296a 00002922: JUMP 00002923: JUMPDEST 00002924: PUSH20 0xfa66759e7905297daf1e312751a85885fc265777 00002939: CALLER 0000293a: EQ 0000293b: ISZERO 0000293c: PUSH2 0x2944 0000293f: JUMPI 00002940: PUSH1 0x01 00002942: SWAP8 00002943: POP 00002944: JUMPDEST 00002945: PUSH2 0x296a 00002948: JUMP 00002949: JUMPDEST 0000294a: PUSH20 0xfb9779477e5b4834bf2bc02dd29b97b344d0f700 0000295f: CALLER 00002960: EQ 00002961: ISZERO 00002962: PUSH2 0x296a 00002965: JUMPI 00002966: PUSH1 0x01 00002968: SWAP8 00002969: POP 0000296a: JUMPDEST 0000296b: POP 0000296c: PUSH2 0x29e3 0000296f: JUMP 00002970: JUMPDEST 00002971: PUSH20 0xff82bf5238637b7e5e345888bab9cd99f5ebe331 00002986: CALLER 00002987: LT 00002988: PUSH1 0x01 0000298a: DUP2 0000298b: EQ 0000298c: PUSH2 0x299a 0000298f: JUMPI 00002990: DUP1 00002991: ISZERO 00002992: PUSH2 0x29c0 00002995: JUMPI 00002996: PUSH2 0x29e1 00002999: JUMP 0000299a: JUMPDEST 0000299b: PUSH20 0xfc23b61db3a1dce083e82da5a2ccfd91a2211f7c 000029b0: CALLER 000029b1: EQ 000029b2: ISZERO 000029b3: PUSH2 0x29bb 000029b6: JUMPI 000029b7: PUSH1 0x01 000029b9: SWAP8 000029ba: POP 000029bb: JUMPDEST 000029bc: PUSH2 0x29e1 000029bf: JUMP 000029c0: JUMPDEST 000029c1: PUSH20 0xff82bf5238637b7e5e345888bab9cd99f5ebe331 000029d6: CALLER 000029d7: EQ 000029d8: ISZERO 000029d9: PUSH2 0x29e1 000029dc: JUMPI 000029dd: PUSH1 0x01 000029df: SWAP8 000029e0: POP 000029e1: JUMPDEST 000029e2: POP 000029e3: JUMPDEST 000029e4: POP 000029e5: JUMPDEST 000029e6: POP 000029e7: JUMPDEST 000029e8: POP 000029e9: JUMPDEST 000029ea: POP 000029eb: JUMPDEST 000029ec: POP 000029ed: JUMPDEST 000029ee: POP 000029ef: DUP1 000029f0: PUSH2 0x2a08 000029f3: JUMPI 000029f4: POP 000029f5: CALLER 000029f6: PUSH1 0x00 000029f8: SWAP1 000029f9: DUP2 000029fa: MSTORE 000029fb: PUSH1 0x20 000029fd: DUP2 000029fe: SWAP1 000029ff: MSTORE 00002a00: PUSH1 0x40 00002a02: SWAP1 00002a03: KECCAK256 00002a04: SLOAD 00002a05: PUSH1 0x01 00002a07: EQ 00002a08: JUMPDEST 00002a09: SWAP1 00002a0a: JUMP 00002a0b: JUMPDEST 00002a0c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a21: DUP2 00002a22: AND 00002a23: DUP2 00002a24: EQ 00002a25: PUSH2 0x2a2d 00002a28: JUMPI 00002a29: PUSH1 0x00 00002a2b: DUP1 00002a2c: REVERT 00002a2d: JUMPDEST 00002a2e: POP 00002a2f: JUMP 00002a30: JUMPDEST 00002a31: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002a52: PUSH1 0x00 00002a54: MSTORE 00002a55: PUSH1 0x41 00002a57: PUSH1 0x04 00002a59: MSTORE 00002a5a: PUSH1 0x24 00002a5c: PUSH1 0x00 00002a5e: REVERT 00002a5f: JUMPDEST 00002a60: PUSH1 0x40 00002a62: MLOAD 00002a63: PUSH1 0x1f 00002a65: DUP3 00002a66: ADD 00002a67: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002a88: AND 00002a89: DUP2 00002a8a: ADD 00002a8b: PUSH8 0xffffffffffffffff 00002a94: DUP2 00002a95: GT 00002a96: DUP3 00002a97: DUP3 00002a98: LT 00002a99: OR 00002a9a: ISZERO 00002a9b: PUSH2 0x2aa6 00002a9e: JUMPI 00002a9f: PUSH2 0x2aa6 00002aa2: PUSH2 0x2a30 00002aa5: JUMP 00002aa6: JUMPDEST 00002aa7: PUSH1 0x40 00002aa9: MSTORE 00002aaa: SWAP2 00002aab: SWAP1 00002aac: POP 00002aad: JUMP 00002aae: JUMPDEST 00002aaf: PUSH1 0x00 00002ab1: DUP3 00002ab2: PUSH1 0x1f 00002ab4: DUP4 00002ab5: ADD 00002ab6: SLT 00002ab7: PUSH2 0x2abf 00002aba: JUMPI 00002abb: PUSH1 0x00 00002abd: DUP1 00002abe: REVERT 00002abf: JUMPDEST 00002ac0: DUP2 00002ac1: CALLDATALOAD 00002ac2: PUSH8 0xffffffffffffffff 00002acb: DUP2 00002acc: GT 00002acd: ISZERO 00002ace: PUSH2 0x2ad9 00002ad1: JUMPI 00002ad2: PUSH2 0x2ad9 00002ad5: PUSH2 0x2a30 00002ad8: JUMP 00002ad9: JUMPDEST 00002ada: PUSH2 0x2b0a 00002add: PUSH1 0x20 00002adf: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002b00: PUSH1 0x1f 00002b02: DUP5 00002b03: ADD 00002b04: AND 00002b05: ADD 00002b06: PUSH2 0x2a5f 00002b09: JUMP 00002b0a: JUMPDEST 00002b0b: DUP2 00002b0c: DUP2 00002b0d: MSTORE 00002b0e: DUP5 00002b0f: PUSH1 0x20 00002b11: DUP4 00002b12: DUP7 00002b13: ADD 00002b14: ADD 00002b15: GT 00002b16: ISZERO 00002b17: PUSH2 0x2b1f 00002b1a: JUMPI 00002b1b: PUSH1 0x00 00002b1d: DUP1 00002b1e: REVERT 00002b1f: JUMPDEST 00002b20: DUP2 00002b21: PUSH1 0x20 00002b23: DUP6 00002b24: ADD 00002b25: PUSH1 0x20 00002b27: DUP4 00002b28: ADD 00002b29: CALLDATACOPY 00002b2a: PUSH1 0x00 00002b2c: SWAP2 00002b2d: DUP2 00002b2e: ADD 00002b2f: PUSH1 0x20 00002b31: ADD 00002b32: SWAP2 00002b33: SWAP1 00002b34: SWAP2 00002b35: MSTORE 00002b36: SWAP4 00002b37: SWAP3 00002b38: POP 00002b39: POP 00002b3a: POP 00002b3b: JUMP 00002b3c: JUMPDEST 00002b3d: PUSH1 0x00 00002b3f: DUP1 00002b40: PUSH1 0x40 00002b42: DUP4 00002b43: DUP6 00002b44: SUB 00002b45: SLT 00002b46: ISZERO 00002b47: PUSH2 0x2b4f 00002b4a: JUMPI 00002b4b: PUSH1 0x00 00002b4d: DUP1 00002b4e: REVERT 00002b4f: JUMPDEST 00002b50: DUP3 00002b51: CALLDATALOAD 00002b52: PUSH2 0x2b5a 00002b55: DUP2 00002b56: PUSH2 0x2a0b 00002b59: JUMP 00002b5a: JUMPDEST 00002b5b: SWAP2 00002b5c: POP 00002b5d: PUSH1 0x20 00002b5f: DUP4 00002b60: ADD 00002b61: CALLDATALOAD 00002b62: PUSH8 0xffffffffffffffff 00002b6b: DUP2 00002b6c: GT 00002b6d: ISZERO 00002b6e: PUSH2 0x2b76 00002b71: JUMPI 00002b72: PUSH1 0x00 00002b74: DUP1 00002b75: REVERT 00002b76: JUMPDEST 00002b77: PUSH2 0x2b82 00002b7a: DUP6 00002b7b: DUP3 00002b7c: DUP7 00002b7d: ADD 00002b7e: PUSH2 0x2aae 00002b81: JUMP 00002b82: JUMPDEST 00002b83: SWAP2 00002b84: POP 00002b85: POP 00002b86: SWAP3 00002b87: POP 00002b88: SWAP3 00002b89: SWAP1 00002b8a: POP 00002b8b: JUMP 00002b8c: JUMPDEST 00002b8d: PUSH1 0x00 00002b8f: DUP1 00002b90: PUSH1 0x40 00002b92: DUP4 00002b93: DUP6 00002b94: SUB 00002b95: SLT 00002b96: ISZERO 00002b97: PUSH2 0x2b9f 00002b9a: JUMPI 00002b9b: PUSH1 0x00 00002b9d: DUP1 00002b9e: REVERT 00002b9f: JUMPDEST 00002ba0: DUP3 00002ba1: CALLDATALOAD 00002ba2: PUSH8 0xffffffffffffffff 00002bab: DUP1 00002bac: DUP3 00002bad: GT 00002bae: ISZERO 00002baf: PUSH2 0x2bb7 00002bb2: JUMPI 00002bb3: PUSH1 0x00 00002bb5: DUP1 00002bb6: REVERT 00002bb7: JUMPDEST 00002bb8: PUSH2 0x2bc3 00002bbb: DUP7 00002bbc: DUP4 00002bbd: DUP8 00002bbe: ADD 00002bbf: PUSH2 0x2aae 00002bc2: JUMP 00002bc3: JUMPDEST 00002bc4: SWAP4 00002bc5: POP 00002bc6: PUSH1 0x20 00002bc8: DUP6 00002bc9: ADD 00002bca: CALLDATALOAD 00002bcb: SWAP2 00002bcc: POP 00002bcd: DUP1 00002bce: DUP3 00002bcf: GT 00002bd0: ISZERO 00002bd1: PUSH2 0x2bd9 00002bd4: JUMPI 00002bd5: PUSH1 0x00 00002bd7: DUP1 00002bd8: REVERT 00002bd9: JUMPDEST 00002bda: POP 00002bdb: PUSH2 0x2b82 00002bde: DUP6 00002bdf: DUP3 00002be0: DUP7 00002be1: ADD 00002be2: PUSH2 0x2aae 00002be5: JUMP 00002be6: JUMPDEST 00002be7: PUSH1 0x00 00002be9: PUSH1 0x20 00002beb: DUP3 00002bec: DUP5 00002bed: SUB 00002bee: SLT 00002bef: ISZERO 00002bf0: PUSH2 0x2bf8 00002bf3: JUMPI 00002bf4: PUSH1 0x00 00002bf6: DUP1 00002bf7: REVERT 00002bf8: JUMPDEST 00002bf9: DUP2 00002bfa: CALLDATALOAD 00002bfb: PUSH2 0x2c03 00002bfe: DUP2 00002bff: PUSH2 0x2a0b 00002c02: JUMP 00002c03: JUMPDEST 00002c04: SWAP4 00002c05: SWAP3 00002c06: POP 00002c07: POP 00002c08: POP 00002c09: JUMP 00002c0a: JUMPDEST 00002c0b: PUSH1 0x00 00002c0d: PUSH1 0x20 00002c0f: DUP1 00002c10: DUP4 00002c11: MSTORE 00002c12: DUP4 00002c13: MLOAD 00002c14: DUP1 00002c15: DUP3 00002c16: DUP6 00002c17: ADD 00002c18: MSTORE 00002c19: PUSH1 0x00 00002c1b: JUMPDEST 00002c1c: DUP2 00002c1d: DUP2 00002c1e: LT 00002c1f: ISZERO 00002c20: PUSH2 0x2c37 00002c23: JUMPI 00002c24: DUP6 00002c25: DUP2 00002c26: ADD 00002c27: DUP4 00002c28: ADD 00002c29: MLOAD 00002c2a: DUP6 00002c2b: DUP3 00002c2c: ADD 00002c2d: PUSH1 0x40 00002c2f: ADD 00002c30: MSTORE 00002c31: DUP3 00002c32: ADD 00002c33: PUSH2 0x2c1b 00002c36: JUMP 00002c37: JUMPDEST 00002c38: DUP2 00002c39: DUP2 00002c3a: GT 00002c3b: ISZERO 00002c3c: PUSH2 0x2c49 00002c3f: JUMPI 00002c40: PUSH1 0x00 00002c42: PUSH1 0x40 00002c44: DUP4 00002c45: DUP8 00002c46: ADD 00002c47: ADD 00002c48: MSTORE 00002c49: JUMPDEST 00002c4a: POP 00002c4b: PUSH1 0x1f 00002c4d: ADD 00002c4e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002c6f: AND 00002c70: SWAP3 00002c71: SWAP1 00002c72: SWAP3 00002c73: ADD 00002c74: PUSH1 0x40 00002c76: ADD 00002c77: SWAP4 00002c78: SWAP3 00002c79: POP 00002c7a: POP 00002c7b: POP 00002c7c: JUMP 00002c7d: JUMPDEST 00002c7e: PUSH1 0x00 00002c80: PUSH1 0x20 00002c82: DUP1 00002c83: DUP4 00002c84: DUP6 00002c85: SUB 00002c86: SLT 00002c87: ISZERO 00002c88: PUSH2 0x2c90 00002c8b: JUMPI 00002c8c: PUSH1 0x00 00002c8e: DUP1 00002c8f: REVERT 00002c90: JUMPDEST 00002c91: DUP3 00002c92: CALLDATALOAD 00002c93: PUSH8 0xffffffffffffffff 00002c9c: DUP1 00002c9d: DUP3 00002c9e: GT 00002c9f: ISZERO 00002ca0: PUSH2 0x2ca8 00002ca3: JUMPI 00002ca4: PUSH1 0x00 00002ca6: DUP1 00002ca7: REVERT 00002ca8: JUMPDEST 00002ca9: DUP2 00002caa: DUP6 00002cab: ADD 00002cac: SWAP2 00002cad: POP 00002cae: DUP6 00002caf: PUSH1 0x1f 00002cb1: DUP4 00002cb2: ADD 00002cb3: SLT 00002cb4: PUSH2 0x2cbc 00002cb7: JUMPI 00002cb8: PUSH1 0x00 00002cba: DUP1 00002cbb: REVERT 00002cbc: JUMPDEST 00002cbd: DUP2 00002cbe: CALLDATALOAD 00002cbf: DUP2 00002cc0: DUP2 00002cc1: GT 00002cc2: ISZERO 00002cc3: PUSH2 0x2cce 00002cc6: JUMPI 00002cc7: PUSH2 0x2cce 00002cca: PUSH2 0x2a30 00002ccd: JUMP 00002cce: JUMPDEST 00002ccf: DUP1 00002cd0: PUSH1 0x05 00002cd2: SHL 00002cd3: SWAP2 00002cd4: POP 00002cd5: PUSH2 0x2cdf 00002cd8: DUP5 00002cd9: DUP4 00002cda: ADD 00002cdb: PUSH2 0x2a5f 00002cde: JUMP 00002cdf: JUMPDEST 00002ce0: DUP2 00002ce1: DUP2 00002ce2: MSTORE 00002ce3: SWAP2 00002ce4: DUP4 00002ce5: ADD 00002ce6: DUP5 00002ce7: ADD 00002ce8: SWAP2 00002ce9: DUP5 00002cea: DUP2 00002ceb: ADD 00002cec: SWAP1 00002ced: DUP9 00002cee: DUP5 00002cef: GT 00002cf0: ISZERO 00002cf1: PUSH2 0x2cf9 00002cf4: JUMPI 00002cf5: PUSH1 0x00 00002cf7: DUP1 00002cf8: REVERT 00002cf9: JUMPDEST 00002cfa: SWAP4 00002cfb: DUP6 00002cfc: ADD 00002cfd: SWAP4 00002cfe: JUMPDEST 00002cff: DUP4 00002d00: DUP6 00002d01: LT 00002d02: ISZERO 00002d03: PUSH2 0x2d23 00002d06: JUMPI 00002d07: DUP5 00002d08: CALLDATALOAD 00002d09: SWAP3 00002d0a: POP 00002d0b: PUSH2 0x2d13 00002d0e: DUP4 00002d0f: PUSH2 0x2a0b 00002d12: JUMP 00002d13: JUMPDEST 00002d14: DUP3 00002d15: DUP3 00002d16: MSTORE 00002d17: SWAP4 00002d18: DUP6 00002d19: ADD 00002d1a: SWAP4 00002d1b: SWAP1 00002d1c: DUP6 00002d1d: ADD 00002d1e: SWAP1 00002d1f: PUSH2 0x2cfe 00002d22: JUMP 00002d23: JUMPDEST 00002d24: SWAP9 00002d25: SWAP8 00002d26: POP 00002d27: POP 00002d28: POP 00002d29: POP 00002d2a: POP 00002d2b: POP 00002d2c: POP 00002d2d: POP 00002d2e: JUMP 00002d2f: JUMPDEST 00002d30: PUSH1 0x00 00002d32: PUSH1 0x20 00002d34: DUP3 00002d35: DUP5 00002d36: SUB 00002d37: SLT 00002d38: ISZERO 00002d39: PUSH2 0x2d41 00002d3c: JUMPI 00002d3d: PUSH1 0x00 00002d3f: DUP1 00002d40: REVERT 00002d41: JUMPDEST 00002d42: DUP2 00002d43: MLOAD 00002d44: PUSH2 0x2c03 00002d47: DUP2 00002d48: PUSH2 0x2a0b 00002d4b: JUMP 00002d4c: JUMPDEST 00002d4d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002d6e: PUSH1 0x00 00002d70: MSTORE 00002d71: PUSH1 0x32 00002d73: PUSH1 0x04 00002d75: MSTORE 00002d76: PUSH1 0x24 00002d78: PUSH1 0x00 00002d7a: REVERT 00002d7b: JUMPDEST 00002d7c: PUSH1 0x00 00002d7e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002d9f: DUP3 00002da0: EQ 00002da1: ISZERO 00002da2: PUSH2 0x2dd4 00002da5: JUMPI 00002da6: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002dc7: PUSH1 0x00 00002dc9: MSTORE 00002dca: PUSH1 0x11 00002dcc: PUSH1 0x04 00002dce: MSTORE 00002dcf: PUSH1 0x24 00002dd1: PUSH1 0x00 00002dd3: REVERT 00002dd4: JUMPDEST 00002dd5: POP 00002dd6: PUSH1 0x01 00002dd8: ADD 00002dd9: SWAP1 00002dda: JUMP 00002ddb: INVALID 00002ddc: LOG2 00002ddd: PUSH5 0x6970667358 00002de3: UNKNOWN(0x22) 00002de4: SLT 00002de5: KECCAK256 00002de6: UNKNOWN(0xB5) 00002de7: UNKNOWN(0xFC) 00002de8: CODESIZE 00002de9: PUSH26 0xaf9dc4ca98a5ca0c383e9738a3fc0e6d3e0c9cb398d76bd2a81e 00002e04: LOG3 00002e05: UNKNOWN(0x24) 00002e06: PUSH5 0x736f6c6343 00002e0c: STOP 00002e0d: ADDMOD 00002e0e: MULMOD 00002e0f: STOP 00002e10: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0xed238dda9578c7a407fe2b08d966772ec24916359c43c09e14836944b290acf0
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 144,
"trace_id": "0xed238dda9578c7a407fe2b08d966772ec24916359c43c09e14836944b290acf0",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xa90e8731",
"selector": "0xa90e8731",
"calldata_variants": [
"0xa90e8731",
"0xa90e87310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf353dbb",
"selector": "0xbf353dbb",
"calldata_variants": [
"0xbf353dbb",
"0xbf353dbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9892a5f",
"selector": "0xc9892a5f",
"calldata_variants": [
"0xc9892a5f",
"0xc9892a5f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x948f5076",
"selector": "0x948f5076",
"calldata_variants": [
"0x948f5076",
"0x948f50760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x97645e37",
"selector": "0x97645e37",
"calldata_variants": [
"0x97645e37",
"0x97645e370000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9c52a7f1",
"selector": "0x9c52a7f1",
"calldata_variants": [
"0x9c52a7f1",
"0x9c52a7f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x60c7d295",
"selector": "0x60c7d295",
"calldata_variants": [
"0x60c7d295",
"0x60c7d2950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x65fae35e",
"selector": "0x65fae35e",
"calldata_variants": [
"0x65fae35e",
"0x65fae35e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1103,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 1601,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 2894,
"type": "msg_sender_eq_const",
"value": 1.937192090964957e+46
},
{
"pc": 2974,
"type": "msg_sender_eq_const",
"value": 2.366421421282308e+46
},
{
"pc": 3012,
"type": "msg_sender_eq_const",
"value": 3.482200438259324e+46
},
{
"pc": 3095,
"type": "msg_sender_eq_const",
"value": 3.635559215146063e+46
},
{
"pc": 3175,
"type": "msg_sender_eq_const",
"value": 6.367652710112503e+46
},
{
"pc": 3213,
"type": "msg_sender_eq_const",
"value": 7.234894030218379e+46
},
{
"pc": 3340,
"type": "msg_sender_eq_const",
"value": 8.704424782102078e+46
},
{
"pc": 3420,
"type": "msg_sender_eq_const",
"value": 1.3406221402988553e+47
},
{
"pc": 3458,
"type": "msg_sender_eq_const",
"value": 1.503099866131253e+47
},
{
"pc": 3541,
"type": "msg_sender_eq_const",
"value": 1.5828479704987836e+47
},
{
"pc": 3621,
"type": "msg_sender_eq_const",
"value": 1.630500143764115e+47
},
{
"pc": 3659,
"type": "msg_sender_eq_const",
"value": 2.0180028352825973e+47
},
{
"pc": 3830,
"type": "msg_sender_eq_const",
"value": 2.211543057625419e+47
},
{
"pc": 3910,
"type": "msg_sender_eq_const",
"value": 2.3891154920438665e+47
},
{
"pc": 3948,
"type": "msg_sender_eq_const",
"value": 2.4635866536790693e+47
},
{
"pc": 4031,
"type": "msg_sender_eq_const",
"value": 2.480413904675548e+47
},
{
"pc": 4111,
"type": "msg_sender_eq_const",
"value": 2.5874112900276924e+47
},
{
"pc": 4149,
"type": "msg_sender_eq_const",
"value": 2.6587808205041764e+47
},
{
"pc": 4276,
"type": "msg_sender_eq_const",
"value": 3.1145047564854064e+47
},
{
"pc": 4356,
"type": "msg_sender_eq_const",
"value": 3.1195020080407135e+47
},
{
"pc": 4394,
"type": "msg_sender_eq_const",
"value": 3.465521006362555e+47
},
{
"pc": 4519,
"type": "msg_sender_eq_const",
"value": 3.6383474202083036e+47
},
{
"pc": 4557,
"type": "msg_sender_eq_const",
"value": 3.771757955626895e+47
},
{
"pc": 4638,
"type": "msg_sender_eq_const",
"value": 3.83112387018194e+47
},
{
"pc": 4676,
"type": "msg_sender_eq_const",
"value": 3.875968261626992e+47
},
{
"pc": 4891,
"type": "msg_sender_eq_const",
"value": 3.886823414413313e+47
},
{
"pc": 4971,
"type": "msg_sender_eq_const",
"value": 3.99698350880474e+47
},
{
"pc": 5009,
"type": "msg_sender_eq_const",
"value": 4.088009979620991e+47
},
{
"pc": 5092,
"type": "msg_sender_eq_const",
"value": 4.3381566888493816e+47
},
{
"pc": 5172,
"type": "msg_sender_eq_const",
"value": 4.340020465854462e+47
},
{
"pc": 5210,
"type": "msg_sender_eq_const",
"value": 4.350374383920372e+47
},
{
"pc": 5337,
"type": "msg_sender_eq_const",
"value": 4.448283643250529e+47
},
{
"pc": 5417,
"type": "msg_sender_eq_const",
"value": 4.46653788518897e+47
},
{
"pc": 5455,
"type": "msg_sender_eq_const",
"value": 4.569637776076382e+47
},
{
"pc": 5538,
"type": "msg_sender_eq_const",
"value": 4.68413230146582e+47
},
{
"pc": 5618,
"type": "msg_sender_eq_const",
"value": 4.939955829432307e+47
},
{
"pc": 5656,
"type": "msg_sender_eq_const",
"value": 4.963307630209588e+47
},
{
"pc": 5827,
"type": "msg_sender_eq_const",
"value": 5.1136680834921975e+47
},
{
"pc": 5907,
"type": "msg_sender_eq_const",
"value": 5.146169159421327e+47
},
{
"pc": 5945,
"type": "msg_sender_eq_const",
"value": 5.496370902087342e+47
},
{
"pc": 6028,
"type": "msg_sender_eq_const",
"value": 5.521757695487807e+47
},
{
"pc": 6108,
"type": "msg_sender_eq_const",
"value": 5.628754679685068e+47
},
{
"pc": 6146,
"type": "msg_sender_eq_const",
"value": 5.75088674160679e+47
},
{
"pc": 6273,
"type": "msg_sender_eq_const",
"value": 5.8670899936875374e+47
},
{
"pc": 6353,
"type": "msg_sender_eq_const",
"value": 5.999815150985335e+47
},
{
"pc": 6391,
"type": "msg_sender_eq_const",
"value": 6.546221944590571e+47
},
{
"pc": 6516,
"type": "msg_sender_eq_const",
"value": 6.721636064805913e+47
},
{
"pc": 6554,
"type": "msg_sender_eq_const",
"value": 6.7859373338071435e+47
},
{
"pc": 6635,
"type": "msg_sender_eq_const",
"value": 6.78746616865904e+47
},
{
"pc": 6673,
"type": "msg_sender_eq_const",
"value": 6.846231662106311e+47
},
{
"pc": 6932,
"type": "msg_sender_eq_const",
"value": 6.909465270567805e+47
},
{
"pc": 7012,
"type": "msg_sender_eq_const",
"value": 7.272698595427306e+47
},
{
"pc": 7050,
"type": "msg_sender_eq_const",
"value": 7.324176171215757e+47
},
{
"pc": 7133,
"type": "msg_sender_eq_const",
"value": 7.409672683276627e+47
},
{
"pc": 7213,
"type": "msg_sender_eq_const",
"value": 7.70970370095622e+47
},
{
"pc": 7251,
"type": "msg_sender_eq_const",
"value": 8.074226791627925e+47
},
{
"pc": 7378,
"type": "msg_sender_eq_const",
"value": 8.114795736246182e+47
},
{
"pc": 7458,
"type": "msg_sender_eq_const",
"value": 8.344753430099712e+47
},
{
"pc": 7496,
"type": "msg_sender_eq_const",
"value": 8.383022422893447e+47
},
{
"pc": 7579,
"type": "msg_sender_eq_const",
"value": 8.44712262339208e+47
},
{
"pc": 7659,
"type": "msg_sender_eq_const",
"value": 8.808671876567467e+47
},
{
"pc": 7697,
"type": "msg_sender_eq_const",
"value": 8.830035382342617e+47
},
{
"pc": 7868,
"type": "msg_sender_eq_const",
"value": 9.001000054424739e+47
},
{
"pc": 7948,
"type": "msg_sender_eq_const",
"value": 9.281228905788298e+47
},
{
"pc": 7986,
"type": "msg_sender_eq_const",
"value": 9.391991315046855e+47
},
{
"pc": 8069,
"type": "msg_sender_eq_const",
"value": 9.397516236671352e+47
},
{
"pc": 8149,
"type": "msg_sender_eq_const",
"value": 9.455794188584922e+47
},
{
"pc": 8187,
"type": "msg_sender_eq_const",
"value": 9.703691562523509e+47
},
{
"pc": 8314,
"type": "msg_sender_eq_const",
"value": 9.827064683828793e+47
},
{
"pc": 8394,
"type": "msg_sender_eq_const",
"value": 9.884939855922125e+47
},
{
"pc": 8432,
"type": "msg_sender_eq_const",
"value": 1.0039882123927867e+48
},
{
"pc": 8557,
"type": "msg_sender_eq_const",
"value": 1.0365708387075382e+48
},
{
"pc": 8595,
"type": "msg_sender_eq_const",
"value": 1.0601937253694377e+48
},
{
"pc": 8676,
"type": "msg_sender_eq_const",
"value": 1.0636554697691535e+48
},
{
"pc": 8714,
"type": "msg_sender_eq_const",
"value": 1.0714523874006143e+48
},
{
"pc": 8929,
"type": "msg_sender_eq_const",
"value": 1.0795447858643142e+48
},
{
"pc": 9009,
"type": "msg_sender_eq_const",
"value": 1.1032687686955313e+48
},
{
"pc": 9047,
"type": "msg_sender_eq_const",
"value": 1.1226743739629847e+48
},
{
"pc": 9130,
"type": "msg_sender_eq_const",
"value": 1.1236475878417629e+48
},
{
"pc": 9210,
"type": "msg_sender_eq_const",
"value": 1.1667054968785479e+48
},
{
"pc": 9248,
"type": "msg_sender_eq_const",
"value": 1.1829456626498411e+48
},
{
"pc": 9375,
"type": "msg_sender_eq_const",
"value": 1.1971143567879179e+48
},
{
"pc": 9455,
"type": "msg_sender_eq_const",
"value": 1.2022226821994315e+48
},
{
"pc": 9493,
"type": "msg_sender_eq_const",
"value": 1.2217973388494924e+48
},
{
"pc": 9576,
"type": "msg_sender_eq_const",
"value": 1.2249332624019627e+48
},
{
"pc": 9656,
"type": "msg_sender_eq_const",
"value": 1.227297844688082e+48
},
{
"pc": 9694,
"type": "msg_sender_eq_const",
"value": 1.303033600803244e+48
},
{
"pc": 9865,
"type": "msg_sender_eq_const",
"value": 1.3105338531436571e+48
},
{
"pc": 9945,
"type": "msg_sender_eq_const",
"value": 1.3174591719432727e+48
},
{
"pc": 9983,
"type": "msg_sender_eq_const",
"value": 1.350954303712014e+48
},
{
"pc": 10066,
"type": "msg_sender_eq_const",
"value": 1.3660783461364917e+48
},
{
"pc": 10146,
"type": "msg_sender_eq_const",
"value": 1.372149191269396e+48
},
{
"pc": 10184,
"type": "msg_sender_eq_const",
"value": 1.3818836317563874e+48
},
{
"pc": 10311,
"type": "msg_sender_eq_const",
"value": 1.3888907888614552e+48
},
{
"pc": 10391,
"type": "msg_sender_eq_const",
"value": 1.4051632000257263e+48
},
{
"pc": 10429,
"type": "msg_sender_eq_const",
"value": 1.4279011144555981e+48
},
{
"pc": 10554,
"type": "msg_sender_eq_const",
"value": 1.4295326147791414e+48
},
{
"pc": 10592,
"type": "msg_sender_eq_const",
"value": 1.4363346609163643e+48
},
{
"pc": 10673,
"type": "msg_sender_eq_const",
"value": 1.4394620648725567e+48
},
{
"pc": 10711,
"type": "msg_sender_eq_const",
"value": 1.4587084098606084e+48
}
],
"delegatecall_count": 2,
"untrusted_delegatecall_count": 2
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 2
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x48bb8ebdbc43bd9aa50e6b493e118d6133a41ba065c54ba8f8aacc8cad1e0f55
call_targets:
0xa69babef1ca67a37ffaf7a485dfff3382056e78c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x48bb8ebdbc43bd9aa50e6b493e118d6133a41ba065c54ba8f8aacc8cad1e0f55",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa69babef1ca67a37ffaf7a485dfff3382056e78c"
],
"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": "0xa90e8731",
"selector": "0xa90e8731",
"calldata_variants": [
"0xa90e8731",
"0xa90e87310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf353dbb",
"selector": "0xbf353dbb",
"calldata_variants": [
"0xbf353dbb",
"0xbf353dbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9892a5f",
"selector": "0xc9892a5f",
"calldata_variants": [
"0xc9892a5f",
"0xc9892a5f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x948f5076",
"selector": "0x948f5076",
"calldata_variants": [
"0x948f5076",
"0x948f50760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x97645e37",
"selector": "0x97645e37",
"calldata_variants": [
"0x97645e37",
"0x97645e370000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9c52a7f1",
"selector": "0x9c52a7f1",
"calldata_variants": [
"0x9c52a7f1",
"0x9c52a7f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x60c7d295",
"selector": "0x60c7d295",
"calldata_variants": [
"0x60c7d295",
"0x60c7d2950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x65fae35e",
"selector": "0x65fae35e",
"calldata_variants": [
"0x65fae35e",
"0x65fae35e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 522,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 608,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1440,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [
{
"pc": 2894,
"type": "msg_sender_eq_const",
"value": 1.937192090964957e+46
},
{
"pc": 2974,
"type": "msg_sender_eq_const",
"value": 2.366421421282308e+46
},
{
"pc": 3012,
"type": "msg_sender_eq_const",
"value": 3.482200438259324e+46
},
{
"pc": 3095,
"type": "msg_sender_eq_const",
"value": 3.635559215146063e+46
},
{
"pc": 3175,
"type": "msg_sender_eq_const",
"value": 6.367652710112503e+46
},
{
"pc": 3213,
"type": "msg_sender_eq_const",
"value": 7.234894030218379e+46
},
{
"pc": 3340,
"type": "msg_sender_eq_const",
"value": 8.704424782102078e+46
},
{
"pc": 3420,
"type": "msg_sender_eq_const",
"value": 1.3406221402988553e+47
},
{
"pc": 3458,
"type": "msg_sender_eq_const",
"value": 1.503099866131253e+47
},
{
"pc": 3541,
"type": "msg_sender_eq_const",
"value": 1.5828479704987836e+47
},
{
"pc": 3621,
"type": "msg_sender_eq_const",
"value": 1.630500143764115e+47
},
{
"pc": 3659,
"type": "msg_sender_eq_const",
"value": 2.0180028352825973e+47
},
{
"pc": 3830,
"type": "msg_sender_eq_const",
"value": 2.211543057625419e+47
},
{
"pc": 3910,
"type": "msg_sender_eq_const",
"value": 2.3891154920438665e+47
},
{
"pc": 3948,
"type": "msg_sender_eq_const",
"value": 2.4635866536790693e+47
},
{
"pc": 4031,
"type": "msg_sender_eq_const",
"value": 2.480413904675548e+47
},
{
"pc": 4111,
"type": "msg_sender_eq_const",
"value": 2.5874112900276924e+47
},
{
"pc": 4149,
"type": "msg_sender_eq_const",
"value": 2.6587808205041764e+47
},
{
"pc": 4276,
"type": "msg_sender_eq_const",
"value": 3.1145047564854064e+47
},
{
"pc": 4356,
"type": "msg_sender_eq_const",
"value": 3.1195020080407135e+47
},
{
"pc": 4394,
"type": "msg_sender_eq_const",
"value": 3.465521006362555e+47
},
{
"pc": 4519,
"type": "msg_sender_eq_const",
"value": 3.6383474202083036e+47
},
{
"pc": 4557,
"type": "msg_sender_eq_const",
"value": 3.771757955626895e+47
},
{
"pc": 4638,
"type": "msg_sender_eq_const",
"value": 3.83112387018194e+47
},
{
"pc": 4676,
"type": "msg_sender_eq_const",
"value": 3.875968261626992e+47
},
{
"pc": 4891,
"type": "msg_sender_eq_const",
"value": 3.886823414413313e+47
},
{
"pc": 4971,
"type": "msg_sender_eq_const",
"value": 3.99698350880474e+47
},
{
"pc": 5009,
"type": "msg_sender_eq_const",
"value": 4.088009979620991e+47
},
{
"pc": 5092,
"type": "msg_sender_eq_const",
"value": 4.3381566888493816e+47
},
{
"pc": 5172,
"type": "msg_sender_eq_const",
"value": 4.340020465854462e+47
},
{
"pc": 5210,
"type": "msg_sender_eq_const",
"value": 4.350374383920372e+47
},
{
"pc": 5337,
"type": "msg_sender_eq_const",
"value": 4.448283643250529e+47
},
{
"pc": 5417,
"type": "msg_sender_eq_const",
"value": 4.46653788518897e+47
},
{
"pc": 5455,
"type": "msg_sender_eq_const",
"value": 4.569637776076382e+47
},
{
"pc": 5538,
"type": "msg_sender_eq_const",
"value": 4.68413230146582e+47
},
{
"pc": 5618,
"type": "msg_sender_eq_const",
"value": 4.939955829432307e+47
},
{
"pc": 5656,
"type": "msg_sender_eq_const",
"value": 4.963307630209588e+47
},
{
"pc": 5827,
"type": "msg_sender_eq_const",
"value": 5.1136680834921975e+47
},
{
"pc": 5907,
"type": "msg_sender_eq_const",
"value": 5.146169159421327e+47
},
{
"pc": 5945,
"type": "msg_sender_eq_const",
"value": 5.496370902087342e+47
},
{
"pc": 6028,
"type": "msg_sender_eq_const",
"value": 5.521757695487807e+47
},
{
"pc": 6108,
"type": "msg_sender_eq_const",
"value": 5.628754679685068e+47
},
{
"pc": 6146,
"type": "msg_sender_eq_const",
"value": 5.75088674160679e+47
},
{
"pc": 6273,
"type": "msg_sender_eq_const",
"value": 5.8670899936875374e+47
},
{
"pc": 6353,
"type": "msg_sender_eq_const",
"value": 5.999815150985335e+47
},
{
"pc": 6391,
"type": "msg_sender_eq_const",
"value": 6.546221944590571e+47
},
{
"pc": 6516,
"type": "msg_sender_eq_const",
"value": 6.721636064805913e+47
},
{
"pc": 6554,
"type": "msg_sender_eq_const",
"value": 6.7859373338071435e+47
},
{
"pc": 6635,
"type": "msg_sender_eq_const",
"value": 6.78746616865904e+47
},
{
"pc": 6673,
"type": "msg_sender_eq_const",
"value": 6.846231662106311e+47
},
{
"pc": 6932,
"type": "msg_sender_eq_const",
"value": 6.909465270567805e+47
},
{
"pc": 7012,
"type": "msg_sender_eq_const",
"value": 7.272698595427306e+47
},
{
"pc": 7050,
"type": "msg_sender_eq_const",
"value": 7.324176171215757e+47
},
{
"pc": 7133,
"type": "msg_sender_eq_const",
"value": 7.409672683276627e+47
},
{
"pc": 7213,
"type": "msg_sender_eq_const",
"value": 7.70970370095622e+47
},
{
"pc": 7251,
"type": "msg_sender_eq_const",
"value": 8.074226791627925e+47
},
{
"pc": 7378,
"type": "msg_sender_eq_const",
"value": 8.114795736246182e+47
},
{
"pc": 7458,
"type": "msg_sender_eq_const",
"value": 8.344753430099712e+47
},
{
"pc": 7496,
"type": "msg_sender_eq_const",
"value": 8.383022422893447e+47
},
{
"pc": 7579,
"type": "msg_sender_eq_const",
"value": 8.44712262339208e+47
},
{
"pc": 7659,
"type": "msg_sender_eq_const",
"value": 8.808671876567467e+47
},
{
"pc": 7697,
"type": "msg_sender_eq_const",
"value": 8.830035382342617e+47
},
{
"pc": 7868,
"type": "msg_sender_eq_const",
"value": 9.001000054424739e+47
},
{
"pc": 7948,
"type": "msg_sender_eq_const",
"value": 9.281228905788298e+47
},
{
"pc": 7986,
"type": "msg_sender_eq_const",
"value": 9.391991315046855e+47
},
{
"pc": 8069,
"type": "msg_sender_eq_const",
"value": 9.397516236671352e+47
},
{
"pc": 8149,
"type": "msg_sender_eq_const",
"value": 9.455794188584922e+47
},
{
"pc": 8187,
"type": "msg_sender_eq_const",
"value": 9.703691562523509e+47
},
{
"pc": 8314,
"type": "msg_sender_eq_const",
"value": 9.827064683828793e+47
},
{
"pc": 8394,
"type": "msg_sender_eq_const",
"value": 9.884939855922125e+47
},
{
"pc": 8432,
"type": "msg_sender_eq_const",
"value": 1.0039882123927867e+48
},
{
"pc": 8557,
"type": "msg_sender_eq_const",
"value": 1.0365708387075382e+48
},
{
"pc": 8595,
"type": "msg_sender_eq_const",
"value": 1.0601937253694377e+48
},
{
"pc": 8676,
"type": "msg_sender_eq_const",
"value": 1.0636554697691535e+48
},
{
"pc": 8714,
"type": "msg_sender_eq_const",
"value": 1.0714523874006143e+48
},
{
"pc": 8929,
"type": "msg_sender_eq_const",
"value": 1.0795447858643142e+48
},
{
"pc": 9009,
"type": "msg_sender_eq_const",
"value": 1.1032687686955313e+48
},
{
"pc": 9047,
"type": "msg_sender_eq_const",
"value": 1.1226743739629847e+48
},
{
"pc": 9130,
"type": "msg_sender_eq_const",
"value": 1.1236475878417629e+48
},
{
"pc": 9210,
"type": "msg_sender_eq_const",
"value": 1.1667054968785479e+48
},
{
"pc": 9248,
"type": "msg_sender_eq_const",
"value": 1.1829456626498411e+48
},
{
"pc": 9375,
"type": "msg_sender_eq_const",
"value": 1.1971143567879179e+48
},
{
"pc": 9455,
"type": "msg_sender_eq_const",
"value": 1.2022226821994315e+48
},
{
"pc": 9493,
"type": "msg_sender_eq_const",
"value": 1.2217973388494924e+48
},
{
"pc": 9576,
"type": "msg_sender_eq_const",
"value": 1.2249332624019627e+48
},
{
"pc": 9656,
"type": "msg_sender_eq_const",
"value": 1.227297844688082e+48
},
{
"pc": 9694,
"type": "msg_sender_eq_const",
"value": 1.303033600803244e+48
},
{
"pc": 9865,
"type": "msg_sender_eq_const",
"value": 1.3105338531436571e+48
},
{
"pc": 9945,
"type": "msg_sender_eq_const",
"value": 1.3174591719432727e+48
},
{
"pc": 9983,
"type": "msg_sender_eq_const",
"value": 1.350954303712014e+48
},
{
"pc": 10066,
"type": "msg_sender_eq_const",
"value": 1.3660783461364917e+48
},
{
"pc": 10146,
"type": "msg_sender_eq_const",
"value": 1.372149191269396e+48
},
{
"pc": 10184,
"type": "msg_sender_eq_const",
"value": 1.3818836317563874e+48
},
{
"pc": 10311,
"type": "msg_sender_eq_const",
"value": 1.3888907888614552e+48
},
{
"pc": 10391,
"type": "msg_sender_eq_const",
"value": 1.4051632000257263e+48
},
{
"pc": 10429,
"type": "msg_sender_eq_const",
"value": 1.4279011144555981e+48
},
{
"pc": 10554,
"type": "msg_sender_eq_const",
"value": 1.4295326147791414e+48
},
{
"pc": 10592,
"type": "msg_sender_eq_const",
"value": 1.4363346609163643e+48
},
{
"pc": 10673,
"type": "msg_sender_eq_const",
"value": 1.4394620648725567e+48
},
{
"pc": 10711,
"type": "msg_sender_eq_const",
"value": 1.4587084098606084e+48
}
],
"untrusted_call_count": 4
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x48bb8ebdbc43bd9aa50e6b493e118d6133a41ba065c54ba8f8aacc8cad1e0f55
call_targets:
0xa69babef1ca67a37ffaf7a485dfff3382056e78c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x48bb8ebdbc43bd9aa50e6b493e118d6133a41ba065c54ba8f8aacc8cad1e0f55",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa69babef1ca67a37ffaf7a485dfff3382056e78c"
],
"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": "0xa90e8731",
"selector": "0xa90e8731",
"calldata_variants": [
"0xa90e8731",
"0xa90e87310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbf353dbb",
"selector": "0xbf353dbb",
"calldata_variants": [
"0xbf353dbb",
"0xbf353dbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9892a5f",
"selector": "0xc9892a5f",
"calldata_variants": [
"0xc9892a5f",
"0xc9892a5f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x948f5076",
"selector": "0x948f5076",
"calldata_variants": [
"0x948f5076",
"0x948f50760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x97645e37",
"selector": "0x97645e37",
"calldata_variants": [
"0x97645e37",
"0x97645e370000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9c52a7f1",
"selector": "0x9c52a7f1",
"calldata_variants": [
"0x9c52a7f1",
"0x9c52a7f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x60c7d295",
"selector": "0x60c7d295",
"calldata_variants": [
"0x60c7d295",
"0x60c7d2950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x65fae35e",
"selector": "0x65fae35e",
"calldata_variants": [
"0x65fae35e",
"0x65fae35e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 522,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 608,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1440,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": [
{
"pc": 2894,
"type": "msg_sender_eq_const",
"value": 1.937192090964957e+46
},
{
"pc": 2974,
"type": "msg_sender_eq_const",
"value": 2.366421421282308e+46
},
{
"pc": 3012,
"type": "msg_sender_eq_const",
"value": 3.482200438259324e+46
},
{
"pc": 3095,
"type": "msg_sender_eq_const",
"value": 3.635559215146063e+46
},
{
"pc": 3175,
"type": "msg_sender_eq_const",
"value": 6.367652710112503e+46
},
{
"pc": 3213,
"type": "msg_sender_eq_const",
"value": 7.234894030218379e+46
},
{
"pc": 3340,
"type": "msg_sender_eq_const",
"value": 8.704424782102078e+46
},
{
"pc": 3420,
"type": "msg_sender_eq_const",
"value": 1.3406221402988553e+47
},
{
"pc": 3458,
"type": "msg_sender_eq_const",
"value": 1.503099866131253e+47
},
{
"pc": 3541,
"type": "msg_sender_eq_const",
"value": 1.5828479704987836e+47
},
{
"pc": 3621,
"type": "msg_sender_eq_const",
"value": 1.630500143764115e+47
},
{
"pc": 3659,
"type": "msg_sender_eq_const",
"value": 2.0180028352825973e+47
},
{
"pc": 3830,
"type": "msg_sender_eq_const",
"value": 2.211543057625419e+47
},
{
"pc": 3910,
"type": "msg_sender_eq_const",
"value": 2.3891154920438665e+47
},
{
"pc": 3948,
"type": "msg_sender_eq_const",
"value": 2.4635866536790693e+47
},
{
"pc": 4031,
"type": "msg_sender_eq_const",
"value": 2.480413904675548e+47
},
{
"pc": 4111,
"type": "msg_sender_eq_const",
"value": 2.5874112900276924e+47
},
{
"pc": 4149,
"type": "msg_sender_eq_const",
"value": 2.6587808205041764e+47
},
{
"pc": 4276,
"type": "msg_sender_eq_const",
"value": 3.1145047564854064e+47
},
{
"pc": 4356,
"type": "msg_sender_eq_const",
"value": 3.1195020080407135e+47
},
{
"pc": 4394,
"type": "msg_sender_eq_const",
"value": 3.465521006362555e+47
},
{
"pc": 4519,
"type": "msg_sender_eq_const",
"value": 3.6383474202083036e+47
},
{
"pc": 4557,
"type": "msg_sender_eq_const",
"value": 3.771757955626895e+47
},
{
"pc": 4638,
"type": "msg_sender_eq_const",
"value": 3.83112387018194e+47
},
{
"pc": 4676,
"type": "msg_sender_eq_const",
"value": 3.875968261626992e+47
},
{
"pc": 4891,
"type": "msg_sender_eq_const",
"value": 3.886823414413313e+47
},
{
"pc": 4971,
"type": "msg_sender_eq_const",
"value": 3.99698350880474e+47
},
{
"pc": 5009,
"type": "msg_sender_eq_const",
"value": 4.088009979620991e+47
},
{
"pc": 5092,
"type": "msg_sender_eq_const",
"value": 4.3381566888493816e+47
},
{
"pc": 5172,
"type": "msg_sender_eq_const",
"value": 4.340020465854462e+47
},
{
"pc": 5210,
"type": "msg_sender_eq_const",
"value": 4.350374383920372e+47
},
{
"pc": 5337,
"type": "msg_sender_eq_const",
"value": 4.448283643250529e+47
},
{
"pc": 5417,
"type": "msg_sender_eq_const",
"value": 4.46653788518897e+47
},
{
"pc": 5455,
"type": "msg_sender_eq_const",
"value": 4.569637776076382e+47
},
{
"pc": 5538,
"type": "msg_sender_eq_const",
"value": 4.68413230146582e+47
},
{
"pc": 5618,
"type": "msg_sender_eq_const",
"value": 4.939955829432307e+47
},
{
"pc": 5656,
"type": "msg_sender_eq_const",
"value": 4.963307630209588e+47
},
{
"pc": 5827,
"type": "msg_sender_eq_const",
"value": 5.1136680834921975e+47
},
{
"pc": 5907,
"type": "msg_sender_eq_const",
"value": 5.146169159421327e+47
},
{
"pc": 5945,
"type": "msg_sender_eq_const",
"value": 5.496370902087342e+47
},
{
"pc": 6028,
"type": "msg_sender_eq_const",
"value": 5.521757695487807e+47
},
{
"pc": 6108,
"type": "msg_sender_eq_const",
"value": 5.628754679685068e+47
},
{
"pc": 6146,
"type": "msg_sender_eq_const",
"value": 5.75088674160679e+47
},
{
"pc": 6273,
"type": "msg_sender_eq_const",
"value": 5.8670899936875374e+47
},
{
"pc": 6353,
"type": "msg_sender_eq_const",
"value": 5.999815150985335e+47
},
{
"pc": 6391,
"type": "msg_sender_eq_const",
"value": 6.546221944590571e+47
},
{
"pc": 6516,
"type": "msg_sender_eq_const",
"value": 6.721636064805913e+47
},
{
"pc": 6554,
"type": "msg_sender_eq_const",
"value": 6.7859373338071435e+47
},
{
"pc": 6635,
"type": "msg_sender_eq_const",
"value": 6.78746616865904e+47
},
{
"pc": 6673,
"type": "msg_sender_eq_const",
"value": 6.846231662106311e+47
},
{
"pc": 6932,
"type": "msg_sender_eq_const",
"value": 6.909465270567805e+47
},
{
"pc": 7012,
"type": "msg_sender_eq_const",
"value": 7.272698595427306e+47
},
{
"pc": 7050,
"type": "msg_sender_eq_const",
"value": 7.324176171215757e+47
},
{
"pc": 7133,
"type": "msg_sender_eq_const",
"value": 7.409672683276627e+47
},
{
"pc": 7213,
"type": "msg_sender_eq_const",
"value": 7.70970370095622e+47
},
{
"pc": 7251,
"type": "msg_sender_eq_const",
"value": 8.074226791627925e+47
},
{
"pc": 7378,
"type": "msg_sender_eq_const",
"value": 8.114795736246182e+47
},
{
"pc": 7458,
"type": "msg_sender_eq_const",
"value": 8.344753430099712e+47
},
{
"pc": 7496,
"type": "msg_sender_eq_const",
"value": 8.383022422893447e+47
},
{
"pc": 7579,
"type": "msg_sender_eq_const",
"value": 8.44712262339208e+47
},
{
"pc": 7659,
"type": "msg_sender_eq_const",
"value": 8.808671876567467e+47
},
{
"pc": 7697,
"type": "msg_sender_eq_const",
"value": 8.830035382342617e+47
},
{
"pc": 7868,
"type": "msg_sender_eq_const",
"value": 9.001000054424739e+47
},
{
"pc": 7948,
"type": "msg_sender_eq_const",
"value": 9.281228905788298e+47
},
{
"pc": 7986,
"type": "msg_sender_eq_const",
"value": 9.391991315046855e+47
},
{
"pc": 8069,
"type": "msg_sender_eq_const",
"value": 9.397516236671352e+47
},
{
"pc": 8149,
"type": "msg_sender_eq_const",
"value": 9.455794188584922e+47
},
{
"pc": 8187,
"type": "msg_sender_eq_const",
"value": 9.703691562523509e+47
},
{
"pc": 8314,
"type": "msg_sender_eq_const",
"value": 9.827064683828793e+47
},
{
"pc": 8394,
"type": "msg_sender_eq_const",
"value": 9.884939855922125e+47
},
{
"pc": 8432,
"type": "msg_sender_eq_const",
"value": 1.0039882123927867e+48
},
{
"pc": 8557,
"type": "msg_sender_eq_const",
"value": 1.0365708387075382e+48
},
{
"pc": 8595,
"type": "msg_sender_eq_const",
"value": 1.0601937253694377e+48
},
{
"pc": 8676,
"type": "msg_sender_eq_const",
"value": 1.0636554697691535e+48
},
{
"pc": 8714,
"type": "msg_sender_eq_const",
"value": 1.0714523874006143e+48
},
{
"pc": 8929,
"type": "msg_sender_eq_const",
"value": 1.0795447858643142e+48
},
{
"pc": 9009,
"type": "msg_sender_eq_const",
"value": 1.1032687686955313e+48
},
{
"pc": 9047,
"type": "msg_sender_eq_const",
"value": 1.1226743739629847e+48
},
{
"pc": 9130,
"type": "msg_sender_eq_const",
"value": 1.1236475878417629e+48
},
{
"pc": 9210,
"type": "msg_sender_eq_const",
"value": 1.1667054968785479e+48
},
{
"pc": 9248,
"type": "msg_sender_eq_const",
"value": 1.1829456626498411e+48
},
{
"pc": 9375,
"type": "msg_sender_eq_const",
"value": 1.1971143567879179e+48
},
{
"pc": 9455,
"type": "msg_sender_eq_const",
"value": 1.2022226821994315e+48
},
{
"pc": 9493,
"type": "msg_sender_eq_const",
"value": 1.2217973388494924e+48
},
{
"pc": 9576,
"type": "msg_sender_eq_const",
"value": 1.2249332624019627e+48
},
{
"pc": 9656,
"type": "msg_sender_eq_const",
"value": 1.227297844688082e+48
},
{
"pc": 9694,
"type": "msg_sender_eq_const",
"value": 1.303033600803244e+48
},
{
"pc": 9865,
"type": "msg_sender_eq_const",
"value": 1.3105338531436571e+48
},
{
"pc": 9945,
"type": "msg_sender_eq_const",
"value": 1.3174591719432727e+48
},
{
"pc": 9983,
"type": "msg_sender_eq_const",
"value": 1.350954303712014e+48
},
{
"pc": 10066,
"type": "msg_sender_eq_const",
"value": 1.3660783461364917e+48
},
{
"pc": 10146,
"type": "msg_sender_eq_const",
"value": 1.372149191269396e+48
},
{
"pc": 10184,
"type": "msg_sender_eq_const",
"value": 1.3818836317563874e+48
},
{
"pc": 10311,
"type": "msg_sender_eq_const",
"value": 1.3888907888614552e+48
},
{
"pc": 10391,
"type": "msg_sender_eq_const",
"value": 1.4051632000257263e+48
},
{
"pc": 10429,
"type": "msg_sender_eq_const",
"value": 1.4279011144555981e+48
},
{
"pc": 10554,
"type": "msg_sender_eq_const",
"value": 1.4295326147791414e+48
},
{
"pc": 10592,
"type": "msg_sender_eq_const",
"value": 1.4363346609163643e+48
},
{
"pc": 10673,
"type": "msg_sender_eq_const",
"value": 1.4394620648725567e+48
},
{
"pc": 10711,
"type": "msg_sender_eq_const",
"value": 1.4587084098606084e+48
}
]
}
|