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

Analysis Run

26b7fed9-25c2-4ac8-9db3-1f30d9967af4

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 3, 2026 10:58 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31476 report.consolidate complete 1 / 1 3 months ago
77482 artifact.fetch complete 1 / 3 1 week ago
77483 tool.cast_disasm complete 1 / 3 1 week ago
77484 analysis.bundle complete 1 / 3 1 week ago
77485 capability.graph complete 1 / 3 1 week ago
77486 detector.run complete 1 / 3 1 week ago
77487 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Completed bytecode-only review of BYTECODE_BUNDLE.txt; no concrete, exploitably profitable path is provable from the runtime bytecode alone (no delegatecall/selfdestruct, upgrade/write paths appear guarded, and external calls look like guarded token/ETH operations).
View stderr
[codex:503394] OpenAI Codex v0.77.0 (research preview)
[codex:503394] --------
[codex:503394] workdir: /tmp/codex-multi-2bmql4tr
[codex:503394] model: gpt-5.2-codex
[codex:503394] provider: openai
[codex:503394] approval: never
[codex:503394] sandbox: read-only
[codex:503394] reasoning effort: xhigh
[codex:503394] reasoning summaries: auto
[codex:503394] session id: 019b860c-f8a8-7d53-acbd-9201abb6450d
[codex:503394] --------
[codex:503394] user
[codex:503394] 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:503394] 
[codex:503394] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:503394] 
[codex:503394] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:503394] - Gas inefficiency, code quality, or best practices
[codex:503394] - Theoretical vulnerabilities without a clear extraction path
[codex:503394] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:503394] - Issues requiring social engineering or off-chain coordination
[codex:503394] 
[codex:503394] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:503394] - CALL/DELEGATECALL with controllable destination or calldata
[codex:503394] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:503394] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:503394] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:503394] - External calls before state updates (reentrancy)
[codex:503394] - SELFDESTRUCT with controllable beneficiary
[codex:503394] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:503394] 
[codex:503394] For each finding, you MUST explain:
[codex:503394] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:503394] 2. The concrete sequence of transactions to extract value
[codex:503394] 3. Why you believe this is exploitable (not just suspicious)
[codex:503394] 
[codex:503394] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:503394] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:503394] 
[codex:503394] Output MUST be valid JSON matching the provided schema.
[codex:503394] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:503394] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:503394] mcp startup: no servers
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Preparing to analyze bytecode**
[codex:503394] exec
[codex:503394] /bin/bash -lc ls in /tmp/codex-multi-2bmql4tr succeeded in 5ms:
[codex:503394] BYTECODE_BUNDLE.txt
[codex:503394] codex-output-schema.json
[codex:503394] exec
[codex:503394] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-2bmql4tr succeeded in 5ms:
[codex:503394] Runtime bytecode bundle for best-effort auditing.
[codex:503394] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:503394] 
[codex:503394] FILE: runtime_bytecode.hex
[codex:503394] 0x6080604052600436106102bb5760003560e01c80636be13c921161016e578063ca44f465116100cb578063d50fd1f41161007f578063dc5724e411610064578063dc5724e4146106f1578063fb80c74714610711578063fc0a7f0314610731576102bb565b8063d50fd1f4146106bc578063d6cd9473146106dc576102bb565b8063d0e30db0116100b0578063d0e30db014610674578063d121b6961461067c578063d29ab55b1461069c576102bb565b8063ca44f4651461064a578063d01342961461065f576102bb565b80638456cb5911610122578063a971a0ad11610107578063a971a0ad146105ea578063bb5f747b1461060a578063bba157581461062a576102bb565b80638456cb59146105b557806397833876146105ca576102bb565b80637362d9c8116101535780637362d9c81461055557806382dc1ec4146105755780638345383214610595576102bb565b80636be13c921461052b5780636ef8d66d14610540576102bb565b8063291d95491161021c5780634c5a628c116101d05780635c975abb116101b55780635c975abb146104e1578063638900e1146104f657806365481ff71461050b576102bb565b80634c5a628c146104b75780635c60da1b146104cc576102bb565b80633af32abf116102015780633af32abf146104625780633f4ba83a1461048257806346fbf68e14610497576102bb565b8063291d95491461042257806335c80c8c14610442576102bb565b80631761d7ce116102735780632299bda6116102585780632299bda6146103b5578063243aa7c9146103e257806326f589ff14610402576102bb565b80631761d7ce1461035d5780631f61aebe14610393576102bb565b80630c660be4116102a45780630c660be4146102fd57806310154bad1461031d57806311eaf6011461033d576102bb565b806306087e5b146102bd5780630ad3aa19146102dd575b005b3480156102c957600080fd5b506102bb6102d8366004612278565b610751565b3480156102e957600080fd5b506102bb6102f836600461234d565b610790565b34801561030957600080fd5b506102bb61031836600461246e565b610ade565b34801561032957600080fd5b506102bb610338366004612278565b610b12565b34801561034957600080fd5b506102bb610358366004612296565b610b45565b34801561036957600080fd5b5061037d610378366004612278565b611062565b60405161038a9190612fcb565b60405180910390f35b34801561039f57600080fd5b506103a8611077565b60405161038a91906131a8565b3480156103c157600080fd5b506103d56103d0366004612576565b61107d565b60405161038a9190612ef5565b3480156103ee57600080fd5b506102bb6103fd3660046124d7565b6110a4565b34801561040e57600080fd5b506102bb61041d3660046123f5565b611152565b34801561042e57600080fd5b506102bb61043d366004612278565b6113e5565b34801561044e57600080fd5b5061037d61045d366004612278565b611415565b34801561046e57600080fd5b5061037d61047d366004612278565b61146e565b34801561048e57600080fd5b506102bb611487565b3480156104a357600080fd5b5061037d6104b2366004612278565b61151a565b3480156104c357600080fd5b506102bb61152d565b3480156104d857600080fd5b506103d561153f565b3480156104ed57600080fd5b5061037d611564565b34801561050257600080fd5b506103a861156e565b34801561051757600080fd5b506102bb6105263660046123b2565b611574565b34801561053757600080fd5b506103d56115c3565b34801561054c57600080fd5b506102bb6115d2565b34801561056157600080fd5b506102bb610570366004612278565b6115e2565b34801561058157600080fd5b506102bb610590366004612278565b611612565b3480156105a157600080fd5b506102bb6105b0366004612278565b611642565b3480156105c157600080fd5b506102bb611679565b3480156105d657600080fd5b506102bb6105e5366004612278565b6116f9565b3480156105f657600080fd5b506103a8610605366004612278565b6117b5565b34801561061657600080fd5b5061037d610625366004612278565b6117c7565b34801561063657600080fd5b506102bb61064536600461250c565b6117da565b34801561065657600080fd5b506102bb611882565b34801561066b57600080fd5b506103d56118a7565b6102bb61153d565b34801561068857600080fd5b506103a8610697366004612278565b6118b6565b3480156106a857600080fd5b506102bb6106b7366004612278565b6118c8565b3480156106c857600080fd5b506103a86106d7366004612278565b61191a565b3480156106e857600080fd5b506102bb61192c565b3480156106fd57600080fd5b506102bb61070c366004612278565b61193c565b34801561071d57600080fd5b5061037d61072c366004612541565b611965565b34801561073d57600080fd5b506103d561074c366004612576565b611985565b610759611992565b6107616119b7565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60005460ff16156107bc5760405162461bcd60e51b81526004016107b390613148565b60405180910390fd5b6000805460ff191660011790556107d1611882565b6001600160a01b0383166000908152600d60205260409020546108065760405162461bcd60e51b81526004016107b390613098565b6001600160a01b0383166000908152600a6020526040902054821461083d5760405162461bcd60e51b81526004016107b390613108565b61087330848460405160200161085593929190612e66565b604051602081830303815290604052805190602001208260006119db565b6001600160a01b0383166000818152600a602052604090208054600101905561095c576001600160a01b0383166000908152600d6020526040902054471115610957576001600160a01b0383166000908152600d60205260408120546108e090479063ffffffff611bf016565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561091b573d6000803e3d6000fd5b5080837f186661f41f6b7bc56a92ba66079ddc8d68c4d85ad16470441dd2e6e8f36a44588660405161094d9190612ef5565b60405180910390a3505b610acf565b6040516370a0823160e01b815283906000906001600160a01b038316906370a082319061098d903090600401612f03565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612594565b6001600160a01b0386166000908152600d6020526040902054909150811115610acc576001600160a01b0385166000908152600d6020526040812054610a2a90839063ffffffff611bf016565b600b5460405163a9059cbb60e01b81529192506001600160a01b038086169263a9059cbb92610a5f9216908590600401612f76565b600060405180830381600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b5050505080857f186661f41f6b7bc56a92ba66079ddc8d68c4d85ad16470441dd2e6e8f36a445888604051610ac29190612ef5565b60405180910390a3505b50505b50506000805460ff1916905550565b610ae6611992565b8151610af990600590602085019061202c565b508051610b0d90600690602084019061202c565b505050565b610b1d610625611c39565b610b395760405162461bcd60e51b81526004016107b390613128565b610b4281611c3d565b50565b60005460ff1615610b685760405162461bcd60e51b81526004016107b390613148565b6000805460ff19166001179055610b7d611c85565b600782604051610b8d9190612dc5565b9081526040519081900360200190205460ff1615610bbd5760405162461bcd60e51b81526004016107b3906130b8565b610be4610bc8611caa565b3088888888886040516020016108559796959493929190612e71565b836001600160a01b038716610cf55783471015610c135760405162461bcd60e51b81526004016107b3906130a8565b6001600160a01b03851660009081526008602052604090205460ff1615610cb4576040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038616906347e7ef24908690610c7d908a908390600401612f76565b6000604051808303818588803b158015610c9657600080fd5b505af1158015610caa573d6000803e3d6000fd5b5050505050610cf0565b6040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015610cea573d6000803e3d6000fd5b50600090505b610fc8565b6040516370a0823160e01b8152879085906001600160a01b038316906370a0823190610d25903090600401612f03565b60206040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d759190810190612594565b1015610d935760405162461bcd60e51b81526004016107b3906130a8565b6001600160a01b03861660009081526008602052604090205460ff1615610f61576040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390610dfb9089908990600401612f76565b600060405180830381600087803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b50506040517f9d5755820000000000000000000000000000000000000000000000000000000081526001600160a01b0389169250639d5755829150610e76908a9089908d90600401612f84565b600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b50506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b038416925063dd62ed3e9150610eef9030908a90600401612f11565b60206040518083038186803b158015610f0757600080fd5b505afa158015610f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3f9190810190612594565b15610f5c5760405162461bcd60e51b81526004016107b390613058565b610fc6565b60405163a9059cbb60e01b81526001600160a01b0382169063a9059cbb90610f8f908a908990600401612f76565b600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b50505050600091505b505b6001600784604051610fda9190612dc5565b908152602001604051809103902060006101000a81548160ff021916908315150217905550806001600160a01b031684876001600160a01b03167ff6b095aebfbfb6ed6beca6ffab1699c95c32480f70b07621f92d7ccdf844089488878c60405161104793929190612f2c565b60405180910390a450506000805460ff191690555050505050565b60086020526000908152604090205460ff1681565b60095481565b6005818154811061108a57fe5b6000918252602090912001546001600160a01b0316905081565b6110ac611992565b6110b46119b7565b600e54600f546040516110f9926110db9230926001600160a01b0390921691602001612dd1565b604051602081830303815290604052805190602001208260016119db565b600f80546001019055600e54611117906001600160a01b0316611cae565b600e546040516001600160a01b03909116907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60005460ff16156111755760405162461bcd60e51b81526004016107b390613148565b6000805460ff1916600117905561118a611882565b60095482146111ab5760405162461bcd60e51b81526004016107b390613108565b6111c5308585856040516020016110db9493929190612e13565b81837f50fb1e062911f806ffb200f762d478c835a88d333a8dd543dccaedf3444dded5866040516111f69190612fac565b60405180910390a36009805460010190556001600160a01b0384166112aa57600b546001600160a01b0316318311156112415760405162461bcd60e51b81526004016107b390613028565b600b5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906112739030908790600401612f5b565b600060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b505050506113d5565b600b546040516370a0823160e01b815285916000916001600160a01b03808516926370a08231926112e19290911690600401612f03565b60206040518083038186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113319190810190612594565b9050848110156113535760405162461bcd60e51b81526004016107b390613028565b600b546040517ff640d5080000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063f640d508906113a090309089908b90600401612f84565b600060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b5050505050505b50506000805460ff191690555050565b6113f0610625611c39565b61140c5760405162461bcd60e51b81526004016107b390613128565b610b4281611cf7565b6000805b60055481101561146757826001600160a01b03166005828154811061143a57fe5b6000918252602090912001546001600160a01b0316141561145f576001915050611469565b600101611419565b505b919050565b600061148160048363ffffffff611d3f16565b92915050565b6114926104b2611c39565b6114ae5760405162461bcd60e51b81526004016107b390613078565b60025460ff166114d05760405162461bcd60e51b81526004016107b390613038565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611503611c39565b6040516115109190612f03565b60405180910390a1565b600061148160018363ffffffff611d3f16565b61153d611538611c39565b611d87565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60025460ff165b90565b600f5481565b61157c611992565b80821061159b5760405162461bcd60e51b81526004016107b390613088565b6001600160a01b039092166000908152600c6020908152604080832093909355600d90522055565b600b546001600160a01b031690565b61153d6115dd611c39565b611dcf565b6115ed610625611c39565b6116095760405162461bcd60e51b81526004016107b390613128565b610b4281611e17565b61161d6104b2611c39565b6116395760405162461bcd60e51b81526004016107b390613078565b610b4281611e5f565b61164a611992565b600e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6116846104b2611c39565b6116a05760405162461bcd60e51b81526004016107b390613078565b60025460ff16156116c35760405162461bcd60e51b81526004016107b3906130c8565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611503611c39565b611701611992565b6117096119b7565b61171b816001600160a01b0316611ea7565b6117375760405162461bcd60e51b81526004016107b390613198565b600b546040517f5bb478080000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635bb4780890611780908490600401612ef5565b600060405180830381600087803b15801561179a57600080fd5b505af11580156117ae573d6000803e3d6000fd5b5050505050565b600d6020526000908152604090205481565b600061148160038363ffffffff611d3f16565b6117e2611992565b6117ea6119b7565b60005b815181101561187e57600782828151811061180457fe5b60200260200101516040516118199190612dc5565b9081526040519081900360200190205460ff16611876576001600783838151811061184057fe5b60200260200101516040516118559190612dc5565b908152604051908190036020019020805491151560ff199092169190911790555b6001016117ed565b5050565b61188b33611415565b61153d5760405162461bcd60e51b81526004016107b390613168565b600e546001600160a01b031681565b600a6020526000908152604090205481565b6001600160a01b0381166118ee5760405162461bcd60e51b81526004016107b3906130f8565b6118f6611992565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b600c6020526000908152604090205481565b61153d611937611c39565b611cf7565b611944611992565b6001600160a01b03166000908152600860205260409020805460ff19169055565b805160208183018101805160078252928201919093012091525460ff1681565b6006818154811061108a57fe5b61199b336117c7565b61153d5760405162461bcd60e51b81526004016107b390613138565b6119bf611564565b61153d5760405162461bcd60e51b81526004016107b390613188565b60055460028102600381066119f357600390046119fb565b600390046001015b835181811080611a0a57508281115b15611a275760405162461bcd60e51b81526004016107b390613068565b606081604051908082528060200260200182016040528015611a53578160200160208202803883390190505b50905060005b82811015611ab0576000611a8089898481518110611a7357fe5b6020026020010151611ee3565b905080838381518110611a8f57fe5b6001600160a01b039092166020928302919091019091015250600101611a59565b50600085611b415760005b85811015611b3b57600060058281548110611ad257fe5b60009182526020822001546001600160a01b031691505b85811015611b3157848181518110611afd57fe5b60200260200101516001600160a01b0316826001600160a01b03161415611b2957836001019350611b31565b600101611ae9565b5050600101611abb565b50611bc6565b60005b85811015611bc457600060068281548110611b5b57fe5b60009182526020822001546001600160a01b031691505b85811015611bba57848181518110611b8657fe5b60200260200101516001600160a01b0316826001600160a01b03161415611bb257836001019350611bba565b600101611b72565b5050600101611b44565b505b83811015611be65760405162461bcd60e51b81526004016107b390613158565b5050505050505050565b6000611c3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f6c565b9392505050565b3390565b611c4e60048263ffffffff611f9816565b6040516001600160a01b038216907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a250565b611c8d611564565b1561153d5760405162461bcd60e51b81526004016107b390613178565b4690565b611cb781611ea7565b611cd35760405162461bcd60e51b81526004016107b3906130d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b611d0860048263ffffffff611fe416565b6040516001600160a01b038216907f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b690600090a250565b60006001600160a01b038216611d675760405162461bcd60e51b81526004016107b390613118565b506001600160a01b03166000908152602091909152604090205460ff1690565b611d9860038263ffffffff611fe416565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b611de060018263ffffffff611fe416565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b611e2860038263ffffffff611f9816565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b611e7060018263ffffffff611f9816565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611edb5750808214155b949350505050565b60008151604114611ef357600080fd5b60208201516040830151604184015160ff16601b811015611f1257601b015b60018682858560405160008152602001604052604051611f359493929190612fd9565b6020604051602081039080840390855afa158015611f57573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60008184841115611f905760405162461bcd60e51b81526004016107b39190613017565b505050900390565b611fa28282611d3f565b15611fbf5760405162461bcd60e51b81526004016107b390613048565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611fee8282611d3f565b61200a5760405162461bcd60e51b81526004016107b3906130e8565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b82805482825590600052602060002090810192821561208e579160200282015b8281111561208e578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390911617825560209092019160019091019061204c565b5061209a92915061209e565b5090565b61156b91905b8082111561209a57805473ffffffffffffffffffffffffffffffffffffffff191681556001016120a4565b8035611481816132c3565b600082601f8301126120eb57600080fd5b81356120fe6120f9826131dd565b6131b6565b9150818183526020840193506020810190508385602084028201111561212357600080fd5b60005b8381101561214f578161213988826120cf565b8452506020928301929190910190600101612126565b5050505092915050565b600082601f83011261216a57600080fd5b81356121786120f9826131dd565b81815260209384019390925082018360005b8381101561214f57813586016121a08882612213565b845250602092830192919091019060010161218a565b600082601f8301126121c757600080fd5b81356121d56120f9826131dd565b81815260209384019390925082018360005b8381101561214f57813586016121fd8882612213565b84525060209283019291909101906001016121e7565b600082601f83011261222457600080fd5b81356122326120f9826131fe565b9150808252602083016020830185838301111561224e57600080fd5b612259838284613266565b50505092915050565b8035611481816132d7565b8051611481816132d7565b60006020828403121561228a57600080fd5b6000611edb84846120cf565b60008060008060008060c087890312156122af57600080fd5b60006122bb89896120cf565b96505060206122cc89828a016120cf565b95505060406122dd89828a016120cf565b94505060606122ee89828a01612262565b935050608087013567ffffffffffffffff81111561230b57600080fd5b61231789828a01612213565b92505060a087013567ffffffffffffffff81111561233457600080fd5b61234089828a01612159565b9150509295509295509295565b60008060006060848603121561236257600080fd5b600061236e86866120cf565b935050602061237f86828701612262565b925050604084013567ffffffffffffffff81111561239c57600080fd5b6123a886828701612159565b9150509250925092565b6000806000606084860312156123c757600080fd5b60006123d386866120cf565b93505060206123e486828701612262565b92505060406123a886828701612262565b6000806000806080858703121561240b57600080fd5b600061241787876120cf565b945050602061242887828801612262565b935050604061243987828801612262565b925050606085013567ffffffffffffffff81111561245657600080fd5b61246287828801612159565b91505092959194509250565b6000806040838503121561248157600080fd5b823567ffffffffffffffff81111561249857600080fd5b6124a4858286016120da565b925050602083013567ffffffffffffffff8111156124c157600080fd5b6124cd858286016120da565b9150509250929050565b6000602082840312156124e957600080fd5b813567ffffffffffffffff81111561250057600080fd5b611edb84828501612159565b60006020828403121561251e57600080fd5b813567ffffffffffffffff81111561253557600080fd5b611edb848285016121b6565b60006020828403121561255357600080fd5b813567ffffffffffffffff81111561256a57600080fd5b611edb84828501612213565b60006020828403121561258857600080fd5b6000611edb8484612262565b6000602082840312156125a657600080fd5b6000611edb848461226d565b6125bb81613255565b82525050565b6125bb81613233565b6125bb6125d682613233565b6132a2565b6125bb8161323e565b6125bb8161156b565b60006125f882613226565b612602818561322a565b9350612612818560208601613272565b61261b816132b3565b9093019392505050565b600061263082613226565b61263a8185611469565b935061264a818560208601613272565b9290920192915050565b6000612661600783611469565b7f7570677261646500000000000000000000000000000000000000000000000000815260070192915050565b600061269a60238361322a565b7f636f6c642077616c6c65742062616c616e636520697320696e7375666669636981527f656e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126f960148361322a565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000815260200192915050565b6000612732601f8361322a565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500815260200192915050565b600061276b60238361322a565b7f616c6c6f77616e6365206166746572206465706f736974206973206e6f74207a81527f65726f0000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006127ca60118361322a565b7f7369676e617475726520696e76616c6964000000000000000000000000000000815260200192915050565b600061280360308361322a565b7f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581527f207468652050617573657220726f6c6500000000000000000000000000000000602082015260400192915050565b6000612862600f8361322a565b7f696e636f727265637420626f756e640000000000000000000000000000000000815260200192915050565b600061289b60098361322a565b6810dbdb19151bd21bdd60ba1b815260200192915050565b60006128c0600983611469565b6810dbdb19151bd21bdd60ba1b815260090192915050565b60006128e5600983611469565b7f486f74546f436f6c640000000000000000000000000000000000000000000000815260090192915050565b600061291e600c8361322a565b7f756e7361666520746f6b656e0000000000000000000000000000000000000000815260200192915050565b6000612957601f8361322a565b7f686f742077616c6c65742062616c616e636520696e73756666696369656e7400815260200192915050565b600061299060178361322a565b7f66696e6973686564206275726e206f7065726174696f6e000000000000000000815260200192915050565b60006129c960108361322a565b7f5061757361626c653a2070617573656400000000000000000000000000000000815260200192915050565b6000612a0260148361322a565b7f6e6f6e2d636f6e74726163742061646472657373000000000000000000000000815260200192915050565b6000612a3b60218361322a565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a9a60178361322a565b7f72656c617965722061646472657373206973207a65726f000000000000000000815260200192915050565b6000612ad3600f8361322a565b7f696e636f7272656374206e6f6e63650000000000000000000000000000000000815260200192915050565b6000612b0c60228361322a565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581527f7373000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b6b60408361322a565b7f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081527f6e6f742068617665207468652057686974656c69737441646d696e20726f6c65602082015260400192915050565b6000612bca602c8361322a565b7f63616c6c657220646f6573206e6f742068617665207468652057686974656c6981527f737441646d696e20726f6c650000000000000000000000000000000000000000602082015260400192915050565b6000612c2960128361322a565b7f5245454e5452414e43595f494c4c4547414c0000000000000000000000000000815260200192915050565b6000612c6260178361322a565b7f696e73756666696369656e74207369676e617475726573000000000000000000815260200192915050565b6000612c9b600d8361322a565b7f6e6f7420637573746f6469616e00000000000000000000000000000000000000815260200192915050565b6000612cd460068361322a565b7f7061757365640000000000000000000000000000000000000000000000000000815260200192915050565b6000612d0d600a8361322a565b7f6e6f742070617573656400000000000000000000000000000000000000000000815260200192915050565b6000612d46600483611469565b7f6275726e00000000000000000000000000000000000000000000000000000000815260040192915050565b6000612d7f60198361322a565b7f5f666163746f7279206d75737420626520636f6e747261637400000000000000815260200192915050565b6125bb612db78261156b565b61156b565b6125bb8161324f565b6000611c328284612625565b6000612ddc82612654565b9150612de882866125ca565b601482019150612df882856125ca565b601482019150612e088284612dab565b506020019392505050565b6000612e1e826128b3565b9150612e2a82876125ca565b601482019150612e3a82866125ca565b601482019150612e4a8285612dab565b602082019150612e5a8284612dab565b50602001949350505050565b6000612ddc826128d8565b6000612e7d828a612dab565b602082019150612e8c82612d39565b9150612e9882896125ca565b601482019150612ea882886125ca565b601482019150612eb882876125ca565b601482019150612ec882866125ca565b601482019150612ed88285612dab565b602082019150612ee88284612625565b9998505050505050505050565b6020810161148182846125c1565b6020810161148182846125b2565b60408101612f1f82856125b2565b611c3260208301846125b2565b60608101612f3a82866125b2565b8181036020830152612f4c81856125ed565b9050611edb60408301846125c1565b60408101612f6982856125c1565b611c3260208301846125e4565b60408101612f6982856125b2565b60608101612f9282866125b2565b612f9f60208301856125e4565b611edb60408301846125c1565b60408101612fba82846125c1565b8181036020830152611c328161288e565b6020810161148182846125db565b60808101612fe782876125e4565b612ff46020830186612dbc565b61300160408301856125e4565b61300e60608301846125e4565b95945050505050565b60208082528101611c3281846125ed565b602080825281016114818161268d565b60208082528101611481816126ec565b6020808252810161148181612725565b602080825281016114818161275e565b60208082528101611481816127bd565b60208082528101611481816127f6565b6020808252810161148181612855565b6020808252810161148181612911565b602080825281016114818161294a565b6020808252810161148181612983565b60208082528101611481816129bc565b60208082528101611481816129f5565b6020808252810161148181612a2e565b6020808252810161148181612a8d565b6020808252810161148181612ac6565b6020808252810161148181612aff565b6020808252810161148181612b5e565b6020808252810161148181612bbd565b6020808252810161148181612c1c565b6020808252810161148181612c55565b6020808252810161148181612c8e565b6020808252810161148181612cc7565b6020808252810161148181612d00565b6020808252810161148181612d72565b6020810161148182846125e4565b60405181810167ffffffffffffffff811182821017156131d557600080fd5b604052919050565b600067ffffffffffffffff8211156131f457600080fd5b5060209081020190565b600067ffffffffffffffff82111561321557600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b600061148182613243565b151590565b6001600160a01b031690565b60ff1690565b600061148182600061148182613233565b82818337506000910152565b60005b8381101561328d578181015183820152602001613275565b8381111561329c576000848401525b50505050565b6000611481826000611481826132bd565b601f01601f191690565b60601b90565b6132cc81613233565b8114610b4257600080fd5b6132cc8161156b56fea365627a7a72315820c7e73d186d5a2dfd47dda30b5cea910993863de3ca732494b9ca51ac08b9678e6c6578706572696d656e74616cf564736f6c63430005100040
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing bytecode for exploit paths**
[codex:503394] 
[codex:503394] I'm planning to parse the smart contract bytecode searching for specific opcodes like DELEGATECALL, CALL, and SELFDESTRUCT that could indicate vulnerabilities. I'll use heuristics and a Python disassembler script to identify potential exploit paths, focusing on upgradeability and unauthorized calls, while ensuring to only report concrete exploit findings.
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] 
[codex:503394] hexdata = open('BYTECODE_BUNDLE.txt').read()
[codex:503394] # extract hex after 0x
[codex:503394] m = re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:503394] code_hex = m.group(1)
[codex:503394] code = unhexlify(code_hex)
[codex:503394] 
[codex:503394] # simple opcode map
[codex:503394] ops = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] # add others
[codex:503394] opnames = {
[codex:503394]     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:503394]     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:503394]     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:503394]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:503394]     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:503394]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:503394] }
[codex:503394] 
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # disassemble and record calls
[codex:503394] calls = []
[codex:503394] selfdestructs = []
[codex:503394] stores = []
[codex:503394] 
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op = code[pc]
[codex:503394]     opname = ops.get(op, f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n = op-0x5f
[codex:503394]         data = code[pc+1:pc+1+n]
[codex:503394]         pc_next = pc+1+n
[codex:503394]     else:
[codex:503394]         data = b''
[codex:503394]         pc_next = pc+1
[codex:503394]     # record
[codex:503394]     if op in (0xf1,0xf2,0xf4,0xfa,0xff):
[codex:503394]         calls.append((pc, opname))
[codex:503394]     if op==0x55:
[codex:503394]         stores.append(pc)
[codex:503394]     pc = pc_next
[codex:503394] 
[codex:503394] print('code length', len(code))
[codex:503394] print('CALL/DELEGATECALL/STATICCALL/SELFDESTRUCT:', calls[:20], '... total', len(calls))
[codex:503394] print('SELFDESTRUCTs', [pc for pc,op in calls if op=='SELFDESTRUCT'])
[codex:503394] print('SSTORE count', len(stores))
[codex:503394] 
[codex:503394] # list all DELEGATECALL offsets
[codex:503394] print('DELEGATECALL offsets', [pc for pc,op in calls if op=='DELEGATECALL'])
[codex:503394] print('CALL offsets', [pc for pc,op in calls if op=='CALL'][:20])
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 33ms:
[codex:503394] code length 13091
[codex:503394] CALL/DELEGATECALL/STATICCALL/SELFDESTRUCT: [(2309, 'CALL'), (2472, 'STATICCALL'), (2684, 'CALL'), (3225, 'CALL'), (3284, 'CALL'), (3392, 'STATICCALL'), (3608, 'CALL'), (3731, 'CALL'), (3850, 'STATICCALL'), (4012, 'CALL'), (4752, 'CALL'), (4860, 'STATICCALL'), (5053, 'CALL'), (6045, 'CALL'), (8006, 'STATICCALL')] ... total 15
[codex:503394] SELFDESTRUCTs []
[codex:503394] SSTORE count 25
[codex:503394] DELEGATECALL offsets []
[codex:503394] CALL offsets [2309, 2684, 3225, 3284, 3608, 3731, 4012, 4752, 5053, 6045]
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Examining upgrade and access control patterns**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata = open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex = re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code = unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] opnames = {
[codex:503394]     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:503394]     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:503394]     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:503394]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:503394]     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:503394]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:503394] }
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # Build disassembly list with pc
[codex:503394] pc=0
[codex:503394] insts=[]
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op, f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None))
[codex:503394]         pc+=1
[codex:503394] 
[codex:503394] call_pcs=[2309,2684,3225,3284,3608,3731,4012,4752,5053,6045]
[codex:503394] 
[codex:503394] # print window around each call
[codex:503394] for target in call_pcs:
[codex:503394]     print('\\n=== around', target, '===')
[codex:503394]     # find index
[codex:503394]     idx = next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-10):idx+10]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 32ms:
[codex:503394] 
[codex:503394] === around 2309 ===
[codex:503394] 08fa: OP90
[codex:503394] 08fb: OP83
[codex:503394] 08fc: OP90
[codex:503394] 08fd: PUSH1 0x00
[codex:503394] 08ff: OP81
[codex:503394] 0900: OP81
[codex:503394] 0901: OP81
[codex:503394] 0902: OP85
[codex:503394] 0903: OP88
[codex:503394] 0904: OP88
[codex:503394] 0905: CALL
[codex:503394] 0906: OP93
[codex:503394] 0907: POP
[codex:503394] 0908: POP
[codex:503394] 0909: POP
[codex:503394] 090a: POP
[codex:503394] 090b: ISZERO
[codex:503394] 090c: OP80
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Improving opcode mapping for analysis**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] 
[codex:503394] hexdata = open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex = re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code = unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames = {
[codex:503394]     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:503394]     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:503394]     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:503394]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:503394]     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:503394]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:503394] }
[codex:503394] 
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # Build disassembly list with pc
[codex:503394] pc=0
[codex:503394] insts=[]
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op, f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None))
[codex:503394]         pc+=1
[codex:503394] 
[codex:503394] call_pcs=[2309,2684,3225,3284,3608,3731,4012,4752,5053,6045]
[codex:503394] 
[codex:503394] # function to print window
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=20):
[codex:503394]     idx = next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] for target in call_pcs:
[codex:503394]     print('\\n=== around', hex(target), '===')
[codex:503394]     print_window(target)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 32ms:
[codex:503394] 
[codex:503394] === around 0x905 ===
[codex:503394] 08ec: PUSH1 0x01
[codex:503394] 08ee: PUSH1 0xa0
[codex:503394] 08f0: SHL
[codex:503394] 08f1: SUB
[codex:503394] 08f2: AND
[codex:503394] 08f3: SWAP1
[codex:503394] 08f4: DUP3
[codex:503394] 08f5: ISZERO
[codex:503394] 08f6: PUSH2 0x08fc
[codex:503394] 08f9: MUL
[codex:503394] 08fa: SWAP1
[codex:503394] 08fb: DUP4
[codex:503394] 08fc: SWAP1
[codex:503394] 08fd: PUSH1 0x00
[codex:503394] 08ff: DUP2
[codex:503394] 0900: DUP2
[codex:503394] 0901: DUP2
[codex:503394] 0902: DUP6
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing CALL patterns and access controls**
[codex:503394] 
[codex:503394] I'm investigating CALL opcodes to infer if ETH value is transferred, checking for zero or non-zero values via stack or CALLVALUE/SELFBALANCE usage. I want to identify if any external functions use CALLER to send tokens or ETH without proper access control, especially in likely withdraw functions, by examining opcode patterns like CALLER and SLOAD and their context. This approach should help find potential exploits or confirm none exist.
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata = open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex = re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code = unhexlify(code_hex)
[codex:503394] 
[codex:503394] # disassemble with pc
[codex:503394] ops = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames = {
[codex:503394]     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:503394]     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:503394]     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:503394]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:503394]     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:503394]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:503394] }
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op, f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None))
[codex:503394]         pc+=1
[codex:503394] 
[codex:503394] # find CALLER occurrences and print small context
[codex:503394] for i,(pc,op,arg) in enumerate(insts):
[codex:503394]     if op=='CALLER':
[codex:503394]         print('\\nCALLER at', hex(pc))
[codex:503394]         for pc2,op2,arg2 in insts[max(0,i-5):i+10]:
[codex:503394]             if arg2 is None:
[codex:503394]                 print(f'{pc2:04x}: {op2}')
[codex:503394]             else:
[codex:503394]                 print(f'{pc2:04x}: {op2} 0x{arg2}')
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 33ms:
[codex:503394] 
[codex:503394] CALLER at 0x1886
[codex:503394] 187f: POP
[codex:503394] 1880: POP
[codex:503394] 1881: JUMP
[codex:503394] 1882: JUMPDEST
[codex:503394] 1883: PUSH2 0x188b
[codex:503394] 1886: CALLER
[codex:503394] 1887: PUSH2 0x1415
[codex:503394] 188a: JUMP
[codex:503394] 188b: JUMPDEST
[codex:503394] 188c: PUSH2 0x153d
[codex:503394] 188f: JUMPI
[codex:503394] 1890: PUSH1 0x40
[codex:503394] 1892: MLOAD
[codex:503394] 1893: PUSH3 0x461bcd
[codex:503394] 1897: PUSH1 0xe5
[codex:503394] 
[codex:503394] CALLER at 0x1996
[codex:503394] 198d: PUSH2 0x108a
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing CALLER usage in functions**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # disassemble
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None))
[codex:503394]         pc+=1
[codex:503394] 
[codex:503394] # function to print window
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=30):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x1415)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 30ms:
[codex:503394] 13f1: PUSH2 0x140c
[codex:503394] 13f4: JUMPI
[codex:503394] 13f5: PUSH1 0x40
[codex:503394] 13f7: MLOAD
[codex:503394] 13f8: PUSH3 0x461bcd
[codex:503394] 13fc: PUSH1 0xe5
[codex:503394] 13fe: SHL
[codex:503394] 13ff: DUP2
[codex:503394] 1400: MSTORE
[codex:503394] 1401: PUSH1 0x04
[codex:503394] 1403: ADD
[codex:503394] 1404: PUSH2 0x07b3
[codex:503394] 1407: SWAP1
[codex:503394] 1408: PUSH2 0x3128
[codex:503394] 140b: JUMP
[codex:503394] 140c: JUMPDEST
[codex:503394] 140d: PUSH2 0x0b42
[codex:503394] 1410: DUP2
[codex:503394] 1411: PUSH2 0x1cf7
[codex:503394] 1414: JUMP
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing internal array lookup function**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None))
[codex:503394]         pc+=1
[codex:503394] 
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=30):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x17c7)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 37ms:
[codex:503394] 17af: POP
[codex:503394] 17b0: POP
[codex:503394] 17b1: POP
[codex:503394] 17b2: POP
[codex:503394] 17b3: POP
[codex:503394] 17b4: JUMP
[codex:503394] 17b5: JUMPDEST
[codex:503394] 17b6: PUSH1 0x0d
[codex:503394] 17b8: PUSH1 0x20
[codex:503394] 17ba: MSTORE
[codex:503394] 17bb: PUSH1 0x00
[codex:503394] 17bd: SWAP1
[codex:503394] 17be: DUP2
[codex:503394] 17bf: MSTORE
[codex:503394] 17c0: PUSH1 0x40
[codex:503394] 17c2: SWAP1
[codex:503394] 17c3: SHA3
[codex:503394] 17c4: SLOAD
[codex:503394] 17c5: DUP2
[codex:503394] 17c6: JUMP
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing potential token transfer functions**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:503394] for sel in ['a9059cbb','095ea7b3','23b872dd','70a08231','dd62ed3e','f640d508','9d575582','5bb47808']:
[codex:503394]     print(sel, 'found at', [m.start() for m in re.finditer(sel, code_hex)])
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 24ms:
[codex:503394] a9059cbb found at [5220, 5270, 7884, 7926, 9362, 9406]
[codex:503394] 095ea7b3 found at [7026, 7118]
[codex:503394] 23b872dd found at []
[codex:503394] 70a08231 found at [4802, 4854, 6644, 6694, 9572, 9626]
[codex:503394] dd62ed3e found at [7510, 7604]
[codex:503394] f640d508 found at [9910, 10004]
[codex:503394] 9d575582 found at [7264, 7358]
[codex:503394] 5bb47808 found at [11902, 11996]
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing token transfer selectors**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)',hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] # simple scan for pattern: PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:503394] # We'll disassemble and then look for PUSH4 followed by EQ, PUSH2, JUMPI in instruction stream.
[codex:503394] 
[codex:503394] ops = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # disassemble
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None))
[codex:503394]         pc+=1
[codex:503394] 
[codex:503394] # scan for PUSH4 selector pattern
[codex:503394] for i in range(len(insts)-4):
[codex:503394]     pc,op,arg = insts[i]
[codex:503394]     if op=='PUSH4':
[codex:503394]         if insts[i+1][1]=='EQ' and insts[i+2][1]=='PUSH2' and insts[i+3][1]=='JUMPI':
[codex:503394]             sel = arg
[codex:503394]             dest = insts[i+2][2]
[codex:503394]             print(f'selector 0x{sel} -> 0x{dest}')
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 35ms:
[codex:503394] selector 0xdc5724e4 -> 0x06f1
[codex:503394] selector 0xfb80c747 -> 0x0711
[codex:503394] selector 0xfc0a7f03 -> 0x0731
[codex:503394] selector 0xd50fd1f4 -> 0x06bc
[codex:503394] selector 0xd6cd9473 -> 0x06dc
[codex:503394] selector 0xd0e30db0 -> 0x0674
[codex:503394] selector 0xd121b696 -> 0x067c
[codex:503394] selector 0xd29ab55b -> 0x069c
[codex:503394] selector 0xca44f465 -> 0x064a
[codex:503394] selector 0xd0134296 -> 0x065f
[codex:503394] selector 0xa971a0ad -> 0x05ea
[codex:503394] selector 0xbb5f747b -> 0x060a
[codex:503394] selector 0xbba15758 -> 0x062a
[codex:503394] selector 0x8456cb59 -> 0x05b5
[codex:503394] selector 0x97833876 -> 0x05ca
[codex:503394] selector 0x7362d9c8 -> 0x0555
[codex:503394] selector 0x82dc1ec4 -> 0x0575
[codex:503394] selector 0x83453832 -> 0x0595
[codex:503394] selector 0x6be13c92 -> 0x052b
[codex:503394] selector 0x6ef8d66d -> 0x0540
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing function entries for token transfers**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] # disassemble to find CALLVALUE
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]
[codex:503394]     opname=ops.get(op, f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         if opname=='CALLVALUE':
[codex:503394]             print('CALLVALUE at', hex(pc))
[codex:503394]         pc+=1
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 29ms:
[codex:503394] CALLVALUE at 0x2be
[codex:503394] CALLVALUE at 0x2de
[codex:503394] CALLVALUE at 0x2fe
[codex:503394] CALLVALUE at 0x31e
[codex:503394] CALLVALUE at 0x33e
[codex:503394] CALLVALUE at 0x35e
[codex:503394] CALLVALUE at 0x394
[codex:503394] CALLVALUE at 0x3b6
[codex:503394] CALLVALUE at 0x3e3
[codex:503394] CALLVALUE at 0x403
[codex:503394] CALLVALUE at 0x423
[codex:503394] CALLVALUE at 0x443
[codex:503394] CALLVALUE at 0x463
[codex:503394] CALLVALUE at 0x483
[codex:503394] CALLVALUE at 0x498
[codex:503394] CALLVALUE at 0x4b8
[codex:503394] CALLVALUE at 0x4cd
[codex:503394] CALLVALUE at 0x4e2
[codex:503394] CALLVALUE at 0x4f7
[codex:503394] CALLVALUE at 0x50c
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing call value usage and upgrade safety**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] needle=bytes.fromhex('360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc')
[codex:503394] idxs=[]
[codex:503394] start=0
[codex:503394] while True:
[codex:503394]     i=code.find(needle,start)
[codex:503394]     if i==-1: break
[codex:503394]     idxs.append(i)
[codex:503394]     start=i+1
[codex:503394] print('occurrences', idxs)
[codex:503394] # print around
[codex:503394] for i in idxs:
[codex:503394]     print('around', hex(i))
[codex:503394]     # print 40 bytes before/after
[codex:503394]     print(code[i-20:i+60].hex())
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 26ms:
[codex:503394] occurrences [5441, 7381]
[codex:503394] around 0x1541
[codex:503394] 5b61153d611538611c39565b611d87565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60025460ff165b90565b600f5481565b61157c611992565b
[codex:503394] around 0x1cd5
[codex:503394] 1bcd60e51b81526004016107b3906130d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b611d0860048263ffffffff611fe416565b6040516001600160
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Examining bytecode instructions**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] # disasm
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # print around 0x153d
[codex:503394] 
[codex:503394] def print_window(target, before=15, after=15):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x153d)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 33ms:
[codex:503394] 151d: PUSH2 0x1481
[codex:503394] 1520: PUSH1 0x01
[codex:503394] 1522: DUP4
[codex:503394] 1523: PUSH4 0xffffffff
[codex:503394] 1528: PUSH2 0x1d3f
[codex:503394] 152b: AND
[codex:503394] 152c: JUMP
[codex:503394] 152d: JUMPDEST
[codex:503394] 152e: PUSH2 0x153d
[codex:503394] 1531: PUSH2 0x1538
[codex:503394] 1534: PUSH2 0x1c39
[codex:503394] 1537: JUMP
[codex:503394] 1538: JUMPDEST
[codex:503394] 1539: PUSH2 0x1d87
[codex:503394] 153c: JUMP
[codex:503394] 153d: JUMPDEST
[codex:503394] 153e: JUMP
[codex:503394] 153f: JUMPDEST
[codex:503394] 1540: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
[codex:503394] 1561: SLOAD
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Inspecting contract storage access**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] # disasm
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # disassemble
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=30):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x1cd5)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr exited 1 in 39ms:
[codex:503394] Traceback (most recent call last):
[codex:503394]   File "<stdin>", line 37, in <module>
[codex:503394]   File "<stdin>", line 30, in print_window
[codex:503394] StopIteration
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Locating precise PUSH32 instruction**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] needle=bytes.fromhex('360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc')
[codex:503394] # find pc of PUSH32 start
[codex:503394] for i in range(len(code)):
[codex:503394]     if code[i:i+32]==needle:
[codex:503394]         # check if previous byte is PUSH32 opcode (0x7f)
[codex:503394]         if i>0 and code[i-1]==0x7f:
[codex:503394]             print('PUSH32 at pc', hex(i-1))
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 29ms:
[codex:503394] PUSH32 at pc 0x1540
[codex:503394] PUSH32 at pc 0x1cd4
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Disassembling around address 0x1cd4**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # disassemble
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # print window around 0x1cd4
[codex:503394] 
[codex:503394] def print_window(target, before=25, after=25):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x1cd4)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 31ms:
[codex:503394] 1cab: CHAINID
[codex:503394] 1cac: SWAP1
[codex:503394] 1cad: JUMP
[codex:503394] 1cae: JUMPDEST
[codex:503394] 1caf: PUSH2 0x1cb7
[codex:503394] 1cb2: DUP2
[codex:503394] 1cb3: PUSH2 0x1ea7
[codex:503394] 1cb6: JUMP
[codex:503394] 1cb7: JUMPDEST
[codex:503394] 1cb8: PUSH2 0x1cd3
[codex:503394] 1cbb: JUMPI
[codex:503394] 1cbc: PUSH1 0x40
[codex:503394] 1cbe: MLOAD
[codex:503394] 1cbf: PUSH3 0x461bcd
[codex:503394] 1cc3: PUSH1 0xe5
[codex:503394] 1cc5: SHL
[codex:503394] 1cc6: DUP2
[codex:503394] 1cc7: MSTORE
[codex:503394] 1cc8: PUSH1 0x04
[codex:503394] 1cca: ADD
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing access control check function**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] # disasm
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] # disassemble
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # find JUMPDEST at 0x1ea7
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=30):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x1ea7)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 31ms:
[codex:503394] 1e6e: AND
[codex:503394] 1e6f: JUMP
[codex:503394] 1e70: JUMPDEST
[codex:503394] 1e71: PUSH1 0x40
[codex:503394] 1e73: MLOAD
[codex:503394] 1e74: PUSH1 0x01
[codex:503394] 1e76: PUSH1 0x01
[codex:503394] 1e78: PUSH1 0xa0
[codex:503394] 1e7a: SHL
[codex:503394] 1e7b: SUB
[codex:503394] 1e7c: DUP3
[codex:503394] 1e7d: AND
[codex:503394] 1e7e: SWAP1
[codex:503394] 1e7f: PUSH32 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8
[codex:503394] 1ea0: SWAP1
[codex:503394] 1ea1: PUSH1 0x00
[codex:503394] 1ea3: SWAP1
[codex:503394] 1ea4: LOG2
[codex:503394] 1ea5: POP
[codex:503394] 1ea6: JUMP
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing contract detection and upgrade functions**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] import hashlib
[codex:503394] sig='implementation()'
[codex:503394] sel=hashlib.new('sha3_256', sig.encode()).hexdigest()[:8]
[codex:503394] print(sel)
[codex:503394] 
[codex:503394] sig2='upgradeTo(address)'
[codex:503394] sel2=hashlib.new('sha3_256', sig2.encode()).hexdigest()[:8]
[codex:503394] print('upgradeTo', sel2)
[codex:503394] 
[codex:503394] sig3='admin()'
[codex:503394] sel3=hashlib.new('sha3_256', sig3.encode()).hexdigest()[:8]
[codex:503394] print('admin', sel3)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 22ms:
[codex:503394] f5d97006
[codex:503394] upgradeTo 6b59108d
[codex:503394] admin eb8325fb
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Evaluating keccak hash options**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] try:
[codex:503394]     import sha3
[codex:503394]     k=sha3.keccak_256()
[codex:503394]     k.update(b'upgradeTo(address)')
[codex:503394]     print(k.hexdigest()[:8])
[codex:503394] except Exception as e:
[codex:503394]     print('sha3 module not available', e)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 19ms:
[codex:503394] sha3 module not available No module named 'sha3'
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing upgrade access control checks**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] # disassemble to find PUSH2 0x1cae or JUMPDEST at 0x1cae
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # find PUSH2 0x1cae
[codex:503394] for pc,op,arg in insts:
[codex:503394]     if op=='PUSH2' and arg=='1cae':
[codex:503394]         print('PUSH2 0x1cae at', hex(pc))
[codex:503394] 
[codex:503394] # find JUMPDEST at 0x1cae
[codex:503394] for pc,op,arg in insts:
[codex:503394]     if pc==0x1cae:
[codex:503394]         print('at 0x1cae', op, arg)
[codex:503394]         break
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 33ms:
[codex:503394] PUSH2 0x1cae at 0x1113
[codex:503394] at 0x1cae JUMPDEST None
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Inspecting jump to upgrade function**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # print around 0x1113
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=30):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x1113)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 31ms:
[codex:503394] 10f5: PUSH2 0x19db
[codex:503394] 10f8: JUMP
[codex:503394] 10f9: JUMPDEST
[codex:503394] 10fa: PUSH1 0x0f
[codex:503394] 10fc: DUP1
[codex:503394] 10fd: SLOAD
[codex:503394] 10fe: PUSH1 0x01
[codex:503394] 1100: ADD
[codex:503394] 1101: SWAP1
[codex:503394] 1102: SSTORE
[codex:503394] 1103: PUSH1 0x0e
[codex:503394] 1105: SLOAD
[codex:503394] 1106: PUSH2 0x1117
[codex:503394] 1109: SWAP1
[codex:503394] 110a: PUSH1 0x01
[codex:503394] 110c: PUSH1 0x01
[codex:503394] 110e: PUSH1 0xa0
[codex:503394] 1110: SHL
[codex:503394] 1111: SUB
[codex:503394] 1112: AND
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing upgrade and transfer mechanisms**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # print window around 0x0850-0x0950
[codex:503394] for pc,op,arg in insts:
[codex:503394]     if 0x0840 <= pc <= 0x0960:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 32ms:
[codex:503394] 0841: ADDRESS
[codex:503394] 0842: DUP5
[codex:503394] 0843: DUP5
[codex:503394] 0844: PUSH1 0x40
[codex:503394] 0846: MLOAD
[codex:503394] 0847: PUSH1 0x20
[codex:503394] 0849: ADD
[codex:503394] 084a: PUSH2 0x0855
[codex:503394] 084d: SWAP4
[codex:503394] 084e: SWAP3
[codex:503394] 084f: SWAP2
[codex:503394] 0850: SWAP1
[codex:503394] 0851: PUSH2 0x2e66
[codex:503394] 0854: JUMP
[codex:503394] 0855: JUMPDEST
[codex:503394] 0856: PUSH1 0x40
[codex:503394] 0858: MLOAD
[codex:503394] 0859: PUSH1 0x20
[codex:503394] 085b: DUP2
[codex:503394] 085c: DUP4
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing internal ETH transfer logic**
[codex:503394] 
[codex:503394] This complex analysis breaks down an internal function around 0x0751 that sends ETH to a cold wallet address stored in slot 0x0b, using balance checks and possibly safe math calls. I'm trying to link this internal code to an external function at selector 0x06087e5b, which appears to call it and may be unprotected—this could hint at a vulnerability if there’s no access control guarding the transfer. I’m also mapping jumps and storage layout to better understand the flow and permissions related to this ETH movement.
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # print around 0x0751
[codex:503394] 
[codex:503394] def print_window(target, before=20, after=20):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x0751)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 31ms:
[codex:503394] 0731: JUMPDEST
[codex:503394] 0732: CALLVALUE
[codex:503394] 0733: DUP1
[codex:503394] 0734: ISZERO
[codex:503394] 0735: PUSH2 0x073d
[codex:503394] 0738: JUMPI
[codex:503394] 0739: PUSH1 0x00
[codex:503394] 073b: DUP1
[codex:503394] 073c: REVERT
[codex:503394] 073d: JUMPDEST
[codex:503394] 073e: POP
[codex:503394] 073f: PUSH2 0x03d5
[codex:503394] 0742: PUSH2 0x074c
[codex:503394] 0745: CALLDATASIZE
[codex:503394] 0746: PUSH1 0x04
[codex:503394] 0748: PUSH2 0x2576
[codex:503394] 074b: JUMP
[codex:503394] 074c: JUMPDEST
[codex:503394] 074d: PUSH2 0x1985
[codex:503394] 0750: JUMP
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Examining internal function calls and access control**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] 
[codex:503394] def print_window(target, before=15, after=15):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x1992)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 37ms:
[codex:503394] 197f: SLOAD
[codex:503394] 1980: PUSH1 0xff
[codex:503394] 1982: AND
[codex:503394] 1983: DUP2
[codex:503394] 1984: JUMP
[codex:503394] 1985: JUMPDEST
[codex:503394] 1986: PUSH1 0x06
[codex:503394] 1988: DUP2
[codex:503394] 1989: DUP2
[codex:503394] 198a: SLOAD
[codex:503394] 198b: DUP2
[codex:503394] 198c: LT
[codex:503394] 198d: PUSH2 0x108a
[codex:503394] 1990: JUMPI
[codex:503394] 1991: INVALID
[codex:503394] 1992: JUMPDEST
[codex:503394] 1993: PUSH2 0x199b
[codex:503394] 1996: CALLER
[codex:503394] 1997: PUSH2 0x17c7
[codex:503394] 199a: JUMP
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing access control flow**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] 
[codex:503394] def print_window(target, before=10, after=10):
[codex:503394]     idx=next(i for i,(pc,_,_) in enumerate(insts) if pc==target)
[codex:503394]     for pc,op,arg in insts[max(0,idx-before):idx+after]:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] 
[codex:503394] print_window(0x19b7)
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 31ms:
[codex:503394] 19a7: PUSH1 0xe5
[codex:503394] 19a9: SHL
[codex:503394] 19aa: DUP2
[codex:503394] 19ab: MSTORE
[codex:503394] 19ac: PUSH1 0x04
[codex:503394] 19ae: ADD
[codex:503394] 19af: PUSH2 0x07b3
[codex:503394] 19b2: SWAP1
[codex:503394] 19b3: PUSH2 0x3138
[codex:503394] 19b6: JUMP
[codex:503394] 19b7: JUMPDEST
[codex:503394] 19b8: PUSH2 0x19bf
[codex:503394] 19bb: PUSH2 0x1564
[codex:503394] 19be: JUMP
[codex:503394] 19bf: JUMPDEST
[codex:503394] 19c0: PUSH2 0x153d
[codex:503394] 19c3: JUMPI
[codex:503394] 19c4: PUSH1 0x40
[codex:503394] 19c6: MLOAD
[codex:503394] 19c7: PUSH3 0x461bcd
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Analyzing access control and signature validation**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # find STATICCALLs and print context
[codex:503394] for i,(pc,op,arg) in enumerate(insts):
[codex:503394]     if op=='STATICCALL':
[codex:503394]         print('\\nSTATICCALL at', hex(pc))
[codex:503394]         for pc2,op2,arg2 in insts[max(0,i-10):i+10]:
[codex:503394]             if arg2 is None:
[codex:503394]                 print(f'{pc2:04x}: {op2}')
[codex:503394]             else:
[codex:503394]                 print(f'{pc2:04x}: {op2} 0x{arg2}')
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 33ms:
[codex:503394] 
[codex:503394] STATICCALL at 0x9a8
[codex:503394] 099b: DUP1
[codex:503394] 099c: ISZERO
[codex:503394] 099d: PUSH2 0x09a5
[codex:503394] 09a0: JUMPI
[codex:503394] 09a1: PUSH1 0x00
[codex:503394] 09a3: DUP1
[codex:503394] 09a4: REVERT
[codex:503394] 09a5: JUMPDEST
[codex:503394] 09a6: POP
[codex:503394] 09a7: GAS
[codex:503394] 09a8: STATICCALL
[codex:503394] 09a9: ISZERO
[codex:503394] 09aa: DUP1
[codex:503394] 09ab: ISZERO
[codex:503394] 09ac: PUSH2 0x09b9
[codex:503394] 09af: JUMPI
[codex:503394] 09b0: RETURNDATASIZE
[codex:503394] 09b1: PUSH1 0x00
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Investigating staticcall to ecrecover**
[codex:503394] exec
[codex:503394] /bin/bash -lc "python - <<'PY'
[codex:503394] from binascii import unhexlify
[codex:503394] import re
[codex:503394] hexdata=open('BYTECODE_BUNDLE.txt').read();
[codex:503394] code_hex=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:503394] code=unhexlify(code_hex)
[codex:503394] 
[codex:503394] ops={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:503394] ops.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
[codex:503394] ops.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
[codex:503394] ops.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
[codex:503394] 
[codex:503394] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:503394] ops.update(opnames)
[codex:503394] 
[codex:503394] insts=[]
[codex:503394] pc=0
[codex:503394] while pc < len(code):
[codex:503394]     op=code[pc]; opname=ops.get(op,f'OP{op:02x}')
[codex:503394]     if opname.startswith('PUSH'):
[codex:503394]         n=op-0x5f; data=code[pc+1:pc+1+n]
[codex:503394]         insts.append((pc,opname,data.hex()))
[codex:503394]         pc+=1+n
[codex:503394]     else:
[codex:503394]         insts.append((pc,opname,None)); pc+=1
[codex:503394] 
[codex:503394] # print around 0x1f20-0x1f70
[codex:503394] for pc,op,arg in insts:
[codex:503394]     if 0x1f20 <= pc <= 0x1f80:
[codex:503394]         if arg is None:
[codex:503394]             print(f'{pc:04x}: {op}')
[codex:503394]         else:
[codex:503394]             print(f'{pc:04x}: {op} 0x{arg}')
[codex:503394] PY" in /tmp/codex-multi-2bmql4tr succeeded in 201ms:
[codex:503394] 1f20: PUSH1 0x20
[codex:503394] 1f22: ADD
[codex:503394] 1f23: PUSH1 0x40
[codex:503394] 1f25: MSTORE
[codex:503394] 1f26: PUSH1 0x40
[codex:503394] 1f28: MLOAD
[codex:503394] 1f29: PUSH2 0x1f35
[codex:503394] 1f2c: SWAP5
[codex:503394] 1f2d: SWAP4
[codex:503394] 1f2e: SWAP3
[codex:503394] 1f2f: SWAP2
[codex:503394] 1f30: SWAP1
[codex:503394] 1f31: PUSH2 0x2fd9
[codex:503394] 1f34: JUMP
[codex:503394] 1f35: JUMPDEST
[codex:503394] 1f36: PUSH1 0x20
[codex:503394] 1f38: PUSH1 0x40
[codex:503394] 1f3a: MLOAD
[codex:503394] 1f3b: PUSH1 0x20
[codex:503394] 1f3d: DUP2
[codex:503394] 
[codex:503394] thinking
[codex:503394] **Determining exploitability conclusions**
[codex:503394] codex
[codex:503394] {"no_findings":true,"summary":"Completed bytecode-only review of BYTECODE_BUNDLE.txt; no concrete, exploitably profitable path is provable from the runtime bytecode alone (no delegatecall/selfdestruct, upgrade/write paths appear guarded, and external calls look like guarded token/ETH operations).","findings":[]}
[codex:503394] tokens used
[codex:503394] 161,143
[codex:503394] {"no_findings":true,"summary":"Completed bytecode-only review of BYTECODE_BUNDLE.txt; no concrete, exploitably profitable path is provable from the runtime bytecode alone (no delegatecall/selfdestruct, upgrade/write paths appear guarded, and external calls look like guarded token/ETH operations).","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-03T22:58:38.594670+00:00",
        "returncode": 0
    },
    "summary": "Completed bytecode-only review of BYTECODE_BUNDLE.txt; no concrete, exploitably profitable path is provable from the runtime bytecode alone (no delegatecall/selfdestruct, upgrade/write paths appear guarded, and external calls look like guarded token/ETH operations).",
    "raw_final": {
        "summary": "Completed bytecode-only review of BYTECODE_BUNDLE.txt; no concrete, exploitably profitable path is provable from the runtime bytecode alone (no delegatecall/selfdestruct, upgrade/write paths appear guarded, and external calls look like guarded token/ETH operations).",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
15
EXT*/BALANCE
14
Total opcodes
7529
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x02bb
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x6be13c92
00000019: GT
0000001a: PUSH2 0x016e
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xca44f465
00000024: GT
00000025: PUSH2 0x00cb
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xd50fd1f4
0000002f: GT
00000030: PUSH2 0x007f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xdc5724e4
0000003a: GT
0000003b: PUSH2 0x0064
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xdc5724e4
00000045: EQ
00000046: PUSH2 0x06f1
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfb80c747
00000050: EQ
00000051: PUSH2 0x0711
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfc0a7f03
0000005b: EQ
0000005c: PUSH2 0x0731
0000005f: JUMPI
00000060: PUSH2 0x02bb
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xd50fd1f4
0000006b: EQ
0000006c: PUSH2 0x06bc
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xd6cd9473
00000076: EQ
00000077: PUSH2 0x06dc
0000007a: JUMPI
0000007b: PUSH2 0x02bb
0000007e: JUMP
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0xd0e30db0
00000086: GT
00000087: PUSH2 0x00b0
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0xd0e30db0
00000091: EQ
00000092: PUSH2 0x0674
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xd121b696
0000009c: EQ
0000009d: PUSH2 0x067c
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xd29ab55b
000000a7: EQ
000000a8: PUSH2 0x069c
000000ab: JUMPI
000000ac: PUSH2 0x02bb
000000af: JUMP
000000b0: JUMPDEST
000000b1: DUP1
000000b2: PUSH4 0xca44f465
000000b7: EQ
000000b8: PUSH2 0x064a
000000bb: JUMPI
000000bc: DUP1
000000bd: PUSH4 0xd0134296
000000c2: EQ
000000c3: PUSH2 0x065f
000000c6: JUMPI
000000c7: PUSH2 0x02bb
000000ca: JUMP
000000cb: JUMPDEST
000000cc: DUP1
000000cd: PUSH4 0x8456cb59
000000d2: GT
000000d3: PUSH2 0x0122
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0xa971a0ad
000000dd: GT
000000de: PUSH2 0x0107
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0xa971a0ad
000000e8: EQ
000000e9: PUSH2 0x05ea
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0xbb5f747b
000000f3: EQ
000000f4: PUSH2 0x060a
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0xbba15758
000000fe: EQ
000000ff: PUSH2 0x062a
00000102: JUMPI
00000103: PUSH2 0x02bb
00000106: JUMP
00000107: JUMPDEST
00000108: DUP1
00000109: PUSH4 0x8456cb59
0000010e: EQ
0000010f: PUSH2 0x05b5
00000112: JUMPI
00000113: DUP1
00000114: PUSH4 0x97833876
00000119: EQ
0000011a: PUSH2 0x05ca
0000011d: JUMPI
0000011e: PUSH2 0x02bb
00000121: JUMP
00000122: JUMPDEST
00000123: DUP1
00000124: PUSH4 0x7362d9c8
00000129: GT
0000012a: PUSH2 0x0153
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0x7362d9c8
00000134: EQ
00000135: PUSH2 0x0555
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0x82dc1ec4
0000013f: EQ
00000140: PUSH2 0x0575
00000143: JUMPI
00000144: DUP1
00000145: PUSH4 0x83453832
0000014a: EQ
0000014b: PUSH2 0x0595
0000014e: JUMPI
0000014f: PUSH2 0x02bb
00000152: JUMP
00000153: JUMPDEST
00000154: DUP1
00000155: PUSH4 0x6be13c92
0000015a: EQ
0000015b: PUSH2 0x052b
0000015e: JUMPI
0000015f: DUP1
00000160: PUSH4 0x6ef8d66d
00000165: EQ
00000166: PUSH2 0x0540
00000169: JUMPI
0000016a: PUSH2 0x02bb
0000016d: JUMP
0000016e: JUMPDEST
0000016f: DUP1
00000170: PUSH4 0x291d9549
00000175: GT
00000176: PUSH2 0x021c
00000179: JUMPI
0000017a: DUP1
0000017b: PUSH4 0x4c5a628c
00000180: GT
00000181: PUSH2 0x01d0
00000184: JUMPI
00000185: DUP1
00000186: PUSH4 0x5c975abb
0000018b: GT
0000018c: PUSH2 0x01b5
0000018f: JUMPI
00000190: DUP1
00000191: PUSH4 0x5c975abb
00000196: EQ
00000197: PUSH2 0x04e1
0000019a: JUMPI
0000019b: DUP1
0000019c: PUSH4 0x638900e1
000001a1: EQ
000001a2: PUSH2 0x04f6
000001a5: JUMPI
000001a6: DUP1
000001a7: PUSH4 0x65481ff7
000001ac: EQ
000001ad: PUSH2 0x050b
000001b0: JUMPI
000001b1: PUSH2 0x02bb
000001b4: JUMP
000001b5: JUMPDEST
000001b6: DUP1
000001b7: PUSH4 0x4c5a628c
000001bc: EQ
000001bd: PUSH2 0x04b7
000001c0: JUMPI
000001c1: DUP1
000001c2: PUSH4 0x5c60da1b
000001c7: EQ
000001c8: PUSH2 0x04cc
000001cb: JUMPI
000001cc: PUSH2 0x02bb
000001cf: JUMP
000001d0: JUMPDEST
000001d1: DUP1
000001d2: PUSH4 0x3af32abf
000001d7: GT
000001d8: PUSH2 0x0201
000001db: JUMPI
000001dc: DUP1
000001dd: PUSH4 0x3af32abf
000001e2: EQ
000001e3: PUSH2 0x0462
000001e6: JUMPI
000001e7: DUP1
000001e8: PUSH4 0x3f4ba83a
000001ed: EQ
000001ee: PUSH2 0x0482
000001f1: JUMPI
000001f2: DUP1
000001f3: PUSH4 0x46fbf68e
000001f8: EQ
000001f9: PUSH2 0x0497
000001fc: JUMPI
000001fd: PUSH2 0x02bb
00000200: JUMP
00000201: JUMPDEST
00000202: DUP1
00000203: PUSH4 0x291d9549
00000208: EQ
00000209: PUSH2 0x0422
0000020c: JUMPI
0000020d: DUP1
0000020e: PUSH4 0x35c80c8c
00000213: EQ
00000214: PUSH2 0x0442
00000217: JUMPI
00000218: PUSH2 0x02bb
0000021b: JUMP
0000021c: JUMPDEST
0000021d: DUP1
0000021e: PUSH4 0x1761d7ce
00000223: GT
00000224: PUSH2 0x0273
00000227: JUMPI
00000228: DUP1
00000229: PUSH4 0x2299bda6
0000022e: GT
0000022f: PUSH2 0x0258
00000232: JUMPI
00000233: DUP1
00000234: PUSH4 0x2299bda6
00000239: EQ
0000023a: PUSH2 0x03b5
0000023d: JUMPI
0000023e: DUP1
0000023f: PUSH4 0x243aa7c9
00000244: EQ
00000245: PUSH2 0x03e2
00000248: JUMPI
00000249: DUP1
0000024a: PUSH4 0x26f589ff
0000024f: EQ
00000250: PUSH2 0x0402
00000253: JUMPI
00000254: PUSH2 0x02bb
00000257: JUMP
00000258: JUMPDEST
00000259: DUP1
0000025a: PUSH4 0x1761d7ce
0000025f: EQ
00000260: PUSH2 0x035d
00000263: JUMPI
00000264: DUP1
00000265: PUSH4 0x1f61aebe
0000026a: EQ
0000026b: PUSH2 0x0393
0000026e: JUMPI
0000026f: PUSH2 0x02bb
00000272: JUMP
00000273: JUMPDEST
00000274: DUP1
00000275: PUSH4 0x0c660be4
0000027a: GT
0000027b: PUSH2 0x02a4
0000027e: JUMPI
0000027f: DUP1
00000280: PUSH4 0x0c660be4
00000285: EQ
00000286: PUSH2 0x02fd
00000289: JUMPI
0000028a: DUP1
0000028b: PUSH4 0x10154bad
00000290: EQ
00000291: PUSH2 0x031d
00000294: JUMPI
00000295: DUP1
00000296: PUSH4 0x11eaf601
0000029b: EQ
0000029c: PUSH2 0x033d
0000029f: JUMPI
000002a0: PUSH2 0x02bb
000002a3: JUMP
000002a4: JUMPDEST
000002a5: DUP1
000002a6: PUSH4 0x06087e5b
000002ab: EQ
000002ac: PUSH2 0x02bd
000002af: JUMPI
000002b0: DUP1
000002b1: PUSH4 0x0ad3aa19
000002b6: EQ
000002b7: PUSH2 0x02dd
000002ba: JUMPI
000002bb: JUMPDEST
000002bc: STOP
000002bd: JUMPDEST
000002be: CALLVALUE
000002bf: DUP1
000002c0: ISZERO
000002c1: PUSH2 0x02c9
000002c4: JUMPI
000002c5: PUSH1 0x00
000002c7: DUP1
000002c8: REVERT
000002c9: JUMPDEST
000002ca: POP
000002cb: PUSH2 0x02bb
000002ce: PUSH2 0x02d8
000002d1: CALLDATASIZE
000002d2: PUSH1 0x04
000002d4: PUSH2 0x2278
000002d7: JUMP
000002d8: JUMPDEST
000002d9: PUSH2 0x0751
000002dc: JUMP
000002dd: JUMPDEST
000002de: CALLVALUE
000002df: DUP1
000002e0: ISZERO
000002e1: PUSH2 0x02e9
000002e4: JUMPI
000002e5: PUSH1 0x00
000002e7: DUP1
000002e8: REVERT
000002e9: JUMPDEST
000002ea: POP
000002eb: PUSH2 0x02bb
000002ee: PUSH2 0x02f8
000002f1: CALLDATASIZE
000002f2: PUSH1 0x04
000002f4: PUSH2 0x234d
000002f7: JUMP
000002f8: JUMPDEST
000002f9: PUSH2 0x0790
000002fc: JUMP
000002fd: JUMPDEST
000002fe: CALLVALUE
000002ff: DUP1
00000300: ISZERO
00000301: PUSH2 0x0309
00000304: JUMPI
00000305: PUSH1 0x00
00000307: DUP1
00000308: REVERT
00000309: JUMPDEST
0000030a: POP
0000030b: PUSH2 0x02bb
0000030e: PUSH2 0x0318
00000311: CALLDATASIZE
00000312: PUSH1 0x04
00000314: PUSH2 0x246e
00000317: JUMP
00000318: JUMPDEST
00000319: PUSH2 0x0ade
0000031c: JUMP
0000031d: JUMPDEST
0000031e: CALLVALUE
0000031f: DUP1
00000320: ISZERO
00000321: PUSH2 0x0329
00000324: JUMPI
00000325: PUSH1 0x00
00000327: DUP1
00000328: REVERT
00000329: JUMPDEST
0000032a: POP
0000032b: PUSH2 0x02bb
0000032e: PUSH2 0x0338
00000331: CALLDATASIZE
00000332: PUSH1 0x04
00000334: PUSH2 0x2278
00000337: JUMP
00000338: JUMPDEST
00000339: PUSH2 0x0b12
0000033c: JUMP
0000033d: JUMPDEST
0000033e: CALLVALUE
0000033f: DUP1
00000340: ISZERO
00000341: PUSH2 0x0349
00000344: JUMPI
00000345: PUSH1 0x00
00000347: DUP1
00000348: REVERT
00000349: JUMPDEST
0000034a: POP
0000034b: PUSH2 0x02bb
0000034e: PUSH2 0x0358
00000351: CALLDATASIZE
00000352: PUSH1 0x04
00000354: PUSH2 0x2296
00000357: JUMP
00000358: JUMPDEST
00000359: PUSH2 0x0b45
0000035c: JUMP
0000035d: JUMPDEST
0000035e: CALLVALUE
0000035f: DUP1
00000360: ISZERO
00000361: PUSH2 0x0369
00000364: JUMPI
00000365: PUSH1 0x00
00000367: DUP1
00000368: REVERT
00000369: JUMPDEST
0000036a: POP
0000036b: PUSH2 0x037d
0000036e: PUSH2 0x0378
00000371: CALLDATASIZE
00000372: PUSH1 0x04
00000374: PUSH2 0x2278
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH2 0x1062
0000037c: JUMP
0000037d: JUMPDEST
0000037e: PUSH1 0x40
00000380: MLOAD
00000381: PUSH2 0x038a
00000384: SWAP2
00000385: SWAP1
00000386: PUSH2 0x2fcb
00000389: JUMP
0000038a: JUMPDEST
0000038b: PUSH1 0x40
0000038d: MLOAD
0000038e: DUP1
0000038f: SWAP2
00000390: SUB
00000391: SWAP1
00000392: RETURN
00000393: JUMPDEST
00000394: CALLVALUE
00000395: DUP1
00000396: ISZERO
00000397: PUSH2 0x039f
0000039a: JUMPI
0000039b: PUSH1 0x00
0000039d: DUP1
0000039e: REVERT
0000039f: JUMPDEST
000003a0: POP
000003a1: PUSH2 0x03a8
000003a4: PUSH2 0x1077
000003a7: JUMP
000003a8: JUMPDEST
000003a9: PUSH1 0x40
000003ab: MLOAD
000003ac: PUSH2 0x038a
000003af: SWAP2
000003b0: SWAP1
000003b1: PUSH2 0x31a8
000003b4: JUMP
000003b5: JUMPDEST
000003b6: CALLVALUE
000003b7: DUP1
000003b8: ISZERO
000003b9: PUSH2 0x03c1
000003bc: JUMPI
000003bd: PUSH1 0x00
000003bf: DUP1
000003c0: REVERT
000003c1: JUMPDEST
000003c2: POP
000003c3: PUSH2 0x03d5
000003c6: PUSH2 0x03d0
000003c9: CALLDATASIZE
000003ca: PUSH1 0x04
000003cc: PUSH2 0x2576
000003cf: JUMP
000003d0: JUMPDEST
000003d1: PUSH2 0x107d
000003d4: JUMP
000003d5: JUMPDEST
000003d6: PUSH1 0x40
000003d8: MLOAD
000003d9: PUSH2 0x038a
000003dc: SWAP2
000003dd: SWAP1
000003de: PUSH2 0x2ef5
000003e1: JUMP
000003e2: JUMPDEST
000003e3: CALLVALUE
000003e4: DUP1
000003e5: ISZERO
000003e6: PUSH2 0x03ee
000003e9: JUMPI
000003ea: PUSH1 0x00
000003ec: DUP1
000003ed: REVERT
000003ee: JUMPDEST
000003ef: POP
000003f0: PUSH2 0x02bb
000003f3: PUSH2 0x03fd
000003f6: CALLDATASIZE
000003f7: PUSH1 0x04
000003f9: PUSH2 0x24d7
000003fc: JUMP
000003fd: JUMPDEST
000003fe: PUSH2 0x10a4
00000401: JUMP
00000402: JUMPDEST
00000403: CALLVALUE
00000404: DUP1
00000405: ISZERO
00000406: PUSH2 0x040e
00000409: JUMPI
0000040a: PUSH1 0x00
0000040c: DUP1
0000040d: REVERT
0000040e: JUMPDEST
0000040f: POP
00000410: PUSH2 0x02bb
00000413: PUSH2 0x041d
00000416: CALLDATASIZE
00000417: PUSH1 0x04
00000419: PUSH2 0x23f5
0000041c: JUMP
0000041d: JUMPDEST
0000041e: PUSH2 0x1152
00000421: JUMP
00000422: JUMPDEST
00000423: CALLVALUE
00000424: DUP1
00000425: ISZERO
00000426: PUSH2 0x042e
00000429: JUMPI
0000042a: PUSH1 0x00
0000042c: DUP1
0000042d: REVERT
0000042e: JUMPDEST
0000042f: POP
00000430: PUSH2 0x02bb
00000433: PUSH2 0x043d
00000436: CALLDATASIZE
00000437: PUSH1 0x04
00000439: PUSH2 0x2278
0000043c: JUMP
0000043d: JUMPDEST
0000043e: PUSH2 0x13e5
00000441: JUMP
00000442: JUMPDEST
00000443: CALLVALUE
00000444: DUP1
00000445: ISZERO
00000446: PUSH2 0x044e
00000449: JUMPI
0000044a: PUSH1 0x00
0000044c: DUP1
0000044d: REVERT
0000044e: JUMPDEST
0000044f: POP
00000450: PUSH2 0x037d
00000453: PUSH2 0x045d
00000456: CALLDATASIZE
00000457: PUSH1 0x04
00000459: PUSH2 0x2278
0000045c: JUMP
0000045d: JUMPDEST
0000045e: PUSH2 0x1415
00000461: JUMP
00000462: JUMPDEST
00000463: CALLVALUE
00000464: DUP1
00000465: ISZERO
00000466: PUSH2 0x046e
00000469: JUMPI
0000046a: PUSH1 0x00
0000046c: DUP1
0000046d: REVERT
0000046e: JUMPDEST
0000046f: POP
00000470: PUSH2 0x037d
00000473: PUSH2 0x047d
00000476: CALLDATASIZE
00000477: PUSH1 0x04
00000479: PUSH2 0x2278
0000047c: JUMP
0000047d: JUMPDEST
0000047e: PUSH2 0x146e
00000481: JUMP
00000482: JUMPDEST
00000483: CALLVALUE
00000484: DUP1
00000485: ISZERO
00000486: PUSH2 0x048e
00000489: JUMPI
0000048a: PUSH1 0x00
0000048c: DUP1
0000048d: REVERT
0000048e: JUMPDEST
0000048f: POP
00000490: PUSH2 0x02bb
00000493: PUSH2 0x1487
00000496: JUMP
00000497: JUMPDEST
00000498: CALLVALUE
00000499: DUP1
0000049a: ISZERO
0000049b: PUSH2 0x04a3
0000049e: JUMPI
0000049f: PUSH1 0x00
000004a1: DUP1
000004a2: REVERT
000004a3: JUMPDEST
000004a4: POP
000004a5: PUSH2 0x037d
000004a8: PUSH2 0x04b2
000004ab: CALLDATASIZE
000004ac: PUSH1 0x04
000004ae: PUSH2 0x2278
000004b1: JUMP
000004b2: JUMPDEST
000004b3: PUSH2 0x151a
000004b6: JUMP
000004b7: JUMPDEST
000004b8: CALLVALUE
000004b9: DUP1
000004ba: ISZERO
000004bb: PUSH2 0x04c3
000004be: JUMPI
000004bf: PUSH1 0x00
000004c1: DUP1
000004c2: REVERT
000004c3: JUMPDEST
000004c4: POP
000004c5: PUSH2 0x02bb
000004c8: PUSH2 0x152d
000004cb: JUMP
000004cc: JUMPDEST
000004cd: CALLVALUE
000004ce: DUP1
000004cf: ISZERO
000004d0: PUSH2 0x04d8
000004d3: JUMPI
000004d4: PUSH1 0x00
000004d6: DUP1
000004d7: REVERT
000004d8: JUMPDEST
000004d9: POP
000004da: PUSH2 0x03d5
000004dd: PUSH2 0x153f
000004e0: JUMP
000004e1: JUMPDEST
000004e2: CALLVALUE
000004e3: DUP1
000004e4: ISZERO
000004e5: PUSH2 0x04ed
000004e8: JUMPI
000004e9: PUSH1 0x00
000004eb: DUP1
000004ec: REVERT
000004ed: JUMPDEST
000004ee: POP
000004ef: PUSH2 0x037d
000004f2: PUSH2 0x1564
000004f5: JUMP
000004f6: JUMPDEST
000004f7: CALLVALUE
000004f8: DUP1
000004f9: ISZERO
000004fa: PUSH2 0x0502
000004fd: JUMPI
000004fe: PUSH1 0x00
00000500: DUP1
00000501: REVERT
00000502: JUMPDEST
00000503: POP
00000504: PUSH2 0x03a8
00000507: PUSH2 0x156e
0000050a: JUMP
0000050b: JUMPDEST
0000050c: CALLVALUE
0000050d: DUP1
0000050e: ISZERO
0000050f: PUSH2 0x0517
00000512: JUMPI
00000513: PUSH1 0x00
00000515: DUP1
00000516: REVERT
00000517: JUMPDEST
00000518: POP
00000519: PUSH2 0x02bb
0000051c: PUSH2 0x0526
0000051f: CALLDATASIZE
00000520: PUSH1 0x04
00000522: PUSH2 0x23b2
00000525: JUMP
00000526: JUMPDEST
00000527: PUSH2 0x1574
0000052a: JUMP
0000052b: JUMPDEST
0000052c: CALLVALUE
0000052d: DUP1
0000052e: ISZERO
0000052f: PUSH2 0x0537
00000532: JUMPI
00000533: PUSH1 0x00
00000535: DUP1
00000536: REVERT
00000537: JUMPDEST
00000538: POP
00000539: PUSH2 0x03d5
0000053c: PUSH2 0x15c3
0000053f: JUMP
00000540: JUMPDEST
00000541: CALLVALUE
00000542: DUP1
00000543: ISZERO
00000544: PUSH2 0x054c
00000547: JUMPI
00000548: PUSH1 0x00
0000054a: DUP1
0000054b: REVERT
0000054c: JUMPDEST
0000054d: POP
0000054e: PUSH2 0x02bb
00000551: PUSH2 0x15d2
00000554: JUMP
00000555: JUMPDEST
00000556: CALLVALUE
00000557: DUP1
00000558: ISZERO
00000559: PUSH2 0x0561
0000055c: JUMPI
0000055d: PUSH1 0x00
0000055f: DUP1
00000560: REVERT
00000561: JUMPDEST
00000562: POP
00000563: PUSH2 0x02bb
00000566: PUSH2 0x0570
00000569: CALLDATASIZE
0000056a: PUSH1 0x04
0000056c: PUSH2 0x2278
0000056f: JUMP
00000570: JUMPDEST
00000571: PUSH2 0x15e2
00000574: JUMP
00000575: JUMPDEST
00000576: CALLVALUE
00000577: DUP1
00000578: ISZERO
00000579: PUSH2 0x0581
0000057c: JUMPI
0000057d: PUSH1 0x00
0000057f: DUP1
00000580: REVERT
00000581: JUMPDEST
00000582: POP
00000583: PUSH2 0x02bb
00000586: PUSH2 0x0590
00000589: CALLDATASIZE
0000058a: PUSH1 0x04
0000058c: PUSH2 0x2278
0000058f: JUMP
00000590: JUMPDEST
00000591: PUSH2 0x1612
00000594: JUMP
00000595: JUMPDEST
00000596: CALLVALUE
00000597: DUP1
00000598: ISZERO
00000599: PUSH2 0x05a1
0000059c: JUMPI
0000059d: PUSH1 0x00
0000059f: DUP1
000005a0: REVERT
000005a1: JUMPDEST
000005a2: POP
000005a3: PUSH2 0x02bb
000005a6: PUSH2 0x05b0
000005a9: CALLDATASIZE
000005aa: PUSH1 0x04
000005ac: PUSH2 0x2278
000005af: JUMP
000005b0: JUMPDEST
000005b1: PUSH2 0x1642
000005b4: JUMP
000005b5: JUMPDEST
000005b6: CALLVALUE
000005b7: DUP1
000005b8: ISZERO
000005b9: PUSH2 0x05c1
000005bc: JUMPI
000005bd: PUSH1 0x00
000005bf: DUP1
000005c0: REVERT
000005c1: JUMPDEST
000005c2: POP
000005c3: PUSH2 0x02bb
000005c6: PUSH2 0x1679
000005c9: JUMP
000005ca: JUMPDEST
000005cb: CALLVALUE
000005cc: DUP1
000005cd: ISZERO
000005ce: PUSH2 0x05d6
000005d1: JUMPI
000005d2: PUSH1 0x00
000005d4: DUP1
000005d5: REVERT
000005d6: JUMPDEST
000005d7: POP
000005d8: PUSH2 0x02bb
000005db: PUSH2 0x05e5
000005de: CALLDATASIZE
000005df: PUSH1 0x04
000005e1: PUSH2 0x2278
000005e4: JUMP
000005e5: JUMPDEST
000005e6: PUSH2 0x16f9
000005e9: JUMP
000005ea: JUMPDEST
000005eb: CALLVALUE
000005ec: DUP1
000005ed: ISZERO
000005ee: PUSH2 0x05f6
000005f1: JUMPI
000005f2: PUSH1 0x00
000005f4: DUP1
000005f5: REVERT
000005f6: JUMPDEST
000005f7: POP
000005f8: PUSH2 0x03a8
000005fb: PUSH2 0x0605
000005fe: CALLDATASIZE
000005ff: PUSH1 0x04
00000601: PUSH2 0x2278
00000604: JUMP
00000605: JUMPDEST
00000606: PUSH2 0x17b5
00000609: JUMP
0000060a: JUMPDEST
0000060b: CALLVALUE
0000060c: DUP1
0000060d: ISZERO
0000060e: PUSH2 0x0616
00000611: JUMPI
00000612: PUSH1 0x00
00000614: DUP1
00000615: REVERT
00000616: JUMPDEST
00000617: POP
00000618: PUSH2 0x037d
0000061b: PUSH2 0x0625
0000061e: CALLDATASIZE
0000061f: PUSH1 0x04
00000621: PUSH2 0x2278
00000624: JUMP
00000625: JUMPDEST
00000626: PUSH2 0x17c7
00000629: JUMP
0000062a: JUMPDEST
0000062b: CALLVALUE
0000062c: DUP1
0000062d: ISZERO
0000062e: PUSH2 0x0636
00000631: JUMPI
00000632: PUSH1 0x00
00000634: DUP1
00000635: REVERT
00000636: JUMPDEST
00000637: POP
00000638: PUSH2 0x02bb
0000063b: PUSH2 0x0645
0000063e: CALLDATASIZE
0000063f: PUSH1 0x04
00000641: PUSH2 0x250c
00000644: JUMP
00000645: JUMPDEST
00000646: PUSH2 0x17da
00000649: JUMP
0000064a: JUMPDEST
0000064b: CALLVALUE
0000064c: DUP1
0000064d: ISZERO
0000064e: PUSH2 0x0656
00000651: JUMPI
00000652: PUSH1 0x00
00000654: DUP1
00000655: REVERT
00000656: JUMPDEST
00000657: POP
00000658: PUSH2 0x02bb
0000065b: PUSH2 0x1882
0000065e: JUMP
0000065f: JUMPDEST
00000660: CALLVALUE
00000661: DUP1
00000662: ISZERO
00000663: PUSH2 0x066b
00000666: JUMPI
00000667: PUSH1 0x00
00000669: DUP1
0000066a: REVERT
0000066b: JUMPDEST
0000066c: POP
0000066d: PUSH2 0x03d5
00000670: PUSH2 0x18a7
00000673: JUMP
00000674: JUMPDEST
00000675: PUSH2 0x02bb
00000678: PUSH2 0x153d
0000067b: JUMP
0000067c: JUMPDEST
0000067d: CALLVALUE
0000067e: DUP1
0000067f: ISZERO
00000680: PUSH2 0x0688
00000683: JUMPI
00000684: PUSH1 0x00
00000686: DUP1
00000687: REVERT
00000688: JUMPDEST
00000689: POP
0000068a: PUSH2 0x03a8
0000068d: PUSH2 0x0697
00000690: CALLDATASIZE
00000691: PUSH1 0x04
00000693: PUSH2 0x2278
00000696: JUMP
00000697: JUMPDEST
00000698: PUSH2 0x18b6
0000069b: JUMP
0000069c: JUMPDEST
0000069d: CALLVALUE
0000069e: DUP1
0000069f: ISZERO
000006a0: PUSH2 0x06a8
000006a3: JUMPI
000006a4: PUSH1 0x00
000006a6: DUP1
000006a7: REVERT
000006a8: JUMPDEST
000006a9: POP
000006aa: PUSH2 0x02bb
000006ad: PUSH2 0x06b7
000006b0: CALLDATASIZE
000006b1: PUSH1 0x04
000006b3: PUSH2 0x2278
000006b6: JUMP
000006b7: JUMPDEST
000006b8: PUSH2 0x18c8
000006bb: JUMP
000006bc: JUMPDEST
000006bd: CALLVALUE
000006be: DUP1
000006bf: ISZERO
000006c0: PUSH2 0x06c8
000006c3: JUMPI
000006c4: PUSH1 0x00
000006c6: DUP1
000006c7: REVERT
000006c8: JUMPDEST
000006c9: POP
000006ca: PUSH2 0x03a8
000006cd: PUSH2 0x06d7
000006d0: CALLDATASIZE
000006d1: PUSH1 0x04
000006d3: PUSH2 0x2278
000006d6: JUMP
000006d7: JUMPDEST
000006d8: PUSH2 0x191a
000006db: JUMP
000006dc: JUMPDEST
000006dd: CALLVALUE
000006de: DUP1
000006df: ISZERO
000006e0: PUSH2 0x06e8
000006e3: JUMPI
000006e4: PUSH1 0x00
000006e6: DUP1
000006e7: REVERT
000006e8: JUMPDEST
000006e9: POP
000006ea: PUSH2 0x02bb
000006ed: PUSH2 0x192c
000006f0: JUMP
000006f1: JUMPDEST
000006f2: CALLVALUE
000006f3: DUP1
000006f4: ISZERO
000006f5: PUSH2 0x06fd
000006f8: JUMPI
000006f9: PUSH1 0x00
000006fb: DUP1
000006fc: REVERT
000006fd: JUMPDEST
000006fe: POP
000006ff: PUSH2 0x02bb
00000702: PUSH2 0x070c
00000705: CALLDATASIZE
00000706: PUSH1 0x04
00000708: PUSH2 0x2278
0000070b: JUMP
0000070c: JUMPDEST
0000070d: PUSH2 0x193c
00000710: JUMP
00000711: JUMPDEST
00000712: CALLVALUE
00000713: DUP1
00000714: ISZERO
00000715: PUSH2 0x071d
00000718: JUMPI
00000719: PUSH1 0x00
0000071b: DUP1
0000071c: REVERT
0000071d: JUMPDEST
0000071e: POP
0000071f: PUSH2 0x037d
00000722: PUSH2 0x072c
00000725: CALLDATASIZE
00000726: PUSH1 0x04
00000728: PUSH2 0x2541
0000072b: JUMP
0000072c: JUMPDEST
0000072d: PUSH2 0x1965
00000730: JUMP
00000731: JUMPDEST
00000732: CALLVALUE
00000733: DUP1
00000734: ISZERO
00000735: PUSH2 0x073d
00000738: JUMPI
00000739: PUSH1 0x00
0000073b: DUP1
0000073c: REVERT
0000073d: JUMPDEST
0000073e: POP
0000073f: PUSH2 0x03d5
00000742: PUSH2 0x074c
00000745: CALLDATASIZE
00000746: PUSH1 0x04
00000748: PUSH2 0x2576
0000074b: JUMP
0000074c: JUMPDEST
0000074d: PUSH2 0x1985
00000750: JUMP
00000751: JUMPDEST
00000752: PUSH2 0x0759
00000755: PUSH2 0x1992
00000758: JUMP
00000759: JUMPDEST
0000075a: PUSH2 0x0761
0000075d: PUSH2 0x19b7
00000760: JUMP
00000761: JUMPDEST
00000762: PUSH1 0x0b
00000764: DUP1
00000765: SLOAD
00000766: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000077b: NOT
0000077c: AND
0000077d: PUSH1 0x01
0000077f: PUSH1 0x01
00000781: PUSH1 0xa0
00000783: SHL
00000784: SUB
00000785: SWAP3
00000786: SWAP1
00000787: SWAP3
00000788: AND
00000789: SWAP2
0000078a: SWAP1
0000078b: SWAP2
0000078c: OR
0000078d: SWAP1
0000078e: SSTORE
0000078f: JUMP
00000790: JUMPDEST
00000791: PUSH1 0x00
00000793: SLOAD
00000794: PUSH1 0xff
00000796: AND
00000797: ISZERO
00000798: PUSH2 0x07bc
0000079b: JUMPI
0000079c: PUSH1 0x40
0000079e: MLOAD
0000079f: PUSH3 0x461bcd
000007a3: PUSH1 0xe5
000007a5: SHL
000007a6: DUP2
000007a7: MSTORE
000007a8: PUSH1 0x04
000007aa: ADD
000007ab: PUSH2 0x07b3
000007ae: SWAP1
000007af: PUSH2 0x3148
000007b2: JUMP
000007b3: JUMPDEST
000007b4: PUSH1 0x40
000007b6: MLOAD
000007b7: DUP1
000007b8: SWAP2
000007b9: SUB
000007ba: SWAP1
000007bb: REVERT
000007bc: JUMPDEST
000007bd: PUSH1 0x00
000007bf: DUP1
000007c0: SLOAD
000007c1: PUSH1 0xff
000007c3: NOT
000007c4: AND
000007c5: PUSH1 0x01
000007c7: OR
000007c8: SWAP1
000007c9: SSTORE
000007ca: PUSH2 0x07d1
000007cd: PUSH2 0x1882
000007d0: JUMP
000007d1: JUMPDEST
000007d2: PUSH1 0x01
000007d4: PUSH1 0x01
000007d6: PUSH1 0xa0
000007d8: SHL
000007d9: SUB
000007da: DUP4
000007db: AND
000007dc: PUSH1 0x00
000007de: SWAP1
000007df: DUP2
000007e0: MSTORE
000007e1: PUSH1 0x0d
000007e3: PUSH1 0x20
000007e5: MSTORE
000007e6: PUSH1 0x40
000007e8: SWAP1
000007e9: KECCAK256
000007ea: SLOAD
000007eb: PUSH2 0x0806
000007ee: JUMPI
000007ef: PUSH1 0x40
000007f1: MLOAD
000007f2: PUSH3 0x461bcd
000007f6: PUSH1 0xe5
000007f8: SHL
000007f9: DUP2
000007fa: MSTORE
000007fb: PUSH1 0x04
000007fd: ADD
000007fe: PUSH2 0x07b3
00000801: SWAP1
00000802: PUSH2 0x3098
00000805: JUMP
00000806: JUMPDEST
00000807: PUSH1 0x01
00000809: PUSH1 0x01
0000080b: PUSH1 0xa0
0000080d: SHL
0000080e: SUB
0000080f: DUP4
00000810: AND
00000811: PUSH1 0x00
00000813: SWAP1
00000814: DUP2
00000815: MSTORE
00000816: PUSH1 0x0a
00000818: PUSH1 0x20
0000081a: MSTORE
0000081b: PUSH1 0x40
0000081d: SWAP1
0000081e: KECCAK256
0000081f: SLOAD
00000820: DUP3
00000821: EQ
00000822: PUSH2 0x083d
00000825: JUMPI
00000826: PUSH1 0x40
00000828: MLOAD
00000829: PUSH3 0x461bcd
0000082d: PUSH1 0xe5
0000082f: SHL
00000830: DUP2
00000831: MSTORE
00000832: PUSH1 0x04
00000834: ADD
00000835: PUSH2 0x07b3
00000838: SWAP1
00000839: PUSH2 0x3108
0000083c: JUMP
0000083d: JUMPDEST
0000083e: PUSH2 0x0873
00000841: ADDRESS
00000842: DUP5
00000843: DUP5
00000844: PUSH1 0x40
00000846: MLOAD
00000847: PUSH1 0x20
00000849: ADD
0000084a: PUSH2 0x0855
0000084d: SWAP4
0000084e: SWAP3
0000084f: SWAP2
00000850: SWAP1
00000851: PUSH2 0x2e66
00000854: JUMP
00000855: JUMPDEST
00000856: PUSH1 0x40
00000858: MLOAD
00000859: PUSH1 0x20
0000085b: DUP2
0000085c: DUP4
0000085d: SUB
0000085e: SUB
0000085f: DUP2
00000860: MSTORE
00000861: SWAP1
00000862: PUSH1 0x40
00000864: MSTORE
00000865: DUP1
00000866: MLOAD
00000867: SWAP1
00000868: PUSH1 0x20
0000086a: ADD
0000086b: KECCAK256
0000086c: DUP3
0000086d: PUSH1 0x00
0000086f: PUSH2 0x19db
00000872: JUMP
00000873: JUMPDEST
00000874: PUSH1 0x01
00000876: PUSH1 0x01
00000878: PUSH1 0xa0
0000087a: SHL
0000087b: SUB
0000087c: DUP4
0000087d: AND
0000087e: PUSH1 0x00
00000880: DUP2
00000881: DUP2
00000882: MSTORE
00000883: PUSH1 0x0a
00000885: PUSH1 0x20
00000887: MSTORE
00000888: PUSH1 0x40
0000088a: SWAP1
0000088b: KECCAK256
0000088c: DUP1
0000088d: SLOAD
0000088e: PUSH1 0x01
00000890: ADD
00000891: SWAP1
00000892: SSTORE
00000893: PUSH2 0x095c
00000896: JUMPI
00000897: PUSH1 0x01
00000899: PUSH1 0x01
0000089b: PUSH1 0xa0
0000089d: SHL
0000089e: SUB
0000089f: DUP4
000008a0: AND
000008a1: PUSH1 0x00
000008a3: SWAP1
000008a4: DUP2
000008a5: MSTORE
000008a6: PUSH1 0x0d
000008a8: PUSH1 0x20
000008aa: MSTORE
000008ab: PUSH1 0x40
000008ad: SWAP1
000008ae: KECCAK256
000008af: SLOAD
000008b0: SELFBALANCE
000008b1: GT
000008b2: ISZERO
000008b3: PUSH2 0x0957
000008b6: JUMPI
000008b7: PUSH1 0x01
000008b9: PUSH1 0x01
000008bb: PUSH1 0xa0
000008bd: SHL
000008be: SUB
000008bf: DUP4
000008c0: AND
000008c1: PUSH1 0x00
000008c3: SWAP1
000008c4: DUP2
000008c5: MSTORE
000008c6: PUSH1 0x0d
000008c8: PUSH1 0x20
000008ca: MSTORE
000008cb: PUSH1 0x40
000008cd: DUP2
000008ce: KECCAK256
000008cf: SLOAD
000008d0: PUSH2 0x08e0
000008d3: SWAP1
000008d4: SELFBALANCE
000008d5: SWAP1
000008d6: PUSH4 0xffffffff
000008db: PUSH2 0x1bf0
000008de: AND
000008df: JUMP
000008e0: JUMPDEST
000008e1: PUSH1 0x0b
000008e3: SLOAD
000008e4: PUSH1 0x40
000008e6: MLOAD
000008e7: SWAP2
000008e8: SWAP3
000008e9: POP
000008ea: PUSH1 0x01
000008ec: PUSH1 0x01
000008ee: PUSH1 0xa0
000008f0: SHL
000008f1: SUB
000008f2: AND
000008f3: SWAP1
000008f4: DUP3
000008f5: ISZERO
000008f6: PUSH2 0x08fc
000008f9: MUL
000008fa: SWAP1
000008fb: DUP4
000008fc: SWAP1
000008fd: PUSH1 0x00
000008ff: DUP2
00000900: DUP2
00000901: DUP2
00000902: DUP6
00000903: DUP9
00000904: DUP9
00000905: CALL
00000906: SWAP4
00000907: POP
00000908: POP
00000909: POP
0000090a: POP
0000090b: ISZERO
0000090c: DUP1
0000090d: ISZERO
0000090e: PUSH2 0x091b
00000911: JUMPI
00000912: RETURNDATASIZE
00000913: PUSH1 0x00
00000915: DUP1
00000916: RETURNDATACOPY
00000917: RETURNDATASIZE
00000918: PUSH1 0x00
0000091a: REVERT
0000091b: JUMPDEST
0000091c: POP
0000091d: DUP1
0000091e: DUP4
0000091f: PUSH32 0x186661f41f6b7bc56a92ba66079ddc8d68c4d85ad16470441dd2e6e8f36a4458
00000940: DUP7
00000941: PUSH1 0x40
00000943: MLOAD
00000944: PUSH2 0x094d
00000947: SWAP2
00000948: SWAP1
00000949: PUSH2 0x2ef5
0000094c: JUMP
0000094d: JUMPDEST
0000094e: PUSH1 0x40
00000950: MLOAD
00000951: DUP1
00000952: SWAP2
00000953: SUB
00000954: SWAP1
00000955: LOG3
00000956: POP
00000957: JUMPDEST
00000958: PUSH2 0x0acf
0000095b: JUMP
0000095c: JUMPDEST
0000095d: PUSH1 0x40
0000095f: MLOAD
00000960: PUSH4 0x70a08231
00000965: PUSH1 0xe0
00000967: SHL
00000968: DUP2
00000969: MSTORE
0000096a: DUP4
0000096b: SWAP1
0000096c: PUSH1 0x00
0000096e: SWAP1
0000096f: PUSH1 0x01
00000971: PUSH1 0x01
00000973: PUSH1 0xa0
00000975: SHL
00000976: SUB
00000977: DUP4
00000978: AND
00000979: SWAP1
0000097a: PUSH4 0x70a08231
0000097f: SWAP1
00000980: PUSH2 0x098d
00000983: SWAP1
00000984: ADDRESS
00000985: SWAP1
00000986: PUSH1 0x04
00000988: ADD
00000989: PUSH2 0x2f03
0000098c: JUMP
0000098d: JUMPDEST
0000098e: PUSH1 0x20
00000990: PUSH1 0x40
00000992: MLOAD
00000993: DUP1
00000994: DUP4
00000995: SUB
00000996: DUP2
00000997: DUP7
00000998: DUP1
00000999: EXTCODESIZE
0000099a: ISZERO
0000099b: DUP1
0000099c: ISZERO
0000099d: PUSH2 0x09a5
000009a0: JUMPI
000009a1: PUSH1 0x00
000009a3: DUP1
000009a4: REVERT
000009a5: JUMPDEST
000009a6: POP
000009a7: GAS
000009a8: STATICCALL
000009a9: ISZERO
000009aa: DUP1
000009ab: ISZERO
000009ac: PUSH2 0x09b9
000009af: JUMPI
000009b0: RETURNDATASIZE
000009b1: PUSH1 0x00
000009b3: DUP1
000009b4: RETURNDATACOPY
000009b5: RETURNDATASIZE
000009b6: PUSH1 0x00
000009b8: REVERT
000009b9: JUMPDEST
000009ba: POP
000009bb: POP
000009bc: POP
000009bd: POP
000009be: PUSH1 0x40
000009c0: MLOAD
000009c1: RETURNDATASIZE
000009c2: PUSH1 0x1f
000009c4: NOT
000009c5: PUSH1 0x1f
000009c7: DUP3
000009c8: ADD
000009c9: AND
000009ca: DUP3
000009cb: ADD
000009cc: DUP1
000009cd: PUSH1 0x40
000009cf: MSTORE
000009d0: POP
000009d1: PUSH2 0x09dd
000009d4: SWAP2
000009d5: SWAP1
000009d6: DUP2
000009d7: ADD
000009d8: SWAP1
000009d9: PUSH2 0x2594
000009dc: JUMP
000009dd: JUMPDEST
000009de: PUSH1 0x01
000009e0: PUSH1 0x01
000009e2: PUSH1 0xa0
000009e4: SHL
000009e5: SUB
000009e6: DUP7
000009e7: AND
000009e8: PUSH1 0x00
000009ea: SWAP1
000009eb: DUP2
000009ec: MSTORE
000009ed: PUSH1 0x0d
000009ef: PUSH1 0x20
000009f1: MSTORE
000009f2: PUSH1 0x40
000009f4: SWAP1
000009f5: KECCAK256
000009f6: SLOAD
000009f7: SWAP1
000009f8: SWAP2
000009f9: POP
000009fa: DUP2
000009fb: GT
000009fc: ISZERO
000009fd: PUSH2 0x0acc
00000a00: JUMPI
00000a01: PUSH1 0x01
00000a03: PUSH1 0x01
00000a05: PUSH1 0xa0
00000a07: SHL
00000a08: SUB
00000a09: DUP6
00000a0a: AND
00000a0b: PUSH1 0x00
00000a0d: SWAP1
00000a0e: DUP2
00000a0f: MSTORE
00000a10: PUSH1 0x0d
00000a12: PUSH1 0x20
00000a14: MSTORE
00000a15: PUSH1 0x40
00000a17: DUP2
00000a18: KECCAK256
00000a19: SLOAD
00000a1a: PUSH2 0x0a2a
00000a1d: SWAP1
00000a1e: DUP4
00000a1f: SWAP1
00000a20: PUSH4 0xffffffff
00000a25: PUSH2 0x1bf0
00000a28: AND
00000a29: JUMP
00000a2a: JUMPDEST
00000a2b: PUSH1 0x0b
00000a2d: SLOAD
00000a2e: PUSH1 0x40
00000a30: MLOAD
00000a31: PUSH4 0xa9059cbb
00000a36: PUSH1 0xe0
00000a38: SHL
00000a39: DUP2
00000a3a: MSTORE
00000a3b: SWAP2
00000a3c: SWAP3
00000a3d: POP
00000a3e: PUSH1 0x01
00000a40: PUSH1 0x01
00000a42: PUSH1 0xa0
00000a44: SHL
00000a45: SUB
00000a46: DUP1
00000a47: DUP7
00000a48: AND
00000a49: SWAP3
00000a4a: PUSH4 0xa9059cbb
00000a4f: SWAP3
00000a50: PUSH2 0x0a5f
00000a53: SWAP3
00000a54: AND
00000a55: SWAP1
00000a56: DUP6
00000a57: SWAP1
00000a58: PUSH1 0x04
00000a5a: ADD
00000a5b: PUSH2 0x2f76
00000a5e: JUMP
00000a5f: JUMPDEST
00000a60: PUSH1 0x00
00000a62: PUSH1 0x40
00000a64: MLOAD
00000a65: DUP1
00000a66: DUP4
00000a67: SUB
00000a68: DUP2
00000a69: PUSH1 0x00
00000a6b: DUP8
00000a6c: DUP1
00000a6d: EXTCODESIZE
00000a6e: ISZERO
00000a6f: DUP1
00000a70: ISZERO
00000a71: PUSH2 0x0a79
00000a74: JUMPI
00000a75: PUSH1 0x00
00000a77: DUP1
00000a78: REVERT
00000a79: JUMPDEST
00000a7a: POP
00000a7b: GAS
00000a7c: CALL
00000a7d: ISZERO
00000a7e: DUP1
00000a7f: ISZERO
00000a80: PUSH2 0x0a8d
00000a83: JUMPI
00000a84: RETURNDATASIZE
00000a85: PUSH1 0x00
00000a87: DUP1
00000a88: RETURNDATACOPY
00000a89: RETURNDATASIZE
00000a8a: PUSH1 0x00
00000a8c: REVERT
00000a8d: JUMPDEST
00000a8e: POP
00000a8f: POP
00000a90: POP
00000a91: POP
00000a92: DUP1
00000a93: DUP6
00000a94: PUSH32 0x186661f41f6b7bc56a92ba66079ddc8d68c4d85ad16470441dd2e6e8f36a4458
00000ab5: DUP9
00000ab6: PUSH1 0x40
00000ab8: MLOAD
00000ab9: PUSH2 0x0ac2
00000abc: SWAP2
00000abd: SWAP1
00000abe: PUSH2 0x2ef5
00000ac1: JUMP
00000ac2: JUMPDEST
00000ac3: PUSH1 0x40
00000ac5: MLOAD
00000ac6: DUP1
00000ac7: SWAP2
00000ac8: SUB
00000ac9: SWAP1
00000aca: LOG3
00000acb: POP
00000acc: JUMPDEST
00000acd: POP
00000ace: POP
00000acf: JUMPDEST
00000ad0: POP
00000ad1: POP
00000ad2: PUSH1 0x00
00000ad4: DUP1
00000ad5: SLOAD
00000ad6: PUSH1 0xff
00000ad8: NOT
00000ad9: AND
00000ada: SWAP1
00000adb: SSTORE
00000adc: POP
00000add: JUMP
00000ade: JUMPDEST
00000adf: PUSH2 0x0ae6
00000ae2: PUSH2 0x1992
00000ae5: JUMP
00000ae6: JUMPDEST
00000ae7: DUP2
00000ae8: MLOAD
00000ae9: PUSH2 0x0af9
00000aec: SWAP1
00000aed: PUSH1 0x05
00000aef: SWAP1
00000af0: PUSH1 0x20
00000af2: DUP6
00000af3: ADD
00000af4: SWAP1
00000af5: PUSH2 0x202c
00000af8: JUMP
00000af9: JUMPDEST
00000afa: POP
00000afb: DUP1
00000afc: MLOAD
00000afd: PUSH2 0x0b0d
00000b00: SWAP1
00000b01: PUSH1 0x06
00000b03: SWAP1
00000b04: PUSH1 0x20
00000b06: DUP5
00000b07: ADD
00000b08: SWAP1
00000b09: PUSH2 0x202c
00000b0c: JUMP
00000b0d: JUMPDEST
00000b0e: POP
00000b0f: POP
00000b10: POP
00000b11: JUMP
00000b12: JUMPDEST
00000b13: PUSH2 0x0b1d
00000b16: PUSH2 0x0625
00000b19: PUSH2 0x1c39
00000b1c: JUMP
00000b1d: JUMPDEST
00000b1e: PUSH2 0x0b39
00000b21: JUMPI
00000b22: PUSH1 0x40
00000b24: MLOAD
00000b25: PUSH3 0x461bcd
00000b29: PUSH1 0xe5
00000b2b: SHL
00000b2c: DUP2
00000b2d: MSTORE
00000b2e: PUSH1 0x04
00000b30: ADD
00000b31: PUSH2 0x07b3
00000b34: SWAP1
00000b35: PUSH2 0x3128
00000b38: JUMP
00000b39: JUMPDEST
00000b3a: PUSH2 0x0b42
00000b3d: DUP2
00000b3e: PUSH2 0x1c3d
00000b41: JUMP
00000b42: JUMPDEST
00000b43: POP
00000b44: JUMP
00000b45: JUMPDEST
00000b46: PUSH1 0x00
00000b48: SLOAD
00000b49: PUSH1 0xff
00000b4b: AND
00000b4c: ISZERO
00000b4d: PUSH2 0x0b68
00000b50: JUMPI
00000b51: PUSH1 0x40
00000b53: MLOAD
00000b54: PUSH3 0x461bcd
00000b58: PUSH1 0xe5
00000b5a: SHL
00000b5b: DUP2
00000b5c: MSTORE
00000b5d: PUSH1 0x04
00000b5f: ADD
00000b60: PUSH2 0x07b3
00000b63: SWAP1
00000b64: PUSH2 0x3148
00000b67: JUMP
00000b68: JUMPDEST
00000b69: PUSH1 0x00
00000b6b: DUP1
00000b6c: SLOAD
00000b6d: PUSH1 0xff
00000b6f: NOT
00000b70: AND
00000b71: PUSH1 0x01
00000b73: OR
00000b74: SWAP1
00000b75: SSTORE
00000b76: PUSH2 0x0b7d
00000b79: PUSH2 0x1c85
00000b7c: JUMP
00000b7d: JUMPDEST
00000b7e: PUSH1 0x07
00000b80: DUP3
00000b81: PUSH1 0x40
00000b83: MLOAD
00000b84: PUSH2 0x0b8d
00000b87: SWAP2
00000b88: SWAP1
00000b89: PUSH2 0x2dc5
00000b8c: JUMP
00000b8d: JUMPDEST
00000b8e: SWAP1
00000b8f: DUP2
00000b90: MSTORE
00000b91: PUSH1 0x40
00000b93: MLOAD
00000b94: SWAP1
00000b95: DUP2
00000b96: SWAP1
00000b97: SUB
00000b98: PUSH1 0x20
00000b9a: ADD
00000b9b: SWAP1
00000b9c: KECCAK256
00000b9d: SLOAD
00000b9e: PUSH1 0xff
00000ba0: AND
00000ba1: ISZERO
00000ba2: PUSH2 0x0bbd
00000ba5: JUMPI
00000ba6: PUSH1 0x40
00000ba8: MLOAD
00000ba9: PUSH3 0x461bcd
00000bad: PUSH1 0xe5
00000baf: SHL
00000bb0: DUP2
00000bb1: MSTORE
00000bb2: PUSH1 0x04
00000bb4: ADD
00000bb5: PUSH2 0x07b3
00000bb8: SWAP1
00000bb9: PUSH2 0x30b8
00000bbc: JUMP
00000bbd: JUMPDEST
00000bbe: PUSH2 0x0be4
00000bc1: PUSH2 0x0bc8
00000bc4: PUSH2 0x1caa
00000bc7: JUMP
00000bc8: JUMPDEST
00000bc9: ADDRESS
00000bca: DUP9
00000bcb: DUP9
00000bcc: DUP9
00000bcd: DUP9
00000bce: DUP9
00000bcf: PUSH1 0x40
00000bd1: MLOAD
00000bd2: PUSH1 0x20
00000bd4: ADD
00000bd5: PUSH2 0x0855
00000bd8: SWAP8
00000bd9: SWAP7
00000bda: SWAP6
00000bdb: SWAP5
00000bdc: SWAP4
00000bdd: SWAP3
00000bde: SWAP2
00000bdf: SWAP1
00000be0: PUSH2 0x2e71
00000be3: JUMP
00000be4: JUMPDEST
00000be5: DUP4
00000be6: PUSH1 0x01
00000be8: PUSH1 0x01
00000bea: PUSH1 0xa0
00000bec: SHL
00000bed: SUB
00000bee: DUP8
00000bef: AND
00000bf0: PUSH2 0x0cf5
00000bf3: JUMPI
00000bf4: DUP4
00000bf5: SELFBALANCE
00000bf6: LT
00000bf7: ISZERO
00000bf8: PUSH2 0x0c13
00000bfb: JUMPI
00000bfc: PUSH1 0x40
00000bfe: MLOAD
00000bff: PUSH3 0x461bcd
00000c03: PUSH1 0xe5
00000c05: SHL
00000c06: DUP2
00000c07: MSTORE
00000c08: PUSH1 0x04
00000c0a: ADD
00000c0b: PUSH2 0x07b3
00000c0e: SWAP1
00000c0f: PUSH2 0x30a8
00000c12: JUMP
00000c13: JUMPDEST
00000c14: PUSH1 0x01
00000c16: PUSH1 0x01
00000c18: PUSH1 0xa0
00000c1a: SHL
00000c1b: SUB
00000c1c: DUP6
00000c1d: AND
00000c1e: PUSH1 0x00
00000c20: SWAP1
00000c21: DUP2
00000c22: MSTORE
00000c23: PUSH1 0x08
00000c25: PUSH1 0x20
00000c27: MSTORE
00000c28: PUSH1 0x40
00000c2a: SWAP1
00000c2b: KECCAK256
00000c2c: SLOAD
00000c2d: PUSH1 0xff
00000c2f: AND
00000c30: ISZERO
00000c31: PUSH2 0x0cb4
00000c34: JUMPI
00000c35: PUSH1 0x40
00000c37: MLOAD
00000c38: PUSH32 0x47e7ef2400000000000000000000000000000000000000000000000000000000
00000c59: DUP2
00000c5a: MSTORE
00000c5b: PUSH1 0x01
00000c5d: PUSH1 0x01
00000c5f: PUSH1 0xa0
00000c61: SHL
00000c62: SUB
00000c63: DUP7
00000c64: AND
00000c65: SWAP1
00000c66: PUSH4 0x47e7ef24
00000c6b: SWAP1
00000c6c: DUP7
00000c6d: SWAP1
00000c6e: PUSH2 0x0c7d
00000c71: SWAP1
00000c72: DUP11
00000c73: SWAP1
00000c74: DUP4
00000c75: SWAP1
00000c76: PUSH1 0x04
00000c78: ADD
00000c79: PUSH2 0x2f76
00000c7c: JUMP
00000c7d: JUMPDEST
00000c7e: PUSH1 0x00
00000c80: PUSH1 0x40
00000c82: MLOAD
00000c83: DUP1
00000c84: DUP4
00000c85: SUB
00000c86: DUP2
00000c87: DUP6
00000c88: DUP9
00000c89: DUP1
00000c8a: EXTCODESIZE
00000c8b: ISZERO
00000c8c: DUP1
00000c8d: ISZERO
00000c8e: PUSH2 0x0c96
00000c91: JUMPI
00000c92: PUSH1 0x00
00000c94: DUP1
00000c95: REVERT
00000c96: JUMPDEST
00000c97: POP
00000c98: GAS
00000c99: CALL
00000c9a: ISZERO
00000c9b: DUP1
00000c9c: ISZERO
00000c9d: PUSH2 0x0caa
00000ca0: JUMPI
00000ca1: RETURNDATASIZE
00000ca2: PUSH1 0x00
00000ca4: DUP1
00000ca5: RETURNDATACOPY
00000ca6: RETURNDATASIZE
00000ca7: PUSH1 0x00
00000ca9: REVERT
00000caa: JUMPDEST
00000cab: POP
00000cac: POP
00000cad: POP
00000cae: POP
00000caf: POP
00000cb0: PUSH2 0x0cf0
00000cb3: JUMP
00000cb4: JUMPDEST
00000cb5: PUSH1 0x40
00000cb7: MLOAD
00000cb8: PUSH1 0x01
00000cba: PUSH1 0x01
00000cbc: PUSH1 0xa0
00000cbe: SHL
00000cbf: SUB
00000cc0: DUP8
00000cc1: AND
00000cc2: SWAP1
00000cc3: DUP6
00000cc4: ISZERO
00000cc5: PUSH2 0x08fc
00000cc8: MUL
00000cc9: SWAP1
00000cca: DUP7
00000ccb: SWAP1
00000ccc: PUSH1 0x00
00000cce: DUP2
00000ccf: DUP2
00000cd0: DUP2
00000cd1: DUP6
00000cd2: DUP9
00000cd3: DUP9
00000cd4: CALL
00000cd5: SWAP4
00000cd6: POP
00000cd7: POP
00000cd8: POP
00000cd9: POP
00000cda: ISZERO
00000cdb: DUP1
00000cdc: ISZERO
00000cdd: PUSH2 0x0cea
00000ce0: JUMPI
00000ce1: RETURNDATASIZE
00000ce2: PUSH1 0x00
00000ce4: DUP1
00000ce5: RETURNDATACOPY
00000ce6: RETURNDATASIZE
00000ce7: PUSH1 0x00
00000ce9: REVERT
00000cea: JUMPDEST
00000ceb: POP
00000cec: PUSH1 0x00
00000cee: SWAP1
00000cef: POP
00000cf0: JUMPDEST
00000cf1: PUSH2 0x0fc8
00000cf4: JUMP
00000cf5: JUMPDEST
00000cf6: PUSH1 0x40
00000cf8: MLOAD
00000cf9: PUSH4 0x70a08231
00000cfe: PUSH1 0xe0
00000d00: SHL
00000d01: DUP2
00000d02: MSTORE
00000d03: DUP8
00000d04: SWAP1
00000d05: DUP6
00000d06: SWAP1
00000d07: PUSH1 0x01
00000d09: PUSH1 0x01
00000d0b: PUSH1 0xa0
00000d0d: SHL
00000d0e: SUB
00000d0f: DUP4
00000d10: AND
00000d11: SWAP1
00000d12: PUSH4 0x70a08231
00000d17: SWAP1
00000d18: PUSH2 0x0d25
00000d1b: SWAP1
00000d1c: ADDRESS
00000d1d: SWAP1
00000d1e: PUSH1 0x04
00000d20: ADD
00000d21: PUSH2 0x2f03
00000d24: JUMP
00000d25: JUMPDEST
00000d26: PUSH1 0x20
00000d28: PUSH1 0x40
00000d2a: MLOAD
00000d2b: DUP1
00000d2c: DUP4
00000d2d: SUB
00000d2e: DUP2
00000d2f: DUP7
00000d30: DUP1
00000d31: EXTCODESIZE
00000d32: ISZERO
00000d33: DUP1
00000d34: ISZERO
00000d35: PUSH2 0x0d3d
00000d38: JUMPI
00000d39: PUSH1 0x00
00000d3b: DUP1
00000d3c: REVERT
00000d3d: JUMPDEST
00000d3e: POP
00000d3f: GAS
00000d40: STATICCALL
00000d41: ISZERO
00000d42: DUP1
00000d43: ISZERO
00000d44: PUSH2 0x0d51
00000d47: JUMPI
00000d48: RETURNDATASIZE
00000d49: PUSH1 0x00
00000d4b: DUP1
00000d4c: RETURNDATACOPY
00000d4d: RETURNDATASIZE
00000d4e: PUSH1 0x00
00000d50: REVERT
00000d51: JUMPDEST
00000d52: POP
00000d53: POP
00000d54: POP
00000d55: POP
00000d56: PUSH1 0x40
00000d58: MLOAD
00000d59: RETURNDATASIZE
00000d5a: PUSH1 0x1f
00000d5c: NOT
00000d5d: PUSH1 0x1f
00000d5f: DUP3
00000d60: ADD
00000d61: AND
00000d62: DUP3
00000d63: ADD
00000d64: DUP1
00000d65: PUSH1 0x40
00000d67: MSTORE
00000d68: POP
00000d69: PUSH2 0x0d75
00000d6c: SWAP2
00000d6d: SWAP1
00000d6e: DUP2
00000d6f: ADD
00000d70: SWAP1
00000d71: PUSH2 0x2594
00000d74: JUMP
00000d75: JUMPDEST
00000d76: LT
00000d77: ISZERO
00000d78: PUSH2 0x0d93
00000d7b: JUMPI
00000d7c: PUSH1 0x40
00000d7e: MLOAD
00000d7f: PUSH3 0x461bcd
00000d83: PUSH1 0xe5
00000d85: SHL
00000d86: DUP2
00000d87: MSTORE
00000d88: PUSH1 0x04
00000d8a: ADD
00000d8b: PUSH2 0x07b3
00000d8e: SWAP1
00000d8f: PUSH2 0x30a8
00000d92: JUMP
00000d93: JUMPDEST
00000d94: PUSH1 0x01
00000d96: PUSH1 0x01
00000d98: PUSH1 0xa0
00000d9a: SHL
00000d9b: SUB
00000d9c: DUP7
00000d9d: AND
00000d9e: PUSH1 0x00
00000da0: SWAP1
00000da1: DUP2
00000da2: MSTORE
00000da3: PUSH1 0x08
00000da5: PUSH1 0x20
00000da7: MSTORE
00000da8: PUSH1 0x40
00000daa: SWAP1
00000dab: KECCAK256
00000dac: SLOAD
00000dad: PUSH1 0xff
00000daf: AND
00000db0: ISZERO
00000db1: PUSH2 0x0f61
00000db4: JUMPI
00000db5: PUSH1 0x40
00000db7: MLOAD
00000db8: PUSH32 0x095ea7b300000000000000000000000000000000000000000000000000000000
00000dd9: DUP2
00000dda: MSTORE
00000ddb: PUSH1 0x01
00000ddd: PUSH1 0x01
00000ddf: PUSH1 0xa0
00000de1: SHL
00000de2: SUB
00000de3: DUP3
00000de4: AND
00000de5: SWAP1
00000de6: PUSH4 0x095ea7b3
00000deb: SWAP1
00000dec: PUSH2 0x0dfb
00000def: SWAP1
00000df0: DUP10
00000df1: SWAP1
00000df2: DUP10
00000df3: SWAP1
00000df4: PUSH1 0x04
00000df6: ADD
00000df7: PUSH2 0x2f76
00000dfa: JUMP
00000dfb: JUMPDEST
00000dfc: PUSH1 0x00
00000dfe: PUSH1 0x40
00000e00: MLOAD
00000e01: DUP1
00000e02: DUP4
00000e03: SUB
00000e04: DUP2
00000e05: PUSH1 0x00
00000e07: DUP8
00000e08: DUP1
00000e09: EXTCODESIZE
00000e0a: ISZERO
00000e0b: DUP1
00000e0c: ISZERO
00000e0d: PUSH2 0x0e15
00000e10: JUMPI
00000e11: PUSH1 0x00
00000e13: DUP1
00000e14: REVERT
00000e15: JUMPDEST
00000e16: POP
00000e17: GAS
00000e18: CALL
00000e19: ISZERO
00000e1a: DUP1
00000e1b: ISZERO
00000e1c: PUSH2 0x0e29
00000e1f: JUMPI
00000e20: RETURNDATASIZE
00000e21: PUSH1 0x00
00000e23: DUP1
00000e24: RETURNDATACOPY
00000e25: RETURNDATASIZE
00000e26: PUSH1 0x00
00000e28: REVERT
00000e29: JUMPDEST
00000e2a: POP
00000e2b: POP
00000e2c: PUSH1 0x40
00000e2e: MLOAD
00000e2f: PUSH32 0x9d57558200000000000000000000000000000000000000000000000000000000
00000e50: DUP2
00000e51: MSTORE
00000e52: PUSH1 0x01
00000e54: PUSH1 0x01
00000e56: PUSH1 0xa0
00000e58: SHL
00000e59: SUB
00000e5a: DUP10
00000e5b: AND
00000e5c: SWAP3
00000e5d: POP
00000e5e: PUSH4 0x9d575582
00000e63: SWAP2
00000e64: POP
00000e65: PUSH2 0x0e76
00000e68: SWAP1
00000e69: DUP11
00000e6a: SWAP1
00000e6b: DUP10
00000e6c: SWAP1
00000e6d: DUP14
00000e6e: SWAP1
00000e6f: PUSH1 0x04
00000e71: ADD
00000e72: PUSH2 0x2f84
00000e75: JUMP
00000e76: JUMPDEST
00000e77: PUSH1 0x00
00000e79: PUSH1 0x40
00000e7b: MLOAD
00000e7c: DUP1
00000e7d: DUP4
00000e7e: SUB
00000e7f: DUP2
00000e80: PUSH1 0x00
00000e82: DUP8
00000e83: DUP1
00000e84: EXTCODESIZE
00000e85: ISZERO
00000e86: DUP1
00000e87: ISZERO
00000e88: PUSH2 0x0e90
00000e8b: JUMPI
00000e8c: PUSH1 0x00
00000e8e: DUP1
00000e8f: REVERT
00000e90: JUMPDEST
00000e91: POP
00000e92: GAS
00000e93: CALL
00000e94: ISZERO
00000e95: DUP1
00000e96: ISZERO
00000e97: PUSH2 0x0ea4
00000e9a: JUMPI
00000e9b: RETURNDATASIZE
00000e9c: PUSH1 0x00
00000e9e: DUP1
00000e9f: RETURNDATACOPY
00000ea0: RETURNDATASIZE
00000ea1: PUSH1 0x00
00000ea3: REVERT
00000ea4: JUMPDEST
00000ea5: POP
00000ea6: POP
00000ea7: PUSH1 0x40
00000ea9: MLOAD
00000eaa: PUSH32 0xdd62ed3e00000000000000000000000000000000000000000000000000000000
00000ecb: DUP2
00000ecc: MSTORE
00000ecd: PUSH1 0x01
00000ecf: PUSH1 0x01
00000ed1: PUSH1 0xa0
00000ed3: SHL
00000ed4: SUB
00000ed5: DUP5
00000ed6: AND
00000ed7: SWAP3
00000ed8: POP
00000ed9: PUSH4 0xdd62ed3e
00000ede: SWAP2
00000edf: POP
00000ee0: PUSH2 0x0eef
00000ee3: SWAP1
00000ee4: ADDRESS
00000ee5: SWAP1
00000ee6: DUP11
00000ee7: SWAP1
00000ee8: PUSH1 0x04
00000eea: ADD
00000eeb: PUSH2 0x2f11
00000eee: JUMP
00000eef: JUMPDEST
00000ef0: PUSH1 0x20
00000ef2: PUSH1 0x40
00000ef4: MLOAD
00000ef5: DUP1
00000ef6: DUP4
00000ef7: SUB
00000ef8: DUP2
00000ef9: DUP7
00000efa: DUP1
00000efb: EXTCODESIZE
00000efc: ISZERO
00000efd: DUP1
00000efe: ISZERO
00000eff: PUSH2 0x0f07
00000f02: JUMPI
00000f03: PUSH1 0x00
00000f05: DUP1
00000f06: REVERT
00000f07: JUMPDEST
00000f08: POP
00000f09: GAS
00000f0a: STATICCALL
00000f0b: ISZERO
00000f0c: DUP1
00000f0d: ISZERO
00000f0e: PUSH2 0x0f1b
00000f11: JUMPI
00000f12: RETURNDATASIZE
00000f13: PUSH1 0x00
00000f15: DUP1
00000f16: RETURNDATACOPY
00000f17: RETURNDATASIZE
00000f18: PUSH1 0x00
00000f1a: REVERT
00000f1b: JUMPDEST
00000f1c: POP
00000f1d: POP
00000f1e: POP
00000f1f: POP
00000f20: PUSH1 0x40
00000f22: MLOAD
00000f23: RETURNDATASIZE
00000f24: PUSH1 0x1f
00000f26: NOT
00000f27: PUSH1 0x1f
00000f29: DUP3
00000f2a: ADD
00000f2b: AND
00000f2c: DUP3
00000f2d: ADD
00000f2e: DUP1
00000f2f: PUSH1 0x40
00000f31: MSTORE
00000f32: POP
00000f33: PUSH2 0x0f3f
00000f36: SWAP2
00000f37: SWAP1
00000f38: DUP2
00000f39: ADD
00000f3a: SWAP1
00000f3b: PUSH2 0x2594
00000f3e: JUMP
00000f3f: JUMPDEST
00000f40: ISZERO
00000f41: PUSH2 0x0f5c
00000f44: JUMPI
00000f45: PUSH1 0x40
00000f47: MLOAD
00000f48: PUSH3 0x461bcd
00000f4c: PUSH1 0xe5
00000f4e: SHL
00000f4f: DUP2
00000f50: MSTORE
00000f51: PUSH1 0x04
00000f53: ADD
00000f54: PUSH2 0x07b3
00000f57: SWAP1
00000f58: PUSH2 0x3058
00000f5b: JUMP
00000f5c: JUMPDEST
00000f5d: PUSH2 0x0fc6
00000f60: JUMP
00000f61: JUMPDEST
00000f62: PUSH1 0x40
00000f64: MLOAD
00000f65: PUSH4 0xa9059cbb
00000f6a: PUSH1 0xe0
00000f6c: SHL
00000f6d: DUP2
00000f6e: MSTORE
00000f6f: PUSH1 0x01
00000f71: PUSH1 0x01
00000f73: PUSH1 0xa0
00000f75: SHL
00000f76: SUB
00000f77: DUP3
00000f78: AND
00000f79: SWAP1
00000f7a: PUSH4 0xa9059cbb
00000f7f: SWAP1
00000f80: PUSH2 0x0f8f
00000f83: SWAP1
00000f84: DUP11
00000f85: SWAP1
00000f86: DUP10
00000f87: SWAP1
00000f88: PUSH1 0x04
00000f8a: ADD
00000f8b: PUSH2 0x2f76
00000f8e: JUMP
00000f8f: JUMPDEST
00000f90: PUSH1 0x00
00000f92: PUSH1 0x40
00000f94: MLOAD
00000f95: DUP1
00000f96: DUP4
00000f97: SUB
00000f98: DUP2
00000f99: PUSH1 0x00
00000f9b: DUP8
00000f9c: DUP1
00000f9d: EXTCODESIZE
00000f9e: ISZERO
00000f9f: DUP1
00000fa0: ISZERO
00000fa1: PUSH2 0x0fa9
00000fa4: JUMPI
00000fa5: PUSH1 0x00
00000fa7: DUP1
00000fa8: REVERT
00000fa9: JUMPDEST
00000faa: POP
00000fab: GAS
00000fac: CALL
00000fad: ISZERO
00000fae: DUP1
00000faf: ISZERO
00000fb0: PUSH2 0x0fbd
00000fb3: JUMPI
00000fb4: RETURNDATASIZE
00000fb5: PUSH1 0x00
00000fb7: DUP1
00000fb8: RETURNDATACOPY
00000fb9: RETURNDATASIZE
00000fba: PUSH1 0x00
00000fbc: REVERT
00000fbd: JUMPDEST
00000fbe: POP
00000fbf: POP
00000fc0: POP
00000fc1: POP
00000fc2: PUSH1 0x00
00000fc4: SWAP2
00000fc5: POP
00000fc6: JUMPDEST
00000fc7: POP
00000fc8: JUMPDEST
00000fc9: PUSH1 0x01
00000fcb: PUSH1 0x07
00000fcd: DUP5
00000fce: PUSH1 0x40
00000fd0: MLOAD
00000fd1: PUSH2 0x0fda
00000fd4: SWAP2
00000fd5: SWAP1
00000fd6: PUSH2 0x2dc5
00000fd9: JUMP
00000fda: JUMPDEST
00000fdb: SWAP1
00000fdc: DUP2
00000fdd: MSTORE
00000fde: PUSH1 0x20
00000fe0: ADD
00000fe1: PUSH1 0x40
00000fe3: MLOAD
00000fe4: DUP1
00000fe5: SWAP2
00000fe6: SUB
00000fe7: SWAP1
00000fe8: KECCAK256
00000fe9: PUSH1 0x00
00000feb: PUSH2 0x0100
00000fee: EXP
00000fef: DUP2
00000ff0: SLOAD
00000ff1: DUP2
00000ff2: PUSH1 0xff
00000ff4: MUL
00000ff5: NOT
00000ff6: AND
00000ff7: SWAP1
00000ff8: DUP4
00000ff9: ISZERO
00000ffa: ISZERO
00000ffb: MUL
00000ffc: OR
00000ffd: SWAP1
00000ffe: SSTORE
00000fff: POP
00001000: DUP1
00001001: PUSH1 0x01
00001003: PUSH1 0x01
00001005: PUSH1 0xa0
00001007: SHL
00001008: SUB
00001009: AND
0000100a: DUP5
0000100b: DUP8
0000100c: PUSH1 0x01
0000100e: PUSH1 0x01
00001010: PUSH1 0xa0
00001012: SHL
00001013: SUB
00001014: AND
00001015: PUSH32 0xf6b095aebfbfb6ed6beca6ffab1699c95c32480f70b07621f92d7ccdf8440894
00001036: DUP9
00001037: DUP8
00001038: DUP13
00001039: PUSH1 0x40
0000103b: MLOAD
0000103c: PUSH2 0x1047
0000103f: SWAP4
00001040: SWAP3
00001041: SWAP2
00001042: SWAP1
00001043: PUSH2 0x2f2c
00001046: JUMP
00001047: JUMPDEST
00001048: PUSH1 0x40
0000104a: MLOAD
0000104b: DUP1
0000104c: SWAP2
0000104d: SUB
0000104e: SWAP1
0000104f: LOG4
00001050: POP
00001051: POP
00001052: PUSH1 0x00
00001054: DUP1
00001055: SLOAD
00001056: PUSH1 0xff
00001058: NOT
00001059: AND
0000105a: SWAP1
0000105b: SSTORE
0000105c: POP
0000105d: POP
0000105e: POP
0000105f: POP
00001060: POP
00001061: JUMP
00001062: JUMPDEST
00001063: PUSH1 0x08
00001065: PUSH1 0x20
00001067: MSTORE
00001068: PUSH1 0x00
0000106a: SWAP1
0000106b: DUP2
0000106c: MSTORE
0000106d: PUSH1 0x40
0000106f: SWAP1
00001070: KECCAK256
00001071: SLOAD
00001072: PUSH1 0xff
00001074: AND
00001075: DUP2
00001076: JUMP
00001077: JUMPDEST
00001078: PUSH1 0x09
0000107a: SLOAD
0000107b: DUP2
0000107c: JUMP
0000107d: JUMPDEST
0000107e: PUSH1 0x05
00001080: DUP2
00001081: DUP2
00001082: SLOAD
00001083: DUP2
00001084: LT
00001085: PUSH2 0x108a
00001088: JUMPI
00001089: INVALID
0000108a: JUMPDEST
0000108b: PUSH1 0x00
0000108d: SWAP2
0000108e: DUP3
0000108f: MSTORE
00001090: PUSH1 0x20
00001092: SWAP1
00001093: SWAP2
00001094: KECCAK256
00001095: ADD
00001096: SLOAD
00001097: PUSH1 0x01
00001099: PUSH1 0x01
0000109b: PUSH1 0xa0
0000109d: SHL
0000109e: SUB
0000109f: AND
000010a0: SWAP1
000010a1: POP
000010a2: DUP2
000010a3: JUMP
000010a4: JUMPDEST
000010a5: PUSH2 0x10ac
000010a8: PUSH2 0x1992
000010ab: JUMP
000010ac: JUMPDEST
000010ad: PUSH2 0x10b4
000010b0: PUSH2 0x19b7
000010b3: JUMP
000010b4: JUMPDEST
000010b5: PUSH1 0x0e
000010b7: SLOAD
000010b8: PUSH1 0x0f
000010ba: SLOAD
000010bb: PUSH1 0x40
000010bd: MLOAD
000010be: PUSH2 0x10f9
000010c1: SWAP3
000010c2: PUSH2 0x10db
000010c5: SWAP3
000010c6: ADDRESS
000010c7: SWAP3
000010c8: PUSH1 0x01
000010ca: PUSH1 0x01
000010cc: PUSH1 0xa0
000010ce: SHL
000010cf: SUB
000010d0: SWAP1
000010d1: SWAP3
000010d2: AND
000010d3: SWAP2
000010d4: PUSH1 0x20
000010d6: ADD
000010d7: PUSH2 0x2dd1
000010da: JUMP
000010db: JUMPDEST
000010dc: PUSH1 0x40
000010de: MLOAD
000010df: PUSH1 0x20
000010e1: DUP2
000010e2: DUP4
000010e3: SUB
000010e4: SUB
000010e5: DUP2
000010e6: MSTORE
000010e7: SWAP1
000010e8: PUSH1 0x40
000010ea: MSTORE
000010eb: DUP1
000010ec: MLOAD
000010ed: SWAP1
000010ee: PUSH1 0x20
000010f0: ADD
000010f1: KECCAK256
000010f2: DUP3
000010f3: PUSH1 0x01
000010f5: PUSH2 0x19db
000010f8: JUMP
000010f9: JUMPDEST
000010fa: PUSH1 0x0f
000010fc: DUP1
000010fd: SLOAD
000010fe: PUSH1 0x01
00001100: ADD
00001101: SWAP1
00001102: SSTORE
00001103: PUSH1 0x0e
00001105: SLOAD
00001106: PUSH2 0x1117
00001109: SWAP1
0000110a: PUSH1 0x01
0000110c: PUSH1 0x01
0000110e: PUSH1 0xa0
00001110: SHL
00001111: SUB
00001112: AND
00001113: PUSH2 0x1cae
00001116: JUMP
00001117: JUMPDEST
00001118: PUSH1 0x0e
0000111a: SLOAD
0000111b: PUSH1 0x40
0000111d: MLOAD
0000111e: PUSH1 0x01
00001120: PUSH1 0x01
00001122: PUSH1 0xa0
00001124: SHL
00001125: SUB
00001126: SWAP1
00001127: SWAP2
00001128: AND
00001129: SWAP1
0000112a: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
0000114b: SWAP1
0000114c: PUSH1 0x00
0000114e: SWAP1
0000114f: LOG2
00001150: POP
00001151: JUMP
00001152: JUMPDEST
00001153: PUSH1 0x00
00001155: SLOAD
00001156: PUSH1 0xff
00001158: AND
00001159: ISZERO
0000115a: PUSH2 0x1175
0000115d: JUMPI
0000115e: PUSH1 0x40
00001160: MLOAD
00001161: PUSH3 0x461bcd
00001165: PUSH1 0xe5
00001167: SHL
00001168: DUP2
00001169: MSTORE
0000116a: PUSH1 0x04
0000116c: ADD
0000116d: PUSH2 0x07b3
00001170: SWAP1
00001171: PUSH2 0x3148
00001174: JUMP
00001175: JUMPDEST
00001176: PUSH1 0x00
00001178: DUP1
00001179: SLOAD
0000117a: PUSH1 0xff
0000117c: NOT
0000117d: AND
0000117e: PUSH1 0x01
00001180: OR
00001181: SWAP1
00001182: SSTORE
00001183: PUSH2 0x118a
00001186: PUSH2 0x1882
00001189: JUMP
0000118a: JUMPDEST
0000118b: PUSH1 0x09
0000118d: SLOAD
0000118e: DUP3
0000118f: EQ
00001190: PUSH2 0x11ab
00001193: JUMPI
00001194: PUSH1 0x40
00001196: MLOAD
00001197: PUSH3 0x461bcd
0000119b: PUSH1 0xe5
0000119d: SHL
0000119e: DUP2
0000119f: MSTORE
000011a0: PUSH1 0x04
000011a2: ADD
000011a3: PUSH2 0x07b3
000011a6: SWAP1
000011a7: PUSH2 0x3108
000011aa: JUMP
000011ab: JUMPDEST
000011ac: PUSH2 0x11c5
000011af: ADDRESS
000011b0: DUP6
000011b1: DUP6
000011b2: DUP6
000011b3: PUSH1 0x40
000011b5: MLOAD
000011b6: PUSH1 0x20
000011b8: ADD
000011b9: PUSH2 0x10db
000011bc: SWAP5
000011bd: SWAP4
000011be: SWAP3
000011bf: SWAP2
000011c0: SWAP1
000011c1: PUSH2 0x2e13
000011c4: JUMP
000011c5: JUMPDEST
000011c6: DUP2
000011c7: DUP4
000011c8: PUSH32 0x50fb1e062911f806ffb200f762d478c835a88d333a8dd543dccaedf3444dded5
000011e9: DUP7
000011ea: PUSH1 0x40
000011ec: MLOAD
000011ed: PUSH2 0x11f6
000011f0: SWAP2
000011f1: SWAP1
000011f2: PUSH2 0x2fac
000011f5: JUMP
000011f6: JUMPDEST
000011f7: PUSH1 0x40
000011f9: MLOAD
000011fa: DUP1
000011fb: SWAP2
000011fc: SUB
000011fd: SWAP1
000011fe: LOG3
000011ff: PUSH1 0x09
00001201: DUP1
00001202: SLOAD
00001203: PUSH1 0x01
00001205: ADD
00001206: SWAP1
00001207: SSTORE
00001208: PUSH1 0x01
0000120a: PUSH1 0x01
0000120c: PUSH1 0xa0
0000120e: SHL
0000120f: SUB
00001210: DUP5
00001211: AND
00001212: PUSH2 0x12aa
00001215: JUMPI
00001216: PUSH1 0x0b
00001218: SLOAD
00001219: PUSH1 0x01
0000121b: PUSH1 0x01
0000121d: PUSH1 0xa0
0000121f: SHL
00001220: SUB
00001221: AND
00001222: BALANCE
00001223: DUP4
00001224: GT
00001225: ISZERO
00001226: PUSH2 0x1241
00001229: JUMPI
0000122a: PUSH1 0x40
0000122c: MLOAD
0000122d: PUSH3 0x461bcd
00001231: PUSH1 0xe5
00001233: SHL
00001234: DUP2
00001235: MSTORE
00001236: PUSH1 0x04
00001238: ADD
00001239: PUSH2 0x07b3
0000123c: SWAP1
0000123d: PUSH2 0x3028
00001240: JUMP
00001241: JUMPDEST
00001242: PUSH1 0x0b
00001244: SLOAD
00001245: PUSH1 0x40
00001247: MLOAD
00001248: PUSH4 0xa9059cbb
0000124d: PUSH1 0xe0
0000124f: SHL
00001250: DUP2
00001251: MSTORE
00001252: PUSH1 0x01
00001254: PUSH1 0x01
00001256: PUSH1 0xa0
00001258: SHL
00001259: SUB
0000125a: SWAP1
0000125b: SWAP2
0000125c: AND
0000125d: SWAP1
0000125e: PUSH4 0xa9059cbb
00001263: SWAP1
00001264: PUSH2 0x1273
00001267: SWAP1
00001268: ADDRESS
00001269: SWAP1
0000126a: DUP8
0000126b: SWAP1
0000126c: PUSH1 0x04
0000126e: ADD
0000126f: PUSH2 0x2f5b
00001272: JUMP
00001273: JUMPDEST
00001274: PUSH1 0x00
00001276: PUSH1 0x40
00001278: MLOAD
00001279: DUP1
0000127a: DUP4
0000127b: SUB
0000127c: DUP2
0000127d: PUSH1 0x00
0000127f: DUP8
00001280: DUP1
00001281: EXTCODESIZE
00001282: ISZERO
00001283: DUP1
00001284: ISZERO
00001285: PUSH2 0x128d
00001288: JUMPI
00001289: PUSH1 0x00
0000128b: DUP1
0000128c: REVERT
0000128d: JUMPDEST
0000128e: POP
0000128f: GAS
00001290: CALL
00001291: ISZERO
00001292: DUP1
00001293: ISZERO
00001294: PUSH2 0x12a1
00001297: JUMPI
00001298: RETURNDATASIZE
00001299: PUSH1 0x00
0000129b: DUP1
0000129c: RETURNDATACOPY
0000129d: RETURNDATASIZE
0000129e: PUSH1 0x00
000012a0: REVERT
000012a1: JUMPDEST
000012a2: POP
000012a3: POP
000012a4: POP
000012a5: POP
000012a6: PUSH2 0x13d5
000012a9: JUMP
000012aa: JUMPDEST
000012ab: PUSH1 0x0b
000012ad: SLOAD
000012ae: PUSH1 0x40
000012b0: MLOAD
000012b1: PUSH4 0x70a08231
000012b6: PUSH1 0xe0
000012b8: SHL
000012b9: DUP2
000012ba: MSTORE
000012bb: DUP6
000012bc: SWAP2
000012bd: PUSH1 0x00
000012bf: SWAP2
000012c0: PUSH1 0x01
000012c2: PUSH1 0x01
000012c4: PUSH1 0xa0
000012c6: SHL
000012c7: SUB
000012c8: DUP1
000012c9: DUP6
000012ca: AND
000012cb: SWAP3
000012cc: PUSH4 0x70a08231
000012d1: SWAP3
000012d2: PUSH2 0x12e1
000012d5: SWAP3
000012d6: SWAP1
000012d7: SWAP2
000012d8: AND
000012d9: SWAP1
000012da: PUSH1 0x04
000012dc: ADD
000012dd: PUSH2 0x2f03
000012e0: JUMP
000012e1: JUMPDEST
000012e2: PUSH1 0x20
000012e4: PUSH1 0x40
000012e6: MLOAD
000012e7: DUP1
000012e8: DUP4
000012e9: SUB
000012ea: DUP2
000012eb: DUP7
000012ec: DUP1
000012ed: EXTCODESIZE
000012ee: ISZERO
000012ef: DUP1
000012f0: ISZERO
000012f1: PUSH2 0x12f9
000012f4: JUMPI
000012f5: PUSH1 0x00
000012f7: DUP1
000012f8: REVERT
000012f9: JUMPDEST
000012fa: POP
000012fb: GAS
000012fc: STATICCALL
000012fd: ISZERO
000012fe: DUP1
000012ff: ISZERO
00001300: PUSH2 0x130d
00001303: JUMPI
00001304: RETURNDATASIZE
00001305: PUSH1 0x00
00001307: DUP1
00001308: RETURNDATACOPY
00001309: RETURNDATASIZE
0000130a: PUSH1 0x00
0000130c: REVERT
0000130d: JUMPDEST
0000130e: POP
0000130f: POP
00001310: POP
00001311: POP
00001312: PUSH1 0x40
00001314: MLOAD
00001315: RETURNDATASIZE
00001316: PUSH1 0x1f
00001318: NOT
00001319: PUSH1 0x1f
0000131b: DUP3
0000131c: ADD
0000131d: AND
0000131e: DUP3
0000131f: ADD
00001320: DUP1
00001321: PUSH1 0x40
00001323: MSTORE
00001324: POP
00001325: PUSH2 0x1331
00001328: SWAP2
00001329: SWAP1
0000132a: DUP2
0000132b: ADD
0000132c: SWAP1
0000132d: PUSH2 0x2594
00001330: JUMP
00001331: JUMPDEST
00001332: SWAP1
00001333: POP
00001334: DUP5
00001335: DUP2
00001336: LT
00001337: ISZERO
00001338: PUSH2 0x1353
0000133b: JUMPI
0000133c: PUSH1 0x40
0000133e: MLOAD
0000133f: PUSH3 0x461bcd
00001343: PUSH1 0xe5
00001345: SHL
00001346: DUP2
00001347: MSTORE
00001348: PUSH1 0x04
0000134a: ADD
0000134b: PUSH2 0x07b3
0000134e: SWAP1
0000134f: PUSH2 0x3028
00001352: JUMP
00001353: JUMPDEST
00001354: PUSH1 0x0b
00001356: SLOAD
00001357: PUSH1 0x40
00001359: MLOAD
0000135a: PUSH32 0xf640d50800000000000000000000000000000000000000000000000000000000
0000137b: DUP2
0000137c: MSTORE
0000137d: PUSH1 0x01
0000137f: PUSH1 0x01
00001381: PUSH1 0xa0
00001383: SHL
00001384: SUB
00001385: SWAP1
00001386: SWAP2
00001387: AND
00001388: SWAP1
00001389: PUSH4 0xf640d508
0000138e: SWAP1
0000138f: PUSH2 0x13a0
00001392: SWAP1
00001393: ADDRESS
00001394: SWAP1
00001395: DUP10
00001396: SWAP1
00001397: DUP12
00001398: SWAP1
00001399: PUSH1 0x04
0000139b: ADD
0000139c: PUSH2 0x2f84
0000139f: JUMP
000013a0: JUMPDEST
000013a1: PUSH1 0x00
000013a3: PUSH1 0x40
000013a5: MLOAD
000013a6: DUP1
000013a7: DUP4
000013a8: SUB
000013a9: DUP2
000013aa: PUSH1 0x00
000013ac: DUP8
000013ad: DUP1
000013ae: EXTCODESIZE
000013af: ISZERO
000013b0: DUP1
000013b1: ISZERO
000013b2: PUSH2 0x13ba
000013b5: JUMPI
000013b6: PUSH1 0x00
000013b8: DUP1
000013b9: REVERT
000013ba: JUMPDEST
000013bb: POP
000013bc: GAS
000013bd: CALL
000013be: ISZERO
000013bf: DUP1
000013c0: ISZERO
000013c1: PUSH2 0x13ce
000013c4: JUMPI
000013c5: RETURNDATASIZE
000013c6: PUSH1 0x00
000013c8: DUP1
000013c9: RETURNDATACOPY
000013ca: RETURNDATASIZE
000013cb: PUSH1 0x00
000013cd: REVERT
000013ce: JUMPDEST
000013cf: POP
000013d0: POP
000013d1: POP
000013d2: POP
000013d3: POP
000013d4: POP
000013d5: JUMPDEST
000013d6: POP
000013d7: POP
000013d8: PUSH1 0x00
000013da: DUP1
000013db: SLOAD
000013dc: PUSH1 0xff
000013de: NOT
000013df: AND
000013e0: SWAP1
000013e1: SSTORE
000013e2: POP
000013e3: POP
000013e4: JUMP
000013e5: JUMPDEST
000013e6: PUSH2 0x13f0
000013e9: PUSH2 0x0625
000013ec: PUSH2 0x1c39
000013ef: JUMP
000013f0: JUMPDEST
000013f1: PUSH2 0x140c
000013f4: JUMPI
000013f5: PUSH1 0x40
000013f7: MLOAD
000013f8: PUSH3 0x461bcd
000013fc: PUSH1 0xe5
000013fe: SHL
000013ff: DUP2
00001400: MSTORE
00001401: PUSH1 0x04
00001403: ADD
00001404: PUSH2 0x07b3
00001407: SWAP1
00001408: PUSH2 0x3128
0000140b: JUMP
0000140c: JUMPDEST
0000140d: PUSH2 0x0b42
00001410: DUP2
00001411: PUSH2 0x1cf7
00001414: JUMP
00001415: JUMPDEST
00001416: PUSH1 0x00
00001418: DUP1
00001419: JUMPDEST
0000141a: PUSH1 0x05
0000141c: SLOAD
0000141d: DUP2
0000141e: LT
0000141f: ISZERO
00001420: PUSH2 0x1467
00001423: JUMPI
00001424: DUP3
00001425: PUSH1 0x01
00001427: PUSH1 0x01
00001429: PUSH1 0xa0
0000142b: SHL
0000142c: SUB
0000142d: AND
0000142e: PUSH1 0x05
00001430: DUP3
00001431: DUP2
00001432: SLOAD
00001433: DUP2
00001434: LT
00001435: PUSH2 0x143a
00001438: JUMPI
00001439: INVALID
0000143a: JUMPDEST
0000143b: PUSH1 0x00
0000143d: SWAP2
0000143e: DUP3
0000143f: MSTORE
00001440: PUSH1 0x20
00001442: SWAP1
00001443: SWAP2
00001444: KECCAK256
00001445: ADD
00001446: SLOAD
00001447: PUSH1 0x01
00001449: PUSH1 0x01
0000144b: PUSH1 0xa0
0000144d: SHL
0000144e: SUB
0000144f: AND
00001450: EQ
00001451: ISZERO
00001452: PUSH2 0x145f
00001455: JUMPI
00001456: PUSH1 0x01
00001458: SWAP2
00001459: POP
0000145a: POP
0000145b: PUSH2 0x1469
0000145e: JUMP
0000145f: JUMPDEST
00001460: PUSH1 0x01
00001462: ADD
00001463: PUSH2 0x1419
00001466: JUMP
00001467: JUMPDEST
00001468: POP
00001469: JUMPDEST
0000146a: SWAP2
0000146b: SWAP1
0000146c: POP
0000146d: JUMP
0000146e: JUMPDEST
0000146f: PUSH1 0x00
00001471: PUSH2 0x1481
00001474: PUSH1 0x04
00001476: DUP4
00001477: PUSH4 0xffffffff
0000147c: PUSH2 0x1d3f
0000147f: AND
00001480: JUMP
00001481: JUMPDEST
00001482: SWAP3
00001483: SWAP2
00001484: POP
00001485: POP
00001486: JUMP
00001487: JUMPDEST
00001488: PUSH2 0x1492
0000148b: PUSH2 0x04b2
0000148e: PUSH2 0x1c39
00001491: JUMP
00001492: JUMPDEST
00001493: PUSH2 0x14ae
00001496: JUMPI
00001497: PUSH1 0x40
00001499: MLOAD
0000149a: PUSH3 0x461bcd
0000149e: PUSH1 0xe5
000014a0: SHL
000014a1: DUP2
000014a2: MSTORE
000014a3: PUSH1 0x04
000014a5: ADD
000014a6: PUSH2 0x07b3
000014a9: SWAP1
000014aa: PUSH2 0x3078
000014ad: JUMP
000014ae: JUMPDEST
000014af: PUSH1 0x02
000014b1: SLOAD
000014b2: PUSH1 0xff
000014b4: AND
000014b5: PUSH2 0x14d0
000014b8: JUMPI
000014b9: PUSH1 0x40
000014bb: MLOAD
000014bc: PUSH3 0x461bcd
000014c0: PUSH1 0xe5
000014c2: SHL
000014c3: DUP2
000014c4: MSTORE
000014c5: PUSH1 0x04
000014c7: ADD
000014c8: PUSH2 0x07b3
000014cb: SWAP1
000014cc: PUSH2 0x3038
000014cf: JUMP
000014d0: JUMPDEST
000014d1: PUSH1 0x02
000014d3: DUP1
000014d4: SLOAD
000014d5: PUSH1 0xff
000014d7: NOT
000014d8: AND
000014d9: SWAP1
000014da: SSTORE
000014db: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
000014fc: PUSH2 0x1503
000014ff: PUSH2 0x1c39
00001502: JUMP
00001503: JUMPDEST
00001504: PUSH1 0x40
00001506: MLOAD
00001507: PUSH2 0x1510
0000150a: SWAP2
0000150b: SWAP1
0000150c: PUSH2 0x2f03
0000150f: JUMP
00001510: JUMPDEST
00001511: PUSH1 0x40
00001513: MLOAD
00001514: DUP1
00001515: SWAP2
00001516: SUB
00001517: SWAP1
00001518: LOG1
00001519: JUMP
0000151a: JUMPDEST
0000151b: PUSH1 0x00
0000151d: PUSH2 0x1481
00001520: PUSH1 0x01
00001522: DUP4
00001523: PUSH4 0xffffffff
00001528: PUSH2 0x1d3f
0000152b: AND
0000152c: JUMP
0000152d: JUMPDEST
0000152e: PUSH2 0x153d
00001531: PUSH2 0x1538
00001534: PUSH2 0x1c39
00001537: JUMP
00001538: JUMPDEST
00001539: PUSH2 0x1d87
0000153c: JUMP
0000153d: JUMPDEST
0000153e: JUMP
0000153f: JUMPDEST
00001540: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00001561: SLOAD
00001562: SWAP1
00001563: JUMP
00001564: JUMPDEST
00001565: PUSH1 0x02
00001567: SLOAD
00001568: PUSH1 0xff
0000156a: AND
0000156b: JUMPDEST
0000156c: SWAP1
0000156d: JUMP
0000156e: JUMPDEST
0000156f: PUSH1 0x0f
00001571: SLOAD
00001572: DUP2
00001573: JUMP
00001574: JUMPDEST
00001575: PUSH2 0x157c
00001578: PUSH2 0x1992
0000157b: JUMP
0000157c: JUMPDEST
0000157d: DUP1
0000157e: DUP3
0000157f: LT
00001580: PUSH2 0x159b
00001583: JUMPI
00001584: PUSH1 0x40
00001586: MLOAD
00001587: PUSH3 0x461bcd
0000158b: PUSH1 0xe5
0000158d: SHL
0000158e: DUP2
0000158f: MSTORE
00001590: PUSH1 0x04
00001592: ADD
00001593: PUSH2 0x07b3
00001596: SWAP1
00001597: PUSH2 0x3088
0000159a: JUMP
0000159b: JUMPDEST
0000159c: PUSH1 0x01
0000159e: PUSH1 0x01
000015a0: PUSH1 0xa0
000015a2: SHL
000015a3: SUB
000015a4: SWAP1
000015a5: SWAP3
000015a6: AND
000015a7: PUSH1 0x00
000015a9: SWAP1
000015aa: DUP2
000015ab: MSTORE
000015ac: PUSH1 0x0c
000015ae: PUSH1 0x20
000015b0: SWAP1
000015b1: DUP2
000015b2: MSTORE
000015b3: PUSH1 0x40
000015b5: DUP1
000015b6: DUP4
000015b7: KECCAK256
000015b8: SWAP4
000015b9: SWAP1
000015ba: SWAP4
000015bb: SSTORE
000015bc: PUSH1 0x0d
000015be: SWAP1
000015bf: MSTORE
000015c0: KECCAK256
000015c1: SSTORE
000015c2: JUMP
000015c3: JUMPDEST
000015c4: PUSH1 0x0b
000015c6: SLOAD
000015c7: PUSH1 0x01
000015c9: PUSH1 0x01
000015cb: PUSH1 0xa0
000015cd: SHL
000015ce: SUB
000015cf: AND
000015d0: SWAP1
000015d1: JUMP
000015d2: JUMPDEST
000015d3: PUSH2 0x153d
000015d6: PUSH2 0x15dd
000015d9: PUSH2 0x1c39
000015dc: JUMP
000015dd: JUMPDEST
000015de: PUSH2 0x1dcf
000015e1: JUMP
000015e2: JUMPDEST
000015e3: PUSH2 0x15ed
000015e6: PUSH2 0x0625
000015e9: PUSH2 0x1c39
000015ec: JUMP
000015ed: JUMPDEST
000015ee: PUSH2 0x1609
000015f1: JUMPI
000015f2: PUSH1 0x40
000015f4: MLOAD
000015f5: PUSH3 0x461bcd
000015f9: PUSH1 0xe5
000015fb: SHL
000015fc: DUP2
000015fd: MSTORE
000015fe: PUSH1 0x04
00001600: ADD
00001601: PUSH2 0x07b3
00001604: SWAP1
00001605: PUSH2 0x3128
00001608: JUMP
00001609: JUMPDEST
0000160a: PUSH2 0x0b42
0000160d: DUP2
0000160e: PUSH2 0x1e17
00001611: JUMP
00001612: JUMPDEST
00001613: PUSH2 0x161d
00001616: PUSH2 0x04b2
00001619: PUSH2 0x1c39
0000161c: JUMP
0000161d: JUMPDEST
0000161e: PUSH2 0x1639
00001621: JUMPI
00001622: PUSH1 0x40
00001624: MLOAD
00001625: PUSH3 0x461bcd
00001629: PUSH1 0xe5
0000162b: SHL
0000162c: DUP2
0000162d: MSTORE
0000162e: PUSH1 0x04
00001630: ADD
00001631: PUSH2 0x07b3
00001634: SWAP1
00001635: PUSH2 0x3078
00001638: JUMP
00001639: JUMPDEST
0000163a: PUSH2 0x0b42
0000163d: DUP2
0000163e: PUSH2 0x1e5f
00001641: JUMP
00001642: JUMPDEST
00001643: PUSH2 0x164a
00001646: PUSH2 0x1992
00001649: JUMP
0000164a: JUMPDEST
0000164b: PUSH1 0x0e
0000164d: DUP1
0000164e: SLOAD
0000164f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001664: NOT
00001665: AND
00001666: PUSH1 0x01
00001668: PUSH1 0x01
0000166a: PUSH1 0xa0
0000166c: SHL
0000166d: SUB
0000166e: SWAP3
0000166f: SWAP1
00001670: SWAP3
00001671: AND
00001672: SWAP2
00001673: SWAP1
00001674: SWAP2
00001675: OR
00001676: SWAP1
00001677: SSTORE
00001678: JUMP
00001679: JUMPDEST
0000167a: PUSH2 0x1684
0000167d: PUSH2 0x04b2
00001680: PUSH2 0x1c39
00001683: JUMP
00001684: JUMPDEST
00001685: PUSH2 0x16a0
00001688: JUMPI
00001689: PUSH1 0x40
0000168b: MLOAD
0000168c: PUSH3 0x461bcd
00001690: PUSH1 0xe5
00001692: SHL
00001693: DUP2
00001694: MSTORE
00001695: PUSH1 0x04
00001697: ADD
00001698: PUSH2 0x07b3
0000169b: SWAP1
0000169c: PUSH2 0x3078
0000169f: JUMP
000016a0: JUMPDEST
000016a1: PUSH1 0x02
000016a3: SLOAD
000016a4: PUSH1 0xff
000016a6: AND
000016a7: ISZERO
000016a8: PUSH2 0x16c3
000016ab: JUMPI
000016ac: PUSH1 0x40
000016ae: MLOAD
000016af: PUSH3 0x461bcd
000016b3: PUSH1 0xe5
000016b5: SHL
000016b6: DUP2
000016b7: MSTORE
000016b8: PUSH1 0x04
000016ba: ADD
000016bb: PUSH2 0x07b3
000016be: SWAP1
000016bf: PUSH2 0x30c8
000016c2: JUMP
000016c3: JUMPDEST
000016c4: PUSH1 0x02
000016c6: DUP1
000016c7: SLOAD
000016c8: PUSH1 0xff
000016ca: NOT
000016cb: AND
000016cc: PUSH1 0x01
000016ce: OR
000016cf: SWAP1
000016d0: SSTORE
000016d1: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
000016f2: PUSH2 0x1503
000016f5: PUSH2 0x1c39
000016f8: JUMP
000016f9: JUMPDEST
000016fa: PUSH2 0x1701
000016fd: PUSH2 0x1992
00001700: JUMP
00001701: JUMPDEST
00001702: PUSH2 0x1709
00001705: PUSH2 0x19b7
00001708: JUMP
00001709: JUMPDEST
0000170a: PUSH2 0x171b
0000170d: DUP2
0000170e: PUSH1 0x01
00001710: PUSH1 0x01
00001712: PUSH1 0xa0
00001714: SHL
00001715: SUB
00001716: AND
00001717: PUSH2 0x1ea7
0000171a: JUMP
0000171b: JUMPDEST
0000171c: PUSH2 0x1737
0000171f: JUMPI
00001720: PUSH1 0x40
00001722: MLOAD
00001723: PUSH3 0x461bcd
00001727: PUSH1 0xe5
00001729: SHL
0000172a: DUP2
0000172b: MSTORE
0000172c: PUSH1 0x04
0000172e: ADD
0000172f: PUSH2 0x07b3
00001732: SWAP1
00001733: PUSH2 0x3198
00001736: JUMP
00001737: JUMPDEST
00001738: PUSH1 0x0b
0000173a: SLOAD
0000173b: PUSH1 0x40
0000173d: MLOAD
0000173e: PUSH32 0x5bb4780800000000000000000000000000000000000000000000000000000000
0000175f: DUP2
00001760: MSTORE
00001761: PUSH1 0x01
00001763: PUSH1 0x01
00001765: PUSH1 0xa0
00001767: SHL
00001768: SUB
00001769: SWAP1
0000176a: SWAP2
0000176b: AND
0000176c: SWAP1
0000176d: PUSH4 0x5bb47808
00001772: SWAP1
00001773: PUSH2 0x1780
00001776: SWAP1
00001777: DUP5
00001778: SWAP1
00001779: PUSH1 0x04
0000177b: ADD
0000177c: PUSH2 0x2ef5
0000177f: JUMP
00001780: JUMPDEST
00001781: PUSH1 0x00
00001783: PUSH1 0x40
00001785: MLOAD
00001786: DUP1
00001787: DUP4
00001788: SUB
00001789: DUP2
0000178a: PUSH1 0x00
0000178c: DUP8
0000178d: DUP1
0000178e: EXTCODESIZE
0000178f: ISZERO
00001790: DUP1
00001791: ISZERO
00001792: PUSH2 0x179a
00001795: JUMPI
00001796: PUSH1 0x00
00001798: DUP1
00001799: REVERT
0000179a: JUMPDEST
0000179b: POP
0000179c: GAS
0000179d: CALL
0000179e: ISZERO
0000179f: DUP1
000017a0: ISZERO
000017a1: PUSH2 0x17ae
000017a4: JUMPI
000017a5: RETURNDATASIZE
000017a6: PUSH1 0x00
000017a8: DUP1
000017a9: RETURNDATACOPY
000017aa: RETURNDATASIZE
000017ab: PUSH1 0x00
000017ad: REVERT
000017ae: JUMPDEST
000017af: POP
000017b0: POP
000017b1: POP
000017b2: POP
000017b3: POP
000017b4: JUMP
000017b5: JUMPDEST
000017b6: PUSH1 0x0d
000017b8: PUSH1 0x20
000017ba: MSTORE
000017bb: PUSH1 0x00
000017bd: SWAP1
000017be: DUP2
000017bf: MSTORE
000017c0: PUSH1 0x40
000017c2: SWAP1
000017c3: KECCAK256
000017c4: SLOAD
000017c5: DUP2
000017c6: JUMP
000017c7: JUMPDEST
000017c8: PUSH1 0x00
000017ca: PUSH2 0x1481
000017cd: PUSH1 0x03
000017cf: DUP4
000017d0: PUSH4 0xffffffff
000017d5: PUSH2 0x1d3f
000017d8: AND
000017d9: JUMP
000017da: JUMPDEST
000017db: PUSH2 0x17e2
000017de: PUSH2 0x1992
000017e1: JUMP
000017e2: JUMPDEST
000017e3: PUSH2 0x17ea
000017e6: PUSH2 0x19b7
000017e9: JUMP
000017ea: JUMPDEST
000017eb: PUSH1 0x00
000017ed: JUMPDEST
000017ee: DUP2
000017ef: MLOAD
000017f0: DUP2
000017f1: LT
000017f2: ISZERO
000017f3: PUSH2 0x187e
000017f6: JUMPI
000017f7: PUSH1 0x07
000017f9: DUP3
000017fa: DUP3
000017fb: DUP2
000017fc: MLOAD
000017fd: DUP2
000017fe: LT
000017ff: PUSH2 0x1804
00001802: JUMPI
00001803: INVALID
00001804: JUMPDEST
00001805: PUSH1 0x20
00001807: MUL
00001808: PUSH1 0x20
0000180a: ADD
0000180b: ADD
0000180c: MLOAD
0000180d: PUSH1 0x40
0000180f: MLOAD
00001810: PUSH2 0x1819
00001813: SWAP2
00001814: SWAP1
00001815: PUSH2 0x2dc5
00001818: JUMP
00001819: JUMPDEST
0000181a: SWAP1
0000181b: DUP2
0000181c: MSTORE
0000181d: PUSH1 0x40
0000181f: MLOAD
00001820: SWAP1
00001821: DUP2
00001822: SWAP1
00001823: SUB
00001824: PUSH1 0x20
00001826: ADD
00001827: SWAP1
00001828: KECCAK256
00001829: SLOAD
0000182a: PUSH1 0xff
0000182c: AND
0000182d: PUSH2 0x1876
00001830: JUMPI
00001831: PUSH1 0x01
00001833: PUSH1 0x07
00001835: DUP4
00001836: DUP4
00001837: DUP2
00001838: MLOAD
00001839: DUP2
0000183a: LT
0000183b: PUSH2 0x1840
0000183e: JUMPI
0000183f: INVALID
00001840: JUMPDEST
00001841: PUSH1 0x20
00001843: MUL
00001844: PUSH1 0x20
00001846: ADD
00001847: ADD
00001848: MLOAD
00001849: PUSH1 0x40
0000184b: MLOAD
0000184c: PUSH2 0x1855
0000184f: SWAP2
00001850: SWAP1
00001851: PUSH2 0x2dc5
00001854: JUMP
00001855: JUMPDEST
00001856: SWAP1
00001857: DUP2
00001858: MSTORE
00001859: PUSH1 0x40
0000185b: MLOAD
0000185c: SWAP1
0000185d: DUP2
0000185e: SWAP1
0000185f: SUB
00001860: PUSH1 0x20
00001862: ADD
00001863: SWAP1
00001864: KECCAK256
00001865: DUP1
00001866: SLOAD
00001867: SWAP2
00001868: ISZERO
00001869: ISZERO
0000186a: PUSH1 0xff
0000186c: NOT
0000186d: SWAP1
0000186e: SWAP3
0000186f: AND
00001870: SWAP2
00001871: SWAP1
00001872: SWAP2
00001873: OR
00001874: SWAP1
00001875: SSTORE
00001876: JUMPDEST
00001877: PUSH1 0x01
00001879: ADD
0000187a: PUSH2 0x17ed
0000187d: JUMP
0000187e: JUMPDEST
0000187f: POP
00001880: POP
00001881: JUMP
00001882: JUMPDEST
00001883: PUSH2 0x188b
00001886: CALLER
00001887: PUSH2 0x1415
0000188a: JUMP
0000188b: JUMPDEST
0000188c: PUSH2 0x153d
0000188f: JUMPI
00001890: PUSH1 0x40
00001892: MLOAD
00001893: PUSH3 0x461bcd
00001897: PUSH1 0xe5
00001899: SHL
0000189a: DUP2
0000189b: MSTORE
0000189c: PUSH1 0x04
0000189e: ADD
0000189f: PUSH2 0x07b3
000018a2: SWAP1
000018a3: PUSH2 0x3168
000018a6: JUMP
000018a7: JUMPDEST
000018a8: PUSH1 0x0e
000018aa: SLOAD
000018ab: PUSH1 0x01
000018ad: PUSH1 0x01
000018af: PUSH1 0xa0
000018b1: SHL
000018b2: SUB
000018b3: AND
000018b4: DUP2
000018b5: JUMP
000018b6: JUMPDEST
000018b7: PUSH1 0x0a
000018b9: PUSH1 0x20
000018bb: MSTORE
000018bc: PUSH1 0x00
000018be: SWAP1
000018bf: DUP2
000018c0: MSTORE
000018c1: PUSH1 0x40
000018c3: SWAP1
000018c4: KECCAK256
000018c5: SLOAD
000018c6: DUP2
000018c7: JUMP
000018c8: JUMPDEST
000018c9: PUSH1 0x01
000018cb: PUSH1 0x01
000018cd: PUSH1 0xa0
000018cf: SHL
000018d0: SUB
000018d1: DUP2
000018d2: AND
000018d3: PUSH2 0x18ee
000018d6: JUMPI
000018d7: PUSH1 0x40
000018d9: MLOAD
000018da: PUSH3 0x461bcd
000018de: PUSH1 0xe5
000018e0: SHL
000018e1: DUP2
000018e2: MSTORE
000018e3: PUSH1 0x04
000018e5: ADD
000018e6: PUSH2 0x07b3
000018e9: SWAP1
000018ea: PUSH2 0x30f8
000018ed: JUMP
000018ee: JUMPDEST
000018ef: PUSH2 0x18f6
000018f2: PUSH2 0x1992
000018f5: JUMP
000018f6: JUMPDEST
000018f7: PUSH1 0x01
000018f9: PUSH1 0x01
000018fb: PUSH1 0xa0
000018fd: SHL
000018fe: SUB
000018ff: AND
00001900: PUSH1 0x00
00001902: SWAP1
00001903: DUP2
00001904: MSTORE
00001905: PUSH1 0x08
00001907: PUSH1 0x20
00001909: MSTORE
0000190a: PUSH1 0x40
0000190c: SWAP1
0000190d: KECCAK256
0000190e: DUP1
0000190f: SLOAD
00001910: PUSH1 0xff
00001912: NOT
00001913: AND
00001914: PUSH1 0x01
00001916: OR
00001917: SWAP1
00001918: SSTORE
00001919: JUMP
0000191a: JUMPDEST
0000191b: PUSH1 0x0c
0000191d: PUSH1 0x20
0000191f: MSTORE
00001920: PUSH1 0x00
00001922: SWAP1
00001923: DUP2
00001924: MSTORE
00001925: PUSH1 0x40
00001927: SWAP1
00001928: KECCAK256
00001929: SLOAD
0000192a: DUP2
0000192b: JUMP
0000192c: JUMPDEST
0000192d: PUSH2 0x153d
00001930: PUSH2 0x1937
00001933: PUSH2 0x1c39
00001936: JUMP
00001937: JUMPDEST
00001938: PUSH2 0x1cf7
0000193b: JUMP
0000193c: JUMPDEST
0000193d: PUSH2 0x1944
00001940: PUSH2 0x1992
00001943: JUMP
00001944: JUMPDEST
00001945: PUSH1 0x01
00001947: PUSH1 0x01
00001949: PUSH1 0xa0
0000194b: SHL
0000194c: SUB
0000194d: AND
0000194e: PUSH1 0x00
00001950: SWAP1
00001951: DUP2
00001952: MSTORE
00001953: PUSH1 0x08
00001955: PUSH1 0x20
00001957: MSTORE
00001958: PUSH1 0x40
0000195a: SWAP1
0000195b: KECCAK256
0000195c: DUP1
0000195d: SLOAD
0000195e: PUSH1 0xff
00001960: NOT
00001961: AND
00001962: SWAP1
00001963: SSTORE
00001964: JUMP
00001965: JUMPDEST
00001966: DUP1
00001967: MLOAD
00001968: PUSH1 0x20
0000196a: DUP2
0000196b: DUP4
0000196c: ADD
0000196d: DUP2
0000196e: ADD
0000196f: DUP1
00001970: MLOAD
00001971: PUSH1 0x07
00001973: DUP3
00001974: MSTORE
00001975: SWAP3
00001976: DUP3
00001977: ADD
00001978: SWAP2
00001979: SWAP1
0000197a: SWAP4
0000197b: ADD
0000197c: KECCAK256
0000197d: SWAP2
0000197e: MSTORE
0000197f: SLOAD
00001980: PUSH1 0xff
00001982: AND
00001983: DUP2
00001984: JUMP
00001985: JUMPDEST
00001986: PUSH1 0x06
00001988: DUP2
00001989: DUP2
0000198a: SLOAD
0000198b: DUP2
0000198c: LT
0000198d: PUSH2 0x108a
00001990: JUMPI
00001991: INVALID
00001992: JUMPDEST
00001993: PUSH2 0x199b
00001996: CALLER
00001997: PUSH2 0x17c7
0000199a: JUMP
0000199b: JUMPDEST
0000199c: PUSH2 0x153d
0000199f: JUMPI
000019a0: PUSH1 0x40
000019a2: MLOAD
000019a3: PUSH3 0x461bcd
000019a7: PUSH1 0xe5
000019a9: SHL
000019aa: DUP2
000019ab: MSTORE
000019ac: PUSH1 0x04
000019ae: ADD
000019af: PUSH2 0x07b3
000019b2: SWAP1
000019b3: PUSH2 0x3138
000019b6: JUMP
000019b7: JUMPDEST
000019b8: PUSH2 0x19bf
000019bb: PUSH2 0x1564
000019be: JUMP
000019bf: JUMPDEST
000019c0: PUSH2 0x153d
000019c3: JUMPI
000019c4: PUSH1 0x40
000019c6: MLOAD
000019c7: PUSH3 0x461bcd
000019cb: PUSH1 0xe5
000019cd: SHL
000019ce: DUP2
000019cf: MSTORE
000019d0: PUSH1 0x04
000019d2: ADD
000019d3: PUSH2 0x07b3
000019d6: SWAP1
000019d7: PUSH2 0x3188
000019da: JUMP
000019db: JUMPDEST
000019dc: PUSH1 0x05
000019de: SLOAD
000019df: PUSH1 0x02
000019e1: DUP2
000019e2: MUL
000019e3: PUSH1 0x03
000019e5: DUP2
000019e6: MOD
000019e7: PUSH2 0x19f3
000019ea: JUMPI
000019eb: PUSH1 0x03
000019ed: SWAP1
000019ee: DIV
000019ef: PUSH2 0x19fb
000019f2: JUMP
000019f3: JUMPDEST
000019f4: PUSH1 0x03
000019f6: SWAP1
000019f7: DIV
000019f8: PUSH1 0x01
000019fa: ADD
000019fb: JUMPDEST
000019fc: DUP4
000019fd: MLOAD
000019fe: DUP2
000019ff: DUP2
00001a00: LT
00001a01: DUP1
00001a02: PUSH2 0x1a0a
00001a05: JUMPI
00001a06: POP
00001a07: DUP3
00001a08: DUP2
00001a09: GT
00001a0a: JUMPDEST
00001a0b: ISZERO
00001a0c: PUSH2 0x1a27
00001a0f: JUMPI
00001a10: PUSH1 0x40
00001a12: MLOAD
00001a13: PUSH3 0x461bcd
00001a17: PUSH1 0xe5
00001a19: SHL
00001a1a: DUP2
00001a1b: MSTORE
00001a1c: PUSH1 0x04
00001a1e: ADD
00001a1f: PUSH2 0x07b3
00001a22: SWAP1
00001a23: PUSH2 0x3068
00001a26: JUMP
00001a27: JUMPDEST
00001a28: PUSH1 0x60
00001a2a: DUP2
00001a2b: PUSH1 0x40
00001a2d: MLOAD
00001a2e: SWAP1
00001a2f: DUP1
00001a30: DUP3
00001a31: MSTORE
00001a32: DUP1
00001a33: PUSH1 0x20
00001a35: MUL
00001a36: PUSH1 0x20
00001a38: ADD
00001a39: DUP3
00001a3a: ADD
00001a3b: PUSH1 0x40
00001a3d: MSTORE
00001a3e: DUP1
00001a3f: ISZERO
00001a40: PUSH2 0x1a53
00001a43: JUMPI
00001a44: DUP2
00001a45: PUSH1 0x20
00001a47: ADD
00001a48: PUSH1 0x20
00001a4a: DUP3
00001a4b: MUL
00001a4c: DUP1
00001a4d: CODESIZE
00001a4e: DUP4
00001a4f: CODECOPY
00001a50: ADD
00001a51: SWAP1
00001a52: POP
00001a53: JUMPDEST
00001a54: POP
00001a55: SWAP1
00001a56: POP
00001a57: PUSH1 0x00
00001a59: JUMPDEST
00001a5a: DUP3
00001a5b: DUP2
00001a5c: LT
00001a5d: ISZERO
00001a5e: PUSH2 0x1ab0
00001a61: JUMPI
00001a62: PUSH1 0x00
00001a64: PUSH2 0x1a80
00001a67: DUP10
00001a68: DUP10
00001a69: DUP5
00001a6a: DUP2
00001a6b: MLOAD
00001a6c: DUP2
00001a6d: LT
00001a6e: PUSH2 0x1a73
00001a71: JUMPI
00001a72: INVALID
00001a73: JUMPDEST
00001a74: PUSH1 0x20
00001a76: MUL
00001a77: PUSH1 0x20
00001a79: ADD
00001a7a: ADD
00001a7b: MLOAD
00001a7c: PUSH2 0x1ee3
00001a7f: JUMP
00001a80: JUMPDEST
00001a81: SWAP1
00001a82: POP
00001a83: DUP1
00001a84: DUP4
00001a85: DUP4
00001a86: DUP2
00001a87: MLOAD
00001a88: DUP2
00001a89: LT
00001a8a: PUSH2 0x1a8f
00001a8d: JUMPI
00001a8e: INVALID
00001a8f: JUMPDEST
00001a90: PUSH1 0x01
00001a92: PUSH1 0x01
00001a94: PUSH1 0xa0
00001a96: SHL
00001a97: SUB
00001a98: SWAP1
00001a99: SWAP3
00001a9a: AND
00001a9b: PUSH1 0x20
00001a9d: SWAP3
00001a9e: DUP4
00001a9f: MUL
00001aa0: SWAP2
00001aa1: SWAP1
00001aa2: SWAP2
00001aa3: ADD
00001aa4: SWAP1
00001aa5: SWAP2
00001aa6: ADD
00001aa7: MSTORE
00001aa8: POP
00001aa9: PUSH1 0x01
00001aab: ADD
00001aac: PUSH2 0x1a59
00001aaf: JUMP
00001ab0: JUMPDEST
00001ab1: POP
00001ab2: PUSH1 0x00
00001ab4: DUP6
00001ab5: PUSH2 0x1b41
00001ab8: JUMPI
00001ab9: PUSH1 0x00
00001abb: JUMPDEST
00001abc: DUP6
00001abd: DUP2
00001abe: LT
00001abf: ISZERO
00001ac0: PUSH2 0x1b3b
00001ac3: JUMPI
00001ac4: PUSH1 0x00
00001ac6: PUSH1 0x05
00001ac8: DUP3
00001ac9: DUP2
00001aca: SLOAD
00001acb: DUP2
00001acc: LT
00001acd: PUSH2 0x1ad2
00001ad0: JUMPI
00001ad1: INVALID
00001ad2: JUMPDEST
00001ad3: PUSH1 0x00
00001ad5: SWAP2
00001ad6: DUP3
00001ad7: MSTORE
00001ad8: PUSH1 0x20
00001ada: DUP3
00001adb: KECCAK256
00001adc: ADD
00001add: SLOAD
00001ade: PUSH1 0x01
00001ae0: PUSH1 0x01
00001ae2: PUSH1 0xa0
00001ae4: SHL
00001ae5: SUB
00001ae6: AND
00001ae7: SWAP2
00001ae8: POP
00001ae9: JUMPDEST
00001aea: DUP6
00001aeb: DUP2
00001aec: LT
00001aed: ISZERO
00001aee: PUSH2 0x1b31
00001af1: JUMPI
00001af2: DUP5
00001af3: DUP2
00001af4: DUP2
00001af5: MLOAD
00001af6: DUP2
00001af7: LT
00001af8: PUSH2 0x1afd
00001afb: JUMPI
00001afc: INVALID
00001afd: JUMPDEST
00001afe: PUSH1 0x20
00001b00: MUL
00001b01: PUSH1 0x20
00001b03: ADD
00001b04: ADD
00001b05: MLOAD
00001b06: PUSH1 0x01
00001b08: PUSH1 0x01
00001b0a: PUSH1 0xa0
00001b0c: SHL
00001b0d: SUB
00001b0e: AND
00001b0f: DUP3
00001b10: PUSH1 0x01
00001b12: PUSH1 0x01
00001b14: PUSH1 0xa0
00001b16: SHL
00001b17: SUB
00001b18: AND
00001b19: EQ
00001b1a: ISZERO
00001b1b: PUSH2 0x1b29
00001b1e: JUMPI
00001b1f: DUP4
00001b20: PUSH1 0x01
00001b22: ADD
00001b23: SWAP4
00001b24: POP
00001b25: PUSH2 0x1b31
00001b28: JUMP
00001b29: JUMPDEST
00001b2a: PUSH1 0x01
00001b2c: ADD
00001b2d: PUSH2 0x1ae9
00001b30: JUMP
00001b31: JUMPDEST
00001b32: POP
00001b33: POP
00001b34: PUSH1 0x01
00001b36: ADD
00001b37: PUSH2 0x1abb
00001b3a: JUMP
00001b3b: JUMPDEST
00001b3c: POP
00001b3d: PUSH2 0x1bc6
00001b40: JUMP
00001b41: JUMPDEST
00001b42: PUSH1 0x00
00001b44: JUMPDEST
00001b45: DUP6
00001b46: DUP2
00001b47: LT
00001b48: ISZERO
00001b49: PUSH2 0x1bc4
00001b4c: JUMPI
00001b4d: PUSH1 0x00
00001b4f: PUSH1 0x06
00001b51: DUP3
00001b52: DUP2
00001b53: SLOAD
00001b54: DUP2
00001b55: LT
00001b56: PUSH2 0x1b5b
00001b59: JUMPI
00001b5a: INVALID
00001b5b: JUMPDEST
00001b5c: PUSH1 0x00
00001b5e: SWAP2
00001b5f: DUP3
00001b60: MSTORE
00001b61: PUSH1 0x20
00001b63: DUP3
00001b64: KECCAK256
00001b65: ADD
00001b66: SLOAD
00001b67: PUSH1 0x01
00001b69: PUSH1 0x01
00001b6b: PUSH1 0xa0
00001b6d: SHL
00001b6e: SUB
00001b6f: AND
00001b70: SWAP2
00001b71: POP
00001b72: JUMPDEST
00001b73: DUP6
00001b74: DUP2
00001b75: LT
00001b76: ISZERO
00001b77: PUSH2 0x1bba
00001b7a: JUMPI
00001b7b: DUP5
00001b7c: DUP2
00001b7d: DUP2
00001b7e: MLOAD
00001b7f: DUP2
00001b80: LT
00001b81: PUSH2 0x1b86
00001b84: JUMPI
00001b85: INVALID
00001b86: JUMPDEST
00001b87: PUSH1 0x20
00001b89: MUL
00001b8a: PUSH1 0x20
00001b8c: ADD
00001b8d: ADD
00001b8e: MLOAD
00001b8f: PUSH1 0x01
00001b91: PUSH1 0x01
00001b93: PUSH1 0xa0
00001b95: SHL
00001b96: SUB
00001b97: AND
00001b98: DUP3
00001b99: PUSH1 0x01
00001b9b: PUSH1 0x01
00001b9d: PUSH1 0xa0
00001b9f: SHL
00001ba0: SUB
00001ba1: AND
00001ba2: EQ
00001ba3: ISZERO
00001ba4: PUSH2 0x1bb2
00001ba7: JUMPI
00001ba8: DUP4
00001ba9: PUSH1 0x01
00001bab: ADD
00001bac: SWAP4
00001bad: POP
00001bae: PUSH2 0x1bba
00001bb1: JUMP
00001bb2: JUMPDEST
00001bb3: PUSH1 0x01
00001bb5: ADD
00001bb6: PUSH2 0x1b72
00001bb9: JUMP
00001bba: JUMPDEST
00001bbb: POP
00001bbc: POP
00001bbd: PUSH1 0x01
00001bbf: ADD
00001bc0: PUSH2 0x1b44
00001bc3: JUMP
00001bc4: JUMPDEST
00001bc5: POP
00001bc6: JUMPDEST
00001bc7: DUP4
00001bc8: DUP2
00001bc9: LT
00001bca: ISZERO
00001bcb: PUSH2 0x1be6
00001bce: JUMPI
00001bcf: PUSH1 0x40
00001bd1: MLOAD
00001bd2: PUSH3 0x461bcd
00001bd6: PUSH1 0xe5
00001bd8: SHL
00001bd9: DUP2
00001bda: MSTORE
00001bdb: PUSH1 0x04
00001bdd: ADD
00001bde: PUSH2 0x07b3
00001be1: SWAP1
00001be2: PUSH2 0x3158
00001be5: JUMP
00001be6: JUMPDEST
00001be7: POP
00001be8: POP
00001be9: POP
00001bea: POP
00001beb: POP
00001bec: POP
00001bed: POP
00001bee: POP
00001bef: JUMP
00001bf0: JUMPDEST
00001bf1: PUSH1 0x00
00001bf3: PUSH2 0x1c32
00001bf6: DUP4
00001bf7: DUP4
00001bf8: PUSH1 0x40
00001bfa: MLOAD
00001bfb: DUP1
00001bfc: PUSH1 0x40
00001bfe: ADD
00001bff: PUSH1 0x40
00001c01: MSTORE
00001c02: DUP1
00001c03: PUSH1 0x1e
00001c05: DUP2
00001c06: MSTORE
00001c07: PUSH1 0x20
00001c09: ADD
00001c0a: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00001c2b: DUP2
00001c2c: MSTORE
00001c2d: POP
00001c2e: PUSH2 0x1f6c
00001c31: JUMP
00001c32: JUMPDEST
00001c33: SWAP4
00001c34: SWAP3
00001c35: POP
00001c36: POP
00001c37: POP
00001c38: JUMP
00001c39: JUMPDEST
00001c3a: CALLER
00001c3b: SWAP1
00001c3c: JUMP
00001c3d: JUMPDEST
00001c3e: PUSH2 0x1c4e
00001c41: PUSH1 0x04
00001c43: DUP3
00001c44: PUSH4 0xffffffff
00001c49: PUSH2 0x1f98
00001c4c: AND
00001c4d: JUMP
00001c4e: JUMPDEST
00001c4f: PUSH1 0x40
00001c51: MLOAD
00001c52: PUSH1 0x01
00001c54: PUSH1 0x01
00001c56: PUSH1 0xa0
00001c58: SHL
00001c59: SUB
00001c5a: DUP3
00001c5b: AND
00001c5c: SWAP1
00001c5d: PUSH32 0xee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f
00001c7e: SWAP1
00001c7f: PUSH1 0x00
00001c81: SWAP1
00001c82: LOG2
00001c83: POP
00001c84: JUMP
00001c85: JUMPDEST
00001c86: PUSH2 0x1c8d
00001c89: PUSH2 0x1564
00001c8c: JUMP
00001c8d: JUMPDEST
00001c8e: ISZERO
00001c8f: PUSH2 0x153d
00001c92: JUMPI
00001c93: PUSH1 0x40
00001c95: MLOAD
00001c96: PUSH3 0x461bcd
00001c9a: PUSH1 0xe5
00001c9c: SHL
00001c9d: DUP2
00001c9e: MSTORE
00001c9f: PUSH1 0x04
00001ca1: ADD
00001ca2: PUSH2 0x07b3
00001ca5: SWAP1
00001ca6: PUSH2 0x3178
00001ca9: JUMP
00001caa: JUMPDEST
00001cab: CHAINID
00001cac: SWAP1
00001cad: JUMP
00001cae: JUMPDEST
00001caf: PUSH2 0x1cb7
00001cb2: DUP2
00001cb3: PUSH2 0x1ea7
00001cb6: JUMP
00001cb7: JUMPDEST
00001cb8: PUSH2 0x1cd3
00001cbb: JUMPI
00001cbc: PUSH1 0x40
00001cbe: MLOAD
00001cbf: PUSH3 0x461bcd
00001cc3: PUSH1 0xe5
00001cc5: SHL
00001cc6: DUP2
00001cc7: MSTORE
00001cc8: PUSH1 0x04
00001cca: ADD
00001ccb: PUSH2 0x07b3
00001cce: SWAP1
00001ccf: PUSH2 0x30d8
00001cd2: JUMP
00001cd3: JUMPDEST
00001cd4: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00001cf5: SSTORE
00001cf6: JUMP
00001cf7: JUMPDEST
00001cf8: PUSH2 0x1d08
00001cfb: PUSH1 0x04
00001cfd: DUP3
00001cfe: PUSH4 0xffffffff
00001d03: PUSH2 0x1fe4
00001d06: AND
00001d07: JUMP
00001d08: JUMPDEST
00001d09: PUSH1 0x40
00001d0b: MLOAD
00001d0c: PUSH1 0x01
00001d0e: PUSH1 0x01
00001d10: PUSH1 0xa0
00001d12: SHL
00001d13: SUB
00001d14: DUP3
00001d15: AND
00001d16: SWAP1
00001d17: PUSH32 0x270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b6
00001d38: SWAP1
00001d39: PUSH1 0x00
00001d3b: SWAP1
00001d3c: LOG2
00001d3d: POP
00001d3e: JUMP
00001d3f: JUMPDEST
00001d40: PUSH1 0x00
00001d42: PUSH1 0x01
00001d44: PUSH1 0x01
00001d46: PUSH1 0xa0
00001d48: SHL
00001d49: SUB
00001d4a: DUP3
00001d4b: AND
00001d4c: PUSH2 0x1d67
00001d4f: JUMPI
00001d50: PUSH1 0x40
00001d52: MLOAD
00001d53: PUSH3 0x461bcd
00001d57: PUSH1 0xe5
00001d59: SHL
00001d5a: DUP2
00001d5b: MSTORE
00001d5c: PUSH1 0x04
00001d5e: ADD
00001d5f: PUSH2 0x07b3
00001d62: SWAP1
00001d63: PUSH2 0x3118
00001d66: JUMP
00001d67: JUMPDEST
00001d68: POP
00001d69: PUSH1 0x01
00001d6b: PUSH1 0x01
00001d6d: PUSH1 0xa0
00001d6f: SHL
00001d70: SUB
00001d71: AND
00001d72: PUSH1 0x00
00001d74: SWAP1
00001d75: DUP2
00001d76: MSTORE
00001d77: PUSH1 0x20
00001d79: SWAP2
00001d7a: SWAP1
00001d7b: SWAP2
00001d7c: MSTORE
00001d7d: PUSH1 0x40
00001d7f: SWAP1
00001d80: KECCAK256
00001d81: SLOAD
00001d82: PUSH1 0xff
00001d84: AND
00001d85: SWAP1
00001d86: JUMP
00001d87: JUMPDEST
00001d88: PUSH2 0x1d98
00001d8b: PUSH1 0x03
00001d8d: DUP3
00001d8e: PUSH4 0xffffffff
00001d93: PUSH2 0x1fe4
00001d96: AND
00001d97: JUMP
00001d98: JUMPDEST
00001d99: PUSH1 0x40
00001d9b: MLOAD
00001d9c: PUSH1 0x01
00001d9e: PUSH1 0x01
00001da0: PUSH1 0xa0
00001da2: SHL
00001da3: SUB
00001da4: DUP3
00001da5: AND
00001da6: SWAP1
00001da7: PUSH32 0x0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e165
00001dc8: SWAP1
00001dc9: PUSH1 0x00
00001dcb: SWAP1
00001dcc: LOG2
00001dcd: POP
00001dce: JUMP
00001dcf: JUMPDEST
00001dd0: PUSH2 0x1de0
00001dd3: PUSH1 0x01
00001dd5: DUP3
00001dd6: PUSH4 0xffffffff
00001ddb: PUSH2 0x1fe4
00001dde: AND
00001ddf: JUMP
00001de0: JUMPDEST
00001de1: PUSH1 0x40
00001de3: MLOAD
00001de4: PUSH1 0x01
00001de6: PUSH1 0x01
00001de8: PUSH1 0xa0
00001dea: SHL
00001deb: SUB
00001dec: DUP3
00001ded: AND
00001dee: SWAP1
00001def: PUSH32 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e
00001e10: SWAP1
00001e11: PUSH1 0x00
00001e13: SWAP1
00001e14: LOG2
00001e15: POP
00001e16: JUMP
00001e17: JUMPDEST
00001e18: PUSH2 0x1e28
00001e1b: PUSH1 0x03
00001e1d: DUP3
00001e1e: PUSH4 0xffffffff
00001e23: PUSH2 0x1f98
00001e26: AND
00001e27: JUMP
00001e28: JUMPDEST
00001e29: PUSH1 0x40
00001e2b: MLOAD
00001e2c: PUSH1 0x01
00001e2e: PUSH1 0x01
00001e30: PUSH1 0xa0
00001e32: SHL
00001e33: SUB
00001e34: DUP3
00001e35: AND
00001e36: SWAP1
00001e37: PUSH32 0x22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd20961299
00001e58: SWAP1
00001e59: PUSH1 0x00
00001e5b: SWAP1
00001e5c: LOG2
00001e5d: POP
00001e5e: JUMP
00001e5f: JUMPDEST
00001e60: PUSH2 0x1e70
00001e63: PUSH1 0x01
00001e65: DUP3
00001e66: PUSH4 0xffffffff
00001e6b: PUSH2 0x1f98
00001e6e: AND
00001e6f: JUMP
00001e70: JUMPDEST
00001e71: PUSH1 0x40
00001e73: MLOAD
00001e74: PUSH1 0x01
00001e76: PUSH1 0x01
00001e78: PUSH1 0xa0
00001e7a: SHL
00001e7b: SUB
00001e7c: DUP3
00001e7d: AND
00001e7e: SWAP1
00001e7f: PUSH32 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8
00001ea0: SWAP1
00001ea1: PUSH1 0x00
00001ea3: SWAP1
00001ea4: LOG2
00001ea5: POP
00001ea6: JUMP
00001ea7: JUMPDEST
00001ea8: PUSH1 0x00
00001eaa: DUP2
00001eab: EXTCODEHASH
00001eac: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
00001ecd: DUP2
00001ece: ISZERO
00001ecf: DUP1
00001ed0: ISZERO
00001ed1: SWAP1
00001ed2: PUSH2 0x1edb
00001ed5: JUMPI
00001ed6: POP
00001ed7: DUP1
00001ed8: DUP3
00001ed9: EQ
00001eda: ISZERO
00001edb: JUMPDEST
00001edc: SWAP5
00001edd: SWAP4
00001ede: POP
00001edf: POP
00001ee0: POP
00001ee1: POP
00001ee2: JUMP
00001ee3: JUMPDEST
00001ee4: PUSH1 0x00
00001ee6: DUP2
00001ee7: MLOAD
00001ee8: PUSH1 0x41
00001eea: EQ
00001eeb: PUSH2 0x1ef3
00001eee: JUMPI
00001eef: PUSH1 0x00
00001ef1: DUP1
00001ef2: REVERT
00001ef3: JUMPDEST
00001ef4: PUSH1 0x20
00001ef6: DUP3
00001ef7: ADD
00001ef8: MLOAD
00001ef9: PUSH1 0x40
00001efb: DUP4
00001efc: ADD
00001efd: MLOAD
00001efe: PUSH1 0x41
00001f00: DUP5
00001f01: ADD
00001f02: MLOAD
00001f03: PUSH1 0xff
00001f05: AND
00001f06: PUSH1 0x1b
00001f08: DUP2
00001f09: LT
00001f0a: ISZERO
00001f0b: PUSH2 0x1f12
00001f0e: JUMPI
00001f0f: PUSH1 0x1b
00001f11: ADD
00001f12: JUMPDEST
00001f13: PUSH1 0x01
00001f15: DUP7
00001f16: DUP3
00001f17: DUP6
00001f18: DUP6
00001f19: PUSH1 0x40
00001f1b: MLOAD
00001f1c: PUSH1 0x00
00001f1e: DUP2
00001f1f: MSTORE
00001f20: PUSH1 0x20
00001f22: ADD
00001f23: PUSH1 0x40
00001f25: MSTORE
00001f26: PUSH1 0x40
00001f28: MLOAD
00001f29: PUSH2 0x1f35
00001f2c: SWAP5
00001f2d: SWAP4
00001f2e: SWAP3
00001f2f: SWAP2
00001f30: SWAP1
00001f31: PUSH2 0x2fd9
00001f34: JUMP
00001f35: JUMPDEST
00001f36: PUSH1 0x20
00001f38: PUSH1 0x40
00001f3a: MLOAD
00001f3b: PUSH1 0x20
00001f3d: DUP2
00001f3e: SUB
00001f3f: SWAP1
00001f40: DUP1
00001f41: DUP5
00001f42: SUB
00001f43: SWAP1
00001f44: DUP6
00001f45: GAS
00001f46: STATICCALL
00001f47: ISZERO
00001f48: DUP1
00001f49: ISZERO
00001f4a: PUSH2 0x1f57
00001f4d: JUMPI
00001f4e: RETURNDATASIZE
00001f4f: PUSH1 0x00
00001f51: DUP1
00001f52: RETURNDATACOPY
00001f53: RETURNDATASIZE
00001f54: PUSH1 0x00
00001f56: REVERT
00001f57: JUMPDEST
00001f58: POP
00001f59: POP
00001f5a: PUSH1 0x40
00001f5c: MLOAD
00001f5d: PUSH1 0x1f
00001f5f: NOT
00001f60: ADD
00001f61: MLOAD
00001f62: SWAP8
00001f63: SWAP7
00001f64: POP
00001f65: POP
00001f66: POP
00001f67: POP
00001f68: POP
00001f69: POP
00001f6a: POP
00001f6b: JUMP
00001f6c: JUMPDEST
00001f6d: PUSH1 0x00
00001f6f: DUP2
00001f70: DUP5
00001f71: DUP5
00001f72: GT
00001f73: ISZERO
00001f74: PUSH2 0x1f90
00001f77: JUMPI
00001f78: PUSH1 0x40
00001f7a: MLOAD
00001f7b: PUSH3 0x461bcd
00001f7f: PUSH1 0xe5
00001f81: SHL
00001f82: DUP2
00001f83: MSTORE
00001f84: PUSH1 0x04
00001f86: ADD
00001f87: PUSH2 0x07b3
00001f8a: SWAP2
00001f8b: SWAP1
00001f8c: PUSH2 0x3017
00001f8f: JUMP
00001f90: JUMPDEST
00001f91: POP
00001f92: POP
00001f93: POP
00001f94: SWAP1
00001f95: SUB
00001f96: SWAP1
00001f97: JUMP
00001f98: JUMPDEST
00001f99: PUSH2 0x1fa2
00001f9c: DUP3
00001f9d: DUP3
00001f9e: PUSH2 0x1d3f
00001fa1: JUMP
00001fa2: JUMPDEST
00001fa3: ISZERO
00001fa4: PUSH2 0x1fbf
00001fa7: JUMPI
00001fa8: PUSH1 0x40
00001faa: MLOAD
00001fab: PUSH3 0x461bcd
00001faf: PUSH1 0xe5
00001fb1: SHL
00001fb2: DUP2
00001fb3: MSTORE
00001fb4: PUSH1 0x04
00001fb6: ADD
00001fb7: PUSH2 0x07b3
00001fba: SWAP1
00001fbb: PUSH2 0x3048
00001fbe: JUMP
00001fbf: JUMPDEST
00001fc0: PUSH1 0x01
00001fc2: PUSH1 0x01
00001fc4: PUSH1 0xa0
00001fc6: SHL
00001fc7: SUB
00001fc8: AND
00001fc9: PUSH1 0x00
00001fcb: SWAP1
00001fcc: DUP2
00001fcd: MSTORE
00001fce: PUSH1 0x20
00001fd0: SWAP2
00001fd1: SWAP1
00001fd2: SWAP2
00001fd3: MSTORE
00001fd4: PUSH1 0x40
00001fd6: SWAP1
00001fd7: KECCAK256
00001fd8: DUP1
00001fd9: SLOAD
00001fda: PUSH1 0xff
00001fdc: NOT
00001fdd: AND
00001fde: PUSH1 0x01
00001fe0: OR
00001fe1: SWAP1
00001fe2: SSTORE
00001fe3: JUMP
00001fe4: JUMPDEST
00001fe5: PUSH2 0x1fee
00001fe8: DUP3
00001fe9: DUP3
00001fea: PUSH2 0x1d3f
00001fed: JUMP
00001fee: JUMPDEST
00001fef: PUSH2 0x200a
00001ff2: JUMPI
00001ff3: PUSH1 0x40
00001ff5: MLOAD
00001ff6: PUSH3 0x461bcd
00001ffa: PUSH1 0xe5
00001ffc: SHL
00001ffd: DUP2
00001ffe: MSTORE
00001fff: PUSH1 0x04
00002001: ADD
00002002: PUSH2 0x07b3
00002005: SWAP1
00002006: PUSH2 0x30e8
00002009: JUMP
0000200a: JUMPDEST
0000200b: PUSH1 0x01
0000200d: PUSH1 0x01
0000200f: PUSH1 0xa0
00002011: SHL
00002012: SUB
00002013: AND
00002014: PUSH1 0x00
00002016: SWAP1
00002017: DUP2
00002018: MSTORE
00002019: PUSH1 0x20
0000201b: SWAP2
0000201c: SWAP1
0000201d: SWAP2
0000201e: MSTORE
0000201f: PUSH1 0x40
00002021: SWAP1
00002022: KECCAK256
00002023: DUP1
00002024: SLOAD
00002025: PUSH1 0xff
00002027: NOT
00002028: AND
00002029: SWAP1
0000202a: SSTORE
0000202b: JUMP
0000202c: JUMPDEST
0000202d: DUP3
0000202e: DUP1
0000202f: SLOAD
00002030: DUP3
00002031: DUP3
00002032: SSTORE
00002033: SWAP1
00002034: PUSH1 0x00
00002036: MSTORE
00002037: PUSH1 0x20
00002039: PUSH1 0x00
0000203b: KECCAK256
0000203c: SWAP1
0000203d: DUP2
0000203e: ADD
0000203f: SWAP3
00002040: DUP3
00002041: ISZERO
00002042: PUSH2 0x208e
00002045: JUMPI
00002046: SWAP2
00002047: PUSH1 0x20
00002049: MUL
0000204a: DUP3
0000204b: ADD
0000204c: JUMPDEST
0000204d: DUP3
0000204e: DUP2
0000204f: GT
00002050: ISZERO
00002051: PUSH2 0x208e
00002054: JUMPI
00002055: DUP3
00002056: MLOAD
00002057: DUP3
00002058: SLOAD
00002059: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000206e: NOT
0000206f: AND
00002070: PUSH1 0x01
00002072: PUSH1 0x01
00002074: PUSH1 0xa0
00002076: SHL
00002077: SUB
00002078: SWAP1
00002079: SWAP2
0000207a: AND
0000207b: OR
0000207c: DUP3
0000207d: SSTORE
0000207e: PUSH1 0x20
00002080: SWAP1
00002081: SWAP3
00002082: ADD
00002083: SWAP2
00002084: PUSH1 0x01
00002086: SWAP1
00002087: SWAP2
00002088: ADD
00002089: SWAP1
0000208a: PUSH2 0x204c
0000208d: JUMP
0000208e: JUMPDEST
0000208f: POP
00002090: PUSH2 0x209a
00002093: SWAP3
00002094: SWAP2
00002095: POP
00002096: PUSH2 0x209e
00002099: JUMP
0000209a: JUMPDEST
0000209b: POP
0000209c: SWAP1
0000209d: JUMP
0000209e: JUMPDEST
0000209f: PUSH2 0x156b
000020a2: SWAP2
000020a3: SWAP1
000020a4: JUMPDEST
000020a5: DUP1
000020a6: DUP3
000020a7: GT
000020a8: ISZERO
000020a9: PUSH2 0x209a
000020ac: JUMPI
000020ad: DUP1
000020ae: SLOAD
000020af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020c4: NOT
000020c5: AND
000020c6: DUP2
000020c7: SSTORE
000020c8: PUSH1 0x01
000020ca: ADD
000020cb: PUSH2 0x20a4
000020ce: JUMP
000020cf: JUMPDEST
000020d0: DUP1
000020d1: CALLDATALOAD
000020d2: PUSH2 0x1481
000020d5: DUP2
000020d6: PUSH2 0x32c3
000020d9: JUMP
000020da: JUMPDEST
000020db: PUSH1 0x00
000020dd: DUP3
000020de: PUSH1 0x1f
000020e0: DUP4
000020e1: ADD
000020e2: SLT
000020e3: PUSH2 0x20eb
000020e6: JUMPI
000020e7: PUSH1 0x00
000020e9: DUP1
000020ea: REVERT
000020eb: JUMPDEST
000020ec: DUP2
000020ed: CALLDATALOAD
000020ee: PUSH2 0x20fe
000020f1: PUSH2 0x20f9
000020f4: DUP3
000020f5: PUSH2 0x31dd
000020f8: JUMP
000020f9: JUMPDEST
000020fa: PUSH2 0x31b6
000020fd: JUMP
000020fe: JUMPDEST
000020ff: SWAP2
00002100: POP
00002101: DUP2
00002102: DUP2
00002103: DUP4
00002104: MSTORE
00002105: PUSH1 0x20
00002107: DUP5
00002108: ADD
00002109: SWAP4
0000210a: POP
0000210b: PUSH1 0x20
0000210d: DUP2
0000210e: ADD
0000210f: SWAP1
00002110: POP
00002111: DUP4
00002112: DUP6
00002113: PUSH1 0x20
00002115: DUP5
00002116: MUL
00002117: DUP3
00002118: ADD
00002119: GT
0000211a: ISZERO
0000211b: PUSH2 0x2123
0000211e: JUMPI
0000211f: PUSH1 0x00
00002121: DUP1
00002122: REVERT
00002123: JUMPDEST
00002124: PUSH1 0x00
00002126: JUMPDEST
00002127: DUP4
00002128: DUP2
00002129: LT
0000212a: ISZERO
0000212b: PUSH2 0x214f
0000212e: JUMPI
0000212f: DUP2
00002130: PUSH2 0x2139
00002133: DUP9
00002134: DUP3
00002135: PUSH2 0x20cf
00002138: JUMP
00002139: JUMPDEST
0000213a: DUP5
0000213b: MSTORE
0000213c: POP
0000213d: PUSH1 0x20
0000213f: SWAP3
00002140: DUP4
00002141: ADD
00002142: SWAP3
00002143: SWAP2
00002144: SWAP1
00002145: SWAP2
00002146: ADD
00002147: SWAP1
00002148: PUSH1 0x01
0000214a: ADD
0000214b: PUSH2 0x2126
0000214e: JUMP
0000214f: JUMPDEST
00002150: POP
00002151: POP
00002152: POP
00002153: POP
00002154: SWAP3
00002155: SWAP2
00002156: POP
00002157: POP
00002158: JUMP
00002159: JUMPDEST
0000215a: PUSH1 0x00
0000215c: DUP3
0000215d: PUSH1 0x1f
0000215f: DUP4
00002160: ADD
00002161: SLT
00002162: PUSH2 0x216a
00002165: JUMPI
00002166: PUSH1 0x00
00002168: DUP1
00002169: REVERT
0000216a: JUMPDEST
0000216b: DUP2
0000216c: CALLDATALOAD
0000216d: PUSH2 0x2178
00002170: PUSH2 0x20f9
00002173: DUP3
00002174: PUSH2 0x31dd
00002177: JUMP
00002178: JUMPDEST
00002179: DUP2
0000217a: DUP2
0000217b: MSTORE
0000217c: PUSH1 0x20
0000217e: SWAP4
0000217f: DUP5
00002180: ADD
00002181: SWAP4
00002182: SWAP1
00002183: SWAP3
00002184: POP
00002185: DUP3
00002186: ADD
00002187: DUP4
00002188: PUSH1 0x00
0000218a: JUMPDEST
0000218b: DUP4
0000218c: DUP2
0000218d: LT
0000218e: ISZERO
0000218f: PUSH2 0x214f
00002192: JUMPI
00002193: DUP2
00002194: CALLDATALOAD
00002195: DUP7
00002196: ADD
00002197: PUSH2 0x21a0
0000219a: DUP9
0000219b: DUP3
0000219c: PUSH2 0x2213
0000219f: JUMP
000021a0: JUMPDEST
000021a1: DUP5
000021a2: MSTORE
000021a3: POP
000021a4: PUSH1 0x20
000021a6: SWAP3
000021a7: DUP4
000021a8: ADD
000021a9: SWAP3
000021aa: SWAP2
000021ab: SWAP1
000021ac: SWAP2
000021ad: ADD
000021ae: SWAP1
000021af: PUSH1 0x01
000021b1: ADD
000021b2: PUSH2 0x218a
000021b5: JUMP
000021b6: JUMPDEST
000021b7: PUSH1 0x00
000021b9: DUP3
000021ba: PUSH1 0x1f
000021bc: DUP4
000021bd: ADD
000021be: SLT
000021bf: PUSH2 0x21c7
000021c2: JUMPI
000021c3: PUSH1 0x00
000021c5: DUP1
000021c6: REVERT
000021c7: JUMPDEST
000021c8: DUP2
000021c9: CALLDATALOAD
000021ca: PUSH2 0x21d5
000021cd: PUSH2 0x20f9
000021d0: DUP3
000021d1: PUSH2 0x31dd
000021d4: JUMP
000021d5: JUMPDEST
000021d6: DUP2
000021d7: DUP2
000021d8: MSTORE
000021d9: PUSH1 0x20
000021db: SWAP4
000021dc: DUP5
000021dd: ADD
000021de: SWAP4
000021df: SWAP1
000021e0: SWAP3
000021e1: POP
000021e2: DUP3
000021e3: ADD
000021e4: DUP4
000021e5: PUSH1 0x00
000021e7: JUMPDEST
000021e8: DUP4
000021e9: DUP2
000021ea: LT
000021eb: ISZERO
000021ec: PUSH2 0x214f
000021ef: JUMPI
000021f0: DUP2
000021f1: CALLDATALOAD
000021f2: DUP7
000021f3: ADD
000021f4: PUSH2 0x21fd
000021f7: DUP9
000021f8: DUP3
000021f9: PUSH2 0x2213
000021fc: JUMP
000021fd: JUMPDEST
000021fe: DUP5
000021ff: MSTORE
00002200: POP
00002201: PUSH1 0x20
00002203: SWAP3
00002204: DUP4
00002205: ADD
00002206: SWAP3
00002207: SWAP2
00002208: SWAP1
00002209: SWAP2
0000220a: ADD
0000220b: SWAP1
0000220c: PUSH1 0x01
0000220e: ADD
0000220f: PUSH2 0x21e7
00002212: JUMP
00002213: JUMPDEST
00002214: PUSH1 0x00
00002216: DUP3
00002217: PUSH1 0x1f
00002219: DUP4
0000221a: ADD
0000221b: SLT
0000221c: PUSH2 0x2224
0000221f: JUMPI
00002220: PUSH1 0x00
00002222: DUP1
00002223: REVERT
00002224: JUMPDEST
00002225: DUP2
00002226: CALLDATALOAD
00002227: PUSH2 0x2232
0000222a: PUSH2 0x20f9
0000222d: DUP3
0000222e: PUSH2 0x31fe
00002231: JUMP
00002232: JUMPDEST
00002233: SWAP2
00002234: POP
00002235: DUP1
00002236: DUP3
00002237: MSTORE
00002238: PUSH1 0x20
0000223a: DUP4
0000223b: ADD
0000223c: PUSH1 0x20
0000223e: DUP4
0000223f: ADD
00002240: DUP6
00002241: DUP4
00002242: DUP4
00002243: ADD
00002244: GT
00002245: ISZERO
00002246: PUSH2 0x224e
00002249: JUMPI
0000224a: PUSH1 0x00
0000224c: DUP1
0000224d: REVERT
0000224e: JUMPDEST
0000224f: PUSH2 0x2259
00002252: DUP4
00002253: DUP3
00002254: DUP5
00002255: PUSH2 0x3266
00002258: JUMP
00002259: JUMPDEST
0000225a: POP
0000225b: POP
0000225c: POP
0000225d: SWAP3
0000225e: SWAP2
0000225f: POP
00002260: POP
00002261: JUMP
00002262: JUMPDEST
00002263: DUP1
00002264: CALLDATALOAD
00002265: PUSH2 0x1481
00002268: DUP2
00002269: PUSH2 0x32d7
0000226c: JUMP
0000226d: JUMPDEST
0000226e: DUP1
0000226f: MLOAD
00002270: PUSH2 0x1481
00002273: DUP2
00002274: PUSH2 0x32d7
00002277: JUMP
00002278: JUMPDEST
00002279: PUSH1 0x00
0000227b: PUSH1 0x20
0000227d: DUP3
0000227e: DUP5
0000227f: SUB
00002280: SLT
00002281: ISZERO
00002282: PUSH2 0x228a
00002285: JUMPI
00002286: PUSH1 0x00
00002288: DUP1
00002289: REVERT
0000228a: JUMPDEST
0000228b: PUSH1 0x00
0000228d: PUSH2 0x1edb
00002290: DUP5
00002291: DUP5
00002292: PUSH2 0x20cf
00002295: JUMP
00002296: JUMPDEST
00002297: PUSH1 0x00
00002299: DUP1
0000229a: PUSH1 0x00
0000229c: DUP1
0000229d: PUSH1 0x00
0000229f: DUP1
000022a0: PUSH1 0xc0
000022a2: DUP8
000022a3: DUP10
000022a4: SUB
000022a5: SLT
000022a6: ISZERO
000022a7: PUSH2 0x22af
000022aa: JUMPI
000022ab: PUSH1 0x00
000022ad: DUP1
000022ae: REVERT
000022af: JUMPDEST
000022b0: PUSH1 0x00
000022b2: PUSH2 0x22bb
000022b5: DUP10
000022b6: DUP10
000022b7: PUSH2 0x20cf
000022ba: JUMP
000022bb: JUMPDEST
000022bc: SWAP7
000022bd: POP
000022be: POP
000022bf: PUSH1 0x20
000022c1: PUSH2 0x22cc
000022c4: DUP10
000022c5: DUP3
000022c6: DUP11
000022c7: ADD
000022c8: PUSH2 0x20cf
000022cb: JUMP
000022cc: JUMPDEST
000022cd: SWAP6
000022ce: POP
000022cf: POP
000022d0: PUSH1 0x40
000022d2: PUSH2 0x22dd
000022d5: DUP10
000022d6: DUP3
000022d7: DUP11
000022d8: ADD
000022d9: PUSH2 0x20cf
000022dc: JUMP
000022dd: JUMPDEST
000022de: SWAP5
000022df: POP
000022e0: POP
000022e1: PUSH1 0x60
000022e3: PUSH2 0x22ee
000022e6: DUP10
000022e7: DUP3
000022e8: DUP11
000022e9: ADD
000022ea: PUSH2 0x2262
000022ed: JUMP
000022ee: JUMPDEST
000022ef: SWAP4
000022f0: POP
000022f1: POP
000022f2: PUSH1 0x80
000022f4: DUP8
000022f5: ADD
000022f6: CALLDATALOAD
000022f7: PUSH8 0xffffffffffffffff
00002300: DUP2
00002301: GT
00002302: ISZERO
00002303: PUSH2 0x230b
00002306: JUMPI
00002307: PUSH1 0x00
00002309: DUP1
0000230a: REVERT
0000230b: JUMPDEST
0000230c: PUSH2 0x2317
0000230f: DUP10
00002310: DUP3
00002311: DUP11
00002312: ADD
00002313: PUSH2 0x2213
00002316: JUMP
00002317: JUMPDEST
00002318: SWAP3
00002319: POP
0000231a: POP
0000231b: PUSH1 0xa0
0000231d: DUP8
0000231e: ADD
0000231f: CALLDATALOAD
00002320: PUSH8 0xffffffffffffffff
00002329: DUP2
0000232a: GT
0000232b: ISZERO
0000232c: PUSH2 0x2334
0000232f: JUMPI
00002330: PUSH1 0x00
00002332: DUP1
00002333: REVERT
00002334: JUMPDEST
00002335: PUSH2 0x2340
00002338: DUP10
00002339: DUP3
0000233a: DUP11
0000233b: ADD
0000233c: PUSH2 0x2159
0000233f: JUMP
00002340: JUMPDEST
00002341: SWAP2
00002342: POP
00002343: POP
00002344: SWAP3
00002345: SWAP6
00002346: POP
00002347: SWAP3
00002348: SWAP6
00002349: POP
0000234a: SWAP3
0000234b: SWAP6
0000234c: JUMP
0000234d: JUMPDEST
0000234e: PUSH1 0x00
00002350: DUP1
00002351: PUSH1 0x00
00002353: PUSH1 0x60
00002355: DUP5
00002356: DUP7
00002357: SUB
00002358: SLT
00002359: ISZERO
0000235a: PUSH2 0x2362
0000235d: JUMPI
0000235e: PUSH1 0x00
00002360: DUP1
00002361: REVERT
00002362: JUMPDEST
00002363: PUSH1 0x00
00002365: PUSH2 0x236e
00002368: DUP7
00002369: DUP7
0000236a: PUSH2 0x20cf
0000236d: JUMP
0000236e: JUMPDEST
0000236f: SWAP4
00002370: POP
00002371: POP
00002372: PUSH1 0x20
00002374: PUSH2 0x237f
00002377: DUP7
00002378: DUP3
00002379: DUP8
0000237a: ADD
0000237b: PUSH2 0x2262
0000237e: JUMP
0000237f: JUMPDEST
00002380: SWAP3
00002381: POP
00002382: POP
00002383: PUSH1 0x40
00002385: DUP5
00002386: ADD
00002387: CALLDATALOAD
00002388: PUSH8 0xffffffffffffffff
00002391: DUP2
00002392: GT
00002393: ISZERO
00002394: PUSH2 0x239c
00002397: JUMPI
00002398: PUSH1 0x00
0000239a: DUP1
0000239b: REVERT
0000239c: JUMPDEST
0000239d: PUSH2 0x23a8
000023a0: DUP7
000023a1: DUP3
000023a2: DUP8
000023a3: ADD
000023a4: PUSH2 0x2159
000023a7: JUMP
000023a8: JUMPDEST
000023a9: SWAP2
000023aa: POP
000023ab: POP
000023ac: SWAP3
000023ad: POP
000023ae: SWAP3
000023af: POP
000023b0: SWAP3
000023b1: JUMP
000023b2: JUMPDEST
000023b3: PUSH1 0x00
000023b5: DUP1
000023b6: PUSH1 0x00
000023b8: PUSH1 0x60
000023ba: DUP5
000023bb: DUP7
000023bc: SUB
000023bd: SLT
000023be: ISZERO
000023bf: PUSH2 0x23c7
000023c2: JUMPI
000023c3: PUSH1 0x00
000023c5: DUP1
000023c6: REVERT
000023c7: JUMPDEST
000023c8: PUSH1 0x00
000023ca: PUSH2 0x23d3
000023cd: DUP7
000023ce: DUP7
000023cf: PUSH2 0x20cf
000023d2: JUMP
000023d3: JUMPDEST
000023d4: SWAP4
000023d5: POP
000023d6: POP
000023d7: PUSH1 0x20
000023d9: PUSH2 0x23e4
000023dc: DUP7
000023dd: DUP3
000023de: DUP8
000023df: ADD
000023e0: PUSH2 0x2262
000023e3: JUMP
000023e4: JUMPDEST
000023e5: SWAP3
000023e6: POP
000023e7: POP
000023e8: PUSH1 0x40
000023ea: PUSH2 0x23a8
000023ed: DUP7
000023ee: DUP3
000023ef: DUP8
000023f0: ADD
000023f1: PUSH2 0x2262
000023f4: JUMP
000023f5: JUMPDEST
000023f6: PUSH1 0x00
000023f8: DUP1
000023f9: PUSH1 0x00
000023fb: DUP1
000023fc: PUSH1 0x80
000023fe: DUP6
000023ff: DUP8
00002400: SUB
00002401: SLT
00002402: ISZERO
00002403: PUSH2 0x240b
00002406: JUMPI
00002407: PUSH1 0x00
00002409: DUP1
0000240a: REVERT
0000240b: JUMPDEST
0000240c: PUSH1 0x00
0000240e: PUSH2 0x2417
00002411: DUP8
00002412: DUP8
00002413: PUSH2 0x20cf
00002416: JUMP
00002417: JUMPDEST
00002418: SWAP5
00002419: POP
0000241a: POP
0000241b: PUSH1 0x20
0000241d: PUSH2 0x2428
00002420: DUP8
00002421: DUP3
00002422: DUP9
00002423: ADD
00002424: PUSH2 0x2262
00002427: JUMP
00002428: JUMPDEST
00002429: SWAP4
0000242a: POP
0000242b: POP
0000242c: PUSH1 0x40
0000242e: PUSH2 0x2439
00002431: DUP8
00002432: DUP3
00002433: DUP9
00002434: ADD
00002435: PUSH2 0x2262
00002438: JUMP
00002439: JUMPDEST
0000243a: SWAP3
0000243b: POP
0000243c: POP
0000243d: PUSH1 0x60
0000243f: DUP6
00002440: ADD
00002441: CALLDATALOAD
00002442: PUSH8 0xffffffffffffffff
0000244b: DUP2
0000244c: GT
0000244d: ISZERO
0000244e: PUSH2 0x2456
00002451: JUMPI
00002452: PUSH1 0x00
00002454: DUP1
00002455: REVERT
00002456: JUMPDEST
00002457: PUSH2 0x2462
0000245a: DUP8
0000245b: DUP3
0000245c: DUP9
0000245d: ADD
0000245e: PUSH2 0x2159
00002461: JUMP
00002462: JUMPDEST
00002463: SWAP2
00002464: POP
00002465: POP
00002466: SWAP3
00002467: SWAP6
00002468: SWAP2
00002469: SWAP5
0000246a: POP
0000246b: SWAP3
0000246c: POP
0000246d: JUMP
0000246e: JUMPDEST
0000246f: PUSH1 0x00
00002471: DUP1
00002472: PUSH1 0x40
00002474: DUP4
00002475: DUP6
00002476: SUB
00002477: SLT
00002478: ISZERO
00002479: PUSH2 0x2481
0000247c: JUMPI
0000247d: PUSH1 0x00
0000247f: DUP1
00002480: REVERT
00002481: JUMPDEST
00002482: DUP3
00002483: CALLDATALOAD
00002484: PUSH8 0xffffffffffffffff
0000248d: DUP2
0000248e: GT
0000248f: ISZERO
00002490: PUSH2 0x2498
00002493: JUMPI
00002494: PUSH1 0x00
00002496: DUP1
00002497: REVERT
00002498: JUMPDEST
00002499: PUSH2 0x24a4
0000249c: DUP6
0000249d: DUP3
0000249e: DUP7
0000249f: ADD
000024a0: PUSH2 0x20da
000024a3: JUMP
000024a4: JUMPDEST
000024a5: SWAP3
000024a6: POP
000024a7: POP
000024a8: PUSH1 0x20
000024aa: DUP4
000024ab: ADD
000024ac: CALLDATALOAD
000024ad: PUSH8 0xffffffffffffffff
000024b6: DUP2
000024b7: GT
000024b8: ISZERO
000024b9: PUSH2 0x24c1
000024bc: JUMPI
000024bd: PUSH1 0x00
000024bf: DUP1
000024c0: REVERT
000024c1: JUMPDEST
000024c2: PUSH2 0x24cd
000024c5: DUP6
000024c6: DUP3
000024c7: DUP7
000024c8: ADD
000024c9: PUSH2 0x20da
000024cc: JUMP
000024cd: JUMPDEST
000024ce: SWAP2
000024cf: POP
000024d0: POP
000024d1: SWAP3
000024d2: POP
000024d3: SWAP3
000024d4: SWAP1
000024d5: POP
000024d6: JUMP
000024d7: JUMPDEST
000024d8: PUSH1 0x00
000024da: PUSH1 0x20
000024dc: DUP3
000024dd: DUP5
000024de: SUB
000024df: SLT
000024e0: ISZERO
000024e1: PUSH2 0x24e9
000024e4: JUMPI
000024e5: PUSH1 0x00
000024e7: DUP1
000024e8: REVERT
000024e9: JUMPDEST
000024ea: DUP2
000024eb: CALLDATALOAD
000024ec: PUSH8 0xffffffffffffffff
000024f5: DUP2
000024f6: GT
000024f7: ISZERO
000024f8: PUSH2 0x2500
000024fb: JUMPI
000024fc: PUSH1 0x00
000024fe: DUP1
000024ff: REVERT
00002500: JUMPDEST
00002501: PUSH2 0x1edb
00002504: DUP5
00002505: DUP3
00002506: DUP6
00002507: ADD
00002508: PUSH2 0x2159
0000250b: JUMP
0000250c: JUMPDEST
0000250d: PUSH1 0x00
0000250f: PUSH1 0x20
00002511: DUP3
00002512: DUP5
00002513: SUB
00002514: SLT
00002515: ISZERO
00002516: PUSH2 0x251e
00002519: JUMPI
0000251a: PUSH1 0x00
0000251c: DUP1
0000251d: REVERT
0000251e: JUMPDEST
0000251f: DUP2
00002520: CALLDATALOAD
00002521: PUSH8 0xffffffffffffffff
0000252a: DUP2
0000252b: GT
0000252c: ISZERO
0000252d: PUSH2 0x2535
00002530: JUMPI
00002531: PUSH1 0x00
00002533: DUP1
00002534: REVERT
00002535: JUMPDEST
00002536: PUSH2 0x1edb
00002539: DUP5
0000253a: DUP3
0000253b: DUP6
0000253c: ADD
0000253d: PUSH2 0x21b6
00002540: JUMP
00002541: JUMPDEST
00002542: PUSH1 0x00
00002544: PUSH1 0x20
00002546: DUP3
00002547: DUP5
00002548: SUB
00002549: SLT
0000254a: ISZERO
0000254b: PUSH2 0x2553
0000254e: JUMPI
0000254f: PUSH1 0x00
00002551: DUP1
00002552: REVERT
00002553: JUMPDEST
00002554: DUP2
00002555: CALLDATALOAD
00002556: PUSH8 0xffffffffffffffff
0000255f: DUP2
00002560: GT
00002561: ISZERO
00002562: PUSH2 0x256a
00002565: JUMPI
00002566: PUSH1 0x00
00002568: DUP1
00002569: REVERT
0000256a: JUMPDEST
0000256b: PUSH2 0x1edb
0000256e: DUP5
0000256f: DUP3
00002570: DUP6
00002571: ADD
00002572: PUSH2 0x2213
00002575: JUMP
00002576: JUMPDEST
00002577: PUSH1 0x00
00002579: PUSH1 0x20
0000257b: DUP3
0000257c: DUP5
0000257d: SUB
0000257e: SLT
0000257f: ISZERO
00002580: PUSH2 0x2588
00002583: JUMPI
00002584: PUSH1 0x00
00002586: DUP1
00002587: REVERT
00002588: JUMPDEST
00002589: PUSH1 0x00
0000258b: PUSH2 0x1edb
0000258e: DUP5
0000258f: DUP5
00002590: PUSH2 0x2262
00002593: JUMP
00002594: JUMPDEST
00002595: PUSH1 0x00
00002597: PUSH1 0x20
00002599: DUP3
0000259a: DUP5
0000259b: SUB
0000259c: SLT
0000259d: ISZERO
0000259e: PUSH2 0x25a6
000025a1: JUMPI
000025a2: PUSH1 0x00
000025a4: DUP1
000025a5: REVERT
000025a6: JUMPDEST
000025a7: PUSH1 0x00
000025a9: PUSH2 0x1edb
000025ac: DUP5
000025ad: DUP5
000025ae: PUSH2 0x226d
000025b1: JUMP
000025b2: JUMPDEST
000025b3: PUSH2 0x25bb
000025b6: DUP2
000025b7: PUSH2 0x3255
000025ba: JUMP
000025bb: JUMPDEST
000025bc: DUP3
000025bd: MSTORE
000025be: POP
000025bf: POP
000025c0: JUMP
000025c1: JUMPDEST
000025c2: PUSH2 0x25bb
000025c5: DUP2
000025c6: PUSH2 0x3233
000025c9: JUMP
000025ca: JUMPDEST
000025cb: PUSH2 0x25bb
000025ce: PUSH2 0x25d6
000025d1: DUP3
000025d2: PUSH2 0x3233
000025d5: JUMP
000025d6: JUMPDEST
000025d7: PUSH2 0x32a2
000025da: JUMP
000025db: JUMPDEST
000025dc: PUSH2 0x25bb
000025df: DUP2
000025e0: PUSH2 0x323e
000025e3: JUMP
000025e4: JUMPDEST
000025e5: PUSH2 0x25bb
000025e8: DUP2
000025e9: PUSH2 0x156b
000025ec: JUMP
000025ed: JUMPDEST
000025ee: PUSH1 0x00
000025f0: PUSH2 0x25f8
000025f3: DUP3
000025f4: PUSH2 0x3226
000025f7: JUMP
000025f8: JUMPDEST
000025f9: PUSH2 0x2602
000025fc: DUP2
000025fd: DUP6
000025fe: PUSH2 0x322a
00002601: JUMP
00002602: JUMPDEST
00002603: SWAP4
00002604: POP
00002605: PUSH2 0x2612
00002608: DUP2
00002609: DUP6
0000260a: PUSH1 0x20
0000260c: DUP7
0000260d: ADD
0000260e: PUSH2 0x3272
00002611: JUMP
00002612: JUMPDEST
00002613: PUSH2 0x261b
00002616: DUP2
00002617: PUSH2 0x32b3
0000261a: JUMP
0000261b: JUMPDEST
0000261c: SWAP1
0000261d: SWAP4
0000261e: ADD
0000261f: SWAP4
00002620: SWAP3
00002621: POP
00002622: POP
00002623: POP
00002624: JUMP
00002625: JUMPDEST
00002626: PUSH1 0x00
00002628: PUSH2 0x2630
0000262b: DUP3
0000262c: PUSH2 0x3226
0000262f: JUMP
00002630: JUMPDEST
00002631: PUSH2 0x263a
00002634: DUP2
00002635: DUP6
00002636: PUSH2 0x1469
00002639: JUMP
0000263a: JUMPDEST
0000263b: SWAP4
0000263c: POP
0000263d: PUSH2 0x264a
00002640: DUP2
00002641: DUP6
00002642: PUSH1 0x20
00002644: DUP7
00002645: ADD
00002646: PUSH2 0x3272
00002649: JUMP
0000264a: JUMPDEST
0000264b: SWAP3
0000264c: SWAP1
0000264d: SWAP3
0000264e: ADD
0000264f: SWAP3
00002650: SWAP2
00002651: POP
00002652: POP
00002653: JUMP
00002654: JUMPDEST
00002655: PUSH1 0x00
00002657: PUSH2 0x2661
0000265a: PUSH1 0x07
0000265c: DUP4
0000265d: PUSH2 0x1469
00002660: JUMP
00002661: JUMPDEST
00002662: PUSH32 0x7570677261646500000000000000000000000000000000000000000000000000
00002683: DUP2
00002684: MSTORE
00002685: PUSH1 0x07
00002687: ADD
00002688: SWAP3
00002689: SWAP2
0000268a: POP
0000268b: POP
0000268c: JUMP
0000268d: JUMPDEST
0000268e: PUSH1 0x00
00002690: PUSH2 0x269a
00002693: PUSH1 0x23
00002695: DUP4
00002696: PUSH2 0x322a
00002699: JUMP
0000269a: JUMPDEST
0000269b: PUSH32 0x636f6c642077616c6c65742062616c616e636520697320696e73756666696369
000026bc: DUP2
000026bd: MSTORE
000026be: PUSH32 0x656e740000000000000000000000000000000000000000000000000000000000
000026df: PUSH1 0x20
000026e1: DUP3
000026e2: ADD
000026e3: MSTORE
000026e4: PUSH1 0x40
000026e6: ADD
000026e7: SWAP3
000026e8: SWAP2
000026e9: POP
000026ea: POP
000026eb: JUMP
000026ec: JUMPDEST
000026ed: PUSH1 0x00
000026ef: PUSH2 0x26f9
000026f2: PUSH1 0x14
000026f4: DUP4
000026f5: PUSH2 0x322a
000026f8: JUMP
000026f9: JUMPDEST
000026fa: PUSH32 0x5061757361626c653a206e6f7420706175736564000000000000000000000000
0000271b: DUP2
0000271c: MSTORE
0000271d: PUSH1 0x20
0000271f: ADD
00002720: SWAP3
00002721: SWAP2
00002722: POP
00002723: POP
00002724: JUMP
00002725: JUMPDEST
00002726: PUSH1 0x00
00002728: PUSH2 0x2732
0000272b: PUSH1 0x1f
0000272d: DUP4
0000272e: PUSH2 0x322a
00002731: JUMP
00002732: JUMPDEST
00002733: PUSH32 0x526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500
00002754: DUP2
00002755: MSTORE
00002756: PUSH1 0x20
00002758: ADD
00002759: SWAP3
0000275a: SWAP2
0000275b: POP
0000275c: POP
0000275d: JUMP
0000275e: JUMPDEST
0000275f: PUSH1 0x00
00002761: PUSH2 0x276b
00002764: PUSH1 0x23
00002766: DUP4
00002767: PUSH2 0x322a
0000276a: JUMP
0000276b: JUMPDEST
0000276c: PUSH32 0x616c6c6f77616e6365206166746572206465706f736974206973206e6f74207a
0000278d: DUP2
0000278e: MSTORE
0000278f: PUSH32 0x65726f0000000000000000000000000000000000000000000000000000000000
000027b0: PUSH1 0x20
000027b2: DUP3
000027b3: ADD
000027b4: MSTORE
000027b5: PUSH1 0x40
000027b7: ADD
000027b8: SWAP3
000027b9: SWAP2
000027ba: POP
000027bb: POP
000027bc: JUMP
000027bd: JUMPDEST
000027be: PUSH1 0x00
000027c0: PUSH2 0x27ca
000027c3: PUSH1 0x11
000027c5: DUP4
000027c6: PUSH2 0x322a
000027c9: JUMP
000027ca: JUMPDEST
000027cb: PUSH32 0x7369676e617475726520696e76616c6964000000000000000000000000000000
000027ec: DUP2
000027ed: MSTORE
000027ee: PUSH1 0x20
000027f0: ADD
000027f1: SWAP3
000027f2: SWAP2
000027f3: POP
000027f4: POP
000027f5: JUMP
000027f6: JUMPDEST
000027f7: PUSH1 0x00
000027f9: PUSH2 0x2803
000027fc: PUSH1 0x30
000027fe: DUP4
000027ff: PUSH2 0x322a
00002802: JUMP
00002803: JUMPDEST
00002804: PUSH32 0x506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665
00002825: DUP2
00002826: MSTORE
00002827: PUSH32 0x207468652050617573657220726f6c6500000000000000000000000000000000
00002848: PUSH1 0x20
0000284a: DUP3
0000284b: ADD
0000284c: MSTORE
0000284d: PUSH1 0x40
0000284f: ADD
00002850: SWAP3
00002851: SWAP2
00002852: POP
00002853: POP
00002854: JUMP
00002855: JUMPDEST
00002856: PUSH1 0x00
00002858: PUSH2 0x2862
0000285b: PUSH1 0x0f
0000285d: DUP4
0000285e: PUSH2 0x322a
00002861: JUMP
00002862: JUMPDEST
00002863: PUSH32 0x696e636f727265637420626f756e640000000000000000000000000000000000
00002884: DUP2
00002885: MSTORE
00002886: PUSH1 0x20
00002888: ADD
00002889: SWAP3
0000288a: SWAP2
0000288b: POP
0000288c: POP
0000288d: JUMP
0000288e: JUMPDEST
0000288f: PUSH1 0x00
00002891: PUSH2 0x289b
00002894: PUSH1 0x09
00002896: DUP4
00002897: PUSH2 0x322a
0000289a: JUMP
0000289b: JUMPDEST
0000289c: PUSH9 0x10dbdb19151bd21bdd
000028a6: PUSH1 0xba
000028a8: SHL
000028a9: DUP2
000028aa: MSTORE
000028ab: PUSH1 0x20
000028ad: ADD
000028ae: SWAP3
000028af: SWAP2
000028b0: POP
000028b1: POP
000028b2: JUMP
000028b3: JUMPDEST
000028b4: PUSH1 0x00
000028b6: PUSH2 0x28c0
000028b9: PUSH1 0x09
000028bb: DUP4
000028bc: PUSH2 0x1469
000028bf: JUMP
000028c0: JUMPDEST
000028c1: PUSH9 0x10dbdb19151bd21bdd
000028cb: PUSH1 0xba
000028cd: SHL
000028ce: DUP2
000028cf: MSTORE
000028d0: PUSH1 0x09
000028d2: ADD
000028d3: SWAP3
000028d4: SWAP2
000028d5: POP
000028d6: POP
000028d7: JUMP
000028d8: JUMPDEST
000028d9: PUSH1 0x00
000028db: PUSH2 0x28e5
000028de: PUSH1 0x09
000028e0: DUP4
000028e1: PUSH2 0x1469
000028e4: JUMP
000028e5: JUMPDEST
000028e6: PUSH32 0x486f74546f436f6c640000000000000000000000000000000000000000000000
00002907: DUP2
00002908: MSTORE
00002909: PUSH1 0x09
0000290b: ADD
0000290c: SWAP3
0000290d: SWAP2
0000290e: POP
0000290f: POP
00002910: JUMP
00002911: JUMPDEST
00002912: PUSH1 0x00
00002914: PUSH2 0x291e
00002917: PUSH1 0x0c
00002919: DUP4
0000291a: PUSH2 0x322a
0000291d: JUMP
0000291e: JUMPDEST
0000291f: PUSH32 0x756e7361666520746f6b656e0000000000000000000000000000000000000000
00002940: DUP2
00002941: MSTORE
00002942: PUSH1 0x20
00002944: ADD
00002945: SWAP3
00002946: SWAP2
00002947: POP
00002948: POP
00002949: JUMP
0000294a: JUMPDEST
0000294b: PUSH1 0x00
0000294d: PUSH2 0x2957
00002950: PUSH1 0x1f
00002952: DUP4
00002953: PUSH2 0x322a
00002956: JUMP
00002957: JUMPDEST
00002958: PUSH32 0x686f742077616c6c65742062616c616e636520696e73756666696369656e7400
00002979: DUP2
0000297a: MSTORE
0000297b: PUSH1 0x20
0000297d: ADD
0000297e: SWAP3
0000297f: SWAP2
00002980: POP
00002981: POP
00002982: JUMP
00002983: JUMPDEST
00002984: PUSH1 0x00
00002986: PUSH2 0x2990
00002989: PUSH1 0x17
0000298b: DUP4
0000298c: PUSH2 0x322a
0000298f: JUMP
00002990: JUMPDEST
00002991: PUSH32 0x66696e6973686564206275726e206f7065726174696f6e000000000000000000
000029b2: DUP2
000029b3: MSTORE
000029b4: PUSH1 0x20
000029b6: ADD
000029b7: SWAP3
000029b8: SWAP2
000029b9: POP
000029ba: POP
000029bb: JUMP
000029bc: JUMPDEST
000029bd: PUSH1 0x00
000029bf: PUSH2 0x29c9
000029c2: PUSH1 0x10
000029c4: DUP4
000029c5: PUSH2 0x322a
000029c8: JUMP
000029c9: JUMPDEST
000029ca: PUSH32 0x5061757361626c653a2070617573656400000000000000000000000000000000
000029eb: DUP2
000029ec: MSTORE
000029ed: PUSH1 0x20
000029ef: ADD
000029f0: SWAP3
000029f1: SWAP2
000029f2: POP
000029f3: POP
000029f4: JUMP
000029f5: JUMPDEST
000029f6: PUSH1 0x00
000029f8: PUSH2 0x2a02
000029fb: PUSH1 0x14
000029fd: DUP4
000029fe: PUSH2 0x322a
00002a01: JUMP
00002a02: JUMPDEST
00002a03: PUSH32 0x6e6f6e2d636f6e74726163742061646472657373000000000000000000000000
00002a24: DUP2
00002a25: MSTORE
00002a26: PUSH1 0x20
00002a28: ADD
00002a29: SWAP3
00002a2a: SWAP2
00002a2b: POP
00002a2c: POP
00002a2d: JUMP
00002a2e: JUMPDEST
00002a2f: PUSH1 0x00
00002a31: PUSH2 0x2a3b
00002a34: PUSH1 0x21
00002a36: DUP4
00002a37: PUSH2 0x322a
00002a3a: JUMP
00002a3b: JUMPDEST
00002a3c: PUSH32 0x526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c
00002a5d: DUP2
00002a5e: MSTORE
00002a5f: PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000
00002a80: PUSH1 0x20
00002a82: DUP3
00002a83: ADD
00002a84: MSTORE
00002a85: PUSH1 0x40
00002a87: ADD
00002a88: SWAP3
00002a89: SWAP2
00002a8a: POP
00002a8b: POP
00002a8c: JUMP
00002a8d: JUMPDEST
00002a8e: PUSH1 0x00
00002a90: PUSH2 0x2a9a
00002a93: PUSH1 0x17
00002a95: DUP4
00002a96: PUSH2 0x322a
00002a99: JUMP
00002a9a: JUMPDEST
00002a9b: PUSH32 0x72656c617965722061646472657373206973207a65726f000000000000000000
00002abc: DUP2
00002abd: MSTORE
00002abe: PUSH1 0x20
00002ac0: ADD
00002ac1: SWAP3
00002ac2: SWAP2
00002ac3: POP
00002ac4: POP
00002ac5: JUMP
00002ac6: JUMPDEST
00002ac7: PUSH1 0x00
00002ac9: PUSH2 0x2ad3
00002acc: PUSH1 0x0f
00002ace: DUP4
00002acf: PUSH2 0x322a
00002ad2: JUMP
00002ad3: JUMPDEST
00002ad4: PUSH32 0x696e636f7272656374206e6f6e63650000000000000000000000000000000000
00002af5: DUP2
00002af6: MSTORE
00002af7: PUSH1 0x20
00002af9: ADD
00002afa: SWAP3
00002afb: SWAP2
00002afc: POP
00002afd: POP
00002afe: JUMP
00002aff: JUMPDEST
00002b00: PUSH1 0x00
00002b02: PUSH2 0x2b0c
00002b05: PUSH1 0x22
00002b07: DUP4
00002b08: PUSH2 0x322a
00002b0b: JUMP
00002b0c: JUMPDEST
00002b0d: PUSH32 0x526f6c65733a206163636f756e7420697320746865207a65726f206164647265
00002b2e: DUP2
00002b2f: MSTORE
00002b30: PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000
00002b51: PUSH1 0x20
00002b53: DUP3
00002b54: ADD
00002b55: MSTORE
00002b56: PUSH1 0x40
00002b58: ADD
00002b59: SWAP3
00002b5a: SWAP2
00002b5b: POP
00002b5c: POP
00002b5d: JUMP
00002b5e: JUMPDEST
00002b5f: PUSH1 0x00
00002b61: PUSH2 0x2b6b
00002b64: PUSH1 0x40
00002b66: DUP4
00002b67: PUSH2 0x322a
00002b6a: JUMP
00002b6b: JUMPDEST
00002b6c: PUSH32 0x57686974656c69737441646d696e526f6c653a2063616c6c657220646f657320
00002b8d: DUP2
00002b8e: MSTORE
00002b8f: PUSH32 0x6e6f742068617665207468652057686974656c69737441646d696e20726f6c65
00002bb0: PUSH1 0x20
00002bb2: DUP3
00002bb3: ADD
00002bb4: MSTORE
00002bb5: PUSH1 0x40
00002bb7: ADD
00002bb8: SWAP3
00002bb9: SWAP2
00002bba: POP
00002bbb: POP
00002bbc: JUMP
00002bbd: JUMPDEST
00002bbe: PUSH1 0x00
00002bc0: PUSH2 0x2bca
00002bc3: PUSH1 0x2c
00002bc5: DUP4
00002bc6: PUSH2 0x322a
00002bc9: JUMP
00002bca: JUMPDEST
00002bcb: PUSH32 0x63616c6c657220646f6573206e6f742068617665207468652057686974656c69
00002bec: DUP2
00002bed: MSTORE
00002bee: PUSH32 0x737441646d696e20726f6c650000000000000000000000000000000000000000
00002c0f: PUSH1 0x20
00002c11: DUP3
00002c12: ADD
00002c13: MSTORE
00002c14: PUSH1 0x40
00002c16: ADD
00002c17: SWAP3
00002c18: SWAP2
00002c19: POP
00002c1a: POP
00002c1b: JUMP
00002c1c: JUMPDEST
00002c1d: PUSH1 0x00
00002c1f: PUSH2 0x2c29
00002c22: PUSH1 0x12
00002c24: DUP4
00002c25: PUSH2 0x322a
00002c28: JUMP
00002c29: JUMPDEST
00002c2a: PUSH32 0x5245454e5452414e43595f494c4c4547414c0000000000000000000000000000
00002c4b: DUP2
00002c4c: MSTORE
00002c4d: PUSH1 0x20
00002c4f: ADD
00002c50: SWAP3
00002c51: SWAP2
00002c52: POP
00002c53: POP
00002c54: JUMP
00002c55: JUMPDEST
00002c56: PUSH1 0x00
00002c58: PUSH2 0x2c62
00002c5b: PUSH1 0x17
00002c5d: DUP4
00002c5e: PUSH2 0x322a
00002c61: JUMP
00002c62: JUMPDEST
00002c63: PUSH32 0x696e73756666696369656e74207369676e617475726573000000000000000000
00002c84: DUP2
00002c85: MSTORE
00002c86: PUSH1 0x20
00002c88: ADD
00002c89: SWAP3
00002c8a: SWAP2
00002c8b: POP
00002c8c: POP
00002c8d: JUMP
00002c8e: JUMPDEST
00002c8f: PUSH1 0x00
00002c91: PUSH2 0x2c9b
00002c94: PUSH1 0x0d
00002c96: DUP4
00002c97: PUSH2 0x322a
00002c9a: JUMP
00002c9b: JUMPDEST
00002c9c: PUSH32 0x6e6f7420637573746f6469616e00000000000000000000000000000000000000
00002cbd: DUP2
00002cbe: MSTORE
00002cbf: PUSH1 0x20
00002cc1: ADD
00002cc2: SWAP3
00002cc3: SWAP2
00002cc4: POP
00002cc5: POP
00002cc6: JUMP
00002cc7: JUMPDEST
00002cc8: PUSH1 0x00
00002cca: PUSH2 0x2cd4
00002ccd: PUSH1 0x06
00002ccf: DUP4
00002cd0: PUSH2 0x322a
00002cd3: JUMP
00002cd4: JUMPDEST
00002cd5: PUSH32 0x7061757365640000000000000000000000000000000000000000000000000000
00002cf6: DUP2
00002cf7: MSTORE
00002cf8: PUSH1 0x20
00002cfa: ADD
00002cfb: SWAP3
00002cfc: SWAP2
00002cfd: POP
00002cfe: POP
00002cff: JUMP
00002d00: JUMPDEST
00002d01: PUSH1 0x00
00002d03: PUSH2 0x2d0d
00002d06: PUSH1 0x0a
00002d08: DUP4
00002d09: PUSH2 0x322a
00002d0c: JUMP
00002d0d: JUMPDEST
00002d0e: PUSH32 0x6e6f742070617573656400000000000000000000000000000000000000000000
00002d2f: DUP2
00002d30: MSTORE
00002d31: PUSH1 0x20
00002d33: ADD
00002d34: SWAP3
00002d35: SWAP2
00002d36: POP
00002d37: POP
00002d38: JUMP
00002d39: JUMPDEST
00002d3a: PUSH1 0x00
00002d3c: PUSH2 0x2d46
00002d3f: PUSH1 0x04
00002d41: DUP4
00002d42: PUSH2 0x1469
00002d45: JUMP
00002d46: JUMPDEST
00002d47: PUSH32 0x6275726e00000000000000000000000000000000000000000000000000000000
00002d68: DUP2
00002d69: MSTORE
00002d6a: PUSH1 0x04
00002d6c: ADD
00002d6d: SWAP3
00002d6e: SWAP2
00002d6f: POP
00002d70: POP
00002d71: JUMP
00002d72: JUMPDEST
00002d73: PUSH1 0x00
00002d75: PUSH2 0x2d7f
00002d78: PUSH1 0x19
00002d7a: DUP4
00002d7b: PUSH2 0x322a
00002d7e: JUMP
00002d7f: JUMPDEST
00002d80: PUSH32 0x5f666163746f7279206d75737420626520636f6e747261637400000000000000
00002da1: DUP2
00002da2: MSTORE
00002da3: PUSH1 0x20
00002da5: ADD
00002da6: SWAP3
00002da7: SWAP2
00002da8: POP
00002da9: POP
00002daa: JUMP
00002dab: JUMPDEST
00002dac: PUSH2 0x25bb
00002daf: PUSH2 0x2db7
00002db2: DUP3
00002db3: PUSH2 0x156b
00002db6: JUMP
00002db7: JUMPDEST
00002db8: PUSH2 0x156b
00002dbb: JUMP
00002dbc: JUMPDEST
00002dbd: PUSH2 0x25bb
00002dc0: DUP2
00002dc1: PUSH2 0x324f
00002dc4: JUMP
00002dc5: JUMPDEST
00002dc6: PUSH1 0x00
00002dc8: PUSH2 0x1c32
00002dcb: DUP3
00002dcc: DUP5
00002dcd: PUSH2 0x2625
00002dd0: JUMP
00002dd1: JUMPDEST
00002dd2: PUSH1 0x00
00002dd4: PUSH2 0x2ddc
00002dd7: DUP3
00002dd8: PUSH2 0x2654
00002ddb: JUMP
00002ddc: JUMPDEST
00002ddd: SWAP2
00002dde: POP
00002ddf: PUSH2 0x2de8
00002de2: DUP3
00002de3: DUP7
00002de4: PUSH2 0x25ca
00002de7: JUMP
00002de8: JUMPDEST
00002de9: PUSH1 0x14
00002deb: DUP3
00002dec: ADD
00002ded: SWAP2
00002dee: POP
00002def: PUSH2 0x2df8
00002df2: DUP3
00002df3: DUP6
00002df4: PUSH2 0x25ca
00002df7: JUMP
00002df8: JUMPDEST
00002df9: PUSH1 0x14
00002dfb: DUP3
00002dfc: ADD
00002dfd: SWAP2
00002dfe: POP
00002dff: PUSH2 0x2e08
00002e02: DUP3
00002e03: DUP5
00002e04: PUSH2 0x2dab
00002e07: JUMP
00002e08: JUMPDEST
00002e09: POP
00002e0a: PUSH1 0x20
00002e0c: ADD
00002e0d: SWAP4
00002e0e: SWAP3
00002e0f: POP
00002e10: POP
00002e11: POP
00002e12: JUMP
00002e13: JUMPDEST
00002e14: PUSH1 0x00
00002e16: PUSH2 0x2e1e
00002e19: DUP3
00002e1a: PUSH2 0x28b3
00002e1d: JUMP
00002e1e: JUMPDEST
00002e1f: SWAP2
00002e20: POP
00002e21: PUSH2 0x2e2a
00002e24: DUP3
00002e25: DUP8
00002e26: PUSH2 0x25ca
00002e29: JUMP
00002e2a: JUMPDEST
00002e2b: PUSH1 0x14
00002e2d: DUP3
00002e2e: ADD
00002e2f: SWAP2
00002e30: POP
00002e31: PUSH2 0x2e3a
00002e34: DUP3
00002e35: DUP7
00002e36: PUSH2 0x25ca
00002e39: JUMP
00002e3a: JUMPDEST
00002e3b: PUSH1 0x14
00002e3d: DUP3
00002e3e: ADD
00002e3f: SWAP2
00002e40: POP
00002e41: PUSH2 0x2e4a
00002e44: DUP3
00002e45: DUP6
00002e46: PUSH2 0x2dab
00002e49: JUMP
00002e4a: JUMPDEST
00002e4b: PUSH1 0x20
00002e4d: DUP3
00002e4e: ADD
00002e4f: SWAP2
00002e50: POP
00002e51: PUSH2 0x2e5a
00002e54: DUP3
00002e55: DUP5
00002e56: PUSH2 0x2dab
00002e59: JUMP
00002e5a: JUMPDEST
00002e5b: POP
00002e5c: PUSH1 0x20
00002e5e: ADD
00002e5f: SWAP5
00002e60: SWAP4
00002e61: POP
00002e62: POP
00002e63: POP
00002e64: POP
00002e65: JUMP
00002e66: JUMPDEST
00002e67: PUSH1 0x00
00002e69: PUSH2 0x2ddc
00002e6c: DUP3
00002e6d: PUSH2 0x28d8
00002e70: JUMP
00002e71: JUMPDEST
00002e72: PUSH1 0x00
00002e74: PUSH2 0x2e7d
00002e77: DUP3
00002e78: DUP11
00002e79: PUSH2 0x2dab
00002e7c: JUMP
00002e7d: JUMPDEST
00002e7e: PUSH1 0x20
00002e80: DUP3
00002e81: ADD
00002e82: SWAP2
00002e83: POP
00002e84: PUSH2 0x2e8c
00002e87: DUP3
00002e88: PUSH2 0x2d39
00002e8b: JUMP
00002e8c: JUMPDEST
00002e8d: SWAP2
00002e8e: POP
00002e8f: PUSH2 0x2e98
00002e92: DUP3
00002e93: DUP10
00002e94: PUSH2 0x25ca
00002e97: JUMP
00002e98: JUMPDEST
00002e99: PUSH1 0x14
00002e9b: DUP3
00002e9c: ADD
00002e9d: SWAP2
00002e9e: POP
00002e9f: PUSH2 0x2ea8
00002ea2: DUP3
00002ea3: DUP9
00002ea4: PUSH2 0x25ca
00002ea7: JUMP
00002ea8: JUMPDEST
00002ea9: PUSH1 0x14
00002eab: DUP3
00002eac: ADD
00002ead: SWAP2
00002eae: POP
00002eaf: PUSH2 0x2eb8
00002eb2: DUP3
00002eb3: DUP8
00002eb4: PUSH2 0x25ca
00002eb7: JUMP
00002eb8: JUMPDEST
00002eb9: PUSH1 0x14
00002ebb: DUP3
00002ebc: ADD
00002ebd: SWAP2
00002ebe: POP
00002ebf: PUSH2 0x2ec8
00002ec2: DUP3
00002ec3: DUP7
00002ec4: PUSH2 0x25ca
00002ec7: JUMP
00002ec8: JUMPDEST
00002ec9: PUSH1 0x14
00002ecb: DUP3
00002ecc: ADD
00002ecd: SWAP2
00002ece: POP
00002ecf: PUSH2 0x2ed8
00002ed2: DUP3
00002ed3: DUP6
00002ed4: PUSH2 0x2dab
00002ed7: JUMP
00002ed8: JUMPDEST
00002ed9: PUSH1 0x20
00002edb: DUP3
00002edc: ADD
00002edd: SWAP2
00002ede: POP
00002edf: PUSH2 0x2ee8
00002ee2: DUP3
00002ee3: DUP5
00002ee4: PUSH2 0x2625
00002ee7: JUMP
00002ee8: JUMPDEST
00002ee9: SWAP10
00002eea: SWAP9
00002eeb: POP
00002eec: POP
00002eed: POP
00002eee: POP
00002eef: POP
00002ef0: POP
00002ef1: POP
00002ef2: POP
00002ef3: POP
00002ef4: JUMP
00002ef5: JUMPDEST
00002ef6: PUSH1 0x20
00002ef8: DUP2
00002ef9: ADD
00002efa: PUSH2 0x1481
00002efd: DUP3
00002efe: DUP5
00002eff: PUSH2 0x25c1
00002f02: JUMP
00002f03: JUMPDEST
00002f04: PUSH1 0x20
00002f06: DUP2
00002f07: ADD
00002f08: PUSH2 0x1481
00002f0b: DUP3
00002f0c: DUP5
00002f0d: PUSH2 0x25b2
00002f10: JUMP
00002f11: JUMPDEST
00002f12: PUSH1 0x40
00002f14: DUP2
00002f15: ADD
00002f16: PUSH2 0x2f1f
00002f19: DUP3
00002f1a: DUP6
00002f1b: PUSH2 0x25b2
00002f1e: JUMP
00002f1f: JUMPDEST
00002f20: PUSH2 0x1c32
00002f23: PUSH1 0x20
00002f25: DUP4
00002f26: ADD
00002f27: DUP5
00002f28: PUSH2 0x25b2
00002f2b: JUMP
00002f2c: JUMPDEST
00002f2d: PUSH1 0x60
00002f2f: DUP2
00002f30: ADD
00002f31: PUSH2 0x2f3a
00002f34: DUP3
00002f35: DUP7
00002f36: PUSH2 0x25b2
00002f39: JUMP
00002f3a: JUMPDEST
00002f3b: DUP2
00002f3c: DUP2
00002f3d: SUB
00002f3e: PUSH1 0x20
00002f40: DUP4
00002f41: ADD
00002f42: MSTORE
00002f43: PUSH2 0x2f4c
00002f46: DUP2
00002f47: DUP6
00002f48: PUSH2 0x25ed
00002f4b: JUMP
00002f4c: JUMPDEST
00002f4d: SWAP1
00002f4e: POP
00002f4f: PUSH2 0x1edb
00002f52: PUSH1 0x40
00002f54: DUP4
00002f55: ADD
00002f56: DUP5
00002f57: PUSH2 0x25c1
00002f5a: JUMP
00002f5b: JUMPDEST
00002f5c: PUSH1 0x40
00002f5e: DUP2
00002f5f: ADD
00002f60: PUSH2 0x2f69
00002f63: DUP3
00002f64: DUP6
00002f65: PUSH2 0x25c1
00002f68: JUMP
00002f69: JUMPDEST
00002f6a: PUSH2 0x1c32
00002f6d: PUSH1 0x20
00002f6f: DUP4
00002f70: ADD
00002f71: DUP5
00002f72: PUSH2 0x25e4
00002f75: JUMP
00002f76: JUMPDEST
00002f77: PUSH1 0x40
00002f79: DUP2
00002f7a: ADD
00002f7b: PUSH2 0x2f69
00002f7e: DUP3
00002f7f: DUP6
00002f80: PUSH2 0x25b2
00002f83: JUMP
00002f84: JUMPDEST
00002f85: PUSH1 0x60
00002f87: DUP2
00002f88: ADD
00002f89: PUSH2 0x2f92
00002f8c: DUP3
00002f8d: DUP7
00002f8e: PUSH2 0x25b2
00002f91: JUMP
00002f92: JUMPDEST
00002f93: PUSH2 0x2f9f
00002f96: PUSH1 0x20
00002f98: DUP4
00002f99: ADD
00002f9a: DUP6
00002f9b: PUSH2 0x25e4
00002f9e: JUMP
00002f9f: JUMPDEST
00002fa0: PUSH2 0x1edb
00002fa3: PUSH1 0x40
00002fa5: DUP4
00002fa6: ADD
00002fa7: DUP5
00002fa8: PUSH2 0x25c1
00002fab: JUMP
00002fac: JUMPDEST
00002fad: PUSH1 0x40
00002faf: DUP2
00002fb0: ADD
00002fb1: PUSH2 0x2fba
00002fb4: DUP3
00002fb5: DUP5
00002fb6: PUSH2 0x25c1
00002fb9: JUMP
00002fba: JUMPDEST
00002fbb: DUP2
00002fbc: DUP2
00002fbd: SUB
00002fbe: PUSH1 0x20
00002fc0: DUP4
00002fc1: ADD
00002fc2: MSTORE
00002fc3: PUSH2 0x1c32
00002fc6: DUP2
00002fc7: PUSH2 0x288e
00002fca: JUMP
00002fcb: JUMPDEST
00002fcc: PUSH1 0x20
00002fce: DUP2
00002fcf: ADD
00002fd0: PUSH2 0x1481
00002fd3: DUP3
00002fd4: DUP5
00002fd5: PUSH2 0x25db
00002fd8: JUMP
00002fd9: JUMPDEST
00002fda: PUSH1 0x80
00002fdc: DUP2
00002fdd: ADD
00002fde: PUSH2 0x2fe7
00002fe1: DUP3
00002fe2: DUP8
00002fe3: PUSH2 0x25e4
00002fe6: JUMP
00002fe7: JUMPDEST
00002fe8: PUSH2 0x2ff4
00002feb: PUSH1 0x20
00002fed: DUP4
00002fee: ADD
00002fef: DUP7
00002ff0: PUSH2 0x2dbc
00002ff3: JUMP
00002ff4: JUMPDEST
00002ff5: PUSH2 0x3001
00002ff8: PUSH1 0x40
00002ffa: DUP4
00002ffb: ADD
00002ffc: DUP6
00002ffd: PUSH2 0x25e4
00003000: JUMP
00003001: JUMPDEST
00003002: PUSH2 0x300e
00003005: PUSH1 0x60
00003007: DUP4
00003008: ADD
00003009: DUP5
0000300a: PUSH2 0x25e4
0000300d: JUMP
0000300e: JUMPDEST
0000300f: SWAP6
00003010: SWAP5
00003011: POP
00003012: POP
00003013: POP
00003014: POP
00003015: POP
00003016: JUMP
00003017: JUMPDEST
00003018: PUSH1 0x20
0000301a: DUP1
0000301b: DUP3
0000301c: MSTORE
0000301d: DUP2
0000301e: ADD
0000301f: PUSH2 0x1c32
00003022: DUP2
00003023: DUP5
00003024: PUSH2 0x25ed
00003027: JUMP
00003028: JUMPDEST
00003029: PUSH1 0x20
0000302b: DUP1
0000302c: DUP3
0000302d: MSTORE
0000302e: DUP2
0000302f: ADD
00003030: PUSH2 0x1481
00003033: DUP2
00003034: PUSH2 0x268d
00003037: JUMP
00003038: JUMPDEST
00003039: PUSH1 0x20
0000303b: DUP1
0000303c: DUP3
0000303d: MSTORE
0000303e: DUP2
0000303f: ADD
00003040: PUSH2 0x1481
00003043: DUP2
00003044: PUSH2 0x26ec
00003047: JUMP
00003048: JUMPDEST
00003049: PUSH1 0x20
0000304b: DUP1
0000304c: DUP3
0000304d: MSTORE
0000304e: DUP2
0000304f: ADD
00003050: PUSH2 0x1481
00003053: DUP2
00003054: PUSH2 0x2725
00003057: JUMP
00003058: JUMPDEST
00003059: PUSH1 0x20
0000305b: DUP1
0000305c: DUP3
0000305d: MSTORE
0000305e: DUP2
0000305f: ADD
00003060: PUSH2 0x1481
00003063: DUP2
00003064: PUSH2 0x275e
00003067: JUMP
00003068: JUMPDEST
00003069: PUSH1 0x20
0000306b: DUP1
0000306c: DUP3
0000306d: MSTORE
0000306e: DUP2
0000306f: ADD
00003070: PUSH2 0x1481
00003073: DUP2
00003074: PUSH2 0x27bd
00003077: JUMP
00003078: JUMPDEST
00003079: PUSH1 0x20
0000307b: DUP1
0000307c: DUP3
0000307d: MSTORE
0000307e: DUP2
0000307f: ADD
00003080: PUSH2 0x1481
00003083: DUP2
00003084: PUSH2 0x27f6
00003087: JUMP
00003088: JUMPDEST
00003089: PUSH1 0x20
0000308b: DUP1
0000308c: DUP3
0000308d: MSTORE
0000308e: DUP2
0000308f: ADD
00003090: PUSH2 0x1481
00003093: DUP2
00003094: PUSH2 0x2855
00003097: JUMP
00003098: JUMPDEST
00003099: PUSH1 0x20
0000309b: DUP1
0000309c: DUP3
0000309d: MSTORE
0000309e: DUP2
0000309f: ADD
000030a0: PUSH2 0x1481
000030a3: DUP2
000030a4: PUSH2 0x2911
000030a7: JUMP
000030a8: JUMPDEST
000030a9: PUSH1 0x20
000030ab: DUP1
000030ac: DUP3
000030ad: MSTORE
000030ae: DUP2
000030af: ADD
000030b0: PUSH2 0x1481
000030b3: DUP2
000030b4: PUSH2 0x294a
000030b7: JUMP
000030b8: JUMPDEST
000030b9: PUSH1 0x20
000030bb: DUP1
000030bc: DUP3
000030bd: MSTORE
000030be: DUP2
000030bf: ADD
000030c0: PUSH2 0x1481
000030c3: DUP2
000030c4: PUSH2 0x2983
000030c7: JUMP
000030c8: JUMPDEST
000030c9: PUSH1 0x20
000030cb: DUP1
000030cc: DUP3
000030cd: MSTORE
000030ce: DUP2
000030cf: ADD
000030d0: PUSH2 0x1481
000030d3: DUP2
000030d4: PUSH2 0x29bc
000030d7: JUMP
000030d8: JUMPDEST
000030d9: PUSH1 0x20
000030db: DUP1
000030dc: DUP3
000030dd: MSTORE
000030de: DUP2
000030df: ADD
000030e0: PUSH2 0x1481
000030e3: DUP2
000030e4: PUSH2 0x29f5
000030e7: JUMP
000030e8: JUMPDEST
000030e9: PUSH1 0x20
000030eb: DUP1
000030ec: DUP3
000030ed: MSTORE
000030ee: DUP2
000030ef: ADD
000030f0: PUSH2 0x1481
000030f3: DUP2
000030f4: PUSH2 0x2a2e
000030f7: JUMP
000030f8: JUMPDEST
000030f9: PUSH1 0x20
000030fb: DUP1
000030fc: DUP3
000030fd: MSTORE
000030fe: DUP2
000030ff: ADD
00003100: PUSH2 0x1481
00003103: DUP2
00003104: PUSH2 0x2a8d
00003107: JUMP
00003108: JUMPDEST
00003109: PUSH1 0x20
0000310b: DUP1
0000310c: DUP3
0000310d: MSTORE
0000310e: DUP2
0000310f: ADD
00003110: PUSH2 0x1481
00003113: DUP2
00003114: PUSH2 0x2ac6
00003117: JUMP
00003118: JUMPDEST
00003119: PUSH1 0x20
0000311b: DUP1
0000311c: DUP3
0000311d: MSTORE
0000311e: DUP2
0000311f: ADD
00003120: PUSH2 0x1481
00003123: DUP2
00003124: PUSH2 0x2aff
00003127: JUMP
00003128: JUMPDEST
00003129: PUSH1 0x20
0000312b: DUP1
0000312c: DUP3
0000312d: MSTORE
0000312e: DUP2
0000312f: ADD
00003130: PUSH2 0x1481
00003133: DUP2
00003134: PUSH2 0x2b5e
00003137: JUMP
00003138: JUMPDEST
00003139: PUSH1 0x20
0000313b: DUP1
0000313c: DUP3
0000313d: MSTORE
0000313e: DUP2
0000313f: ADD
00003140: PUSH2 0x1481
00003143: DUP2
00003144: PUSH2 0x2bbd
00003147: JUMP
00003148: JUMPDEST
00003149: PUSH1 0x20
0000314b: DUP1
0000314c: DUP3
0000314d: MSTORE
0000314e: DUP2
0000314f: ADD
00003150: PUSH2 0x1481
00003153: DUP2
00003154: PUSH2 0x2c1c
00003157: JUMP
00003158: JUMPDEST
00003159: PUSH1 0x20
0000315b: DUP1
0000315c: DUP3
0000315d: MSTORE
0000315e: DUP2
0000315f: ADD
00003160: PUSH2 0x1481
00003163: DUP2
00003164: PUSH2 0x2c55
00003167: JUMP
00003168: JUMPDEST
00003169: PUSH1 0x20
0000316b: DUP1
0000316c: DUP3
0000316d: MSTORE
0000316e: DUP2
0000316f: ADD
00003170: PUSH2 0x1481
00003173: DUP2
00003174: PUSH2 0x2c8e
00003177: JUMP
00003178: JUMPDEST
00003179: PUSH1 0x20
0000317b: DUP1
0000317c: DUP3
0000317d: MSTORE
0000317e: DUP2
0000317f: ADD
00003180: PUSH2 0x1481
00003183: DUP2
00003184: PUSH2 0x2cc7
00003187: JUMP
00003188: JUMPDEST
00003189: PUSH1 0x20
0000318b: DUP1
0000318c: DUP3
0000318d: MSTORE
0000318e: DUP2
0000318f: ADD
00003190: PUSH2 0x1481
00003193: DUP2
00003194: PUSH2 0x2d00
00003197: JUMP
00003198: JUMPDEST
00003199: PUSH1 0x20
0000319b: DUP1
0000319c: DUP3
0000319d: MSTORE
0000319e: DUP2
0000319f: ADD
000031a0: PUSH2 0x1481
000031a3: DUP2
000031a4: PUSH2 0x2d72
000031a7: JUMP
000031a8: JUMPDEST
000031a9: PUSH1 0x20
000031ab: DUP2
000031ac: ADD
000031ad: PUSH2 0x1481
000031b0: DUP3
000031b1: DUP5
000031b2: PUSH2 0x25e4
000031b5: JUMP
000031b6: JUMPDEST
000031b7: PUSH1 0x40
000031b9: MLOAD
000031ba: DUP2
000031bb: DUP2
000031bc: ADD
000031bd: PUSH8 0xffffffffffffffff
000031c6: DUP2
000031c7: GT
000031c8: DUP3
000031c9: DUP3
000031ca: LT
000031cb: OR
000031cc: ISZERO
000031cd: PUSH2 0x31d5
000031d0: JUMPI
000031d1: PUSH1 0x00
000031d3: DUP1
000031d4: REVERT
000031d5: JUMPDEST
000031d6: PUSH1 0x40
000031d8: MSTORE
000031d9: SWAP2
000031da: SWAP1
000031db: POP
000031dc: JUMP
000031dd: JUMPDEST
000031de: PUSH1 0x00
000031e0: PUSH8 0xffffffffffffffff
000031e9: DUP3
000031ea: GT
000031eb: ISZERO
000031ec: PUSH2 0x31f4
000031ef: JUMPI
000031f0: PUSH1 0x00
000031f2: DUP1
000031f3: REVERT
000031f4: JUMPDEST
000031f5: POP
000031f6: PUSH1 0x20
000031f8: SWAP1
000031f9: DUP2
000031fa: MUL
000031fb: ADD
000031fc: SWAP1
000031fd: JUMP
000031fe: JUMPDEST
000031ff: PUSH1 0x00
00003201: PUSH8 0xffffffffffffffff
0000320a: DUP3
0000320b: GT
0000320c: ISZERO
0000320d: PUSH2 0x3215
00003210: JUMPI
00003211: PUSH1 0x00
00003213: DUP1
00003214: REVERT
00003215: JUMPDEST
00003216: POP
00003217: PUSH1 0x20
00003219: PUSH1 0x1f
0000321b: SWAP2
0000321c: SWAP1
0000321d: SWAP2
0000321e: ADD
0000321f: PUSH1 0x1f
00003221: NOT
00003222: AND
00003223: ADD
00003224: SWAP1
00003225: JUMP
00003226: JUMPDEST
00003227: MLOAD
00003228: SWAP1
00003229: JUMP
0000322a: JUMPDEST
0000322b: SWAP1
0000322c: DUP2
0000322d: MSTORE
0000322e: PUSH1 0x20
00003230: ADD
00003231: SWAP1
00003232: JUMP
00003233: JUMPDEST
00003234: PUSH1 0x00
00003236: PUSH2 0x1481
00003239: DUP3
0000323a: PUSH2 0x3243
0000323d: JUMP
0000323e: JUMPDEST
0000323f: ISZERO
00003240: ISZERO
00003241: SWAP1
00003242: JUMP
00003243: JUMPDEST
00003244: PUSH1 0x01
00003246: PUSH1 0x01
00003248: PUSH1 0xa0
0000324a: SHL
0000324b: SUB
0000324c: AND
0000324d: SWAP1
0000324e: JUMP
0000324f: JUMPDEST
00003250: PUSH1 0xff
00003252: AND
00003253: SWAP1
00003254: JUMP
00003255: JUMPDEST
00003256: PUSH1 0x00
00003258: PUSH2 0x1481
0000325b: DUP3
0000325c: PUSH1 0x00
0000325e: PUSH2 0x1481
00003261: DUP3
00003262: PUSH2 0x3233
00003265: JUMP
00003266: JUMPDEST
00003267: DUP3
00003268: DUP2
00003269: DUP4
0000326a: CALLDATACOPY
0000326b: POP
0000326c: PUSH1 0x00
0000326e: SWAP2
0000326f: ADD
00003270: MSTORE
00003271: JUMP
00003272: JUMPDEST
00003273: PUSH1 0x00
00003275: JUMPDEST
00003276: DUP4
00003277: DUP2
00003278: LT
00003279: ISZERO
0000327a: PUSH2 0x328d
0000327d: JUMPI
0000327e: DUP2
0000327f: DUP2
00003280: ADD
00003281: MLOAD
00003282: DUP4
00003283: DUP3
00003284: ADD
00003285: MSTORE
00003286: PUSH1 0x20
00003288: ADD
00003289: PUSH2 0x3275
0000328c: JUMP
0000328d: JUMPDEST
0000328e: DUP4
0000328f: DUP2
00003290: GT
00003291: ISZERO
00003292: PUSH2 0x329c
00003295: JUMPI
00003296: PUSH1 0x00
00003298: DUP5
00003299: DUP5
0000329a: ADD
0000329b: MSTORE
0000329c: JUMPDEST
0000329d: POP
0000329e: POP
0000329f: POP
000032a0: POP
000032a1: JUMP
000032a2: JUMPDEST
000032a3: PUSH1 0x00
000032a5: PUSH2 0x1481
000032a8: DUP3
000032a9: PUSH1 0x00
000032ab: PUSH2 0x1481
000032ae: DUP3
000032af: PUSH2 0x32bd
000032b2: JUMP
000032b3: JUMPDEST
000032b4: PUSH1 0x1f
000032b6: ADD
000032b7: PUSH1 0x1f
000032b9: NOT
000032ba: AND
000032bb: SWAP1
000032bc: JUMP
000032bd: JUMPDEST
000032be: PUSH1 0x60
000032c0: SHL
000032c1: SWAP1
000032c2: JUMP
000032c3: JUMPDEST
000032c4: PUSH2 0x32cc
000032c7: DUP2
000032c8: PUSH2 0x3233
000032cb: JUMP
000032cc: JUMPDEST
000032cd: DUP2
000032ce: EQ
000032cf: PUSH2 0x0b42
000032d2: JUMPI
000032d3: PUSH1 0x00
000032d5: DUP1
000032d6: REVERT
000032d7: JUMPDEST
000032d8: PUSH2 0x32cc
000032db: DUP2
000032dc: PUSH2 0x156b
000032df: JUMP
000032e0: INVALID
000032e1: LOG3
000032e2: PUSH6 0x627a7a723158
000032e9: KECCAK256
000032ea: UNKNOWN(0xC7)
000032eb: UNKNOWN(0xE7)
000032ec: RETURNDATASIZE
000032ed: XOR
000032ee: PUSH14 0x5a2dfd47dda30b5cea910993863d
000032fd: UNKNOWN(0xE3)
000032fe: UNKNOWN(0xCA)
000032ff: PUSH20 0x2494b9ca51ac08b9678e6c6578706572696d656e
00003314: PUSH21

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x98e03fce9eb81f858225450b5a9c5a8b7ad3c716e6ed64d0b8a1892c19aabc0f
call_targets: 0x8913361f10a407b71cc8d0658aca7a65e355ab83
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x98e03fce9eb81f858225450b5a9c5a8b7ad3c716e6ed64d0b8a1892c19aabc0f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x8913361f10a407b71cc8d0658aca7a65e355ab83"
    ],
    "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": "0xdc5724e4",
            "selector": "0xdc5724e4",
            "calldata_variants": [
                "0xdc5724e4",
                "0xdc5724e40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb80c747",
            "selector": "0xfb80c747",
            "calldata_variants": [
                "0xfb80c747",
                "0xfb80c7470000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0a7f03",
            "selector": "0xfc0a7f03",
            "calldata_variants": [
                "0xfc0a7f03",
                "0xfc0a7f030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd50fd1f4",
            "selector": "0xd50fd1f4",
            "calldata_variants": [
                "0xd50fd1f4",
                "0xd50fd1f40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd6cd9473",
            "selector": "0xd6cd9473",
            "calldata_variants": [
                "0xd6cd9473",
                "0xd6cd94730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd0e30db0",
            "selector": "0xd0e30db0",
            "calldata_variants": [
                "0xd0e30db0",
                "0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd121b696",
            "selector": "0xd121b696",
            "calldata_variants": [
                "0xd121b696",
                "0xd121b6960000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd29ab55b",
            "selector": "0xd29ab55b",
            "calldata_variants": [
                "0xd29ab55b",
                "0xd29ab55b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2309,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2684,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3225,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 10,
    "guards_detected": [],
    "untrusted_call_count": 10
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x98e03fce9eb81f858225450b5a9c5a8b7ad3c716e6ed64d0b8a1892c19aabc0f
call_targets: 0x8913361f10a407b71cc8d0658aca7a65e355ab83
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x98e03fce9eb81f858225450b5a9c5a8b7ad3c716e6ed64d0b8a1892c19aabc0f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x8913361f10a407b71cc8d0658aca7a65e355ab83"
    ],
    "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": "0xdc5724e4",
            "selector": "0xdc5724e4",
            "calldata_variants": [
                "0xdc5724e4",
                "0xdc5724e40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfb80c747",
            "selector": "0xfb80c747",
            "calldata_variants": [
                "0xfb80c747",
                "0xfb80c7470000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0a7f03",
            "selector": "0xfc0a7f03",
            "calldata_variants": [
                "0xfc0a7f03",
                "0xfc0a7f030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd50fd1f4",
            "selector": "0xd50fd1f4",
            "calldata_variants": [
                "0xd50fd1f4",
                "0xd50fd1f40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd6cd9473",
            "selector": "0xd6cd9473",
            "calldata_variants": [
                "0xd6cd9473",
                "0xd6cd94730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd0e30db0",
            "selector": "0xd0e30db0",
            "calldata_variants": [
                "0xd0e30db0",
                "0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd121b696",
            "selector": "0xd121b696",
            "calldata_variants": [
                "0xd121b696",
                "0xd121b6960000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd29ab55b",
            "selector": "0xd29ab55b",
            "calldata_variants": [
                "0xd29ab55b",
                "0xd29ab55b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2309,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2684,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3225,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 10,
    "guards_detected": []
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 14
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 15
}