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

Analysis Run

a2d29766-0c37-4d3c-95bb-4129518aaaa8

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 1, 2026 7:15 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, 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.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
2
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
4
Total opcodes
4791
Flags
delegatecall_present
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_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
view
evidence_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
view
trace_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
view
trace_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
        }
    ]
}