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

Analysis Run

cfc80ec3-a89d-448e-9672-645ce283a8b4

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 5, 2026 4:26 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 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
31682 report.consolidate complete 1 / 1 3 months ago
95515 artifact.fetch complete 1 / 3 2 weeks ago
95516 tool.cast_disasm complete 1 / 3 2 weeks ago
95517 analysis.bundle complete 1 / 3 2 weeks ago
95518 capability.graph complete 1 / 3 2 weeks ago
95519 detector.run complete 1 / 3 2 weeks ago
95520 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
Reviewed BYTECODE_BUNDLE.txt for concrete value-extraction paths. The only value-transferring CALL is a per-caller withdrawal from a stored balance, and the other CALLs are external contract interactions with revert-on-failure checks; no unprotected ETH/token/NFT drain or upgrade/delegatecall/selfdestruct path is evident from bytecode alone.
View stderr
[codex:212594] OpenAI Codex v0.77.0 (research preview)
[codex:212594] --------
[codex:212594] workdir: /tmp/codex-multi-oue7fqnv
[codex:212594] model: gpt-5.2-codex
[codex:212594] provider: openai
[codex:212594] approval: never
[codex:212594] sandbox: read-only
[codex:212594] reasoning effort: xhigh
[codex:212594] reasoning summaries: auto
[codex:212594] session id: 019b8c5e-bb03-7210-b3b5-b78e8333cfcf
[codex:212594] --------
[codex:212594] user
[codex:212594] 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:212594] 
[codex:212594] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:212594] 
[codex:212594] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:212594] - Gas inefficiency, code quality, or best practices
[codex:212594] - Theoretical vulnerabilities without a clear extraction path
[codex:212594] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:212594] - Issues requiring social engineering or off-chain coordination
[codex:212594] 
[codex:212594] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:212594] - CALL/DELEGATECALL with controllable destination or calldata
[codex:212594] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:212594] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:212594] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:212594] - External calls before state updates (reentrancy)
[codex:212594] - SELFDESTRUCT with controllable beneficiary
[codex:212594] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:212594] 
[codex:212594] For each finding, you MUST explain:
[codex:212594] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:212594] 2. The concrete sequence of transactions to extract value
[codex:212594] 3. Why you believe this is exploitable (not just suspicious)
[codex:212594] 
[codex:212594] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:212594] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:212594] 
[codex:212594] Output MUST be valid JSON matching the provided schema.
[codex:212594] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:212594] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:212594] mcp startup: no servers
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Reading BYTECODE_BUNDLE.txt**
[codex:212594] exec
[codex:212594] /bin/bash -lc ls in /tmp/codex-multi-oue7fqnv succeeded in 6ms:
[codex:212594] BYTECODE_BUNDLE.txt
[codex:212594] codex-output-schema.json
[codex:212594] exec
[codex:212594] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-oue7fqnv succeeded in 5ms:
[codex:212594] Runtime bytecode bundle for best-effort auditing.
[codex:212594] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:212594] 
[codex:212594] FILE: runtime_bytecode.hex
[codex:212594] 0x6060604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101f357806318160ddd146102815780631fd9f187146102aa578063210fe93b146102cd578063313ce567146103305780633ccfd60b1461035f5780633eaaf86b1461037457806340c558b21461039d57806342a4af66146103d4578063442890d5146104065780634da2b48e1461045b57806351605d801461047357806351ecfd161461050157806353e9dcae1461053857806355bdd4ac146105d45780635a3b7e421461061f57806361718141146106ad57806368d89792146106da57806370a08231146107495780637b2c514814610796578063861dd0a5146107d357806393fffddc1461086557806395d89b41146108ba5780639c9cc12a146109485780639d773a1b1461098b5780639e3e687814610a3a578063a0a8e46014610a67578063a2093e1b14610a96578063a7e1a8ee14610ac2578063a9059cbb14610b28578063ab179e9f14610b82578063b3c6487b14610bab578063b936483514610bd7578063d72503ba14610c3a578063dddf33cc14610c52578063e3acc49a14610c7e578063ea34130914610cb5578063ebeb0f4814610cde578063f3f4370314610cf3578063f7e2367714610d40575b600080fd5b34156101fe57600080fd5b610206610de5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024657808201518184015260208101905061022b565b50505050905090810190601f1680156102735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028c57600080fd5b610294610e83565b6040518082815260200191505060405180910390f35b34156102b557600080fd5b6102cb6004808035906020019091905050610e8d565b005b34156102d857600080fd5b6102ee600480803590602001909190505061106b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033b57600080fd5b61034361109e565b604051808260ff1660ff16815260200191505060405180910390f35b341561036a57600080fd5b6103726110b1565b005b341561037f57600080fd5b61038761117d565b6040518082815260200191505060405180910390f35b34156103a857600080fd5b6103be6004808035906020019091905050611183565b6040518082815260200191505060405180910390f35b34156103df57600080fd5b610404600480803563ffffffff169060200190919080359060200190919050506111a7565b005b341561041157600080fd5b610419611290565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047160048080359060200190919050506112ba565b005b341561047e57600080fd5b61048661147c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104c65780820151818401526020810190506104ab565b50505050905090810190601f1680156104f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561050c57600080fd5b610522600480803590602001909190505061151a565b6040518082815260200191505060405180910390f35b341561054357600080fd5b6105596004808035906020019091905050611599565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561059957808201518184015260208101905061057e565b50505050905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105df57600080fd5b61061d600480803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611649565b005b341561062a57600080fd5b610632611849565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610672578082015181840152602081019050610657565b50505050905090810190601f16801561069f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156106b857600080fd5b6106c06118e7565b604051808215151515815260200191505060405180910390f35b34156106e557600080fd5b610747600480803590602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118fa565b005b341561075457600080fd5b610780600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a96565b6040518082815260200191505060405180910390f35b34156107a157600080fd5b6107bd600480803563ffffffff16906020019091905050611b2d565b6040518082815260200191505060405180910390f35b34156107de57600080fd5b61084f600480803563ffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b45565b6040518082815260200191505060405180910390f35b341561087057600080fd5b610878611d18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108c557600080fd5b6108cd611d3e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561090d5780820151818401526020810190506108f2565b50505050905090810190601f16801561093a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561095357600080fd5b6109696004808035906020019091905050611ddc565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561099657600080fd5b6109ac6004808035906020019091905050611e3b565b60405180861515151581526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b3415610a4557600080fd5b610a4d611ebe565b604051808215151515815260200191505060405180910390f35b3415610a7257600080fd5b610a7a611ed1565b604051808260ff1660ff16815260200191505060405180910390f35b3415610aa157600080fd5b610ac06004808035906020019091908035906020019091905050611ee4565b005b3415610acd57600080fd5b610b26600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612227565b005b3415610b3357600080fd5b610b68600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506122cd565b604051808215151515815260200191505060405180910390f35b3415610b8d57600080fd5b610b956124fb565b6040518082815260200191505060405180910390f35b3415610bb657600080fd5b610bd56004808035906020019091908035906020019091905050612501565b005b3415610be257600080fd5b610bf8600480803590602001909190505061259a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c50600480803590602001909190505061262f565b005b3415610c5d57600080fd5b610c7c6004808035906020019091908035906020019091905050612a1e565b005b3415610c8957600080fd5b610c9f6004808035906020019091905050612c09565b6040518082815260200191505060405180910390f35b3415610cc057600080fd5b610cc8612c21565b6040518082815260200191505060405180910390f35b3415610ce957600080fd5b610cf1612c27565b005b3415610cfe57600080fd5b610d2a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612cfe565b6040518082815260200191505060405180910390f35b3415610d4b57600080fd5b610d6a6004808035906020019091908035906020019091905050612d16565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610daa578082015181840152602081019050610d8f565b50505050905090810190601f168015610dd75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e7b5780601f10610e5057610100808354040283529160200191610e7b565b820191906000526020600020905b815481529060010190602001808311610e5e57829003601f168201915b505050505081565b6000600654905090565b3373ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610efa57600080fd5b60065481101515610f0a57600080fd5b60a0604051908101604052806000151581526020018281526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152506011600083815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050807f7d5dcd38c1855f2d3253f06fbd995a7b03b1bd0d20277c21ffcb093862ccb0df60405160405180910390a250565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900460ff1681565b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561117a57600080fd5b50565b60065481565b60108181548110151561119257fe5b90600052602060002090016000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120357600080fd5b6010805490508263ffffffff161115151561121d57600080fd5b80600b60008463ffffffff1663ffffffff168152602001908152602001600020819055507f0d18952b49d796ef682b17341dc9347e1cbd53ede7fa0529048f9d1c2c485fd48282604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760169054906101000a900460ff161515156112d657600080fd5b6000600854141515156112e857600080fd5b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561134057600080fd5b6006548110151561135057600080fd5b6009548110151561136057600080fd5b3461136a8261151a565b1115151561137757600080fd5b33600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600860008154809291906001900391905055503373ffffffffffffffffffffffffffffffffffffffff167f8a0e37b73a0d9c82e205d4d1a3ff3d0b57ce5f4d7bccf6bac03336dc101cb7ba826040518082815260200191505060405180910390a250565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115125780601f106114e757610100808354040283529160200191611512565b820191906000526020600020905b8154815290600101906020018083116114f557829003601f168201915b505050505081565b6000806006548310151561152d57600080fd5b6000600c60008581526020019081526020016000205414151561156557600c6000848152602001908152602001600020549150611593565b61156e83611ddc565b9050600b60008263ffffffff1663ffffffff1681526020019081526020016000205491505b50919050565b600e6020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116415780601f1061161657610100808354040283529160200191611641565b820191906000526020600020905b81548152906001019060200180831161162457829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff16600a600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116b657600080fd5b600654831015156116c657600080fd5b60a0604051908101604052806001151581526020018481526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152506011600085815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508073ffffffffffffffffffffffffffffffffffffffff16837f76eaef99642f3e716e9cfa6e3047136d4087a9fc18673cb754c35f522fa6f61f846040518082815260200191505060405180910390a3505050565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118df5780601f106118b4576101008083540402835291602001916118df565b820191906000526020600020905b8154815290600101906020018083116118c257829003601f168201915b505050505081565b600760159054906101000a900460ff1681565b611902612dd5565b6006548410151561191257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600a600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561197f57600080fd5b600083101580156119905750600683105b151561199b57600080fd5b600e60008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a425780601f10611a1757610100808354040283529160200191611a42565b820191906000526020600020905b815481529060010190602001808311611a2557829003601f168201915b505050505090506000815114151515611a5a57600080fd5b81600f600086815260200190815260200160002084600681101515611a7b57fe5b019080519060200190611a8f929190612de9565b5050505050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151515611ae657600080fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b6020528060005260406000206000915090505481565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ba457600080fd5b600760159054906101000a900460ff16151515611bc057600080fd5b600085111515611bcf57600080fd5b84600954016009819055506006549050846006540160068190555084600854016008819055508260009080519060200190611c0b929190612de9565b5083600b60008863ffffffff1663ffffffff1681526020019081526020016000208190555060108054806001018281611c449190612e69565b9160005260206000209001600060065490919091505550847f76edb1b512062ed2fa9a21753f6906d5806f2522b48caf004f8b78eac6418ee560065486866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611cce578082015181840152602081019050611cb3565b50505050905090810190601f168015611cfb5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2600654915050949350505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd45780601f10611da957610100808354040283529160200191611dd4565b820191906000526020600020905b815481529060010190602001808311611db757829003601f168201915b505050505081565b600080600090505b6010805490508163ffffffff161015611e34578260108263ffffffff16815481101515611e0d57fe5b9060005260206000209001541115611e2757809150611e35565b8080600101915050611de4565b5b50919050565b60116020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b600760169054906101000a900460ff1681565b600760149054906101000a900460ff1681565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f4757600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694508693505b8584111515612191578473ffffffffffffffffffffffffffffffffffffffff1663210fe93b856000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611ff057600080fd5b6102c65a03f1151561200157600080fd5b50505060405180519050925060008373ffffffffffffffffffffffffffffffffffffffff161415156121845782600a600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff166370a08231846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561212257600080fd5b6102c65a03f1151561213357600080fd5b50505060405180519050915081600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8380600101945050611f70565b8473ffffffffffffffffffffffffffffffffffffffff1663ea3413096000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156121fd57600080fd5b6102c65a03f1151561220e57600080fd5b5050506040518051905060088190555050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228457600080fd5b600083101580156122955750600683105b15156122a057600080fd5b81600e600085815260200190815260200160002090805190602001906122c7929190612de9565b50505050565b60006006548210801561233e57503373ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561238957506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156124ed57600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060019003919050555082600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506124f2565b600090505b80905092915050565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255e57600080fd5b6006548310151561256e57600080fd5b60008211151561257d57600080fd5b81600c600085815260200190815260200160002081905550505050565b600080600a600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125f457600080fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806006548310151561264257600080fd5b6011600084815260200190815260200160002091508160000160009054906101000a900460ff16151561267457600080fd5b8160030154341015151561268757600080fd5b600a600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561271857600080fd5b60008260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156127bb573373ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156127ba57600080fd5b5b8160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905033600a600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60016040518082815260200191505060405180910390a3827f7d5dcd38c1855f2d3253f06fbd995a7b03b1bd0d20277c21ffcb093862ccb0df60405160405180910390a234601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16847f6bd7e7dd1046023e899374de62f095782f09a5ad4633e535375a11724bafed74346040518082815260200191505060405180910390a4505050565b3373ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a8b57600080fd5b60065482101515612a9b57600080fd5b60a0604051908101604052806001151581526020018381526020013373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001600073ffffffffffffffffffffffffffffffffffffffff168152506011600084815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506000827f76eaef99642f3e716e9cfa6e3047136d4087a9fc18673cb754c35f522fa6f61f836040518082815260200191505060405180910390a35050565b600c6020528060005260406000206000915090505481565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c8457600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ce057600080fd5b6001600760156101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915090505481565b600f60205281600052604060002081600681101515612d3157fe5b01600091509150508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612dcd5780601f10612da257610100808354040283529160200191612dcd565b820191906000526020600020905b815481529060010190602001808311612db057829003601f168201915b505050505081565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612e2a57805160ff1916838001178555612e58565b82800160010185558215612e58579182015b82811115612e57578251825591602001919060010190612e3c565b5b509050612e659190612e95565b5090565b815481835581811511612e9057818360005260206000209182019101612e8f9190612e95565b5b505050565b612eb791905b80821115612eb3576000816000905550600101612e9b565b5090565b905600a165627a7a7230582064d7be1bcfd74d2391c2da3ea96662a2ef6143b56175c95f2cebc40d28868d460029
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Planning bytecode static analysis**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] # extract hex after '0x'
[codex:212594] m = re.search(r'0x([0-9a-fA-F]+)', code)
[codex:212594] hexstr = m.group(1)
[codex:212594] # convert to bytes
[codex:212594] b = bytes.fromhex(hexstr)
[codex:212594] # opcode mapping
[codex:212594] opcodes = {}
[codex:212594] for i in range(0x00, 0x60):
[codex:212594]     # default
[codex:212594]     pass
[codex:212594] # fill known opcodes
[codex:212594] opcodes.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:212594] 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:212594] 0x20:'SHA3',
[codex:212594] 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:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] # disassemble and capture call-like opcodes with offsets
[codex:212594] calls = []
[codex:212594] selfdestructs = []
[codex:212594] delegates = []
[codex:212594] ops = []
[codex:212594] 
[codex:212594] i = 0
[codex:212594] while i < len(b):
[codex:212594]     op = b[i]
[codex:212594]     name = opcodes.get(op, f'OP{op:02x}')
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op - 0x5f
[codex:212594]         data = b[i+1:i+1+n]
[codex:212594]         ops.append((i, name, data))
[codex:212594]         i += 1 + n
[codex:212594]         continue
[codex:212594]     ops.append((i, name, None))
[codex:212594]     if name in ('CALL','CALLCODE','STATICCALL'):
[codex:212594]         calls.append(i)
[codex:212594]     if name == 'DELEGATECALL':
[codex:212594]         delegates.append(i)
[codex:212594]     if name == 'SELFDESTRUCT':
[codex:212594]         selfdestructs.append(i)
[codex:212594]     i += 1
[codex:212594] 
[codex:212594] print('bytecode length', len(b))
[codex:212594] print('CALL-like offsets', calls[:20], '... total', len(calls))
[codex:212594] print('DELEGATECALL offsets', delegates)
[codex:212594] print('SELFDESTRUCT offsets', selfdestructs)
[codex:212594] 
[codex:212594] # Show surrounding opcodes for CALL/DELEGATECALL/SELFDESTRUCT (few)
[codex:212594] from itertools import islice
[codex:212594] 
[codex:212594] index_by_offset = {off: idx for idx,(off,_,_) in enumerate(ops)}
[codex:212594] 
[codex:212594] def show_context(off, window=8):
[codex:212594]     idx = index_by_offset[off]
[codex:212594]     for j in range(max(0, idx-window), min(len(ops), idx+window+1)):
[codex:212594]         o_off, o_name, o_data = ops[j]
[codex:212594]         if o_data is not None:
[codex:212594]             print(f\"{o_off:04x}: {o_name} 0x{o_data.hex()}\")
[codex:212594]         else:
[codex:212594]             print(f\"{o_off:04x}: {o_name}\")
[codex:212594]     print('---')
[codex:212594] 
[codex:212594] print('\\nContexts around DELEGATECALL')
[codex:212594] for off in delegates:
[codex:212594]     show_context(off)
[codex:212594] 
[codex:212594] print('Contexts around SELFDESTRUCT')
[codex:212594] for off in selfdestructs:
[codex:212594]     show_context(off)
[codex:212594] 
[codex:212594] # print context for first 10 CALLs
[codex:212594] print('Contexts around first 8 CALLs')
[codex:212594] for off in calls[:8]:
[codex:212594]     show_context(off)
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 37ms:
[codex:212594] bytecode length 12006
[codex:212594] CALL-like offsets [4458, 8182, 8488, 8707] ... total 4
[codex:212594] DELEGATECALL offsets []
[codex:212594] SELFDESTRUCT offsets []
[codex:212594] 
[codex:212594] Contexts around DELEGATECALL
[codex:212594] Contexts around SELFDESTRUCT
[codex:212594] Contexts around first 8 CALLs
[codex:212594] 1162: MLOAD
[codex:212594] 1163: DUP1
[codex:212594] 1164: DUP4
[codex:212594] 1165: SUB
[codex:212594] 1166: DUP2
[codex:212594] 1167: DUP6
[codex:212594] 1168: DUP9
[codex:212594] 1169: DUP9
[codex:212594] 116a: CALL
[codex:212594] 116b: SWAP4
[codex:212594] 116c: POP
[codex:212594] 116d: POP
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Examining CALL instructions in detail**
[codex:212594] 
[codex:212594] I'm focusing on the four CALL opcodes found, aiming to understand their arguments and whether they're involved in ETH or token transfers. Since their stack arguments are intricate, I plan to generate disassembly around each call with ample context and try a partial stack evaluation to decode gas, to-address, and value parameters. Given the small number of calls, a manual deep dive seems feasible.
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # opcode map
[codex:212594] opnames = {}
[codex:212594] # create map
[codex:212594] for i in range(0x00,0x100):
[codex:212594]     opnames[i]=f'OP{i:02x}'
[codex:212594] # fill
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:212594] 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:212594] 0x20:'SHA3',
[codex:212594] 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:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] # build disassembly list
[codex:212594] ops = []
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i, name, data))
[codex:212594]         i += 1+n
[codex:212594]     else:
[codex:212594]         ops.append((i, name, None))
[codex:212594]         i += 1
[codex:212594] 
[codex:212594] # find CALL offsets
[codex:212594] call_offsets = [off for off,name,data in ops if name=='CALL']
[codex:212594] print('CALL offsets', [hex(o) for o in call_offsets])
[codex:212594] 
[codex:212594] index_by_off = {off: idx for idx,(off,_,_) in enumerate(ops)}
[codex:212594] 
[codex:212594] def dump(off, window=25):
[codex:212594]     idx = index_by_off[off]
[codex:212594]     start = max(0, idx-window)
[codex:212594]     end = min(len(ops), idx+window+1)
[codex:212594]     for j in range(start,end):
[codex:212594]         o_off, o_name, o_data = ops[j]
[codex:212594]         if o_data is not None:
[codex:212594]             print(f\"{o_off:04x}: {o_name} 0x{o_data.hex()}\")
[codex:212594]         else:
[codex:212594]             print(f\"{o_off:04x}: {o_name}\")
[codex:212594]     print('---')
[codex:212594] 
[codex:212594] for off in call_offsets:
[codex:212594]     dump(off, window=30)
[codex:212594] 
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 34ms:
[codex:212594] CALL offsets ['0x116a', '0x1ff6', '0x2128', '0x2203']
[codex:212594] 1131: PUSH1 0x20
[codex:212594] 1133: ADD
[codex:212594] 1134: PUSH1 0x00
[codex:212594] 1136: SHA3
[codex:212594] 1137: DUP2
[codex:212594] 1138: SWAP1
[codex:212594] 1139: SSTORE
[codex:212594] 113a: POP
[codex:212594] 113b: CALLER
[codex:212594] 113c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:212594] 1151: AND
[codex:212594] 1152: PUSH2 0x08fc
[codex:212594] 1155: DUP3
[codex:212594] 1156: SWAP1
[codex:212594] 1157: DUP2
[codex:212594] 1158: ISZERO
[codex:212594] 1159: MUL
[codex:212594] 115a: SWAP1
[codex:212594] 115b: PUSH1 0x40
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing EVM call instructions**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # parse opcodes and find JUMPDEST offsets
[codex:212594] jumps = []
[codex:212594] ops=[]
[codex:212594] # opcode names for 0x5b
[codex:212594] 
[codex:212594] opnames = {0x5b:'JUMPDEST'}
[codex:212594] 
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     if op==0x5b:
[codex:212594]         jumps.append(i)
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         i += 1 + (op-0x5f)
[codex:212594]     else:
[codex:212594]         i += 1
[codex:212594] 
[codex:212594] # show jumpdest near 0x116a
[codex:212594] near = [j for j in jumps if 0x1100 <= j <= 0x11c0]
[codex:212594] print([hex(j) for j in near])
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 29ms:
[codex:212594] ['0x117a', '0x117d', '0x1183', '0x1192', '0x11a7']
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Planning function selector mapping**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # disassemble
[codex:212594] opnames = {}
[codex:212594] for i in range(0x100): opnames[i]=f'OP{i:02x}'
[codex:212594] # fill
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:212594] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i, name, data))
[codex:212594]         i += 1+n
[codex:212594]     else:
[codex:212594]         ops.append((i, name, None))
[codex:212594]         i += 1
[codex:212594] 
[codex:212594] # find dispatcher region: from start until first JUMPDEST after initial code? We'll just scan first 500 ops for PUSH4 patterns followed by EQ and JUMPI to get mapping.
[codex:212594] 
[codex:212594] mapping = []
[codex:212594] for idx,(off,name,data) in enumerate(ops[:400]):
[codex:212594]     if name == 'PUSH4':
[codex:212594]         selector = data.hex()
[codex:212594]         # look ahead for EQ, PUSH2, JUMPI pattern in next few ops
[codex:212594]         for j in range(idx+1, min(idx+8, len(ops))):
[codex:212594]             if ops[j][1] == 'EQ':
[codex:212594]                 # look for PUSH2 then JUMPI after
[codex:212594]                 for k in range(j+1, min(j+6, len(ops))):
[codex:212594]                     if ops[k][1] == 'PUSH2' and ops[k+1][1] == 'JUMPI':
[codex:212594]                         dest = int.from_bytes(ops[k][2], 'big')
[codex:212594]                         mapping.append((selector, dest, off))
[codex:212594]                         break
[codex:212594]                 break
[codex:212594] 
[codex:212594] print('selectors mapped', len(mapping))
[codex:212594] # show unique selectors mapping
[codex:212594] seen = set()
[codex:212594] for selector, dest, off in mapping:
[codex:212594]     if selector in seen:
[codex:212594]         continue
[codex:212594]     seen.add(selector)
[codex:212594]     print(selector, hex(dest))
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 35ms:
[codex:212594] selectors mapped 41
[codex:212594] ffffffff 0x1f3
[codex:212594] 06fdde03 0x1f3
[codex:212594] 18160ddd 0x281
[codex:212594] 1fd9f187 0x2aa
[codex:212594] 210fe93b 0x2cd
[codex:212594] 313ce567 0x330
[codex:212594] 3ccfd60b 0x35f
[codex:212594] 3eaaf86b 0x374
[codex:212594] 40c558b2 0x39d
[codex:212594] 42a4af66 0x3d4
[codex:212594] 442890d5 0x406
[codex:212594] 4da2b48e 0x45b
[codex:212594] 51605d80 0x473
[codex:212594] 51ecfd16 0x501
[codex:212594] 53e9dcae 0x538
[codex:212594] 55bdd4ac 0x5d4
[codex:212594] 5a3b7e42 0x61f
[codex:212594] 61718141 0x6ad
[codex:212594] 68d89792 0x6da
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing function call locations in bytecode**
[codex:212594] 
[codex:212594] I'm mapping call instruction offsets to their containing functions by comparing offsets to known function entry points, trying to figure out which external functions invoke internal code segments. This helps me identify that a call near 0x116a is likely part of an internal withdraw-like function handling ETH refunds safely by setting balances to zero before transferring ETH with limited gas. I'm parsing opcode snippets to verify the logic and confirm proper sequence to prevent reentrancy.
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] # disassemble into list
[codex:212594] opnames = {}
[codex:212594] for i in range(0x100): opnames[i]=f'OP{i:02x}'
[codex:212594] # fill
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:212594] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i, name, data))
[codex:212594]         i += 1+n
[codex:212594]     else:
[codex:212594]         ops.append((i, name, None))
[codex:212594]         i += 1
[codex:212594] 
[codex:212594] # print disasm between offsets
[codex:212594] start=0x10d0
[codex:212594] end=0x1190
[codex:212594] for off,name,data in ops:
[codex:212594]     if off < start: continue
[codex:212594]     if off > end: break
[codex:212594]     if data is not None:
[codex:212594]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:212594]     else:
[codex:212594]         print(f\"{off:04x}: {name}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 49ms:
[codex:212594] 10e4: AND
[codex:212594] 10e5: DUP2
[codex:212594] 10e6: MSTORE
[codex:212594] 10e7: PUSH1 0x20
[codex:212594] 10e9: ADD
[codex:212594] 10ea: SWAP1
[codex:212594] 10eb: DUP2
[codex:212594] 10ec: MSTORE
[codex:212594] 10ed: PUSH1 0x20
[codex:212594] 10ef: ADD
[codex:212594] 10f0: PUSH1 0x00
[codex:212594] 10f2: SHA3
[codex:212594] 10f3: SLOAD
[codex:212594] 10f4: SWAP1
[codex:212594] 10f5: POP
[codex:212594] 10f6: PUSH1 0x00
[codex:212594] 10f8: PUSH1 0x12
[codex:212594] 10fa: PUSH1 0x00
[codex:212594] 10fc: CALLER
[codex:212594] 10fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing EVM mapping and storage access**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:212594] 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:212594] 0x20:'SHA3',
[codex:212594] 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:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i, name, data))
[codex:212594]         i += 1+n
[codex:212594]     else:
[codex:212594]         ops.append((i, name, None))
[codex:212594]         i += 1
[codex:212594] 
[codex:212594] start=0x1080
[codex:212594] end=0x10f8
[codex:212594] for off,name,data in ops:
[codex:212594]     if off < start: continue
[codex:212594]     if off > end: break
[codex:212594]     if data is not None:
[codex:212594]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:212594]     else:
[codex:212594]         print(f\"{off:04x}: {name}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 31ms:
[codex:212594] 1080: PUSH2 0x0100
[codex:212594] 1083: EXP
[codex:212594] 1084: SWAP1
[codex:212594] 1085: DIV
[codex:212594] 1086: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:212594] 109b: AND
[codex:212594] 109c: DUP2
[codex:212594] 109d: JUMP
[codex:212594] 109e: JUMPDEST
[codex:212594] 109f: PUSH1 0x05
[codex:212594] 10a1: PUSH1 0x00
[codex:212594] 10a3: SWAP1
[codex:212594] 10a4: SLOAD
[codex:212594] 10a5: SWAP1
[codex:212594] 10a6: PUSH2 0x0100
[codex:212594] 10a9: EXP
[codex:212594] 10aa: SWAP1
[codex:212594] 10ab: DIV
[codex:212594] 10ac: PUSH1 0xff
[codex:212594] 10ae: AND
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing function entry and storage operations**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] # disassemble with ops
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] # fill minimal
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:212594] 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:212594] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] # Build opcode list
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] # map offset to index
[codex:212594] idx_by_off = {off: idx for idx,(off,_,_) in enumerate(ops)}
[codex:212594] 
[codex:212594] start_off = 0x10b1
[codex:212594] end_off = 0x1172
[codex:212594] 
[codex:212594] # symbolic stack
[codex:212594] stack = []
[codex:212594] # helper to name new symbols
[codex:212594] sym_id = 0
[codex:212594] 
[codex:212594] def sym(name):
[codex:212594]     global sym_id
[codex:212594]     sym_id +=1
[codex:212594]     return f\"{name}{sym_id}\"
[codex:212594] 
[codex:212594] # simple memory map for MLOAD/MSTORE
[codex:212594] mem = {}
[codex:212594] 
[codex:212594] # iterate ops in range
[codex:212594] start_idx = idx_by_off[start_off]
[codex:212594] end_idx = idx_by_off[end_off]
[codex:212594] 
[codex:212594] for idx in range(start_idx, end_idx+1):
[codex:212594]     off,name,data = ops[idx]
[codex:212594]     # print state near CALL maybe
[codex:212594]     if name == 'CALL':
[codex:212594]         print(f\"Before CALL at {off:x} stack(top->bottom):\", list(reversed(stack)))
[codex:212594]     # simulate
[codex:212594]     if name.startswith('PUSH'):
[codex:212594]         val = int.from_bytes(data, 'big')
[codex:212594]         stack.append(hex(val))
[codex:212594]     elif name.startswith('DUP'):
[codex:212594]         n = int(name[3:])
[codex:212594]         stack.append(stack[-n])
[codex:212594]     elif name.startswith('SWAP'):
[codex:212594]         n = int(name[4:])
[codex:212594]         stack[-1], stack[-1-n] = stack[-1-n], stack[-1]
[codex:212594]     elif name in ('POP',):
[codex:212594]         if stack: stack.pop()
[codex:212594]     elif name in ('ADD','SUB','MUL','DIV','AND','OR','XOR','EQ','LT','GT','ISZERO'):
[codex:212594]         # binary ops (except ISZERO unary)
[codex:212594]         if name == 'ISZERO':
[codex:212594]             a = stack.pop(); stack.append(f\"iszero({a})\")
[codex:212594]         else:
[codex:212594]             b = stack.pop(); a = stack.pop();
[codex:212594]             stack.append(f\"({a} {name.lower()} {b})\")
[codex:212594]     elif name == 'SHA3':
[codex:212594]         offset = stack.pop(); size = stack.pop();
[codex:212594]         stack.append(f\"keccak({offset},{size})\")
[codex:212594]     elif name == 'SLOAD':
[codex:212594]         slot = stack.pop(); stack.append(f\"sload({slot})\")
[codex:212594]     elif name == 'SSTORE':
[codex:212594]         val = stack.pop(); slot = stack.pop();
[codex:212594]         # ignore effect
[codex:212594]     elif name == 'MSTORE':
[codex:212594]         val = stack.pop(); offset = stack.pop(); mem[offset]=val
[codex:212594]     elif name == 'MLOAD':
[codex:212594]         offset = stack.pop(); stack.append(f\"mload({offset})\")
[codex:212594]     elif name == 'CALLER':
[codex:212594]         stack.append('caller')
[codex:212594]     elif name == 'CALLVALUE':
[codex:212594]         stack.append('callvalue')
[codex:212594]     elif name == 'GAS':
[codex:212594]         stack.append('gas')
[codex:212594]     elif name == 'CALL':
[codex:212594]         # pop 7 args
[codex:212594]         if len(stack) >= 7:
[codex:212594]             out_size = stack.pop(); out_off = stack.pop(); in_size = stack.pop(); in_off = stack.pop(); value = stack.pop(); to = stack.pop(); gasv = stack.pop();
[codex:212594]             stack.append(f\"callret\")
[codex:212594]             print('CALL args gas,to,value,in_off,in_size,out_off,out_size:', gasv,to,value,in_off,in_size,out_off,out_size)
[codex:212594]     elif name == 'JUMP' or name == 'JUMPI' or name=='JUMPDEST':
[codex:212594]         pass
[codex:212594]     elif name in ('RETURN','REVERT'):
[codex:212594]         pass
[codex:212594]     else:
[codex:212594]         # unknown or unhandled
[codex:212594]         pass
[codex:212594] 
[codex:212594] # print final stack
[codex:212594] print('Final stack', stack[-10:])
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 32ms:
[codex:212594] Before CALL at 116a stack(top->bottom): ['(0x8fc mul iszero(sload(keccak(0x0,((0x0 add 0x20) add 0x20)))))', '(caller and 0xffffffffffffffffffffffffffffffffffffffff)', 'sload(keccak(0x0,((0x0 add 0x20) add 0x20)))', 'mload(0x40)', '(mload(0x40) sub mload(0x40))', 'mload(0x40)', '0x0', 'mload(0x40)', 'sload(keccak(0x0,((0x0 add 0x20) add 0x20)))', '(0x8fc mul iszero(sload(keccak(0x0,((0x0 add 0x20) add 0x20)))))', '(caller and 0xffffffffffffffffffffffffffffffffffffffff)', 'sload(keccak(0x0,((0x0 add 0x20) add 0x20)))']
[codex:212594] CALL args gas,to,value,in_off,in_size,out_off,out_size: 0x0 mload(0x40) (mload(0x40) sub mload(0x40)) mload(0x40) sload(keccak(0x0,((0x0 add 0x20) add 0x20))) (caller and 0xffffffffffffffffffffffffffffffffffffffff) (0x8fc mul iszero(sload(keccak(0x0,((0x0 add 0x20) add 0x20)))))
[codex:212594] Final stack ['sload(keccak(0x0,((0x0 add 0x20) add 0x20)))', 'iszero(iszero(callret))', '0x117a']
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing stack mis-simulation causes**
[codex:212594] 
[codex:212594] The symbolic execution is off because we started simulating at an internal function entry with an empty stack, missing prior context that fills the stack. I’ll focus on finding the true function entry by locating JUMP instructions targeting 0x10b1 to understand what arguments get passed on the stack, so I can build a more accurate simulation starting point.
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({0x56:'JUMP',0x57:'JUMPI',0x61:'PUSH2',0x60:'PUSH1',0x5b:'JUMPDEST'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames.get(op,f'OP{op:02x}')
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i += 1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i += 1
[codex:212594] 
[codex:212594] # find push2 0x10b1 followed by jump
[codex:212594] for idx,(off,name,data) in enumerate(ops):
[codex:212594]     if name == 'PUSH2' and data == bytes.fromhex('10b1'):
[codex:212594]         # look ahead for JUMP
[codex:212594]         if idx+1 < len(ops) and ops[idx+1][1] == 'JUMP':
[codex:212594]             print('direct jump at', hex(off))
[codex:212594]         # look ahead for JUMPI
[codex:212594]         if idx+1 < len(ops) and ops[idx+1][1] == 'JUMPI':
[codex:212594]             print('conditional jump at', hex(off))
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 33ms:
[codex:212594] direct jump at 0x36e
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing function jumps and selectors**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:212594] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] start=0x35a
[codex:212594] end=0x380
[codex:212594] for off,name,data in ops:
[codex:212594]     if off < start: continue
[codex:212594]     if off > end: break
[codex:212594]     if data is not None:
[codex:212594]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:212594]     else:
[codex:212594]         print(f\"{off:04x}: {name}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 39ms:
[codex:212594] 035a: DUP1
[codex:212594] 035b: SWAP2
[codex:212594] 035c: SUB
[codex:212594] 035d: SWAP1
[codex:212594] 035e: RETURN
[codex:212594] 035f: JUMPDEST
[codex:212594] 0360: CALLVALUE
[codex:212594] 0361: ISZERO
[codex:212594] 0362: PUSH2 0x036a
[codex:212594] 0365: JUMPI
[codex:212594] 0366: PUSH1 0x00
[codex:212594] 0368: DUP1
[codex:212594] 0369: REVERT
[codex:212594] 036a: JUMPDEST
[codex:212594] 036b: PUSH2 0x0372
[codex:212594] 036e: PUSH2 0x10b1
[codex:212594] 0371: JUMP
[codex:212594] 0372: JUMPDEST
[codex:212594] 0373: STOP
[codex:212594] 0374: JUMPDEST
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing external call patterns**
[codex:212594] 
[codex:212594] I'm examining the withdraw-like function’s safety by checking its balance updates and call order to confirm no reentrancy issues. Now, I’m turning to inspect suspicious external token calls around 0x1ff6 that might allow arbitrary token transfers if unprotected, focusing on decoding the low-level call setup and calldata construction nearby.
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:212594] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] start=0x1f80
[codex:212594] end=0x2050
[codex:212594] for off,name,data in ops:
[codex:212594]     if off < start: continue
[codex:212594]     if off > end: break
[codex:212594]     if data is not None:
[codex:212594]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:212594]     else:
[codex:212594]         print(f\"{off:04x}: {name}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 32ms:
[codex:212594] 1f90: AND
[codex:212594] 1f91: PUSH4 0x210fe93b
[codex:212594] 1f96: DUP6
[codex:212594] 1f97: PUSH1 0x00
[codex:212594] 1f99: PUSH1 0x40
[codex:212594] 1f9b: MLOAD
[codex:212594] 1f9c: PUSH1 0x20
[codex:212594] 1f9e: ADD
[codex:212594] 1f9f: MSTORE
[codex:212594] 1fa0: PUSH1 0x40
[codex:212594] 1fa2: MLOAD
[codex:212594] 1fa3: DUP3
[codex:212594] 1fa4: PUSH4 0xffffffff
[codex:212594] 1fa9: AND
[codex:212594] 1faa: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
[codex:212594] 1fc8: MUL
[codex:212594] 1fc9: DUP2
[codex:212594] 1fca: MSTORE
[codex:212594] 1fcb: PUSH1 0x04
[codex:212594] 1fcd: ADD
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing external call with selector 0x210fe93b**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] # find JUMPDESTs
[codex:212594] jumps=[]
[codex:212594] i=0
[codex:212594] while i<len(bytecode):
[codex:212594]     op=bytecode[i]
[codex:212594]     if op==0x5b:
[codex:212594]         jumps.append(i)
[codex:212594]     if 0x60<=op<=0x7f:
[codex:212594]         i+=1+(op-0x5f)
[codex:212594]     else:
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] near=[j for j in jumps if 0x1f00<=j<=0x2220]
[codex:212594] print([hex(j) for j in near])
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 31ms:
[codex:212594] ['0x1f47', '0x1f70', '0x1ff0', '0x2001', '0x2122', '0x2133', '0x2184', '0x2191', '0x21fd', '0x220e']
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing jump destinations and call sequences**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i<len(bytecode):
[codex:212594]     op=bytecode[i]
[codex:212594]     name=op
[codex:212594]     if 0x60<=op<=0x7f:
[codex:212594]         n=op-0x5f
[codex:212594]         data=bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,op,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,op,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] # search for PUSH2 0x1f47 and following JUMP
[codex:212594] for idx,(off,op,data) in enumerate(ops):
[codex:212594]     if op==0x61 and data==bytes.fromhex('1f47'):
[codex:212594]         if idx+1<len(ops) and ops[idx+1][1]==0x56:
[codex:212594]             print('direct jump at', hex(off))
[codex:212594]         if idx+1<len(ops) and ops[idx+1][1]==0x57:
[codex:212594]             print('conditional jump at', hex(off))
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 34ms:
[codex:212594] conditional jump at 0x1f3f
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing internal function usage**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i<len(bytecode):
[codex:212594]     op=bytecode[i]
[codex:212594]     if 0x60<=op<=0x7f:
[codex:212594]         n=op-0x5f
[codex:212594]         data=bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,op,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,op,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] for target in ['1f70','1f47','1f90','1fbd']:
[codex:212594]     t=bytes.fromhex(target)
[codex:212594]     print('target',target)
[codex:212594]     for idx,(off,op,data) in enumerate(ops):
[codex:212594]         if op==0x61 and data==t:
[codex:212594]             nxt = ops[idx+1][1] if idx+1<len(ops) else None
[codex:212594]             if nxt==0x56:
[codex:212594]                 print('  direct jump at', hex(off))
[codex:212594]             elif nxt==0x57:
[codex:212594]                 print('  conditional jump at', hex(off))
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 38ms:
[codex:212594] target 1f70
[codex:212594]   direct jump at 0x218d
[codex:212594] target 1f47
[codex:212594]   conditional jump at 0x1f3f
[codex:212594] target 1f90
[codex:212594] target 1fbd
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Mapping internal and external function boundaries**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i<len(bytecode):
[codex:212594]     op=bytecode[i]
[codex:212594]     if 0x60<=op<=0x7f:
[codex:212594]         n=op-0x5f
[codex:212594]         data=bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,op,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,op,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] # gather jumps (push2 + jump)
[codex:212594] for idx,(off,op,data) in enumerate(ops):
[codex:212594]     if op==0x61 and data is not None:
[codex:212594]         target=int.from_bytes(data,'big')
[codex:212594]         if 0x1f00 <= target <= 0x2220:
[codex:212594]             # check next opcode
[codex:212594]             if idx+1<len(ops) and ops[idx+1][1] in (0x56,0x57):
[codex:212594]                 jop = 'JUMP' if ops[idx+1][1]==0x56 else 'JUMPI'
[codex:212594]                 print(f\"callsite {hex(off)} -> {hex(target)} {jop}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 32ms:
[codex:212594] callsite 0x1f3f -> 0x1f47 JUMPI
[codex:212594] callsite 0x1f76 -> 0x2191 JUMPI
[codex:212594] callsite 0x1fe8 -> 0x1ff0 JUMPI
[codex:212594] callsite 0x1ff9 -> 0x2001 JUMPI
[codex:212594] callsite 0x202a -> 0x2184 JUMPI
[codex:212594] callsite 0x211a -> 0x2122 JUMPI
[codex:212594] callsite 0x212b -> 0x2133 JUMPI
[codex:212594] callsite 0x218d -> 0x1f70 JUMP
[codex:212594] callsite 0x21f5 -> 0x21fd JUMPI
[codex:212594] callsite 0x2206 -> 0x220e JUMPI
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing function boundaries and selectors**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({
[codex:212594] 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:212594] 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:212594] 0x20:'SHA3',
[codex:212594] 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:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] start=0x1f00
[codex:212594] end=0x2250
[codex:212594] for off,name,data in ops:
[codex:212594]     if off < start: continue
[codex:212594]     if off > end: break
[codex:212594]     if data is not None:
[codex:212594]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:212594]     else:
[codex:212594]         print(f\"{off:04x}: {name}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 38ms:
[codex:212594] 1f0d: AND
[codex:212594] 1f0e: DUP1
[codex:212594] 1f0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:212594] 1f24: AND
[codex:212594] 1f25: CALLER
[codex:212594] 1f26: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:212594] 1f3b: AND
[codex:212594] 1f3c: EQ
[codex:212594] 1f3d: ISZERO
[codex:212594] 1f3e: ISZERO
[codex:212594] 1f3f: PUSH2 0x1f47
[codex:212594] 1f42: JUMPI
[codex:212594] 1f43: PUSH1 0x00
[codex:212594] 1f45: DUP1
[codex:212594] 1f46: REVERT
[codex:212594] 1f47: JUMPDEST
[codex:212594] 1f48: PUSH1 0x07
[codex:212594] 1f4a: PUSH1 0x00
[codex:212594] 1f4c: SWAP1
[codex:212594] 1f4d: SLOAD
[codex:212594] 
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing bytecode for profit exploits**
[codex:212594] thinking
[codex:212594] **Evaluating storage writes and access control**
[codex:212594] 
[codex:212594] I'm checking if storage writes to critical low slots have proper caller checks to rule out unprotected admin functions. I'll look for patterns like `CALLER` compared to stored owner before any SSTORE to slots 0-10 to verify access control around privileged updates.
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({
[codex:212594] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:212594] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:212594] 0x20:'SHA3',
[codex:212594] 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:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op = bytecode[i]
[codex:212594]     name = opnames[op]
[codex:212594]     if 0x60 <= op <= 0x7f:
[codex:212594]         n = op-0x5f
[codex:212594]         data = bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] # find SSTORE contexts
[codex:212594] sstore_indices = [idx for idx,(off,name,data) in enumerate(ops) if name=='SSTORE']
[codex:212594] 
[codex:212594] # print contexts where immediately before SSTORE is PUSH1 small slot maybe (heuristic)
[codex:212594] for idx in sstore_indices:
[codex:212594]     off,name,data = ops[idx]
[codex:212594]     # look back 4 ops for push1
[codex:212594]     for back in range(1,6):
[codex:212594]         if idx-back < 0: continue
[codex:212594]         o_off, o_name, o_data = ops[idx-back]
[codex:212594]         if o_name == 'PUSH1' and o_data is not None and o_data[0] <= 0x0a:
[codex:212594]             print('SSTORE at', hex(off), 'near PUSH1', hex(o_data[0]), 'at', hex(o_off))
[codex:212594]             # print context
[codex:212594]             start = max(0, idx-6)
[codex:212594]             end = min(len(ops), idx+3)
[codex:212594]             for j in range(start,end):
[codex:212594]                 oo, nn, dd = ops[j]
[codex:212594]                 if dd is not None:
[codex:212594]                     print(f\" {oo:04x}: {nn} 0x{dd.hex()}\")
[codex:212594]                 else:
[codex:212594]                     print(f\" {oo:04x}: {nn}\")
[codex:212594]             print('---')
[codex:212594]             break
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 36ms:
[codex:212594] SSTORE at 0xfa0 near PUSH1 0x1 at 0xf9d
[codex:212594]  0f99: DUP3
[codex:212594]  0f9a: ADD
[codex:212594]  0f9b: MLOAD
[codex:212594]  0f9c: DUP2
[codex:212594]  0f9d: PUSH1 0x01
[codex:212594]  0f9f: ADD
[codex:212594]  0fa0: SSTORE
[codex:212594]  0fa1: PUSH1 0x40
[codex:212594]  0fa3: DUP3
[codex:212594] ---
[codex:212594] SSTORE at 0xff1 near PUSH1 0x3 at 0xfee
[codex:212594]  0fea: DUP3
[codex:212594]  0feb: ADD
[codex:212594]  0fec: MLOAD
[codex:212594]  0fed: DUP2
[codex:212594]  0fee: PUSH1 0x03
[codex:212594]  0ff0: ADD
[codex:212594]  0ff1: SSTORE
[codex:212594]  0ff2: PUSH1 0x80
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Analyzing potential mint function access**
[codex:212594] exec
[codex:212594] /bin/bash -lc "python - <<'PY'
[codex:212594] from pathlib import Path
[codex:212594] import re
[codex:212594] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:212594] hexstr = re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:212594] bytecode = bytes.fromhex(hexstr)
[codex:212594] 
[codex:212594] # disassemble
[codex:212594] opnames = {i:f'OP{i:02x}' for i in range(0x100)}
[codex:212594] opnames.update({
[codex:212594] 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:212594] 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:212594] 0x20:'SHA3',
[codex:212594] 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:212594] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:212594] 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:212594] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:212594] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:212594] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:212594] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:212594] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:212594] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:212594] 
[codex:212594] ops=[]
[codex:212594] i=0
[codex:212594] while i < len(bytecode):
[codex:212594]     op=bytecode[i]
[codex:212594]     name=opnames[op]
[codex:212594]     if 0x60<=op<=0x7f:
[codex:212594]         n=op-0x5f
[codex:212594]         data=bytecode[i+1:i+1+n]
[codex:212594]         ops.append((i,name,data))
[codex:212594]         i+=1+n
[codex:212594]     else:
[codex:212594]         ops.append((i,name,None))
[codex:212594]         i+=1
[codex:212594] 
[codex:212594] start=0x1b70
[codex:212594] end=0x1c10
[codex:212594] for off,name,data in ops:
[codex:212594]     if off<start: continue
[codex:212594]     if off>end: break
[codex:212594]     if data is not None:
[codex:212594]         print(f\"{off:04x}: {name} 0x{data.hex()}\")
[codex:212594]     else:
[codex:212594]         print(f\"{off:04x}: {name}\")
[codex:212594] PY" in /tmp/codex-multi-oue7fqnv succeeded in 36ms:
[codex:212594] 1b81: AND
[codex:212594] 1b82: CALLER
[codex:212594] 1b83: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:212594] 1b98: AND
[codex:212594] 1b99: EQ
[codex:212594] 1b9a: ISZERO
[codex:212594] 1b9b: ISZERO
[codex:212594] 1b9c: PUSH2 0x1ba4
[codex:212594] 1b9f: JUMPI
[codex:212594] 1ba0: PUSH1 0x00
[codex:212594] 1ba2: DUP1
[codex:212594] 1ba3: REVERT
[codex:212594] 1ba4: JUMPDEST
[codex:212594] 1ba5: PUSH1 0x07
[codex:212594] 1ba7: PUSH1 0x15
[codex:212594] 1ba9: SWAP1
[codex:212594] 1baa: SLOAD
[codex:212594] 1bab: SWAP1
[codex:212594] 1bac: PUSH2 0x0100
[codex:212594] 1baf: EXP
[codex:212594] 
[codex:212594] thinking
[codex:212594] **Concluding no unprotected mint found**
[codex:212594] codex
[codex:212594] {"no_findings":true,"summary":"Reviewed BYTECODE_BUNDLE.txt for concrete value-extraction paths. The only value-transferring CALL is a per-caller withdrawal from a stored balance, and the other CALLs are external contract interactions with revert-on-failure checks; no unprotected ETH/token/NFT drain or upgrade/delegatecall/selfdestruct path is evident from bytecode alone.","findings":[]}
[codex:212594] tokens used
[codex:212594] 92,774
[codex:212594] {"no_findings":true,"summary":"Reviewed BYTECODE_BUNDLE.txt for concrete value-extraction paths. The only value-transferring CALL is a per-caller withdrawal from a stored balance, and the other CALLs are external contract interactions with revert-on-failure checks; no unprotected ETH/token/NFT drain or upgrade/delegatecall/selfdestruct path is evident from bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-05T04:26:13.356477+00:00",
        "returncode": 0
    },
    "summary": "Reviewed BYTECODE_BUNDLE.txt for concrete value-extraction paths. The only value-transferring CALL is a per-caller withdrawal from a stored balance, and the other CALLs are external contract interactions with revert-on-failure checks; no unprotected ETH/token/NFT drain or upgrade/delegatecall/selfdestruct path is evident from bytecode alone.",
    "raw_final": {
        "summary": "Reviewed BYTECODE_BUNDLE.txt for concrete value-extraction paths. The only value-transferring CALL is a per-caller withdrawal from a stored balance, and the other CALLs are external contract interactions with revert-on-failure checks; no unprotected ETH/token/NFT drain or upgrade/delegatecall/selfdestruct path is evident from bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
3
Total opcodes
6747
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x01ee
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002e: SWAP1
0000002f: DIV
00000030: PUSH4 0xffffffff
00000035: AND
00000036: DUP1
00000037: PUSH4 0x06fdde03
0000003c: EQ
0000003d: PUSH2 0x01f3
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0x18160ddd
00000047: EQ
00000048: PUSH2 0x0281
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0x1fd9f187
00000052: EQ
00000053: PUSH2 0x02aa
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0x210fe93b
0000005d: EQ
0000005e: PUSH2 0x02cd
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0x313ce567
00000068: EQ
00000069: PUSH2 0x0330
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0x3ccfd60b
00000073: EQ
00000074: PUSH2 0x035f
00000077: JUMPI
00000078: DUP1
00000079: PUSH4 0x3eaaf86b
0000007e: EQ
0000007f: PUSH2 0x0374
00000082: JUMPI
00000083: DUP1
00000084: PUSH4 0x40c558b2
00000089: EQ
0000008a: PUSH2 0x039d
0000008d: JUMPI
0000008e: DUP1
0000008f: PUSH4 0x42a4af66
00000094: EQ
00000095: PUSH2 0x03d4
00000098: JUMPI
00000099: DUP1
0000009a: PUSH4 0x442890d5
0000009f: EQ
000000a0: PUSH2 0x0406
000000a3: JUMPI
000000a4: DUP1
000000a5: PUSH4 0x4da2b48e
000000aa: EQ
000000ab: PUSH2 0x045b
000000ae: JUMPI
000000af: DUP1
000000b0: PUSH4 0x51605d80
000000b5: EQ
000000b6: PUSH2 0x0473
000000b9: JUMPI
000000ba: DUP1
000000bb: PUSH4 0x51ecfd16
000000c0: EQ
000000c1: PUSH2 0x0501
000000c4: JUMPI
000000c5: DUP1
000000c6: PUSH4 0x53e9dcae
000000cb: EQ
000000cc: PUSH2 0x0538
000000cf: JUMPI
000000d0: DUP1
000000d1: PUSH4 0x55bdd4ac
000000d6: EQ
000000d7: PUSH2 0x05d4
000000da: JUMPI
000000db: DUP1
000000dc: PUSH4 0x5a3b7e42
000000e1: EQ
000000e2: PUSH2 0x061f
000000e5: JUMPI
000000e6: DUP1
000000e7: PUSH4 0x61718141
000000ec: EQ
000000ed: PUSH2 0x06ad
000000f0: JUMPI
000000f1: DUP1
000000f2: PUSH4 0x68d89792
000000f7: EQ
000000f8: PUSH2 0x06da
000000fb: JUMPI
000000fc: DUP1
000000fd: PUSH4 0x70a08231
00000102: EQ
00000103: PUSH2 0x0749
00000106: JUMPI
00000107: DUP1
00000108: PUSH4 0x7b2c5148
0000010d: EQ
0000010e: PUSH2 0x0796
00000111: JUMPI
00000112: DUP1
00000113: PUSH4 0x861dd0a5
00000118: EQ
00000119: PUSH2 0x07d3
0000011c: JUMPI
0000011d: DUP1
0000011e: PUSH4 0x93fffddc
00000123: EQ
00000124: PUSH2 0x0865
00000127: JUMPI
00000128: DUP1
00000129: PUSH4 0x95d89b41
0000012e: EQ
0000012f: PUSH2 0x08ba
00000132: JUMPI
00000133: DUP1
00000134: PUSH4 0x9c9cc12a
00000139: EQ
0000013a: PUSH2 0x0948
0000013d: JUMPI
0000013e: DUP1
0000013f: PUSH4 0x9d773a1b
00000144: EQ
00000145: PUSH2 0x098b
00000148: JUMPI
00000149: DUP1
0000014a: PUSH4 0x9e3e6878
0000014f: EQ
00000150: PUSH2 0x0a3a
00000153: JUMPI
00000154: DUP1
00000155: PUSH4 0xa0a8e460
0000015a: EQ
0000015b: PUSH2 0x0a67
0000015e: JUMPI
0000015f: DUP1
00000160: PUSH4 0xa2093e1b
00000165: EQ
00000166: PUSH2 0x0a96
00000169: JUMPI
0000016a: DUP1
0000016b: PUSH4 0xa7e1a8ee
00000170: EQ
00000171: PUSH2 0x0ac2
00000174: JUMPI
00000175: DUP1
00000176: PUSH4 0xa9059cbb
0000017b: EQ
0000017c: PUSH2 0x0b28
0000017f: JUMPI
00000180: DUP1
00000181: PUSH4 0xab179e9f
00000186: EQ
00000187: PUSH2 0x0b82
0000018a: JUMPI
0000018b: DUP1
0000018c: PUSH4 0xb3c6487b
00000191: EQ
00000192: PUSH2 0x0bab
00000195: JUMPI
00000196: DUP1
00000197: PUSH4 0xb9364835
0000019c: EQ
0000019d: PUSH2 0x0bd7
000001a0: JUMPI
000001a1: DUP1
000001a2: PUSH4 0xd72503ba
000001a7: EQ
000001a8: PUSH2 0x0c3a
000001ab: JUMPI
000001ac: DUP1
000001ad: PUSH4 0xdddf33cc
000001b2: EQ
000001b3: PUSH2 0x0c52
000001b6: JUMPI
000001b7: DUP1
000001b8: PUSH4 0xe3acc49a
000001bd: EQ
000001be: PUSH2 0x0c7e
000001c1: JUMPI
000001c2: DUP1
000001c3: PUSH4 0xea341309
000001c8: EQ
000001c9: PUSH2 0x0cb5
000001cc: JUMPI
000001cd: DUP1
000001ce: PUSH4 0xebeb0f48
000001d3: EQ
000001d4: PUSH2 0x0cde
000001d7: JUMPI
000001d8: DUP1
000001d9: PUSH4 0xf3f43703
000001de: EQ
000001df: PUSH2 0x0cf3
000001e2: JUMPI
000001e3: DUP1
000001e4: PUSH4 0xf7e23677
000001e9: EQ
000001ea: PUSH2 0x0d40
000001ed: JUMPI
000001ee: JUMPDEST
000001ef: PUSH1 0x00
000001f1: DUP1
000001f2: REVERT
000001f3: JUMPDEST
000001f4: CALLVALUE
000001f5: ISZERO
000001f6: PUSH2 0x01fe
000001f9: JUMPI
000001fa: PUSH1 0x00
000001fc: DUP1
000001fd: REVERT
000001fe: JUMPDEST
000001ff: PUSH2 0x0206
00000202: PUSH2 0x0de5
00000205: JUMP
00000206: JUMPDEST
00000207: PUSH1 0x40
00000209: MLOAD
0000020a: DUP1
0000020b: DUP1
0000020c: PUSH1 0x20
0000020e: ADD
0000020f: DUP3
00000210: DUP2
00000211: SUB
00000212: DUP3
00000213: MSTORE
00000214: DUP4
00000215: DUP2
00000216: DUP2
00000217: MLOAD
00000218: DUP2
00000219: MSTORE
0000021a: PUSH1 0x20
0000021c: ADD
0000021d: SWAP2
0000021e: POP
0000021f: DUP1
00000220: MLOAD
00000221: SWAP1
00000222: PUSH1 0x20
00000224: ADD
00000225: SWAP1
00000226: DUP1
00000227: DUP4
00000228: DUP4
00000229: PUSH1 0x00
0000022b: JUMPDEST
0000022c: DUP4
0000022d: DUP2
0000022e: LT
0000022f: ISZERO
00000230: PUSH2 0x0246
00000233: JUMPI
00000234: DUP1
00000235: DUP3
00000236: ADD
00000237: MLOAD
00000238: DUP2
00000239: DUP5
0000023a: ADD
0000023b: MSTORE
0000023c: PUSH1 0x20
0000023e: DUP2
0000023f: ADD
00000240: SWAP1
00000241: POP
00000242: PUSH2 0x022b
00000245: JUMP
00000246: JUMPDEST
00000247: POP
00000248: POP
00000249: POP
0000024a: POP
0000024b: SWAP1
0000024c: POP
0000024d: SWAP1
0000024e: DUP2
0000024f: ADD
00000250: SWAP1
00000251: PUSH1 0x1f
00000253: AND
00000254: DUP1
00000255: ISZERO
00000256: PUSH2 0x0273
00000259: JUMPI
0000025a: DUP1
0000025b: DUP3
0000025c: SUB
0000025d: DUP1
0000025e: MLOAD
0000025f: PUSH1 0x01
00000261: DUP4
00000262: PUSH1 0x20
00000264: SUB
00000265: PUSH2 0x0100
00000268: EXP
00000269: SUB
0000026a: NOT
0000026b: AND
0000026c: DUP2
0000026d: MSTORE
0000026e: PUSH1 0x20
00000270: ADD
00000271: SWAP2
00000272: POP
00000273: JUMPDEST
00000274: POP
00000275: SWAP3
00000276: POP
00000277: POP
00000278: POP
00000279: PUSH1 0x40
0000027b: MLOAD
0000027c: DUP1
0000027d: SWAP2
0000027e: SUB
0000027f: SWAP1
00000280: RETURN
00000281: JUMPDEST
00000282: CALLVALUE
00000283: ISZERO
00000284: PUSH2 0x028c
00000287: JUMPI
00000288: PUSH1 0x00
0000028a: DUP1
0000028b: REVERT
0000028c: JUMPDEST
0000028d: PUSH2 0x0294
00000290: PUSH2 0x0e83
00000293: JUMP
00000294: JUMPDEST
00000295: PUSH1 0x40
00000297: MLOAD
00000298: DUP1
00000299: DUP3
0000029a: DUP2
0000029b: MSTORE
0000029c: PUSH1 0x20
0000029e: ADD
0000029f: SWAP2
000002a0: POP
000002a1: POP
000002a2: PUSH1 0x40
000002a4: MLOAD
000002a5: DUP1
000002a6: SWAP2
000002a7: SUB
000002a8: SWAP1
000002a9: RETURN
000002aa: JUMPDEST
000002ab: CALLVALUE
000002ac: ISZERO
000002ad: PUSH2 0x02b5
000002b0: JUMPI
000002b1: PUSH1 0x00
000002b3: DUP1
000002b4: REVERT
000002b5: JUMPDEST
000002b6: PUSH2 0x02cb
000002b9: PUSH1 0x04
000002bb: DUP1
000002bc: DUP1
000002bd: CALLDATALOAD
000002be: SWAP1
000002bf: PUSH1 0x20
000002c1: ADD
000002c2: SWAP1
000002c3: SWAP2
000002c4: SWAP1
000002c5: POP
000002c6: POP
000002c7: PUSH2 0x0e8d
000002ca: JUMP
000002cb: JUMPDEST
000002cc: STOP
000002cd: JUMPDEST
000002ce: CALLVALUE
000002cf: ISZERO
000002d0: PUSH2 0x02d8
000002d3: JUMPI
000002d4: PUSH1 0x00
000002d6: DUP1
000002d7: REVERT
000002d8: JUMPDEST
000002d9: PUSH2 0x02ee
000002dc: PUSH1 0x04
000002de: DUP1
000002df: DUP1
000002e0: CALLDATALOAD
000002e1: SWAP1
000002e2: PUSH1 0x20
000002e4: ADD
000002e5: SWAP1
000002e6: SWAP2
000002e7: SWAP1
000002e8: POP
000002e9: POP
000002ea: PUSH2 0x106b
000002ed: JUMP
000002ee: JUMPDEST
000002ef: PUSH1 0x40
000002f1: MLOAD
000002f2: DUP1
000002f3: DUP3
000002f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000309: AND
0000030a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000031f: AND
00000320: DUP2
00000321: MSTORE
00000322: PUSH1 0x20
00000324: ADD
00000325: SWAP2
00000326: POP
00000327: POP
00000328: PUSH1 0x40
0000032a: MLOAD
0000032b: DUP1
0000032c: SWAP2
0000032d: SUB
0000032e: SWAP1
0000032f: RETURN
00000330: JUMPDEST
00000331: CALLVALUE
00000332: ISZERO
00000333: PUSH2 0x033b
00000336: JUMPI
00000337: PUSH1 0x00
00000339: DUP1
0000033a: REVERT
0000033b: JUMPDEST
0000033c: PUSH2 0x0343
0000033f: PUSH2 0x109e
00000342: JUMP
00000343: JUMPDEST
00000344: PUSH1 0x40
00000346: MLOAD
00000347: DUP1
00000348: DUP3
00000349: PUSH1 0xff
0000034b: AND
0000034c: PUSH1 0xff
0000034e: AND
0000034f: DUP2
00000350: MSTORE
00000351: PUSH1 0x20
00000353: ADD
00000354: SWAP2
00000355: POP
00000356: POP
00000357: PUSH1 0x40
00000359: MLOAD
0000035a: DUP1
0000035b: SWAP2
0000035c: SUB
0000035d: SWAP1
0000035e: RETURN
0000035f: JUMPDEST
00000360: CALLVALUE
00000361: ISZERO
00000362: PUSH2 0x036a
00000365: JUMPI
00000366: PUSH1 0x00
00000368: DUP1
00000369: REVERT
0000036a: JUMPDEST
0000036b: PUSH2 0x0372
0000036e: PUSH2 0x10b1
00000371: JUMP
00000372: JUMPDEST
00000373: STOP
00000374: JUMPDEST
00000375: CALLVALUE
00000376: ISZERO
00000377: PUSH2 0x037f
0000037a: JUMPI
0000037b: PUSH1 0x00
0000037d: DUP1
0000037e: REVERT
0000037f: JUMPDEST
00000380: PUSH2 0x0387
00000383: PUSH2 0x117d
00000386: JUMP
00000387: JUMPDEST
00000388: PUSH1 0x40
0000038a: MLOAD
0000038b: DUP1
0000038c: DUP3
0000038d: DUP2
0000038e: MSTORE
0000038f: PUSH1 0x20
00000391: ADD
00000392: SWAP2
00000393: POP
00000394: POP
00000395: PUSH1 0x40
00000397: MLOAD
00000398: DUP1
00000399: SWAP2
0000039a: SUB
0000039b: SWAP1
0000039c: RETURN
0000039d: JUMPDEST
0000039e: CALLVALUE
0000039f: ISZERO
000003a0: PUSH2 0x03a8
000003a3: JUMPI
000003a4: PUSH1 0x00
000003a6: DUP1
000003a7: REVERT
000003a8: JUMPDEST
000003a9: PUSH2 0x03be
000003ac: PUSH1 0x04
000003ae: DUP1
000003af: DUP1
000003b0: CALLDATALOAD
000003b1: SWAP1
000003b2: PUSH1 0x20
000003b4: ADD
000003b5: SWAP1
000003b6: SWAP2
000003b7: SWAP1
000003b8: POP
000003b9: POP
000003ba: PUSH2 0x1183
000003bd: JUMP
000003be: JUMPDEST
000003bf: PUSH1 0x40
000003c1: MLOAD
000003c2: DUP1
000003c3: DUP3
000003c4: DUP2
000003c5: MSTORE
000003c6: PUSH1 0x20
000003c8: ADD
000003c9: SWAP2
000003ca: POP
000003cb: POP
000003cc: PUSH1 0x40
000003ce: MLOAD
000003cf: DUP1
000003d0: SWAP2
000003d1: SUB
000003d2: SWAP1
000003d3: RETURN
000003d4: JUMPDEST
000003d5: CALLVALUE
000003d6: ISZERO
000003d7: PUSH2 0x03df
000003da: JUMPI
000003db: PUSH1 0x00
000003dd: DUP1
000003de: REVERT
000003df: JUMPDEST
000003e0: PUSH2 0x0404
000003e3: PUSH1 0x04
000003e5: DUP1
000003e6: DUP1
000003e7: CALLDATALOAD
000003e8: PUSH4 0xffffffff
000003ed: AND
000003ee: SWAP1
000003ef: PUSH1 0x20
000003f1: ADD
000003f2: SWAP1
000003f3: SWAP2
000003f4: SWAP1
000003f5: DUP1
000003f6: CALLDATALOAD
000003f7: SWAP1
000003f8: PUSH1 0x20
000003fa: ADD
000003fb: SWAP1
000003fc: SWAP2
000003fd: SWAP1
000003fe: POP
000003ff: POP
00000400: PUSH2 0x11a7
00000403: JUMP
00000404: JUMPDEST
00000405: STOP
00000406: JUMPDEST
00000407: CALLVALUE
00000408: ISZERO
00000409: PUSH2 0x0411
0000040c: JUMPI
0000040d: PUSH1 0x00
0000040f: DUP1
00000410: REVERT
00000411: JUMPDEST
00000412: PUSH2 0x0419
00000415: PUSH2 0x1290
00000418: JUMP
00000419: JUMPDEST
0000041a: PUSH1 0x40
0000041c: MLOAD
0000041d: DUP1
0000041e: DUP3
0000041f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000434: AND
00000435: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000044a: AND
0000044b: DUP2
0000044c: MSTORE
0000044d: PUSH1 0x20
0000044f: ADD
00000450: SWAP2
00000451: POP
00000452: POP
00000453: PUSH1 0x40
00000455: MLOAD
00000456: DUP1
00000457: SWAP2
00000458: SUB
00000459: SWAP1
0000045a: RETURN
0000045b: JUMPDEST
0000045c: PUSH2 0x0471
0000045f: PUSH1 0x04
00000461: DUP1
00000462: DUP1
00000463: CALLDATALOAD
00000464: SWAP1
00000465: PUSH1 0x20
00000467: ADD
00000468: SWAP1
00000469: SWAP2
0000046a: SWAP1
0000046b: POP
0000046c: POP
0000046d: PUSH2 0x12ba
00000470: JUMP
00000471: JUMPDEST
00000472: STOP
00000473: JUMPDEST
00000474: CALLVALUE
00000475: ISZERO
00000476: PUSH2 0x047e
00000479: JUMPI
0000047a: PUSH1 0x00
0000047c: DUP1
0000047d: REVERT
0000047e: JUMPDEST
0000047f: PUSH2 0x0486
00000482: PUSH2 0x147c
00000485: JUMP
00000486: JUMPDEST
00000487: PUSH1 0x40
00000489: MLOAD
0000048a: DUP1
0000048b: DUP1
0000048c: PUSH1 0x20
0000048e: ADD
0000048f: DUP3
00000490: DUP2
00000491: SUB
00000492: DUP3
00000493: MSTORE
00000494: DUP4
00000495: DUP2
00000496: DUP2
00000497: MLOAD
00000498: DUP2
00000499: MSTORE
0000049a: PUSH1 0x20
0000049c: ADD
0000049d: SWAP2
0000049e: POP
0000049f: DUP1
000004a0: MLOAD
000004a1: SWAP1
000004a2: PUSH1 0x20
000004a4: ADD
000004a5: SWAP1
000004a6: DUP1
000004a7: DUP4
000004a8: DUP4
000004a9: PUSH1 0x00
000004ab: JUMPDEST
000004ac: DUP4
000004ad: DUP2
000004ae: LT
000004af: ISZERO
000004b0: PUSH2 0x04c6
000004b3: JUMPI
000004b4: DUP1
000004b5: DUP3
000004b6: ADD
000004b7: MLOAD
000004b8: DUP2
000004b9: DUP5
000004ba: ADD
000004bb: MSTORE
000004bc: PUSH1 0x20
000004be: DUP2
000004bf: ADD
000004c0: SWAP1
000004c1: POP
000004c2: PUSH2 0x04ab
000004c5: JUMP
000004c6: JUMPDEST
000004c7: POP
000004c8: POP
000004c9: POP
000004ca: POP
000004cb: SWAP1
000004cc: POP
000004cd: SWAP1
000004ce: DUP2
000004cf: ADD
000004d0: SWAP1
000004d1: PUSH1 0x1f
000004d3: AND
000004d4: DUP1
000004d5: ISZERO
000004d6: PUSH2 0x04f3
000004d9: JUMPI
000004da: DUP1
000004db: DUP3
000004dc: SUB
000004dd: DUP1
000004de: MLOAD
000004df: PUSH1 0x01
000004e1: DUP4
000004e2: PUSH1 0x20
000004e4: SUB
000004e5: PUSH2 0x0100
000004e8: EXP
000004e9: SUB
000004ea: NOT
000004eb: AND
000004ec: DUP2
000004ed: MSTORE
000004ee: PUSH1 0x20
000004f0: ADD
000004f1: SWAP2
000004f2: POP
000004f3: JUMPDEST
000004f4: POP
000004f5: SWAP3
000004f6: POP
000004f7: POP
000004f8: POP
000004f9: PUSH1 0x40
000004fb: MLOAD
000004fc: DUP1
000004fd: SWAP2
000004fe: SUB
000004ff: SWAP1
00000500: RETURN
00000501: JUMPDEST
00000502: CALLVALUE
00000503: ISZERO
00000504: PUSH2 0x050c
00000507: JUMPI
00000508: PUSH1 0x00
0000050a: DUP1
0000050b: REVERT
0000050c: JUMPDEST
0000050d: PUSH2 0x0522
00000510: PUSH1 0x04
00000512: DUP1
00000513: DUP1
00000514: CALLDATALOAD
00000515: SWAP1
00000516: PUSH1 0x20
00000518: ADD
00000519: SWAP1
0000051a: SWAP2
0000051b: SWAP1
0000051c: POP
0000051d: POP
0000051e: PUSH2 0x151a
00000521: JUMP
00000522: JUMPDEST
00000523: PUSH1 0x40
00000525: MLOAD
00000526: DUP1
00000527: DUP3
00000528: DUP2
00000529: MSTORE
0000052a: PUSH1 0x20
0000052c: ADD
0000052d: SWAP2
0000052e: POP
0000052f: POP
00000530: PUSH1 0x40
00000532: MLOAD
00000533: DUP1
00000534: SWAP2
00000535: SUB
00000536: SWAP1
00000537: RETURN
00000538: JUMPDEST
00000539: CALLVALUE
0000053a: ISZERO
0000053b: PUSH2 0x0543
0000053e: JUMPI
0000053f: PUSH1 0x00
00000541: DUP1
00000542: REVERT
00000543: JUMPDEST
00000544: PUSH2 0x0559
00000547: PUSH1 0x04
00000549: DUP1
0000054a: DUP1
0000054b: CALLDATALOAD
0000054c: SWAP1
0000054d: PUSH1 0x20
0000054f: ADD
00000550: SWAP1
00000551: SWAP2
00000552: SWAP1
00000553: POP
00000554: POP
00000555: PUSH2 0x1599
00000558: JUMP
00000559: JUMPDEST
0000055a: PUSH1 0x40
0000055c: MLOAD
0000055d: DUP1
0000055e: DUP1
0000055f: PUSH1 0x20
00000561: ADD
00000562: DUP3
00000563: DUP2
00000564: SUB
00000565: DUP3
00000566: MSTORE
00000567: DUP4
00000568: DUP2
00000569: DUP2
0000056a: MLOAD
0000056b: DUP2
0000056c: MSTORE
0000056d: PUSH1 0x20
0000056f: ADD
00000570: SWAP2
00000571: POP
00000572: DUP1
00000573: MLOAD
00000574: SWAP1
00000575: PUSH1 0x20
00000577: ADD
00000578: SWAP1
00000579: DUP1
0000057a: DUP4
0000057b: DUP4
0000057c: PUSH1 0x00
0000057e: JUMPDEST
0000057f: DUP4
00000580: DUP2
00000581: LT
00000582: ISZERO
00000583: PUSH2 0x0599
00000586: JUMPI
00000587: DUP1
00000588: DUP3
00000589: ADD
0000058a: MLOAD
0000058b: DUP2
0000058c: DUP5
0000058d: ADD
0000058e: MSTORE
0000058f: PUSH1 0x20
00000591: DUP2
00000592: ADD
00000593: SWAP1
00000594: POP
00000595: PUSH2 0x057e
00000598: JUMP
00000599: JUMPDEST
0000059a: POP
0000059b: POP
0000059c: POP
0000059d: POP
0000059e: SWAP1
0000059f: POP
000005a0: SWAP1
000005a1: DUP2
000005a2: ADD
000005a3: SWAP1
000005a4: PUSH1 0x1f
000005a6: AND
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05c6
000005ac: JUMPI
000005ad: DUP1
000005ae: DUP3
000005af: SUB
000005b0: DUP1
000005b1: MLOAD
000005b2: PUSH1 0x01
000005b4: DUP4
000005b5: PUSH1 0x20
000005b7: SUB
000005b8: PUSH2 0x0100
000005bb: EXP
000005bc: SUB
000005bd: NOT
000005be: AND
000005bf: DUP2
000005c0: MSTORE
000005c1: PUSH1 0x20
000005c3: ADD
000005c4: SWAP2
000005c5: POP
000005c6: JUMPDEST
000005c7: POP
000005c8: SWAP3
000005c9: POP
000005ca: POP
000005cb: POP
000005cc: PUSH1 0x40
000005ce: MLOAD
000005cf: DUP1
000005d0: SWAP2
000005d1: SUB
000005d2: SWAP1
000005d3: RETURN
000005d4: JUMPDEST
000005d5: CALLVALUE
000005d6: ISZERO
000005d7: PUSH2 0x05df
000005da: JUMPI
000005db: PUSH1 0x00
000005dd: DUP1
000005de: REVERT
000005df: JUMPDEST
000005e0: PUSH2 0x061d
000005e3: PUSH1 0x04
000005e5: DUP1
000005e6: DUP1
000005e7: CALLDATALOAD
000005e8: SWAP1
000005e9: PUSH1 0x20
000005eb: ADD
000005ec: SWAP1
000005ed: SWAP2
000005ee: SWAP1
000005ef: DUP1
000005f0: CALLDATALOAD
000005f1: SWAP1
000005f2: PUSH1 0x20
000005f4: ADD
000005f5: SWAP1
000005f6: SWAP2
000005f7: SWAP1
000005f8: DUP1
000005f9: CALLDATALOAD
000005fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000060f: AND
00000610: SWAP1
00000611: PUSH1 0x20
00000613: ADD
00000614: SWAP1
00000615: SWAP2
00000616: SWAP1
00000617: POP
00000618: POP
00000619: PUSH2 0x1649
0000061c: JUMP
0000061d: JUMPDEST
0000061e: STOP
0000061f: JUMPDEST
00000620: CALLVALUE
00000621: ISZERO
00000622: PUSH2 0x062a
00000625: JUMPI
00000626: PUSH1 0x00
00000628: DUP1
00000629: REVERT
0000062a: JUMPDEST
0000062b: PUSH2 0x0632
0000062e: PUSH2 0x1849
00000631: JUMP
00000632: JUMPDEST
00000633: PUSH1 0x40
00000635: MLOAD
00000636: DUP1
00000637: DUP1
00000638: PUSH1 0x20
0000063a: ADD
0000063b: DUP3
0000063c: DUP2
0000063d: SUB
0000063e: DUP3
0000063f: MSTORE
00000640: DUP4
00000641: DUP2
00000642: DUP2
00000643: MLOAD
00000644: DUP2
00000645: MSTORE
00000646: PUSH1 0x20
00000648: ADD
00000649: SWAP2
0000064a: POP
0000064b: DUP1
0000064c: MLOAD
0000064d: SWAP1
0000064e: PUSH1 0x20
00000650: ADD
00000651: SWAP1
00000652: DUP1
00000653: DUP4
00000654: DUP4
00000655: PUSH1 0x00
00000657: JUMPDEST
00000658: DUP4
00000659: DUP2
0000065a: LT
0000065b: ISZERO
0000065c: PUSH2 0x0672
0000065f: JUMPI
00000660: DUP1
00000661: DUP3
00000662: ADD
00000663: MLOAD
00000664: DUP2
00000665: DUP5
00000666: ADD
00000667: MSTORE
00000668: PUSH1 0x20
0000066a: DUP2
0000066b: ADD
0000066c: SWAP1
0000066d: POP
0000066e: PUSH2 0x0657
00000671: JUMP
00000672: JUMPDEST
00000673: POP
00000674: POP
00000675: POP
00000676: POP
00000677: SWAP1
00000678: POP
00000679: SWAP1
0000067a: DUP2
0000067b: ADD
0000067c: SWAP1
0000067d: PUSH1 0x1f
0000067f: AND
00000680: DUP1
00000681: ISZERO
00000682: PUSH2 0x069f
00000685: JUMPI
00000686: DUP1
00000687: DUP3
00000688: SUB
00000689: DUP1
0000068a: MLOAD
0000068b: PUSH1 0x01
0000068d: DUP4
0000068e: PUSH1 0x20
00000690: SUB
00000691: PUSH2 0x0100
00000694: EXP
00000695: SUB
00000696: NOT
00000697: AND
00000698: DUP2
00000699: MSTORE
0000069a: PUSH1 0x20
0000069c: ADD
0000069d: SWAP2
0000069e: POP
0000069f: JUMPDEST
000006a0: POP
000006a1: SWAP3
000006a2: POP
000006a3: POP
000006a4: POP
000006a5: PUSH1 0x40
000006a7: MLOAD
000006a8: DUP1
000006a9: SWAP2
000006aa: SUB
000006ab: SWAP1
000006ac: RETURN
000006ad: JUMPDEST
000006ae: CALLVALUE
000006af: ISZERO
000006b0: PUSH2 0x06b8
000006b3: JUMPI
000006b4: PUSH1 0x00
000006b6: DUP1
000006b7: REVERT
000006b8: JUMPDEST
000006b9: PUSH2 0x06c0
000006bc: PUSH2 0x18e7
000006bf: JUMP
000006c0: JUMPDEST
000006c1: PUSH1 0x40
000006c3: MLOAD
000006c4: DUP1
000006c5: DUP3
000006c6: ISZERO
000006c7: ISZERO
000006c8: ISZERO
000006c9: ISZERO
000006ca: DUP2
000006cb: MSTORE
000006cc: PUSH1 0x20
000006ce: ADD
000006cf: SWAP2
000006d0: POP
000006d1: POP
000006d2: PUSH1 0x40
000006d4: MLOAD
000006d5: DUP1
000006d6: SWAP2
000006d7: SUB
000006d8: SWAP1
000006d9: RETURN
000006da: JUMPDEST
000006db: CALLVALUE
000006dc: ISZERO
000006dd: PUSH2 0x06e5
000006e0: JUMPI
000006e1: PUSH1 0x00
000006e3: DUP1
000006e4: REVERT
000006e5: JUMPDEST
000006e6: PUSH2 0x0747
000006e9: PUSH1 0x04
000006eb: DUP1
000006ec: DUP1
000006ed: CALLDATALOAD
000006ee: SWAP1
000006ef: PUSH1 0x20
000006f1: ADD
000006f2: SWAP1
000006f3: SWAP2
000006f4: SWAP1
000006f5: DUP1
000006f6: CALLDATALOAD
000006f7: SWAP1
000006f8: PUSH1 0x20
000006fa: ADD
000006fb: SWAP1
000006fc: SWAP2
000006fd: SWAP1
000006fe: DUP1
000006ff: CALLDATALOAD
00000700: SWAP1
00000701: PUSH1 0x20
00000703: ADD
00000704: SWAP1
00000705: DUP3
00000706: ADD
00000707: DUP1
00000708: CALLDATALOAD
00000709: SWAP1
0000070a: PUSH1 0x20
0000070c: ADD
0000070d: SWAP1
0000070e: DUP1
0000070f: DUP1
00000710: PUSH1 0x1f
00000712: ADD
00000713: PUSH1 0x20
00000715: DUP1
00000716: SWAP2
00000717: DIV
00000718: MUL
00000719: PUSH1 0x20
0000071b: ADD
0000071c: PUSH1 0x40
0000071e: MLOAD
0000071f: SWAP1
00000720: DUP2
00000721: ADD
00000722: PUSH1 0x40
00000724: MSTORE
00000725: DUP1
00000726: SWAP4
00000727: SWAP3
00000728: SWAP2
00000729: SWAP1
0000072a: DUP2
0000072b: DUP2
0000072c: MSTORE
0000072d: PUSH1 0x20
0000072f: ADD
00000730: DUP4
00000731: DUP4
00000732: DUP1
00000733: DUP3
00000734: DUP5
00000735: CALLDATACOPY
00000736: DUP3
00000737: ADD
00000738: SWAP2
00000739: POP
0000073a: POP
0000073b: POP
0000073c: POP
0000073d: POP
0000073e: POP
0000073f: SWAP2
00000740: SWAP1
00000741: POP
00000742: POP
00000743: PUSH2 0x18fa
00000746: JUMP
00000747: JUMPDEST
00000748: STOP
00000749: JUMPDEST
0000074a: CALLVALUE
0000074b: ISZERO
0000074c: PUSH2 0x0754
0000074f: JUMPI
00000750: PUSH1 0x00
00000752: DUP1
00000753: REVERT
00000754: JUMPDEST
00000755: PUSH2 0x0780
00000758: PUSH1 0x04
0000075a: DUP1
0000075b: DUP1
0000075c: CALLDATALOAD
0000075d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000772: AND
00000773: SWAP1
00000774: PUSH1 0x20
00000776: ADD
00000777: SWAP1
00000778: SWAP2
00000779: SWAP1
0000077a: POP
0000077b: POP
0000077c: PUSH2 0x1a96
0000077f: JUMP
00000780: JUMPDEST
00000781: PUSH1 0x40
00000783: MLOAD
00000784: DUP1
00000785: DUP3
00000786: DUP2
00000787: MSTORE
00000788: PUSH1 0x20
0000078a: ADD
0000078b: SWAP2
0000078c: POP
0000078d: POP
0000078e: PUSH1 0x40
00000790: MLOAD
00000791: DUP1
00000792: SWAP2
00000793: SUB
00000794: SWAP1
00000795: RETURN
00000796: JUMPDEST
00000797: CALLVALUE
00000798: ISZERO
00000799: PUSH2 0x07a1
0000079c: JUMPI
0000079d: PUSH1 0x00
0000079f: DUP1
000007a0: REVERT
000007a1: JUMPDEST
000007a2: PUSH2 0x07bd
000007a5: PUSH1 0x04
000007a7: DUP1
000007a8: DUP1
000007a9: CALLDATALOAD
000007aa: PUSH4 0xffffffff
000007af: AND
000007b0: SWAP1
000007b1: PUSH1 0x20
000007b3: ADD
000007b4: SWAP1
000007b5: SWAP2
000007b6: SWAP1
000007b7: POP
000007b8: POP
000007b9: PUSH2 0x1b2d
000007bc: JUMP
000007bd: JUMPDEST
000007be: PUSH1 0x40
000007c0: MLOAD
000007c1: DUP1
000007c2: DUP3
000007c3: DUP2
000007c4: MSTORE
000007c5: PUSH1 0x20
000007c7: ADD
000007c8: SWAP2
000007c9: POP
000007ca: POP
000007cb: PUSH1 0x40
000007cd: MLOAD
000007ce: DUP1
000007cf: SWAP2
000007d0: SUB
000007d1: SWAP1
000007d2: RETURN
000007d3: JUMPDEST
000007d4: CALLVALUE
000007d5: ISZERO
000007d6: PUSH2 0x07de
000007d9: JUMPI
000007da: PUSH1 0x00
000007dc: DUP1
000007dd: REVERT
000007de: JUMPDEST
000007df: PUSH2 0x084f
000007e2: PUSH1 0x04
000007e4: DUP1
000007e5: DUP1
000007e6: CALLDATALOAD
000007e7: PUSH4 0xffffffff
000007ec: AND
000007ed: SWAP1
000007ee: PUSH1 0x20
000007f0: ADD
000007f1: SWAP1
000007f2: SWAP2
000007f3: SWAP1
000007f4: DUP1
000007f5: CALLDATALOAD
000007f6: SWAP1
000007f7: PUSH1 0x20
000007f9: ADD
000007fa: SWAP1
000007fb: SWAP2
000007fc: SWAP1
000007fd: DUP1
000007fe: CALLDATALOAD
000007ff: SWAP1
00000800: PUSH1 0x20
00000802: ADD
00000803: SWAP1
00000804: SWAP2
00000805: SWAP1
00000806: DUP1
00000807: CALLDATALOAD
00000808: SWAP1
00000809: PUSH1 0x20
0000080b: ADD
0000080c: SWAP1
0000080d: DUP3
0000080e: ADD
0000080f: DUP1
00000810: CALLDATALOAD
00000811: SWAP1
00000812: PUSH1 0x20
00000814: ADD
00000815: SWAP1
00000816: DUP1
00000817: DUP1
00000818: PUSH1 0x1f
0000081a: ADD
0000081b: PUSH1 0x20
0000081d: DUP1
0000081e: SWAP2
0000081f: DIV
00000820: MUL
00000821: PUSH1 0x20
00000823: ADD
00000824: PUSH1 0x40
00000826: MLOAD
00000827: SWAP1
00000828: DUP2
00000829: ADD
0000082a: PUSH1 0x40
0000082c: MSTORE
0000082d: DUP1
0000082e: SWAP4
0000082f: SWAP3
00000830: SWAP2
00000831: SWAP1
00000832: DUP2
00000833: DUP2
00000834: MSTORE
00000835: PUSH1 0x20
00000837: ADD
00000838: DUP4
00000839: DUP4
0000083a: DUP1
0000083b: DUP3
0000083c: DUP5
0000083d: CALLDATACOPY
0000083e: DUP3
0000083f: ADD
00000840: SWAP2
00000841: POP
00000842: POP
00000843: POP
00000844: POP
00000845: POP
00000846: POP
00000847: SWAP2
00000848: SWAP1
00000849: POP
0000084a: POP
0000084b: PUSH2 0x1b45
0000084e: JUMP
0000084f: JUMPDEST
00000850: PUSH1 0x40
00000852: MLOAD
00000853: DUP1
00000854: DUP3
00000855: DUP2
00000856: MSTORE
00000857: PUSH1 0x20
00000859: ADD
0000085a: SWAP2
0000085b: POP
0000085c: POP
0000085d: PUSH1 0x40
0000085f: MLOAD
00000860: DUP1
00000861: SWAP2
00000862: SUB
00000863: SWAP1
00000864: RETURN
00000865: JUMPDEST
00000866: CALLVALUE
00000867: ISZERO
00000868: PUSH2 0x0870
0000086b: JUMPI
0000086c: PUSH1 0x00
0000086e: DUP1
0000086f: REVERT
00000870: JUMPDEST
00000871: PUSH2 0x0878
00000874: PUSH2 0x1d18
00000877: JUMP
00000878: JUMPDEST
00000879: PUSH1 0x40
0000087b: MLOAD
0000087c: DUP1
0000087d: DUP3
0000087e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000893: AND
00000894: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008a9: AND
000008aa: DUP2
000008ab: MSTORE
000008ac: PUSH1 0x20
000008ae: ADD
000008af: SWAP2
000008b0: POP
000008b1: POP
000008b2: PUSH1 0x40
000008b4: MLOAD
000008b5: DUP1
000008b6: SWAP2
000008b7: SUB
000008b8: SWAP1
000008b9: RETURN
000008ba: JUMPDEST
000008bb: CALLVALUE
000008bc: ISZERO
000008bd: PUSH2 0x08c5
000008c0: JUMPI
000008c1: PUSH1 0x00
000008c3: DUP1
000008c4: REVERT
000008c5: JUMPDEST
000008c6: PUSH2 0x08cd
000008c9: PUSH2 0x1d3e
000008cc: JUMP
000008cd: JUMPDEST
000008ce: PUSH1 0x40
000008d0: MLOAD
000008d1: DUP1
000008d2: DUP1
000008d3: PUSH1 0x20
000008d5: ADD
000008d6: DUP3
000008d7: DUP2
000008d8: SUB
000008d9: DUP3
000008da: MSTORE
000008db: DUP4
000008dc: DUP2
000008dd: DUP2
000008de: MLOAD
000008df: DUP2
000008e0: MSTORE
000008e1: PUSH1 0x20
000008e3: ADD
000008e4: SWAP2
000008e5: POP
000008e6: DUP1
000008e7: MLOAD
000008e8: SWAP1
000008e9: PUSH1 0x20
000008eb: ADD
000008ec: SWAP1
000008ed: DUP1
000008ee: DUP4
000008ef: DUP4
000008f0: PUSH1 0x00
000008f2: JUMPDEST
000008f3: DUP4
000008f4: DUP2
000008f5: LT
000008f6: ISZERO
000008f7: PUSH2 0x090d
000008fa: JUMPI
000008fb: DUP1
000008fc: DUP3
000008fd: ADD
000008fe: MLOAD
000008ff: DUP2
00000900: DUP5
00000901: ADD
00000902: MSTORE
00000903: PUSH1 0x20
00000905: DUP2
00000906: ADD
00000907: SWAP1
00000908: POP
00000909: PUSH2 0x08f2
0000090c: JUMP
0000090d: JUMPDEST
0000090e: POP
0000090f: POP
00000910: POP
00000911: POP
00000912: SWAP1
00000913: POP
00000914: SWAP1
00000915: DUP2
00000916: ADD
00000917: SWAP1
00000918: PUSH1 0x1f
0000091a: AND
0000091b: DUP1
0000091c: ISZERO
0000091d: PUSH2 0x093a
00000920: JUMPI
00000921: DUP1
00000922: DUP3
00000923: SUB
00000924: DUP1
00000925: MLOAD
00000926: PUSH1 0x01
00000928: DUP4
00000929: PUSH1 0x20
0000092b: SUB
0000092c: PUSH2 0x0100
0000092f: EXP
00000930: SUB
00000931: NOT
00000932: AND
00000933: DUP2
00000934: MSTORE
00000935: PUSH1 0x20
00000937: ADD
00000938: SWAP2
00000939: POP
0000093a: JUMPDEST
0000093b: POP
0000093c: SWAP3
0000093d: POP
0000093e: POP
0000093f: POP
00000940: PUSH1 0x40
00000942: MLOAD
00000943: DUP1
00000944: SWAP2
00000945: SUB
00000946: SWAP1
00000947: RETURN
00000948: JUMPDEST
00000949: CALLVALUE
0000094a: ISZERO
0000094b: PUSH2 0x0953
0000094e: JUMPI
0000094f: PUSH1 0x00
00000951: DUP1
00000952: REVERT
00000953: JUMPDEST
00000954: PUSH2 0x0969
00000957: PUSH1 0x04
00000959: DUP1
0000095a: DUP1
0000095b: CALLDATALOAD
0000095c: SWAP1
0000095d: PUSH1 0x20
0000095f: ADD
00000960: SWAP1
00000961: SWAP2
00000962: SWAP1
00000963: POP
00000964: POP
00000965: PUSH2 0x1ddc
00000968: JUMP
00000969: JUMPDEST
0000096a: PUSH1 0x40
0000096c: MLOAD
0000096d: DUP1
0000096e: DUP3
0000096f: PUSH4 0xffffffff
00000974: AND
00000975: PUSH4 0xffffffff
0000097a: AND
0000097b: DUP2
0000097c: MSTORE
0000097d: PUSH1 0x20
0000097f: ADD
00000980: SWAP2
00000981: POP
00000982: POP
00000983: PUSH1 0x40
00000985: MLOAD
00000986: DUP1
00000987: SWAP2
00000988: SUB
00000989: SWAP1
0000098a: RETURN
0000098b: JUMPDEST
0000098c: CALLVALUE
0000098d: ISZERO
0000098e: PUSH2 0x0996
00000991: JUMPI
00000992: PUSH1 0x00
00000994: DUP1
00000995: REVERT
00000996: JUMPDEST
00000997: PUSH2 0x09ac
0000099a: PUSH1 0x04
0000099c: DUP1
0000099d: DUP1
0000099e: CALLDATALOAD
0000099f: SWAP1
000009a0: PUSH1 0x20
000009a2: ADD
000009a3: SWAP1
000009a4: SWAP2
000009a5: SWAP1
000009a6: POP
000009a7: POP
000009a8: PUSH2 0x1e3b
000009ab: JUMP
000009ac: JUMPDEST
000009ad: PUSH1 0x40
000009af: MLOAD
000009b0: DUP1
000009b1: DUP7
000009b2: ISZERO
000009b3: ISZERO
000009b4: ISZERO
000009b5: ISZERO
000009b6: DUP2
000009b7: MSTORE
000009b8: PUSH1 0x20
000009ba: ADD
000009bb: DUP6
000009bc: DUP2
000009bd: MSTORE
000009be: PUSH1 0x20
000009c0: ADD
000009c1: DUP5
000009c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009d7: AND
000009d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ed: AND
000009ee: DUP2
000009ef: MSTORE
000009f0: PUSH1 0x20
000009f2: ADD
000009f3: DUP4
000009f4: DUP2
000009f5: MSTORE
000009f6: PUSH1 0x20
000009f8: ADD
000009f9: DUP3
000009fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a0f: AND
00000a10: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a25: AND
00000a26: DUP2
00000a27: MSTORE
00000a28: PUSH1 0x20
00000a2a: ADD
00000a2b: SWAP6
00000a2c: POP
00000a2d: POP
00000a2e: POP
00000a2f: POP
00000a30: POP
00000a31: POP
00000a32: PUSH1 0x40
00000a34: MLOAD
00000a35: DUP1
00000a36: SWAP2
00000a37: SUB
00000a38: SWAP1
00000a39: RETURN
00000a3a: JUMPDEST
00000a3b: CALLVALUE
00000a3c: ISZERO
00000a3d: PUSH2 0x0a45
00000a40: JUMPI
00000a41: PUSH1 0x00
00000a43: DUP1
00000a44: REVERT
00000a45: JUMPDEST
00000a46: PUSH2 0x0a4d
00000a49: PUSH2 0x1ebe
00000a4c: JUMP
00000a4d: JUMPDEST
00000a4e: PUSH1 0x40
00000a50: MLOAD
00000a51: DUP1
00000a52: DUP3
00000a53: ISZERO
00000a54: ISZERO
00000a55: ISZERO
00000a56: ISZERO
00000a57: DUP2
00000a58: MSTORE
00000a59: PUSH1 0x20
00000a5b: ADD
00000a5c: SWAP2
00000a5d: POP
00000a5e: POP
00000a5f: PUSH1 0x40
00000a61: MLOAD
00000a62: DUP1
00000a63: SWAP2
00000a64: SUB
00000a65: SWAP1
00000a66: RETURN
00000a67: JUMPDEST
00000a68: CALLVALUE
00000a69: ISZERO
00000a6a: PUSH2 0x0a72
00000a6d: JUMPI
00000a6e: PUSH1 0x00
00000a70: DUP1
00000a71: REVERT
00000a72: JUMPDEST
00000a73: PUSH2 0x0a7a
00000a76: PUSH2 0x1ed1
00000a79: JUMP
00000a7a: JUMPDEST
00000a7b: PUSH1 0x40
00000a7d: MLOAD
00000a7e: DUP1
00000a7f: DUP3
00000a80: PUSH1 0xff
00000a82: AND
00000a83: PUSH1 0xff
00000a85: AND
00000a86: DUP2
00000a87: MSTORE
00000a88: PUSH1 0x20
00000a8a: ADD
00000a8b: SWAP2
00000a8c: POP
00000a8d: POP
00000a8e: PUSH1 0x40
00000a90: MLOAD
00000a91: DUP1
00000a92: SWAP2
00000a93: SUB
00000a94: SWAP1
00000a95: RETURN
00000a96: JUMPDEST
00000a97: CALLVALUE
00000a98: ISZERO
00000a99: PUSH2 0x0aa1
00000a9c: JUMPI
00000a9d: PUSH1 0x00
00000a9f: DUP1
00000aa0: REVERT
00000aa1: JUMPDEST
00000aa2: PUSH2 0x0ac0
00000aa5: PUSH1 0x04
00000aa7: DUP1
00000aa8: DUP1
00000aa9: CALLDATALOAD
00000aaa: SWAP1
00000aab: PUSH1 0x20
00000aad: ADD
00000aae: SWAP1
00000aaf: SWAP2
00000ab0: SWAP1
00000ab1: DUP1
00000ab2: CALLDATALOAD
00000ab3: SWAP1
00000ab4: PUSH1 0x20
00000ab6: ADD
00000ab7: SWAP1
00000ab8: SWAP2
00000ab9: SWAP1
00000aba: POP
00000abb: POP
00000abc: PUSH2 0x1ee4
00000abf: JUMP
00000ac0: JUMPDEST
00000ac1: STOP
00000ac2: JUMPDEST
00000ac3: CALLVALUE
00000ac4: ISZERO
00000ac5: PUSH2 0x0acd
00000ac8: JUMPI
00000ac9: PUSH1 0x00
00000acb: DUP1
00000acc: REVERT
00000acd: JUMPDEST
00000ace: PUSH2 0x0b26
00000ad1: PUSH1 0x04
00000ad3: DUP1
00000ad4: DUP1
00000ad5: CALLDATALOAD
00000ad6: SWAP1
00000ad7: PUSH1 0x20
00000ad9: ADD
00000ada: SWAP1
00000adb: SWAP2
00000adc: SWAP1
00000add: DUP1
00000ade: CALLDATALOAD
00000adf: SWAP1
00000ae0: PUSH1 0x20
00000ae2: ADD
00000ae3: SWAP1
00000ae4: DUP3
00000ae5: ADD
00000ae6: DUP1
00000ae7: CALLDATALOAD
00000ae8: SWAP1
00000ae9: PUSH1 0x20
00000aeb: ADD
00000aec: SWAP1
00000aed: DUP1
00000aee: DUP1
00000aef: PUSH1 0x1f
00000af1: ADD
00000af2: PUSH1 0x20
00000af4: DUP1
00000af5: SWAP2
00000af6: DIV
00000af7: MUL
00000af8: PUSH1 0x20
00000afa: ADD
00000afb: PUSH1 0x40
00000afd: MLOAD
00000afe: SWAP1
00000aff: DUP2
00000b00: ADD
00000b01: PUSH1 0x40
00000b03: MSTORE
00000b04: DUP1
00000b05: SWAP4
00000b06: SWAP3
00000b07: SWAP2
00000b08: SWAP1
00000b09: DUP2
00000b0a: DUP2
00000b0b: MSTORE
00000b0c: PUSH1 0x20
00000b0e: ADD
00000b0f: DUP4
00000b10: DUP4
00000b11: DUP1
00000b12: DUP3
00000b13: DUP5
00000b14: CALLDATACOPY
00000b15: DUP3
00000b16: ADD
00000b17: SWAP2
00000b18: POP
00000b19: POP
00000b1a: POP
00000b1b: POP
00000b1c: POP
00000b1d: POP
00000b1e: SWAP2
00000b1f: SWAP1
00000b20: POP
00000b21: POP
00000b22: PUSH2 0x2227
00000b25: JUMP
00000b26: JUMPDEST
00000b27: STOP
00000b28: JUMPDEST
00000b29: CALLVALUE
00000b2a: ISZERO
00000b2b: PUSH2 0x0b33
00000b2e: JUMPI
00000b2f: PUSH1 0x00
00000b31: DUP1
00000b32: REVERT
00000b33: JUMPDEST
00000b34: PUSH2 0x0b68
00000b37: PUSH1 0x04
00000b39: DUP1
00000b3a: DUP1
00000b3b: CALLDATALOAD
00000b3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b51: AND
00000b52: SWAP1
00000b53: PUSH1 0x20
00000b55: ADD
00000b56: SWAP1
00000b57: SWAP2
00000b58: SWAP1
00000b59: DUP1
00000b5a: CALLDATALOAD
00000b5b: SWAP1
00000b5c: PUSH1 0x20
00000b5e: ADD
00000b5f: SWAP1
00000b60: SWAP2
00000b61: SWAP1
00000b62: POP
00000b63: POP
00000b64: PUSH2 0x22cd
00000b67: JUMP
00000b68: JUMPDEST
00000b69: PUSH1 0x40
00000b6b: MLOAD
00000b6c: DUP1
00000b6d: DUP3
00000b6e: ISZERO
00000b6f: ISZERO
00000b70: ISZERO
00000b71: ISZERO
00000b72: DUP2
00000b73: MSTORE
00000b74: PUSH1 0x20
00000b76: ADD
00000b77: SWAP2
00000b78: POP
00000b79: POP
00000b7a: PUSH1 0x40
00000b7c: MLOAD
00000b7d: DUP1
00000b7e: SWAP2
00000b7f: SUB
00000b80: SWAP1
00000b81: RETURN
00000b82: JUMPDEST
00000b83: CALLVALUE
00000b84: ISZERO
00000b85: PUSH2 0x0b8d
00000b88: JUMPI
00000b89: PUSH1 0x00
00000b8b: DUP1
00000b8c: REVERT
00000b8d: JUMPDEST
00000b8e: PUSH2 0x0b95
00000b91: PUSH2 0x24fb
00000b94: JUMP
00000b95: JUMPDEST
00000b96: PUSH1 0x40
00000b98: MLOAD
00000b99: DUP1
00000b9a: DUP3
00000b9b: DUP2
00000b9c: MSTORE
00000b9d: PUSH1 0x20
00000b9f: ADD
00000ba0: SWAP2
00000ba1: POP
00000ba2: POP
00000ba3: PUSH1 0x40
00000ba5: MLOAD
00000ba6: DUP1
00000ba7: SWAP2
00000ba8: SUB
00000ba9: SWAP1
00000baa: RETURN
00000bab: JUMPDEST
00000bac: CALLVALUE
00000bad: ISZERO
00000bae: PUSH2 0x0bb6
00000bb1: JUMPI
00000bb2: PUSH1 0x00
00000bb4: DUP1
00000bb5: REVERT
00000bb6: JUMPDEST
00000bb7: PUSH2 0x0bd5
00000bba: PUSH1 0x04
00000bbc: DUP1
00000bbd: DUP1
00000bbe: CALLDATALOAD
00000bbf: SWAP1
00000bc0: PUSH1 0x20
00000bc2: ADD
00000bc3: SWAP1
00000bc4: SWAP2
00000bc5: SWAP1
00000bc6: DUP1
00000bc7: CALLDATALOAD
00000bc8: SWAP1
00000bc9: PUSH1 0x20
00000bcb: ADD
00000bcc: SWAP1
00000bcd: SWAP2
00000bce: SWAP1
00000bcf: POP
00000bd0: POP
00000bd1: PUSH2 0x2501
00000bd4: JUMP
00000bd5: JUMPDEST
00000bd6: STOP
00000bd7: JUMPDEST
00000bd8: CALLVALUE
00000bd9: ISZERO
00000bda: PUSH2 0x0be2
00000bdd: JUMPI
00000bde: PUSH1 0x00
00000be0: DUP1
00000be1: REVERT
00000be2: JUMPDEST
00000be3: PUSH2 0x0bf8
00000be6: PUSH1 0x04
00000be8: DUP1
00000be9: DUP1
00000bea: CALLDATALOAD
00000beb: SWAP1
00000bec: PUSH1 0x20
00000bee: ADD
00000bef: SWAP1
00000bf0: SWAP2
00000bf1: SWAP1
00000bf2: POP
00000bf3: POP
00000bf4: PUSH2 0x259a
00000bf7: JUMP
00000bf8: JUMPDEST
00000bf9: PUSH1 0x40
00000bfb: MLOAD
00000bfc: DUP1
00000bfd: DUP3
00000bfe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c13: AND
00000c14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c29: AND
00000c2a: DUP2
00000c2b: MSTORE
00000c2c: PUSH1 0x20
00000c2e: ADD
00000c2f: SWAP2
00000c30: POP
00000c31: POP
00000c32: PUSH1 0x40
00000c34: MLOAD
00000c35: DUP1
00000c36: SWAP2
00000c37: SUB
00000c38: SWAP1
00000c39: RETURN
00000c3a: JUMPDEST
00000c3b: PUSH2 0x0c50
00000c3e: PUSH1 0x04
00000c40: DUP1
00000c41: DUP1
00000c42: CALLDATALOAD
00000c43: SWAP1
00000c44: PUSH1 0x20
00000c46: ADD
00000c47: SWAP1
00000c48: SWAP2
00000c49: SWAP1
00000c4a: POP
00000c4b: POP
00000c4c: PUSH2 0x262f
00000c4f: JUMP
00000c50: JUMPDEST
00000c51: STOP
00000c52: JUMPDEST
00000c53: CALLVALUE
00000c54: ISZERO
00000c55: PUSH2 0x0c5d
00000c58: JUMPI
00000c59: PUSH1 0x00
00000c5b: DUP1
00000c5c: REVERT
00000c5d: JUMPDEST
00000c5e: PUSH2 0x0c7c
00000c61: PUSH1 0x04
00000c63: DUP1
00000c64: DUP1
00000c65: CALLDATALOAD
00000c66: SWAP1
00000c67: PUSH1 0x20
00000c69: ADD
00000c6a: SWAP1
00000c6b: SWAP2
00000c6c: SWAP1
00000c6d: DUP1
00000c6e: CALLDATALOAD
00000c6f: SWAP1
00000c70: PUSH1 0x20
00000c72: ADD
00000c73: SWAP1
00000c74: SWAP2
00000c75: SWAP1
00000c76: POP
00000c77: POP
00000c78: PUSH2 0x2a1e
00000c7b: JUMP
00000c7c: JUMPDEST
00000c7d: STOP
00000c7e: JUMPDEST
00000c7f: CALLVALUE
00000c80: ISZERO
00000c81: PUSH2 0x0c89
00000c84: JUMPI
00000c85: PUSH1 0x00
00000c87: DUP1
00000c88: REVERT
00000c89: JUMPDEST
00000c8a: PUSH2 0x0c9f
00000c8d: PUSH1 0x04
00000c8f: DUP1
00000c90: DUP1
00000c91: CALLDATALOAD
00000c92: SWAP1
00000c93: PUSH1 0x20
00000c95: ADD
00000c96: SWAP1
00000c97: SWAP2
00000c98: SWAP1
00000c99: POP
00000c9a: POP
00000c9b: PUSH2 0x2c09
00000c9e: JUMP
00000c9f: JUMPDEST
00000ca0: PUSH1 0x40
00000ca2: MLOAD
00000ca3: DUP1
00000ca4: DUP3
00000ca5: DUP2
00000ca6: MSTORE
00000ca7: PUSH1 0x20
00000ca9: ADD
00000caa: SWAP2
00000cab: POP
00000cac: POP
00000cad: PUSH1 0x40
00000caf: MLOAD
00000cb0: DUP1
00000cb1: SWAP2
00000cb2: SUB
00000cb3: SWAP1
00000cb4: RETURN
00000cb5: JUMPDEST
00000cb6: CALLVALUE
00000cb7: ISZERO
00000cb8: PUSH2 0x0cc0
00000cbb: JUMPI
00000cbc: PUSH1 0x00
00000cbe: DUP1
00000cbf: REVERT
00000cc0: JUMPDEST
00000cc1: PUSH2 0x0cc8
00000cc4: PUSH2 0x2c21
00000cc7: JUMP
00000cc8: JUMPDEST
00000cc9: PUSH1 0x40
00000ccb: MLOAD
00000ccc: DUP1
00000ccd: DUP3
00000cce: DUP2
00000ccf: MSTORE
00000cd0: PUSH1 0x20
00000cd2: ADD
00000cd3: SWAP2
00000cd4: POP
00000cd5: POP
00000cd6: PUSH1 0x40
00000cd8: MLOAD
00000cd9: DUP1
00000cda: SWAP2
00000cdb: SUB
00000cdc: SWAP1
00000cdd: RETURN
00000cde: JUMPDEST
00000cdf: CALLVALUE
00000ce0: ISZERO
00000ce1: PUSH2 0x0ce9
00000ce4: JUMPI
00000ce5: PUSH1 0x00
00000ce7: DUP1
00000ce8: REVERT
00000ce9: JUMPDEST
00000cea: PUSH2 0x0cf1
00000ced: PUSH2 0x2c27
00000cf0: JUMP
00000cf1: JUMPDEST
00000cf2: STOP
00000cf3: JUMPDEST
00000cf4: CALLVALUE
00000cf5: ISZERO
00000cf6: PUSH2 0x0cfe
00000cf9: JUMPI
00000cfa: PUSH1 0x00
00000cfc: DUP1
00000cfd: REVERT
00000cfe: JUMPDEST
00000cff: PUSH2 0x0d2a
00000d02: PUSH1 0x04
00000d04: DUP1
00000d05: DUP1
00000d06: CALLDATALOAD
00000d07: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d1c: AND
00000d1d: SWAP1
00000d1e: PUSH1 0x20
00000d20: ADD
00000d21: SWAP1
00000d22: SWAP2
00000d23: SWAP1
00000d24: POP
00000d25: POP
00000d26: PUSH2 0x2cfe
00000d29: JUMP
00000d2a: JUMPDEST
00000d2b: PUSH1 0x40
00000d2d: MLOAD
00000d2e: DUP1
00000d2f: DUP3
00000d30: DUP2
00000d31: MSTORE
00000d32: PUSH1 0x20
00000d34: ADD
00000d35: SWAP2
00000d36: POP
00000d37: POP
00000d38: PUSH1 0x40
00000d3a: MLOAD
00000d3b: DUP1
00000d3c: SWAP2
00000d3d: SUB
00000d3e: SWAP1
00000d3f: RETURN
00000d40: JUMPDEST
00000d41: CALLVALUE
00000d42: ISZERO
00000d43: PUSH2 0x0d4b
00000d46: JUMPI
00000d47: PUSH1 0x00
00000d49: DUP1
00000d4a: REVERT
00000d4b: JUMPDEST
00000d4c: PUSH2 0x0d6a
00000d4f: PUSH1 0x04
00000d51: DUP1
00000d52: DUP1
00000d53: CALLDATALOAD
00000d54: SWAP1
00000d55: PUSH1 0x20
00000d57: ADD
00000d58: SWAP1
00000d59: SWAP2
00000d5a: SWAP1
00000d5b: DUP1
00000d5c: CALLDATALOAD
00000d5d: SWAP1
00000d5e: PUSH1 0x20
00000d60: ADD
00000d61: SWAP1
00000d62: SWAP2
00000d63: SWAP1
00000d64: POP
00000d65: POP
00000d66: PUSH2 0x2d16
00000d69: JUMP
00000d6a: JUMPDEST
00000d6b: PUSH1 0x40
00000d6d: MLOAD
00000d6e: DUP1
00000d6f: DUP1
00000d70: PUSH1 0x20
00000d72: ADD
00000d73: DUP3
00000d74: DUP2
00000d75: SUB
00000d76: DUP3
00000d77: MSTORE
00000d78: DUP4
00000d79: DUP2
00000d7a: DUP2
00000d7b: MLOAD
00000d7c: DUP2
00000d7d: MSTORE
00000d7e: PUSH1 0x20
00000d80: ADD
00000d81: SWAP2
00000d82: POP
00000d83: DUP1
00000d84: MLOAD
00000d85: SWAP1
00000d86: PUSH1 0x20
00000d88: ADD
00000d89: SWAP1
00000d8a: DUP1
00000d8b: DUP4
00000d8c: DUP4
00000d8d: PUSH1 0x00
00000d8f: JUMPDEST
00000d90: DUP4
00000d91: DUP2
00000d92: LT
00000d93: ISZERO
00000d94: PUSH2 0x0daa
00000d97: JUMPI
00000d98: DUP1
00000d99: DUP3
00000d9a: ADD
00000d9b: MLOAD
00000d9c: DUP2
00000d9d: DUP5
00000d9e: ADD
00000d9f: MSTORE
00000da0: PUSH1 0x20
00000da2: DUP2
00000da3: ADD
00000da4: SWAP1
00000da5: POP
00000da6: PUSH2 0x0d8f
00000da9: JUMP
00000daa: JUMPDEST
00000dab: POP
00000dac: POP
00000dad: POP
00000dae: POP
00000daf: SWAP1
00000db0: POP
00000db1: SWAP1
00000db2: DUP2
00000db3: ADD
00000db4: SWAP1
00000db5: PUSH1 0x1f
00000db7: AND
00000db8: DUP1
00000db9: ISZERO
00000dba: PUSH2 0x0dd7
00000dbd: JUMPI
00000dbe: DUP1
00000dbf: DUP3
00000dc0: SUB
00000dc1: DUP1
00000dc2: MLOAD
00000dc3: PUSH1 0x01
00000dc5: DUP4
00000dc6: PUSH1 0x20
00000dc8: SUB
00000dc9: PUSH2 0x0100
00000dcc: EXP
00000dcd: SUB
00000dce: NOT
00000dcf: AND
00000dd0: DUP2
00000dd1: MSTORE
00000dd2: PUSH1 0x20
00000dd4: ADD
00000dd5: SWAP2
00000dd6: POP
00000dd7: JUMPDEST
00000dd8: POP
00000dd9: SWAP3
00000dda: POP
00000ddb: POP
00000ddc: POP
00000ddd: PUSH1 0x40
00000ddf: MLOAD
00000de0: DUP1
00000de1: SWAP2
00000de2: SUB
00000de3: SWAP1
00000de4: RETURN
00000de5: JUMPDEST
00000de6: PUSH1 0x03
00000de8: DUP1
00000de9: SLOAD
00000dea: PUSH1 0x01
00000dec: DUP2
00000ded: PUSH1 0x01
00000def: AND
00000df0: ISZERO
00000df1: PUSH2 0x0100
00000df4: MUL
00000df5: SUB
00000df6: AND
00000df7: PUSH1 0x02
00000df9: SWAP1
00000dfa: DIV
00000dfb: DUP1
00000dfc: PUSH1 0x1f
00000dfe: ADD
00000dff: PUSH1 0x20
00000e01: DUP1
00000e02: SWAP2
00000e03: DIV
00000e04: MUL
00000e05: PUSH1 0x20
00000e07: ADD
00000e08: PUSH1 0x40
00000e0a: MLOAD
00000e0b: SWAP1
00000e0c: DUP2
00000e0d: ADD
00000e0e: PUSH1 0x40
00000e10: MSTORE
00000e11: DUP1
00000e12: SWAP3
00000e13: SWAP2
00000e14: SWAP1
00000e15: DUP2
00000e16: DUP2
00000e17: MSTORE
00000e18: PUSH1 0x20
00000e1a: ADD
00000e1b: DUP3
00000e1c: DUP1
00000e1d: SLOAD
00000e1e: PUSH1 0x01
00000e20: DUP2
00000e21: PUSH1 0x01
00000e23: AND
00000e24: ISZERO
00000e25: PUSH2 0x0100
00000e28: MUL
00000e29: SUB
00000e2a: AND
00000e2b: PUSH1 0x02
00000e2d: SWAP1
00000e2e: DIV
00000e2f: DUP1
00000e30: ISZERO
00000e31: PUSH2 0x0e7b
00000e34: JUMPI
00000e35: DUP1
00000e36: PUSH1 0x1f
00000e38: LT
00000e39: PUSH2 0x0e50
00000e3c: JUMPI
00000e3d: PUSH2 0x0100
00000e40: DUP1
00000e41: DUP4
00000e42: SLOAD
00000e43: DIV
00000e44: MUL
00000e45: DUP4
00000e46: MSTORE
00000e47: SWAP2
00000e48: PUSH1 0x20
00000e4a: ADD
00000e4b: SWAP2
00000e4c: PUSH2 0x0e7b
00000e4f: JUMP
00000e50: JUMPDEST
00000e51: DUP3
00000e52: ADD
00000e53: SWAP2
00000e54: SWAP1
00000e55: PUSH1 0x00
00000e57: MSTORE
00000e58: PUSH1 0x20
00000e5a: PUSH1 0x00
00000e5c: KECCAK256
00000e5d: SWAP1
00000e5e: JUMPDEST
00000e5f: DUP2
00000e60: SLOAD
00000e61: DUP2
00000e62: MSTORE
00000e63: SWAP1
00000e64: PUSH1 0x01
00000e66: ADD
00000e67: SWAP1
00000e68: PUSH1 0x20
00000e6a: ADD
00000e6b: DUP1
00000e6c: DUP4
00000e6d: GT
00000e6e: PUSH2 0x0e5e
00000e71: JUMPI
00000e72: DUP3
00000e73: SWAP1
00000e74: SUB
00000e75: PUSH1 0x1f
00000e77: AND
00000e78: DUP3
00000e79: ADD
00000e7a: SWAP2
00000e7b: JUMPDEST
00000e7c: POP
00000e7d: POP
00000e7e: POP
00000e7f: POP
00000e80: POP
00000e81: DUP2
00000e82: JUMP
00000e83: JUMPDEST
00000e84: PUSH1 0x00
00000e86: PUSH1 0x06
00000e88: SLOAD
00000e89: SWAP1
00000e8a: POP
00000e8b: SWAP1
00000e8c: JUMP
00000e8d: JUMPDEST
00000e8e: CALLER
00000e8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ea4: AND
00000ea5: PUSH1 0x0a
00000ea7: PUSH1 0x00
00000ea9: DUP4
00000eaa: DUP2
00000eab: MSTORE
00000eac: PUSH1 0x20
00000eae: ADD
00000eaf: SWAP1
00000eb0: DUP2
00000eb1: MSTORE
00000eb2: PUSH1 0x20
00000eb4: ADD
00000eb5: PUSH1 0x00
00000eb7: KECCAK256
00000eb8: PUSH1 0x00
00000eba: SWAP1
00000ebb: SLOAD
00000ebc: SWAP1
00000ebd: PUSH2 0x0100
00000ec0: EXP
00000ec1: SWAP1
00000ec2: DIV
00000ec3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ed8: AND
00000ed9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eee: AND
00000eef: EQ
00000ef0: ISZERO
00000ef1: ISZERO
00000ef2: PUSH2 0x0efa
00000ef5: JUMPI
00000ef6: PUSH1 0x00
00000ef8: DUP1
00000ef9: REVERT
00000efa: JUMPDEST
00000efb: PUSH1 0x06
00000efd: SLOAD
00000efe: DUP2
00000eff: LT
00000f00: ISZERO
00000f01: ISZERO
00000f02: PUSH2 0x0f0a
00000f05: JUMPI
00000f06: PUSH1 0x00
00000f08: DUP1
00000f09: REVERT
00000f0a: JUMPDEST
00000f0b: PUSH1 0xa0
00000f0d: PUSH1 0x40
00000f0f: MLOAD
00000f10: SWAP1
00000f11: DUP2
00000f12: ADD
00000f13: PUSH1 0x40
00000f15: MSTORE
00000f16: DUP1
00000f17: PUSH1 0x00
00000f19: ISZERO
00000f1a: ISZERO
00000f1b: DUP2
00000f1c: MSTORE
00000f1d: PUSH1 0x20
00000f1f: ADD
00000f20: DUP3
00000f21: DUP2
00000f22: MSTORE
00000f23: PUSH1 0x20
00000f25: ADD
00000f26: CALLER
00000f27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f3c: AND
00000f3d: DUP2
00000f3e: MSTORE
00000f3f: PUSH1 0x20
00000f41: ADD
00000f42: PUSH1 0x00
00000f44: DUP2
00000f45: MSTORE
00000f46: PUSH1 0x20
00000f48: ADD
00000f49: PUSH1 0x00
00000f4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f60: AND
00000f61: DUP2
00000f62: MSTORE
00000f63: POP
00000f64: PUSH1 0x11
00000f66: PUSH1 0x00
00000f68: DUP4
00000f69: DUP2
00000f6a: MSTORE
00000f6b: PUSH1 0x20
00000f6d: ADD
00000f6e: SWAP1
00000f6f: DUP2
00000f70: MSTORE
00000f71: PUSH1 0x20
00000f73: ADD
00000f74: PUSH1 0x00
00000f76: KECCAK256
00000f77: PUSH1 0x00
00000f79: DUP3
00000f7a: ADD
00000f7b: MLOAD
00000f7c: DUP2
00000f7d: PUSH1 0x00
00000f7f: ADD
00000f80: PUSH1 0x00
00000f82: PUSH2 0x0100
00000f85: EXP
00000f86: DUP2
00000f87: SLOAD
00000f88: DUP2
00000f89: PUSH1 0xff
00000f8b: MUL
00000f8c: NOT
00000f8d: AND
00000f8e: SWAP1
00000f8f: DUP4
00000f90: ISZERO
00000f91: ISZERO
00000f92: MUL
00000f93: OR
00000f94: SWAP1
00000f95: SSTORE
00000f96: POP
00000f97: PUSH1 0x20
00000f99: DUP3
00000f9a: ADD
00000f9b: MLOAD
00000f9c: DUP2
00000f9d: PUSH1 0x01
00000f9f: ADD
00000fa0: SSTORE
00000fa1: PUSH1 0x40
00000fa3: DUP3
00000fa4: ADD
00000fa5: MLOAD
00000fa6: DUP2
00000fa7: PUSH1 0x02
00000fa9: ADD
00000faa: PUSH1 0x00
00000fac: PUSH2 0x0100
00000faf: EXP
00000fb0: DUP2
00000fb1: SLOAD
00000fb2: DUP2
00000fb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fc8: MUL
00000fc9: NOT
00000fca: AND
00000fcb: SWAP1
00000fcc: DUP4
00000fcd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fe2: AND
00000fe3: MUL
00000fe4: OR
00000fe5: SWAP1
00000fe6: SSTORE
00000fe7: POP
00000fe8: PUSH1 0x60
00000fea: DUP3
00000feb: ADD
00000fec: MLOAD
00000fed: DUP2
00000fee: PUSH1 0x03
00000ff0: ADD
00000ff1: SSTORE
00000ff2: PUSH1 0x80
00000ff4: DUP3
00000ff5: ADD
00000ff6: MLOAD
00000ff7: DUP2
00000ff8: PUSH1 0x04
00000ffa: ADD
00000ffb: PUSH1 0x00
00000ffd: PUSH2 0x0100
00001000: EXP
00001001: DUP2
00001002: SLOAD
00001003: DUP2
00001004: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001019: MUL
0000101a: NOT
0000101b: AND
0000101c: SWAP1
0000101d: DUP4
0000101e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001033: AND
00001034: MUL
00001035: OR
00001036: SWAP1
00001037: SSTORE
00001038: POP
00001039: SWAP1
0000103a: POP
0000103b: POP
0000103c: DUP1
0000103d: PUSH32 0x7d5dcd38c1855f2d3253f06fbd995a7b03b1bd0d20277c21ffcb093862ccb0df
0000105e: PUSH1 0x40
00001060: MLOAD
00001061: PUSH1 0x40
00001063: MLOAD
00001064: DUP1
00001065: SWAP2
00001066: SUB
00001067: SWAP1
00001068: LOG2
00001069: POP
0000106a: JUMP
0000106b: JUMPDEST
0000106c: PUSH1 0x0a
0000106e: PUSH1 0x20
00001070: MSTORE
00001071: DUP1
00001072: PUSH1 0x00
00001074: MSTORE
00001075: PUSH1 0x40
00001077: PUSH1 0x00
00001079: KECCAK256
0000107a: PUSH1 0x00
0000107c: SWAP2
0000107d: POP
0000107e: SLOAD
0000107f: SWAP1
00001080: PUSH2 0x0100
00001083: EXP
00001084: SWAP1
00001085: DIV
00001086: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000109b: AND
0000109c: DUP2
0000109d: JUMP
0000109e: JUMPDEST
0000109f: PUSH1 0x05
000010a1: PUSH1 0x00
000010a3: SWAP1
000010a4: SLOAD
000010a5: SWAP1
000010a6: PUSH2 0x0100
000010a9: EXP
000010aa: SWAP1
000010ab: DIV
000010ac: PUSH1 0xff
000010ae: AND
000010af: DUP2
000010b0: JUMP
000010b1: JUMPDEST
000010b2: PUSH1 0x00
000010b4: PUSH1 0x12
000010b6: PUSH1 0x00
000010b8: CALLER
000010b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010ce: AND
000010cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010e4: AND
000010e5: DUP2
000010e6: MSTORE
000010e7: PUSH1 0x20
000010e9: ADD
000010ea: SWAP1
000010eb: DUP2
000010ec: MSTORE
000010ed: PUSH1 0x20
000010ef: ADD
000010f0: PUSH1 0x00
000010f2: KECCAK256
000010f3: SLOAD
000010f4: SWAP1
000010f5: POP
000010f6: PUSH1 0x00
000010f8: PUSH1 0x12
000010fa: PUSH1 0x00
000010fc: CALLER
000010fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001112: AND
00001113: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001128: AND
00001129: DUP2
0000112a: MSTORE
0000112b: PUSH1 0x20
0000112d: ADD
0000112e: SWAP1
0000112f: DUP2
00001130: MSTORE
00001131: PUSH1 0x20
00001133: ADD
00001134: PUSH1 0x00
00001136: KECCAK256
00001137: DUP2
00001138: SWAP1
00001139: SSTORE
0000113a: POP
0000113b: CALLER
0000113c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001151: AND
00001152: PUSH2 0x08fc
00001155: DUP3
00001156: SWAP1
00001157: DUP2
00001158: ISZERO
00001159: MUL
0000115a: SWAP1
0000115b: PUSH1 0x40
0000115d: MLOAD
0000115e: PUSH1 0x00
00001160: PUSH1 0x40
00001162: MLOAD
00001163: DUP1
00001164: DUP4
00001165: SUB
00001166: DUP2
00001167: DUP6
00001168: DUP9
00001169: DUP9
0000116a: CALL
0000116b: SWAP4
0000116c: POP
0000116d: POP
0000116e: POP
0000116f: POP
00001170: ISZERO
00001171: ISZERO
00001172: PUSH2 0x117a
00001175: JUMPI
00001176: PUSH1 0x00
00001178: DUP1
00001179: REVERT
0000117a: JUMPDEST
0000117b: POP
0000117c: JUMP
0000117d: JUMPDEST
0000117e: PUSH1 0x06
00001180: SLOAD
00001181: DUP2
00001182: JUMP
00001183: JUMPDEST
00001184: PUSH1 0x10
00001186: DUP2
00001187: DUP2
00001188: SLOAD
00001189: DUP2
0000118a: LT
0000118b: ISZERO
0000118c: ISZERO
0000118d: PUSH2 0x1192
00001190: JUMPI
00001191: INVALID
00001192: JUMPDEST
00001193: SWAP1
00001194: PUSH1 0x00
00001196: MSTORE
00001197: PUSH1 0x20
00001199: PUSH1 0x00
0000119b: KECCAK256
0000119c: SWAP1
0000119d: ADD
0000119e: PUSH1 0x00
000011a0: SWAP2
000011a1: POP
000011a2: SWAP1
000011a3: POP
000011a4: SLOAD
000011a5: DUP2
000011a6: JUMP
000011a7: JUMPDEST
000011a8: PUSH1 0x01
000011aa: PUSH1 0x00
000011ac: SWAP1
000011ad: SLOAD
000011ae: SWAP1
000011af: PUSH2 0x0100
000011b2: EXP
000011b3: SWAP1
000011b4: DIV
000011b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011ca: AND
000011cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011e0: AND
000011e1: CALLER
000011e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011f7: AND
000011f8: EQ
000011f9: ISZERO
000011fa: ISZERO
000011fb: PUSH2 0x1203
000011fe: JUMPI
000011ff: PUSH1 0x00
00001201: DUP1
00001202: REVERT
00001203: JUMPDEST
00001204: PUSH1 0x10
00001206: DUP1
00001207: SLOAD
00001208: SWAP1
00001209: POP
0000120a: DUP3
0000120b: PUSH4 0xffffffff
00001210: AND
00001211: GT
00001212: ISZERO
00001213: ISZERO
00001214: ISZERO
00001215: PUSH2 0x121d
00001218: JUMPI
00001219: PUSH1 0x00
0000121b: DUP1
0000121c: REVERT
0000121d: JUMPDEST
0000121e: DUP1
0000121f: PUSH1 0x0b
00001221: PUSH1 0x00
00001223: DUP5
00001224: PUSH4 0xffffffff
00001229: AND
0000122a: PUSH4 0xffffffff
0000122f: AND
00001230: DUP2
00001231: MSTORE
00001232: PUSH1 0x20
00001234: ADD
00001235: SWAP1
00001236: DUP2
00001237: MSTORE
00001238: PUSH1 0x20
0000123a: ADD
0000123b: PUSH1 0x00
0000123d: KECCAK256
0000123e: DUP2
0000123f: SWAP1
00001240: SSTORE
00001241: POP
00001242: PUSH32 0x0d18952b49d796ef682b17341dc9347e1cbd53ede7fa0529048f9d1c2c485fd4
00001263: DUP3
00001264: DUP3
00001265: PUSH1 0x40
00001267: MLOAD
00001268: DUP1
00001269: DUP4
0000126a: PUSH4 0xffffffff
0000126f: AND
00001270: PUSH4 0xffffffff
00001275: AND
00001276: DUP2
00001277: MSTORE
00001278: PUSH1 0x20
0000127a: ADD
0000127b: DUP3
0000127c: DUP2
0000127d: MSTORE
0000127e: PUSH1 0x20
00001280: ADD
00001281: SWAP3
00001282: POP
00001283: POP
00001284: POP
00001285: PUSH1 0x40
00001287: MLOAD
00001288: DUP1
00001289: SWAP2
0000128a: SUB
0000128b: SWAP1
0000128c: LOG1
0000128d: POP
0000128e: POP
0000128f: JUMP
00001290: JUMPDEST
00001291: PUSH1 0x00
00001293: PUSH1 0x01
00001295: PUSH1 0x00
00001297: SWAP1
00001298: SLOAD
00001299: SWAP1
0000129a: PUSH2 0x0100
0000129d: EXP
0000129e: SWAP1
0000129f: DIV
000012a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012b5: AND
000012b6: SWAP1
000012b7: POP
000012b8: SWAP1
000012b9: JUMP
000012ba: JUMPDEST
000012bb: PUSH1 0x07
000012bd: PUSH1 0x16
000012bf: SWAP1
000012c0: SLOAD
000012c1: SWAP1
000012c2: PUSH2 0x0100
000012c5: EXP
000012c6: SWAP1
000012c7: DIV
000012c8: PUSH1 0xff
000012ca: AND
000012cb: ISZERO
000012cc: ISZERO
000012cd: ISZERO
000012ce: PUSH2 0x12d6
000012d1: JUMPI
000012d2: PUSH1 0x00
000012d4: DUP1
000012d5: REVERT
000012d6: JUMPDEST
000012d7: PUSH1 0x00
000012d9: PUSH1 0x08
000012db: SLOAD
000012dc: EQ
000012dd: ISZERO
000012de: ISZERO
000012df: ISZERO
000012e0: PUSH2 0x12e8
000012e3: JUMPI
000012e4: PUSH1 0x00
000012e6: DUP1
000012e7: REVERT
000012e8: JUMPDEST
000012e9: PUSH1 0x00
000012eb: PUSH1 0x0a
000012ed: PUSH1 0x00
000012ef: DUP4
000012f0: DUP2
000012f1: MSTORE
000012f2: PUSH1 0x20
000012f4: ADD
000012f5: SWAP1
000012f6: DUP2
000012f7: MSTORE
000012f8: PUSH1 0x20
000012fa: ADD
000012fb: PUSH1 0x00
000012fd: KECCAK256
000012fe: PUSH1 0x00
00001300: SWAP1
00001301: SLOAD
00001302: SWAP1
00001303: PUSH2 0x0100
00001306: EXP
00001307: SWAP1
00001308: DIV
00001309: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000131e: AND
0000131f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001334: AND
00001335: EQ
00001336: ISZERO
00001337: ISZERO
00001338: PUSH2 0x1340
0000133b: JUMPI
0000133c: PUSH1 0x00
0000133e: DUP1
0000133f: REVERT
00001340: JUMPDEST
00001341: PUSH1 0x06
00001343: SLOAD
00001344: DUP2
00001345: LT
00001346: ISZERO
00001347: ISZERO
00001348: PUSH2 0x1350
0000134b: JUMPI
0000134c: PUSH1 0x00
0000134e: DUP1
0000134f: REVERT
00001350: JUMPDEST
00001351: PUSH1 0x09
00001353: SLOAD
00001354: DUP2
00001355: LT
00001356: ISZERO
00001357: ISZERO
00001358: PUSH2 0x1360
0000135b: JUMPI
0000135c: PUSH1 0x00
0000135e: DUP1
0000135f: REVERT
00001360: JUMPDEST
00001361: CALLVALUE
00001362: PUSH2 0x136a
00001365: DUP3
00001366: PUSH2 0x151a
00001369: JUMP
0000136a: JUMPDEST
0000136b: GT
0000136c: ISZERO
0000136d: ISZERO
0000136e: ISZERO
0000136f: PUSH2 0x1377
00001372: JUMPI
00001373: PUSH1 0x00
00001375: DUP1
00001376: REVERT
00001377: JUMPDEST
00001378: CALLER
00001379: PUSH1 0x0a
0000137b: PUSH1 0x00
0000137d: DUP4
0000137e: DUP2
0000137f: MSTORE
00001380: PUSH1 0x20
00001382: ADD
00001383: SWAP1
00001384: DUP2
00001385: MSTORE
00001386: PUSH1 0x20
00001388: ADD
00001389: PUSH1 0x00
0000138b: KECCAK256
0000138c: PUSH1 0x00
0000138e: PUSH2 0x0100
00001391: EXP
00001392: DUP2
00001393: SLOAD
00001394: DUP2
00001395: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013aa: MUL
000013ab: NOT
000013ac: AND
000013ad: SWAP1
000013ae: DUP4
000013af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013c4: AND
000013c5: MUL
000013c6: OR
000013c7: SWAP1
000013c8: SSTORE
000013c9: POP
000013ca: PUSH1 0x0d
000013cc: PUSH1 0x00
000013ce: CALLER
000013cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013e4: AND
000013e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013fa: AND
000013fb: DUP2
000013fc: MSTORE
000013fd: PUSH1 0x20
000013ff: ADD
00001400: SWAP1
00001401: DUP2
00001402: MSTORE
00001403: PUSH1 0x20
00001405: ADD
00001406: PUSH1 0x00
00001408: KECCAK256
00001409: PUSH1 0x00
0000140b: DUP2
0000140c: SLOAD
0000140d: DUP1
0000140e: SWAP3
0000140f: SWAP2
00001410: SWAP1
00001411: PUSH1 0x01
00001413: ADD
00001414: SWAP2
00001415: SWAP1
00001416: POP
00001417: SSTORE
00001418: POP
00001419: PUSH1 0x08
0000141b: PUSH1 0x00
0000141d: DUP2
0000141e: SLOAD
0000141f: DUP1
00001420: SWAP3
00001421: SWAP2
00001422: SWAP1
00001423: PUSH1 0x01
00001425: SWAP1
00001426: SUB
00001427: SWAP2
00001428: SWAP1
00001429: POP
0000142a: SSTORE
0000142b: POP
0000142c: CALLER
0000142d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001442: AND
00001443: PUSH32 0x8a0e37b73a0d9c82e205d4d1a3ff3d0b57ce5f4d7bccf6bac03336dc101cb7ba
00001464: DUP3
00001465: PUSH1 0x40
00001467: MLOAD
00001468: DUP1
00001469: DUP3
0000146a: DUP2
0000146b: MSTORE
0000146c: PUSH1 0x20
0000146e: ADD
0000146f: SWAP2
00001470: POP
00001471: POP
00001472: PUSH1 0x40
00001474: MLOAD
00001475: DUP1
00001476: SWAP2
00001477: SUB
00001478: SWAP1
00001479: LOG2
0000147a: POP
0000147b: JUMP
0000147c: JUMPDEST
0000147d: PUSH1 0x00
0000147f: DUP1
00001480: SLOAD
00001481: PUSH1 0x01
00001483: DUP2
00001484: PUSH1 0x01
00001486: AND
00001487: ISZERO
00001488: PUSH2 0x0100
0000148b: MUL
0000148c: SUB
0000148d: AND
0000148e: PUSH1 0x02
00001490: SWAP1
00001491: DIV
00001492: DUP1
00001493: PUSH1 0x1f
00001495: ADD
00001496: PUSH1 0x20
00001498: DUP1
00001499: SWAP2
0000149a: DIV
0000149b: MUL
0000149c: PUSH1 0x20
0000149e: ADD
0000149f: PUSH1 0x40
000014a1: MLOAD
000014a2: SWAP1
000014a3: DUP2
000014a4: ADD
000014a5: PUSH1 0x40
000014a7: MSTORE
000014a8: DUP1
000014a9: SWAP3
000014aa: SWAP2
000014ab: SWAP1
000014ac: DUP2
000014ad: DUP2
000014ae: MSTORE
000014af: PUSH1 0x20
000014b1: ADD
000014b2: DUP3
000014b3: DUP1
000014b4: SLOAD
000014b5: PUSH1 0x01
000014b7: DUP2
000014b8: PUSH1 0x01
000014ba: AND
000014bb: ISZERO
000014bc: PUSH2 0x0100
000014bf: MUL
000014c0: SUB
000014c1: AND
000014c2: PUSH1 0x02
000014c4: SWAP1
000014c5: DIV
000014c6: DUP1
000014c7: ISZERO
000014c8: PUSH2 0x1512
000014cb: JUMPI
000014cc: DUP1
000014cd: PUSH1 0x1f
000014cf: LT
000014d0: PUSH2 0x14e7
000014d3: JUMPI
000014d4: PUSH2 0x0100
000014d7: DUP1
000014d8: DUP4
000014d9: SLOAD
000014da: DIV
000014db: MUL
000014dc: DUP4
000014dd: MSTORE
000014de: SWAP2
000014df: PUSH1 0x20
000014e1: ADD
000014e2: SWAP2
000014e3: PUSH2 0x1512
000014e6: JUMP
000014e7: JUMPDEST
000014e8: DUP3
000014e9: ADD
000014ea: SWAP2
000014eb: SWAP1
000014ec: PUSH1 0x00
000014ee: MSTORE
000014ef: PUSH1 0x20
000014f1: PUSH1 0x00
000014f3: KECCAK256
000014f4: SWAP1
000014f5: JUMPDEST
000014f6: DUP2
000014f7: SLOAD
000014f8: DUP2
000014f9: MSTORE
000014fa: SWAP1
000014fb: PUSH1 0x01
000014fd: ADD
000014fe: SWAP1
000014ff: PUSH1 0x20
00001501: ADD
00001502: DUP1
00001503: DUP4
00001504: GT
00001505: PUSH2 0x14f5
00001508: JUMPI
00001509: DUP3
0000150a: SWAP1
0000150b: SUB
0000150c: PUSH1 0x1f
0000150e: AND
0000150f: DUP3
00001510: ADD
00001511: SWAP2
00001512: JUMPDEST
00001513: POP
00001514: POP
00001515: POP
00001516: POP
00001517: POP
00001518: DUP2
00001519: JUMP
0000151a: JUMPDEST
0000151b: PUSH1 0x00
0000151d: DUP1
0000151e: PUSH1 0x06
00001520: SLOAD
00001521: DUP4
00001522: LT
00001523: ISZERO
00001524: ISZERO
00001525: PUSH2 0x152d
00001528: JUMPI
00001529: PUSH1 0x00
0000152b: DUP1
0000152c: REVERT
0000152d: JUMPDEST
0000152e: PUSH1 0x00
00001530: PUSH1 0x0c
00001532: PUSH1 0x00
00001534: DUP6
00001535: DUP2
00001536: MSTORE
00001537: PUSH1 0x20
00001539: ADD
0000153a: SWAP1
0000153b: DUP2
0000153c: MSTORE
0000153d: PUSH1 0x20
0000153f: ADD
00001540: PUSH1 0x00
00001542: KECCAK256
00001543: SLOAD
00001544: EQ
00001545: ISZERO
00001546: ISZERO
00001547: PUSH2 0x1565
0000154a: JUMPI
0000154b: PUSH1 0x0c
0000154d: PUSH1 0x00
0000154f: DUP5
00001550: DUP2
00001551: MSTORE
00001552: PUSH1 0x20
00001554: ADD
00001555: SWAP1
00001556: DUP2
00001557: MSTORE
00001558: PUSH1 0x20
0000155a: ADD
0000155b: PUSH1 0x00
0000155d: KECCAK256
0000155e: SLOAD
0000155f: SWAP2
00001560: POP
00001561: PUSH2 0x1593
00001564: JUMP
00001565: JUMPDEST
00001566: PUSH2 0x156e
00001569: DUP4
0000156a: PUSH2 0x1ddc
0000156d: JUMP
0000156e: JUMPDEST
0000156f: SWAP1
00001570: POP
00001571: PUSH1 0x0b
00001573: PUSH1 0x00
00001575: DUP3
00001576: PUSH4 0xffffffff
0000157b: AND
0000157c: PUSH4 0xffffffff
00001581: AND
00001582: DUP2
00001583: MSTORE
00001584: PUSH1 0x20
00001586: ADD
00001587: SWAP1
00001588: DUP2
00001589: MSTORE
0000158a: PUSH1 0x20
0000158c: ADD
0000158d: PUSH1 0x00
0000158f: KECCAK256
00001590: SLOAD
00001591: SWAP2
00001592: POP
00001593: JUMPDEST
00001594: POP
00001595: SWAP2
00001596: SWAP1
00001597: POP
00001598: JUMP
00001599: JUMPDEST
0000159a: PUSH1 0x0e
0000159c: PUSH1 0x20
0000159e: MSTORE
0000159f: DUP1
000015a0: PUSH1 0x00
000015a2: MSTORE
000015a3: PUSH1 0x40
000015a5: PUSH1 0x00
000015a7: KECCAK256
000015a8: PUSH1 0x00
000015aa: SWAP2
000015ab: POP
000015ac: SWAP1
000015ad: POP
000015ae: DUP1
000015af: SLOAD
000015b0: PUSH1 0x01
000015b2: DUP2
000015b3: PUSH1 0x01
000015b5: AND
000015b6: ISZERO
000015b7: PUSH2 0x0100
000015ba: MUL
000015bb: SUB
000015bc: AND
000015bd: PUSH1 0x02
000015bf: SWAP1
000015c0: DIV
000015c1: DUP1
000015c2: PUSH1 0x1f
000015c4: ADD
000015c5: PUSH1 0x20
000015c7: DUP1
000015c8: SWAP2
000015c9: DIV
000015ca: MUL
000015cb: PUSH1 0x20
000015cd: ADD
000015ce: PUSH1 0x40
000015d0: MLOAD
000015d1: SWAP1
000015d2: DUP2
000015d3: ADD
000015d4: PUSH1 0x40
000015d6: MSTORE
000015d7: DUP1
000015d8: SWAP3
000015d9: SWAP2
000015da: SWAP1
000015db: DUP2
000015dc: DUP2
000015dd: MSTORE
000015de: PUSH1 0x20
000015e0: ADD
000015e1: DUP3
000015e2: DUP1
000015e3: SLOAD
000015e4: PUSH1 0x01
000015e6: DUP2
000015e7: PUSH1 0x01
000015e9: AND
000015ea: ISZERO
000015eb: PUSH2 0x0100
000015ee: MUL
000015ef: SUB
000015f0: AND
000015f1: PUSH1 0x02
000015f3: SWAP1
000015f4: DIV
000015f5: DUP1
000015f6: ISZERO
000015f7: PUSH2 0x1641
000015fa: JUMPI
000015fb: DUP1
000015fc: PUSH1 0x1f
000015fe: LT
000015ff: PUSH2 0x1616
00001602: JUMPI
00001603: PUSH2 0x0100
00001606: DUP1
00001607: DUP4
00001608: SLOAD
00001609: DIV
0000160a: MUL
0000160b: DUP4
0000160c: MSTORE
0000160d: SWAP2
0000160e: PUSH1 0x20
00001610: ADD
00001611: SWAP2
00001612: PUSH2 0x1641
00001615: JUMP
00001616: JUMPDEST
00001617: DUP3
00001618: ADD
00001619: SWAP2
0000161a: SWAP1
0000161b: PUSH1 0x00
0000161d: MSTORE
0000161e: PUSH1 0x20
00001620: PUSH1 0x00
00001622: KECCAK256
00001623: SWAP1
00001624: JUMPDEST
00001625: DUP2
00001626: SLOAD
00001627: DUP2
00001628: MSTORE
00001629: SWAP1
0000162a: PUSH1 0x01
0000162c: ADD
0000162d: SWAP1
0000162e: PUSH1 0x20
00001630: ADD
00001631: DUP1
00001632: DUP4
00001633: GT
00001634: PUSH2 0x1624
00001637: JUMPI
00001638: DUP3
00001639: SWAP1
0000163a: SUB
0000163b: PUSH1 0x1f
0000163d: AND
0000163e: DUP3
0000163f: ADD
00001640: SWAP2
00001641: JUMPDEST
00001642: POP
00001643: POP
00001644: POP
00001645: POP
00001646: POP
00001647: DUP2
00001648: JUMP
00001649: JUMPDEST
0000164a: CALLER
0000164b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001660: AND
00001661: PUSH1 0x0a
00001663: PUSH1 0x00
00001665: DUP6
00001666: DUP2
00001667: MSTORE
00001668: PUSH1 0x20
0000166a: ADD
0000166b: SWAP1
0000166c: DUP2
0000166d: MSTORE
0000166e: PUSH1 0x20
00001670: ADD
00001671: PUSH1 0x00
00001673: KECCAK256
00001674: PUSH1 0x00
00001676: SWAP1
00001677: SLOAD
00001678: SWAP1
00001679: PUSH2 0x0100
0000167c: EXP
0000167d: SWAP1
0000167e: DIV
0000167f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001694: AND
00001695: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016aa: AND
000016ab: EQ
000016ac: ISZERO
000016ad: ISZERO
000016ae: PUSH2 0x16b6
000016b1: JUMPI
000016b2: PUSH1 0x00
000016b4: DUP1
000016b5: REVERT
000016b6: JUMPDEST
000016b7: PUSH1 0x06
000016b9: SLOAD
000016ba: DUP4
000016bb: LT
000016bc: ISZERO
000016bd: ISZERO
000016be: PUSH2 0x16c6
000016c1: JUMPI
000016c2: PUSH1 0x00
000016c4: DUP1
000016c5: REVERT
000016c6: JUMPDEST
000016c7: PUSH1 0xa0
000016c9: PUSH1 0x40
000016cb: MLOAD
000016cc: SWAP1
000016cd: DUP2
000016ce: ADD
000016cf: PUSH1 0x40
000016d1: MSTORE
000016d2: DUP1
000016d3: PUSH1 0x01
000016d5: ISZERO
000016d6: ISZERO
000016d7: DUP2
000016d8: MSTORE
000016d9: PUSH1 0x20
000016db: ADD
000016dc: DUP5
000016dd: DUP2
000016de: MSTORE
000016df: PUSH1 0x20
000016e1: ADD
000016e2: CALLER
000016e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016f8: AND
000016f9: DUP2
000016fa: MSTORE
000016fb: PUSH1 0x20
000016fd: ADD
000016fe: DUP4
000016ff: DUP2
00001700: MSTORE
00001701: PUSH1 0x20
00001703: ADD
00001704: DUP3
00001705: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000171a: AND
0000171b: DUP2
0000171c: MSTORE
0000171d: POP
0000171e: PUSH1 0x11
00001720: PUSH1 0x00
00001722: DUP6
00001723: DUP2
00001724: MSTORE
00001725: PUSH1 0x20
00001727: ADD
00001728: SWAP1
00001729: DUP2
0000172a: MSTORE
0000172b: PUSH1 0x20
0000172d: ADD
0000172e: PUSH1 0x00
00001730: KECCAK256
00001731: PUSH1 0x00
00001733: DUP3
00001734: ADD
00001735: MLOAD
00001736: DUP2
00001737: PUSH1 0x00
00001739: ADD
0000173a: PUSH1 0x00
0000173c: PUSH2 0x0100
0000173f: EXP
00001740: DUP2
00001741: SLOAD
00001742: DUP2
00001743: PUSH1 0xff
00001745: MUL
00001746: NOT
00001747: AND
00001748: SWAP1
00001749: DUP4
0000174a: ISZERO
0000174b: ISZERO
0000174c: MUL
0000174d: OR
0000174e: SWAP1
0000174f: SSTORE
00001750: POP
00001751: PUSH1 0x20
00001753: DUP3
00001754: ADD
00001755: MLOAD
00001756: DUP2
00001757: PUSH1 0x01
00001759: ADD
0000175a: SSTORE
0000175b: PUSH1 0x40
0000175d: DUP3
0000175e: ADD
0000175f: MLOAD
00001760: DUP2
00001761: PUSH1 0x02
00001763: ADD
00001764: PUSH1 0x00
00001766: PUSH2 0x0100
00001769: EXP
0000176a: DUP2
0000176b: SLOAD
0000176c: DUP2
0000176d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001782: MUL
00001783: NOT
00001784: AND
00001785: SWAP1
00001786: DUP4
00001787: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000179c: AND
0000179d: MUL
0000179e: OR
0000179f: SWAP1
000017a0: SSTORE
000017a1: POP
000017a2: PUSH1 0x60
000017a4: DUP3
000017a5: ADD
000017a6: MLOAD
000017a7: DUP2
000017a8: PUSH1 0x03
000017aa: ADD
000017ab: SSTORE
000017ac: PUSH1 0x80
000017ae: DUP3
000017af: ADD
000017b0: MLOAD
000017b1: DUP2
000017b2: PUSH1 0x04
000017b4: ADD
000017b5: PUSH1 0x00
000017b7: PUSH2 0x0100
000017ba: EXP
000017bb: DUP2
000017bc: SLOAD
000017bd: DUP2
000017be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017d3: MUL
000017d4: NOT
000017d5: AND
000017d6: SWAP1
000017d7: DUP4
000017d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017ed: AND
000017ee: MUL
000017ef: OR
000017f0: SWAP1
000017f1: SSTORE
000017f2: POP
000017f3: SWAP1
000017f4: POP
000017f5: POP
000017f6: DUP1
000017f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000180c: AND
0000180d: DUP4
0000180e: PUSH32 0x76eaef99642f3e716e9cfa6e3047136d4087a9fc18673cb754c35f522fa6f61f
0000182f: DUP5
00001830: PUSH1 0x40
00001832: MLOAD
00001833: DUP1
00001834: DUP3
00001835: DUP2
00001836: MSTORE
00001837: PUSH1 0x20
00001839: ADD
0000183a: SWAP2
0000183b: POP
0000183c: POP
0000183d: PUSH1 0x40
0000183f: MLOAD
00001840: DUP1
00001841: SWAP2
00001842: SUB
00001843: SWAP1
00001844: LOG3
00001845: POP
00001846: POP
00001847: POP
00001848: JUMP
00001849: JUMPDEST
0000184a: PUSH1 0x02
0000184c: DUP1
0000184d: SLOAD
0000184e: PUSH1 0x01
00001850: DUP2
00001851: PUSH1 0x01
00001853: AND
00001854: ISZERO
00001855: PUSH2 0x0100
00001858: MUL
00001859: SUB
0000185a: AND
0000185b: PUSH1 0x02
0000185d: SWAP1
0000185e: DIV
0000185f: DUP1
00001860: PUSH1 0x1f
00001862: ADD
00001863: PUSH1 0x20
00001865: DUP1
00001866: SWAP2
00001867: DIV
00001868: MUL
00001869: PUSH1 0x20
0000186b: ADD
0000186c: PUSH1 0x40
0000186e: MLOAD
0000186f: SWAP1
00001870: DUP2
00001871: ADD
00001872: PUSH1 0x40
00001874: MSTORE
00001875: DUP1
00001876: SWAP3
00001877: SWAP2
00001878: SWAP1
00001879: DUP2
0000187a: DUP2
0000187b: MSTORE
0000187c: PUSH1 0x20
0000187e: ADD
0000187f: DUP3
00001880: DUP1
00001881: SLOAD
00001882: PUSH1 0x01
00001884: DUP2
00001885: PUSH1 0x01
00001887: AND
00001888: ISZERO
00001889: PUSH2 0x0100
0000188c: MUL
0000188d: SUB
0000188e: AND
0000188f: PUSH1 0x02
00001891: SWAP1
00001892: DIV
00001893: DUP1
00001894: ISZERO
00001895: PUSH2 0x18df
00001898: JUMPI
00001899: DUP1
0000189a: PUSH1 0x1f
0000189c: LT
0000189d: PUSH2 0x18b4
000018a0: JUMPI
000018a1: PUSH2 0x0100
000018a4: DUP1
000018a5: DUP4
000018a6: SLOAD
000018a7: DIV
000018a8: MUL
000018a9: DUP4
000018aa: MSTORE
000018ab: SWAP2
000018ac: PUSH1 0x20
000018ae: ADD
000018af: SWAP2
000018b0: PUSH2 0x18df
000018b3: JUMP
000018b4: JUMPDEST
000018b5: DUP3
000018b6: ADD
000018b7: SWAP2
000018b8: SWAP1
000018b9: PUSH1 0x00
000018bb: MSTORE
000018bc: PUSH1 0x20
000018be: PUSH1 0x00
000018c0: KECCAK256
000018c1: SWAP1
000018c2: JUMPDEST
000018c3: DUP2
000018c4: SLOAD
000018c5: DUP2
000018c6: MSTORE
000018c7: SWAP1
000018c8: PUSH1 0x01
000018ca: ADD
000018cb: SWAP1
000018cc: PUSH1 0x20
000018ce: ADD
000018cf: DUP1
000018d0: DUP4
000018d1: GT
000018d2: PUSH2 0x18c2
000018d5: JUMPI
000018d6: DUP3
000018d7: SWAP1
000018d8: SUB
000018d9: PUSH1 0x1f
000018db: AND
000018dc: DUP3
000018dd: ADD
000018de: SWAP2
000018df: JUMPDEST
000018e0: POP
000018e1: POP
000018e2: POP
000018e3: POP
000018e4: POP
000018e5: DUP2
000018e6: JUMP
000018e7: JUMPDEST
000018e8: PUSH1 0x07
000018ea: PUSH1 0x15
000018ec: SWAP1
000018ed: SLOAD
000018ee: SWAP1
000018ef: PUSH2 0x0100
000018f2: EXP
000018f3: SWAP1
000018f4: DIV
000018f5: PUSH1 0xff
000018f7: AND
000018f8: DUP2
000018f9: JUMP
000018fa: JUMPDEST
000018fb: PUSH2 0x1902
000018fe: PUSH2 0x2dd5
00001901: JUMP
00001902: JUMPDEST
00001903: PUSH1 0x06
00001905: SLOAD
00001906: DUP5
00001907: LT
00001908: ISZERO
00001909: ISZERO
0000190a: PUSH2 0x1912
0000190d: JUMPI
0000190e: PUSH1 0x00
00001910: DUP1
00001911: REVERT
00001912: JUMPDEST
00001913: CALLER
00001914: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001929: AND
0000192a: PUSH1 0x0a
0000192c: PUSH1 0x00
0000192e: DUP7
0000192f: DUP2
00001930: MSTORE
00001931: PUSH1 0x20
00001933: ADD
00001934: SWAP1
00001935: DUP2
00001936: MSTORE
00001937: PUSH1 0x20
00001939: ADD
0000193a: PUSH1 0x00
0000193c: KECCAK256
0000193d: PUSH1 0x00
0000193f: SWAP1
00001940: SLOAD
00001941: SWAP1
00001942: PUSH2 0x0100
00001945: EXP
00001946: SWAP1
00001947: DIV
00001948: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000195d: AND
0000195e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001973: AND
00001974: EQ
00001975: ISZERO
00001976: ISZERO
00001977: PUSH2 0x197f
0000197a: JUMPI
0000197b: PUSH1 0x00
0000197d: DUP1
0000197e: REVERT
0000197f: JUMPDEST
00001980: PUSH1 0x00
00001982: DUP4
00001983: LT
00001984: ISZERO
00001985: DUP1
00001986: ISZERO
00001987: PUSH2 0x1990
0000198a: JUMPI
0000198b: POP
0000198c: PUSH1 0x06
0000198e: DUP4
0000198f: LT
00001990: JUMPDEST
00001991: ISZERO
00001992: ISZERO
00001993: PUSH2 0x199b
00001996: JUMPI
00001997: PUSH1 0x00
00001999: DUP1
0000199a: REVERT
0000199b: JUMPDEST
0000199c: PUSH1 0x0e
0000199e: PUSH1 0x00
000019a0: DUP5
000019a1: DUP2
000019a2: MSTORE
000019a3: PUSH1 0x20
000019a5: ADD
000019a6: SWAP1
000019a7: DUP2
000019a8: MSTORE
000019a9: PUSH1 0x20
000019ab: ADD
000019ac: PUSH1 0x00
000019ae: KECCAK256
000019af: DUP1
000019b0: SLOAD
000019b1: PUSH1 0x01
000019b3: DUP2
000019b4: PUSH1 0x01
000019b6: AND
000019b7: ISZERO
000019b8: PUSH2 0x0100
000019bb: MUL
000019bc: SUB
000019bd: AND
000019be: PUSH1 0x02
000019c0: SWAP1
000019c1: DIV
000019c2: DUP1
000019c3: PUSH1 0x1f
000019c5: ADD
000019c6: PUSH1 0x20
000019c8: DUP1
000019c9: SWAP2
000019ca: DIV
000019cb: MUL
000019cc: PUSH1 0x20
000019ce: ADD
000019cf: PUSH1 0x40
000019d1: MLOAD
000019d2: SWAP1
000019d3: DUP2
000019d4: ADD
000019d5: PUSH1 0x40
000019d7: MSTORE
000019d8: DUP1
000019d9: SWAP3
000019da: SWAP2
000019db: SWAP1
000019dc: DUP2
000019dd: DUP2
000019de: MSTORE
000019df: PUSH1 0x20
000019e1: ADD
000019e2: DUP3
000019e3: DUP1
000019e4: SLOAD
000019e5: PUSH1 0x01
000019e7: DUP2
000019e8: PUSH1 0x01
000019ea: AND
000019eb: ISZERO
000019ec: PUSH2 0x0100
000019ef: MUL
000019f0: SUB
000019f1: AND
000019f2: PUSH1 0x02
000019f4: SWAP1
000019f5: DIV
000019f6: DUP1
000019f7: ISZERO
000019f8: PUSH2 0x1a42
000019fb: JUMPI
000019fc: DUP1
000019fd: PUSH1 0x1f
000019ff: LT
00001a00: PUSH2 0x1a17
00001a03: JUMPI
00001a04: PUSH2 0x0100
00001a07: DUP1
00001a08: DUP4
00001a09: SLOAD
00001a0a: DIV
00001a0b: MUL
00001a0c: DUP4
00001a0d: MSTORE
00001a0e: SWAP2
00001a0f: PUSH1 0x20
00001a11: ADD
00001a12: SWAP2
00001a13: PUSH2 0x1a42
00001a16: JUMP
00001a17: JUMPDEST
00001a18: DUP3
00001a19: ADD
00001a1a: SWAP2
00001a1b: SWAP1
00001a1c: PUSH1 0x00
00001a1e: MSTORE
00001a1f: PUSH1 0x20
00001a21: PUSH1 0x00
00001a23: KECCAK256
00001a24: SWAP1
00001a25: JUMPDEST
00001a26: DUP2
00001a27: SLOAD
00001a28: DUP2
00001a29: MSTORE
00001a2a: SWAP1
00001a2b: PUSH1 0x01
00001a2d: ADD
00001a2e: SWAP1
00001a2f: PUSH1 0x20
00001a31: ADD
00001a32: DUP1
00001a33: DUP4
00001a34: GT
00001a35: PUSH2 0x1a25
00001a38: JUMPI
00001a39: DUP3
00001a3a: SWAP1
00001a3b: SUB
00001a3c: PUSH1 0x1f
00001a3e: AND
00001a3f: DUP3
00001a40: ADD
00001a41: SWAP2
00001a42: JUMPDEST
00001a43: POP
00001a44: POP
00001a45: POP
00001a46: POP
00001a47: POP
00001a48: SWAP1
00001a49: POP
00001a4a: PUSH1 0x00
00001a4c: DUP2
00001a4d: MLOAD
00001a4e: EQ
00001a4f: ISZERO
00001a50: ISZERO
00001a51: ISZERO
00001a52: PUSH2 0x1a5a
00001a55: JUMPI
00001a56: PUSH1 0x00
00001a58: DUP1
00001a59: REVERT
00001a5a: JUMPDEST
00001a5b: DUP2
00001a5c: PUSH1 0x0f
00001a5e: PUSH1 0x00
00001a60: DUP7
00001a61: DUP2
00001a62: MSTORE
00001a63: PUSH1 0x20
00001a65: ADD
00001a66: SWAP1
00001a67: DUP2
00001a68: MSTORE
00001a69: PUSH1 0x20
00001a6b: ADD
00001a6c: PUSH1 0x00
00001a6e: KECCAK256
00001a6f: DUP5
00001a70: PUSH1 0x06
00001a72: DUP2
00001a73: LT
00001a74: ISZERO
00001a75: ISZERO
00001a76: PUSH2 0x1a7b
00001a79: JUMPI
00001a7a: INVALID
00001a7b: JUMPDEST
00001a7c: ADD
00001a7d: SWAP1
00001a7e: DUP1
00001a7f: MLOAD
00001a80: SWAP1
00001a81: PUSH1 0x20
00001a83: ADD
00001a84: SWAP1
00001a85: PUSH2 0x1a8f
00001a88: SWAP3
00001a89: SWAP2
00001a8a: SWAP1
00001a8b: PUSH2 0x2de9
00001a8e: JUMP
00001a8f: JUMPDEST
00001a90: POP
00001a91: POP
00001a92: POP
00001a93: POP
00001a94: POP
00001a95: JUMP
00001a96: JUMPDEST
00001a97: PUSH1 0x00
00001a99: DUP1
00001a9a: PUSH1 0x0d
00001a9c: PUSH1 0x00
00001a9e: DUP5
00001a9f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ab4: AND
00001ab5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001aca: AND
00001acb: DUP2
00001acc: MSTORE
00001acd: PUSH1 0x20
00001acf: ADD
00001ad0: SWAP1
00001ad1: DUP2
00001ad2: MSTORE
00001ad3: PUSH1 0x20
00001ad5: ADD
00001ad6: PUSH1 0x00
00001ad8: KECCAK256
00001ad9: SLOAD
00001ada: EQ
00001adb: ISZERO
00001adc: ISZERO
00001add: ISZERO
00001ade: PUSH2 0x1ae6
00001ae1: JUMPI
00001ae2: PUSH1 0x00
00001ae4: DUP1
00001ae5: REVERT
00001ae6: JUMPDEST
00001ae7: PUSH1 0x0d
00001ae9: PUSH1 0x00
00001aeb: DUP4
00001aec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b01: AND
00001b02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b17: AND
00001b18: DUP2
00001b19: MSTORE
00001b1a: PUSH1 0x20
00001b1c: ADD
00001b1d: SWAP1
00001b1e: DUP2
00001b1f: MSTORE
00001b20: PUSH1 0x20
00001b22: ADD
00001b23: PUSH1 0x00
00001b25: KECCAK256
00001b26: SLOAD
00001b27: SWAP1
00001b28: POP
00001b29: SWAP2
00001b2a: SWAP1
00001b2b: POP
00001b2c: JUMP
00001b2d: JUMPDEST
00001b2e: PUSH1 0x0b
00001b30: PUSH1 0x20
00001b32: MSTORE
00001b33: DUP1
00001b34: PUSH1 0x00
00001b36: MSTORE
00001b37: PUSH1 0x40
00001b39: PUSH1 0x00
00001b3b: KECCAK256
00001b3c: PUSH1 0x00
00001b3e: SWAP2
00001b3f: POP
00001b40: SWAP1
00001b41: POP
00001b42: SLOAD
00001b43: DUP2
00001b44: JUMP
00001b45: JUMPDEST
00001b46: PUSH1 0x00
00001b48: DUP1
00001b49: PUSH1 0x01
00001b4b: PUSH1 0x00
00001b4d: SWAP1
00001b4e: SLOAD
00001b4f: SWAP1
00001b50: PUSH2 0x0100
00001b53: EXP
00001b54: SWAP1
00001b55: DIV
00001b56: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b6b: AND
00001b6c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b81: AND
00001b82: CALLER
00001b83: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b98: AND
00001b99: EQ
00001b9a: ISZERO
00001b9b: ISZERO
00001b9c: PUSH2 0x1ba4
00001b9f: JUMPI
00001ba0: PUSH1 0x00
00001ba2: DUP1
00001ba3: REVERT
00001ba4: JUMPDEST
00001ba5: PUSH1 0x07
00001ba7: PUSH1 0x15
00001ba9: SWAP1
00001baa: SLOAD
00001bab: SWAP1
00001bac: PUSH2 0x0100
00001baf: EXP
00001bb0: SWAP1
00001bb1: DIV
00001bb2: PUSH1 0xff
00001bb4: AND
00001bb5: ISZERO
00001bb6: ISZERO
00001bb7: ISZERO
00001bb8: PUSH2 0x1bc0
00001bbb: JUMPI
00001bbc: PUSH1 0x00
00001bbe: DUP1
00001bbf: REVERT
00001bc0: JUMPDEST
00001bc1: PUSH1 0x00
00001bc3: DUP6
00001bc4: GT
00001bc5: ISZERO
00001bc6: ISZERO
00001bc7: PUSH2 0x1bcf
00001bca: JUMPI
00001bcb: PUSH1 0x00
00001bcd: DUP1
00001bce: REVERT
00001bcf: JUMPDEST
00001bd0: DUP5
00001bd1: PUSH1 0x09
00001bd3: SLOAD
00001bd4: ADD
00001bd5: PUSH1 0x09
00001bd7: DUP2
00001bd8: SWAP1
00001bd9: SSTORE
00001bda: POP
00001bdb: PUSH1 0x06
00001bdd: SLOAD
00001bde: SWAP1
00001bdf: POP
00001be0: DUP5
00001be1: PUSH1 0x06
00001be3: SLOAD
00001be4: ADD
00001be5: PUSH1 0x06
00001be7: DUP2
00001be8: SWAP1
00001be9: SSTORE
00001bea: POP
00001beb: DUP5
00001bec: PUSH1 0x08
00001bee: SLOAD
00001bef: ADD
00001bf0: PUSH1 0x08
00001bf2: DUP2
00001bf3: SWAP1
00001bf4: SSTORE
00001bf5: POP
00001bf6: DUP3
00001bf7: PUSH1 0x00
00001bf9: SWAP1
00001bfa: DUP1
00001bfb: MLOAD
00001bfc: SWAP1
00001bfd: PUSH1 0x20
00001bff: ADD
00001c00: SWAP1
00001c01: PUSH2 0x1c0b
00001c04: SWAP3
00001c05: SWAP2
00001c06: SWAP1
00001c07: PUSH2 0x2de9
00001c0a: JUMP
00001c0b: JUMPDEST
00001c0c: POP
00001c0d: DUP4
00001c0e: PUSH1 0x0b
00001c10: PUSH1 0x00
00001c12: DUP9
00001c13: PUSH4 0xffffffff
00001c18: AND
00001c19: PUSH4 0xffffffff
00001c1e: AND
00001c1f: DUP2
00001c20: MSTORE
00001c21: PUSH1 0x20
00001c23: ADD
00001c24: SWAP1
00001c25: DUP2
00001c26: MSTORE
00001c27: PUSH1 0x20
00001c29: ADD
00001c2a: PUSH1 0x00
00001c2c: KECCAK256
00001c2d: DUP2
00001c2e: SWAP1
00001c2f: SSTORE
00001c30: POP
00001c31: PUSH1 0x10
00001c33: DUP1
00001c34: SLOAD
00001c35: DUP1
00001c36: PUSH1 0x01
00001c38: ADD
00001c39: DUP3
00001c3a: DUP2
00001c3b: PUSH2 0x1c44
00001c3e: SWAP2
00001c3f: SWAP1
00001c40: PUSH2 0x2e69
00001c43: JUMP
00001c44: JUMPDEST
00001c45: SWAP2
00001c46: PUSH1 0x00
00001c48: MSTORE
00001c49: PUSH1 0x20
00001c4b: PUSH1 0x00
00001c4d: KECCAK256
00001c4e: SWAP1
00001c4f: ADD
00001c50: PUSH1 0x00
00001c52: PUSH1 0x06
00001c54: SLOAD
00001c55: SWAP1
00001c56: SWAP2
00001c57: SWAP1
00001c58: SWAP2
00001c59: POP
00001c5a: SSTORE
00001c5b: POP
00001c5c: DUP5
00001c5d: PUSH32 0x76edb1b512062ed2fa9a21753f6906d5806f2522b48caf004f8b78eac6418ee5
00001c7e: PUSH1 0x06
00001c80: SLOAD
00001c81: DUP7
00001c82: DUP7
00001c83: PUSH1 0x40
00001c85: MLOAD
00001c86: DUP1
00001c87: DUP5
00001c88: DUP2
00001c89: MSTORE
00001c8a: PUSH1 0x20
00001c8c: ADD
00001c8d: DUP4
00001c8e: DUP2
00001c8f: MSTORE
00001c90: PUSH1 0x20
00001c92: ADD
00001c93: DUP1
00001c94: PUSH1 0x20
00001c96: ADD
00001c97: DUP3
00001c98: DUP2
00001c99: SUB
00001c9a: DUP3
00001c9b: MSTORE
00001c9c: DUP4
00001c9d: DUP2
00001c9e: DUP2
00001c9f: MLOAD
00001ca0: DUP2
00001ca1: MSTORE
00001ca2: PUSH1 0x20
00001ca4: ADD
00001ca5: SWAP2
00001ca6: POP
00001ca7: DUP1
00001ca8: MLOAD
00001ca9: SWAP1
00001caa: PUSH1 0x20
00001cac: ADD
00001cad: SWAP1
00001cae: DUP1
00001caf: DUP4
00001cb0: DUP4
00001cb1: PUSH1 0x00
00001cb3: JUMPDEST
00001cb4: DUP4
00001cb5: DUP2
00001cb6: LT
00001cb7: ISZERO
00001cb8: PUSH2 0x1cce
00001cbb: JUMPI
00001cbc: DUP1
00001cbd: DUP3
00001cbe: ADD
00001cbf: MLOAD
00001cc0: DUP2
00001cc1: DUP5
00001cc2: ADD
00001cc3: MSTORE
00001cc4: PUSH1 0x20
00001cc6: DUP2
00001cc7: ADD
00001cc8: SWAP1
00001cc9: POP
00001cca: PUSH2 0x1cb3
00001ccd: JUMP
00001cce: JUMPDEST
00001ccf: POP
00001cd0: POP
00001cd1: POP
00001cd2: POP
00001cd3: SWAP1
00001cd4: POP
00001cd5: SWAP1
00001cd6: DUP2
00001cd7: ADD
00001cd8: SWAP1
00001cd9: PUSH1 0x1f
00001cdb: AND
00001cdc: DUP1
00001cdd: ISZERO
00001cde: PUSH2 0x1cfb
00001ce1: JUMPI
00001ce2: DUP1
00001ce3: DUP3
00001ce4: SUB
00001ce5: DUP1
00001ce6: MLOAD
00001ce7: PUSH1 0x01
00001ce9: DUP4
00001cea: PUSH1 0x20
00001cec: SUB
00001ced: PUSH2 0x0100
00001cf0: EXP
00001cf1: SUB
00001cf2: NOT
00001cf3: AND
00001cf4: DUP2
00001cf5: MSTORE
00001cf6: PUSH1 0x20
00001cf8: ADD
00001cf9: SWAP2
00001cfa: POP
00001cfb: JUMPDEST
00001cfc: POP
00001cfd: SWAP5
00001cfe: POP
00001cff: POP
00001d00: POP
00001d01: POP
00001d02: POP
00001d03: PUSH1 0x40
00001d05: MLOAD
00001d06: DUP1
00001d07: SWAP2
00001d08: SUB
00001d09: SWAP1
00001d0a: LOG2
00001d0b: PUSH1 0x06
00001d0d: SLOAD
00001d0e: SWAP2
00001d0f: POP
00001d10: POP
00001d11: SWAP5
00001d12: SWAP4
00001d13: POP
00001d14: POP
00001d15: POP
00001d16: POP
00001d17: JUMP
00001d18: JUMPDEST
00001d19: PUSH1 0x07
00001d1b: PUSH1 0x00
00001d1d: SWAP1
00001d1e: SLOAD
00001d1f: SWAP1
00001d20: PUSH2 0x0100
00001d23: EXP
00001d24: SWAP1
00001d25: DIV
00001d26: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d3b: AND
00001d3c: DUP2
00001d3d: JUMP
00001d3e: JUMPDEST
00001d3f: PUSH1 0x04
00001d41: DUP1
00001d42: SLOAD
00001d43: PUSH1 0x01
00001d45: DUP2
00001d46: PUSH1 0x01
00001d48: AND
00001d49: ISZERO
00001d4a: PUSH2 0x0100
00001d4d: MUL
00001d4e: SUB
00001d4f: AND
00001d50: PUSH1 0x02
00001d52: SWAP1
00001d53: DIV
00001d54: DUP1
00001d55: PUSH1 0x1f
00001d57: ADD
00001d58: PUSH1 0x20
00001d5a: DUP1
00001d5b: SWAP2
00001d5c: DIV
00001d5d: MUL
00001d5e: PUSH1 0x20
00001d60: ADD
00001d61: PUSH1 0x40
00001d63: MLOAD
00001d64: SWAP1
00001d65: DUP2
00001d66: ADD
00001d67: PUSH1 0x40
00001d69: MSTORE
00001d6a: DUP1
00001d6b: SWAP3
00001d6c: SWAP2
00001d6d: SWAP1
00001d6e: DUP2
00001d6f: DUP2
00001d70: MSTORE
00001d71: PUSH1 0x20
00001d73: ADD
00001d74: DUP3
00001d75: DUP1
00001d76: SLOAD
00001d77: PUSH1 0x01
00001d79: DUP2
00001d7a: PUSH1 0x01
00001d7c: AND
00001d7d: ISZERO
00001d7e: PUSH2 0x0100
00001d81: MUL
00001d82: SUB
00001d83: AND
00001d84: PUSH1 0x02
00001d86: SWAP1
00001d87: DIV
00001d88: DUP1
00001d89: ISZERO
00001d8a: PUSH2 0x1dd4
00001d8d: JUMPI
00001d8e: DUP1
00001d8f: PUSH1 0x1f
00001d91: LT
00001d92: PUSH2 0x1da9
00001d95: JUMPI
00001d96: PUSH2 0x0100
00001d99: DUP1
00001d9a: DUP4
00001d9b: SLOAD
00001d9c: DIV
00001d9d: MUL
00001d9e: DUP4
00001d9f: MSTORE
00001da0: SWAP2
00001da1: PUSH1 0x20
00001da3: ADD
00001da4: SWAP2
00001da5: PUSH2 0x1dd4
00001da8: JUMP
00001da9: JUMPDEST
00001daa: DUP3
00001dab: ADD
00001dac: SWAP2
00001dad: SWAP1
00001dae: PUSH1 0x00
00001db0: MSTORE
00001db1: PUSH1 0x20
00001db3: PUSH1 0x00
00001db5: KECCAK256
00001db6: SWAP1
00001db7: JUMPDEST
00001db8: DUP2
00001db9: SLOAD
00001dba: DUP2
00001dbb: MSTORE
00001dbc: SWAP1
00001dbd: PUSH1 0x01
00001dbf: ADD
00001dc0: SWAP1
00001dc1: PUSH1 0x20
00001dc3: ADD
00001dc4: DUP1
00001dc5: DUP4
00001dc6: GT
00001dc7: PUSH2 0x1db7
00001dca: JUMPI
00001dcb: DUP3
00001dcc: SWAP1
00001dcd: SUB
00001dce: PUSH1 0x1f
00001dd0: AND
00001dd1: DUP3
00001dd2: ADD
00001dd3: SWAP2
00001dd4: JUMPDEST
00001dd5: POP
00001dd6: POP
00001dd7: POP
00001dd8: POP
00001dd9: POP
00001dda: DUP2
00001ddb: JUMP
00001ddc: JUMPDEST
00001ddd: PUSH1 0x00
00001ddf: DUP1
00001de0: PUSH1 0x00
00001de2: SWAP1
00001de3: POP
00001de4: JUMPDEST
00001de5: PUSH1 0x10
00001de7: DUP1
00001de8: SLOAD
00001de9: SWAP1
00001dea: POP
00001deb: DUP2
00001dec: PUSH4 0xffffffff
00001df1: AND
00001df2: LT
00001df3: ISZERO
00001df4: PUSH2 0x1e34
00001df7: JUMPI
00001df8: DUP3
00001df9: PUSH1 0x10
00001dfb: DUP3
00001dfc: PUSH4 0xffffffff
00001e01: AND
00001e02: DUP2
00001e03: SLOAD
00001e04: DUP2
00001e05: LT
00001e06: ISZERO
00001e07: ISZERO
00001e08: PUSH2 0x1e0d
00001e0b: JUMPI
00001e0c: INVALID
00001e0d: JUMPDEST
00001e0e: SWAP1
00001e0f: PUSH1 0x00
00001e11: MSTORE
00001e12: PUSH1 0x20
00001e14: PUSH1 0x00
00001e16: KECCAK256
00001e17: SWAP1
00001e18: ADD
00001e19: SLOAD
00001e1a: GT
00001e1b: ISZERO
00001e1c: PUSH2 0x1e27
00001e1f: JUMPI
00001e20: DUP1
00001e21: SWAP2
00001e22: POP
00001e23: PUSH2 0x1e35
00001e26: JUMP
00001e27: JUMPDEST
00001e28: DUP1
00001e29: DUP1
00001e2a: PUSH1 0x01
00001e2c: ADD
00001e2d: SWAP2
00001e2e: POP
00001e2f: POP
00001e30: PUSH2 0x1de4
00001e33: JUMP
00001e34: JUMPDEST
00001e35: JUMPDEST
00001e36: POP
00001e37: SWAP2
00001e38: SWAP1
00001e39: POP
00001e3a: JUMP
00001e3b: JUMPDEST
00001e3c: PUSH1 0x11
00001e3e: PUSH1 0x20
00001e40: MSTORE
00001e41: DUP1
00001e42: PUSH1 0x00
00001e44: MSTORE
00001e45: PUSH1 0x40
00001e47: PUSH1 0x00
00001e49: KECCAK256
00001e4a: PUSH1 0x00
00001e4c: SWAP2
00001e4d: POP
00001e4e: SWAP1
00001e4f: POP
00001e50: DUP1
00001e51: PUSH1 0x00
00001e53: ADD
00001e54: PUSH1 0x00
00001e56: SWAP1
00001e57: SLOAD
00001e58: SWAP1
00001e59: PUSH2 0x0100
00001e5c: EXP
00001e5d: SWAP1
00001e5e: DIV
00001e5f: PUSH1 0xff
00001e61: AND
00001e62: SWAP1
00001e63: DUP1
00001e64: PUSH1 0x01
00001e66: ADD
00001e67: SLOAD
00001e68: SWAP1
00001e69: DUP1
00001e6a: PUSH1 0x02
00001e6c: ADD
00001e6d: PUSH1 0x00
00001e6f: SWAP1
00001e70: SLOAD
00001e71: SWAP1
00001e72: PUSH2 0x0100
00001e75: EXP
00001e76: SWAP1
00001e77: DIV
00001e78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e8d: AND
00001e8e: SWAP1
00001e8f: DUP1
00001e90: PUSH1 0x03
00001e92: ADD
00001e93: SLOAD
00001e94: SWAP1
00001e95: DUP1
00001e96: PUSH1 0x04
00001e98: ADD
00001e99: PUSH1 0x00
00001e9b: SWAP1
00001e9c: SLOAD
00001e9d: SWAP1
00001e9e: PUSH2 0x0100
00001ea1: EXP
00001ea2: SWAP1
00001ea3: DIV
00001ea4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001eb9: AND
00001eba: SWAP1
00001ebb: POP
00001ebc: DUP6
00001ebd: JUMP
00001ebe: JUMPDEST
00001ebf: PUSH1 0x07
00001ec1: PUSH1 0x16
00001ec3: SWAP1
00001ec4: SLOAD
00001ec5: SWAP1
00001ec6: PUSH2 0x0100
00001ec9: EXP
00001eca: SWAP1
00001ecb: DIV
00001ecc: PUSH1 0xff
00001ece: AND
00001ecf: DUP2
00001ed0: JUMP
00001ed1: JUMPDEST
00001ed2: PUSH1 0x07
00001ed4: PUSH1 0x14
00001ed6: SWAP1
00001ed7: SLOAD
00001ed8: SWAP1
00001ed9: PUSH2 0x0100
00001edc: EXP
00001edd: SWAP1
00001ede: DIV
00001edf: PUSH1 0xff
00001ee1: AND
00001ee2: DUP2
00001ee3: JUMP
00001ee4: JUMPDEST
00001ee5: PUSH1 0x00
00001ee7: DUP1
00001ee8: PUSH1 0x00
00001eea: DUP1
00001eeb: PUSH1 0x01
00001eed: PUSH1 0x00
00001eef: SWAP1
00001ef0: SLOAD
00001ef1: SWAP1
00001ef2: PUSH2 0x0100
00001ef5: EXP
00001ef6: SWAP1
00001ef7: DIV
00001ef8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f0d: AND
00001f0e: DUP1
00001f0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f24: AND
00001f25: CALLER
00001f26: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f3b: AND
00001f3c: EQ
00001f3d: ISZERO
00001f3e: ISZERO
00001f3f: PUSH2 0x1f47
00001f42: JUMPI
00001f43: PUSH1 0x00
00001f45: DUP1
00001f46: REVERT
00001f47: JUMPDEST
00001f48: PUSH1 0x07
00001f4a: PUSH1 0x00
00001f4c: SWAP1
00001f4d: SLOAD
00001f4e: SWAP1
00001f4f: PUSH2 0x0100
00001f52: EXP
00001f53: SWAP1
00001f54: DIV
00001f55: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f6a: AND
00001f6b: SWAP5
00001f6c: POP
00001f6d: DUP7
00001f6e: SWAP4
00001f6f: POP
00001f70: JUMPDEST
00001f71: DUP6
00001f72: DUP5
00001f73: GT
00001f74: ISZERO
00001f75: ISZERO
00001f76: PUSH2 0x2191
00001f79: JUMPI
00001f7a: DUP5
00001f7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f90: AND
00001f91: PUSH4 0x210fe93b
00001f96: DUP6
00001f97: PUSH1 0x00
00001f99: PUSH1 0x40
00001f9b: MLOAD
00001f9c: PUSH1 0x20
00001f9e: ADD
00001f9f: MSTORE
00001fa0: PUSH1 0x40
00001fa2: MLOAD
00001fa3: DUP3
00001fa4: PUSH4 0xffffffff
00001fa9: AND
00001faa: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001fc8: MUL
00001fc9: DUP2
00001fca: MSTORE
00001fcb: PUSH1 0x04
00001fcd: ADD
00001fce: DUP1
00001fcf: DUP3
00001fd0: DUP2
00001fd1: MSTORE
00001fd2: PUSH1 0x20
00001fd4: ADD
00001fd5: SWAP2
00001fd6: POP
00001fd7: POP
00001fd8: PUSH1 0x20
00001fda: PUSH1 0x40
00001fdc: MLOAD
00001fdd: DUP1
00001fde: DUP4
00001fdf: SUB
00001fe0: DUP2
00001fe1: PUSH1 0x00
00001fe3: DUP8
00001fe4: DUP1
00001fe5: EXTCODESIZE
00001fe6: ISZERO
00001fe7: ISZERO
00001fe8: PUSH2 0x1ff0
00001feb: JUMPI
00001fec: PUSH1 0x00
00001fee: DUP1
00001fef: REVERT
00001ff0: JUMPDEST
00001ff1: PUSH2 0x02c6
00001ff4: GAS
00001ff5: SUB
00001ff6: CALL
00001ff7: ISZERO
00001ff8: ISZERO
00001ff9: PUSH2 0x2001
00001ffc: JUMPI
00001ffd: PUSH1 0x00
00001fff: DUP1
00002000: REVERT
00002001: JUMPDEST
00002002: POP
00002003: POP
00002004: POP
00002005: PUSH1 0x40
00002007: MLOAD
00002008: DUP1
00002009: MLOAD
0000200a: SWAP1
0000200b: POP
0000200c: SWAP3
0000200d: POP
0000200e: PUSH1 0x00
00002010: DUP4
00002011: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002026: AND
00002027: EQ
00002028: ISZERO
00002029: ISZERO
0000202a: PUSH2 0x2184
0000202d: JUMPI
0000202e: DUP3
0000202f: PUSH1 0x0a
00002031: PUSH1 0x00
00002033: DUP7
00002034: DUP2
00002035: MSTORE
00002036: PUSH1 0x20
00002038: ADD
00002039: SWAP1
0000203a: DUP2
0000203b: MSTORE
0000203c: PUSH1 0x20
0000203e: ADD
0000203f: PUSH1 0x00
00002041: KECCAK256
00002042: PUSH1 0x00
00002044: PUSH2 0x0100
00002047: EXP
00002048: DUP2
00002049: SLOAD
0000204a: DUP2
0000204b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002060: MUL
00002061: NOT
00002062: AND
00002063: SWAP1
00002064: DUP4
00002065: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000207a: AND
0000207b: MUL
0000207c: OR
0000207d: SWAP1
0000207e: SSTORE
0000207f: POP
00002080: DUP5
00002081: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002096: AND
00002097: PUSH4 0x70a08231
0000209c: DUP5
0000209d: PUSH1 0x00
0000209f: PUSH1 0x40
000020a1: MLOAD
000020a2: PUSH1 0x20
000020a4: ADD
000020a5: MSTORE
000020a6: PUSH1 0x40
000020a8: MLOAD
000020a9: DUP3
000020aa: PUSH4 0xffffffff
000020af: AND
000020b0: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000020ce: MUL
000020cf: DUP2
000020d0: MSTORE
000020d1: PUSH1 0x04
000020d3: ADD
000020d4: DUP1
000020d5: DUP3
000020d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020eb: AND
000020ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002101: AND
00002102: DUP2
00002103: MSTORE
00002104: PUSH1 0x20
00002106: ADD
00002107: SWAP2
00002108: POP
00002109: POP
0000210a: PUSH1 0x20
0000210c: PUSH1 0x40
0000210e: MLOAD
0000210f: DUP1
00002110: DUP4
00002111: SUB
00002112: DUP2
00002113: PUSH1 0x00
00002115: DUP8
00002116: DUP1
00002117: EXTCODESIZE
00002118: ISZERO
00002119: ISZERO
0000211a: PUSH2 0x2122
0000211d: JUMPI
0000211e: PUSH1 0x00
00002120: DUP1
00002121: REVERT
00002122: JUMPDEST
00002123: PUSH2 0x02c6
00002126: GAS
00002127: SUB
00002128: CALL
00002129: ISZERO
0000212a: ISZERO
0000212b: PUSH2 0x2133
0000212e: JUMPI
0000212f: PUSH1 0x00
00002131: DUP1
00002132: REVERT
00002133: JUMPDEST
00002134: POP
00002135: POP
00002136: POP
00002137: PUSH1 0x40
00002139: MLOAD
0000213a: DUP1
0000213b: MLOAD
0000213c: SWAP1
0000213d: POP
0000213e: SWAP2
0000213f: POP
00002140: DUP2
00002141: PUSH1 0x0d
00002143: PUSH1 0x00
00002145: DUP6
00002146: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000215b: AND
0000215c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002171: AND
00002172: DUP2
00002173: MSTORE
00002174: PUSH1 0x20
00002176: ADD
00002177: SWAP1
00002178: DUP2
00002179: MSTORE
0000217a: PUSH1 0x20
0000217c: ADD
0000217d: PUSH1 0x00
0000217f: KECCAK256
00002180: DUP2
00002181: SWAP1
00002182: SSTORE
00002183: POP
00002184: JUMPDEST
00002185: DUP4
00002186: DUP1
00002187: PUSH1 0x01
00002189: ADD
0000218a: SWAP5
0000218b: POP
0000218c: POP
0000218d: PUSH2 0x1f70
00002190: JUMP
00002191: JUMPDEST
00002192: DUP5
00002193: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021a8: AND
000021a9: PUSH4 0xea341309
000021ae: PUSH1 0x00
000021b0: PUSH1 0x40
000021b2: MLOAD
000021b3: PUSH1 0x20
000021b5: ADD
000021b6: MSTORE
000021b7: PUSH1 0x40
000021b9: MLOAD
000021ba: DUP2
000021bb: PUSH4 0xffffffff
000021c0: AND
000021c1: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000021df: MUL
000021e0: DUP2
000021e1: MSTORE
000021e2: PUSH1 0x04
000021e4: ADD
000021e5: PUSH1 0x20
000021e7: PUSH1 0x40
000021e9: MLOAD
000021ea: DUP1
000021eb: DUP4
000021ec: SUB
000021ed: DUP2
000021ee: PUSH1 0x00
000021f0: DUP8
000021f1: DUP1
000021f2: EXTCODESIZE
000021f3: ISZERO
000021f4: ISZERO
000021f5: PUSH2 0x21fd
000021f8: JUMPI
000021f9: PUSH1 0x00
000021fb: DUP1
000021fc: REVERT
000021fd: JUMPDEST
000021fe: PUSH2 0x02c6
00002201: GAS
00002202: SUB
00002203: CALL
00002204: ISZERO
00002205: ISZERO
00002206: PUSH2 0x220e
00002209: JUMPI
0000220a: PUSH1 0x00
0000220c: DUP1
0000220d: REVERT
0000220e: JUMPDEST
0000220f: POP
00002210: POP
00002211: POP
00002212: PUSH1 0x40
00002214: MLOAD
00002215: DUP1
00002216: MLOAD
00002217: SWAP1
00002218: POP
00002219: PUSH1 0x08
0000221b: DUP2
0000221c: SWAP1
0000221d: SSTORE
0000221e: POP
0000221f: POP
00002220: POP
00002221: POP
00002222: POP
00002223: POP
00002224: POP
00002225: POP
00002226: JUMP
00002227: JUMPDEST
00002228: PUSH1 0x01
0000222a: PUSH1 0x00
0000222c: SWAP1
0000222d: SLOAD
0000222e: SWAP1
0000222f: PUSH2 0x0100
00002232: EXP
00002233: SWAP1
00002234: DIV
00002235: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000224a: AND
0000224b: DUP1
0000224c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002261: AND
00002262: CALLER
00002263: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002278: AND
00002279: EQ
0000227a: ISZERO
0000227b: ISZERO
0000227c: PUSH2 0x2284
0000227f: JUMPI
00002280: PUSH1 0x00
00002282: DUP1
00002283: REVERT
00002284: JUMPDEST
00002285: PUSH1 0x00
00002287: DUP4
00002288: LT
00002289: ISZERO
0000228a: DUP1
0000228b: ISZERO
0000228c: PUSH2 0x2295
0000228f: JUMPI
00002290: POP
00002291: PUSH1 0x06
00002293: DUP4
00002294: LT
00002295: JUMPDEST
00002296: ISZERO
00002297: ISZERO
00002298: PUSH2 0x22a0
0000229b: JUMPI
0000229c: PUSH1 0x00
0000229e: DUP1
0000229f: REVERT
000022a0: JUMPDEST
000022a1: DUP2
000022a2: PUSH1 0x0e
000022a4: PUSH1 0x00
000022a6: DUP6
000022a7: DUP2
000022a8: MSTORE
000022a9: PUSH1 0x20
000022ab: ADD
000022ac: SWAP1
000022ad: DUP2
000022ae: MSTORE
000022af: PUSH1 0x20
000022b1: ADD
000022b2: PUSH1 0x00
000022b4: KECCAK256
000022b5: SWAP1
000022b6: DUP1
000022b7: MLOAD
000022b8: SWAP1
000022b9: PUSH1 0x20
000022bb: ADD
000022bc: SWAP1
000022bd: PUSH2 0x22c7
000022c0: SWAP3
000022c1: SWAP2
000022c2: SWAP1
000022c3: PUSH2 0x2de9
000022c6: JUMP
000022c7: JUMPDEST
000022c8: POP
000022c9: POP
000022ca: POP
000022cb: POP
000022cc: JUMP
000022cd: JUMPDEST
000022ce: PUSH1 0x00
000022d0: PUSH1 0x06
000022d2: SLOAD
000022d3: DUP3
000022d4: LT
000022d5: DUP1
000022d6: ISZERO
000022d7: PUSH2 0x233e
000022da: JUMPI
000022db: POP
000022dc: CALLER
000022dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022f2: AND
000022f3: PUSH1 0x0a
000022f5: PUSH1 0x00
000022f7: DUP5
000022f8: DUP2
000022f9: MSTORE
000022fa: PUSH1 0x20
000022fc: ADD
000022fd: SWAP1
000022fe: DUP2
000022ff: MSTORE
00002300: PUSH1 0x20
00002302: ADD
00002303: PUSH1 0x00
00002305: KECCAK256
00002306: PUSH1 0x00
00002308: SWAP1
00002309: SLOAD
0000230a: SWAP1
0000230b: PUSH2 0x0100
0000230e: EXP
0000230f: SWAP1
00002310: DIV
00002311: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002326: AND
00002327: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000233c: AND
0000233d: EQ
0000233e: JUMPDEST
0000233f: DUP1
00002340: ISZERO
00002341: PUSH2 0x2389
00002344: JUMPI
00002345: POP
00002346: PUSH1 0x00
00002348: PUSH1 0x0d
0000234a: PUSH1 0x00
0000234c: CALLER
0000234d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002362: AND
00002363: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002378: AND
00002379: DUP2
0000237a: MSTORE
0000237b: PUSH1 0x20
0000237d: ADD
0000237e: SWAP1
0000237f: DUP2
00002380: MSTORE
00002381: PUSH1 0x20
00002383: ADD
00002384: PUSH1 0x00
00002386: KECCAK256
00002387: SLOAD
00002388: GT
00002389: JUMPDEST
0000238a: ISZERO
0000238b: PUSH2 0x24ed
0000238e: JUMPI
0000238f: PUSH1 0x0d
00002391: PUSH1 0x00
00002393: CALLER
00002394: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023a9: AND
000023aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023bf: AND
000023c0: DUP2
000023c1: MSTORE
000023c2: PUSH1 0x20
000023c4: ADD
000023c5: SWAP1
000023c6: DUP2
000023c7: MSTORE
000023c8: PUSH1 0x20
000023ca: ADD
000023cb: PUSH1 0x00
000023cd: KECCAK256
000023ce: PUSH1 0x00
000023d0: DUP2
000023d1: SLOAD
000023d2: DUP1
000023d3: SWAP3
000023d4: SWAP2
000023d5: SWAP1
000023d6: PUSH1 0x01
000023d8: SWAP1
000023d9: SUB
000023da: SWAP2
000023db: SWAP1
000023dc: POP
000023dd: SSTORE
000023de: POP
000023df: DUP3
000023e0: PUSH1 0x0a
000023e2: PUSH1 0x00
000023e4: DUP5
000023e5: DUP2
000023e6: MSTORE
000023e7: PUSH1 0x20
000023e9: ADD
000023ea: SWAP1
000023eb: DUP2
000023ec: MSTORE
000023ed: PUSH1 0x20
000023ef: ADD
000023f0: PUSH1 0x00
000023f2: KECCAK256
000023f3: PUSH1 0x00
000023f5: PUSH2 0x0100
000023f8: EXP
000023f9: DUP2
000023fa: SLOAD
000023fb: DUP2
000023fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002411: MUL
00002412: NOT
00002413: AND
00002414: SWAP1
00002415: DUP4
00002416: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000242b: AND
0000242c: MUL
0000242d: OR
0000242e: SWAP1
0000242f: SSTORE
00002430: POP
00002431: PUSH1 0x0d
00002433: PUSH1 0x00
00002435: DUP5
00002436: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000244b: AND
0000244c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002461: AND
00002462: DUP2
00002463: MSTORE
00002464: PUSH1 0x20
00002466: ADD
00002467: SWAP1
00002468: DUP2
00002469: MSTORE
0000246a: PUSH1 0x20
0000246c: ADD
0000246d: PUSH1 0x00
0000246f: KECCAK256
00002470: PUSH1 0x00
00002472: DUP2
00002473: SLOAD
00002474: DUP1
00002475: SWAP3
00002476: SWAP2
00002477: SWAP1
00002478: PUSH1 0x01
0000247a: ADD
0000247b: SWAP2
0000247c: SWAP1
0000247d: POP
0000247e: SSTORE
0000247f: POP
00002480: DUP3
00002481: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002496: AND
00002497: CALLER
00002498: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024ad: AND
000024ae: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
000024cf: DUP5
000024d0: PUSH1 0x40
000024d2: MLOAD
000024d3: DUP1
000024d4: DUP3
000024d5: DUP2
000024d6: MSTORE
000024d7: PUSH1 0x20
000024d9: ADD
000024da: SWAP2
000024db: POP
000024dc: POP
000024dd: PUSH1 0x40
000024df: MLOAD
000024e0: DUP1
000024e1: SWAP2
000024e2: SUB
000024e3: SWAP1
000024e4: LOG3
000024e5: PUSH1 0x01
000024e7: SWAP1
000024e8: POP
000024e9: PUSH2 0x24f2
000024ec: JUMP
000024ed: JUMPDEST
000024ee: PUSH1 0x00
000024f0: SWAP1
000024f1: POP
000024f2: JUMPDEST
000024f3: DUP1
000024f4: SWAP1
000024f5: POP
000024f6: SWAP3
000024f7: SWAP2
000024f8: POP
000024f9: POP
000024fa: JUMP
000024fb: JUMPDEST
000024fc: PUSH1 0x09
000024fe: SLOAD
000024ff: DUP2
00002500: JUMP
00002501: JUMPDEST
00002502: PUSH1 0x01
00002504: PUSH1 0x00
00002506: SWAP1
00002507: SLOAD
00002508: SWAP1
00002509: PUSH2 0x0100
0000250c: EXP
0000250d: SWAP1
0000250e: DIV
0000250f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002524: AND
00002525: DUP1
00002526: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000253b: AND
0000253c: CALLER
0000253d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002552: AND
00002553: EQ
00002554: ISZERO
00002555: ISZERO
00002556: PUSH2 0x255e
00002559: JUMPI
0000255a: PUSH1 0x00
0000255c: DUP1
0000255d: REVERT
0000255e: JUMPDEST
0000255f: PUSH1 0x06
00002561: SLOAD
00002562: DUP4
00002563: LT
00002564: ISZERO
00002565: ISZERO
00002566: PUSH2 0x256e
00002569: JUMPI
0000256a: PUSH1 0x00
0000256c: DUP1
0000256d: REVERT
0000256e: JUMPDEST
0000256f: PUSH1 0x00
00002571: DUP3
00002572: GT
00002573: ISZERO
00002574: ISZERO
00002575: PUSH2 0x257d
00002578: JUMPI
00002579: PUSH1 0x00
0000257b: DUP1
0000257c: REVERT
0000257d: JUMPDEST
0000257e: DUP2
0000257f: PUSH1 0x0c
00002581: PUSH1 0x00
00002583: DUP6
00002584: DUP2
00002585: MSTORE
00002586: PUSH1 0x20
00002588: ADD
00002589: SWAP1
0000258a: DUP2
0000258b: MSTORE
0000258c: PUSH1 0x20
0000258e: ADD
0000258f: PUSH1 0x00
00002591: KECCAK256
00002592: DUP2
00002593: SWAP1
00002594: SSTORE
00002595: POP
00002596: POP
00002597: POP
00002598: POP
00002599: JUMP
0000259a: JUMPDEST
0000259b: PUSH1 0x00
0000259d: DUP1
0000259e: PUSH1 0x0a
000025a0: PUSH1 0x00
000025a2: DUP5
000025a3: DUP2
000025a4: MSTORE
000025a5: PUSH1 0x20
000025a7: ADD
000025a8: SWAP1
000025a9: DUP2
000025aa: MSTORE
000025ab: PUSH1 0x20
000025ad: ADD
000025ae: PUSH1 0x00
000025b0: KECCAK256
000025b1: PUSH1 0x00
000025b3: SWAP1
000025b4: SLOAD
000025b5: SWAP1
000025b6: PUSH2 0x0100
000025b9: EXP
000025ba: SWAP1
000025bb: DIV
000025bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025d1: AND
000025d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025e7: AND
000025e8: EQ
000025e9: ISZERO
000025ea: ISZERO
000025eb: ISZERO
000025ec: PUSH2 0x25f4
000025ef: JUMPI
000025f0: PUSH1 0x00
000025f2: DUP1
000025f3: REVERT
000025f4: JUMPDEST
000025f5: PUSH1 0x0a
000025f7: PUSH1 0x00
000025f9: DUP4
000025fa: DUP2
000025fb: MSTORE
000025fc: PUSH1 0x20
000025fe: ADD
000025ff: SWAP1
00002600: DUP2
00002601: MSTORE
00002602: PUSH1 0x20
00002604: ADD
00002605: PUSH1 0x00
00002607: KECCAK256
00002608: PUSH1 0x00
0000260a: SWAP1
0000260b: SLOAD
0000260c: SWAP1
0000260d: PUSH2 0x0100
00002610: EXP
00002611: SWAP1
00002612: DIV
00002613: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002628: AND
00002629: SWAP1
0000262a: POP
0000262b: SWAP2
0000262c: SWAP1
0000262d: POP
0000262e: JUMP
0000262f: JUMPDEST
00002630: PUSH1 0x00
00002632: DUP1
00002633: PUSH1 0x06
00002635: SLOAD
00002636: DUP4
00002637: LT
00002638: ISZERO
00002639: ISZERO
0000263a: PUSH2 0x2642
0000263d: JUMPI
0000263e: PUSH1 0x00
00002640: DUP1
00002641: REVERT
00002642: JUMPDEST
00002643: PUSH1 0x11
00002645: PUSH1 0x00
00002647: DUP5
00002648: DUP2
00002649: MSTORE
0000264a: PUSH1 0x20
0000264c: ADD
0000264d: SWAP1
0000264e: DUP2
0000264f: MSTORE
00002650: PUSH1 0x20
00002652: ADD
00002653: PUSH1 0x00
00002655: KECCAK256
00002656: SWAP2
00002657: POP
00002658: DUP2
00002659: PUSH1 0x00
0000265b: ADD
0000265c: PUSH1 0x00
0000265e: SWAP1
0000265f: SLOAD
00002660: SWAP1
00002661: PUSH2 0x0100
00002664: EXP
00002665: SWAP1
00002666: DIV
00002667: PUSH1 0xff
00002669: AND
0000266a: ISZERO
0000266b: ISZERO
0000266c: PUSH2 0x2674
0000266f: JUMPI
00002670: PUSH1 0x00
00002672: DUP1
00002673: REVERT
00002674: JUMPDEST
00002675: DUP2
00002676: PUSH1 0x03
00002678: ADD
00002679: SLOAD
0000267a: CALLVALUE
0000267b: LT
0000267c: ISZERO
0000267d: ISZERO
0000267e: ISZERO
0000267f: PUSH2 0x2687
00002682: JUMPI
00002683: PUSH1 0x00
00002685: DUP1
00002686: REVERT
00002687: JUMPDEST
00002688: PUSH1 0x0a
0000268a: PUSH1 0x00
0000268c: DUP5
0000268d: DUP2
0000268e: MSTORE
0000268f: PUSH1 0x20
00002691: ADD
00002692: SWAP1
00002693: DUP2
00002694: MSTORE
00002695: PUSH1 0x20
00002697: ADD
00002698: PUSH1 0x00
0000269a: KECCAK256
0000269b: PUSH1 0x00
0000269d: SWAP1
0000269e: SLOAD
0000269f: SWAP1
000026a0: PUSH2 0x0100
000026a3: EXP
000026a4: SWAP1
000026a5: DIV
000026a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026bb: AND
000026bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026d1: AND
000026d2: DUP3
000026d3: PUSH1 0x02
000026d5: ADD
000026d6: PUSH1 0x00
000026d8: SWAP1
000026d9: SLOAD
000026da: SWAP1
000026db: PUSH2 0x0100
000026de: EXP
000026df: SWAP1
000026e0: DIV
000026e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026f6: AND
000026f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000270c: AND
0000270d: EQ
0000270e: ISZERO
0000270f: ISZERO
00002710: PUSH2 0x2718
00002713: JUMPI
00002714: PUSH1 0x00
00002716: DUP1
00002717: REVERT
00002718: JUMPDEST
00002719: PUSH1 0x00
0000271b: DUP3
0000271c: PUSH1 0x04
0000271e: ADD
0000271f: PUSH1 0x00
00002721: SWAP1
00002722: SLOAD
00002723: SWAP1
00002724: PUSH2 0x0100
00002727: EXP
00002728: SWAP1
00002729: DIV
0000272a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000273f: AND
00002740: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002755: AND
00002756: EQ
00002757: ISZERO
00002758: ISZERO
00002759: PUSH2 0x27bb
0000275c: JUMPI
0000275d: CALLER
0000275e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002773: AND
00002774: DUP3
00002775: PUSH1 0x04
00002777: ADD
00002778: PUSH1 0x00
0000277a: SWAP1
0000277b: SLOAD
0000277c: SWAP1
0000277d: PUSH2 0x0100
00002780: EXP
00002781: SWAP1
00002782: DIV
00002783: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002798: AND
00002799: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027ae: AND
000027af: EQ
000027b0: ISZERO
000027b1: ISZERO
000027b2: PUSH2 0x27ba
000027b5: JUMPI
000027b6: PUSH1 0x00
000027b8: DUP1
000027b9: REVERT
000027ba: JUMPDEST
000027bb: JUMPDEST
000027bc: DUP2
000027bd: PUSH1 0x02
000027bf: ADD
000027c0: PUSH1 0x00
000027c2: SWAP1
000027c3: SLOAD
000027c4: SWAP1
000027c5: PUSH2 0x0100
000027c8: EXP
000027c9: SWAP1
000027ca: DIV
000027cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027e0: AND
000027e1: SWAP1
000027e2: POP
000027e3: CALLER
000027e4: PUSH1 0x0a
000027e6: PUSH1 0x00
000027e8: DUP6
000027e9: DUP2
000027ea: MSTORE
000027eb: PUSH1 0x20
000027ed: ADD
000027ee: SWAP1
000027ef: DUP2
000027f0: MSTORE
000027f1: PUSH1 0x20
000027f3: ADD
000027f4: PUSH1 0x00
000027f6: KECCAK256
000027f7: PUSH1 0x00
000027f9: PUSH2 0x0100
000027fc: EXP
000027fd: DUP2
000027fe: SLOAD
000027ff: DUP2
00002800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002815: MUL
00002816: NOT
00002817: AND
00002818: SWAP1
00002819: DUP4
0000281a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000282f: AND
00002830: MUL
00002831: OR
00002832: SWAP1
00002833: SSTORE
00002834: POP
00002835: PUSH1 0x0d
00002837: PUSH1 0x00
00002839: DUP3
0000283a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000284f: AND
00002850: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002865: AND
00002866: DUP2
00002867: MSTORE
00002868: PUSH1 0x20
0000286a: ADD
0000286b: SWAP1
0000286c: DUP2
0000286d: MSTORE
0000286e: PUSH1 0x20
00002870: ADD
00002871: PUSH1 0x00
00002873: KECCAK256
00002874: PUSH1 0x00
00002876: DUP2
00002877: SLOAD
00002878: DUP1
00002879: SWAP3
0000287a: SWAP2
0000287b: SWAP1
0000287c: PUSH1 0x01
0000287e: SWAP1
0000287f: SUB
00002880: SWAP2
00002881: SWAP1
00002882: POP
00002883: SSTORE
00002884: POP
00002885: PUSH1 0x0d
00002887: PUSH1 0x00
00002889: CALLER
0000288a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000289f: AND
000028a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028b5: AND
000028b6: DUP2
000028b7: MSTORE
000028b8: PUSH1 0x20
000028ba: ADD
000028bb: SWAP1
000028bc: DUP2
000028bd: MSTORE
000028be: PUSH1 0x20
000028c0: ADD
000028c1: PUSH1 0x00
000028c3: KECCAK256
000028c4: PUSH1 0x00
000028c6: DUP2
000028c7: SLOAD
000028c8: DUP1
000028c9: SWAP3
000028ca: SWAP2
000028cb: SWAP1
000028cc: PUSH1 0x01
000028ce: ADD
000028cf: SWAP2
000028d0: SWAP1
000028d1: POP
000028d2: SSTORE
000028d3: POP
000028d4: CALLER
000028d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028ea: AND
000028eb: DUP2
000028ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002901: AND
00002902: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00002923: PUSH1 0x01
00002925: PUSH1 0x40
00002927: MLOAD
00002928: DUP1
00002929: DUP3
0000292a: DUP2
0000292b: MSTORE
0000292c: PUSH1 0x20
0000292e: ADD
0000292f: SWAP2
00002930: POP
00002931: POP
00002932: PUSH1 0x40
00002934: MLOAD
00002935: DUP1
00002936: SWAP2
00002937: SUB
00002938: SWAP1
00002939: LOG3
0000293a: DUP3
0000293b: PUSH32 0x7d5dcd38c1855f2d3253f06fbd995a7b03b1bd0d20277c21ffcb093862ccb0df
0000295c: PUSH1 0x40
0000295e: MLOAD
0000295f: PUSH1 0x40
00002961: MLOAD
00002962: DUP1
00002963: SWAP2
00002964: SUB
00002965: SWAP1
00002966: LOG2
00002967: CALLVALUE
00002968: PUSH1 0x12
0000296a: PUSH1 0x00
0000296c: DUP4
0000296d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002982: AND
00002983: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002998: AND
00002999: DUP2
0000299a: MSTORE
0000299b: PUSH1 0x20
0000299d: ADD
0000299e: SWAP1
0000299f: DUP2
000029a0: MSTORE
000029a1: PUSH1 0x20
000029a3: ADD
000029a4: PUSH1 0x00
000029a6: KECCAK256
000029a7: PUSH1 0x00
000029a9: DUP3
000029aa: DUP3
000029ab: SLOAD
000029ac: ADD
000029ad: SWAP3
000029ae: POP
000029af: POP
000029b0: DUP2
000029b1: SWAP1
000029b2: SSTORE
000029b3: POP
000029b4: CALLER
000029b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029ca: AND
000029cb: DUP2
000029cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029e1: AND
000029e2: DUP5
000029e3: PUSH32 0x6bd7e7dd1046023e899374de62f095782f09a5ad4633e535375a11724bafed74
00002a04: CALLVALUE
00002a05: PUSH1 0x40
00002a07: MLOAD
00002a08: DUP1
00002a09: DUP3
00002a0a: DUP2
00002a0b: MSTORE
00002a0c: PUSH1 0x20
00002a0e: ADD
00002a0f: SWAP2
00002a10: POP
00002a11: POP
00002a12: PUSH1 0x40
00002a14: MLOAD
00002a15: DUP1
00002a16: SWAP2
00002a17: SUB
00002a18: SWAP1
00002a19: LOG4
00002a1a: POP
00002a1b: POP
00002a1c: POP
00002a1d: JUMP
00002a1e: JUMPDEST
00002a1f: CALLER
00002a20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a35: AND
00002a36: PUSH1 0x0a
00002a38: PUSH1 0x00
00002a3a: DUP5
00002a3b: DUP2
00002a3c: MSTORE
00002a3d: PUSH1 0x20
00002a3f: ADD
00002a40: SWAP1
00002a41: DUP2
00002a42: MSTORE
00002a43: PUSH1 0x20
00002a45: ADD
00002a46: PUSH1 0x00
00002a48: KECCAK256
00002a49: PUSH1 0x00
00002a4b: SWAP1
00002a4c: SLOAD
00002a4d: SWAP1
00002a4e: PUSH2 0x0100
00002a51: EXP
00002a52: SWAP1
00002a53: DIV
00002a54: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a69: AND
00002a6a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a7f: AND
00002a80: EQ
00002a81: ISZERO
00002a82: ISZERO
00002a83: PUSH2 0x2a8b
00002a86: JUMPI
00002a87: PUSH1 0x00
00002a89: DUP1
00002a8a: REVERT
00002a8b: JUMPDEST
00002a8c: PUSH1 0x06
00002a8e: SLOAD
00002a8f: DUP3
00002a90: LT
00002a91: ISZERO
00002a92: ISZERO
00002a93: PUSH2 0x2a9b
00002a96: JUMPI
00002a97: PUSH1 0x00
00002a99: DUP1
00002a9a: REVERT
00002a9b: JUMPDEST
00002a9c: PUSH1 0xa0
00002a9e: PUSH1 0x40
00002aa0: MLOAD
00002aa1: SWAP1
00002aa2: DUP2
00002aa3: ADD
00002aa4: PUSH1 0x40
00002aa6: MSTORE
00002aa7: DUP1
00002aa8: PUSH1 0x01
00002aaa: ISZERO
00002aab: ISZERO
00002aac: DUP2
00002aad: MSTORE
00002aae: PUSH1 0x20
00002ab0: ADD
00002ab1: DUP4
00002ab2: DUP2
00002ab3: MSTORE
00002ab4: PUSH1 0x20
00002ab6: ADD
00002ab7: CALLER
00002ab8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002acd: AND
00002ace: DUP2
00002acf: MSTORE
00002ad0: PUSH1 0x20
00002ad2: ADD
00002ad3: DUP3
00002ad4: DUP2
00002ad5: MSTORE
00002ad6: PUSH1 0x20
00002ad8: ADD
00002ad9: PUSH1 0x00
00002adb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002af0: AND
00002af1: DUP2
00002af2: MSTORE
00002af3: POP
00002af4: PUSH1 0x11
00002af6: PUSH1 0x00
00002af8: DUP5
00002af9: DUP2
00002afa: MSTORE
00002afb: PUSH1 0x20
00002afd: ADD
00002afe: SWAP1
00002aff: DUP2
00002b00: MSTORE
00002b01: PUSH1 0x20
00002b03: ADD
00002b04: PUSH1 0x00
00002b06: KECCAK256
00002b07: PUSH1 0x00
00002b09: DUP3
00002b0a: ADD
00002b0b: MLOAD
00002b0c: DUP2
00002b0d: PUSH1 0x00
00002b0f: ADD
00002b10: PUSH1 0x00
00002b12: PUSH2 0x0100
00002b15: EXP
00002b16: DUP2
00002b17: SLOAD
00002b18: DUP2
00002b19: PUSH1 0xff
00002b1b: MUL
00002b1c: NOT
00002b1d: AND
00002b1e: SWAP1
00002b1f: DUP4
00002b20: ISZERO
00002b21: ISZERO
00002b22: MUL
00002b23: OR
00002b24: SWAP1
00002b25: SSTORE
00002b26: POP
00002b27: PUSH1 0x20
00002b29: DUP3
00002b2a: ADD
00002b2b: MLOAD
00002b2c: DUP2
00002b2d: PUSH1 0x01
00002b2f: ADD
00002b30: SSTORE
00002b31: PUSH1 0x40
00002b33: DUP3
00002b34: ADD
00002b35: MLOAD
00002b36: DUP2
00002b37: PUSH1 0x02
00002b39: ADD
00002b3a: PUSH1 0x00
00002b3c: PUSH2 0x0100
00002b3f: EXP
00002b40: DUP2
00002b41: SLOAD
00002b42: DUP2
00002b43: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b58: MUL
00002b59: NOT
00002b5a: AND
00002b5b: SWAP1
00002b5c: DUP4
00002b5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b72: AND
00002b73: MUL
00002b74: OR
00002b75: SWAP1
00002b76: SSTORE
00002b77: POP
00002b78: PUSH1 0x60
00002b7a: DUP3
00002b7b: ADD
00002b7c: MLOAD
00002b7d: DUP2
00002b7e: PUSH1 0x03
00002b80: ADD
00002b81: SSTORE
00002b82: PUSH1 0x80
00002b84: DUP3
00002b85: ADD
00002b86: MLOAD
00002b87: DUP2
00002b88: PUSH1 0x04
00002b8a: ADD
00002b8b: PUSH1 0x00
00002b8d: PUSH2 0x0100
00002b90: EXP
00002b91: DUP2
00002b92: SLOAD
00002b93: DUP2
00002b94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ba9: MUL
00002baa: NOT
00002bab: AND
00002bac: SWAP1
00002bad: DUP4
00002bae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bc3: AND
00002bc4: MUL
00002bc5: OR
00002bc6: SWAP1
00002bc7: SSTORE
00002bc8: POP
00002bc9: SWAP1
00002bca: POP
00002bcb: POP
00002bcc: PUSH1 0x00
00002bce: DUP3
00002bcf: PUSH32 0x76eaef99642f3e716e9cfa6e3047136d4087a9fc18673cb754c35f522fa6f61f
00002bf0: DUP4
00002bf1: PUSH1 0x40
00002bf3: MLOAD
00002bf4: DUP1
00002bf5: DUP3
00002bf6: DUP2
00002bf7: MSTORE
00002bf8: PUSH1 0x20
00002bfa: ADD
00002bfb: SWAP2
00002bfc: POP
00002bfd: POP
00002bfe: PUSH1 0x40
00002c00: MLOAD
00002c01: DUP1
00002c02: SWAP2
00002c03: SUB
00002c04: SWAP1
00002c05: LOG3
00002c06: POP
00002c07: POP
00002c08: JUMP
00002c09: JUMPDEST
00002c0a: PUSH1 0x0c
00002c0c: PUSH1 0x20
00002c0e: MSTORE
00002c0f: DUP1
00002c10: PUSH1 0x00
00002c12: MSTORE
00002c13: PUSH1 0x40
00002c15: PUSH1 0x00
00002c17: KECCAK256
00002c18: PUSH1 0x00
00002c1a: SWAP2
00002c1b: POP
00002c1c: SWAP1
00002c1d: POP
00002c1e: SLOAD
00002c1f: DUP2
00002c20: JUMP
00002c21: JUMPDEST
00002c22: PUSH1 0x08
00002c24: SLOAD
00002c25: DUP2
00002c26: JUMP
00002c27: JUMPDEST
00002c28: PUSH1 0x01
00002c2a: PUSH1 0x00
00002c2c: SWAP1
00002c2d: SLOAD
00002c2e: SWAP1
00002c2f: PUSH2 0x0100
00002c32: EXP
00002c33: SWAP1
00002c34: DIV
00002c35: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c4a: AND
00002c4b: DUP1
00002c4c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c61: AND
00002c62: CALLER
00002c63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c78: AND
00002c79: EQ
00002c7a: ISZERO
00002c7b: ISZERO
00002c7c: PUSH2 0x2c84
00002c7f: JUMPI
00002c80: PUSH1 0x00
00002c82: DUP1
00002c83: REVERT
00002c84: JUMPDEST
00002c85: PUSH1 0x01
00002c87: PUSH1 0x00
00002c89: SWAP1
00002c8a: SLOAD
00002c8b: SWAP1
00002c8c: PUSH2 0x0100
00002c8f: EXP
00002c90: SWAP1
00002c91: DIV
00002c92: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ca7: AND
00002ca8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002cbd: AND
00002cbe: CALLER
00002cbf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002cd4: AND
00002cd5: EQ
00002cd6: ISZERO
00002cd7: ISZERO
00002cd8: PUSH2 0x2ce0
00002cdb: JUMPI
00002cdc: PUSH1 0x00
00002cde: DUP1
00002cdf: REVERT
00002ce0: JUMPDEST
00002ce1: PUSH1 0x01
00002ce3: PUSH1 0x07
00002ce5: PUSH1 0x15
00002ce7: PUSH2 0x0100
00002cea: EXP
00002ceb: DUP2
00002cec: SLOAD
00002ced: DUP2
00002cee: PUSH1 0xff
00002cf0: MUL
00002cf1: NOT
00002cf2: AND
00002cf3: SWAP1
00002cf4: DUP4
00002cf5: ISZERO
00002cf6: ISZERO
00002cf7: MUL
00002cf8: OR
00002cf9: SWAP1
00002cfa: SSTORE
00002cfb: POP
00002cfc: POP
00002cfd: JUMP
00002cfe: JUMPDEST
00002cff: PUSH1 0x12
00002d01: PUSH1 0x20
00002d03: MSTORE
00002d04: DUP1
00002d05: PUSH1 0x00
00002d07: MSTORE
00002d08: PUSH1 0x40
00002d0a: PUSH1 0x00
00002d0c: KECCAK256
00002d0d: PUSH1 0x00
00002d0f: SWAP2
00002d10: POP
00002d11: SWAP1
00002d12: POP
00002d13: SLOAD
00002d14: DUP2
00002d15: JUMP
00002d16: JUMPDEST
00002d17: PUSH1 0x0f
00002d19: PUSH1 0x20
00002d1b: MSTORE
00002d1c: DUP2
00002d1d: PUSH1 0x00
00002d1f: MSTORE
00002d20: PUSH1 0x40
00002d22: PUSH1 0x00
00002d24: KECCAK256
00002d25: DUP2
00002d26: PUSH1 0x06
00002d28: DUP2
00002d29: LT
00002d2a: ISZERO
00002d2b: ISZERO
00002d2c: PUSH2 0x2d31
00002d2f: JUMPI
00002d30: INVALID
00002d31: JUMPDEST
00002d32: ADD
00002d33: PUSH1 0x00
00002d35: SWAP2
00002d36: POP
00002d37: SWAP2
00002d38: POP
00002d39: POP
00002d3a: DUP1
00002d3b: SLOAD
00002d3c: PUSH1 0x01
00002d3e: DUP2
00002d3f: PUSH1 0x01
00002d41: AND
00002d42: ISZERO
00002d43: PUSH2 0x0100
00002d46: MUL
00002d47: SUB
00002d48: AND
00002d49: PUSH1 0x02
00002d4b: SWAP1
00002d4c: DIV
00002d4d: DUP1
00002d4e: PUSH1 0x1f
00002d50: ADD
00002d51: PUSH1 0x20
00002d53: DUP1
00002d54: SWAP2
00002d55: DIV
00002d56: MUL
00002d57: PUSH1 0x20
00002d59: ADD
00002d5a: PUSH1 0x40
00002d5c: MLOAD
00002d5d: SWAP1
00002d5e: DUP2
00002d5f: ADD
00002d60: PUSH1 0x40
00002d62: MSTORE
00002d63: DUP1
00002d64: SWAP3
00002d65: SWAP2
00002d66: SWAP1
00002d67: DUP2
00002d68: DUP2
00002d69: MSTORE
00002d6a: PUSH1 0x20
00002d6c: ADD
00002d6d: DUP3
00002d6e: DUP1
00002d6f: SLOAD
00002d70: PUSH1 0x01
00002d72: DUP2
00002d73: PUSH1 0x01
00002d75: AND
00002d76: ISZERO
00002d77: PUSH2 0x0100
00002d7a: MUL
00002d7b: SUB
00002d7c: AND
00002d7d: PUSH1 0x02
00002d7f: SWAP1
00002d80: DIV
00002d81: DUP1
00002d82: ISZERO
00002d83: PUSH2 0x2dcd
00002d86: JUMPI
00002d87: DUP1
00002d88: PUSH1 0x1f
00002d8a: LT
00002d8b: PUSH2 0x2da2
00002d8e: JUMPI
00002d8f: PUSH2 0x0100
00002d92: DUP1
00002d93: DUP4
00002d94: SLOAD
00002d95: DIV
00002d96: MUL
00002d97: DUP4
00002d98: MSTORE
00002d99: SWAP2
00002d9a: PUSH1 0x20
00002d9c: ADD
00002d9d: SWAP2
00002d9e: PUSH2 0x2dcd
00002da1: JUMP
00002da2: JUMPDEST
00002da3: DUP3
00002da4: ADD
00002da5: SWAP2
00002da6: SWAP1
00002da7: PUSH1 0x00
00002da9: MSTORE
00002daa: PUSH1 0x20
00002dac: PUSH1 0x00
00002dae: KECCAK256
00002daf: SWAP1
00002db0: JUMPDEST
00002db1: DUP2
00002db2: SLOAD
00002db3: DUP2
00002db4: MSTORE
00002db5: SWAP1
00002db6: PUSH1 0x01
00002db8: ADD
00002db9: SWAP1
00002dba: PUSH1 0x20
00002dbc: ADD
00002dbd: DUP1
00002dbe: DUP4
00002dbf: GT
00002dc0: PUSH2 0x2db0
00002dc3: JUMPI
00002dc4: DUP3
00002dc5: SWAP1
00002dc6: SUB
00002dc7: PUSH1 0x1f
00002dc9: AND
00002dca: DUP3
00002dcb: ADD
00002dcc: SWAP2
00002dcd: JUMPDEST
00002dce: POP
00002dcf: POP
00002dd0: POP
00002dd1: POP
00002dd2: POP
00002dd3: DUP2
00002dd4: JUMP
00002dd5: JUMPDEST
00002dd6: PUSH1 0x20
00002dd8: PUSH1 0x40
00002dda: MLOAD
00002ddb: SWAP1
00002ddc: DUP2
00002ddd: ADD
00002dde: PUSH1 0x40
00002de0: MSTORE
00002de1: DUP1
00002de2: PUSH1 0x00
00002de4: DUP2
00002de5: MSTORE
00002de6: POP
00002de7: SWAP1
00002de8: JUMP
00002de9: JUMPDEST
00002dea: DUP3
00002deb: DUP1
00002dec: SLOAD
00002ded: PUSH1 0x01
00002def: DUP2
00002df0: PUSH1 0x01
00002df2: AND
00002df3: ISZERO
00002df4: PUSH2 0x0100
00002df7: MUL
00002df8: SUB
00002df9: AND
00002dfa: PUSH1 0x02
00002dfc: SWAP1
00002dfd: DIV
00002dfe: SWAP1
00002dff: PUSH1 0x00
00002e01: MSTORE
00002e02: PUSH1 0x20
00002e04: PUSH1 0x00
00002e06: KECCAK256
00002e07: SWAP1
00002e08: PUSH1 0x1f
00002e0a: ADD
00002e0b: PUSH1 0x20
00002e0d: SWAP1
00002e0e: DIV
00002e0f: DUP2
00002e10: ADD
00002e11: SWAP3
00002e12: DUP3
00002e13: PUSH1 0x1f
00002e15: LT
00002e16: PUSH2 0x2e2a
00002e19: JUMPI
00002e1a: DUP1
00002e1b: MLOAD
00002e1c: PUSH1 0xff
00002e1e: NOT
00002e1f: AND
00002e20: DUP4
00002e21: DUP1
00002e22: ADD
00002e23: OR
00002e24: DUP6
00002e25: SSTORE
00002e26: PUSH2 0x2e58
00002e29: JUMP
00002e2a: JUMPDEST
00002e2b: DUP3
00002e2c: DUP1
00002e2d: ADD
00002e2e: PUSH1 0x01
00002e30: ADD
00002e31: DUP6
00002e32: SSTORE
00002e33: DUP3
00002e34: ISZERO
00002e35: PUSH2 0x2e58
00002e38: JUMPI
00002e39: SWAP2
00002e3a: DUP3
00002e3b: ADD
00002e3c: JUMPDEST
00002e3d: DUP3
00002e3e: DUP2
00002e3f: GT
00002e40: ISZERO
00002e41: PUSH2 0x2e57
00002e44: JUMPI
00002e45: DUP3
00002e46: MLOAD
00002e47: DUP3
00002e48: SSTORE
00002e49: SWAP2
00002e4a: PUSH1 0x20
00002e4c: ADD
00002e4d: SWAP2
00002e4e: SWAP1
00002e4f: PUSH1 0x01
00002e51: ADD
00002e52: SWAP1
00002e53: PUSH2 0x2e3c
00002e56: JUMP
00002e57: JUMPDEST
00002e58: JUMPDEST
00002e59: POP
00002e5a: SWAP1
00002e5b: POP
00002e5c: PUSH2 0x2e65
00002e5f: SWAP2
00002e60: SWAP1
00002e61: PUSH2 0x2e95
00002e64: JUMP
00002e65: JUMPDEST
00002e66: POP
00002e67: SWAP1
00002e68: JUMP
00002e69: JUMPDEST
00002e6a: DUP2
00002e6b: SLOAD
00002e6c: DUP2
00002e6d: DUP4
00002e6e: SSTORE
00002e6f: DUP2
00002e70: DUP2
00002e71: ISZERO
00002e72: GT
00002e73: PUSH2 0x2e90
00002e76: JUMPI
00002e77: DUP2
00002e78: DUP4
00002e79: PUSH1 0x00
00002e7b: MSTORE
00002e7c: PUSH1 0x20
00002e7e: PUSH1 0x00
00002e80: KECCAK256
00002e81: SWAP2
00002e82: DUP3
00002e83: ADD
00002e84: SWAP2
00002e85: ADD
00002e86: PUSH2 0x2e8f
00002e89: SWAP2
00002e8a: SWAP1
00002e8b: PUSH2 0x2e95
00002e8e: JUMP
00002e8f: JUMPDEST
00002e90: JUMPDEST
00002e91: POP
00002e92: POP
00002e93: POP
00002e94: JUMP
00002e95: JUMPDEST
00002e96: PUSH2 0x2eb7
00002e99: SWAP2
00002e9a: SWAP1
00002e9b: JUMPDEST
00002e9c: DUP1
00002e9d: DUP3
00002e9e: GT
00002e9f: ISZERO
00002ea0: PUSH2 0x2eb3
00002ea3: JUMPI
00002ea4: PUSH1 0x00
00002ea6: DUP2
00002ea7: PUSH1 0x00
00002ea9: SWAP1
00002eaa: SSTORE
00002eab: POP
00002eac: PUSH1 0x01
00002eae: ADD
00002eaf: PUSH2 0x2e9b
00002eb2: JUMP
00002eb3: JUMPDEST
00002eb4: POP
00002eb5: SWAP1
00002eb6: JUMP
00002eb7: JUMPDEST
00002eb8: SWAP1
00002eb9: JUMP
00002eba: STOP
00002ebb: LOG1
00002ebc: PUSH6 0x627a7a723058
00002ec3: KECCAK256
00002ec4: PUSH5 0xd7be1bcfd7
00002eca: UNKNOWN(0x4D)
00002ecb: UNKNOWN(0x23)
00002ecc: SWAP2
00002ecd: UNKNOWN(0xC2)
00002ece: UNKNOWN(0xDA)
00002ecf: RETURNDATACOPY
00002ed0: UNKNOWN(0xA9)
00002ed1: PUSH7 0x62a2ef6143b561
00002ed9: PUSH22

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x152fa764ae990d7b597c891709705cbc8bcb0763a44925c8e55f09d16dabbf18
call_targets: 0x9508008227b6b3391959334604677d60169ef540
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x152fa764ae990d7b597c891709705cbc8bcb0763a44925c8e55f09d16dabbf18",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9508008227b6b3391959334604677d60169ef540"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fd9f187",
            "selector": "0x1fd9f187",
            "calldata_variants": [
                "0x1fd9f187",
                "0x1fd9f1870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x210fe93b",
            "selector": "0x210fe93b",
            "calldata_variants": [
                "0x210fe93b",
                "0x210fe93b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3eaaf86b",
            "selector": "0x3eaaf86b",
            "calldata_variants": [
                "0x3eaaf86b",
                "0x3eaaf86b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4458,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8182,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8488,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [
        {
            "pc": 4577,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7042,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7973,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8802,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9532,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 11362,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 11454,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 4
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x152fa764ae990d7b597c891709705cbc8bcb0763a44925c8e55f09d16dabbf18
call_targets: 0x9508008227b6b3391959334604677d60169ef540
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x152fa764ae990d7b597c891709705cbc8bcb0763a44925c8e55f09d16dabbf18",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9508008227b6b3391959334604677d60169ef540"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fd9f187",
            "selector": "0x1fd9f187",
            "calldata_variants": [
                "0x1fd9f187",
                "0x1fd9f1870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x210fe93b",
            "selector": "0x210fe93b",
            "calldata_variants": [
                "0x210fe93b",
                "0x210fe93b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3eaaf86b",
            "selector": "0x3eaaf86b",
            "calldata_variants": [
                "0x3eaaf86b",
                "0x3eaaf86b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4458,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8182,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8488,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": [
        {
            "pc": 4577,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7042,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7973,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8802,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9532,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 11362,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 11454,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}