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

Analysis Run

6b94122f-0b42-463b-a985-cc39b8b8438a

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

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted DELEGATECALL target 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
31574 report.consolidate complete 1 / 1 3 months ago
78071 artifact.fetch complete 1 / 3 1 week ago
78072 tool.cast_disasm complete 1 / 3 1 week ago
78073 analysis.bundle complete 1 / 3 1 week ago
78074 capability.graph complete 1 / 3 1 week ago
78075 detector.run complete 1 / 3 1 week ago
78076 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
Reviewed the runtime bytecode; no concrete, exploitable value-extraction path is evident from the observable CALL/DELEGATECALL patterns and upgrade logic, which appear gated by access checks (onlyProxy/core). No unprotected upgrade, value transfer, or selfdestruct paths are visible from bytecode alone.
View stderr
[codex:739887] OpenAI Codex v0.77.0 (research preview)
[codex:739887] --------
[codex:739887] workdir: /tmp/codex-multi-e7p0ryps
[codex:739887] model: gpt-5.2-codex
[codex:739887] provider: openai
[codex:739887] approval: never
[codex:739887] sandbox: read-only
[codex:739887] reasoning effort: xhigh
[codex:739887] reasoning summaries: auto
[codex:739887] session id: 019b878d-8066-7601-be8b-f6c37d0374c6
[codex:739887] --------
[codex:739887] user
[codex:739887] 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:739887] 
[codex:739887] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:739887] 
[codex:739887] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:739887] - Gas inefficiency, code quality, or best practices
[codex:739887] - Theoretical vulnerabilities without a clear extraction path
[codex:739887] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:739887] - Issues requiring social engineering or off-chain coordination
[codex:739887] 
[codex:739887] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:739887] - CALL/DELEGATECALL with controllable destination or calldata
[codex:739887] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:739887] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:739887] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:739887] - External calls before state updates (reentrancy)
[codex:739887] - SELFDESTRUCT with controllable beneficiary
[codex:739887] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:739887] 
[codex:739887] For each finding, you MUST explain:
[codex:739887] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:739887] 2. The concrete sequence of transactions to extract value
[codex:739887] 3. Why you believe this is exploitable (not just suspicious)
[codex:739887] 
[codex:739887] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:739887] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:739887] 
[codex:739887] Output MUST be valid JSON matching the provided schema.
[codex:739887] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:739887] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:739887] mcp startup: no servers
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:739887] exec
[codex:739887] /bin/bash -lc ls in /tmp/codex-multi-e7p0ryps succeeded in 6ms:
[codex:739887] BYTECODE_BUNDLE.txt
[codex:739887] codex-output-schema.json
[codex:739887] exec
[codex:739887] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-e7p0ryps succeeded in 6ms:
[codex:739887] Runtime bytecode bundle for best-effort auditing.
[codex:739887] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:739887] 
[codex:739887] FILE: runtime_bytecode.hex
[codex:739887] 0x60806040526004361061021d5760003560e01c80637295f46c1161011d578063b9588300116100b0578063e83613641161007f578063f2a40db811610064578063f2a40db8146106b5578063f308a7cc146106e4578063f47774d61461070457600080fd5b8063e83613641461067f578063f10c27201461069557600080fd5b8063b9588300146105ff578063ce88b1451461061f578063d4cbab611461063f578063e37930651461065f57600080fd5b806382ccdbc8116100ec57806382ccdbc8146105725780639cc0933d146105925780639dcb9921146105bf578063ab729a81146105df57600080fd5b80637295f46c146104f25780637b3feefa146105125780637c52f9ba146105325780637ce8a1651461055257600080fd5b80632337fdf3116101b05780634782f7791161017f5780635097e815116101645780635097e8151461049257806350baf1e0146104b2578063554c1b1f146104d257600080fd5b80634782f7791461045f5780634f1ef2861461047f57600080fd5b80632337fdf314610392578063319a74a6146103bf5780633659cfe6146103f7578063424de0c41461041757600080fd5b806315eb8425116101ec57806315eb8425146102ee57806319ab453c1461031057806319f9b2571461033057806322c2447a1461036557600080fd5b806308140102146102295780630e7b0fac146102665780630f03e4c31461029657806314f0c553146102b557600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061024961024436600461319b565b610724565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027257600080fd5b50610286610281366004613226565b6107a2565b604051901515815260200161025d565b3480156102a257600080fd5b50606a545b60405190815260200161025d565b3480156102c157600080fd5b506102d56102d0366004613226565b6107cd565b60405167ffffffffffffffff909116815260200161025d565b3480156102fa57600080fd5b5061030e61030936600461327e565b61080b565b005b34801561031c57600080fd5b5061030e61032b3660046132d5565b6108c9565b34801561033c57600080fd5b5061035061034b366004613395565b6109a1565b60405161025d9998979695949392919061342e565b34801561037157600080fd5b50610385610380366004613226565b610b3c565b60405161025d91906134a0565b34801561039e57600080fd5b506103b26103ad366004613226565b610d61565b60405161025d9190613582565b3480156103cb57600080fd5b506102a76103da366004613395565b805160208183018101805160668252928201919093012091525481565b34801561040357600080fd5b5061030e6104123660046132d5565b610d78565b34801561042357600080fd5b50610452610432366004613395565b805160208183018101805160688252928201919093012091525460ff1681565b60405161025d91906135ab565b34801561046b57600080fd5b5061030e61047a3660046135d3565b610ef3565b61030e61048d3660046135ff565b610fe6565b34801561049e57600080fd5b506102d56104ad366004613226565b61114e565b3480156104be57600080fd5b5061030e6104cd36600461327e565b61118e565b3480156104de57600080fd5b50606554610249906001600160a01b031681565b3480156104fe57600080fd5b5061030e61050d366004613668565b61127e565b34801561051e57600080fd5b5061028661052d366004613226565b611440565b34801561053e57600080fd5b5061030e61054d366004613701565b611449565b34801561055e57600080fd5b5061030e61056d366004613769565b6115dc565b34801561057e57600080fd5b5061030e61058d3660046137d2565b611679565b34801561059e57600080fd5b506105b26105ad366004613226565b611974565b60405161025d9190613855565b3480156105cb57600080fd5b5061030e6105da366004613226565b6119b2565b3480156105eb57600080fd5b5061030e6105fa36600461389a565b6119c6565b34801561060b57600080fd5b5061030e61061a36600461393a565b611b71565b34801561062b57600080fd5b506105b261063a3660046139b4565b611c7e565b34801561064b57600080fd5b5061030e61065a3660046139cd565b611e08565b34801561066b57600080fd5b5061028661067a366004613226565b611fc5565b34801561068b57600080fd5b506102a760695481565b3480156106a157600080fd5b506102a76106b0366004613226565b611fce565b3480156106c157600080fd5b506106d56106d03660046139b4565b611fe5565b60405161025d93929190613a81565b3480156106f057600080fd5b5061030e6106ff366004613226565b6120ad565b34801561071057600080fd5b5061030e61071f366004613ab3565b6120c1565b600061072e6121ac565b6107398787876122f4565b610747878787878787612444565b9050610755868660036124e6565b61075f868661260b565b7fb46cdb4570c673c875c4a059b702e7a957067ce3dad1590104fd65dd145f3db98686604051610790929190613b31565b60405180910390a19695505050505050565b600060025b6107b1848461265e565b60058111156107c2576107c2613595565b101590505b92915050565b6000606783836040516107e1929190613b45565b9081526040519081900360200190206002015467ffffffffffffffff610100909104169392505050565b6108136121ac565b600361081f848461265e565b600581111561083057610830613595565b1461087a5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206163636f756e7420737461746560581b60448201526064015b60405180910390fd5b806067848460405161088d929190613b45565b908152602001604051809103902060020160116101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b600054610100900460ff166108e45760005460ff16156108e8565b303b155b61095a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610871565b600054610100900460ff1615801561097c576000805461ffff19166101011790555b61080060695561098b8261268c565b801561099d576000805461ff00191690555b5050565b80516020818301810180516067825292820191909301209152805481906109c790613b55565b80601f01602080910402602001604051908101604052809291908181526020018280546109f390613b55565b8015610a405780601f10610a1557610100808354040283529160200191610a40565b820191906000526020600020905b815481529060010190602001808311610a2357829003601f168201915b505050505090806001018054610a5590613b55565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8190613b55565b8015610ace5780601f10610aa357610100808354040283529160200191610ace565b820191906000526020600020905b815481529060010190602001808311610ab157829003601f168201915b505050506002830154600390930154919260ff81169267ffffffffffffffff6101008304811693506901000000000000000000830481169271010000000000000000000000000000000000900481169181811691680100000000000000008204811691600160801b90041689565b604080516101208101825260608082526020820181905260008284018190529082018190526080820181905260a0820181905260c0820181905260e082018190526101008201529051606790610b959085908590613b45565b908152602001604051809103902060405180610120016040529081600082018054610bbf90613b55565b80601f0160208091040260200160405190810160405280929190818152602001828054610beb90613b55565b8015610c385780601f10610c0d57610100808354040283529160200191610c38565b820191906000526020600020905b815481529060010190602001808311610c1b57829003601f168201915b50505050508152602001600182018054610c5190613b55565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7d90613b55565b8015610cca5780601f10610c9f57610100808354040283529160200191610cca565b820191906000526020600020905b815481529060010190602001808311610cad57829003601f168201915b5050509183525050600282015460ff81161515602083015267ffffffffffffffff6101008204811660408401526901000000000000000000820481166060840152710100000000000000000000000000000000009091048116608083015260039092015480831660a0830152680100000000000000008104831660c0830152600160801b900490911660e090910152905092915050565b6060610d6d838361269d565b602001519392505050565b6001600160a01b037f0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def1504163003610e055760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610871565b7f0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def15046001600160a01b0316610e607f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610ecb5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610871565b610ed4816127f3565b60408051600080825260208201909252610ef091839190612a16565b50565b610efb6121ac565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f48576040519150601f19603f3d011682016040523d82523d6000602084013e610f4d565b606091505b5050905080610f9e5760405162461bcd60e51b815260206004820152601260248201527f4661696c656420746f207472616e7366657200000000000000000000000000006044820152606401610871565b826001600160a01b03167f94b2de810873337ed265c5f8cf98c9cffefa06b8607f9a2f1fbaebdfbcfbef1c83604051610fd991815260200190565b60405180910390a2505050565b6001600160a01b037f0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def15041630036110735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610871565b7f0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def15046001600160a01b03166110ce7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146111395760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610871565b611142826127f3565b61099d82826001612a16565b600060678383604051611162929190613b45565b9081526040519081900360200190206003015467ffffffffffffffff600160801b909104169392505050565b6111966121ac565b60036111a2848461265e565b60058111156111b3576111b3613595565b146111f85760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206163636f756e7420737461746560581b6044820152606401610871565b60016067848460405161120c929190613b45565b908152604051908190036020018120600201805492151560ff199093169290921790915581906067906112429086908690613b45565b908152602001604051809103902060030160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b6112866121ac565b6112918686866122f4565b6065546040517fa3a05ecc0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063a3a05ecc906112e2908690899089908c908990600401613b89565b600060405180830381600087803b1580156112fc57600080fd5b505af1158015611310573d6000803e3d6000fd5b50505050611320858560036124e6565b61132c858560046124e6565b806067868660405161133f929190613b45565b9081526040519081900360200190206113588282613d35565b505060405163a8ea23ff60e01b81526001600160a01b0384169063a8ea23ff906113889088908890600401613b31565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c99190613ffa565b6113ff5760405162461bcd60e51b8152602060048201526007602482015266109b1bd8dad95960ca1b6044820152606401610871565b7f4f53bd233cf9812bb7f4f2e3dbf3803786ac1d296dfac41ec34500d9c55a075d8585604051611430929190613b31565b60405180910390a1505050505050565b600060016107a7565b6114516121ac565b600361145d858561265e565b600581111561146e5761146e613595565b146114b35760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206163636f756e7420737461746560581b6044820152606401610871565b8067ffffffffffffffff16606785856040516114d0929190613b45565b9081526040519081900360200190206003015467ffffffffffffffff600160801b90910416106115425760405162461bcd60e51b815260206004820152600a60248201527f506173742065706f6368000000000000000000000000000000000000000000006044820152606401610871565b8160678585604051611555929190613b45565b908152602001604051809103902060020160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550806067858560405161159f929190613b45565b908152602001604051809103902060030160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b6115e46121ac565b60036115f0848461265e565b600581111561160157611601613595565b146116465760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206163636f756e7420737461746560581b6044820152606401610871565b8060678484604051611659929190613b45565b9081526040519081900360200190206116728282613d35565b5050505050565b6116816121ac565b600061168d858561265e565b600581111561169e5761169e613595565b146116eb5760405162461bcd60e51b815260206004820152601b60248201527f496e697469616c7320616c7265616479207265676973746572656400000000006044820152606401610871565b6030831461173b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964207075626c6963206b6579206c656e677468000000000000006044820152606401610871565b6060811461178b5760405162461bcd60e51b815260206004820152601d60248201527f5369676e6174757265206c656e67746820697320696e636f72726563740000006044820152606401610871565b6001600160a01b0385166117e15760405162461bcd60e51b815260206004820152601860248201527f4465706f7369746f722063616e6e6f74206265207a65726f00000000000000006044820152606401610871565b6117ed848460016124e6565b61181a604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b6001600160a01b0386168152604080516020601f85018190048102820181019092528381529084908490819084018382808284376000920191909152505050506020820152606a546040516066906118759088908890613b45565b9081526020016040518091039020819055507f48101f56073df6219b2e865aa98a671cc8a1c737aec309b6458e8f2dccc7eaa185856040516118b8929190613b31565b60405180910390a1606a805460018101825560009190915281517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a516003909202918201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911781556020808401518051859461195f937f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a529091019201906130a4565b50604082015181600201555050505050505050565b6119a1604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b6119ab838361269d565b9392505050565b6119ba6121ac565b61099d828260056124e6565b6119ce6121ac565b6119d98787876122f4565b6040805160a06020601f8901819004028201810190925260808101878152611a74928291908a908a9081908501838280828437600092019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284376000920191909152505050908252506001600160a01b0380861660208301528a1660409091015282612bd3565b611a80868660036124e6565b611a8a868661260b565b60405163a8ea23ff60e01b81526001600160a01b0383169063a8ea23ff90611ab89089908990600401613b31565b602060405180830381865afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190613ffa565b611b2f5760405162461bcd60e51b8152602060048201526007602482015266109b1bd8dad95960ca1b6044820152606401610871565b7f706aa38e043f036ca1af4e8ca7df8eb89a0a5c556b3a472a15c582d2bbc487778686604051611b60929190613b31565b60405180910390a150505050505050565b611b796121ac565b611b848686866122f4565b611b92858585898686612c66565b611b9e858560036124e6565b611ba8858561260b565b60405163a8ea23ff60e01b81526001600160a01b0384169063a8ea23ff90611bd69088908890600401613b31565b602060405180830381865afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c179190613ffa565b611c4d5760405162461bcd60e51b8152602060048201526007602482015266109b1bd8dad95960ca1b6044820152606401610871565b7fc8fec28ee118da10d390232a2230dda290e96c9735a09e2e41fa4235d871c2a18585604051611430929190613b31565b611cab604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b606a548210611d225760405162461bcd60e51b815260206004820152602260248201527f54686520696e6465782072657175657374656420646f6573206e6f742065786960448201527f73740000000000000000000000000000000000000000000000000000000000006064820152608401610871565b606a8281548110611d3557611d35614017565b6000918252602091829020604080516060810190915260039092020180546001600160a01b031682526001810180549293919291840191611d7590613b55565b80601f0160208091040260200160405190810160405280929190818152602001828054611da190613b55565b8015611dee5780601f10611dc357610100808354040283529160200191611dee565b820191906000526020600020905b815481529060010190602001808311611dd157829003601f168201915b505050505081526020016002820154815250509050919050565b611e106121ac565b6001611e1c888861265e565b6005811115611e2d57611e2d613595565b14611e7a5760405162461bcd60e51b815260206004820152601760248201527f496e697469616c73206e6f7420726567697374657265640000000000000000006044820152606401610871565b611e86878760026124e6565b600060668888604051611e9a929190613b45565b9081526020016040518091039020549050606a8181548110611ebe57611ebe614017565b60009182526020909120600390910201546001600160a01b038a8116911614611f4f5760405162461bcd60e51b815260206004820152602160248201527f5072652d72656769737465726564206465706f7369746f72206d69736d61746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610871565b43606a8281548110611f6357611f63614017565b906000526020600020906003020160020181905550817fad41c325015736b22376f621bbbef62836bd65c8db5dfdb0c4483f43d33ef0dd898989898989604051611fb29695949392919061402d565b60405180910390a2505050505050505050565b600060036107a7565b6000611fda838361269d565b604001519392505050565b606a8181548110611ff557600080fd5b6000918252602090912060039091020180546001820180546001600160a01b0390921693509061202490613b55565b80601f016020809104026020016040519081016040528092919081815260200182805461205090613b55565b801561209d5780601f106120725761010080835404028352916020019161209d565b820191906000526020600020905b81548152906001019060200180831161208057829003601f168201915b5050505050908060020154905083565b6120b56121ac565b61099d828260046124e6565b6120c96121ac565b606560009054906101000a90046001600160a01b03166001600160a01b03166385df41de6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121409190614076565b6001600160a01b031663a0d4e8e08484846040518463ffffffff1660e01b815260040161216f93929190614093565b600060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b50505050505050565b3b151590565b606560009054906101000a90046001600160a01b03166001600160a01b031663748365ef6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122239190614076565b6040517f18dc03250000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0391909116906318dc032590602401602060405180830381865afa158015612282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a69190613ffa565b6122f25760405162461bcd60e51b815260206004820152600960248201527f4f6e6c7920636f726500000000000000000000000000000000000000000000006044820152606401610871565b565b6002612300838361265e565b600581111561231157612311613595565b1461235e5760405162461bcd60e51b815260206004820152601560248201527f4465706f736974206e6f7420636f6d706c6574656400000000000000000000006044820152606401610871565b6123688282612cf3565b6123da5760405162461bcd60e51b815260206004820152602c60248201527f53756666696369656e7420626c6f636b73206d7573742070617373206265666f60448201527f72652073747265616d696e6700000000000000000000000000000000000000006064820152608401610871565b6123e4828261269d565b516001600160a01b0384811691161461243f5760405162461bcd60e51b815260206004820152600e60248201527f4f6e6c79206465706f7369746f720000000000000000000000000000000000006044820152606401610871565b505050565b6065546040517f2e5ffb0f0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690632e5ffb0f90612498908a90889088908c908c908a906004016140b6565b6020604051808303816000875af11580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124db9190614076565b979650505050505050565b60058160058111156124fa576124fa613595565b11156125485760405162461bcd60e51b815260206004820152601360248201527f537461747573206f7574206f662072616e6765000000000000000000000000006044820152606401610871565b612552838361265e565b600581111561256357612563613595565b60010181600581111561257857612578613595565b146125c55760405162461bcd60e51b815260206004820152601760248201527f5374617475732063616e206e6f742064656372656173650000000000000000006044820152606401610871565b80606884846040516125d8929190613b45565b908152604051908190036020019020805460ff1916600183600581111561260157612601613595565b0217905550505050565b64077359400060678383604051612623929190613b45565b908152602001604051809103902060020160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600060688383604051612672929190613b45565b9081526040519081900360200190205460ff169392505050565b61269581612d11565b610ef0612d81565b6126ca604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b60006126d6848461265e565b60058111156126e7576126e7613595565b146107c757606a60668484604051612700929190613b45565b9081526020016040518091039020548154811061271f5761271f614017565b6000918252602091829020604080516060810190915260039092020180546001600160a01b03168252600181018054929391929184019161275f90613b55565b80601f016020809104026020016040519081016040528092919081815260200182805461278b90613b55565b80156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50505050508152602001600282015481525050905092915050565b6065546001600160a01b03166128365760405162461bcd60e51b815260206004820152600860248201526724b734ba1022b93960c11b6044820152606401610871565b606554604080517f748365ef00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163748365ef9160048083019260209291908290030181865afa158015612899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bd9190614076565b6040517f3b6cd6ff0000000000000000000000000000000000000000000000000000000081523060048201529091506001600160a01b03821690633b6cd6ff90602401602060405180830381865afa15801561291d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129419190613ffa565b1580156129ca57506040517ff47f2f1d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382169063f47f2f1d90602401602060405180830381865afa1580156129a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ca9190613ffa565b61099d5760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d757461626c6500000000000000000000000000000000000000006044820152606401610871565b6000612a497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b9050612a5484612dfc565b600083511180612a615750815b15612a7257612a708484612ebe565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661167257805460ff191660011781556040516001600160a01b0383166024820152612b1f90869060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3659cfe600000000000000000000000000000000000000000000000000000000179052612ebe565b50805460ff191681557f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03838116911614612bca5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201527f75727468657220757067726164657300000000000000000000000000000000006064820152608401610871565b61167285612fc0565b60655460408084015184516060860151602087015193517f1642f2050000000000000000000000000000000000000000000000000000000081526001600160a01b0390951694631642f20594612c30949392918890600401614100565b600060405180830381600087803b158015612c4a57600080fd5b505af1158015612c5e573d6000803e3d6000fd5b505050505050565b6065546040517fb95297230000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b952972390612cb99087908a908a90899089908990600401614151565b600060405180830381600087803b158015612cd357600080fd5b505af1158015612ce7573d6000803e3d6000fd5b50505050505050505050565b600043606954612d03858561269d565b604001510111159392505050565b6001600160a01b038116612d525760405162461bcd60e51b815260206004820152600860248201526724b734ba1022b93960c11b6044820152606401610871565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600054610100900460ff16612dec5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610871565b612df4613000565b6122f2613000565b803b612e705760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610871565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060823b612f345760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610871565b600080846001600160a01b031684604051612f4f9190614192565b600060405180830381855af49150503d8060008114612f8a576040519150601f19603f3d011682016040523d82523d6000602084013e612f8f565b606091505b5091509150612fb782826040518060600160405280602781526020016141af6027913961306b565b95945050505050565b612fc981612dfc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff166122f25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610871565b6060831561307a5750816119ab565b82511561308a5782518084602001fd5b8160405162461bcd60e51b81526004016108719190613582565b8280546130b090613b55565b90600052602060002090601f0160209004810192826130d25760008555613118565b82601f106130eb57805160ff1916838001178555613118565b82800160010185558215613118579182015b828111156131185782518255916020019190600101906130fd565b50613124929150613128565b5090565b5b808211156131245760008155600101613129565b6001600160a01b0381168114610ef057600080fd5b60008083601f84011261316457600080fd5b50813567ffffffffffffffff81111561317c57600080fd5b60208301915083602082850101111561319457600080fd5b9250929050565b600080600080600080608087890312156131b457600080fd5b86356131bf8161313d565b9550602087013567ffffffffffffffff808211156131dc57600080fd5b6131e88a838b01613152565b9097509550604089013591508082111561320157600080fd5b5061320e89828a01613152565b979a9699509497949695606090950135949350505050565b6000806020838503121561323957600080fd5b823567ffffffffffffffff81111561325057600080fd5b61325c85828601613152565b90969095509350505050565b67ffffffffffffffff81168114610ef057600080fd5b60008060006040848603121561329357600080fd5b833567ffffffffffffffff8111156132aa57600080fd5b6132b686828701613152565b90945092505060208401356132ca81613268565b809150509250925092565b6000602082840312156132e757600080fd5b81356119ab8161313d565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261331957600080fd5b813567ffffffffffffffff80821115613334576133346132f2565b604051601f8301601f19908116603f0116810190828211818310171561335c5761335c6132f2565b8160405283815286602085880101111561337557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156133a757600080fd5b813567ffffffffffffffff8111156133be57600080fd5b6133ca84828501613308565b949350505050565b60005b838110156133ed5781810151838201526020016133d5565b838111156133fc576000848401525b50505050565b6000815180845261341a8160208601602086016133d2565b601f01601f19169290920160200192915050565b60006101208083526134428184018d613402565b90508281036020840152613456818c613402565b9915156040840152505067ffffffffffffffff9687166060820152948616608086015292851660a085015290841660c0840152831660e08301529091166101009091015292915050565b60208152600082516101208060208501526134bf610140850183613402565b91506020850151601f198584030160408601526134dc8382613402565b92505060408501516134f2606086018215159052565b50606085015167ffffffffffffffff8116608086015250608085015167ffffffffffffffff811660a08601525060a085015167ffffffffffffffff811660c08601525060c085015167ffffffffffffffff811660e08601525060e08501516101006135688187018367ffffffffffffffff169052565b9095015167ffffffffffffffff1693019290925250919050565b6020815260006119ab6020830184613402565b634e487b7160e01b600052602160045260246000fd5b60208101600683106135cd57634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156135e657600080fd5b82356135f18161313d565b946020939093013593505050565b6000806040838503121561361257600080fd5b823561361d8161313d565b9150602083013567ffffffffffffffff81111561363957600080fd5b61364585828601613308565b9150509250929050565b6000610120828403121561366257600080fd5b50919050565b60008060008060008060a0878903121561368157600080fd5b863561368c8161313d565b9550602087013567ffffffffffffffff808211156136a957600080fd5b6136b58a838b01613152565b9097509550604089013591506136ca8261313d565b90935060608801359250608088013590808211156136e757600080fd5b506136f489828a0161364f565b9150509295509295509295565b6000806000806060858703121561371757600080fd5b843567ffffffffffffffff81111561372e57600080fd5b61373a87828801613152565b909550935050602085013561374e81613268565b9150604085013561375e81613268565b939692955090935050565b60008060006040848603121561377e57600080fd5b833567ffffffffffffffff8082111561379657600080fd5b6137a287838801613152565b909550935060208601359150808211156137bb57600080fd5b506137c88682870161364f565b9150509250925092565b6000806000806000606086880312156137ea57600080fd5b85356137f58161313d565b9450602086013567ffffffffffffffff8082111561381257600080fd5b61381e89838a01613152565b9096509450604088013591508082111561383757600080fd5b5061384488828901613152565b969995985093965092949392505050565b602081526001600160a01b03825116602082015260006020830151606060408401526138846080840182613402565b9050604084015160608401528091505092915050565b600080600080600080600060a0888a0312156138b557600080fd5b87356138c08161313d565b9650602088013567ffffffffffffffff808211156138dd57600080fd5b6138e98b838c01613152565b909850965060408a013591508082111561390257600080fd5b5061390f8a828b01613152565b90955093505060608801356139238161313d565b809250506080880135905092959891949750929550565b60008060008060008060a0878903121561395357600080fd5b863561395e8161313d565b9550602087013567ffffffffffffffff81111561397a57600080fd5b61398689828a01613152565b909650945050604087013561399a8161313d565b959894975092956060810135946080909101359350915050565b6000602082840312156139c657600080fd5b5035919050565b60008060008060008060008060a0898b0312156139e957600080fd5b88356139f48161313d565b9750602089013567ffffffffffffffff80821115613a1157600080fd5b613a1d8c838d01613152565b909950975060408b0135915080821115613a3657600080fd5b613a428c838d01613152565b909750955060608b0135915080821115613a5b57600080fd5b50613a688b828c01613152565b999c989b50969995989497949560800135949350505050565b6001600160a01b0384168152606060208201526000613aa36060830185613402565b9050826040830152949350505050565b600080600060408486031215613ac857600080fd5b8335613ad38161313d565b9250602084013567ffffffffffffffff811115613aef57600080fd5b613afb86828701613152565b9497909650939450505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006133ca602083018486613b08565b8183823760009101908152919050565b600181811c90821680613b6957607f821691505b60208210810361366257634e487b7160e01b600052602260045260246000fd5b60006001600160a01b03808816835260806020840152613bad608084018789613b08565b9416604083015250606001529392505050565b6000808335601e19843603018112613bd757600080fd5b83018035915067ffffffffffffffff821115613bf257600080fd5b60200191503681900382131561319457600080fd5b601f82111561243f57600081815260208120601f850160051c81016020861015613c2e5750805b601f850160051c820191505b81811015612c5e57828155600101613c3a565b67ffffffffffffffff831115613c6557613c656132f2565b613c7983613c738354613b55565b83613c07565b6000601f841160018114613cad5760008515613c955750838201355b600019600387901b1c1916600186901b178355611672565b600083815260209020601f19861690835b82811015613cde5786850135825560209485019460019092019101613cbe565b5086821015613cfb5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8015158114610ef057600080fd5b600081356107c781613d0d565b600081356107c781613268565b613d3f8283613bc0565b67ffffffffffffffff811115613d5757613d576132f2565b613d6b81613d658554613b55565b85613c07565b6000601f821160018114613d9f5760008315613d875750838201355b600019600385901b1c1916600184901b178555613df9565b600085815260209020601f19841690835b82811015613dd05786850135825560209485019460019092019101613db0565b5084821015613ded5760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050613e0a6020830183613bc0565b613e18818360018601613c4d565b505060028101613e41613e2d60408501613d1b565b825490151560ff1660ff1991909116178255565b613e74613e5060608501613d28565b825468ffffffffffffffff00191660089190911b68ffffffffffffffff0016178255565b613ec5613e8360808501613d28565b82547fffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff1660489190911b70ffffffffffffffff00000000000000000016178255565b613f1e613ed460a08501613d28565b82547fffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff1660889190911b78ffffffffffffffff000000000000000000000000000000000016178255565b5060038101613f51613f3260c08501613d28565b825467ffffffffffffffff191667ffffffffffffffff91909116178255565b613fa1613f6060e08501613d28565b82547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff1660409190911b6fffffffffffffffff000000000000000016178255565b61243f613fb16101008501613d28565b82547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660809190911b77ffffffffffffffff0000000000000000000000000000000016178255565b60006020828403121561400c57600080fd5b81516119ab81613d0d565b634e487b7160e01b600052603260045260246000fd5b60608152600061404160608301888a613b08565b8281036020840152614054818789613b08565b90508281036040840152614069818587613b08565b9998505050505050505050565b60006020828403121561408857600080fd5b81516119ab8161313d565b6001600160a01b0384168152604060208201526000612fb7604083018486613b08565b6001600160a01b03871681526080602082015260006140d9608083018789613b08565b82810360408401526140ec818688613b08565b915050826060830152979650505050505050565b60006001600160a01b03808816835260a0602084015261412360a0840188613402565b8187166040850152838103606085015261413d8187613402565b925050508260808301529695505050505050565b60006001600160a01b03808916835260a0602084015261417560a08401888a613b08565b951660408301525060608101929092526080909101529392505050565b600082516141a48184602087016133d2565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220fd562af46ff3965537ae7ed199bb874aabe6db4cd550592e048262ad9eabf23464736f6c634300080d0033
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Examining upgradeable proxy bytecode for vulnerabilities**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] from eth_utils import decode_hex
[codex:739887] 
[codex:739887] hexstr=open('BYTECODE_BUNDLE.txt').read().split('runtime_bytecode.hex')[1]
[codex:739887] # extract after 0x
[codex:739887] import re
[codex:739887] m=re.search(r'0x[0-9a-fA-F]+', hexstr)
[codex:739887] code=m.group(0)[2:]
[codex:739887] # parse opcodes
[codex:739887] opcodes=[]
[codex:739887] # opcode table minimal
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] def disasm(code):
[codex:739887]     i=0
[codex:739887]     out=[]
[codex:739887]     while i<len(code):
[codex:739887]         op=code[i]
[codex:739887]         name=opnames.get(op,f'OP{op:02x}')
[codex:739887]         if 0x60<=op<=0x7f:
[codex:739887]             n=op-0x5f
[codex:739887]             data=code[i+1:i+1+n]
[codex:739887]             out.append((i, name, data.hex()))
[codex:739887]             i+=1+n
[codex:739887]         else:
[codex:739887]             out.append((i,name,None))
[codex:739887]             i+=1
[codex:739887]     return out
[codex:739887] 
[codex:739887] code_bytes=bytes.fromhex(code)
[codex:739887] ops=disasm(code_bytes)
[codex:739887] # find occurrences of CALL/DELEGATECALL/SELFDESTRUCT
[codex:739887] interesting=[op for op in ops if op[1] in ('CALL','DELEGATECALL','SELFDESTRUCT','CALLCODE')]
[codex:739887] print('CALLs', len([o for o in interesting if o[1]=='CALL']))
[codex:739887] print('DELEGATECALLs', len([o for o in interesting if o[1]=='DELEGATECALL']))
[codex:739887] print('SELFDESTRUCTs', len([o for o in interesting if o[1]=='SELFDESTRUCT']))
[codex:739887] # list last few
[codex:739887] print('First 10 calls:')
[codex:739887] for o in interesting[:10]:
[codex:739887]     print(o)
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 274ms:
[codex:739887] CALLs 6
[codex:739887] DELEGATECALLs 2
[codex:739887] SELFDESTRUCTs 0
[codex:739887] First 10 calls:
[codex:739887] (3864, 'CALL', None)
[codex:739887] (4863, 'CALL', None)
[codex:739887] (8588, 'CALL', None)
[codex:739887] (9382, 'CALL', None)
[codex:739887] (11341, 'CALL', None)
[codex:739887] (11478, 'CALL', None)
[codex:739887] (12123, 'DELEGATECALL', None)
[codex:739887] (16867, 'DELEGATECALL', None)
[codex:739887] (16894, 'CALLCODE', None)
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing contract call patterns**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] # disassembler
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] def disasm_range(start, end):
[codex:739887]     i=start
[codex:739887]     out=[]
[codex:739887]     while i<end:
[codex:739887]         op=code[i]
[codex:739887]         name=opnames.get(op,f'OP{op:02x}')
[codex:739887]         if 0x60<=op<=0x7f:
[codex:739887]             n=op-0x5f
[codex:739887]             data=code[i+1:i+1+n]
[codex:739887]             out.append((i, name, data.hex()))
[codex:739887]             i+=1+n
[codex:739887]         else:
[codex:739887]             out.append((i,name,None))
[codex:739887]             i+=1
[codex:739887]     return out
[codex:739887] 
[codex:739887] # find call/delegatecall offsets
[codex:739887] ops=[]
[codex:739887] # quick scan
[codex:739887] for i,b in enumerate(code):
[codex:739887]     if b in (0xf1,0xf4,0xf2,0xff):
[codex:739887]         ops.append((i,b))
[codex:739887] 
[codex:739887] # show context around each
[codex:739887] for i,b in ops:
[codex:739887]     name=opnames[b]
[codex:739887]     start=max(0,i-40)
[codex:739887]     end=min(len(code), i+10)
[codex:739887]     print('\\n',name,'at',i)
[codex:739887]     for o in disasm_range(start,end):
[codex:739887]         addr, n, data=o
[codex:739887]         mark='>>' if addr==i else '  '
[codex:739887]         if data:
[codex:739887]             print(f'{mark}{addr:05x}: {n} 0x{data}')
[codex:739887]         else:
[codex:739887]             print(f'{mark}{addr:05x}: {n}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 62ms:
[codex:739887] 
[codex:739887]  DELEGATECALL at 23
[codex:739887]   00000: PUSH1 0x80
[codex:739887]   00002: PUSH1 0x40
[codex:739887]   00004: MSTORE
[codex:739887]   00005: PUSH1 0x04
[codex:739887]   00007: CALLDATASIZE
[codex:739887]   00008: LT
[codex:739887]   00009: PUSH2 0x021d
[codex:739887]   0000c: JUMPI
[codex:739887]   0000d: PUSH1 0x00
[codex:739887]   0000f: CALLDATALOAD
[codex:739887]   00010: PUSH1 0xe0
[codex:739887]   00012: SHR
[codex:739887]   00013: DUP1
[codex:739887]   00014: PUSH4 0x7295f46c
[codex:739887]   00019: GT
[codex:739887]   0001a: PUSH2 0x011d
[codex:739887]   0001d: JUMPI
[codex:739887]   0001e: DUP1
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Correcting disassembly approach to avoid false positives**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] # build index by byte offset
[codex:739887] index_by_addr={addr:idx for idx,(addr,_,_) in enumerate(ops)}
[codex:739887] 
[codex:739887] # find op indices for calls and delegatecalls
[codex:739887] interesting=[(idx,op) for idx,op in enumerate(ops) if op[1] in ('CALL','DELEGATECALL')]
[codex:739887] print('Found',len(interesting),'CALL/DELEGATECALL ops')
[codex:739887] 
[codex:739887] for idx,(addr,name,_) in [(i,ops[i]) for i,_ in interesting]:
[codex:739887]     print('\\n',name,'at',hex(addr))
[codex:739887]     # show 12 ops before and after
[codex:739887]     start=max(0,idx-12)
[codex:739887]     end=min(len(ops), idx+6)
[codex:739887]     for j in range(start,end):
[codex:739887]         a,n,d=ops[j]
[codex:739887]         mark='>>' if j==idx else '  '
[codex:739887]         if d is None:
[codex:739887]             print(f'{mark}{a:05x}: {n}')
[codex:739887]         else:
[codex:739887]             print(f'{mark}{a:05x}: {n} 0x{d}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 35ms:
[codex:739887] Found 8 CALL/DELEGATECALL ops
[codex:739887] 
[codex:739887]  CALL at 0xf18
[codex:739887]   00f09: PUSH1 0x40
[codex:739887]   00f0b: MLOAD
[codex:739887]   00f0c: PUSH1 0x00
[codex:739887]   00f0e: PUSH1 0x40
[codex:739887]   00f10: MLOAD
[codex:739887]   00f11: DUP1
[codex:739887]   00f12: DUP4
[codex:739887]   00f13: SUB
[codex:739887]   00f14: DUP2
[codex:739887]   00f15: DUP6
[codex:739887]   00f16: DUP8
[codex:739887]   00f17: GAS
[codex:739887] >>00f18: CALL
[codex:739887]   00f19: SWAP3
[codex:739887]   00f1a: POP
[codex:739887]   00f1b: POP
[codex:739887]   00f1c: POP
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing low-level calls for exploits**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] # print from 0x0ee0 to 0x1030
[codex:739887] start=0x0ee0
[codex:739887] end=0x1040
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 37ms:
[codex:739887] 00ee0: DUP3
[codex:739887] 00ee1: ADD
[codex:739887] 00ee2: SWAP1
[codex:739887] 00ee3: SWAP3
[codex:739887] 00ee4: MSTORE
[codex:739887] 00ee5: PUSH2 0x0ef0
[codex:739887] 00ee8: SWAP2
[codex:739887] 00ee9: DUP4
[codex:739887] 00eea: SWAP2
[codex:739887] 00eeb: SWAP1
[codex:739887] 00eec: PUSH2 0x2a16
[codex:739887] 00eef: JUMP
[codex:739887] 00ef0: JUMPDEST
[codex:739887] 00ef1: POP
[codex:739887] 00ef2: JUMP
[codex:739887] 00ef3: JUMPDEST
[codex:739887] 00ef4: PUSH2 0x0efb
[codex:739887] 00ef7: PUSH2 0x21ac
[codex:739887] 00efa: JUMP
[codex:739887] 00efb: JUMPDEST
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing EVM call sequence and stack usage**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] # disassemble with addresses
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x35d0
[codex:739887] end=0x3610
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 33ms:
[codex:739887] 035d0: MSTORE
[codex:739887] 035d1: SWAP1
[codex:739887] 035d2: JUMP
[codex:739887] 035d3: JUMPDEST
[codex:739887] 035d4: PUSH1 0x00
[codex:739887] 035d6: DUP1
[codex:739887] 035d7: PUSH1 0x40
[codex:739887] 035d9: DUP4
[codex:739887] 035da: DUP6
[codex:739887] 035db: SUB
[codex:739887] 035dc: SLT
[codex:739887] 035dd: ISZERO
[codex:739887] 035de: PUSH2 0x35e6
[codex:739887] 035e1: JUMPI
[codex:739887] 035e2: PUSH1 0x00
[codex:739887] 035e4: DUP1
[codex:739887] 035e5: REVERT
[codex:739887] 035e6: JUMPDEST
[codex:739887] 035e7: DUP3
[codex:739887] 035e8: CALLDATALOAD
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing parameter decoding logic**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x3130
[codex:739887] end=0x3160
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 34ms:
[codex:739887] 03131: JUMPI
[codex:739887] 03132: PUSH1 0x00
[codex:739887] 03134: DUP2
[codex:739887] 03135: SSTORE
[codex:739887] 03136: PUSH1 0x01
[codex:739887] 03138: ADD
[codex:739887] 03139: PUSH2 0x3129
[codex:739887] 0313c: JUMP
[codex:739887] 0313d: JUMPDEST
[codex:739887] 0313e: PUSH1 0x01
[codex:739887] 03140: PUSH1 0x01
[codex:739887] 03142: PUSH1 0xa0
[codex:739887] 03144: SHL
[codex:739887] 03145: SUB
[codex:739887] 03146: DUP2
[codex:739887] 03147: AND
[codex:739887] 03148: DUP2
[codex:739887] 03149: EQ
[codex:739887] 0314a: PUSH2 0x0ef0
[codex:739887] 0314d: JUMPI
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing function call and access control flow**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x21a0
[codex:739887] end=0x21c0
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 35ms:
[codex:739887] 021a0: POP
[codex:739887] 021a1: POP
[codex:739887] 021a2: POP
[codex:739887] 021a3: POP
[codex:739887] 021a4: POP
[codex:739887] 021a5: JUMP
[codex:739887] 021a6: JUMPDEST
[codex:739887] 021a7: EXTCODESIZE
[codex:739887] 021a8: ISZERO
[codex:739887] 021a9: ISZERO
[codex:739887] 021aa: SWAP1
[codex:739887] 021ab: JUMP
[codex:739887] 021ac: JUMPDEST
[codex:739887] 021ad: PUSH1 0x65
[codex:739887] 021af: PUSH1 0x00
[codex:739887] 021b1: SWAP1
[codex:739887] 021b2: SLOAD
[codex:739887] 021b3: SWAP1
[codex:739887] 021b4: PUSH2 0x0100
[codex:739887] 021b7: EXP
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Seeking more context**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x21ac
[codex:739887] end=0x21e5
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 34ms:
[codex:739887] 021ac: JUMPDEST
[codex:739887] 021ad: PUSH1 0x65
[codex:739887] 021af: PUSH1 0x00
[codex:739887] 021b1: SWAP1
[codex:739887] 021b2: SLOAD
[codex:739887] 021b3: SWAP1
[codex:739887] 021b4: PUSH2 0x0100
[codex:739887] 021b7: EXP
[codex:739887] 021b8: SWAP1
[codex:739887] 021b9: DIV
[codex:739887] 021ba: PUSH1 0x01
[codex:739887] 021bc: PUSH1 0x01
[codex:739887] 021be: PUSH1 0xa0
[codex:739887] 021c0: SHL
[codex:739887] 021c1: SUB
[codex:739887] 021c2: AND
[codex:739887] 021c3: PUSH1 0x01
[codex:739887] 021c5: PUSH1 0x01
[codex:739887] 021c7: PUSH1 0xa0
[codex:739887] 021c9: SHL
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Continuing exploration**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x21cc
[codex:739887] end=0x2220
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 37ms:
[codex:739887] 021cc: PUSH4 0x748365ef
[codex:739887] 021d1: PUSH1 0x40
[codex:739887] 021d3: MLOAD
[codex:739887] 021d4: DUP2
[codex:739887] 021d5: PUSH4 0xffffffff
[codex:739887] 021da: AND
[codex:739887] 021db: PUSH1 0xe0
[codex:739887] 021dd: SHL
[codex:739887] 021de: DUP2
[codex:739887] 021df: MSTORE
[codex:739887] 021e0: PUSH1 0x04
[codex:739887] 021e2: ADD
[codex:739887] 021e3: PUSH1 0x20
[codex:739887] 021e5: PUSH1 0x40
[codex:739887] 021e7: MLOAD
[codex:739887] 021e8: DUP1
[codex:739887] 021e9: DUP4
[codex:739887] 021ea: SUB
[codex:739887] 021eb: DUP2
[codex:739887] 021ec: DUP7
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing storage slot usage and external calls**
[codex:739887] 
[codex:739887] I'm parsing the bytecode to track how storage slot 0x65 is loaded and potentially used as an address for external calls like staticcall with selector 0x748365ef, possibly a core contract call. I want to find if this slot can be altered, so I'll search for instructions that write (SSTORE) to slot 0x65 to identify potential attack vectors or re-routing possibilities. Using Python to scan opcode sequences for SSTORE preceded by pushes to slot 0x65 seems like a good heuristic step.
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] # disassemble
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] # find SSTORE with immediate slot push within last 5 ops
[codex:739887] for idx,(addr,name,data) in enumerate(ops):
[codex:739887]     if name=='SSTORE':
[codex:739887]         # look back for last PUSH with small immediate
[codex:739887]         for back in range(1,8):
[codex:739887]             if idx-back<0: break
[codex:739887]             a,n,d=ops[idx-back]
[codex:739887]             if n.startswith('PUSH') and d is not None and len(d)<=4:
[codex:739887]                 slot=int(d,16)
[codex:739887]                 if slot<=0x10:
[codex:739887]                     print(f'SSTORE at {addr:05x} maybe slot {slot} (pushed at {a:05x})')
[codex:739887]                 break
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 36ms:
[codex:739887] SSTORE at 018ca maybe slot 1 (pushed at 018c5)
[codex:739887] SSTORE at 0196a maybe slot 2 (pushed at 01967)
[codex:739887] SSTORE at 01f77 maybe slot 2 (pushed at 01f72)
[codex:739887] SSTORE at 02aa7 maybe slot 1 (pushed at 02aa3)
[codex:739887] SSTORE at 030cd maybe slot 0 (pushed at 030ca)
[codex:739887] SSTORE at 030f3 maybe slot 1 (pushed at 030ef)
[codex:739887] SSTORE at 03135 maybe slot 0 (pushed at 03132)
[codex:739887] SSTORE at 03ca8 maybe slot 1 (pushed at 03ca1)
[codex:739887] SSTORE at 03d06 maybe slot 1 (pushed at 03d01)
[codex:739887] SSTORE at 03d9a maybe slot 1 (pushed at 03d93)
[codex:739887] SSTORE at 03df8 maybe slot 1 (pushed at 03df3)
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing upgrade and access control patterns**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x0fe6
[codex:739887] end=0x1100
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 34ms:
[codex:739887] 00fe6: JUMPDEST
[codex:739887] 00fe7: PUSH1 0x01
[codex:739887] 00fe9: PUSH1 0x01
[codex:739887] 00feb: PUSH1 0xa0
[codex:739887] 00fed: SHL
[codex:739887] 00fee: SUB
[codex:739887] 00fef: PUSH32 0x0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def1504
[codex:739887] 01010: AND
[codex:739887] 01011: ADDRESS
[codex:739887] 01012: SUB
[codex:739887] 01013: PUSH2 0x1073
[codex:739887] 01016: JUMPI
[codex:739887] 01017: PUSH1 0x40
[codex:739887] 01019: MLOAD
[codex:739887] 0101a: PUSH3 0x461bcd
[codex:739887] 0101e: PUSH1 0xe5
[codex:739887] 01020: SHL
[codex:739887] 01021: DUP2
[codex:739887] 01022: MSTORE
[codex:739887] 01023: PUSH1 0x20
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing onlyProxy check logic**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x1120
[codex:739887] end=0x1180
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 36ms:
[codex:739887] 0112a: PUSH1 0xa0
[codex:739887] 0112c: SHL
[codex:739887] 0112d: PUSH1 0x64
[codex:739887] 0112f: DUP3
[codex:739887] 01130: ADD
[codex:739887] 01131: MSTORE
[codex:739887] 01132: PUSH1 0x84
[codex:739887] 01134: ADD
[codex:739887] 01135: PUSH2 0x0871
[codex:739887] 01138: JUMP
[codex:739887] 01139: JUMPDEST
[codex:739887] 0113a: PUSH2 0x1142
[codex:739887] 0113d: DUP3
[codex:739887] 0113e: PUSH2 0x27f3
[codex:739887] 01141: JUMP
[codex:739887] 01142: JUMPDEST
[codex:739887] 01143: PUSH2 0x099d
[codex:739887] 01146: DUP3
[codex:739887] 01147: DUP3
[codex:739887] 01148: PUSH1 0x01
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing upgrade function internals**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x0980
[codex:739887] end=0x09c0
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 35ms:
[codex:739887] 00980: PUSH1 0x69
[codex:739887] 00982: SSTORE
[codex:739887] 00983: PUSH2 0x098b
[codex:739887] 00986: DUP3
[codex:739887] 00987: PUSH2 0x268c
[codex:739887] 0098a: JUMP
[codex:739887] 0098b: JUMPDEST
[codex:739887] 0098c: DUP1
[codex:739887] 0098d: ISZERO
[codex:739887] 0098e: PUSH2 0x099d
[codex:739887] 00991: JUMPI
[codex:739887] 00992: PUSH1 0x00
[codex:739887] 00994: DUP1
[codex:739887] 00995: SLOAD
[codex:739887] 00996: PUSH2 0xff00
[codex:739887] 00999: NOT
[codex:739887] 0099a: AND
[codex:739887] 0099b: SWAP1
[codex:739887] 0099c: SSTORE
[codex:739887] 0099d: JUMPDEST
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing initialization and upgrade authorization**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x27e0
[codex:739887] end=0x2840
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 33ms:
[codex:739887] 027e0: PUSH1 0x20
[codex:739887] 027e2: ADD
[codex:739887] 027e3: PUSH1 0x02
[codex:739887] 027e5: DUP3
[codex:739887] 027e6: ADD
[codex:739887] 027e7: SLOAD
[codex:739887] 027e8: DUP2
[codex:739887] 027e9: MSTORE
[codex:739887] 027ea: POP
[codex:739887] 027eb: POP
[codex:739887] 027ec: SWAP1
[codex:739887] 027ed: POP
[codex:739887] 027ee: SWAP3
[codex:739887] 027ef: SWAP2
[codex:739887] 027f0: POP
[codex:739887] 027f1: POP
[codex:739887] 027f2: JUMP
[codex:739887] 027f3: JUMPDEST
[codex:739887] 027f4: PUSH1 0x65
[codex:739887] 027f6: SLOAD
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Continuing exploration**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x2836
[codex:739887] end=0x2890
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 39ms:
[codex:739887] 02836: JUMPDEST
[codex:739887] 02837: PUSH1 0x65
[codex:739887] 02839: SLOAD
[codex:739887] 0283a: PUSH1 0x40
[codex:739887] 0283c: DUP1
[codex:739887] 0283d: MLOAD
[codex:739887] 0283e: PUSH32 0x748365ef00000000000000000000000000000000000000000000000000000000
[codex:739887] 0285f: DUP2
[codex:739887] 02860: MSTORE
[codex:739887] 02861: SWAP1
[codex:739887] 02862: MLOAD
[codex:739887] 02863: PUSH1 0x00
[codex:739887] 02865: SWAP3
[codex:739887] 02866: PUSH1 0x01
[codex:739887] 02868: PUSH1 0x01
[codex:739887] 0286a: PUSH1 0xa0
[codex:739887] 0286c: SHL
[codex:739887] 0286d: SUB
[codex:739887] 0286e: AND
[codex:739887] 0286f: SWAP2
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Proceeding with the task**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x2888
[codex:739887] end=0x28d5
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 33ms:
[codex:739887] 02888: STATICCALL
[codex:739887] 02889: ISZERO
[codex:739887] 0288a: DUP1
[codex:739887] 0288b: ISZERO
[codex:739887] 0288c: PUSH2 0x2899
[codex:739887] 0288f: JUMPI
[codex:739887] 02890: RETURNDATASIZE
[codex:739887] 02891: PUSH1 0x00
[codex:739887] 02893: DUP1
[codex:739887] 02894: RETURNDATACOPY
[codex:739887] 02895: RETURNDATASIZE
[codex:739887] 02896: PUSH1 0x00
[codex:739887] 02898: REVERT
[codex:739887] 02899: JUMPDEST
[codex:739887] 0289a: POP
[codex:739887] 0289b: POP
[codex:739887] 0289c: POP
[codex:739887] 0289d: POP
[codex:739887] 0289e: PUSH1 0x40
[codex:739887] 028a0: MLOAD
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing function calls and authorization logic**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x28bd
[codex:739887] end=0x2920
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 34ms:
[codex:739887] 028bd: JUMPDEST
[codex:739887] 028be: PUSH1 0x40
[codex:739887] 028c0: MLOAD
[codex:739887] 028c1: PUSH32 0x3b6cd6ff00000000000000000000000000000000000000000000000000000000
[codex:739887] 028e2: DUP2
[codex:739887] 028e3: MSTORE
[codex:739887] 028e4: ADDRESS
[codex:739887] 028e5: PUSH1 0x04
[codex:739887] 028e7: DUP3
[codex:739887] 028e8: ADD
[codex:739887] 028e9: MSTORE
[codex:739887] 028ea: SWAP1
[codex:739887] 028eb: SWAP2
[codex:739887] 028ec: POP
[codex:739887] 028ed: PUSH1 0x01
[codex:739887] 028ef: PUSH1 0x01
[codex:739887] 028f1: PUSH1 0xa0
[codex:739887] 028f3: SHL
[codex:739887] 028f4: SUB
[codex:739887] 028f5: DUP3
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing access control call sequence**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x291d
[codex:739887] end=0x29d0
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 33ms:
[codex:739887] 0291d: JUMPDEST
[codex:739887] 0291e: POP
[codex:739887] 0291f: POP
[codex:739887] 02920: POP
[codex:739887] 02921: POP
[codex:739887] 02922: PUSH1 0x40
[codex:739887] 02924: MLOAD
[codex:739887] 02925: RETURNDATASIZE
[codex:739887] 02926: PUSH1 0x1f
[codex:739887] 02928: NOT
[codex:739887] 02929: PUSH1 0x1f
[codex:739887] 0292b: DUP3
[codex:739887] 0292c: ADD
[codex:739887] 0292d: AND
[codex:739887] 0292e: DUP3
[codex:739887] 0292f: ADD
[codex:739887] 02930: DUP1
[codex:739887] 02931: PUSH1 0x40
[codex:739887] 02933: MSTORE
[codex:739887] 02934: POP
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing contract call patterns for vulnerabilities**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x1270
[codex:739887] end=0x1335
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 43ms:
[codex:739887] 01274: AND
[codex:739887] 01275: MUL
[codex:739887] 01276: OR
[codex:739887] 01277: SWAP1
[codex:739887] 01278: SSTORE
[codex:739887] 01279: POP
[codex:739887] 0127a: POP
[codex:739887] 0127b: POP
[codex:739887] 0127c: POP
[codex:739887] 0127d: JUMP
[codex:739887] 0127e: JUMPDEST
[codex:739887] 0127f: PUSH2 0x1286
[codex:739887] 01282: PUSH2 0x21ac
[codex:739887] 01285: JUMP
[codex:739887] 01286: JUMPDEST
[codex:739887] 01287: PUSH2 0x1291
[codex:739887] 0128a: DUP7
[codex:739887] 0128b: DUP7
[codex:739887] 0128c: DUP7
[codex:739887] 0128d: PUSH2 0x22f4
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing access control and core address storage**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] # find SSTORE and check immediate pushes to 0x65 within previous 6 ops
[codex:739887] for idx,(addr,name,data) in enumerate(ops):
[codex:739887]     if name=='SSTORE':
[codex:739887]         for back in range(1,10):
[codex:739887]             if idx-back<0: break
[codex:739887]             a,n,d=ops[idx-back]
[codex:739887]             if n.startswith('PUSH'):
[codex:739887]                 if d is not None and int(d,16)==0x65:
[codex:739887]                     print(f'SSTORE with PUSH 0x65 at {addr:05x} (push at {a:05x})')
[codex:739887]                 break
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 34ms:
[codex:739887] 
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Investigating storage slot usage**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] # disassemble for push1 0x65 occurrences
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,op,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,op,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] # list addresses where push1 0x65
[codex:739887] for addr,op,data in ops:
[codex:739887]     if op==0x60 and data=='65':
[codex:739887]         print(hex(addr))
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 30ms:
[codex:739887] 0x4e0
[codex:739887] 0x1292
[codex:739887] 0x20ca
[codex:739887] 0x21ad
[codex:739887] 0x2445
[codex:739887] 0x27f4
[codex:739887] 0x2837
[codex:739887] 0x2bd4
[codex:739887] 0x2c67
[codex:739887] 0x2d53
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Inspecting PUSH1 0x65 occurrences**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x4d0
[codex:739887] end=0x4f5
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 34ms:
[codex:739887] 004d1: JUMP
[codex:739887] 004d2: JUMPDEST
[codex:739887] 004d3: CALLVALUE
[codex:739887] 004d4: DUP1
[codex:739887] 004d5: ISZERO
[codex:739887] 004d6: PUSH2 0x04de
[codex:739887] 004d9: JUMPI
[codex:739887] 004da: PUSH1 0x00
[codex:739887] 004dc: DUP1
[codex:739887] 004dd: REVERT
[codex:739887] 004de: JUMPDEST
[codex:739887] 004df: POP
[codex:739887] 004e0: PUSH1 0x65
[codex:739887] 004e2: SLOAD
[codex:739887] 004e3: PUSH2 0x0249
[codex:739887] 004e6: SWAP1
[codex:739887] 004e7: PUSH1 0x01
[codex:739887] 004e9: PUSH1 0x01
[codex:739887] 004eb: PUSH1 0xa0
[codex:739887] 004ed: SHL
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Investigating function setter location**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x2d40
[codex:739887] end=0x2d90
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 35ms:
[codex:739887] 02d43: PUSH1 0xc1
[codex:739887] 02d45: SHL
[codex:739887] 02d46: PUSH1 0x44
[codex:739887] 02d48: DUP3
[codex:739887] 02d49: ADD
[codex:739887] 02d4a: MSTORE
[codex:739887] 02d4b: PUSH1 0x64
[codex:739887] 02d4d: ADD
[codex:739887] 02d4e: PUSH2 0x0871
[codex:739887] 02d51: JUMP
[codex:739887] 02d52: JUMPDEST
[codex:739887] 02d53: PUSH1 0x65
[codex:739887] 02d55: DUP1
[codex:739887] 02d56: SLOAD
[codex:739887] 02d57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:739887] 02d6c: NOT
[codex:739887] 02d6d: AND
[codex:739887] 02d6e: PUSH1 0x01
[codex:739887] 02d70: PUSH1 0x01
[codex:739887] 02d72: PUSH1 0xa0
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing function usage**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] # simple disassemble to track push2 0x2d52
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,op,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,op,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] for addr,op,data in ops:
[codex:739887]     if op==0x61 and data=='2d52':
[codex:739887]         print(hex(addr))
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 36ms:
[codex:739887] 0x2d1c
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Investigating function call origins**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x2d00
[codex:739887] end=0x2d60
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 37ms:
[codex:739887] 02d02: JUMP
[codex:739887] 02d03: JUMPDEST
[codex:739887] 02d04: PUSH1 0x40
[codex:739887] 02d06: ADD
[codex:739887] 02d07: MLOAD
[codex:739887] 02d08: ADD
[codex:739887] 02d09: GT
[codex:739887] 02d0a: ISZERO
[codex:739887] 02d0b: SWAP4
[codex:739887] 02d0c: SWAP3
[codex:739887] 02d0d: POP
[codex:739887] 02d0e: POP
[codex:739887] 02d0f: POP
[codex:739887] 02d10: JUMP
[codex:739887] 02d11: JUMPDEST
[codex:739887] 02d12: PUSH1 0x01
[codex:739887] 02d14: PUSH1 0x01
[codex:739887] 02d16: PUSH1 0xa0
[codex:739887] 02d18: SHL
[codex:739887] 02d19: SUB
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing function call and revert reasons**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,op,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,op,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] for addr,op,data in ops:
[codex:739887]     if op==0x61 and data=='2d11':
[codex:739887]         print(hex(addr))
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 31ms:
[codex:739887] 0x2691
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Inspecting call location**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] 
[codex:739887] opnames={
[codex:739887] 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:739887] 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:739887] 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:739887] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:739887] 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:739887] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:739887] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:739887] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:739887] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:739887] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:739887] }
[codex:739887] 
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     name=opnames.get(op,f'OP{op:02x}')
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,name,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,name,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] start=0x2680
[codex:739887] end=0x26b0
[codex:739887] for addr,name,data in ops:
[codex:739887]     if start<=addr<end:
[codex:739887]         if data is None:
[codex:739887]             print(f'{addr:05x}: {name}')
[codex:739887]         else:
[codex:739887]             print(f'{addr:05x}: {name} 0x{data}')
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 35ms:
[codex:739887] 02680: SWAP1
[codex:739887] 02681: SHA3
[codex:739887] 02682: SLOAD
[codex:739887] 02683: PUSH1 0xff
[codex:739887] 02685: AND
[codex:739887] 02686: SWAP4
[codex:739887] 02687: SWAP3
[codex:739887] 02688: POP
[codex:739887] 02689: POP
[codex:739887] 0268a: POP
[codex:739887] 0268b: JUMP
[codex:739887] 0268c: JUMPDEST
[codex:739887] 0268d: PUSH2 0x2695
[codex:739887] 02690: DUP2
[codex:739887] 02691: PUSH2 0x2d11
[codex:739887] 02694: JUMP
[codex:739887] 02695: JUMPDEST
[codex:739887] 02696: PUSH2 0x0ef0
[codex:739887] 02699: PUSH2 0x2d81
[codex:739887] 0269c: JUMP
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Tracing internal function calls**
[codex:739887] exec
[codex:739887] /bin/bash -lc "python3 - <<'PY'
[codex:739887] import re
[codex:739887] code_hex=re.search(r'0x[0-9a-fA-F]+', open('BYTECODE_BUNDLE.txt').read()).group(0)[2:]
[codex:739887] code=bytes.fromhex(code_hex)
[codex:739887] ops=[]
[codex:739887] i=0
[codex:739887] while i<len(code):
[codex:739887]     op=code[i]
[codex:739887]     if 0x60<=op<=0x7f:
[codex:739887]         n=op-0x5f
[codex:739887]         data=code[i+1:i+1+n]
[codex:739887]         ops.append((i,op,data.hex()))
[codex:739887]         i+=1+n
[codex:739887]     else:
[codex:739887]         ops.append((i,op,None))
[codex:739887]         i+=1
[codex:739887] 
[codex:739887] for addr,op,data in ops:
[codex:739887]     if op==0x61 and data=='268c':
[codex:739887]         print(hex(addr))
[codex:739887] PY" in /tmp/codex-multi-e7p0ryps succeeded in 32ms:
[codex:739887] 0x987
[codex:739887] 
[codex:739887] thinking
[codex:739887] **Analyzing initialization and access controls**
[codex:739887] codex
[codex:739887] {"no_findings":true,"summary":"Reviewed the runtime bytecode; no concrete, exploitable value-extraction path is evident from the observable CALL/DELEGATECALL patterns and upgrade logic, which appear gated by access checks (onlyProxy/core). No unprotected upgrade, value transfer, or selfdestruct paths are visible from bytecode alone.","findings":[]}
[codex:739887] tokens used
[codex:739887] 153,204
[codex:739887] {"no_findings":true,"summary":"Reviewed the runtime bytecode; no concrete, exploitable value-extraction path is evident from the observable CALL/DELEGATECALL patterns and upgrade logic, which appear gated by access checks (onlyProxy/core). No unprotected upgrade, value transfer, or selfdestruct paths are visible from bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T06:02:47.320525+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the runtime bytecode; no concrete, exploitable value-extraction path is evident from the observable CALL/DELEGATECALL patterns and upgrade logic, which appear gated by access checks (onlyProxy/core). No unprotected upgrade, value transfer, or selfdestruct paths are visible from bytecode alone.",
    "raw_final": {
        "summary": "Reviewed the runtime bytecode; no concrete, exploitable value-extraction path is evident from the observable CALL/DELEGATECALL patterns and upgrade logic, which appear gated by access checks (onlyProxy/core). No unprotected upgrade, value transfer, or selfdestruct paths are visible from bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
2
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
16
EXT*/BALANCE
8
Total opcodes
10087
Flags
delegatecall_present 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 0x021d
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x7295f46c
00000019: GT
0000001a: PUSH2 0x011d
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xb9588300
00000024: GT
00000025: PUSH2 0x00b0
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xe8361364
0000002f: GT
00000030: PUSH2 0x007f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xf2a40db8
0000003a: GT
0000003b: PUSH2 0x0064
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf2a40db8
00000045: EQ
00000046: PUSH2 0x06b5
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf308a7cc
00000050: EQ
00000051: PUSH2 0x06e4
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf47774d6
0000005b: EQ
0000005c: PUSH2 0x0704
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xe8361364
0000006b: EQ
0000006c: PUSH2 0x067f
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xf10c2720
00000076: EQ
00000077: PUSH2 0x0695
0000007a: JUMPI
0000007b: PUSH1 0x00
0000007d: DUP1
0000007e: REVERT
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0xb9588300
00000086: EQ
00000087: PUSH2 0x05ff
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0xce88b145
00000091: EQ
00000092: PUSH2 0x061f
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xd4cbab61
0000009c: EQ
0000009d: PUSH2 0x063f
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xe3793065
000000a7: EQ
000000a8: PUSH2 0x065f
000000ab: JUMPI
000000ac: PUSH1 0x00
000000ae: DUP1
000000af: REVERT
000000b0: JUMPDEST
000000b1: DUP1
000000b2: PUSH4 0x82ccdbc8
000000b7: GT
000000b8: PUSH2 0x00ec
000000bb: JUMPI
000000bc: DUP1
000000bd: PUSH4 0x82ccdbc8
000000c2: EQ
000000c3: PUSH2 0x0572
000000c6: JUMPI
000000c7: DUP1
000000c8: PUSH4 0x9cc0933d
000000cd: EQ
000000ce: PUSH2 0x0592
000000d1: JUMPI
000000d2: DUP1
000000d3: PUSH4 0x9dcb9921
000000d8: EQ
000000d9: PUSH2 0x05bf
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0xab729a81
000000e3: EQ
000000e4: PUSH2 0x05df
000000e7: JUMPI
000000e8: PUSH1 0x00
000000ea: DUP1
000000eb: REVERT
000000ec: JUMPDEST
000000ed: DUP1
000000ee: PUSH4 0x7295f46c
000000f3: EQ
000000f4: PUSH2 0x04f2
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0x7b3feefa
000000fe: EQ
000000ff: PUSH2 0x0512
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x7c52f9ba
00000109: EQ
0000010a: PUSH2 0x0532
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x7ce8a165
00000114: EQ
00000115: PUSH2 0x0552
00000118: JUMPI
00000119: PUSH1 0x00
0000011b: DUP1
0000011c: REVERT
0000011d: JUMPDEST
0000011e: DUP1
0000011f: PUSH4 0x2337fdf3
00000124: GT
00000125: PUSH2 0x01b0
00000128: JUMPI
00000129: DUP1
0000012a: PUSH4 0x4782f779
0000012f: GT
00000130: PUSH2 0x017f
00000133: JUMPI
00000134: DUP1
00000135: PUSH4 0x5097e815
0000013a: GT
0000013b: PUSH2 0x0164
0000013e: JUMPI
0000013f: DUP1
00000140: PUSH4 0x5097e815
00000145: EQ
00000146: PUSH2 0x0492
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH4 0x50baf1e0
00000150: EQ
00000151: PUSH2 0x04b2
00000154: JUMPI
00000155: DUP1
00000156: PUSH4 0x554c1b1f
0000015b: EQ
0000015c: PUSH2 0x04d2
0000015f: JUMPI
00000160: PUSH1 0x00
00000162: DUP1
00000163: REVERT
00000164: JUMPDEST
00000165: DUP1
00000166: PUSH4 0x4782f779
0000016b: EQ
0000016c: PUSH2 0x045f
0000016f: JUMPI
00000170: DUP1
00000171: PUSH4 0x4f1ef286
00000176: EQ
00000177: PUSH2 0x047f
0000017a: JUMPI
0000017b: PUSH1 0x00
0000017d: DUP1
0000017e: REVERT
0000017f: JUMPDEST
00000180: DUP1
00000181: PUSH4 0x2337fdf3
00000186: EQ
00000187: PUSH2 0x0392
0000018a: JUMPI
0000018b: DUP1
0000018c: PUSH4 0x319a74a6
00000191: EQ
00000192: PUSH2 0x03bf
00000195: JUMPI
00000196: DUP1
00000197: PUSH4 0x3659cfe6
0000019c: EQ
0000019d: PUSH2 0x03f7
000001a0: JUMPI
000001a1: DUP1
000001a2: PUSH4 0x424de0c4
000001a7: EQ
000001a8: PUSH2 0x0417
000001ab: JUMPI
000001ac: PUSH1 0x00
000001ae: DUP1
000001af: REVERT
000001b0: JUMPDEST
000001b1: DUP1
000001b2: PUSH4 0x15eb8425
000001b7: GT
000001b8: PUSH2 0x01ec
000001bb: JUMPI
000001bc: DUP1
000001bd: PUSH4 0x15eb8425
000001c2: EQ
000001c3: PUSH2 0x02ee
000001c6: JUMPI
000001c7: DUP1
000001c8: PUSH4 0x19ab453c
000001cd: EQ
000001ce: PUSH2 0x0310
000001d1: JUMPI
000001d2: DUP1
000001d3: PUSH4 0x19f9b257
000001d8: EQ
000001d9: PUSH2 0x0330
000001dc: JUMPI
000001dd: DUP1
000001de: PUSH4 0x22c2447a
000001e3: EQ
000001e4: PUSH2 0x0365
000001e7: JUMPI
000001e8: PUSH1 0x00
000001ea: DUP1
000001eb: REVERT
000001ec: JUMPDEST
000001ed: DUP1
000001ee: PUSH4 0x08140102
000001f3: EQ
000001f4: PUSH2 0x0229
000001f7: JUMPI
000001f8: DUP1
000001f9: PUSH4 0x0e7b0fac
000001fe: EQ
000001ff: PUSH2 0x0266
00000202: JUMPI
00000203: DUP1
00000204: PUSH4 0x0f03e4c3
00000209: EQ
0000020a: PUSH2 0x0296
0000020d: JUMPI
0000020e: DUP1
0000020f: PUSH4 0x14f0c553
00000214: EQ
00000215: PUSH2 0x02b5
00000218: JUMPI
00000219: PUSH1 0x00
0000021b: DUP1
0000021c: REVERT
0000021d: JUMPDEST
0000021e: CALLDATASIZE
0000021f: PUSH2 0x0224
00000222: JUMPI
00000223: STOP
00000224: JUMPDEST
00000225: PUSH1 0x00
00000227: DUP1
00000228: REVERT
00000229: JUMPDEST
0000022a: CALLVALUE
0000022b: DUP1
0000022c: ISZERO
0000022d: PUSH2 0x0235
00000230: JUMPI
00000231: PUSH1 0x00
00000233: DUP1
00000234: REVERT
00000235: JUMPDEST
00000236: POP
00000237: PUSH2 0x0249
0000023a: PUSH2 0x0244
0000023d: CALLDATASIZE
0000023e: PUSH1 0x04
00000240: PUSH2 0x319b
00000243: JUMP
00000244: JUMPDEST
00000245: PUSH2 0x0724
00000248: JUMP
00000249: JUMPDEST
0000024a: PUSH1 0x40
0000024c: MLOAD
0000024d: PUSH1 0x01
0000024f: PUSH1 0x01
00000251: PUSH1 0xa0
00000253: SHL
00000254: SUB
00000255: SWAP1
00000256: SWAP2
00000257: AND
00000258: DUP2
00000259: MSTORE
0000025a: PUSH1 0x20
0000025c: ADD
0000025d: JUMPDEST
0000025e: PUSH1 0x40
00000260: MLOAD
00000261: DUP1
00000262: SWAP2
00000263: SUB
00000264: SWAP1
00000265: RETURN
00000266: JUMPDEST
00000267: CALLVALUE
00000268: DUP1
00000269: ISZERO
0000026a: PUSH2 0x0272
0000026d: JUMPI
0000026e: PUSH1 0x00
00000270: DUP1
00000271: REVERT
00000272: JUMPDEST
00000273: POP
00000274: PUSH2 0x0286
00000277: PUSH2 0x0281
0000027a: CALLDATASIZE
0000027b: PUSH1 0x04
0000027d: PUSH2 0x3226
00000280: JUMP
00000281: JUMPDEST
00000282: PUSH2 0x07a2
00000285: JUMP
00000286: JUMPDEST
00000287: PUSH1 0x40
00000289: MLOAD
0000028a: SWAP1
0000028b: ISZERO
0000028c: ISZERO
0000028d: DUP2
0000028e: MSTORE
0000028f: PUSH1 0x20
00000291: ADD
00000292: PUSH2 0x025d
00000295: JUMP
00000296: JUMPDEST
00000297: CALLVALUE
00000298: DUP1
00000299: ISZERO
0000029a: PUSH2 0x02a2
0000029d: JUMPI
0000029e: PUSH1 0x00
000002a0: DUP1
000002a1: REVERT
000002a2: JUMPDEST
000002a3: POP
000002a4: PUSH1 0x6a
000002a6: SLOAD
000002a7: JUMPDEST
000002a8: PUSH1 0x40
000002aa: MLOAD
000002ab: SWAP1
000002ac: DUP2
000002ad: MSTORE
000002ae: PUSH1 0x20
000002b0: ADD
000002b1: PUSH2 0x025d
000002b4: JUMP
000002b5: JUMPDEST
000002b6: CALLVALUE
000002b7: DUP1
000002b8: ISZERO
000002b9: PUSH2 0x02c1
000002bc: JUMPI
000002bd: PUSH1 0x00
000002bf: DUP1
000002c0: REVERT
000002c1: JUMPDEST
000002c2: POP
000002c3: PUSH2 0x02d5
000002c6: PUSH2 0x02d0
000002c9: CALLDATASIZE
000002ca: PUSH1 0x04
000002cc: PUSH2 0x3226
000002cf: JUMP
000002d0: JUMPDEST
000002d1: PUSH2 0x07cd
000002d4: JUMP
000002d5: JUMPDEST
000002d6: PUSH1 0x40
000002d8: MLOAD
000002d9: PUSH8 0xffffffffffffffff
000002e2: SWAP1
000002e3: SWAP2
000002e4: AND
000002e5: DUP2
000002e6: MSTORE
000002e7: PUSH1 0x20
000002e9: ADD
000002ea: PUSH2 0x025d
000002ed: JUMP
000002ee: JUMPDEST
000002ef: CALLVALUE
000002f0: DUP1
000002f1: ISZERO
000002f2: PUSH2 0x02fa
000002f5: JUMPI
000002f6: PUSH1 0x00
000002f8: DUP1
000002f9: REVERT
000002fa: JUMPDEST
000002fb: POP
000002fc: PUSH2 0x030e
000002ff: PUSH2 0x0309
00000302: CALLDATASIZE
00000303: PUSH1 0x04
00000305: PUSH2 0x327e
00000308: JUMP
00000309: JUMPDEST
0000030a: PUSH2 0x080b
0000030d: JUMP
0000030e: JUMPDEST
0000030f: STOP
00000310: JUMPDEST
00000311: CALLVALUE
00000312: DUP1
00000313: ISZERO
00000314: PUSH2 0x031c
00000317: JUMPI
00000318: PUSH1 0x00
0000031a: DUP1
0000031b: REVERT
0000031c: JUMPDEST
0000031d: POP
0000031e: PUSH2 0x030e
00000321: PUSH2 0x032b
00000324: CALLDATASIZE
00000325: PUSH1 0x04
00000327: PUSH2 0x32d5
0000032a: JUMP
0000032b: JUMPDEST
0000032c: PUSH2 0x08c9
0000032f: JUMP
00000330: JUMPDEST
00000331: CALLVALUE
00000332: DUP1
00000333: ISZERO
00000334: PUSH2 0x033c
00000337: JUMPI
00000338: PUSH1 0x00
0000033a: DUP1
0000033b: REVERT
0000033c: JUMPDEST
0000033d: POP
0000033e: PUSH2 0x0350
00000341: PUSH2 0x034b
00000344: CALLDATASIZE
00000345: PUSH1 0x04
00000347: PUSH2 0x3395
0000034a: JUMP
0000034b: JUMPDEST
0000034c: PUSH2 0x09a1
0000034f: JUMP
00000350: JUMPDEST
00000351: PUSH1 0x40
00000353: MLOAD
00000354: PUSH2 0x025d
00000357: SWAP10
00000358: SWAP9
00000359: SWAP8
0000035a: SWAP7
0000035b: SWAP6
0000035c: SWAP5
0000035d: SWAP4
0000035e: SWAP3
0000035f: SWAP2
00000360: SWAP1
00000361: PUSH2 0x342e
00000364: JUMP
00000365: JUMPDEST
00000366: CALLVALUE
00000367: DUP1
00000368: ISZERO
00000369: PUSH2 0x0371
0000036c: JUMPI
0000036d: PUSH1 0x00
0000036f: DUP1
00000370: REVERT
00000371: JUMPDEST
00000372: POP
00000373: PUSH2 0x0385
00000376: PUSH2 0x0380
00000379: CALLDATASIZE
0000037a: PUSH1 0x04
0000037c: PUSH2 0x3226
0000037f: JUMP
00000380: JUMPDEST
00000381: PUSH2 0x0b3c
00000384: JUMP
00000385: JUMPDEST
00000386: PUSH1 0x40
00000388: MLOAD
00000389: PUSH2 0x025d
0000038c: SWAP2
0000038d: SWAP1
0000038e: PUSH2 0x34a0
00000391: JUMP
00000392: JUMPDEST
00000393: CALLVALUE
00000394: DUP1
00000395: ISZERO
00000396: PUSH2 0x039e
00000399: JUMPI
0000039a: PUSH1 0x00
0000039c: DUP1
0000039d: REVERT
0000039e: JUMPDEST
0000039f: POP
000003a0: PUSH2 0x03b2
000003a3: PUSH2 0x03ad
000003a6: CALLDATASIZE
000003a7: PUSH1 0x04
000003a9: PUSH2 0x3226
000003ac: JUMP
000003ad: JUMPDEST
000003ae: PUSH2 0x0d61
000003b1: JUMP
000003b2: JUMPDEST
000003b3: PUSH1 0x40
000003b5: MLOAD
000003b6: PUSH2 0x025d
000003b9: SWAP2
000003ba: SWAP1
000003bb: PUSH2 0x3582
000003be: JUMP
000003bf: JUMPDEST
000003c0: CALLVALUE
000003c1: DUP1
000003c2: ISZERO
000003c3: PUSH2 0x03cb
000003c6: JUMPI
000003c7: PUSH1 0x00
000003c9: DUP1
000003ca: REVERT
000003cb: JUMPDEST
000003cc: POP
000003cd: PUSH2 0x02a7
000003d0: PUSH2 0x03da
000003d3: CALLDATASIZE
000003d4: PUSH1 0x04
000003d6: PUSH2 0x3395
000003d9: JUMP
000003da: JUMPDEST
000003db: DUP1
000003dc: MLOAD
000003dd: PUSH1 0x20
000003df: DUP2
000003e0: DUP4
000003e1: ADD
000003e2: DUP2
000003e3: ADD
000003e4: DUP1
000003e5: MLOAD
000003e6: PUSH1 0x66
000003e8: DUP3
000003e9: MSTORE
000003ea: SWAP3
000003eb: DUP3
000003ec: ADD
000003ed: SWAP2
000003ee: SWAP1
000003ef: SWAP4
000003f0: ADD
000003f1: KECCAK256
000003f2: SWAP2
000003f3: MSTORE
000003f4: SLOAD
000003f5: DUP2
000003f6: JUMP
000003f7: JUMPDEST
000003f8: CALLVALUE
000003f9: DUP1
000003fa: ISZERO
000003fb: PUSH2 0x0403
000003fe: JUMPI
000003ff: PUSH1 0x00
00000401: DUP1
00000402: REVERT
00000403: JUMPDEST
00000404: POP
00000405: PUSH2 0x030e
00000408: PUSH2 0x0412
0000040b: CALLDATASIZE
0000040c: PUSH1 0x04
0000040e: PUSH2 0x32d5
00000411: JUMP
00000412: JUMPDEST
00000413: PUSH2 0x0d78
00000416: JUMP
00000417: JUMPDEST
00000418: CALLVALUE
00000419: DUP1
0000041a: ISZERO
0000041b: PUSH2 0x0423
0000041e: JUMPI
0000041f: PUSH1 0x00
00000421: DUP1
00000422: REVERT
00000423: JUMPDEST
00000424: POP
00000425: PUSH2 0x0452
00000428: PUSH2 0x0432
0000042b: CALLDATASIZE
0000042c: PUSH1 0x04
0000042e: PUSH2 0x3395
00000431: JUMP
00000432: JUMPDEST
00000433: DUP1
00000434: MLOAD
00000435: PUSH1 0x20
00000437: DUP2
00000438: DUP4
00000439: ADD
0000043a: DUP2
0000043b: ADD
0000043c: DUP1
0000043d: MLOAD
0000043e: PUSH1 0x68
00000440: DUP3
00000441: MSTORE
00000442: SWAP3
00000443: DUP3
00000444: ADD
00000445: SWAP2
00000446: SWAP1
00000447: SWAP4
00000448: ADD
00000449: KECCAK256
0000044a: SWAP2
0000044b: MSTORE
0000044c: SLOAD
0000044d: PUSH1 0xff
0000044f: AND
00000450: DUP2
00000451: JUMP
00000452: JUMPDEST
00000453: PUSH1 0x40
00000455: MLOAD
00000456: PUSH2 0x025d
00000459: SWAP2
0000045a: SWAP1
0000045b: PUSH2 0x35ab
0000045e: JUMP
0000045f: JUMPDEST
00000460: CALLVALUE
00000461: DUP1
00000462: ISZERO
00000463: PUSH2 0x046b
00000466: JUMPI
00000467: PUSH1 0x00
00000469: DUP1
0000046a: REVERT
0000046b: JUMPDEST
0000046c: POP
0000046d: PUSH2 0x030e
00000470: PUSH2 0x047a
00000473: CALLDATASIZE
00000474: PUSH1 0x04
00000476: PUSH2 0x35d3
00000479: JUMP
0000047a: JUMPDEST
0000047b: PUSH2 0x0ef3
0000047e: JUMP
0000047f: JUMPDEST
00000480: PUSH2 0x030e
00000483: PUSH2 0x048d
00000486: CALLDATASIZE
00000487: PUSH1 0x04
00000489: PUSH2 0x35ff
0000048c: JUMP
0000048d: JUMPDEST
0000048e: PUSH2 0x0fe6
00000491: JUMP
00000492: JUMPDEST
00000493: CALLVALUE
00000494: DUP1
00000495: ISZERO
00000496: PUSH2 0x049e
00000499: JUMPI
0000049a: PUSH1 0x00
0000049c: DUP1
0000049d: REVERT
0000049e: JUMPDEST
0000049f: POP
000004a0: PUSH2 0x02d5
000004a3: PUSH2 0x04ad
000004a6: CALLDATASIZE
000004a7: PUSH1 0x04
000004a9: PUSH2 0x3226
000004ac: JUMP
000004ad: JUMPDEST
000004ae: PUSH2 0x114e
000004b1: JUMP
000004b2: JUMPDEST
000004b3: CALLVALUE
000004b4: DUP1
000004b5: ISZERO
000004b6: PUSH2 0x04be
000004b9: JUMPI
000004ba: PUSH1 0x00
000004bc: DUP1
000004bd: REVERT
000004be: JUMPDEST
000004bf: POP
000004c0: PUSH2 0x030e
000004c3: PUSH2 0x04cd
000004c6: CALLDATASIZE
000004c7: PUSH1 0x04
000004c9: PUSH2 0x327e
000004cc: JUMP
000004cd: JUMPDEST
000004ce: PUSH2 0x118e
000004d1: JUMP
000004d2: JUMPDEST
000004d3: CALLVALUE
000004d4: DUP1
000004d5: ISZERO
000004d6: PUSH2 0x04de
000004d9: JUMPI
000004da: PUSH1 0x00
000004dc: DUP1
000004dd: REVERT
000004de: JUMPDEST
000004df: POP
000004e0: PUSH1 0x65
000004e2: SLOAD
000004e3: PUSH2 0x0249
000004e6: SWAP1
000004e7: PUSH1 0x01
000004e9: PUSH1 0x01
000004eb: PUSH1 0xa0
000004ed: SHL
000004ee: SUB
000004ef: AND
000004f0: DUP2
000004f1: JUMP
000004f2: JUMPDEST
000004f3: CALLVALUE
000004f4: DUP1
000004f5: ISZERO
000004f6: PUSH2 0x04fe
000004f9: JUMPI
000004fa: PUSH1 0x00
000004fc: DUP1
000004fd: REVERT
000004fe: JUMPDEST
000004ff: POP
00000500: PUSH2 0x030e
00000503: PUSH2 0x050d
00000506: CALLDATASIZE
00000507: PUSH1 0x04
00000509: PUSH2 0x3668
0000050c: JUMP
0000050d: JUMPDEST
0000050e: PUSH2 0x127e
00000511: JUMP
00000512: JUMPDEST
00000513: CALLVALUE
00000514: DUP1
00000515: ISZERO
00000516: PUSH2 0x051e
00000519: JUMPI
0000051a: PUSH1 0x00
0000051c: DUP1
0000051d: REVERT
0000051e: JUMPDEST
0000051f: POP
00000520: PUSH2 0x0286
00000523: PUSH2 0x052d
00000526: CALLDATASIZE
00000527: PUSH1 0x04
00000529: PUSH2 0x3226
0000052c: JUMP
0000052d: JUMPDEST
0000052e: PUSH2 0x1440
00000531: JUMP
00000532: JUMPDEST
00000533: CALLVALUE
00000534: DUP1
00000535: ISZERO
00000536: PUSH2 0x053e
00000539: JUMPI
0000053a: PUSH1 0x00
0000053c: DUP1
0000053d: REVERT
0000053e: JUMPDEST
0000053f: POP
00000540: PUSH2 0x030e
00000543: PUSH2 0x054d
00000546: CALLDATASIZE
00000547: PUSH1 0x04
00000549: PUSH2 0x3701
0000054c: JUMP
0000054d: JUMPDEST
0000054e: PUSH2 0x1449
00000551: JUMP
00000552: JUMPDEST
00000553: CALLVALUE
00000554: DUP1
00000555: ISZERO
00000556: PUSH2 0x055e
00000559: JUMPI
0000055a: PUSH1 0x00
0000055c: DUP1
0000055d: REVERT
0000055e: JUMPDEST
0000055f: POP
00000560: PUSH2 0x030e
00000563: PUSH2 0x056d
00000566: CALLDATASIZE
00000567: PUSH1 0x04
00000569: PUSH2 0x3769
0000056c: JUMP
0000056d: JUMPDEST
0000056e: PUSH2 0x15dc
00000571: JUMP
00000572: JUMPDEST
00000573: CALLVALUE
00000574: DUP1
00000575: ISZERO
00000576: PUSH2 0x057e
00000579: JUMPI
0000057a: PUSH1 0x00
0000057c: DUP1
0000057d: REVERT
0000057e: JUMPDEST
0000057f: POP
00000580: PUSH2 0x030e
00000583: PUSH2 0x058d
00000586: CALLDATASIZE
00000587: PUSH1 0x04
00000589: PUSH2 0x37d2
0000058c: JUMP
0000058d: JUMPDEST
0000058e: PUSH2 0x1679
00000591: JUMP
00000592: JUMPDEST
00000593: CALLVALUE
00000594: DUP1
00000595: ISZERO
00000596: PUSH2 0x059e
00000599: JUMPI
0000059a: PUSH1 0x00
0000059c: DUP1
0000059d: REVERT
0000059e: JUMPDEST
0000059f: POP
000005a0: PUSH2 0x05b2
000005a3: PUSH2 0x05ad
000005a6: CALLDATASIZE
000005a7: PUSH1 0x04
000005a9: PUSH2 0x3226
000005ac: JUMP
000005ad: JUMPDEST
000005ae: PUSH2 0x1974
000005b1: JUMP
000005b2: JUMPDEST
000005b3: PUSH1 0x40
000005b5: MLOAD
000005b6: PUSH2 0x025d
000005b9: SWAP2
000005ba: SWAP1
000005bb: PUSH2 0x3855
000005be: JUMP
000005bf: JUMPDEST
000005c0: CALLVALUE
000005c1: DUP1
000005c2: ISZERO
000005c3: PUSH2 0x05cb
000005c6: JUMPI
000005c7: PUSH1 0x00
000005c9: DUP1
000005ca: REVERT
000005cb: JUMPDEST
000005cc: POP
000005cd: PUSH2 0x030e
000005d0: PUSH2 0x05da
000005d3: CALLDATASIZE
000005d4: PUSH1 0x04
000005d6: PUSH2 0x3226
000005d9: JUMP
000005da: JUMPDEST
000005db: PUSH2 0x19b2
000005de: JUMP
000005df: JUMPDEST
000005e0: CALLVALUE
000005e1: DUP1
000005e2: ISZERO
000005e3: PUSH2 0x05eb
000005e6: JUMPI
000005e7: PUSH1 0x00
000005e9: DUP1
000005ea: REVERT
000005eb: JUMPDEST
000005ec: POP
000005ed: PUSH2 0x030e
000005f0: PUSH2 0x05fa
000005f3: CALLDATASIZE
000005f4: PUSH1 0x04
000005f6: PUSH2 0x389a
000005f9: JUMP
000005fa: JUMPDEST
000005fb: PUSH2 0x19c6
000005fe: JUMP
000005ff: JUMPDEST
00000600: CALLVALUE
00000601: DUP1
00000602: ISZERO
00000603: PUSH2 0x060b
00000606: JUMPI
00000607: PUSH1 0x00
00000609: DUP1
0000060a: REVERT
0000060b: JUMPDEST
0000060c: POP
0000060d: PUSH2 0x030e
00000610: PUSH2 0x061a
00000613: CALLDATASIZE
00000614: PUSH1 0x04
00000616: PUSH2 0x393a
00000619: JUMP
0000061a: JUMPDEST
0000061b: PUSH2 0x1b71
0000061e: JUMP
0000061f: JUMPDEST
00000620: CALLVALUE
00000621: DUP1
00000622: ISZERO
00000623: PUSH2 0x062b
00000626: JUMPI
00000627: PUSH1 0x00
00000629: DUP1
0000062a: REVERT
0000062b: JUMPDEST
0000062c: POP
0000062d: PUSH2 0x05b2
00000630: PUSH2 0x063a
00000633: CALLDATASIZE
00000634: PUSH1 0x04
00000636: PUSH2 0x39b4
00000639: JUMP
0000063a: JUMPDEST
0000063b: PUSH2 0x1c7e
0000063e: JUMP
0000063f: JUMPDEST
00000640: CALLVALUE
00000641: DUP1
00000642: ISZERO
00000643: PUSH2 0x064b
00000646: JUMPI
00000647: PUSH1 0x00
00000649: DUP1
0000064a: REVERT
0000064b: JUMPDEST
0000064c: POP
0000064d: PUSH2 0x030e
00000650: PUSH2 0x065a
00000653: CALLDATASIZE
00000654: PUSH1 0x04
00000656: PUSH2 0x39cd
00000659: JUMP
0000065a: JUMPDEST
0000065b: PUSH2 0x1e08
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 0x0286
00000670: PUSH2 0x067a
00000673: CALLDATASIZE
00000674: PUSH1 0x04
00000676: PUSH2 0x3226
00000679: JUMP
0000067a: JUMPDEST
0000067b: PUSH2 0x1fc5
0000067e: JUMP
0000067f: JUMPDEST
00000680: CALLVALUE
00000681: DUP1
00000682: ISZERO
00000683: PUSH2 0x068b
00000686: JUMPI
00000687: PUSH1 0x00
00000689: DUP1
0000068a: REVERT
0000068b: JUMPDEST
0000068c: POP
0000068d: PUSH2 0x02a7
00000690: PUSH1 0x69
00000692: SLOAD
00000693: DUP2
00000694: JUMP
00000695: JUMPDEST
00000696: CALLVALUE
00000697: DUP1
00000698: ISZERO
00000699: PUSH2 0x06a1
0000069c: JUMPI
0000069d: PUSH1 0x00
0000069f: DUP1
000006a0: REVERT
000006a1: JUMPDEST
000006a2: POP
000006a3: PUSH2 0x02a7
000006a6: PUSH2 0x06b0
000006a9: CALLDATASIZE
000006aa: PUSH1 0x04
000006ac: PUSH2 0x3226
000006af: JUMP
000006b0: JUMPDEST
000006b1: PUSH2 0x1fce
000006b4: JUMP
000006b5: JUMPDEST
000006b6: CALLVALUE
000006b7: DUP1
000006b8: ISZERO
000006b9: PUSH2 0x06c1
000006bc: JUMPI
000006bd: PUSH1 0x00
000006bf: DUP1
000006c0: REVERT
000006c1: JUMPDEST
000006c2: POP
000006c3: PUSH2 0x06d5
000006c6: PUSH2 0x06d0
000006c9: CALLDATASIZE
000006ca: PUSH1 0x04
000006cc: PUSH2 0x39b4
000006cf: JUMP
000006d0: JUMPDEST
000006d1: PUSH2 0x1fe5
000006d4: JUMP
000006d5: JUMPDEST
000006d6: PUSH1 0x40
000006d8: MLOAD
000006d9: PUSH2 0x025d
000006dc: SWAP4
000006dd: SWAP3
000006de: SWAP2
000006df: SWAP1
000006e0: PUSH2 0x3a81
000006e3: JUMP
000006e4: JUMPDEST
000006e5: CALLVALUE
000006e6: DUP1
000006e7: ISZERO
000006e8: PUSH2 0x06f0
000006eb: JUMPI
000006ec: PUSH1 0x00
000006ee: DUP1
000006ef: REVERT
000006f0: JUMPDEST
000006f1: POP
000006f2: PUSH2 0x030e
000006f5: PUSH2 0x06ff
000006f8: CALLDATASIZE
000006f9: PUSH1 0x04
000006fb: PUSH2 0x3226
000006fe: JUMP
000006ff: JUMPDEST
00000700: PUSH2 0x20ad
00000703: JUMP
00000704: JUMPDEST
00000705: CALLVALUE
00000706: DUP1
00000707: ISZERO
00000708: PUSH2 0x0710
0000070b: JUMPI
0000070c: PUSH1 0x00
0000070e: DUP1
0000070f: REVERT
00000710: JUMPDEST
00000711: POP
00000712: PUSH2 0x030e
00000715: PUSH2 0x071f
00000718: CALLDATASIZE
00000719: PUSH1 0x04
0000071b: PUSH2 0x3ab3
0000071e: JUMP
0000071f: JUMPDEST
00000720: PUSH2 0x20c1
00000723: JUMP
00000724: JUMPDEST
00000725: PUSH1 0x00
00000727: PUSH2 0x072e
0000072a: PUSH2 0x21ac
0000072d: JUMP
0000072e: JUMPDEST
0000072f: PUSH2 0x0739
00000732: DUP8
00000733: DUP8
00000734: DUP8
00000735: PUSH2 0x22f4
00000738: JUMP
00000739: JUMPDEST
0000073a: PUSH2 0x0747
0000073d: DUP8
0000073e: DUP8
0000073f: DUP8
00000740: DUP8
00000741: DUP8
00000742: DUP8
00000743: PUSH2 0x2444
00000746: JUMP
00000747: JUMPDEST
00000748: SWAP1
00000749: POP
0000074a: PUSH2 0x0755
0000074d: DUP7
0000074e: DUP7
0000074f: PUSH1 0x03
00000751: PUSH2 0x24e6
00000754: JUMP
00000755: JUMPDEST
00000756: PUSH2 0x075f
00000759: DUP7
0000075a: DUP7
0000075b: PUSH2 0x260b
0000075e: JUMP
0000075f: JUMPDEST
00000760: PUSH32 0xb46cdb4570c673c875c4a059b702e7a957067ce3dad1590104fd65dd145f3db9
00000781: DUP7
00000782: DUP7
00000783: PUSH1 0x40
00000785: MLOAD
00000786: PUSH2 0x0790
00000789: SWAP3
0000078a: SWAP2
0000078b: SWAP1
0000078c: PUSH2 0x3b31
0000078f: JUMP
00000790: JUMPDEST
00000791: PUSH1 0x40
00000793: MLOAD
00000794: DUP1
00000795: SWAP2
00000796: SUB
00000797: SWAP1
00000798: LOG1
00000799: SWAP7
0000079a: SWAP6
0000079b: POP
0000079c: POP
0000079d: POP
0000079e: POP
0000079f: POP
000007a0: POP
000007a1: JUMP
000007a2: JUMPDEST
000007a3: PUSH1 0x00
000007a5: PUSH1 0x02
000007a7: JUMPDEST
000007a8: PUSH2 0x07b1
000007ab: DUP5
000007ac: DUP5
000007ad: PUSH2 0x265e
000007b0: JUMP
000007b1: JUMPDEST
000007b2: PUSH1 0x05
000007b4: DUP2
000007b5: GT
000007b6: ISZERO
000007b7: PUSH2 0x07c2
000007ba: JUMPI
000007bb: PUSH2 0x07c2
000007be: PUSH2 0x3595
000007c1: JUMP
000007c2: JUMPDEST
000007c3: LT
000007c4: ISZERO
000007c5: SWAP1
000007c6: POP
000007c7: JUMPDEST
000007c8: SWAP3
000007c9: SWAP2
000007ca: POP
000007cb: POP
000007cc: JUMP
000007cd: JUMPDEST
000007ce: PUSH1 0x00
000007d0: PUSH1 0x67
000007d2: DUP4
000007d3: DUP4
000007d4: PUSH1 0x40
000007d6: MLOAD
000007d7: PUSH2 0x07e1
000007da: SWAP3
000007db: SWAP2
000007dc: SWAP1
000007dd: PUSH2 0x3b45
000007e0: JUMP
000007e1: JUMPDEST
000007e2: SWAP1
000007e3: DUP2
000007e4: MSTORE
000007e5: PUSH1 0x40
000007e7: MLOAD
000007e8: SWAP1
000007e9: DUP2
000007ea: SWAP1
000007eb: SUB
000007ec: PUSH1 0x20
000007ee: ADD
000007ef: SWAP1
000007f0: KECCAK256
000007f1: PUSH1 0x02
000007f3: ADD
000007f4: SLOAD
000007f5: PUSH8 0xffffffffffffffff
000007fe: PUSH2 0x0100
00000801: SWAP1
00000802: SWAP2
00000803: DIV
00000804: AND
00000805: SWAP4
00000806: SWAP3
00000807: POP
00000808: POP
00000809: POP
0000080a: JUMP
0000080b: JUMPDEST
0000080c: PUSH2 0x0813
0000080f: PUSH2 0x21ac
00000812: JUMP
00000813: JUMPDEST
00000814: PUSH1 0x03
00000816: PUSH2 0x081f
00000819: DUP5
0000081a: DUP5
0000081b: PUSH2 0x265e
0000081e: JUMP
0000081f: JUMPDEST
00000820: PUSH1 0x05
00000822: DUP2
00000823: GT
00000824: ISZERO
00000825: PUSH2 0x0830
00000828: JUMPI
00000829: PUSH2 0x0830
0000082c: PUSH2 0x3595
0000082f: JUMP
00000830: JUMPDEST
00000831: EQ
00000832: PUSH2 0x087a
00000835: JUMPI
00000836: PUSH1 0x40
00000838: MLOAD
00000839: PUSH3 0x461bcd
0000083d: PUSH1 0xe5
0000083f: SHL
00000840: DUP2
00000841: MSTORE
00000842: PUSH1 0x20
00000844: PUSH1 0x04
00000846: DUP3
00000847: ADD
00000848: MSTORE
00000849: PUSH1 0x15
0000084b: PUSH1 0x24
0000084d: DUP3
0000084e: ADD
0000084f: MSTORE
00000850: PUSH21 0x496e76616c6964206163636f756e74207374617465
00000866: PUSH1 0x58
00000868: SHL
00000869: PUSH1 0x44
0000086b: DUP3
0000086c: ADD
0000086d: MSTORE
0000086e: PUSH1 0x64
00000870: ADD
00000871: JUMPDEST
00000872: PUSH1 0x40
00000874: MLOAD
00000875: DUP1
00000876: SWAP2
00000877: SUB
00000878: SWAP1
00000879: REVERT
0000087a: JUMPDEST
0000087b: DUP1
0000087c: PUSH1 0x67
0000087e: DUP5
0000087f: DUP5
00000880: PUSH1 0x40
00000882: MLOAD
00000883: PUSH2 0x088d
00000886: SWAP3
00000887: SWAP2
00000888: SWAP1
00000889: PUSH2 0x3b45
0000088c: JUMP
0000088d: JUMPDEST
0000088e: SWAP1
0000088f: DUP2
00000890: MSTORE
00000891: PUSH1 0x20
00000893: ADD
00000894: PUSH1 0x40
00000896: MLOAD
00000897: DUP1
00000898: SWAP2
00000899: SUB
0000089a: SWAP1
0000089b: KECCAK256
0000089c: PUSH1 0x02
0000089e: ADD
0000089f: PUSH1 0x11
000008a1: PUSH2 0x0100
000008a4: EXP
000008a5: DUP2
000008a6: SLOAD
000008a7: DUP2
000008a8: PUSH8 0xffffffffffffffff
000008b1: MUL
000008b2: NOT
000008b3: AND
000008b4: SWAP1
000008b5: DUP4
000008b6: PUSH8 0xffffffffffffffff
000008bf: AND
000008c0: MUL
000008c1: OR
000008c2: SWAP1
000008c3: SSTORE
000008c4: POP
000008c5: POP
000008c6: POP
000008c7: POP
000008c8: JUMP
000008c9: JUMPDEST
000008ca: PUSH1 0x00
000008cc: SLOAD
000008cd: PUSH2 0x0100
000008d0: SWAP1
000008d1: DIV
000008d2: PUSH1 0xff
000008d4: AND
000008d5: PUSH2 0x08e4
000008d8: JUMPI
000008d9: PUSH1 0x00
000008db: SLOAD
000008dc: PUSH1 0xff
000008de: AND
000008df: ISZERO
000008e0: PUSH2 0x08e8
000008e3: JUMP
000008e4: JUMPDEST
000008e5: ADDRESS
000008e6: EXTCODESIZE
000008e7: ISZERO
000008e8: JUMPDEST
000008e9: PUSH2 0x095a
000008ec: JUMPI
000008ed: PUSH1 0x40
000008ef: MLOAD
000008f0: PUSH3 0x461bcd
000008f4: PUSH1 0xe5
000008f6: SHL
000008f7: DUP2
000008f8: MSTORE
000008f9: PUSH1 0x20
000008fb: PUSH1 0x04
000008fd: DUP3
000008fe: ADD
000008ff: MSTORE
00000900: PUSH1 0x2e
00000902: PUSH1 0x24
00000904: DUP3
00000905: ADD
00000906: MSTORE
00000907: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00000928: PUSH1 0x44
0000092a: DUP3
0000092b: ADD
0000092c: MSTORE
0000092d: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
0000094e: PUSH1 0x64
00000950: DUP3
00000951: ADD
00000952: MSTORE
00000953: PUSH1 0x84
00000955: ADD
00000956: PUSH2 0x0871
00000959: JUMP
0000095a: JUMPDEST
0000095b: PUSH1 0x00
0000095d: SLOAD
0000095e: PUSH2 0x0100
00000961: SWAP1
00000962: DIV
00000963: PUSH1 0xff
00000965: AND
00000966: ISZERO
00000967: DUP1
00000968: ISZERO
00000969: PUSH2 0x097c
0000096c: JUMPI
0000096d: PUSH1 0x00
0000096f: DUP1
00000970: SLOAD
00000971: PUSH2 0xffff
00000974: NOT
00000975: AND
00000976: PUSH2 0x0101
00000979: OR
0000097a: SWAP1
0000097b: SSTORE
0000097c: JUMPDEST
0000097d: PUSH2 0x0800
00000980: PUSH1 0x69
00000982: SSTORE
00000983: PUSH2 0x098b
00000986: DUP3
00000987: PUSH2 0x268c
0000098a: JUMP
0000098b: JUMPDEST
0000098c: DUP1
0000098d: ISZERO
0000098e: PUSH2 0x099d
00000991: JUMPI
00000992: PUSH1 0x00
00000994: DUP1
00000995: SLOAD
00000996: PUSH2 0xff00
00000999: NOT
0000099a: AND
0000099b: SWAP1
0000099c: SSTORE
0000099d: JUMPDEST
0000099e: POP
0000099f: POP
000009a0: JUMP
000009a1: JUMPDEST
000009a2: DUP1
000009a3: MLOAD
000009a4: PUSH1 0x20
000009a6: DUP2
000009a7: DUP4
000009a8: ADD
000009a9: DUP2
000009aa: ADD
000009ab: DUP1
000009ac: MLOAD
000009ad: PUSH1 0x67
000009af: DUP3
000009b0: MSTORE
000009b1: SWAP3
000009b2: DUP3
000009b3: ADD
000009b4: SWAP2
000009b5: SWAP1
000009b6: SWAP4
000009b7: ADD
000009b8: KECCAK256
000009b9: SWAP2
000009ba: MSTORE
000009bb: DUP1
000009bc: SLOAD
000009bd: DUP2
000009be: SWAP1
000009bf: PUSH2 0x09c7
000009c2: SWAP1
000009c3: PUSH2 0x3b55
000009c6: JUMP
000009c7: JUMPDEST
000009c8: DUP1
000009c9: PUSH1 0x1f
000009cb: ADD
000009cc: PUSH1 0x20
000009ce: DUP1
000009cf: SWAP2
000009d0: DIV
000009d1: MUL
000009d2: PUSH1 0x20
000009d4: ADD
000009d5: PUSH1 0x40
000009d7: MLOAD
000009d8: SWAP1
000009d9: DUP2
000009da: ADD
000009db: PUSH1 0x40
000009dd: MSTORE
000009de: DUP1
000009df: SWAP3
000009e0: SWAP2
000009e1: SWAP1
000009e2: DUP2
000009e3: DUP2
000009e4: MSTORE
000009e5: PUSH1 0x20
000009e7: ADD
000009e8: DUP3
000009e9: DUP1
000009ea: SLOAD
000009eb: PUSH2 0x09f3
000009ee: SWAP1
000009ef: PUSH2 0x3b55
000009f2: JUMP
000009f3: JUMPDEST
000009f4: DUP1
000009f5: ISZERO
000009f6: PUSH2 0x0a40
000009f9: JUMPI
000009fa: DUP1
000009fb: PUSH1 0x1f
000009fd: LT
000009fe: PUSH2 0x0a15
00000a01: JUMPI
00000a02: PUSH2 0x0100
00000a05: DUP1
00000a06: DUP4
00000a07: SLOAD
00000a08: DIV
00000a09: MUL
00000a0a: DUP4
00000a0b: MSTORE
00000a0c: SWAP2
00000a0d: PUSH1 0x20
00000a0f: ADD
00000a10: SWAP2
00000a11: PUSH2 0x0a40
00000a14: JUMP
00000a15: JUMPDEST
00000a16: DUP3
00000a17: ADD
00000a18: SWAP2
00000a19: SWAP1
00000a1a: PUSH1 0x00
00000a1c: MSTORE
00000a1d: PUSH1 0x20
00000a1f: PUSH1 0x00
00000a21: KECCAK256
00000a22: SWAP1
00000a23: JUMPDEST
00000a24: DUP2
00000a25: SLOAD
00000a26: DUP2
00000a27: MSTORE
00000a28: SWAP1
00000a29: PUSH1 0x01
00000a2b: ADD
00000a2c: SWAP1
00000a2d: PUSH1 0x20
00000a2f: ADD
00000a30: DUP1
00000a31: DUP4
00000a32: GT
00000a33: PUSH2 0x0a23
00000a36: JUMPI
00000a37: DUP3
00000a38: SWAP1
00000a39: SUB
00000a3a: PUSH1 0x1f
00000a3c: AND
00000a3d: DUP3
00000a3e: ADD
00000a3f: SWAP2
00000a40: JUMPDEST
00000a41: POP
00000a42: POP
00000a43: POP
00000a44: POP
00000a45: POP
00000a46: SWAP1
00000a47: DUP1
00000a48: PUSH1 0x01
00000a4a: ADD
00000a4b: DUP1
00000a4c: SLOAD
00000a4d: PUSH2 0x0a55
00000a50: SWAP1
00000a51: PUSH2 0x3b55
00000a54: JUMP
00000a55: JUMPDEST
00000a56: DUP1
00000a57: PUSH1 0x1f
00000a59: ADD
00000a5a: PUSH1 0x20
00000a5c: DUP1
00000a5d: SWAP2
00000a5e: DIV
00000a5f: MUL
00000a60: PUSH1 0x20
00000a62: ADD
00000a63: PUSH1 0x40
00000a65: MLOAD
00000a66: SWAP1
00000a67: DUP2
00000a68: ADD
00000a69: PUSH1 0x40
00000a6b: MSTORE
00000a6c: DUP1
00000a6d: SWAP3
00000a6e: SWAP2
00000a6f: SWAP1
00000a70: DUP2
00000a71: DUP2
00000a72: MSTORE
00000a73: PUSH1 0x20
00000a75: ADD
00000a76: DUP3
00000a77: DUP1
00000a78: SLOAD
00000a79: PUSH2 0x0a81
00000a7c: SWAP1
00000a7d: PUSH2 0x3b55
00000a80: JUMP
00000a81: JUMPDEST
00000a82: DUP1
00000a83: ISZERO
00000a84: PUSH2 0x0ace
00000a87: JUMPI
00000a88: DUP1
00000a89: PUSH1 0x1f
00000a8b: LT
00000a8c: PUSH2 0x0aa3
00000a8f: JUMPI
00000a90: PUSH2 0x0100
00000a93: DUP1
00000a94: DUP4
00000a95: SLOAD
00000a96: DIV
00000a97: MUL
00000a98: DUP4
00000a99: MSTORE
00000a9a: SWAP2
00000a9b: PUSH1 0x20
00000a9d: ADD
00000a9e: SWAP2
00000a9f: PUSH2 0x0ace
00000aa2: JUMP
00000aa3: JUMPDEST
00000aa4: DUP3
00000aa5: ADD
00000aa6: SWAP2
00000aa7: SWAP1
00000aa8: PUSH1 0x00
00000aaa: MSTORE
00000aab: PUSH1 0x20
00000aad: PUSH1 0x00
00000aaf: KECCAK256
00000ab0: SWAP1
00000ab1: JUMPDEST
00000ab2: DUP2
00000ab3: SLOAD
00000ab4: DUP2
00000ab5: MSTORE
00000ab6: SWAP1
00000ab7: PUSH1 0x01
00000ab9: ADD
00000aba: SWAP1
00000abb: PUSH1 0x20
00000abd: ADD
00000abe: DUP1
00000abf: DUP4
00000ac0: GT
00000ac1: PUSH2 0x0ab1
00000ac4: JUMPI
00000ac5: DUP3
00000ac6: SWAP1
00000ac7: SUB
00000ac8: PUSH1 0x1f
00000aca: AND
00000acb: DUP3
00000acc: ADD
00000acd: SWAP2
00000ace: JUMPDEST
00000acf: POP
00000ad0: POP
00000ad1: POP
00000ad2: POP
00000ad3: PUSH1 0x02
00000ad5: DUP4
00000ad6: ADD
00000ad7: SLOAD
00000ad8: PUSH1 0x03
00000ada: SWAP1
00000adb: SWAP4
00000adc: ADD
00000add: SLOAD
00000ade: SWAP2
00000adf: SWAP3
00000ae0: PUSH1 0xff
00000ae2: DUP2
00000ae3: AND
00000ae4: SWAP3
00000ae5: PUSH8 0xffffffffffffffff
00000aee: PUSH2 0x0100
00000af1: DUP4
00000af2: DIV
00000af3: DUP2
00000af4: AND
00000af5: SWAP4
00000af6: POP
00000af7: PUSH10 0x01000000000000000000
00000b02: DUP4
00000b03: DIV
00000b04: DUP2
00000b05: AND
00000b06: SWAP3
00000b07: PUSH18 0x010000000000000000000000000000000000
00000b1a: SWAP1
00000b1b: DIV
00000b1c: DUP2
00000b1d: AND
00000b1e: SWAP2
00000b1f: DUP2
00000b20: DUP2
00000b21: AND
00000b22: SWAP2
00000b23: PUSH9 0x010000000000000000
00000b2d: DUP3
00000b2e: DIV
00000b2f: DUP2
00000b30: AND
00000b31: SWAP2
00000b32: PUSH1 0x01
00000b34: PUSH1 0x80
00000b36: SHL
00000b37: SWAP1
00000b38: DIV
00000b39: AND
00000b3a: DUP10
00000b3b: JUMP
00000b3c: JUMPDEST
00000b3d: PUSH1 0x40
00000b3f: DUP1
00000b40: MLOAD
00000b41: PUSH2 0x0120
00000b44: DUP2
00000b45: ADD
00000b46: DUP3
00000b47: MSTORE
00000b48: PUSH1 0x60
00000b4a: DUP1
00000b4b: DUP3
00000b4c: MSTORE
00000b4d: PUSH1 0x20
00000b4f: DUP3
00000b50: ADD
00000b51: DUP2
00000b52: SWAP1
00000b53: MSTORE
00000b54: PUSH1 0x00
00000b56: DUP3
00000b57: DUP5
00000b58: ADD
00000b59: DUP2
00000b5a: SWAP1
00000b5b: MSTORE
00000b5c: SWAP1
00000b5d: DUP3
00000b5e: ADD
00000b5f: DUP2
00000b60: SWAP1
00000b61: MSTORE
00000b62: PUSH1 0x80
00000b64: DUP3
00000b65: ADD
00000b66: DUP2
00000b67: SWAP1
00000b68: MSTORE
00000b69: PUSH1 0xa0
00000b6b: DUP3
00000b6c: ADD
00000b6d: DUP2
00000b6e: SWAP1
00000b6f: MSTORE
00000b70: PUSH1 0xc0
00000b72: DUP3
00000b73: ADD
00000b74: DUP2
00000b75: SWAP1
00000b76: MSTORE
00000b77: PUSH1 0xe0
00000b79: DUP3
00000b7a: ADD
00000b7b: DUP2
00000b7c: SWAP1
00000b7d: MSTORE
00000b7e: PUSH2 0x0100
00000b81: DUP3
00000b82: ADD
00000b83: MSTORE
00000b84: SWAP1
00000b85: MLOAD
00000b86: PUSH1 0x67
00000b88: SWAP1
00000b89: PUSH2 0x0b95
00000b8c: SWAP1
00000b8d: DUP6
00000b8e: SWAP1
00000b8f: DUP6
00000b90: SWAP1
00000b91: PUSH2 0x3b45
00000b94: JUMP
00000b95: JUMPDEST
00000b96: SWAP1
00000b97: DUP2
00000b98: MSTORE
00000b99: PUSH1 0x20
00000b9b: ADD
00000b9c: PUSH1 0x40
00000b9e: MLOAD
00000b9f: DUP1
00000ba0: SWAP2
00000ba1: SUB
00000ba2: SWAP1
00000ba3: KECCAK256
00000ba4: PUSH1 0x40
00000ba6: MLOAD
00000ba7: DUP1
00000ba8: PUSH2 0x0120
00000bab: ADD
00000bac: PUSH1 0x40
00000bae: MSTORE
00000baf: SWAP1
00000bb0: DUP2
00000bb1: PUSH1 0x00
00000bb3: DUP3
00000bb4: ADD
00000bb5: DUP1
00000bb6: SLOAD
00000bb7: PUSH2 0x0bbf
00000bba: SWAP1
00000bbb: PUSH2 0x3b55
00000bbe: JUMP
00000bbf: JUMPDEST
00000bc0: DUP1
00000bc1: PUSH1 0x1f
00000bc3: ADD
00000bc4: PUSH1 0x20
00000bc6: DUP1
00000bc7: SWAP2
00000bc8: DIV
00000bc9: MUL
00000bca: PUSH1 0x20
00000bcc: ADD
00000bcd: PUSH1 0x40
00000bcf: MLOAD
00000bd0: SWAP1
00000bd1: DUP2
00000bd2: ADD
00000bd3: PUSH1 0x40
00000bd5: MSTORE
00000bd6: DUP1
00000bd7: SWAP3
00000bd8: SWAP2
00000bd9: SWAP1
00000bda: DUP2
00000bdb: DUP2
00000bdc: MSTORE
00000bdd: PUSH1 0x20
00000bdf: ADD
00000be0: DUP3
00000be1: DUP1
00000be2: SLOAD
00000be3: PUSH2 0x0beb
00000be6: SWAP1
00000be7: PUSH2 0x3b55
00000bea: JUMP
00000beb: JUMPDEST
00000bec: DUP1
00000bed: ISZERO
00000bee: PUSH2 0x0c38
00000bf1: JUMPI
00000bf2: DUP1
00000bf3: PUSH1 0x1f
00000bf5: LT
00000bf6: PUSH2 0x0c0d
00000bf9: JUMPI
00000bfa: PUSH2 0x0100
00000bfd: DUP1
00000bfe: DUP4
00000bff: SLOAD
00000c00: DIV
00000c01: MUL
00000c02: DUP4
00000c03: MSTORE
00000c04: SWAP2
00000c05: PUSH1 0x20
00000c07: ADD
00000c08: SWAP2
00000c09: PUSH2 0x0c38
00000c0c: JUMP
00000c0d: JUMPDEST
00000c0e: DUP3
00000c0f: ADD
00000c10: SWAP2
00000c11: SWAP1
00000c12: PUSH1 0x00
00000c14: MSTORE
00000c15: PUSH1 0x20
00000c17: PUSH1 0x00
00000c19: KECCAK256
00000c1a: SWAP1
00000c1b: JUMPDEST
00000c1c: DUP2
00000c1d: SLOAD
00000c1e: DUP2
00000c1f: MSTORE
00000c20: SWAP1
00000c21: PUSH1 0x01
00000c23: ADD
00000c24: SWAP1
00000c25: PUSH1 0x20
00000c27: ADD
00000c28: DUP1
00000c29: DUP4
00000c2a: GT
00000c2b: PUSH2 0x0c1b
00000c2e: JUMPI
00000c2f: DUP3
00000c30: SWAP1
00000c31: SUB
00000c32: PUSH1 0x1f
00000c34: AND
00000c35: DUP3
00000c36: ADD
00000c37: SWAP2
00000c38: JUMPDEST
00000c39: POP
00000c3a: POP
00000c3b: POP
00000c3c: POP
00000c3d: POP
00000c3e: DUP2
00000c3f: MSTORE
00000c40: PUSH1 0x20
00000c42: ADD
00000c43: PUSH1 0x01
00000c45: DUP3
00000c46: ADD
00000c47: DUP1
00000c48: SLOAD
00000c49: PUSH2 0x0c51
00000c4c: SWAP1
00000c4d: PUSH2 0x3b55
00000c50: JUMP
00000c51: JUMPDEST
00000c52: DUP1
00000c53: PUSH1 0x1f
00000c55: ADD
00000c56: PUSH1 0x20
00000c58: DUP1
00000c59: SWAP2
00000c5a: DIV
00000c5b: MUL
00000c5c: PUSH1 0x20
00000c5e: ADD
00000c5f: PUSH1 0x40
00000c61: MLOAD
00000c62: SWAP1
00000c63: DUP2
00000c64: ADD
00000c65: PUSH1 0x40
00000c67: MSTORE
00000c68: DUP1
00000c69: SWAP3
00000c6a: SWAP2
00000c6b: SWAP1
00000c6c: DUP2
00000c6d: DUP2
00000c6e: MSTORE
00000c6f: PUSH1 0x20
00000c71: ADD
00000c72: DUP3
00000c73: DUP1
00000c74: SLOAD
00000c75: PUSH2 0x0c7d
00000c78: SWAP1
00000c79: PUSH2 0x3b55
00000c7c: JUMP
00000c7d: JUMPDEST
00000c7e: DUP1
00000c7f: ISZERO
00000c80: PUSH2 0x0cca
00000c83: JUMPI
00000c84: DUP1
00000c85: PUSH1 0x1f
00000c87: LT
00000c88: PUSH2 0x0c9f
00000c8b: JUMPI
00000c8c: PUSH2 0x0100
00000c8f: DUP1
00000c90: DUP4
00000c91: SLOAD
00000c92: DIV
00000c93: MUL
00000c94: DUP4
00000c95: MSTORE
00000c96: SWAP2
00000c97: PUSH1 0x20
00000c99: ADD
00000c9a: SWAP2
00000c9b: PUSH2 0x0cca
00000c9e: JUMP
00000c9f: JUMPDEST
00000ca0: DUP3
00000ca1: ADD
00000ca2: SWAP2
00000ca3: SWAP1
00000ca4: PUSH1 0x00
00000ca6: MSTORE
00000ca7: PUSH1 0x20
00000ca9: PUSH1 0x00
00000cab: KECCAK256
00000cac: SWAP1
00000cad: JUMPDEST
00000cae: DUP2
00000caf: SLOAD
00000cb0: DUP2
00000cb1: MSTORE
00000cb2: SWAP1
00000cb3: PUSH1 0x01
00000cb5: ADD
00000cb6: SWAP1
00000cb7: PUSH1 0x20
00000cb9: ADD
00000cba: DUP1
00000cbb: DUP4
00000cbc: GT
00000cbd: PUSH2 0x0cad
00000cc0: JUMPI
00000cc1: DUP3
00000cc2: SWAP1
00000cc3: SUB
00000cc4: PUSH1 0x1f
00000cc6: AND
00000cc7: DUP3
00000cc8: ADD
00000cc9: SWAP2
00000cca: JUMPDEST
00000ccb: POP
00000ccc: POP
00000ccd: POP
00000cce: SWAP2
00000ccf: DUP4
00000cd0: MSTORE
00000cd1: POP
00000cd2: POP
00000cd3: PUSH1 0x02
00000cd5: DUP3
00000cd6: ADD
00000cd7: SLOAD
00000cd8: PUSH1 0xff
00000cda: DUP2
00000cdb: AND
00000cdc: ISZERO
00000cdd: ISZERO
00000cde: PUSH1 0x20
00000ce0: DUP4
00000ce1: ADD
00000ce2: MSTORE
00000ce3: PUSH8 0xffffffffffffffff
00000cec: PUSH2 0x0100
00000cef: DUP3
00000cf0: DIV
00000cf1: DUP2
00000cf2: AND
00000cf3: PUSH1 0x40
00000cf5: DUP5
00000cf6: ADD
00000cf7: MSTORE
00000cf8: PUSH10 0x01000000000000000000
00000d03: DUP3
00000d04: DIV
00000d05: DUP2
00000d06: AND
00000d07: PUSH1 0x60
00000d09: DUP5
00000d0a: ADD
00000d0b: MSTORE
00000d0c: PUSH18 0x010000000000000000000000000000000000
00000d1f: SWAP1
00000d20: SWAP2
00000d21: DIV
00000d22: DUP2
00000d23: AND
00000d24: PUSH1 0x80
00000d26: DUP4
00000d27: ADD
00000d28: MSTORE
00000d29: PUSH1 0x03
00000d2b: SWAP1
00000d2c: SWAP3
00000d2d: ADD
00000d2e: SLOAD
00000d2f: DUP1
00000d30: DUP4
00000d31: AND
00000d32: PUSH1 0xa0
00000d34: DUP4
00000d35: ADD
00000d36: MSTORE
00000d37: PUSH9 0x010000000000000000
00000d41: DUP2
00000d42: DIV
00000d43: DUP4
00000d44: AND
00000d45: PUSH1 0xc0
00000d47: DUP4
00000d48: ADD
00000d49: MSTORE
00000d4a: PUSH1 0x01
00000d4c: PUSH1 0x80
00000d4e: SHL
00000d4f: SWAP1
00000d50: DIV
00000d51: SWAP1
00000d52: SWAP2
00000d53: AND
00000d54: PUSH1 0xe0
00000d56: SWAP1
00000d57: SWAP2
00000d58: ADD
00000d59: MSTORE
00000d5a: SWAP1
00000d5b: POP
00000d5c: SWAP3
00000d5d: SWAP2
00000d5e: POP
00000d5f: POP
00000d60: JUMP
00000d61: JUMPDEST
00000d62: PUSH1 0x60
00000d64: PUSH2 0x0d6d
00000d67: DUP4
00000d68: DUP4
00000d69: PUSH2 0x269d
00000d6c: JUMP
00000d6d: JUMPDEST
00000d6e: PUSH1 0x20
00000d70: ADD
00000d71: MLOAD
00000d72: SWAP4
00000d73: SWAP3
00000d74: POP
00000d75: POP
00000d76: POP
00000d77: JUMP
00000d78: JUMPDEST
00000d79: PUSH1 0x01
00000d7b: PUSH1 0x01
00000d7d: PUSH1 0xa0
00000d7f: SHL
00000d80: SUB
00000d81: PUSH32 0x0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def1504
00000da2: AND
00000da3: ADDRESS
00000da4: SUB
00000da5: PUSH2 0x0e05
00000da8: JUMPI
00000da9: PUSH1 0x40
00000dab: MLOAD
00000dac: PUSH3 0x461bcd
00000db0: PUSH1 0xe5
00000db2: SHL
00000db3: DUP2
00000db4: MSTORE
00000db5: PUSH1 0x20
00000db7: PUSH1 0x04
00000db9: DUP3
00000dba: ADD
00000dbb: MSTORE
00000dbc: PUSH1 0x2c
00000dbe: PUSH1 0x24
00000dc0: DUP3
00000dc1: ADD
00000dc2: MSTORE
00000dc3: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000de4: PUSH1 0x44
00000de6: DUP3
00000de7: ADD
00000de8: MSTORE
00000de9: PUSH12 0x19195b1959d85d1958d85b1b
00000df6: PUSH1 0xa2
00000df8: SHL
00000df9: PUSH1 0x64
00000dfb: DUP3
00000dfc: ADD
00000dfd: MSTORE
00000dfe: PUSH1 0x84
00000e00: ADD
00000e01: PUSH2 0x0871
00000e04: JUMP
00000e05: JUMPDEST
00000e06: PUSH32 0x0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def1504
00000e27: PUSH1 0x01
00000e29: PUSH1 0x01
00000e2b: PUSH1 0xa0
00000e2d: SHL
00000e2e: SUB
00000e2f: AND
00000e30: PUSH2 0x0e60
00000e33: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000e54: SLOAD
00000e55: PUSH1 0x01
00000e57: PUSH1 0x01
00000e59: PUSH1 0xa0
00000e5b: SHL
00000e5c: SUB
00000e5d: AND
00000e5e: SWAP1
00000e5f: JUMP
00000e60: JUMPDEST
00000e61: PUSH1 0x01
00000e63: PUSH1 0x01
00000e65: PUSH1 0xa0
00000e67: SHL
00000e68: SUB
00000e69: AND
00000e6a: EQ
00000e6b: PUSH2 0x0ecb
00000e6e: JUMPI
00000e6f: PUSH1 0x40
00000e71: MLOAD
00000e72: PUSH3 0x461bcd
00000e76: PUSH1 0xe5
00000e78: SHL
00000e79: DUP2
00000e7a: MSTORE
00000e7b: PUSH1 0x20
00000e7d: PUSH1 0x04
00000e7f: DUP3
00000e80: ADD
00000e81: MSTORE
00000e82: PUSH1 0x2c
00000e84: PUSH1 0x24
00000e86: DUP3
00000e87: ADD
00000e88: MSTORE
00000e89: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000eaa: PUSH1 0x44
00000eac: DUP3
00000ead: ADD
00000eae: MSTORE
00000eaf: PUSH12 0x6163746976652070726f7879
00000ebc: PUSH1 0xa0
00000ebe: SHL
00000ebf: PUSH1 0x64
00000ec1: DUP3
00000ec2: ADD
00000ec3: MSTORE
00000ec4: PUSH1 0x84
00000ec6: ADD
00000ec7: PUSH2 0x0871
00000eca: JUMP
00000ecb: JUMPDEST
00000ecc: PUSH2 0x0ed4
00000ecf: DUP2
00000ed0: PUSH2 0x27f3
00000ed3: JUMP
00000ed4: JUMPDEST
00000ed5: PUSH1 0x40
00000ed7: DUP1
00000ed8: MLOAD
00000ed9: PUSH1 0x00
00000edb: DUP1
00000edc: DUP3
00000edd: MSTORE
00000ede: PUSH1 0x20
00000ee0: DUP3
00000ee1: ADD
00000ee2: SWAP1
00000ee3: SWAP3
00000ee4: MSTORE
00000ee5: PUSH2 0x0ef0
00000ee8: SWAP2
00000ee9: DUP4
00000eea: SWAP2
00000eeb: SWAP1
00000eec: PUSH2 0x2a16
00000eef: JUMP
00000ef0: JUMPDEST
00000ef1: POP
00000ef2: JUMP
00000ef3: JUMPDEST
00000ef4: PUSH2 0x0efb
00000ef7: PUSH2 0x21ac
00000efa: JUMP
00000efb: JUMPDEST
00000efc: PUSH1 0x00
00000efe: DUP3
00000eff: PUSH1 0x01
00000f01: PUSH1 0x01
00000f03: PUSH1 0xa0
00000f05: SHL
00000f06: SUB
00000f07: AND
00000f08: DUP3
00000f09: PUSH1 0x40
00000f0b: MLOAD
00000f0c: PUSH1 0x00
00000f0e: PUSH1 0x40
00000f10: MLOAD
00000f11: DUP1
00000f12: DUP4
00000f13: SUB
00000f14: DUP2
00000f15: DUP6
00000f16: DUP8
00000f17: GAS
00000f18: CALL
00000f19: SWAP3
00000f1a: POP
00000f1b: POP
00000f1c: POP
00000f1d: RETURNDATASIZE
00000f1e: DUP1
00000f1f: PUSH1 0x00
00000f21: DUP2
00000f22: EQ
00000f23: PUSH2 0x0f48
00000f26: JUMPI
00000f27: PUSH1 0x40
00000f29: MLOAD
00000f2a: SWAP2
00000f2b: POP
00000f2c: PUSH1 0x1f
00000f2e: NOT
00000f2f: PUSH1 0x3f
00000f31: RETURNDATASIZE
00000f32: ADD
00000f33: AND
00000f34: DUP3
00000f35: ADD
00000f36: PUSH1 0x40
00000f38: MSTORE
00000f39: RETURNDATASIZE
00000f3a: DUP3
00000f3b: MSTORE
00000f3c: RETURNDATASIZE
00000f3d: PUSH1 0x00
00000f3f: PUSH1 0x20
00000f41: DUP5
00000f42: ADD
00000f43: RETURNDATACOPY
00000f44: PUSH2 0x0f4d
00000f47: JUMP
00000f48: JUMPDEST
00000f49: PUSH1 0x60
00000f4b: SWAP2
00000f4c: POP
00000f4d: JUMPDEST
00000f4e: POP
00000f4f: POP
00000f50: SWAP1
00000f51: POP
00000f52: DUP1
00000f53: PUSH2 0x0f9e
00000f56: JUMPI
00000f57: PUSH1 0x40
00000f59: MLOAD
00000f5a: PUSH3 0x461bcd
00000f5e: PUSH1 0xe5
00000f60: SHL
00000f61: DUP2
00000f62: MSTORE
00000f63: PUSH1 0x20
00000f65: PUSH1 0x04
00000f67: DUP3
00000f68: ADD
00000f69: MSTORE
00000f6a: PUSH1 0x12
00000f6c: PUSH1 0x24
00000f6e: DUP3
00000f6f: ADD
00000f70: MSTORE
00000f71: PUSH32 0x4661696c656420746f207472616e736665720000000000000000000000000000
00000f92: PUSH1 0x44
00000f94: DUP3
00000f95: ADD
00000f96: MSTORE
00000f97: PUSH1 0x64
00000f99: ADD
00000f9a: PUSH2 0x0871
00000f9d: JUMP
00000f9e: JUMPDEST
00000f9f: DUP3
00000fa0: PUSH1 0x01
00000fa2: PUSH1 0x01
00000fa4: PUSH1 0xa0
00000fa6: SHL
00000fa7: SUB
00000fa8: AND
00000fa9: PUSH32 0x94b2de810873337ed265c5f8cf98c9cffefa06b8607f9a2f1fbaebdfbcfbef1c
00000fca: DUP4
00000fcb: PUSH1 0x40
00000fcd: MLOAD
00000fce: PUSH2 0x0fd9
00000fd1: SWAP2
00000fd2: DUP2
00000fd3: MSTORE
00000fd4: PUSH1 0x20
00000fd6: ADD
00000fd7: SWAP1
00000fd8: JUMP
00000fd9: JUMPDEST
00000fda: PUSH1 0x40
00000fdc: MLOAD
00000fdd: DUP1
00000fde: SWAP2
00000fdf: SUB
00000fe0: SWAP1
00000fe1: LOG2
00000fe2: POP
00000fe3: POP
00000fe4: POP
00000fe5: JUMP
00000fe6: JUMPDEST
00000fe7: PUSH1 0x01
00000fe9: PUSH1 0x01
00000feb: PUSH1 0xa0
00000fed: SHL
00000fee: SUB
00000fef: PUSH32 0x0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def1504
00001010: AND
00001011: ADDRESS
00001012: SUB
00001013: PUSH2 0x1073
00001016: JUMPI
00001017: PUSH1 0x40
00001019: MLOAD
0000101a: PUSH3 0x461bcd
0000101e: PUSH1 0xe5
00001020: SHL
00001021: DUP2
00001022: MSTORE
00001023: PUSH1 0x20
00001025: PUSH1 0x04
00001027: DUP3
00001028: ADD
00001029: MSTORE
0000102a: PUSH1 0x2c
0000102c: PUSH1 0x24
0000102e: DUP3
0000102f: ADD
00001030: MSTORE
00001031: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00001052: PUSH1 0x44
00001054: DUP3
00001055: ADD
00001056: MSTORE
00001057: PUSH12 0x19195b1959d85d1958d85b1b
00001064: PUSH1 0xa2
00001066: SHL
00001067: PUSH1 0x64
00001069: DUP3
0000106a: ADD
0000106b: MSTORE
0000106c: PUSH1 0x84
0000106e: ADD
0000106f: PUSH2 0x0871
00001072: JUMP
00001073: JUMPDEST
00001074: PUSH32 0x0000000000000000000000009227cb6d3388c7247f4726cbbb9c6f1f1def1504
00001095: PUSH1 0x01
00001097: PUSH1 0x01
00001099: PUSH1 0xa0
0000109b: SHL
0000109c: SUB
0000109d: AND
0000109e: PUSH2 0x10ce
000010a1: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
000010c2: SLOAD
000010c3: PUSH1 0x01
000010c5: PUSH1 0x01
000010c7: PUSH1 0xa0
000010c9: SHL
000010ca: SUB
000010cb: AND
000010cc: SWAP1
000010cd: JUMP
000010ce: JUMPDEST
000010cf: PUSH1 0x01
000010d1: PUSH1 0x01
000010d3: PUSH1 0xa0
000010d5: SHL
000010d6: SUB
000010d7: AND
000010d8: EQ
000010d9: PUSH2 0x1139
000010dc: JUMPI
000010dd: PUSH1 0x40
000010df: MLOAD
000010e0: PUSH3 0x461bcd
000010e4: PUSH1 0xe5
000010e6: SHL
000010e7: DUP2
000010e8: MSTORE
000010e9: PUSH1 0x20
000010eb: PUSH1 0x04
000010ed: DUP3
000010ee: ADD
000010ef: MSTORE
000010f0: PUSH1 0x2c
000010f2: PUSH1 0x24
000010f4: DUP3
000010f5: ADD
000010f6: MSTORE
000010f7: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00001118: PUSH1 0x44
0000111a: DUP3
0000111b: ADD
0000111c: MSTORE
0000111d: PUSH12 0x6163746976652070726f7879
0000112a: PUSH1 0xa0
0000112c: SHL
0000112d: PUSH1 0x64
0000112f: DUP3
00001130: ADD
00001131: MSTORE
00001132: PUSH1 0x84
00001134: ADD
00001135: PUSH2 0x0871
00001138: JUMP
00001139: JUMPDEST
0000113a: PUSH2 0x1142
0000113d: DUP3
0000113e: PUSH2 0x27f3
00001141: JUMP
00001142: JUMPDEST
00001143: PUSH2 0x099d
00001146: DUP3
00001147: DUP3
00001148: PUSH1 0x01
0000114a: PUSH2 0x2a16
0000114d: JUMP
0000114e: JUMPDEST
0000114f: PUSH1 0x00
00001151: PUSH1 0x67
00001153: DUP4
00001154: DUP4
00001155: PUSH1 0x40
00001157: MLOAD
00001158: PUSH2 0x1162
0000115b: SWAP3
0000115c: SWAP2
0000115d: SWAP1
0000115e: PUSH2 0x3b45
00001161: JUMP
00001162: JUMPDEST
00001163: SWAP1
00001164: DUP2
00001165: MSTORE
00001166: PUSH1 0x40
00001168: MLOAD
00001169: SWAP1
0000116a: DUP2
0000116b: SWAP1
0000116c: SUB
0000116d: PUSH1 0x20
0000116f: ADD
00001170: SWAP1
00001171: KECCAK256
00001172: PUSH1 0x03
00001174: ADD
00001175: SLOAD
00001176: PUSH8 0xffffffffffffffff
0000117f: PUSH1 0x01
00001181: PUSH1 0x80
00001183: SHL
00001184: SWAP1
00001185: SWAP2
00001186: DIV
00001187: AND
00001188: SWAP4
00001189: SWAP3
0000118a: POP
0000118b: POP
0000118c: POP
0000118d: JUMP
0000118e: JUMPDEST
0000118f: PUSH2 0x1196
00001192: PUSH2 0x21ac
00001195: JUMP
00001196: JUMPDEST
00001197: PUSH1 0x03
00001199: PUSH2 0x11a2
0000119c: DUP5
0000119d: DUP5
0000119e: PUSH2 0x265e
000011a1: JUMP
000011a2: JUMPDEST
000011a3: PUSH1 0x05
000011a5: DUP2
000011a6: GT
000011a7: ISZERO
000011a8: PUSH2 0x11b3
000011ab: JUMPI
000011ac: PUSH2 0x11b3
000011af: PUSH2 0x3595
000011b2: JUMP
000011b3: JUMPDEST
000011b4: EQ
000011b5: PUSH2 0x11f8
000011b8: JUMPI
000011b9: PUSH1 0x40
000011bb: MLOAD
000011bc: PUSH3 0x461bcd
000011c0: PUSH1 0xe5
000011c2: SHL
000011c3: DUP2
000011c4: MSTORE
000011c5: PUSH1 0x20
000011c7: PUSH1 0x04
000011c9: DUP3
000011ca: ADD
000011cb: MSTORE
000011cc: PUSH1 0x15
000011ce: PUSH1 0x24
000011d0: DUP3
000011d1: ADD
000011d2: MSTORE
000011d3: PUSH21 0x496e76616c6964206163636f756e74207374617465
000011e9: PUSH1 0x58
000011eb: SHL
000011ec: PUSH1 0x44
000011ee: DUP3
000011ef: ADD
000011f0: MSTORE
000011f1: PUSH1 0x64
000011f3: ADD
000011f4: PUSH2 0x0871
000011f7: JUMP
000011f8: JUMPDEST
000011f9: PUSH1 0x01
000011fb: PUSH1 0x67
000011fd: DUP5
000011fe: DUP5
000011ff: PUSH1 0x40
00001201: MLOAD
00001202: PUSH2 0x120c
00001205: SWAP3
00001206: SWAP2
00001207: SWAP1
00001208: PUSH2 0x3b45
0000120b: JUMP
0000120c: JUMPDEST
0000120d: SWAP1
0000120e: DUP2
0000120f: MSTORE
00001210: PUSH1 0x40
00001212: MLOAD
00001213: SWAP1
00001214: DUP2
00001215: SWAP1
00001216: SUB
00001217: PUSH1 0x20
00001219: ADD
0000121a: DUP2
0000121b: KECCAK256
0000121c: PUSH1 0x02
0000121e: ADD
0000121f: DUP1
00001220: SLOAD
00001221: SWAP3
00001222: ISZERO
00001223: ISZERO
00001224: PUSH1 0xff
00001226: NOT
00001227: SWAP1
00001228: SWAP4
00001229: AND
0000122a: SWAP3
0000122b: SWAP1
0000122c: SWAP3
0000122d: OR
0000122e: SWAP1
0000122f: SWAP2
00001230: SSTORE
00001231: DUP2
00001232: SWAP1
00001233: PUSH1 0x67
00001235: SWAP1
00001236: PUSH2 0x1242
00001239: SWAP1
0000123a: DUP7
0000123b: SWAP1
0000123c: DUP7
0000123d: SWAP1
0000123e: PUSH2 0x3b45
00001241: JUMP
00001242: JUMPDEST
00001243: SWAP1
00001244: DUP2
00001245: MSTORE
00001246: PUSH1 0x20
00001248: ADD
00001249: PUSH1 0x40
0000124b: MLOAD
0000124c: DUP1
0000124d: SWAP2
0000124e: SUB
0000124f: SWAP1
00001250: KECCAK256
00001251: PUSH1 0x03
00001253: ADD
00001254: PUSH1 0x10
00001256: PUSH2 0x0100
00001259: EXP
0000125a: DUP2
0000125b: SLOAD
0000125c: DUP2
0000125d: PUSH8 0xffffffffffffffff
00001266: MUL
00001267: NOT
00001268: AND
00001269: SWAP1
0000126a: DUP4
0000126b: PUSH8 0xffffffffffffffff
00001274: AND
00001275: MUL
00001276: OR
00001277: SWAP1
00001278: SSTORE
00001279: POP
0000127a: POP
0000127b: POP
0000127c: POP
0000127d: JUMP
0000127e: JUMPDEST
0000127f: PUSH2 0x1286
00001282: PUSH2 0x21ac
00001285: JUMP
00001286: JUMPDEST
00001287: PUSH2 0x1291
0000128a: DUP7
0000128b: DUP7
0000128c: DUP7
0000128d: PUSH2 0x22f4
00001290: JUMP
00001291: JUMPDEST
00001292: PUSH1 0x65
00001294: SLOAD
00001295: PUSH1 0x40
00001297: MLOAD
00001298: PUSH32 0xa3a05ecc00000000000000000000000000000000000000000000000000000000
000012b9: DUP2
000012ba: MSTORE
000012bb: PUSH1 0x01
000012bd: PUSH1 0x01
000012bf: PUSH1 0xa0
000012c1: SHL
000012c2: SUB
000012c3: SWAP1
000012c4: SWAP2
000012c5: AND
000012c6: SWAP1
000012c7: PUSH4 0xa3a05ecc
000012cc: SWAP1
000012cd: PUSH2 0x12e2
000012d0: SWAP1
000012d1: DUP7
000012d2: SWAP1
000012d3: DUP10
000012d4: SWAP1
000012d5: DUP10
000012d6: SWAP1
000012d7: DUP13
000012d8: SWAP1
000012d9: DUP10
000012da: SWAP1
000012db: PUSH1 0x04
000012dd: ADD
000012de: PUSH2 0x3b89
000012e1: JUMP
000012e2: JUMPDEST
000012e3: PUSH1 0x00
000012e5: PUSH1 0x40
000012e7: MLOAD
000012e8: DUP1
000012e9: DUP4
000012ea: SUB
000012eb: DUP2
000012ec: PUSH1 0x00
000012ee: DUP8
000012ef: DUP1
000012f0: EXTCODESIZE
000012f1: ISZERO
000012f2: DUP1
000012f3: ISZERO
000012f4: PUSH2 0x12fc
000012f7: JUMPI
000012f8: PUSH1 0x00
000012fa: DUP1
000012fb: REVERT
000012fc: JUMPDEST
000012fd: POP
000012fe: GAS
000012ff: CALL
00001300: ISZERO
00001301: DUP1
00001302: ISZERO
00001303: PUSH2 0x1310
00001306: JUMPI
00001307: RETURNDATASIZE
00001308: PUSH1 0x00
0000130a: DUP1
0000130b: RETURNDATACOPY
0000130c: RETURNDATASIZE
0000130d: PUSH1 0x00
0000130f: REVERT
00001310: JUMPDEST
00001311: POP
00001312: POP
00001313: POP
00001314: POP
00001315: PUSH2 0x1320
00001318: DUP6
00001319: DUP6
0000131a: PUSH1 0x03
0000131c: PUSH2 0x24e6
0000131f: JUMP
00001320: JUMPDEST
00001321: PUSH2 0x132c
00001324: DUP6
00001325: DUP6
00001326: PUSH1 0x04
00001328: PUSH2 0x24e6
0000132b: JUMP
0000132c: JUMPDEST
0000132d: DUP1
0000132e: PUSH1 0x67
00001330: DUP7
00001331: DUP7
00001332: PUSH1 0x40
00001334: MLOAD
00001335: PUSH2 0x133f
00001338: SWAP3
00001339: SWAP2
0000133a: SWAP1
0000133b: PUSH2 0x3b45
0000133e: JUMP
0000133f: JUMPDEST
00001340: SWAP1
00001341: DUP2
00001342: MSTORE
00001343: PUSH1 0x40
00001345: MLOAD
00001346: SWAP1
00001347: DUP2
00001348: SWAP1
00001349: SUB
0000134a: PUSH1 0x20
0000134c: ADD
0000134d: SWAP1
0000134e: KECCAK256
0000134f: PUSH2 0x1358
00001352: DUP3
00001353: DUP3
00001354: PUSH2 0x3d35
00001357: JUMP
00001358: JUMPDEST
00001359: POP
0000135a: POP
0000135b: PUSH1 0x40
0000135d: MLOAD
0000135e: PUSH4 0xa8ea23ff
00001363: PUSH1 0xe0
00001365: SHL
00001366: DUP2
00001367: MSTORE
00001368: PUSH1 0x01
0000136a: PUSH1 0x01
0000136c: PUSH1 0xa0
0000136e: SHL
0000136f: SUB
00001370: DUP5
00001371: AND
00001372: SWAP1
00001373: PUSH4 0xa8ea23ff
00001378: SWAP1
00001379: PUSH2 0x1388
0000137c: SWAP1
0000137d: DUP9
0000137e: SWAP1
0000137f: DUP9
00001380: SWAP1
00001381: PUSH1 0x04
00001383: ADD
00001384: PUSH2 0x3b31
00001387: JUMP
00001388: JUMPDEST
00001389: PUSH1 0x20
0000138b: PUSH1 0x40
0000138d: MLOAD
0000138e: DUP1
0000138f: DUP4
00001390: SUB
00001391: DUP2
00001392: DUP7
00001393: GAS
00001394: STATICCALL
00001395: ISZERO
00001396: DUP1
00001397: ISZERO
00001398: PUSH2 0x13a5
0000139b: JUMPI
0000139c: RETURNDATASIZE
0000139d: PUSH1 0x00
0000139f: DUP1
000013a0: RETURNDATACOPY
000013a1: RETURNDATASIZE
000013a2: PUSH1 0x00
000013a4: REVERT
000013a5: JUMPDEST
000013a6: POP
000013a7: POP
000013a8: POP
000013a9: POP
000013aa: PUSH1 0x40
000013ac: MLOAD
000013ad: RETURNDATASIZE
000013ae: PUSH1 0x1f
000013b0: NOT
000013b1: PUSH1 0x1f
000013b3: DUP3
000013b4: ADD
000013b5: AND
000013b6: DUP3
000013b7: ADD
000013b8: DUP1
000013b9: PUSH1 0x40
000013bb: MSTORE
000013bc: POP
000013bd: DUP2
000013be: ADD
000013bf: SWAP1
000013c0: PUSH2 0x13c9
000013c3: SWAP2
000013c4: SWAP1
000013c5: PUSH2 0x3ffa
000013c8: JUMP
000013c9: JUMPDEST
000013ca: PUSH2 0x13ff
000013cd: JUMPI
000013ce: PUSH1 0x40
000013d0: MLOAD
000013d1: PUSH3 0x461bcd
000013d5: PUSH1 0xe5
000013d7: SHL
000013d8: DUP2
000013d9: MSTORE
000013da: PUSH1 0x20
000013dc: PUSH1 0x04
000013de: DUP3
000013df: ADD
000013e0: MSTORE
000013e1: PUSH1 0x07
000013e3: PUSH1 0x24
000013e5: DUP3
000013e6: ADD
000013e7: MSTORE
000013e8: PUSH7 0x109b1bd8dad959
000013f0: PUSH1 0xca
000013f2: SHL
000013f3: PUSH1 0x44
000013f5: DUP3
000013f6: ADD
000013f7: MSTORE
000013f8: PUSH1 0x64
000013fa: ADD
000013fb: PUSH2 0x0871
000013fe: JUMP
000013ff: JUMPDEST
00001400: PUSH32 0x4f53bd233cf9812bb7f4f2e3dbf3803786ac1d296dfac41ec34500d9c55a075d
00001421: DUP6
00001422: DUP6
00001423: PUSH1 0x40
00001425: MLOAD
00001426: PUSH2 0x1430
00001429: SWAP3
0000142a: SWAP2
0000142b: SWAP1
0000142c: PUSH2 0x3b31
0000142f: JUMP
00001430: JUMPDEST
00001431: PUSH1 0x40
00001433: MLOAD
00001434: DUP1
00001435: SWAP2
00001436: SUB
00001437: SWAP1
00001438: LOG1
00001439: POP
0000143a: POP
0000143b: POP
0000143c: POP
0000143d: POP
0000143e: POP
0000143f: JUMP
00001440: JUMPDEST
00001441: PUSH1 0x00
00001443: PUSH1 0x01
00001445: PUSH2 0x07a7
00001448: JUMP
00001449: JUMPDEST
0000144a: PUSH2 0x1451
0000144d: PUSH2 0x21ac
00001450: JUMP
00001451: JUMPDEST
00001452: PUSH1 0x03
00001454: PUSH2 0x145d
00001457: DUP6
00001458: DUP6
00001459: PUSH2 0x265e
0000145c: JUMP
0000145d: JUMPDEST
0000145e: PUSH1 0x05
00001460: DUP2
00001461: GT
00001462: ISZERO
00001463: PUSH2 0x146e
00001466: JUMPI
00001467: PUSH2 0x146e
0000146a: PUSH2 0x3595
0000146d: JUMP
0000146e: JUMPDEST
0000146f: EQ
00001470: PUSH2 0x14b3
00001473: JUMPI
00001474: PUSH1 0x40
00001476: MLOAD
00001477: PUSH3 0x461bcd
0000147b: PUSH1 0xe5
0000147d: SHL
0000147e: DUP2
0000147f: MSTORE
00001480: PUSH1 0x20
00001482: PUSH1 0x04
00001484: DUP3
00001485: ADD
00001486: MSTORE
00001487: PUSH1 0x15
00001489: PUSH1 0x24
0000148b: DUP3
0000148c: ADD
0000148d: MSTORE
0000148e: PUSH21 0x496e76616c6964206163636f756e74207374617465
000014a4: PUSH1 0x58
000014a6: SHL
000014a7: PUSH1 0x44
000014a9: DUP3
000014aa: ADD
000014ab: MSTORE
000014ac: PUSH1 0x64
000014ae: ADD
000014af: PUSH2 0x0871
000014b2: JUMP
000014b3: JUMPDEST
000014b4: DUP1
000014b5: PUSH8 0xffffffffffffffff
000014be: AND
000014bf: PUSH1 0x67
000014c1: DUP6
000014c2: DUP6
000014c3: PUSH1 0x40
000014c5: MLOAD
000014c6: PUSH2 0x14d0
000014c9: SWAP3
000014ca: SWAP2
000014cb: SWAP1
000014cc: PUSH2 0x3b45
000014cf: JUMP
000014d0: JUMPDEST
000014d1: SWAP1
000014d2: DUP2
000014d3: MSTORE
000014d4: PUSH1 0x40
000014d6: MLOAD
000014d7: SWAP1
000014d8: DUP2
000014d9: SWAP1
000014da: SUB
000014db: PUSH1 0x20
000014dd: ADD
000014de: SWAP1
000014df: KECCAK256
000014e0: PUSH1 0x03
000014e2: ADD
000014e3: SLOAD
000014e4: PUSH8 0xffffffffffffffff
000014ed: PUSH1 0x01
000014ef: PUSH1 0x80
000014f1: SHL
000014f2: SWAP1
000014f3: SWAP2
000014f4: DIV
000014f5: AND
000014f6: LT
000014f7: PUSH2 0x1542
000014fa: JUMPI
000014fb: PUSH1 0x40
000014fd: MLOAD
000014fe: PUSH3 0x461bcd
00001502: PUSH1 0xe5
00001504: SHL
00001505: DUP2
00001506: MSTORE
00001507: PUSH1 0x20
00001509: PUSH1 0x04
0000150b: DUP3
0000150c: ADD
0000150d: MSTORE
0000150e: PUSH1 0x0a
00001510: PUSH1 0x24
00001512: DUP3
00001513: ADD
00001514: MSTORE
00001515: PUSH32 0x506173742065706f636800000000000000000000000000000000000000000000
00001536: PUSH1 0x44
00001538: DUP3
00001539: ADD
0000153a: MSTORE
0000153b: PUSH1 0x64
0000153d: ADD
0000153e: PUSH2 0x0871
00001541: JUMP
00001542: JUMPDEST
00001543: DUP2
00001544: PUSH1 0x67
00001546: DUP6
00001547: DUP6
00001548: PUSH1 0x40
0000154a: MLOAD
0000154b: PUSH2 0x1555
0000154e: SWAP3
0000154f: SWAP2
00001550: SWAP1
00001551: PUSH2 0x3b45
00001554: JUMP
00001555: JUMPDEST
00001556: SWAP1
00001557: DUP2
00001558: MSTORE
00001559: PUSH1 0x20
0000155b: ADD
0000155c: PUSH1 0x40
0000155e: MLOAD
0000155f: DUP1
00001560: SWAP2
00001561: SUB
00001562: SWAP1
00001563: KECCAK256
00001564: PUSH1 0x02
00001566: ADD
00001567: PUSH1 0x01
00001569: PUSH2 0x0100
0000156c: EXP
0000156d: DUP2
0000156e: SLOAD
0000156f: DUP2
00001570: PUSH8 0xffffffffffffffff
00001579: MUL
0000157a: NOT
0000157b: AND
0000157c: SWAP1
0000157d: DUP4
0000157e: PUSH8 0xffffffffffffffff
00001587: AND
00001588: MUL
00001589: OR
0000158a: SWAP1
0000158b: SSTORE
0000158c: POP
0000158d: DUP1
0000158e: PUSH1 0x67
00001590: DUP6
00001591: DUP6
00001592: PUSH1 0x40
00001594: MLOAD
00001595: PUSH2 0x159f
00001598: SWAP3
00001599: SWAP2
0000159a: SWAP1
0000159b: PUSH2 0x3b45
0000159e: JUMP
0000159f: JUMPDEST
000015a0: SWAP1
000015a1: DUP2
000015a2: MSTORE
000015a3: PUSH1 0x20
000015a5: ADD
000015a6: PUSH1 0x40
000015a8: MLOAD
000015a9: DUP1
000015aa: SWAP2
000015ab: SUB
000015ac: SWAP1
000015ad: KECCAK256
000015ae: PUSH1 0x03
000015b0: ADD
000015b1: PUSH1 0x10
000015b3: PUSH2 0x0100
000015b6: EXP
000015b7: DUP2
000015b8: SLOAD
000015b9: DUP2
000015ba: PUSH8 0xffffffffffffffff
000015c3: MUL
000015c4: NOT
000015c5: AND
000015c6: SWAP1
000015c7: DUP4
000015c8: PUSH8 0xffffffffffffffff
000015d1: AND
000015d2: MUL
000015d3: OR
000015d4: SWAP1
000015d5: SSTORE
000015d6: POP
000015d7: POP
000015d8: POP
000015d9: POP
000015da: POP
000015db: JUMP
000015dc: JUMPDEST
000015dd: PUSH2 0x15e4
000015e0: PUSH2 0x21ac
000015e3: JUMP
000015e4: JUMPDEST
000015e5: PUSH1 0x03
000015e7: PUSH2 0x15f0
000015ea: DUP5
000015eb: DUP5
000015ec: PUSH2 0x265e
000015ef: JUMP
000015f0: JUMPDEST
000015f1: PUSH1 0x05
000015f3: DUP2
000015f4: GT
000015f5: ISZERO
000015f6: PUSH2 0x1601
000015f9: JUMPI
000015fa: PUSH2 0x1601
000015fd: PUSH2 0x3595
00001600: JUMP
00001601: JUMPDEST
00001602: EQ
00001603: PUSH2 0x1646
00001606: JUMPI
00001607: PUSH1 0x40
00001609: MLOAD
0000160a: PUSH3 0x461bcd
0000160e: PUSH1 0xe5
00001610: SHL
00001611: DUP2
00001612: MSTORE
00001613: PUSH1 0x20
00001615: PUSH1 0x04
00001617: DUP3
00001618: ADD
00001619: MSTORE
0000161a: PUSH1 0x15
0000161c: PUSH1 0x24
0000161e: DUP3
0000161f: ADD
00001620: MSTORE
00001621: PUSH21 0x496e76616c6964206163636f756e74207374617465
00001637: PUSH1 0x58
00001639: SHL
0000163a: PUSH1 0x44
0000163c: DUP3
0000163d: ADD
0000163e: MSTORE
0000163f: PUSH1 0x64
00001641: ADD
00001642: PUSH2 0x0871
00001645: JUMP
00001646: JUMPDEST
00001647: DUP1
00001648: PUSH1 0x67
0000164a: DUP5
0000164b: DUP5
0000164c: PUSH1 0x40
0000164e: MLOAD
0000164f: PUSH2 0x1659
00001652: SWAP3
00001653: SWAP2
00001654: SWAP1
00001655: PUSH2 0x3b45
00001658: JUMP
00001659: JUMPDEST
0000165a: SWAP1
0000165b: DUP2
0000165c: MSTORE
0000165d: PUSH1 0x40
0000165f: MLOAD
00001660: SWAP1
00001661: DUP2
00001662: SWAP1
00001663: SUB
00001664: PUSH1 0x20
00001666: ADD
00001667: SWAP1
00001668: KECCAK256
00001669: PUSH2 0x1672
0000166c: DUP3
0000166d: DUP3
0000166e: PUSH2 0x3d35
00001671: JUMP
00001672: JUMPDEST
00001673: POP
00001674: POP
00001675: POP
00001676: POP
00001677: POP
00001678: JUMP
00001679: JUMPDEST
0000167a: PUSH2 0x1681
0000167d: PUSH2 0x21ac
00001680: JUMP
00001681: JUMPDEST
00001682: PUSH1 0x00
00001684: PUSH2 0x168d
00001687: DUP6
00001688: DUP6
00001689: PUSH2 0x265e
0000168c: JUMP
0000168d: JUMPDEST
0000168e: PUSH1 0x05
00001690: DUP2
00001691: GT
00001692: ISZERO
00001693: PUSH2 0x169e
00001696: JUMPI
00001697: PUSH2 0x169e
0000169a: PUSH2 0x3595
0000169d: JUMP
0000169e: JUMPDEST
0000169f: EQ
000016a0: PUSH2 0x16eb
000016a3: JUMPI
000016a4: PUSH1 0x40
000016a6: MLOAD
000016a7: PUSH3 0x461bcd
000016ab: PUSH1 0xe5
000016ad: SHL
000016ae: DUP2
000016af: MSTORE
000016b0: PUSH1 0x20
000016b2: PUSH1 0x04
000016b4: DUP3
000016b5: ADD
000016b6: MSTORE
000016b7: PUSH1 0x1b
000016b9: PUSH1 0x24
000016bb: DUP3
000016bc: ADD
000016bd: MSTORE
000016be: PUSH32 0x496e697469616c7320616c726561647920726567697374657265640000000000
000016df: PUSH1 0x44
000016e1: DUP3
000016e2: ADD
000016e3: MSTORE
000016e4: PUSH1 0x64
000016e6: ADD
000016e7: PUSH2 0x0871
000016ea: JUMP
000016eb: JUMPDEST
000016ec: PUSH1 0x30
000016ee: DUP4
000016ef: EQ
000016f0: PUSH2 0x173b
000016f3: JUMPI
000016f4: PUSH1 0x40
000016f6: MLOAD
000016f7: PUSH3 0x461bcd
000016fb: PUSH1 0xe5
000016fd: SHL
000016fe: DUP2
000016ff: MSTORE
00001700: PUSH1 0x20
00001702: PUSH1 0x04
00001704: DUP3
00001705: ADD
00001706: MSTORE
00001707: PUSH1 0x19
00001709: PUSH1 0x24
0000170b: DUP3
0000170c: ADD
0000170d: MSTORE
0000170e: PUSH32 0x496e76616c6964207075626c6963206b6579206c656e67746800000000000000
0000172f: PUSH1 0x44
00001731: DUP3
00001732: ADD
00001733: MSTORE
00001734: PUSH1 0x64
00001736: ADD
00001737: PUSH2 0x0871
0000173a: JUMP
0000173b: JUMPDEST
0000173c: PUSH1 0x60
0000173e: DUP2
0000173f: EQ
00001740: PUSH2 0x178b
00001743: JUMPI
00001744: PUSH1 0x40
00001746: MLOAD
00001747: PUSH3 0x461bcd
0000174b: PUSH1 0xe5
0000174d: SHL
0000174e: DUP2
0000174f: MSTORE
00001750: PUSH1 0x20
00001752: PUSH1 0x04
00001754: DUP3
00001755: ADD
00001756: MSTORE
00001757: PUSH1 0x1d
00001759: PUSH1 0x24
0000175b: DUP3
0000175c: ADD
0000175d: MSTORE
0000175e: PUSH32 0x5369676e6174757265206c656e67746820697320696e636f7272656374000000
0000177f: PUSH1 0x44
00001781: DUP3
00001782: ADD
00001783: MSTORE
00001784: PUSH1 0x64
00001786: ADD
00001787: PUSH2 0x0871
0000178a: JUMP
0000178b: JUMPDEST
0000178c: PUSH1 0x01
0000178e: PUSH1 0x01
00001790: PUSH1 0xa0
00001792: SHL
00001793: SUB
00001794: DUP6
00001795: AND
00001796: PUSH2 0x17e1
00001799: JUMPI
0000179a: PUSH1 0x40
0000179c: MLOAD
0000179d: PUSH3 0x461bcd
000017a1: PUSH1 0xe5
000017a3: SHL
000017a4: DUP2
000017a5: MSTORE
000017a6: PUSH1 0x20
000017a8: PUSH1 0x04
000017aa: DUP3
000017ab: ADD
000017ac: MSTORE
000017ad: PUSH1 0x18
000017af: PUSH1 0x24
000017b1: DUP3
000017b2: ADD
000017b3: MSTORE
000017b4: PUSH32 0x4465706f7369746f722063616e6e6f74206265207a65726f0000000000000000
000017d5: PUSH1 0x44
000017d7: DUP3
000017d8: ADD
000017d9: MSTORE
000017da: PUSH1 0x64
000017dc: ADD
000017dd: PUSH2 0x0871
000017e0: JUMP
000017e1: JUMPDEST
000017e2: PUSH2 0x17ed
000017e5: DUP5
000017e6: DUP5
000017e7: PUSH1 0x01
000017e9: PUSH2 0x24e6
000017ec: JUMP
000017ed: JUMPDEST
000017ee: PUSH2 0x181a
000017f1: PUSH1 0x40
000017f3: MLOAD
000017f4: DUP1
000017f5: PUSH1 0x60
000017f7: ADD
000017f8: PUSH1 0x40
000017fa: MSTORE
000017fb: DUP1
000017fc: PUSH1 0x00
000017fe: PUSH1 0x01
00001800: PUSH1 0x01
00001802: PUSH1 0xa0
00001804: SHL
00001805: SUB
00001806: AND
00001807: DUP2
00001808: MSTORE
00001809: PUSH1 0x20
0000180b: ADD
0000180c: PUSH1 0x60
0000180e: DUP2
0000180f: MSTORE
00001810: PUSH1 0x20
00001812: ADD
00001813: PUSH1 0x00
00001815: DUP2
00001816: MSTORE
00001817: POP
00001818: SWAP1
00001819: JUMP
0000181a: JUMPDEST
0000181b: PUSH1 0x01
0000181d: PUSH1 0x01
0000181f: PUSH1 0xa0
00001821: SHL
00001822: SUB
00001823: DUP7
00001824: AND
00001825: DUP2
00001826: MSTORE
00001827: PUSH1 0x40
00001829: DUP1
0000182a: MLOAD
0000182b: PUSH1 0x20
0000182d: PUSH1 0x1f
0000182f: DUP6
00001830: ADD
00001831: DUP2
00001832: SWAP1
00001833: DIV
00001834: DUP2
00001835: MUL
00001836: DUP3
00001837: ADD
00001838: DUP2
00001839: ADD
0000183a: SWAP1
0000183b: SWAP3
0000183c: MSTORE
0000183d: DUP4
0000183e: DUP2
0000183f: MSTORE
00001840: SWAP1
00001841: DUP5
00001842: SWAP1
00001843: DUP5
00001844: SWAP1
00001845: DUP2
00001846: SWAP1
00001847: DUP5
00001848: ADD
00001849: DUP4
0000184a: DUP3
0000184b: DUP1
0000184c: DUP3
0000184d: DUP5
0000184e: CALLDATACOPY
0000184f: PUSH1 0x00
00001851: SWAP3
00001852: ADD
00001853: SWAP2
00001854: SWAP1
00001855: SWAP2
00001856: MSTORE
00001857: POP
00001858: POP
00001859: POP
0000185a: POP
0000185b: PUSH1 0x20
0000185d: DUP3
0000185e: ADD
0000185f: MSTORE
00001860: PUSH1 0x6a
00001862: SLOAD
00001863: PUSH1 0x40
00001865: MLOAD
00001866: PUSH1 0x66
00001868: SWAP1
00001869: PUSH2 0x1875
0000186c: SWAP1
0000186d: DUP9
0000186e: SWAP1
0000186f: DUP9
00001870: SWAP1
00001871: PUSH2 0x3b45
00001874: JUMP
00001875: JUMPDEST
00001876: SWAP1
00001877: DUP2
00001878: MSTORE
00001879: PUSH1 0x20
0000187b: ADD
0000187c: PUSH1 0x40
0000187e: MLOAD
0000187f: DUP1
00001880: SWAP2
00001881: SUB
00001882: SWAP1
00001883: KECCAK256
00001884: DUP2
00001885: SWAP1
00001886: SSTORE
00001887: POP
00001888: PUSH32 0x48101f56073df6219b2e865aa98a671cc8a1c737aec309b6458e8f2dccc7eaa1
000018a9: DUP6
000018aa: DUP6
000018ab: PUSH1 0x40
000018ad: MLOAD
000018ae: PUSH2 0x18b8
000018b1: SWAP3
000018b2: SWAP2
000018b3: SWAP1
000018b4: PUSH2 0x3b31
000018b7: JUMP
000018b8: JUMPDEST
000018b9: PUSH1 0x40
000018bb: MLOAD
000018bc: DUP1
000018bd: SWAP2
000018be: SUB
000018bf: SWAP1
000018c0: LOG1
000018c1: PUSH1 0x6a
000018c3: DUP1
000018c4: SLOAD
000018c5: PUSH1 0x01
000018c7: DUP2
000018c8: ADD
000018c9: DUP3
000018ca: SSTORE
000018cb: PUSH1 0x00
000018cd: SWAP2
000018ce: SWAP1
000018cf: SWAP2
000018d0: MSTORE
000018d1: DUP2
000018d2: MLOAD
000018d3: PUSH32 0x116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51
000018f4: PUSH1 0x03
000018f6: SWAP1
000018f7: SWAP3
000018f8: MUL
000018f9: SWAP2
000018fa: DUP3
000018fb: ADD
000018fc: DUP1
000018fd: SLOAD
000018fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001913: NOT
00001914: AND
00001915: PUSH1 0x01
00001917: PUSH1 0x01
00001919: PUSH1 0xa0
0000191b: SHL
0000191c: SUB
0000191d: SWAP1
0000191e: SWAP3
0000191f: AND
00001920: SWAP2
00001921: SWAP1
00001922: SWAP2
00001923: OR
00001924: DUP2
00001925: SSTORE
00001926: PUSH1 0x20
00001928: DUP1
00001929: DUP5
0000192a: ADD
0000192b: MLOAD
0000192c: DUP1
0000192d: MLOAD
0000192e: DUP6
0000192f: SWAP5
00001930: PUSH2 0x195f
00001933: SWAP4
00001934: PUSH32 0x116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52
00001955: SWAP1
00001956: SWAP2
00001957: ADD
00001958: SWAP3
00001959: ADD
0000195a: SWAP1
0000195b: PUSH2 0x30a4
0000195e: JUMP
0000195f: JUMPDEST
00001960: POP
00001961: PUSH1 0x40
00001963: DUP3
00001964: ADD
00001965: MLOAD
00001966: DUP2
00001967: PUSH1 0x02
00001969: ADD
0000196a: SSTORE
0000196b: POP
0000196c: POP
0000196d: POP
0000196e: POP
0000196f: POP
00001970: POP
00001971: POP
00001972: POP
00001973: JUMP
00001974: JUMPDEST
00001975: PUSH2 0x19a1
00001978: PUSH1 0x40
0000197a: MLOAD
0000197b: DUP1
0000197c: PUSH1 0x60
0000197e: ADD
0000197f: PUSH1 0x40
00001981: MSTORE
00001982: DUP1
00001983: PUSH1 0x00
00001985: PUSH1 0x01
00001987: PUSH1 0x01
00001989: PUSH1 0xa0
0000198b: SHL
0000198c: SUB
0000198d: AND
0000198e: DUP2
0000198f: MSTORE
00001990: PUSH1 0x20
00001992: ADD
00001993: PUSH1 0x60
00001995: DUP2
00001996: MSTORE
00001997: PUSH1 0x20
00001999: ADD
0000199a: PUSH1 0x00
0000199c: DUP2
0000199d: MSTORE
0000199e: POP
0000199f: SWAP1
000019a0: JUMP
000019a1: JUMPDEST
000019a2: PUSH2 0x19ab
000019a5: DUP4
000019a6: DUP4
000019a7: PUSH2 0x269d
000019aa: JUMP
000019ab: JUMPDEST
000019ac: SWAP4
000019ad: SWAP3
000019ae: POP
000019af: POP
000019b0: POP
000019b1: JUMP
000019b2: JUMPDEST
000019b3: PUSH2 0x19ba
000019b6: PUSH2 0x21ac
000019b9: JUMP
000019ba: JUMPDEST
000019bb: PUSH2 0x099d
000019be: DUP3
000019bf: DUP3
000019c0: PUSH1 0x05
000019c2: PUSH2 0x24e6
000019c5: JUMP
000019c6: JUMPDEST
000019c7: PUSH2 0x19ce
000019ca: PUSH2 0x21ac
000019cd: JUMP
000019ce: JUMPDEST
000019cf: PUSH2 0x19d9
000019d2: DUP8
000019d3: DUP8
000019d4: DUP8
000019d5: PUSH2 0x22f4
000019d8: JUMP
000019d9: JUMPDEST
000019da: PUSH1 0x40
000019dc: DUP1
000019dd: MLOAD
000019de: PUSH1 0xa0
000019e0: PUSH1 0x20
000019e2: PUSH1 0x1f
000019e4: DUP10
000019e5: ADD
000019e6: DUP2
000019e7: SWAP1
000019e8: DIV
000019e9: MUL
000019ea: DUP3
000019eb: ADD
000019ec: DUP2
000019ed: ADD
000019ee: SWAP1
000019ef: SWAP3
000019f0: MSTORE
000019f1: PUSH1 0x80
000019f3: DUP2
000019f4: ADD
000019f5: DUP8
000019f6: DUP2
000019f7: MSTORE
000019f8: PUSH2 0x1a74
000019fb: SWAP3
000019fc: DUP3
000019fd: SWAP2
000019fe: SWAP1
000019ff: DUP11
00001a00: SWAP1
00001a01: DUP11
00001a02: SWAP1
00001a03: DUP2
00001a04: SWAP1
00001a05: DUP6
00001a06: ADD
00001a07: DUP4
00001a08: DUP3
00001a09: DUP1
00001a0a: DUP3
00001a0b: DUP5
00001a0c: CALLDATACOPY
00001a0d: PUSH1 0x00
00001a0f: SWAP3
00001a10: ADD
00001a11: SWAP2
00001a12: SWAP1
00001a13: SWAP2
00001a14: MSTORE
00001a15: POP
00001a16: POP
00001a17: POP
00001a18: SWAP1
00001a19: DUP3
00001a1a: MSTORE
00001a1b: POP
00001a1c: PUSH1 0x40
00001a1e: DUP1
00001a1f: MLOAD
00001a20: PUSH1 0x20
00001a22: PUSH1 0x1f
00001a24: DUP10
00001a25: ADD
00001a26: DUP2
00001a27: SWAP1
00001a28: DIV
00001a29: DUP2
00001a2a: MUL
00001a2b: DUP3
00001a2c: ADD
00001a2d: DUP2
00001a2e: ADD
00001a2f: SWAP1
00001a30: SWAP3
00001a31: MSTORE
00001a32: DUP8
00001a33: DUP2
00001a34: MSTORE
00001a35: SWAP2
00001a36: DUP2
00001a37: ADD
00001a38: SWAP2
00001a39: SWAP1
00001a3a: DUP9
00001a3b: SWAP1
00001a3c: DUP9
00001a3d: SWAP1
00001a3e: DUP2
00001a3f: SWAP1
00001a40: DUP5
00001a41: ADD
00001a42: DUP4
00001a43: DUP3
00001a44: DUP1
00001a45: DUP3
00001a46: DUP5
00001a47: CALLDATACOPY
00001a48: PUSH1 0x00
00001a4a: SWAP3
00001a4b: ADD
00001a4c: SWAP2
00001a4d: SWAP1
00001a4e: SWAP2
00001a4f: MSTORE
00001a50: POP
00001a51: POP
00001a52: POP
00001a53: SWAP1
00001a54: DUP3
00001a55: MSTORE
00001a56: POP
00001a57: PUSH1 0x01
00001a59: PUSH1 0x01
00001a5b: PUSH1 0xa0
00001a5d: SHL
00001a5e: SUB
00001a5f: DUP1
00001a60: DUP7
00001a61: AND
00001a62: PUSH1 0x20
00001a64: DUP4
00001a65: ADD
00001a66: MSTORE
00001a67: DUP11
00001a68: AND
00001a69: PUSH1 0x40
00001a6b: SWAP1
00001a6c: SWAP2
00001a6d: ADD
00001a6e: MSTORE
00001a6f: DUP3
00001a70: PUSH2 0x2bd3
00001a73: JUMP
00001a74: JUMPDEST
00001a75: PUSH2 0x1a80
00001a78: DUP7
00001a79: DUP7
00001a7a: PUSH1 0x03
00001a7c: PUSH2 0x24e6
00001a7f: JUMP
00001a80: JUMPDEST
00001a81: PUSH2 0x1a8a
00001a84: DUP7
00001a85: DUP7
00001a86: PUSH2 0x260b
00001a89: JUMP
00001a8a: JUMPDEST
00001a8b: PUSH1 0x40
00001a8d: MLOAD
00001a8e: PUSH4 0xa8ea23ff
00001a93: PUSH1 0xe0
00001a95: SHL
00001a96: DUP2
00001a97: MSTORE
00001a98: PUSH1 0x01
00001a9a: PUSH1 0x01
00001a9c: PUSH1 0xa0
00001a9e: SHL
00001a9f: SUB
00001aa0: DUP4
00001aa1: AND
00001aa2: SWAP1
00001aa3: PUSH4 0xa8ea23ff
00001aa8: SWAP1
00001aa9: PUSH2 0x1ab8
00001aac: SWAP1
00001aad: DUP10
00001aae: SWAP1
00001aaf: DUP10
00001ab0: SWAP1
00001ab1: PUSH1 0x04
00001ab3: ADD
00001ab4: PUSH2 0x3b31
00001ab7: JUMP
00001ab8: JUMPDEST
00001ab9: PUSH1 0x20
00001abb: PUSH1 0x40
00001abd: MLOAD
00001abe: DUP1
00001abf: DUP4
00001ac0: SUB
00001ac1: DUP2
00001ac2: DUP7
00001ac3: GAS
00001ac4: STATICCALL
00001ac5: ISZERO
00001ac6: DUP1
00001ac7: ISZERO
00001ac8: PUSH2 0x1ad5
00001acb: JUMPI
00001acc: RETURNDATASIZE
00001acd: PUSH1 0x00
00001acf: DUP1
00001ad0: RETURNDATACOPY
00001ad1: RETURNDATASIZE
00001ad2: PUSH1 0x00
00001ad4: REVERT
00001ad5: JUMPDEST
00001ad6: POP
00001ad7: POP
00001ad8: POP
00001ad9: POP
00001ada: PUSH1 0x40
00001adc: MLOAD
00001add: RETURNDATASIZE
00001ade: PUSH1 0x1f
00001ae0: NOT
00001ae1: PUSH1 0x1f
00001ae3: DUP3
00001ae4: ADD
00001ae5: AND
00001ae6: DUP3
00001ae7: ADD
00001ae8: DUP1
00001ae9: PUSH1 0x40
00001aeb: MSTORE
00001aec: POP
00001aed: DUP2
00001aee: ADD
00001aef: SWAP1
00001af0: PUSH2 0x1af9
00001af3: SWAP2
00001af4: SWAP1
00001af5: PUSH2 0x3ffa
00001af8: JUMP
00001af9: JUMPDEST
00001afa: PUSH2 0x1b2f
00001afd: JUMPI
00001afe: PUSH1 0x40
00001b00: MLOAD
00001b01: PUSH3 0x461bcd
00001b05: PUSH1 0xe5
00001b07: SHL
00001b08: DUP2
00001b09: MSTORE
00001b0a: PUSH1 0x20
00001b0c: PUSH1 0x04
00001b0e: DUP3
00001b0f: ADD
00001b10: MSTORE
00001b11: PUSH1 0x07
00001b13: PUSH1 0x24
00001b15: DUP3
00001b16: ADD
00001b17: MSTORE
00001b18: PUSH7 0x109b1bd8dad959
00001b20: PUSH1 0xca
00001b22: SHL
00001b23: PUSH1 0x44
00001b25: DUP3
00001b26: ADD
00001b27: MSTORE
00001b28: PUSH1 0x64
00001b2a: ADD
00001b2b: PUSH2 0x0871
00001b2e: JUMP
00001b2f: JUMPDEST
00001b30: PUSH32 0x706aa38e043f036ca1af4e8ca7df8eb89a0a5c556b3a472a15c582d2bbc48777
00001b51: DUP7
00001b52: DUP7
00001b53: PUSH1 0x40
00001b55: MLOAD
00001b56: PUSH2 0x1b60
00001b59: SWAP3
00001b5a: SWAP2
00001b5b: SWAP1
00001b5c: PUSH2 0x3b31
00001b5f: JUMP
00001b60: JUMPDEST
00001b61: PUSH1 0x40
00001b63: MLOAD
00001b64: DUP1
00001b65: SWAP2
00001b66: SUB
00001b67: SWAP1
00001b68: LOG1
00001b69: POP
00001b6a: POP
00001b6b: POP
00001b6c: POP
00001b6d: POP
00001b6e: POP
00001b6f: POP
00001b70: JUMP
00001b71: JUMPDEST
00001b72: PUSH2 0x1b79
00001b75: PUSH2 0x21ac
00001b78: JUMP
00001b79: JUMPDEST
00001b7a: PUSH2 0x1b84
00001b7d: DUP7
00001b7e: DUP7
00001b7f: DUP7
00001b80: PUSH2 0x22f4
00001b83: JUMP
00001b84: JUMPDEST
00001b85: PUSH2 0x1b92
00001b88: DUP6
00001b89: DUP6
00001b8a: DUP6
00001b8b: DUP10
00001b8c: DUP7
00001b8d: DUP7
00001b8e: PUSH2 0x2c66
00001b91: JUMP
00001b92: JUMPDEST
00001b93: PUSH2 0x1b9e
00001b96: DUP6
00001b97: DUP6
00001b98: PUSH1 0x03
00001b9a: PUSH2 0x24e6
00001b9d: JUMP
00001b9e: JUMPDEST
00001b9f: PUSH2 0x1ba8
00001ba2: DUP6
00001ba3: DUP6
00001ba4: PUSH2 0x260b
00001ba7: JUMP
00001ba8: JUMPDEST
00001ba9: PUSH1 0x40
00001bab: MLOAD
00001bac: PUSH4 0xa8ea23ff
00001bb1: PUSH1 0xe0
00001bb3: SHL
00001bb4: DUP2
00001bb5: MSTORE
00001bb6: PUSH1 0x01
00001bb8: PUSH1 0x01
00001bba: PUSH1 0xa0
00001bbc: SHL
00001bbd: SUB
00001bbe: DUP5
00001bbf: AND
00001bc0: SWAP1
00001bc1: PUSH4 0xa8ea23ff
00001bc6: SWAP1
00001bc7: PUSH2 0x1bd6
00001bca: SWAP1
00001bcb: DUP9
00001bcc: SWAP1
00001bcd: DUP9
00001bce: SWAP1
00001bcf: PUSH1 0x04
00001bd1: ADD
00001bd2: PUSH2 0x3b31
00001bd5: JUMP
00001bd6: JUMPDEST
00001bd7: PUSH1 0x20
00001bd9: PUSH1 0x40
00001bdb: MLOAD
00001bdc: DUP1
00001bdd: DUP4
00001bde: SUB
00001bdf: DUP2
00001be0: DUP7
00001be1: GAS
00001be2: STATICCALL
00001be3: ISZERO
00001be4: DUP1
00001be5: ISZERO
00001be6: PUSH2 0x1bf3
00001be9: JUMPI
00001bea: RETURNDATASIZE
00001beb: PUSH1 0x00
00001bed: DUP1
00001bee: RETURNDATACOPY
00001bef: RETURNDATASIZE
00001bf0: PUSH1 0x00
00001bf2: REVERT
00001bf3: JUMPDEST
00001bf4: POP
00001bf5: POP
00001bf6: POP
00001bf7: POP
00001bf8: PUSH1 0x40
00001bfa: MLOAD
00001bfb: RETURNDATASIZE
00001bfc: PUSH1 0x1f
00001bfe: NOT
00001bff: PUSH1 0x1f
00001c01: DUP3
00001c02: ADD
00001c03: AND
00001c04: DUP3
00001c05: ADD
00001c06: DUP1
00001c07: PUSH1 0x40
00001c09: MSTORE
00001c0a: POP
00001c0b: DUP2
00001c0c: ADD
00001c0d: SWAP1
00001c0e: PUSH2 0x1c17
00001c11: SWAP2
00001c12: SWAP1
00001c13: PUSH2 0x3ffa
00001c16: JUMP
00001c17: JUMPDEST
00001c18: PUSH2 0x1c4d
00001c1b: JUMPI
00001c1c: PUSH1 0x40
00001c1e: MLOAD
00001c1f: PUSH3 0x461bcd
00001c23: PUSH1 0xe5
00001c25: SHL
00001c26: DUP2
00001c27: MSTORE
00001c28: PUSH1 0x20
00001c2a: PUSH1 0x04
00001c2c: DUP3
00001c2d: ADD
00001c2e: MSTORE
00001c2f: PUSH1 0x07
00001c31: PUSH1 0x24
00001c33: DUP3
00001c34: ADD
00001c35: MSTORE
00001c36: PUSH7 0x109b1bd8dad959
00001c3e: PUSH1 0xca
00001c40: SHL
00001c41: PUSH1 0x44
00001c43: DUP3
00001c44: ADD
00001c45: MSTORE
00001c46: PUSH1 0x64
00001c48: ADD
00001c49: PUSH2 0x0871
00001c4c: JUMP
00001c4d: JUMPDEST
00001c4e: PUSH32 0xc8fec28ee118da10d390232a2230dda290e96c9735a09e2e41fa4235d871c2a1
00001c6f: DUP6
00001c70: DUP6
00001c71: PUSH1 0x40
00001c73: MLOAD
00001c74: PUSH2 0x1430
00001c77: SWAP3
00001c78: SWAP2
00001c79: SWAP1
00001c7a: PUSH2 0x3b31
00001c7d: JUMP
00001c7e: JUMPDEST
00001c7f: PUSH2 0x1cab
00001c82: PUSH1 0x40
00001c84: MLOAD
00001c85: DUP1
00001c86: PUSH1 0x60
00001c88: ADD
00001c89: PUSH1 0x40
00001c8b: MSTORE
00001c8c: DUP1
00001c8d: PUSH1 0x00
00001c8f: PUSH1 0x01
00001c91: PUSH1 0x01
00001c93: PUSH1 0xa0
00001c95: SHL
00001c96: SUB
00001c97: AND
00001c98: DUP2
00001c99: MSTORE
00001c9a: PUSH1 0x20
00001c9c: ADD
00001c9d: PUSH1 0x60
00001c9f: DUP2
00001ca0: MSTORE
00001ca1: PUSH1 0x20
00001ca3: ADD
00001ca4: PUSH1 0x00
00001ca6: DUP2
00001ca7: MSTORE
00001ca8: POP
00001ca9: SWAP1
00001caa: JUMP
00001cab: JUMPDEST
00001cac: PUSH1 0x6a
00001cae: SLOAD
00001caf: DUP3
00001cb0: LT
00001cb1: PUSH2 0x1d22
00001cb4: JUMPI
00001cb5: PUSH1 0x40
00001cb7: MLOAD
00001cb8: PUSH3 0x461bcd
00001cbc: PUSH1 0xe5
00001cbe: SHL
00001cbf: DUP2
00001cc0: MSTORE
00001cc1: PUSH1 0x20
00001cc3: PUSH1 0x04
00001cc5: DUP3
00001cc6: ADD
00001cc7: MSTORE
00001cc8: PUSH1 0x22
00001cca: PUSH1 0x24
00001ccc: DUP3
00001ccd: ADD
00001cce: MSTORE
00001ccf: PUSH32 0x54686520696e6465782072657175657374656420646f6573206e6f7420657869
00001cf0: PUSH1 0x44
00001cf2: DUP3
00001cf3: ADD
00001cf4: MSTORE
00001cf5: PUSH32 0x7374000000000000000000000000000000000000000000000000000000000000
00001d16: PUSH1 0x64
00001d18: DUP3
00001d19: ADD
00001d1a: MSTORE
00001d1b: PUSH1 0x84
00001d1d: ADD
00001d1e: PUSH2 0x0871
00001d21: JUMP
00001d22: JUMPDEST
00001d23: PUSH1 0x6a
00001d25: DUP3
00001d26: DUP2
00001d27: SLOAD
00001d28: DUP2
00001d29: LT
00001d2a: PUSH2 0x1d35
00001d2d: JUMPI
00001d2e: PUSH2 0x1d35
00001d31: PUSH2 0x4017
00001d34: JUMP
00001d35: JUMPDEST
00001d36: PUSH1 0x00
00001d38: SWAP2
00001d39: DUP3
00001d3a: MSTORE
00001d3b: PUSH1 0x20
00001d3d: SWAP2
00001d3e: DUP3
00001d3f: SWAP1
00001d40: KECCAK256
00001d41: PUSH1 0x40
00001d43: DUP1
00001d44: MLOAD
00001d45: PUSH1 0x60
00001d47: DUP2
00001d48: ADD
00001d49: SWAP1
00001d4a: SWAP2
00001d4b: MSTORE
00001d4c: PUSH1 0x03
00001d4e: SWAP1
00001d4f: SWAP3
00001d50: MUL
00001d51: ADD
00001d52: DUP1
00001d53: SLOAD
00001d54: PUSH1 0x01
00001d56: PUSH1 0x01
00001d58: PUSH1 0xa0
00001d5a: SHL
00001d5b: SUB
00001d5c: AND
00001d5d: DUP3
00001d5e: MSTORE
00001d5f: PUSH1 0x01
00001d61: DUP2
00001d62: ADD
00001d63: DUP1
00001d64: SLOAD
00001d65: SWAP3
00001d66: SWAP4
00001d67: SWAP2
00001d68: SWAP3
00001d69: SWAP2
00001d6a: DUP5
00001d6b: ADD
00001d6c: SWAP2
00001d6d: PUSH2 0x1d75
00001d70: SWAP1
00001d71: PUSH2 0x3b55
00001d74: JUMP
00001d75: JUMPDEST
00001d76: DUP1
00001d77: PUSH1 0x1f
00001d79: ADD
00001d7a: PUSH1 0x20
00001d7c: DUP1
00001d7d: SWAP2
00001d7e: DIV
00001d7f: MUL
00001d80: PUSH1 0x20
00001d82: ADD
00001d83: PUSH1 0x40
00001d85: MLOAD
00001d86: SWAP1
00001d87: DUP2
00001d88: ADD
00001d89: PUSH1 0x40
00001d8b: MSTORE
00001d8c: DUP1
00001d8d: SWAP3
00001d8e: SWAP2
00001d8f: SWAP1
00001d90: DUP2
00001d91: DUP2
00001d92: MSTORE
00001d93: PUSH1 0x20
00001d95: ADD
00001d96: DUP3
00001d97: DUP1
00001d98: SLOAD
00001d99: PUSH2 0x1da1
00001d9c: SWAP1
00001d9d: PUSH2 0x3b55
00001da0: JUMP
00001da1: JUMPDEST
00001da2: DUP1
00001da3: ISZERO
00001da4: PUSH2 0x1dee
00001da7: JUMPI
00001da8: DUP1
00001da9: PUSH1 0x1f
00001dab: LT
00001dac: PUSH2 0x1dc3
00001daf: JUMPI
00001db0: PUSH2 0x0100
00001db3: DUP1
00001db4: DUP4
00001db5: SLOAD
00001db6: DIV
00001db7: MUL
00001db8: DUP4
00001db9: MSTORE
00001dba: SWAP2
00001dbb: PUSH1 0x20
00001dbd: ADD
00001dbe: SWAP2
00001dbf: PUSH2 0x1dee
00001dc2: JUMP
00001dc3: JUMPDEST
00001dc4: DUP3
00001dc5: ADD
00001dc6: SWAP2
00001dc7: SWAP1
00001dc8: PUSH1 0x00
00001dca: MSTORE
00001dcb: PUSH1 0x20
00001dcd: PUSH1 0x00
00001dcf: KECCAK256
00001dd0: SWAP1
00001dd1: JUMPDEST
00001dd2: DUP2
00001dd3: SLOAD
00001dd4: DUP2
00001dd5: MSTORE
00001dd6: SWAP1
00001dd7: PUSH1 0x01
00001dd9: ADD
00001dda: SWAP1
00001ddb: PUSH1 0x20
00001ddd: ADD
00001dde: DUP1
00001ddf: DUP4
00001de0: GT
00001de1: PUSH2 0x1dd1
00001de4: JUMPI
00001de5: DUP3
00001de6: SWAP1
00001de7: SUB
00001de8: PUSH1 0x1f
00001dea: AND
00001deb: DUP3
00001dec: ADD
00001ded: SWAP2
00001dee: JUMPDEST
00001def: POP
00001df0: POP
00001df1: POP
00001df2: POP
00001df3: POP
00001df4: DUP2
00001df5: MSTORE
00001df6: PUSH1 0x20
00001df8: ADD
00001df9: PUSH1 0x02
00001dfb: DUP3
00001dfc: ADD
00001dfd: SLOAD
00001dfe: DUP2
00001dff: MSTORE
00001e00: POP
00001e01: POP
00001e02: SWAP1
00001e03: POP
00001e04: SWAP2
00001e05: SWAP1
00001e06: POP
00001e07: JUMP
00001e08: JUMPDEST
00001e09: PUSH2 0x1e10
00001e0c: PUSH2 0x21ac
00001e0f: JUMP
00001e10: JUMPDEST
00001e11: PUSH1 0x01
00001e13: PUSH2 0x1e1c
00001e16: DUP9
00001e17: DUP9
00001e18: PUSH2 0x265e
00001e1b: JUMP
00001e1c: JUMPDEST
00001e1d: PUSH1 0x05
00001e1f: DUP2
00001e20: GT
00001e21: ISZERO
00001e22: PUSH2 0x1e2d
00001e25: JUMPI
00001e26: PUSH2 0x1e2d
00001e29: PUSH2 0x3595
00001e2c: JUMP
00001e2d: JUMPDEST
00001e2e: EQ
00001e2f: PUSH2 0x1e7a
00001e32: JUMPI
00001e33: PUSH1 0x40
00001e35: MLOAD
00001e36: PUSH3 0x461bcd
00001e3a: PUSH1 0xe5
00001e3c: SHL
00001e3d: DUP2
00001e3e: MSTORE
00001e3f: PUSH1 0x20
00001e41: PUSH1 0x04
00001e43: DUP3
00001e44: ADD
00001e45: MSTORE
00001e46: PUSH1 0x17
00001e48: PUSH1 0x24
00001e4a: DUP3
00001e4b: ADD
00001e4c: MSTORE
00001e4d: PUSH32 0x496e697469616c73206e6f742072656769737465726564000000000000000000
00001e6e: PUSH1 0x44
00001e70: DUP3
00001e71: ADD
00001e72: MSTORE
00001e73: PUSH1 0x64
00001e75: ADD
00001e76: PUSH2 0x0871
00001e79: JUMP
00001e7a: JUMPDEST
00001e7b: PUSH2 0x1e86
00001e7e: DUP8
00001e7f: DUP8
00001e80: PUSH1 0x02
00001e82: PUSH2 0x24e6
00001e85: JUMP
00001e86: JUMPDEST
00001e87: PUSH1 0x00
00001e89: PUSH1 0x66
00001e8b: DUP9
00001e8c: DUP9
00001e8d: PUSH1 0x40
00001e8f: MLOAD
00001e90: PUSH2 0x1e9a
00001e93: SWAP3
00001e94: SWAP2
00001e95: SWAP1
00001e96: PUSH2 0x3b45
00001e99: JUMP
00001e9a: JUMPDEST
00001e9b: SWAP1
00001e9c: DUP2
00001e9d: MSTORE
00001e9e: PUSH1 0x20
00001ea0: ADD
00001ea1: PUSH1 0x40
00001ea3: MLOAD
00001ea4: DUP1
00001ea5: SWAP2
00001ea6: SUB
00001ea7: SWAP1
00001ea8: KECCAK256
00001ea9: SLOAD
00001eaa: SWAP1
00001eab: POP
00001eac: PUSH1 0x6a
00001eae: DUP2
00001eaf: DUP2
00001eb0: SLOAD
00001eb1: DUP2
00001eb2: LT
00001eb3: PUSH2 0x1ebe
00001eb6: JUMPI
00001eb7: PUSH2 0x1ebe
00001eba: PUSH2 0x4017
00001ebd: JUMP
00001ebe: JUMPDEST
00001ebf: PUSH1 0x00
00001ec1: SWAP2
00001ec2: DUP3
00001ec3: MSTORE
00001ec4: PUSH1 0x20
00001ec6: SWAP1
00001ec7: SWAP2
00001ec8: KECCAK256
00001ec9: PUSH1 0x03
00001ecb: SWAP1
00001ecc: SWAP2
00001ecd: MUL
00001ece: ADD
00001ecf: SLOAD
00001ed0: PUSH1 0x01
00001ed2: PUSH1 0x01
00001ed4: PUSH1 0xa0
00001ed6: SHL
00001ed7: SUB
00001ed8: DUP11
00001ed9: DUP2
00001eda: AND
00001edb: SWAP2
00001edc: AND
00001edd: EQ
00001ede: PUSH2 0x1f4f
00001ee1: JUMPI
00001ee2: PUSH1 0x40
00001ee4: MLOAD
00001ee5: PUSH3 0x461bcd
00001ee9: PUSH1 0xe5
00001eeb: SHL
00001eec: DUP2
00001eed: MSTORE
00001eee: PUSH1 0x20
00001ef0: PUSH1 0x04
00001ef2: DUP3
00001ef3: ADD
00001ef4: MSTORE
00001ef5: PUSH1 0x21
00001ef7: PUSH1 0x24
00001ef9: DUP3
00001efa: ADD
00001efb: MSTORE
00001efc: PUSH32 0x5072652d72656769737465726564206465706f7369746f72206d69736d617463
00001f1d: PUSH1 0x44
00001f1f: DUP3
00001f20: ADD
00001f21: MSTORE
00001f22: PUSH32 0x6800000000000000000000000000000000000000000000000000000000000000
00001f43: PUSH1 0x64
00001f45: DUP3
00001f46: ADD
00001f47: MSTORE
00001f48: PUSH1 0x84
00001f4a: ADD
00001f4b: PUSH2 0x0871
00001f4e: JUMP
00001f4f: JUMPDEST
00001f50: NUMBER
00001f51: PUSH1 0x6a
00001f53: DUP3
00001f54: DUP2
00001f55: SLOAD
00001f56: DUP2
00001f57: LT
00001f58: PUSH2 0x1f63
00001f5b: JUMPI
00001f5c: PUSH2 0x1f63
00001f5f: PUSH2 0x4017
00001f62: JUMP
00001f63: JUMPDEST
00001f64: SWAP1
00001f65: PUSH1 0x00
00001f67: MSTORE
00001f68: PUSH1 0x20
00001f6a: PUSH1 0x00
00001f6c: KECCAK256
00001f6d: SWAP1
00001f6e: PUSH1 0x03
00001f70: MUL
00001f71: ADD
00001f72: PUSH1 0x02
00001f74: ADD
00001f75: DUP2
00001f76: SWAP1
00001f77: SSTORE
00001f78: POP
00001f79: DUP2
00001f7a: PUSH32 0xad41c325015736b22376f621bbbef62836bd65c8db5dfdb0c4483f43d33ef0dd
00001f9b: DUP10
00001f9c: DUP10
00001f9d: DUP10
00001f9e: DUP10
00001f9f: DUP10
00001fa0: DUP10
00001fa1: PUSH1 0x40
00001fa3: MLOAD
00001fa4: PUSH2 0x1fb2
00001fa7: SWAP7
00001fa8: SWAP6
00001fa9: SWAP5
00001faa: SWAP4
00001fab: SWAP3
00001fac: SWAP2
00001fad: SWAP1
00001fae: PUSH2 0x402d
00001fb1: JUMP
00001fb2: JUMPDEST
00001fb3: PUSH1 0x40
00001fb5: MLOAD
00001fb6: DUP1
00001fb7: SWAP2
00001fb8: SUB
00001fb9: SWAP1
00001fba: LOG2
00001fbb: POP
00001fbc: POP
00001fbd: POP
00001fbe: POP
00001fbf: POP
00001fc0: POP
00001fc1: POP
00001fc2: POP
00001fc3: POP
00001fc4: JUMP
00001fc5: JUMPDEST
00001fc6: PUSH1 0x00
00001fc8: PUSH1 0x03
00001fca: PUSH2 0x07a7
00001fcd: JUMP
00001fce: JUMPDEST
00001fcf: PUSH1 0x00
00001fd1: PUSH2 0x1fda
00001fd4: DUP4
00001fd5: DUP4
00001fd6: PUSH2 0x269d
00001fd9: JUMP
00001fda: JUMPDEST
00001fdb: PUSH1 0x40
00001fdd: ADD
00001fde: MLOAD
00001fdf: SWAP4
00001fe0: SWAP3
00001fe1: POP
00001fe2: POP
00001fe3: POP
00001fe4: JUMP
00001fe5: JUMPDEST
00001fe6: PUSH1 0x6a
00001fe8: DUP2
00001fe9: DUP2
00001fea: SLOAD
00001feb: DUP2
00001fec: LT
00001fed: PUSH2 0x1ff5
00001ff0: JUMPI
00001ff1: PUSH1 0x00
00001ff3: DUP1
00001ff4: REVERT
00001ff5: JUMPDEST
00001ff6: PUSH1 0x00
00001ff8: SWAP2
00001ff9: DUP3
00001ffa: MSTORE
00001ffb: PUSH1 0x20
00001ffd: SWAP1
00001ffe: SWAP2
00001fff: KECCAK256
00002000: PUSH1 0x03
00002002: SWAP1
00002003: SWAP2
00002004: MUL
00002005: ADD
00002006: DUP1
00002007: SLOAD
00002008: PUSH1 0x01
0000200a: DUP3
0000200b: ADD
0000200c: DUP1
0000200d: SLOAD
0000200e: PUSH1 0x01
00002010: PUSH1 0x01
00002012: PUSH1 0xa0
00002014: SHL
00002015: SUB
00002016: SWAP1
00002017: SWAP3
00002018: AND
00002019: SWAP4
0000201a: POP
0000201b: SWAP1
0000201c: PUSH2 0x2024
0000201f: SWAP1
00002020: PUSH2 0x3b55
00002023: JUMP
00002024: JUMPDEST
00002025: DUP1
00002026: PUSH1 0x1f
00002028: ADD
00002029: PUSH1 0x20
0000202b: DUP1
0000202c: SWAP2
0000202d: DIV
0000202e: MUL
0000202f: PUSH1 0x20
00002031: ADD
00002032: PUSH1 0x40
00002034: MLOAD
00002035: SWAP1
00002036: DUP2
00002037: ADD
00002038: PUSH1 0x40
0000203a: MSTORE
0000203b: DUP1
0000203c: SWAP3
0000203d: SWAP2
0000203e: SWAP1
0000203f: DUP2
00002040: DUP2
00002041: MSTORE
00002042: PUSH1 0x20
00002044: ADD
00002045: DUP3
00002046: DUP1
00002047: SLOAD
00002048: PUSH2 0x2050
0000204b: SWAP1
0000204c: PUSH2 0x3b55
0000204f: JUMP
00002050: JUMPDEST
00002051: DUP1
00002052: ISZERO
00002053: PUSH2 0x209d
00002056: JUMPI
00002057: DUP1
00002058: PUSH1 0x1f
0000205a: LT
0000205b: PUSH2 0x2072
0000205e: JUMPI
0000205f: PUSH2 0x0100
00002062: DUP1
00002063: DUP4
00002064: SLOAD
00002065: DIV
00002066: MUL
00002067: DUP4
00002068: MSTORE
00002069: SWAP2
0000206a: PUSH1 0x20
0000206c: ADD
0000206d: SWAP2
0000206e: PUSH2 0x209d
00002071: JUMP
00002072: JUMPDEST
00002073: DUP3
00002074: ADD
00002075: SWAP2
00002076: SWAP1
00002077: PUSH1 0x00
00002079: MSTORE
0000207a: PUSH1 0x20
0000207c: PUSH1 0x00
0000207e: KECCAK256
0000207f: SWAP1
00002080: JUMPDEST
00002081: DUP2
00002082: SLOAD
00002083: DUP2
00002084: MSTORE
00002085: SWAP1
00002086: PUSH1 0x01
00002088: ADD
00002089: SWAP1
0000208a: PUSH1 0x20
0000208c: ADD
0000208d: DUP1
0000208e: DUP4
0000208f: GT
00002090: PUSH2 0x2080
00002093: JUMPI
00002094: DUP3
00002095: SWAP1
00002096: SUB
00002097: PUSH1 0x1f
00002099: AND
0000209a: DUP3
0000209b: ADD
0000209c: SWAP2
0000209d: JUMPDEST
0000209e: POP
0000209f: POP
000020a0: POP
000020a1: POP
000020a2: POP
000020a3: SWAP1
000020a4: DUP1
000020a5: PUSH1 0x02
000020a7: ADD
000020a8: SLOAD
000020a9: SWAP1
000020aa: POP
000020ab: DUP4
000020ac: JUMP
000020ad: JUMPDEST
000020ae: PUSH2 0x20b5
000020b1: PUSH2 0x21ac
000020b4: JUMP
000020b5: JUMPDEST
000020b6: PUSH2 0x099d
000020b9: DUP3
000020ba: DUP3
000020bb: PUSH1 0x04
000020bd: PUSH2 0x24e6
000020c0: JUMP
000020c1: JUMPDEST
000020c2: PUSH2 0x20c9
000020c5: PUSH2 0x21ac
000020c8: JUMP
000020c9: JUMPDEST
000020ca: PUSH1 0x65
000020cc: PUSH1 0x00
000020ce: SWAP1
000020cf: SLOAD
000020d0: SWAP1
000020d1: PUSH2 0x0100
000020d4: EXP
000020d5: SWAP1
000020d6: DIV
000020d7: PUSH1 0x01
000020d9: PUSH1 0x01
000020db: PUSH1 0xa0
000020dd: SHL
000020de: SUB
000020df: AND
000020e0: PUSH1 0x01
000020e2: PUSH1 0x01
000020e4: PUSH1 0xa0
000020e6: SHL
000020e7: SUB
000020e8: AND
000020e9: PUSH4 0x85df41de
000020ee: PUSH1 0x40
000020f0: MLOAD
000020f1: DUP2
000020f2: PUSH4 0xffffffff
000020f7: AND
000020f8: PUSH1 0xe0
000020fa: SHL
000020fb: DUP2
000020fc: MSTORE
000020fd: PUSH1 0x04
000020ff: ADD
00002100: PUSH1 0x20
00002102: PUSH1 0x40
00002104: MLOAD
00002105: DUP1
00002106: DUP4
00002107: SUB
00002108: DUP2
00002109: DUP7
0000210a: GAS
0000210b: STATICCALL
0000210c: ISZERO
0000210d: DUP1
0000210e: ISZERO
0000210f: PUSH2 0x211c
00002112: JUMPI
00002113: RETURNDATASIZE
00002114: PUSH1 0x00
00002116: DUP1
00002117: RETURNDATACOPY
00002118: RETURNDATASIZE
00002119: PUSH1 0x00
0000211b: REVERT
0000211c: JUMPDEST
0000211d: POP
0000211e: POP
0000211f: POP
00002120: POP
00002121: PUSH1 0x40
00002123: MLOAD
00002124: RETURNDATASIZE
00002125: PUSH1 0x1f
00002127: NOT
00002128: PUSH1 0x1f
0000212a: DUP3
0000212b: ADD
0000212c: AND
0000212d: DUP3
0000212e: ADD
0000212f: DUP1
00002130: PUSH1 0x40
00002132: MSTORE
00002133: POP
00002134: DUP2
00002135: ADD
00002136: SWAP1
00002137: PUSH2 0x2140
0000213a: SWAP2
0000213b: SWAP1
0000213c: PUSH2 0x4076
0000213f: JUMP
00002140: JUMPDEST
00002141: PUSH1 0x01
00002143: PUSH1 0x01
00002145: PUSH1 0xa0
00002147: SHL
00002148: SUB
00002149: AND
0000214a: PUSH4 0xa0d4e8e0
0000214f: DUP5
00002150: DUP5
00002151: DUP5
00002152: PUSH1 0x40
00002154: MLOAD
00002155: DUP5
00002156: PUSH4 0xffffffff
0000215b: AND
0000215c: PUSH1 0xe0
0000215e: SHL
0000215f: DUP2
00002160: MSTORE
00002161: PUSH1 0x04
00002163: ADD
00002164: PUSH2 0x216f
00002167: SWAP4
00002168: SWAP3
00002169: SWAP2
0000216a: SWAP1
0000216b: PUSH2 0x4093
0000216e: JUMP
0000216f: JUMPDEST
00002170: PUSH1 0x00
00002172: PUSH1 0x40
00002174: MLOAD
00002175: DUP1
00002176: DUP4
00002177: SUB
00002178: DUP2
00002179: PUSH1 0x00
0000217b: DUP8
0000217c: DUP1
0000217d: EXTCODESIZE
0000217e: ISZERO
0000217f: DUP1
00002180: ISZERO
00002181: PUSH2 0x2189
00002184: JUMPI
00002185: PUSH1 0x00
00002187: DUP1
00002188: REVERT
00002189: JUMPDEST
0000218a: POP
0000218b: GAS
0000218c: CALL
0000218d: ISZERO
0000218e: DUP1
0000218f: ISZERO
00002190: PUSH2 0x219d
00002193: JUMPI
00002194: RETURNDATASIZE
00002195: PUSH1 0x00
00002197: DUP1
00002198: RETURNDATACOPY
00002199: RETURNDATASIZE
0000219a: PUSH1 0x00
0000219c: REVERT
0000219d: JUMPDEST
0000219e: POP
0000219f: POP
000021a0: POP
000021a1: POP
000021a2: POP
000021a3: POP
000021a4: POP
000021a5: JUMP
000021a6: JUMPDEST
000021a7: EXTCODESIZE
000021a8: ISZERO
000021a9: ISZERO
000021aa: SWAP1
000021ab: JUMP
000021ac: JUMPDEST
000021ad: PUSH1 0x65
000021af: PUSH1 0x00
000021b1: SWAP1
000021b2: SLOAD
000021b3: SWAP1
000021b4: PUSH2 0x0100
000021b7: EXP
000021b8: SWAP1
000021b9: DIV
000021ba: PUSH1 0x01
000021bc: PUSH1 0x01
000021be: PUSH1 0xa0
000021c0: SHL
000021c1: SUB
000021c2: AND
000021c3: PUSH1 0x01
000021c5: PUSH1 0x01
000021c7: PUSH1 0xa0
000021c9: SHL
000021ca: SUB
000021cb: AND
000021cc: PUSH4 0x748365ef
000021d1: PUSH1 0x40
000021d3: MLOAD
000021d4: DUP2
000021d5: PUSH4 0xffffffff
000021da: AND
000021db: PUSH1 0xe0
000021dd: SHL
000021de: DUP2
000021df: MSTORE
000021e0: PUSH1 0x04
000021e2: ADD
000021e3: PUSH1 0x20
000021e5: PUSH1 0x40
000021e7: MLOAD
000021e8: DUP1
000021e9: DUP4
000021ea: SUB
000021eb: DUP2
000021ec: DUP7
000021ed: GAS
000021ee: STATICCALL
000021ef: ISZERO
000021f0: DUP1
000021f1: ISZERO
000021f2: PUSH2 0x21ff
000021f5: JUMPI
000021f6: RETURNDATASIZE
000021f7: PUSH1 0x00
000021f9: DUP1
000021fa: RETURNDATACOPY
000021fb: RETURNDATASIZE
000021fc: PUSH1 0x00
000021fe: REVERT
000021ff: JUMPDEST
00002200: POP
00002201: POP
00002202: POP
00002203: POP
00002204: PUSH1 0x40
00002206: MLOAD
00002207: RETURNDATASIZE
00002208: PUSH1 0x1f
0000220a: NOT
0000220b: PUSH1 0x1f
0000220d: DUP3
0000220e: ADD
0000220f: AND
00002210: DUP3
00002211: ADD
00002212: DUP1
00002213: PUSH1 0x40
00002215: MSTORE
00002216: POP
00002217: DUP2
00002218: ADD
00002219: SWAP1
0000221a: PUSH2 0x2223
0000221d: SWAP2
0000221e: SWAP1
0000221f: PUSH2 0x4076
00002222: JUMP
00002223: JUMPDEST
00002224: PUSH1 0x40
00002226: MLOAD
00002227: PUSH32 0x18dc032500000000000000000000000000000000000000000000000000000000
00002248: DUP2
00002249: MSTORE
0000224a: CALLER
0000224b: PUSH1 0x04
0000224d: DUP3
0000224e: ADD
0000224f: MSTORE
00002250: PUSH1 0x01
00002252: PUSH1 0x01
00002254: PUSH1 0xa0
00002256: SHL
00002257: SUB
00002258: SWAP2
00002259: SWAP1
0000225a: SWAP2
0000225b: AND
0000225c: SWAP1
0000225d: PUSH4 0x18dc0325
00002262: SWAP1
00002263: PUSH1 0x24
00002265: ADD
00002266: PUSH1 0x20
00002268: PUSH1 0x40
0000226a: MLOAD
0000226b: DUP1
0000226c: DUP4
0000226d: SUB
0000226e: DUP2
0000226f: DUP7
00002270: GAS
00002271: STATICCALL
00002272: ISZERO
00002273: DUP1
00002274: ISZERO
00002275: PUSH2 0x2282
00002278: JUMPI
00002279: RETURNDATASIZE
0000227a: PUSH1 0x00
0000227c: DUP1
0000227d: RETURNDATACOPY
0000227e: RETURNDATASIZE
0000227f: PUSH1 0x00
00002281: REVERT
00002282: JUMPDEST
00002283: POP
00002284: POP
00002285: POP
00002286: POP
00002287: PUSH1 0x40
00002289: MLOAD
0000228a: RETURNDATASIZE
0000228b: PUSH1 0x1f
0000228d: NOT
0000228e: PUSH1 0x1f
00002290: DUP3
00002291: ADD
00002292: AND
00002293: DUP3
00002294: ADD
00002295: DUP1
00002296: PUSH1 0x40
00002298: MSTORE
00002299: POP
0000229a: DUP2
0000229b: ADD
0000229c: SWAP1
0000229d: PUSH2 0x22a6
000022a0: SWAP2
000022a1: SWAP1
000022a2: PUSH2 0x3ffa
000022a5: JUMP
000022a6: JUMPDEST
000022a7: PUSH2 0x22f2
000022aa: JUMPI
000022ab: PUSH1 0x40
000022ad: MLOAD
000022ae: PUSH3 0x461bcd
000022b2: PUSH1 0xe5
000022b4: SHL
000022b5: DUP2
000022b6: MSTORE
000022b7: PUSH1 0x20
000022b9: PUSH1 0x04
000022bb: DUP3
000022bc: ADD
000022bd: MSTORE
000022be: PUSH1 0x09
000022c0: PUSH1 0x24
000022c2: DUP3
000022c3: ADD
000022c4: MSTORE
000022c5: PUSH32 0x4f6e6c7920636f72650000000000000000000000000000000000000000000000
000022e6: PUSH1 0x44
000022e8: DUP3
000022e9: ADD
000022ea: MSTORE
000022eb: PUSH1 0x64
000022ed: ADD
000022ee: PUSH2 0x0871
000022f1: JUMP
000022f2: JUMPDEST
000022f3: JUMP
000022f4: JUMPDEST
000022f5: PUSH1 0x02
000022f7: PUSH2 0x2300
000022fa: DUP4
000022fb: DUP4
000022fc: PUSH2 0x265e
000022ff: JUMP
00002300: JUMPDEST
00002301: PUSH1 0x05
00002303: DUP2
00002304: GT
00002305: ISZERO
00002306: PUSH2 0x2311
00002309: JUMPI
0000230a: PUSH2 0x2311
0000230d: PUSH2 0x3595
00002310: JUMP
00002311: JUMPDEST
00002312: EQ
00002313: PUSH2 0x235e
00002316: JUMPI
00002317: PUSH1 0x40
00002319: MLOAD
0000231a: PUSH3 0x461bcd
0000231e: PUSH1 0xe5
00002320: SHL
00002321: DUP2
00002322: MSTORE
00002323: PUSH1 0x20
00002325: PUSH1 0x04
00002327: DUP3
00002328: ADD
00002329: MSTORE
0000232a: PUSH1 0x15
0000232c: PUSH1 0x24
0000232e: DUP3
0000232f: ADD
00002330: MSTORE
00002331: PUSH32 0x4465706f736974206e6f7420636f6d706c657465640000000000000000000000
00002352: PUSH1 0x44
00002354: DUP3
00002355: ADD
00002356: MSTORE
00002357: PUSH1 0x64
00002359: ADD
0000235a: PUSH2 0x0871
0000235d: JUMP
0000235e: JUMPDEST
0000235f: PUSH2 0x2368
00002362: DUP3
00002363: DUP3
00002364: PUSH2 0x2cf3
00002367: JUMP
00002368: JUMPDEST
00002369: PUSH2 0x23da
0000236c: JUMPI
0000236d: PUSH1 0x40
0000236f: MLOAD
00002370: PUSH3 0x461bcd
00002374: PUSH1 0xe5
00002376: SHL
00002377: DUP2
00002378: MSTORE
00002379: PUSH1 0x20
0000237b: PUSH1 0x04
0000237d: DUP3
0000237e: ADD
0000237f: MSTORE
00002380: PUSH1 0x2c
00002382: PUSH1 0x24
00002384: DUP3
00002385: ADD
00002386: MSTORE
00002387: PUSH32 0x53756666696369656e7420626c6f636b73206d7573742070617373206265666f
000023a8: PUSH1 0x44
000023aa: DUP3
000023ab: ADD
000023ac: MSTORE
000023ad: PUSH32 0x72652073747265616d696e670000000000000000000000000000000000000000
000023ce: PUSH1 0x64
000023d0: DUP3
000023d1: ADD
000023d2: MSTORE
000023d3: PUSH1 0x84
000023d5: ADD
000023d6: PUSH2 0x0871
000023d9: JUMP
000023da: JUMPDEST
000023db: PUSH2 0x23e4
000023de: DUP3
000023df: DUP3
000023e0: PUSH2 0x269d
000023e3: JUMP
000023e4: JUMPDEST
000023e5: MLOAD
000023e6: PUSH1 0x01
000023e8: PUSH1 0x01
000023ea: PUSH1 0xa0
000023ec: SHL
000023ed: SUB
000023ee: DUP5
000023ef: DUP2
000023f0: AND
000023f1: SWAP2
000023f2: AND
000023f3: EQ
000023f4: PUSH2 0x243f
000023f7: JUMPI
000023f8: PUSH1 0x40
000023fa: MLOAD
000023fb: PUSH3 0x461bcd
000023ff: PUSH1 0xe5
00002401: SHL
00002402: DUP2
00002403: MSTORE
00002404: PUSH1 0x20
00002406: PUSH1 0x04
00002408: DUP3
00002409: ADD
0000240a: MSTORE
0000240b: PUSH1 0x0e
0000240d: PUSH1 0x24
0000240f: DUP3
00002410: ADD
00002411: MSTORE
00002412: PUSH32 0x4f6e6c79206465706f7369746f72000000000000000000000000000000000000
00002433: PUSH1 0x44
00002435: DUP3
00002436: ADD
00002437: MSTORE
00002438: PUSH1 0x64
0000243a: ADD
0000243b: PUSH2 0x0871
0000243e: JUMP
0000243f: JUMPDEST
00002440: POP
00002441: POP
00002442: POP
00002443: JUMP
00002444: JUMPDEST
00002445: PUSH1 0x65
00002447: SLOAD
00002448: PUSH1 0x40
0000244a: MLOAD
0000244b: PUSH32 0x2e5ffb0f00000000000000000000000000000000000000000000000000000000
0000246c: DUP2
0000246d: MSTORE
0000246e: PUSH1 0x00
00002470: SWAP2
00002471: PUSH1 0x01
00002473: PUSH1 0x01
00002475: PUSH1 0xa0
00002477: SHL
00002478: SUB
00002479: AND
0000247a: SWAP1
0000247b: PUSH4 0x2e5ffb0f
00002480: SWAP1
00002481: PUSH2 0x2498
00002484: SWAP1
00002485: DUP11
00002486: SWAP1
00002487: DUP9
00002488: SWAP1
00002489: DUP9
0000248a: SWAP1
0000248b: DUP13
0000248c: SWAP1
0000248d: DUP13
0000248e: SWAP1
0000248f: DUP11
00002490: SWAP1
00002491: PUSH1 0x04
00002493: ADD
00002494: PUSH2 0x40b6
00002497: JUMP
00002498: JUMPDEST
00002499: PUSH1 0x20
0000249b: PUSH1 0x40
0000249d: MLOAD
0000249e: DUP1
0000249f: DUP4
000024a0: SUB
000024a1: DUP2
000024a2: PUSH1 0x00
000024a4: DUP8
000024a5: GAS
000024a6: CALL
000024a7: ISZERO
000024a8: DUP1
000024a9: ISZERO
000024aa: PUSH2 0x24b7
000024ad: JUMPI
000024ae: RETURNDATASIZE
000024af: PUSH1 0x00
000024b1: DUP1
000024b2: RETURNDATACOPY
000024b3: RETURNDATASIZE
000024b4: PUSH1 0x00
000024b6: REVERT
000024b7: JUMPDEST
000024b8: POP
000024b9: POP
000024ba: POP
000024bb: POP
000024bc: PUSH1 0x40
000024be: MLOAD
000024bf: RETURNDATASIZE
000024c0: PUSH1 0x1f
000024c2: NOT
000024c3: PUSH1 0x1f
000024c5: DUP3
000024c6: ADD
000024c7: AND
000024c8: DUP3
000024c9: ADD
000024ca: DUP1
000024cb: PUSH1 0x40
000024cd: MSTORE
000024ce: POP
000024cf: DUP2
000024d0: ADD
000024d1: SWAP1
000024d2: PUSH2 0x24db
000024d5: SWAP2
000024d6: SWAP1
000024d7: PUSH2 0x4076
000024da: JUMP
000024db: JUMPDEST
000024dc: SWAP8
000024dd: SWAP7
000024de: POP
000024df: POP
000024e0: POP
000024e1: POP
000024e2: POP
000024e3: POP
000024e4: POP
000024e5: JUMP
000024e6: JUMPDEST
000024e7: PUSH1 0x05
000024e9: DUP2
000024ea: PUSH1 0x05
000024ec: DUP2
000024ed: GT
000024ee: ISZERO
000024ef: PUSH2 0x24fa
000024f2: JUMPI
000024f3: PUSH2 0x24fa
000024f6: PUSH2 0x3595
000024f9: JUMP
000024fa: JUMPDEST
000024fb: GT
000024fc: ISZERO
000024fd: PUSH2 0x2548
00002500: JUMPI
00002501: PUSH1 0x40
00002503: MLOAD
00002504: PUSH3 0x461bcd
00002508: PUSH1 0xe5
0000250a: SHL
0000250b: DUP2
0000250c: MSTORE
0000250d: PUSH1 0x20
0000250f: PUSH1 0x04
00002511: DUP3
00002512: ADD
00002513: MSTORE
00002514: PUSH1 0x13
00002516: PUSH1 0x24
00002518: DUP3
00002519: ADD
0000251a: MSTORE
0000251b: PUSH32 0x537461747573206f7574206f662072616e676500000000000000000000000000
0000253c: PUSH1 0x44
0000253e: DUP3
0000253f: ADD
00002540: MSTORE
00002541: PUSH1 0x64
00002543: ADD
00002544: PUSH2 0x0871
00002547: JUMP
00002548: JUMPDEST
00002549: PUSH2 0x2552
0000254c: DUP4
0000254d: DUP4
0000254e: PUSH2 0x265e
00002551: JUMP
00002552: JUMPDEST
00002553: PUSH1 0x05
00002555: DUP2
00002556: GT
00002557: ISZERO
00002558: PUSH2 0x2563
0000255b: JUMPI
0000255c: PUSH2 0x2563
0000255f: PUSH2 0x3595
00002562: JUMP
00002563: JUMPDEST
00002564: PUSH1 0x01
00002566: ADD
00002567: DUP2
00002568: PUSH1 0x05
0000256a: DUP2
0000256b: GT
0000256c: ISZERO
0000256d: PUSH2 0x2578
00002570: JUMPI
00002571: PUSH2 0x2578
00002574: PUSH2 0x3595
00002577: JUMP
00002578: JUMPDEST
00002579: EQ
0000257a: PUSH2 0x25c5
0000257d: JUMPI
0000257e: PUSH1 0x40
00002580: MLOAD
00002581: PUSH3 0x461bcd
00002585: PUSH1 0xe5
00002587: SHL
00002588: DUP2
00002589: MSTORE
0000258a: PUSH1 0x20
0000258c: PUSH1 0x04
0000258e: DUP3
0000258f: ADD
00002590: MSTORE
00002591: PUSH1 0x17
00002593: PUSH1 0x24
00002595: DUP3
00002596: ADD
00002597: MSTORE
00002598: PUSH32 0x5374617475732063616e206e6f74206465637265617365000000000000000000
000025b9: PUSH1 0x44
000025bb: DUP3
000025bc: ADD
000025bd: MSTORE
000025be: PUSH1 0x64
000025c0: ADD
000025c1: PUSH2 0x0871
000025c4: JUMP
000025c5: JUMPDEST
000025c6: DUP1
000025c7: PUSH1 0x68
000025c9: DUP5
000025ca: DUP5
000025cb: PUSH1 0x40
000025cd: MLOAD
000025ce: PUSH2 0x25d8
000025d1: SWAP3
000025d2: SWAP2
000025d3: SWAP1
000025d4: PUSH2 0x3b45
000025d7: JUMP
000025d8: JUMPDEST
000025d9: SWAP1
000025da: DUP2
000025db: MSTORE
000025dc: PUSH1 0x40
000025de: MLOAD
000025df: SWAP1
000025e0: DUP2
000025e1: SWAP1
000025e2: SUB
000025e3: PUSH1 0x20
000025e5: ADD
000025e6: SWAP1
000025e7: KECCAK256
000025e8: DUP1
000025e9: SLOAD
000025ea: PUSH1 0xff
000025ec: NOT
000025ed: AND
000025ee: PUSH1 0x01
000025f0: DUP4
000025f1: PUSH1 0x05
000025f3: DUP2
000025f4: GT
000025f5: ISZERO
000025f6: PUSH2 0x2601
000025f9: JUMPI
000025fa: PUSH2 0x2601
000025fd: PUSH2 0x3595
00002600: JUMP
00002601: JUMPDEST
00002602: MUL
00002603: OR
00002604: SWAP1
00002605: SSTORE
00002606: POP
00002607: POP
00002608: POP
00002609: POP
0000260a: JUMP
0000260b: JUMPDEST
0000260c: PUSH5 0x0773594000
00002612: PUSH1 0x67
00002614: DUP4
00002615: DUP4
00002616: PUSH1 0x40
00002618: MLOAD
00002619: PUSH2 0x2623
0000261c: SWAP3
0000261d: SWAP2
0000261e: SWAP1
0000261f: PUSH2 0x3b45
00002622: JUMP
00002623: JUMPDEST
00002624: SWAP1
00002625: DUP2
00002626: MSTORE
00002627: PUSH1 0x20
00002629: ADD
0000262a: PUSH1 0x40
0000262c: MLOAD
0000262d: DUP1
0000262e: SWAP2
0000262f: SUB
00002630: SWAP1
00002631: KECCAK256
00002632: PUSH1 0x02
00002634: ADD
00002635: PUSH1 0x01
00002637: PUSH2 0x0100
0000263a: EXP
0000263b: DUP2
0000263c: SLOAD
0000263d: DUP2
0000263e: PUSH8 0xffffffffffffffff
00002647: MUL
00002648: NOT
00002649: AND
0000264a: SWAP1
0000264b: DUP4
0000264c: PUSH8 0xffffffffffffffff
00002655: AND
00002656: MUL
00002657: OR
00002658: SWAP1
00002659: SSTORE
0000265a: POP
0000265b: POP
0000265c: POP
0000265d: JUMP
0000265e: JUMPDEST
0000265f: PUSH1 0x00
00002661: PUSH1 0x68
00002663: DUP4
00002664: DUP4
00002665: PUSH1 0x40
00002667: MLOAD
00002668: PUSH2 0x2672
0000266b: SWAP3
0000266c: SWAP2
0000266d: SWAP1
0000266e: PUSH2 0x3b45
00002671: JUMP
00002672: JUMPDEST
00002673: SWAP1
00002674: DUP2
00002675: MSTORE
00002676: PUSH1 0x40
00002678: MLOAD
00002679: SWAP1
0000267a: DUP2
0000267b: SWAP1
0000267c: SUB
0000267d: PUSH1 0x20
0000267f: ADD
00002680: SWAP1
00002681: KECCAK256
00002682: SLOAD
00002683: PUSH1 0xff
00002685: AND
00002686: SWAP4
00002687: SWAP3
00002688: POP
00002689: POP
0000268a: POP
0000268b: JUMP
0000268c: JUMPDEST
0000268d: PUSH2 0x2695
00002690: DUP2
00002691: PUSH2 0x2d11
00002694: JUMP
00002695: JUMPDEST
00002696: PUSH2 0x0ef0
00002699: PUSH2 0x2d81
0000269c: JUMP
0000269d: JUMPDEST
0000269e: PUSH2 0x26ca
000026a1: PUSH1 0x40
000026a3: MLOAD
000026a4: DUP1
000026a5: PUSH1 0x60
000026a7: ADD
000026a8: PUSH1 0x40
000026aa: MSTORE
000026ab: DUP1
000026ac: PUSH1 0x00
000026ae: PUSH1 0x01
000026b0: PUSH1 0x01
000026b2: PUSH1 0xa0
000026b4: SHL
000026b5: SUB
000026b6: AND
000026b7: DUP2
000026b8: MSTORE
000026b9: PUSH1 0x20
000026bb: ADD
000026bc: PUSH1 0x60
000026be: DUP2
000026bf: MSTORE
000026c0: PUSH1 0x20
000026c2: ADD
000026c3: PUSH1 0x00
000026c5: DUP2
000026c6: MSTORE
000026c7: POP
000026c8: SWAP1
000026c9: JUMP
000026ca: JUMPDEST
000026cb: PUSH1 0x00
000026cd: PUSH2 0x26d6
000026d0: DUP5
000026d1: DUP5
000026d2: PUSH2 0x265e
000026d5: JUMP
000026d6: JUMPDEST
000026d7: PUSH1 0x05
000026d9: DUP2
000026da: GT
000026db: ISZERO
000026dc: PUSH2 0x26e7
000026df: JUMPI
000026e0: PUSH2 0x26e7
000026e3: PUSH2 0x3595
000026e6: JUMP
000026e7: JUMPDEST
000026e8: EQ
000026e9: PUSH2 0x07c7
000026ec: JUMPI
000026ed: PUSH1 0x6a
000026ef: PUSH1 0x66
000026f1: DUP5
000026f2: DUP5
000026f3: PUSH1 0x40
000026f5: MLOAD
000026f6: PUSH2 0x2700
000026f9: SWAP3
000026fa: SWAP2
000026fb: SWAP1
000026fc: PUSH2 0x3b45
000026ff: JUMP
00002700: JUMPDEST
00002701: SWAP1
00002702: DUP2
00002703: MSTORE
00002704: PUSH1 0x20
00002706: ADD
00002707: PUSH1 0x40
00002709: MLOAD
0000270a: DUP1
0000270b: SWAP2
0000270c: SUB
0000270d: SWAP1
0000270e: KECCAK256
0000270f: SLOAD
00002710: DUP2
00002711: SLOAD
00002712: DUP2
00002713: LT
00002714: PUSH2 0x271f
00002717: JUMPI
00002718: PUSH2 0x271f
0000271b: PUSH2 0x4017
0000271e: JUMP
0000271f: JUMPDEST
00002720: PUSH1 0x00
00002722: SWAP2
00002723: DUP3
00002724: MSTORE
00002725: PUSH1 0x20
00002727: SWAP2
00002728: DUP3
00002729: SWAP1
0000272a: KECCAK256
0000272b: PUSH1 0x40
0000272d: DUP1
0000272e: MLOAD
0000272f: PUSH1 0x60
00002731: DUP2
00002732: ADD
00002733: SWAP1
00002734: SWAP2
00002735: MSTORE
00002736: PUSH1 0x03
00002738: SWAP1
00002739: SWAP3
0000273a: MUL
0000273b: ADD
0000273c: DUP1
0000273d: SLOAD
0000273e: PUSH1 0x01
00002740: PUSH1 0x01
00002742: PUSH1 0xa0
00002744: SHL
00002745: SUB
00002746: AND
00002747: DUP3
00002748: MSTORE
00002749: PUSH1 0x01
0000274b: DUP2
0000274c: ADD
0000274d: DUP1
0000274e: SLOAD
0000274f: SWAP3
00002750: SWAP4
00002751: SWAP2
00002752: SWAP3
00002753: SWAP2
00002754: DUP5
00002755: ADD
00002756: SWAP2
00002757: PUSH2 0x275f
0000275a: SWAP1
0000275b: PUSH2 0x3b55
0000275e: JUMP
0000275f: JUMPDEST
00002760: DUP1
00002761: PUSH1 0x1f
00002763: ADD
00002764: PUSH1 0x20
00002766: DUP1
00002767: SWAP2
00002768: DIV
00002769: MUL
0000276a: PUSH1 0x20
0000276c: ADD
0000276d: PUSH1 0x40
0000276f: MLOAD
00002770: SWAP1
00002771: DUP2
00002772: ADD
00002773: PUSH1 0x40
00002775: MSTORE
00002776: DUP1
00002777: SWAP3
00002778: SWAP2
00002779: SWAP1
0000277a: DUP2
0000277b: DUP2
0000277c: MSTORE
0000277d: PUSH1 0x20
0000277f: ADD
00002780: DUP3
00002781: DUP1
00002782: SLOAD
00002783: PUSH2 0x278b
00002786: SWAP1
00002787: PUSH2 0x3b55
0000278a: JUMP
0000278b: JUMPDEST
0000278c: DUP1
0000278d: ISZERO
0000278e: PUSH2 0x27d8
00002791: JUMPI
00002792: DUP1
00002793: PUSH1 0x1f
00002795: LT
00002796: PUSH2 0x27ad
00002799: JUMPI
0000279a: PUSH2 0x0100
0000279d: DUP1
0000279e: DUP4
0000279f: SLOAD
000027a0: DIV
000027a1: MUL
000027a2: DUP4
000027a3: MSTORE
000027a4: SWAP2
000027a5: PUSH1 0x20
000027a7: ADD
000027a8: SWAP2
000027a9: PUSH2 0x27d8
000027ac: JUMP
000027ad: JUMPDEST
000027ae: DUP3
000027af: ADD
000027b0: SWAP2
000027b1: SWAP1
000027b2: PUSH1 0x00
000027b4: MSTORE
000027b5: PUSH1 0x20
000027b7: PUSH1 0x00
000027b9: KECCAK256
000027ba: SWAP1
000027bb: JUMPDEST
000027bc: DUP2
000027bd: SLOAD
000027be: DUP2
000027bf: MSTORE
000027c0: SWAP1
000027c1: PUSH1 0x01
000027c3: ADD
000027c4: SWAP1
000027c5: PUSH1 0x20
000027c7: ADD
000027c8: DUP1
000027c9: DUP4
000027ca: GT
000027cb: PUSH2 0x27bb
000027ce: JUMPI
000027cf: DUP3
000027d0: SWAP1
000027d1: SUB
000027d2: PUSH1 0x1f
000027d4: AND
000027d5: DUP3
000027d6: ADD
000027d7: SWAP2
000027d8: JUMPDEST
000027d9: POP
000027da: POP
000027db: POP
000027dc: POP
000027dd: POP
000027de: DUP2
000027df: MSTORE
000027e0: PUSH1 0x20
000027e2: ADD
000027e3: PUSH1 0x02
000027e5: DUP3
000027e6: ADD
000027e7: SLOAD
000027e8: DUP2
000027e9: MSTORE
000027ea: POP
000027eb: POP
000027ec: SWAP1
000027ed: POP
000027ee: SWAP3
000027ef: SWAP2
000027f0: POP
000027f1: POP
000027f2: JUMP
000027f3: JUMPDEST
000027f4: PUSH1 0x65
000027f6: SLOAD
000027f7: PUSH1 0x01
000027f9: PUSH1 0x01
000027fb: PUSH1 0xa0
000027fd: SHL
000027fe: SUB
000027ff: AND
00002800: PUSH2 0x2836
00002803: JUMPI
00002804: PUSH1 0x40
00002806: MLOAD
00002807: PUSH3 0x461bcd
0000280b: PUSH1 0xe5
0000280d: SHL
0000280e: DUP2
0000280f: MSTORE
00002810: PUSH1 0x20
00002812: PUSH1 0x04
00002814: DUP3
00002815: ADD
00002816: MSTORE
00002817: PUSH1 0x08
00002819: PUSH1 0x24
0000281b: DUP3
0000281c: ADD
0000281d: MSTORE
0000281e: PUSH8 0x24b734ba1022b939
00002827: PUSH1 0xc1
00002829: SHL
0000282a: PUSH1 0x44
0000282c: DUP3
0000282d: ADD
0000282e: MSTORE
0000282f: PUSH1 0x64
00002831: ADD
00002832: PUSH2 0x0871
00002835: JUMP
00002836: JUMPDEST
00002837: PUSH1 0x65
00002839: SLOAD
0000283a: PUSH1 0x40
0000283c: DUP1
0000283d: MLOAD
0000283e: PUSH32 0x748365ef00000000000000000000000000000000000000000000000000000000
0000285f: DUP2
00002860: MSTORE
00002861: SWAP1
00002862: MLOAD
00002863: PUSH1 0x00
00002865: SWAP3
00002866: PUSH1 0x01
00002868: PUSH1 0x01
0000286a: PUSH1 0xa0
0000286c: SHL
0000286d: SUB
0000286e: AND
0000286f: SWAP2
00002870: PUSH4 0x748365ef
00002875: SWAP2
00002876: PUSH1 0x04
00002878: DUP1
00002879: DUP4
0000287a: ADD
0000287b: SWAP3
0000287c: PUSH1 0x20
0000287e: SWAP3
0000287f: SWAP2
00002880: SWAP1
00002881: DUP3
00002882: SWAP1
00002883: SUB
00002884: ADD
00002885: DUP2
00002886: DUP7
00002887: GAS
00002888: STATICCALL
00002889: ISZERO
0000288a: DUP1
0000288b: ISZERO
0000288c: PUSH2 0x2899
0000288f: JUMPI
00002890: RETURNDATASIZE
00002891: PUSH1 0x00
00002893: DUP1
00002894: RETURNDATACOPY
00002895: RETURNDATASIZE
00002896: PUSH1 0x00
00002898: REVERT
00002899: JUMPDEST
0000289a: POP
0000289b: POP
0000289c: POP
0000289d: POP
0000289e: PUSH1 0x40
000028a0: MLOAD
000028a1: RETURNDATASIZE
000028a2: PUSH1 0x1f
000028a4: NOT
000028a5: PUSH1 0x1f
000028a7: DUP3
000028a8: ADD
000028a9: AND
000028aa: DUP3
000028ab: ADD
000028ac: DUP1
000028ad: PUSH1 0x40
000028af: MSTORE
000028b0: POP
000028b1: DUP2
000028b2: ADD
000028b3: SWAP1
000028b4: PUSH2 0x28bd
000028b7: SWAP2
000028b8: SWAP1
000028b9: PUSH2 0x4076
000028bc: JUMP
000028bd: JUMPDEST
000028be: PUSH1 0x40
000028c0: MLOAD
000028c1: PUSH32 0x3b6cd6ff00000000000000000000000000000000000000000000000000000000
000028e2: DUP2
000028e3: MSTORE
000028e4: ADDRESS
000028e5: PUSH1 0x04
000028e7: DUP3
000028e8: ADD
000028e9: MSTORE
000028ea: SWAP1
000028eb: SWAP2
000028ec: POP
000028ed: PUSH1 0x01
000028ef: PUSH1 0x01
000028f1: PUSH1 0xa0
000028f3: SHL
000028f4: SUB
000028f5: DUP3
000028f6: AND
000028f7: SWAP1
000028f8: PUSH4 0x3b6cd6ff
000028fd: SWAP1
000028fe: PUSH1 0x24
00002900: ADD
00002901: PUSH1 0x20
00002903: PUSH1 0x40
00002905: MLOAD
00002906: DUP1
00002907: DUP4
00002908: SUB
00002909: DUP2
0000290a: DUP7
0000290b: GAS
0000290c: STATICCALL
0000290d: ISZERO
0000290e: DUP1
0000290f: ISZERO
00002910: PUSH2 0x291d
00002913: JUMPI
00002914: RETURNDATASIZE
00002915: PUSH1 0x00
00002917: DUP1
00002918: RETURNDATACOPY
00002919: RETURNDATASIZE
0000291a: PUSH1 0x00
0000291c: REVERT
0000291d: JUMPDEST
0000291e: POP
0000291f: POP
00002920: POP
00002921: POP
00002922: PUSH1 0x40
00002924: MLOAD
00002925: RETURNDATASIZE
00002926: PUSH1 0x1f
00002928: NOT
00002929: PUSH1 0x1f
0000292b: DUP3
0000292c: ADD
0000292d: AND
0000292e: DUP3
0000292f: ADD
00002930: DUP1
00002931: PUSH1 0x40
00002933: MSTORE
00002934: POP
00002935: DUP2
00002936: ADD
00002937: SWAP1
00002938: PUSH2 0x2941
0000293b: SWAP2
0000293c: SWAP1
0000293d: PUSH2 0x3ffa
00002940: JUMP
00002941: JUMPDEST
00002942: ISZERO
00002943: DUP1
00002944: ISZERO
00002945: PUSH2 0x29ca
00002948: JUMPI
00002949: POP
0000294a: PUSH1 0x40
0000294c: MLOAD
0000294d: PUSH32 0xf47f2f1d00000000000000000000000000000000000000000000000000000000
0000296e: DUP2
0000296f: MSTORE
00002970: CALLER
00002971: PUSH1 0x04
00002973: DUP3
00002974: ADD
00002975: MSTORE
00002976: PUSH1 0x01
00002978: PUSH1 0x01
0000297a: PUSH1 0xa0
0000297c: SHL
0000297d: SUB
0000297e: DUP3
0000297f: AND
00002980: SWAP1
00002981: PUSH4 0xf47f2f1d
00002986: SWAP1
00002987: PUSH1 0x24
00002989: ADD
0000298a: PUSH1 0x20
0000298c: PUSH1 0x40
0000298e: MLOAD
0000298f: DUP1
00002990: DUP4
00002991: SUB
00002992: DUP2
00002993: DUP7
00002994: GAS
00002995: STATICCALL
00002996: ISZERO
00002997: DUP1
00002998: ISZERO
00002999: PUSH2 0x29a6
0000299c: JUMPI
0000299d: RETURNDATASIZE
0000299e: PUSH1 0x00
000029a0: DUP1
000029a1: RETURNDATACOPY
000029a2: RETURNDATASIZE
000029a3: PUSH1 0x00
000029a5: REVERT
000029a6: JUMPDEST
000029a7: POP
000029a8: POP
000029a9: POP
000029aa: POP
000029ab: PUSH1 0x40
000029ad: MLOAD
000029ae: RETURNDATASIZE
000029af: PUSH1 0x1f
000029b1: NOT
000029b2: PUSH1 0x1f
000029b4: DUP3
000029b5: ADD
000029b6: AND
000029b7: DUP3
000029b8: ADD
000029b9: DUP1
000029ba: PUSH1 0x40
000029bc: MSTORE
000029bd: POP
000029be: DUP2
000029bf: ADD
000029c0: SWAP1
000029c1: PUSH2 0x29ca
000029c4: SWAP2
000029c5: SWAP1
000029c6: PUSH2 0x3ffa
000029c9: JUMP
000029ca: JUMPDEST
000029cb: PUSH2 0x099d
000029ce: JUMPI
000029cf: PUSH1 0x40
000029d1: MLOAD
000029d2: PUSH3 0x461bcd
000029d6: PUSH1 0xe5
000029d8: SHL
000029d9: DUP2
000029da: MSTORE
000029db: PUSH1 0x20
000029dd: PUSH1 0x04
000029df: DUP3
000029e0: ADD
000029e1: MSTORE
000029e2: PUSH1 0x0c
000029e4: PUSH1 0x24
000029e6: DUP3
000029e7: ADD
000029e8: MSTORE
000029e9: PUSH32 0x4f6e6c79206d757461626c650000000000000000000000000000000000000000
00002a0a: PUSH1 0x44
00002a0c: DUP3
00002a0d: ADD
00002a0e: MSTORE
00002a0f: PUSH1 0x64
00002a11: ADD
00002a12: PUSH2 0x0871
00002a15: JUMP
00002a16: JUMPDEST
00002a17: PUSH1 0x00
00002a19: PUSH2 0x2a49
00002a1c: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00002a3d: SLOAD
00002a3e: PUSH1 0x01
00002a40: PUSH1 0x01
00002a42: PUSH1 0xa0
00002a44: SHL
00002a45: SUB
00002a46: AND
00002a47: SWAP1
00002a48: JUMP
00002a49: JUMPDEST
00002a4a: SWAP1
00002a4b: POP
00002a4c: PUSH2 0x2a54
00002a4f: DUP5
00002a50: PUSH2 0x2dfc
00002a53: JUMP
00002a54: JUMPDEST
00002a55: PUSH1 0x00
00002a57: DUP4
00002a58: MLOAD
00002a59: GT
00002a5a: DUP1
00002a5b: PUSH2 0x2a61
00002a5e: JUMPI
00002a5f: POP
00002a60: DUP2
00002a61: JUMPDEST
00002a62: ISZERO
00002a63: PUSH2 0x2a72
00002a66: JUMPI
00002a67: PUSH2 0x2a70
00002a6a: DUP5
00002a6b: DUP5
00002a6c: PUSH2 0x2ebe
00002a6f: JUMP
00002a70: JUMPDEST
00002a71: POP
00002a72: JUMPDEST
00002a73: PUSH32 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143
00002a94: DUP1
00002a95: SLOAD
00002a96: PUSH1 0xff
00002a98: AND
00002a99: PUSH2 0x1672
00002a9c: JUMPI
00002a9d: DUP1
00002a9e: SLOAD
00002a9f: PUSH1 0xff
00002aa1: NOT
00002aa2: AND
00002aa3: PUSH1 0x01
00002aa5: OR
00002aa6: DUP2
00002aa7: SSTORE
00002aa8: PUSH1 0x40
00002aaa: MLOAD
00002aab: PUSH1 0x01
00002aad: PUSH1 0x01
00002aaf: PUSH1 0xa0
00002ab1: SHL
00002ab2: SUB
00002ab3: DUP4
00002ab4: AND
00002ab5: PUSH1 0x24
00002ab7: DUP3
00002ab8: ADD
00002ab9: MSTORE
00002aba: PUSH2 0x2b1f
00002abd: SWAP1
00002abe: DUP7
00002abf: SWAP1
00002ac0: PUSH1 0x44
00002ac2: ADD
00002ac3: PUSH1 0x40
00002ac5: DUP1
00002ac6: MLOAD
00002ac7: PUSH1 0x1f
00002ac9: NOT
00002aca: DUP2
00002acb: DUP5
00002acc: SUB
00002acd: ADD
00002ace: DUP2
00002acf: MSTORE
00002ad0: SWAP2
00002ad1: SWAP1
00002ad2: MSTORE
00002ad3: PUSH1 0x20
00002ad5: DUP2
00002ad6: ADD
00002ad7: DUP1
00002ad8: MLOAD
00002ad9: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002af6: AND
00002af7: PUSH32 0x3659cfe600000000000000000000000000000000000000000000000000000000
00002b18: OR
00002b19: SWAP1
00002b1a: MSTORE
00002b1b: PUSH2 0x2ebe
00002b1e: JUMP
00002b1f: JUMPDEST
00002b20: POP
00002b21: DUP1
00002b22: SLOAD
00002b23: PUSH1 0xff
00002b25: NOT
00002b26: AND
00002b27: DUP2
00002b28: SSTORE
00002b29: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00002b4a: SLOAD
00002b4b: PUSH1 0x01
00002b4d: PUSH1 0x01
00002b4f: PUSH1 0xa0
00002b51: SHL
00002b52: SUB
00002b53: DUP4
00002b54: DUP2
00002b55: AND
00002b56: SWAP2
00002b57: AND
00002b58: EQ
00002b59: PUSH2 0x2bca
00002b5c: JUMPI
00002b5d: PUSH1 0x40
00002b5f: MLOAD
00002b60: PUSH3 0x461bcd
00002b64: PUSH1 0xe5
00002b66: SHL
00002b67: DUP2
00002b68: MSTORE
00002b69: PUSH1 0x20
00002b6b: PUSH1 0x04
00002b6d: DUP3
00002b6e: ADD
00002b6f: MSTORE
00002b70: PUSH1 0x2f
00002b72: PUSH1 0x24
00002b74: DUP3
00002b75: ADD
00002b76: MSTORE
00002b77: PUSH32 0x45524331393637557067726164653a207570677261646520627265616b732066
00002b98: PUSH1 0x44
00002b9a: DUP3
00002b9b: ADD
00002b9c: MSTORE
00002b9d: PUSH32 0x7572746865722075706772616465730000000000000000000000000000000000
00002bbe: PUSH1 0x64
00002bc0: DUP3
00002bc1: ADD
00002bc2: MSTORE
00002bc3: PUSH1 0x84
00002bc5: ADD
00002bc6: PUSH2 0x0871
00002bc9: JUMP
00002bca: JUMPDEST
00002bcb: PUSH2 0x1672
00002bce: DUP6
00002bcf: PUSH2 0x2fc0
00002bd2: JUMP
00002bd3: JUMPDEST
00002bd4: PUSH1 0x65
00002bd6: SLOAD
00002bd7: PUSH1 0x40
00002bd9: DUP1
00002bda: DUP5
00002bdb: ADD
00002bdc: MLOAD
00002bdd: DUP5
00002bde: MLOAD
00002bdf: PUSH1 0x60
00002be1: DUP7
00002be2: ADD
00002be3: MLOAD
00002be4: PUSH1 0x20
00002be6: DUP8
00002be7: ADD
00002be8: MLOAD
00002be9: SWAP4
00002bea: MLOAD
00002beb: PUSH32 0x1642f20500000000000000000000000000000000000000000000000000000000
00002c0c: DUP2
00002c0d: MSTORE
00002c0e: PUSH1 0x01
00002c10: PUSH1 0x01
00002c12: PUSH1 0xa0
00002c14: SHL
00002c15: SUB
00002c16: SWAP1
00002c17: SWAP6
00002c18: AND
00002c19: SWAP5
00002c1a: PUSH4 0x1642f205
00002c1f: SWAP5
00002c20: PUSH2 0x2c30
00002c23: SWAP5
00002c24: SWAP4
00002c25: SWAP3
00002c26: SWAP2
00002c27: DUP9
00002c28: SWAP1
00002c29: PUSH1 0x04
00002c2b: ADD
00002c2c: PUSH2 0x4100
00002c2f: JUMP
00002c30: JUMPDEST
00002c31: PUSH1 0x00
00002c33: PUSH1 0x40
00002c35: MLOAD
00002c36: DUP1
00002c37: DUP4
00002c38: SUB
00002c39: DUP2
00002c3a: PUSH1 0x00
00002c3c: DUP8
00002c3d: DUP1
00002c3e: EXTCODESIZE
00002c3f: ISZERO
00002c40: DUP1
00002c41: ISZERO
00002c42: PUSH2 0x2c4a
00002c45: JUMPI
00002c46: PUSH1 0x00
00002c48: DUP1
00002c49: REVERT
00002c4a: JUMPDEST
00002c4b: POP
00002c4c: GAS
00002c4d: CALL
00002c4e: ISZERO
00002c4f: DUP1
00002c50: ISZERO
00002c51: PUSH2 0x2c5e
00002c54: JUMPI
00002c55: RETURNDATASIZE
00002c56: PUSH1 0x00
00002c58: DUP1
00002c59: RETURNDATACOPY
00002c5a: RETURNDATASIZE
00002c5b: PUSH1 0x00
00002c5d: REVERT
00002c5e: JUMPDEST
00002c5f: POP
00002c60: POP
00002c61: POP
00002c62: POP
00002c63: POP
00002c64: POP
00002c65: JUMP
00002c66: JUMPDEST
00002c67: PUSH1 0x65
00002c69: SLOAD
00002c6a: PUSH1 0x40
00002c6c: MLOAD
00002c6d: PUSH32 0xb952972300000000000000000000000000000000000000000000000000000000
00002c8e: DUP2
00002c8f: MSTORE
00002c90: PUSH1 0x01
00002c92: PUSH1 0x01
00002c94: PUSH1 0xa0
00002c96: SHL
00002c97: SUB
00002c98: SWAP1
00002c99: SWAP2
00002c9a: AND
00002c9b: SWAP1
00002c9c: PUSH4 0xb9529723
00002ca1: SWAP1
00002ca2: PUSH2 0x2cb9
00002ca5: SWAP1
00002ca6: DUP8
00002ca7: SWAP1
00002ca8: DUP11
00002ca9: SWAP1
00002caa: DUP11
00002cab: SWAP1
00002cac: DUP10
00002cad: SWAP1
00002cae: DUP10
00002caf: SWAP1
00002cb0: DUP10
00002cb1: SWAP1
00002cb2: PUSH1 0x04
00002cb4: ADD
00002cb5: PUSH2 0x4151
00002cb8: JUMP
00002cb9: JUMPDEST
00002cba: PUSH1 0x00
00002cbc: PUSH1 0x40
00002cbe: MLOAD
00002cbf: DUP1
00002cc0: DUP4
00002cc1: SUB
00002cc2: DUP2
00002cc3: PUSH1 0x00
00002cc5: DUP8
00002cc6: DUP1
00002cc7: EXTCODESIZE
00002cc8: ISZERO
00002cc9: DUP1
00002cca: ISZERO
00002ccb: PUSH2 0x2cd3
00002cce: JUMPI
00002ccf: PUSH1 0x00
00002cd1: DUP1
00002cd2: REVERT
00002cd3: JUMPDEST
00002cd4: POP
00002cd5: GAS
00002cd6: CALL
00002cd7: ISZERO
00002cd8: DUP1
00002cd9: ISZERO
00002cda: PUSH2 0x2ce7
00002cdd: JUMPI
00002cde: RETURNDATASIZE
00002cdf: PUSH1 0x00
00002ce1: DUP1
00002ce2: RETURNDATACOPY
00002ce3: RETURNDATASIZE
00002ce4: PUSH1 0x00
00002ce6: REVERT
00002ce7: JUMPDEST
00002ce8: POP
00002ce9: POP
00002cea: POP
00002ceb: POP
00002cec: POP
00002ced: POP
00002cee: POP
00002cef: POP
00002cf0: POP
00002cf1: POP
00002cf2: JUMP
00002cf3: JUMPDEST
00002cf4: PUSH1 0x00
00002cf6: NUMBER
00002cf7: PUSH1 0x69
00002cf9: SLOAD
00002cfa: PUSH2 0x2d03
00002cfd: DUP6
00002cfe: DUP6
00002cff: PUSH2 0x269d
00002d02: JUMP
00002d03: JUMPDEST
00002d04: PUSH1 0x40
00002d06: ADD
00002d07: MLOAD
00002d08: ADD
00002d09: GT
00002d0a: ISZERO
00002d0b: SWAP4
00002d0c: SWAP3
00002d0d: POP
00002d0e: POP
00002d0f: POP
00002d10: JUMP
00002d11: JUMPDEST
00002d12: PUSH1 0x01
00002d14: PUSH1 0x01
00002d16: PUSH1 0xa0
00002d18: SHL
00002d19: SUB
00002d1a: DUP2
00002d1b: AND
00002d1c: PUSH2 0x2d52
00002d1f: JUMPI
00002d20: PUSH1 0x40
00002d22: MLOAD
00002d23: PUSH3 0x461bcd
00002d27: PUSH1 0xe5
00002d29: SHL
00002d2a: DUP2
00002d2b: MSTORE
00002d2c: PUSH1 0x20
00002d2e: PUSH1 0x04
00002d30: DUP3
00002d31: ADD
00002d32: MSTORE
00002d33: PUSH1 0x08
00002d35: PUSH1 0x24
00002d37: DUP3
00002d38: ADD
00002d39: MSTORE
00002d3a: PUSH8 0x24b734ba1022b939
00002d43: PUSH1 0xc1
00002d45: SHL
00002d46: PUSH1 0x44
00002d48: DUP3
00002d49: ADD
00002d4a: MSTORE
00002d4b: PUSH1 0x64
00002d4d: ADD
00002d4e: PUSH2 0x0871
00002d51: JUMP
00002d52: JUMPDEST
00002d53: PUSH1 0x65
00002d55: DUP1
00002d56: SLOAD
00002d57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d6c: NOT
00002d6d: AND
00002d6e: PUSH1 0x01
00002d70: PUSH1 0x01
00002d72: PUSH1 0xa0
00002d74: SHL
00002d75: SUB
00002d76: SWAP3
00002d77: SWAP1
00002d78: SWAP3
00002d79: AND
00002d7a: SWAP2
00002d7b: SWAP1
00002d7c: SWAP2
00002d7d: OR
00002d7e: SWAP1
00002d7f: SSTORE
00002d80: JUMP
00002d81: JUMPDEST
00002d82: PUSH1 0x00
00002d84: SLOAD
00002d85: PUSH2 0x0100
00002d88: SWAP1
00002d89: DIV
00002d8a: PUSH1 0xff
00002d8c: AND
00002d8d: PUSH2 0x2dec
00002d90: JUMPI
00002d91: PUSH1 0x40
00002d93: MLOAD
00002d94: PUSH3 0x461bcd
00002d98: PUSH1 0xe5
00002d9a: SHL
00002d9b: DUP2
00002d9c: MSTORE
00002d9d: PUSH1 0x20
00002d9f: PUSH1 0x04
00002da1: DUP3
00002da2: ADD
00002da3: MSTORE
00002da4: PUSH1 0x2b
00002da6: PUSH1 0x24
00002da8: DUP3
00002da9: ADD
00002daa: MSTORE
00002dab: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00002dcc: PUSH1 0x44
00002dce: DUP3
00002dcf: ADD
00002dd0: MSTORE
00002dd1: PUSH11 0x6e697469616c697a696e67
00002ddd: PUSH1 0xa8
00002ddf: SHL
00002de0: PUSH1 0x64
00002de2: DUP3
00002de3: ADD
00002de4: MSTORE
00002de5: PUSH1 0x84
00002de7: ADD
00002de8: PUSH2 0x0871
00002deb: JUMP
00002dec: JUMPDEST
00002ded: PUSH2 0x2df4
00002df0: PUSH2 0x3000
00002df3: JUMP
00002df4: JUMPDEST
00002df5: PUSH2 0x22f2
00002df8: PUSH2 0x3000
00002dfb: JUMP
00002dfc: JUMPDEST
00002dfd: DUP1
00002dfe: EXTCODESIZE
00002dff: PUSH2 0x2e70
00002e02: JUMPI
00002e03: PUSH1 0x40
00002e05: MLOAD
00002e06: PUSH3 0x461bcd
00002e0a: PUSH1 0xe5
00002e0c: SHL
00002e0d: DUP2
00002e0e: MSTORE
00002e0f: PUSH1 0x20
00002e11: PUSH1 0x04
00002e13: DUP3
00002e14: ADD
00002e15: MSTORE
00002e16: PUSH1 0x2d
00002e18: PUSH1 0x24
00002e1a: DUP3
00002e1b: ADD
00002e1c: MSTORE
00002e1d: PUSH32 0x455243313936373a206e657720696d706c656d656e746174696f6e206973206e
00002e3e: PUSH1 0x44
00002e40: DUP3
00002e41: ADD
00002e42: MSTORE
00002e43: PUSH32 0x6f74206120636f6e747261637400000000000000000000000000000000000000
00002e64: PUSH1 0x64
00002e66: DUP3
00002e67: ADD
00002e68: MSTORE
00002e69: PUSH1 0x84
00002e6b: ADD
00002e6c: PUSH2 0x0871
00002e6f: JUMP
00002e70: JUMPDEST
00002e71: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00002e92: DUP1
00002e93: SLOAD
00002e94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ea9: NOT
00002eaa: AND
00002eab: PUSH1 0x01
00002ead: PUSH1 0x01
00002eaf: PUSH1 0xa0
00002eb1: SHL
00002eb2: SUB
00002eb3: SWAP3
00002eb4: SWAP1
00002eb5: SWAP3
00002eb6: AND
00002eb7: SWAP2
00002eb8: SWAP1
00002eb9: SWAP2
00002eba: OR
00002ebb: SWAP1
00002ebc: SSTORE
00002ebd: JUMP
00002ebe: JUMPDEST
00002ebf: PUSH1 0x60
00002ec1: DUP3
00002ec2: EXTCODESIZE
00002ec3: PUSH2 0x2f34
00002ec6: JUMPI
00002ec7: PUSH1 0x40
00002ec9: MLOAD
00002eca: PUSH3 0x461bcd
00002ece: PUSH1 0xe5
00002ed0: SHL
00002ed1: DUP2
00002ed2: MSTORE
00002ed3: PUSH1 0x20
00002ed5: PUSH1 0x04
00002ed7: DUP3
00002ed8: ADD
00002ed9: MSTORE
00002eda: PUSH1 0x26
00002edc: PUSH1 0x24
00002ede: DUP3
00002edf: ADD
00002ee0: MSTORE
00002ee1: PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f
00002f02: PUSH1 0x44
00002f04: DUP3
00002f05: ADD
00002f06: MSTORE
00002f07: PUSH32 0x6e74726163740000000000000000000000000000000000000000000000000000
00002f28: PUSH1 0x64
00002f2a: DUP3
00002f2b: ADD
00002f2c: MSTORE
00002f2d: PUSH1 0x84
00002f2f: ADD
00002f30: PUSH2 0x0871
00002f33: JUMP
00002f34: JUMPDEST
00002f35: PUSH1 0x00
00002f37: DUP1
00002f38: DUP5
00002f39: PUSH1 0x01
00002f3b: PUSH1 0x01
00002f3d: PUSH1 0xa0
00002f3f: SHL
00002f40: SUB
00002f41: AND
00002f42: DUP5
00002f43: PUSH1 0x40
00002f45: MLOAD
00002f46: PUSH2 0x2f4f
00002f49: SWAP2
00002f4a: SWAP1
00002f4b: PUSH2 0x4192
00002f4e: JUMP
00002f4f: JUMPDEST
00002f50: PUSH1 0x00
00002f52: PUSH1 0x40
00002f54: MLOAD
00002f55: DUP1
00002f56: DUP4
00002f57: SUB
00002f58: DUP2
00002f59: DUP6
00002f5a: GAS
00002f5b: DELEGATECALL
00002f5c: SWAP2
00002f5d: POP
00002f5e: POP
00002f5f: RETURNDATASIZE
00002f60: DUP1
00002f61: PUSH1 0x00
00002f63: DUP2
00002f64: EQ
00002f65: PUSH2 0x2f8a
00002f68: JUMPI
00002f69: PUSH1 0x40
00002f6b: MLOAD
00002f6c: SWAP2
00002f6d: POP
00002f6e: PUSH1 0x1f
00002f70: NOT
00002f71: PUSH1 0x3f
00002f73: RETURNDATASIZE
00002f74: ADD
00002f75: AND
00002f76: DUP3
00002f77: ADD
00002f78: PUSH1 0x40
00002f7a: MSTORE
00002f7b: RETURNDATASIZE
00002f7c: DUP3
00002f7d: MSTORE
00002f7e: RETURNDATASIZE
00002f7f: PUSH1 0x00
00002f81: PUSH1 0x20
00002f83: DUP5
00002f84: ADD
00002f85: RETURNDATACOPY
00002f86: PUSH2 0x2f8f
00002f89: JUMP
00002f8a: JUMPDEST
00002f8b: PUSH1 0x60
00002f8d: SWAP2
00002f8e: POP
00002f8f: JUMPDEST
00002f90: POP
00002f91: SWAP2
00002f92: POP
00002f93: SWAP2
00002f94: POP
00002f95: PUSH2 0x2fb7
00002f98: DUP3
00002f99: DUP3
00002f9a: PUSH1 0x40
00002f9c: MLOAD
00002f9d: DUP1
00002f9e: PUSH1 0x60
00002fa0: ADD
00002fa1: PUSH1 0x40
00002fa3: MSTORE
00002fa4: DUP1
00002fa5: PUSH1 0x27
00002fa7: DUP2
00002fa8: MSTORE
00002fa9: PUSH1 0x20
00002fab: ADD
00002fac: PUSH2 0x41af
00002faf: PUSH1 0x27
00002fb1: SWAP2
00002fb2: CODECOPY
00002fb3: PUSH2 0x306b
00002fb6: JUMP
00002fb7: JUMPDEST
00002fb8: SWAP6
00002fb9: SWAP5
00002fba: POP
00002fbb: POP
00002fbc: POP
00002fbd: POP
00002fbe: POP
00002fbf: JUMP
00002fc0: JUMPDEST
00002fc1: PUSH2 0x2fc9
00002fc4: DUP2
00002fc5: PUSH2 0x2dfc
00002fc8: JUMP
00002fc9: JUMPDEST
00002fca: PUSH1 0x40
00002fcc: MLOAD
00002fcd: PUSH1 0x01
00002fcf: PUSH1 0x01
00002fd1: PUSH1 0xa0
00002fd3: SHL
00002fd4: SUB
00002fd5: DUP3
00002fd6: AND
00002fd7: SWAP1
00002fd8: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
00002ff9: SWAP1
00002ffa: PUSH1 0x00
00002ffc: SWAP1
00002ffd: LOG2
00002ffe: POP
00002fff: JUMP
00003000: JUMPDEST
00003001: PUSH1 0x00
00003003: SLOAD
00003004: PUSH2 0x0100
00003007: SWAP1
00003008: DIV
00003009: PUSH1 0xff
0000300b: AND
0000300c: PUSH2 0x22f2
0000300f: JUMPI
00003010: PUSH1 0x40
00003012: MLOAD
00003013: PUSH3 0x461bcd
00003017: PUSH1 0xe5
00003019: SHL
0000301a: DUP2
0000301b: MSTORE
0000301c: PUSH1 0x20
0000301e: PUSH1 0x04
00003020: DUP3
00003021: ADD
00003022: MSTORE
00003023: PUSH1 0x2b
00003025: PUSH1 0x24
00003027: DUP3
00003028: ADD
00003029: MSTORE
0000302a: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
0000304b: PUSH1 0x44
0000304d: DUP3
0000304e: ADD
0000304f: MSTORE
00003050: PUSH11 0x6e697469616c697a696e67
0000305c: PUSH1 0xa8
0000305e: SHL
0000305f: PUSH1 0x64
00003061: DUP3
00003062: ADD
00003063: MSTORE
00003064: PUSH1 0x84
00003066: ADD
00003067: PUSH2 0x0871
0000306a: JUMP
0000306b: JUMPDEST
0000306c: PUSH1 0x60
0000306e: DUP4
0000306f: ISZERO
00003070: PUSH2 0x307a
00003073: JUMPI
00003074: POP
00003075: DUP2
00003076: PUSH2 0x19ab
00003079: JUMP
0000307a: JUMPDEST
0000307b: DUP3
0000307c: MLOAD
0000307d: ISZERO
0000307e: PUSH2 0x308a
00003081: JUMPI
00003082: DUP3
00003083: MLOAD
00003084: DUP1
00003085: DUP5
00003086: PUSH1 0x20
00003088: ADD
00003089: REVERT
0000308a: JUMPDEST
0000308b: DUP2
0000308c: PUSH1 0x40
0000308e: MLOAD
0000308f: PUSH3 0x461bcd
00003093: PUSH1 0xe5
00003095: SHL
00003096: DUP2
00003097: MSTORE
00003098: PUSH1 0x04
0000309a: ADD
0000309b: PUSH2 0x0871
0000309e: SWAP2
0000309f: SWAP1
000030a0: PUSH2 0x3582
000030a3: JUMP
000030a4: JUMPDEST
000030a5: DUP3
000030a6: DUP1
000030a7: SLOAD
000030a8: PUSH2 0x30b0
000030ab: SWAP1
000030ac: PUSH2 0x3b55
000030af: JUMP
000030b0: JUMPDEST
000030b1: SWAP1
000030b2: PUSH1 0x00
000030b4: MSTORE
000030b5: PUSH1 0x20
000030b7: PUSH1 0x00
000030b9: KECCAK256
000030ba: SWAP1
000030bb: PUSH1 0x1f
000030bd: ADD
000030be: PUSH1 0x20
000030c0: SWAP1
000030c1: DIV
000030c2: DUP2
000030c3: ADD
000030c4: SWAP3
000030c5: DUP3
000030c6: PUSH2 0x30d2
000030c9: JUMPI
000030ca: PUSH1 0x00
000030cc: DUP6
000030cd: SSTORE
000030ce: PUSH2 0x3118
000030d1: JUMP
000030d2: JUMPDEST
000030d3: DUP3
000030d4: PUSH1 0x1f
000030d6: LT
000030d7: PUSH2 0x30eb
000030da: JUMPI
000030db: DUP1
000030dc: MLOAD
000030dd: PUSH1 0xff
000030df: NOT
000030e0: AND
000030e1: DUP4
000030e2: DUP1
000030e3: ADD
000030e4: OR
000030e5: DUP6
000030e6: SSTORE
000030e7: PUSH2 0x3118
000030ea: JUMP
000030eb: JUMPDEST
000030ec: DUP3
000030ed: DUP1
000030ee: ADD
000030ef: PUSH1 0x01
000030f1: ADD
000030f2: DUP6
000030f3: SSTORE
000030f4: DUP3
000030f5: ISZERO
000030f6: PUSH2 0x3118
000030f9: JUMPI
000030fa: SWAP2
000030fb: DUP3
000030fc: ADD
000030fd: JUMPDEST
000030fe: DUP3
000030ff: DUP2
00003100: GT
00003101: ISZERO
00003102: PUSH2 0x3118
00003105: JUMPI
00003106: DUP3
00003107: MLOAD
00003108: DUP3
00003109: SSTORE
0000310a: SWAP2
0000310b: PUSH1 0x20
0000310d: ADD
0000310e: SWAP2
0000310f: SWAP1
00003110: PUSH1 0x01
00003112: ADD
00003113: SWAP1
00003114: PUSH2 0x30fd
00003117: JUMP
00003118: JUMPDEST
00003119: POP
0000311a: PUSH2 0x3124
0000311d: SWAP3
0000311e: SWAP2
0000311f: POP
00003120: PUSH2 0x3128
00003123: JUMP
00003124: JUMPDEST
00003125: POP
00003126: SWAP1
00003127: JUMP
00003128: JUMPDEST
00003129: JUMPDEST
0000312a: DUP1
0000312b: DUP3
0000312c: GT
0000312d: ISZERO
0000312e: PUSH2 0x3124
00003131: JUMPI
00003132: PUSH1 0x00
00003134: DUP2
00003135: SSTORE
00003136: PUSH1 0x01
00003138: ADD
00003139: PUSH2 0x3129
0000313c: JUMP
0000313d: JUMPDEST
0000313e: PUSH1 0x01
00003140: PUSH1 0x01
00003142: PUSH1 0xa0
00003144: SHL
00003145: SUB
00003146: DUP2
00003147: AND
00003148: DUP2
00003149: EQ
0000314a: PUSH2 0x0ef0
0000314d: JUMPI
0000314e: PUSH1 0x00
00003150: DUP1
00003151: REVERT
00003152: JUMPDEST
00003153: PUSH1 0x00
00003155: DUP1
00003156: DUP4
00003157: PUSH1 0x1f
00003159: DUP5
0000315a: ADD
0000315b: SLT
0000315c: PUSH2 0x3164
0000315f: JUMPI
00003160: PUSH1 0x00
00003162: DUP1
00003163: REVERT
00003164: JUMPDEST
00003165: POP
00003166: DUP2
00003167: CALLDATALOAD
00003168: PUSH8 0xffffffffffffffff
00003171: DUP2
00003172: GT
00003173: ISZERO
00003174: PUSH2 0x317c
00003177: JUMPI
00003178: PUSH1 0x00
0000317a: DUP1
0000317b: REVERT
0000317c: JUMPDEST
0000317d: PUSH1 0x20
0000317f: DUP4
00003180: ADD
00003181: SWAP2
00003182: POP
00003183: DUP4
00003184: PUSH1 0x20
00003186: DUP3
00003187: DUP6
00003188: ADD
00003189: ADD
0000318a: GT
0000318b: ISZERO
0000318c: PUSH2 0x3194
0000318f: JUMPI
00003190: PUSH1 0x00
00003192: DUP1
00003193: REVERT
00003194: JUMPDEST
00003195: SWAP3
00003196: POP
00003197: SWAP3
00003198: SWAP1
00003199: POP
0000319a: JUMP
0000319b: JUMPDEST
0000319c: PUSH1 0x00
0000319e: DUP1
0000319f: PUSH1 0x00
000031a1: DUP1
000031a2: PUSH1 0x00
000031a4: DUP1
000031a5: PUSH1 0x80
000031a7: DUP8
000031a8: DUP10
000031a9: SUB
000031aa: SLT
000031ab: ISZERO
000031ac: PUSH2 0x31b4
000031af: JUMPI
000031b0: PUSH1 0x00
000031b2: DUP1
000031b3: REVERT
000031b4: JUMPDEST
000031b5: DUP7
000031b6: CALLDATALOAD
000031b7: PUSH2 0x31bf
000031ba: DUP2
000031bb: PUSH2 0x313d
000031be: JUMP
000031bf: JUMPDEST
000031c0: SWAP6
000031c1: POP
000031c2: PUSH1 0x20
000031c4: DUP8
000031c5: ADD
000031c6: CALLDATALOAD
000031c7: PUSH8 0xffffffffffffffff
000031d0: DUP1
000031d1: DUP3
000031d2: GT
000031d3: ISZERO
000031d4: PUSH2 0x31dc
000031d7: JUMPI
000031d8: PUSH1 0x00
000031da: DUP1
000031db: REVERT
000031dc: JUMPDEST
000031dd: PUSH2 0x31e8
000031e0: DUP11
000031e1: DUP4
000031e2: DUP12
000031e3: ADD
000031e4: PUSH2 0x3152
000031e7: JUMP
000031e8: JUMPDEST
000031e9: SWAP1
000031ea: SWAP8
000031eb: POP
000031ec: SWAP6
000031ed: POP
000031ee: PUSH1 0x40
000031f0: DUP10
000031f1: ADD
000031f2: CALLDATALOAD
000031f3: SWAP2
000031f4: POP
000031f5: DUP1
000031f6: DUP3
000031f7: GT
000031f8: ISZERO
000031f9: PUSH2 0x3201
000031fc: JUMPI
000031fd: PUSH1 0x00
000031ff: DUP1
00003200: REVERT
00003201: JUMPDEST
00003202: POP
00003203: PUSH2 0x320e
00003206: DUP10
00003207: DUP3
00003208: DUP11
00003209: ADD
0000320a: PUSH2 0x3152
0000320d: JUMP
0000320e: JUMPDEST
0000320f: SWAP8
00003210: SWAP11
00003211: SWAP7
00003212: SWAP10
00003213: POP
00003214: SWAP5
00003215: SWAP8
00003216: SWAP5
00003217: SWAP7
00003218: SWAP6
00003219: PUSH1 0x60
0000321b: SWAP1
0000321c: SWAP6
0000321d: ADD
0000321e: CALLDATALOAD
0000321f: SWAP5
00003220: SWAP4
00003221: POP
00003222: POP
00003223: POP
00003224: POP
00003225: JUMP
00003226: JUMPDEST
00003227: PUSH1 0x00
00003229: DUP1
0000322a: PUSH1 0x20
0000322c: DUP4
0000322d: DUP6
0000322e: SUB
0000322f: SLT
00003230: ISZERO
00003231: PUSH2 0x3239
00003234: JUMPI
00003235: PUSH1 0x00
00003237: DUP1
00003238: REVERT
00003239: JUMPDEST
0000323a: DUP3
0000323b: CALLDATALOAD
0000323c: PUSH8 0xffffffffffffffff
00003245: DUP2
00003246: GT
00003247: ISZERO
00003248: PUSH2 0x3250
0000324b: JUMPI
0000324c: PUSH1 0x00
0000324e: DUP1
0000324f: REVERT
00003250: JUMPDEST
00003251: PUSH2 0x325c
00003254: DUP6
00003255: DUP3
00003256: DUP7
00003257: ADD
00003258: PUSH2 0x3152
0000325b: JUMP
0000325c: JUMPDEST
0000325d: SWAP1
0000325e: SWAP7
0000325f: SWAP1
00003260: SWAP6
00003261: POP
00003262: SWAP4
00003263: POP
00003264: POP
00003265: POP
00003266: POP
00003267: JUMP
00003268: JUMPDEST
00003269: PUSH8 0xffffffffffffffff
00003272: DUP2
00003273: AND
00003274: DUP2
00003275: EQ
00003276: PUSH2 0x0ef0
00003279: JUMPI
0000327a: PUSH1 0x00
0000327c: DUP1
0000327d: REVERT
0000327e: JUMPDEST
0000327f: PUSH1 0x00
00003281: DUP1
00003282: PUSH1 0x00
00003284: PUSH1 0x40
00003286: DUP5
00003287: DUP7
00003288: SUB
00003289: SLT
0000328a: ISZERO
0000328b: PUSH2 0x3293
0000328e: JUMPI
0000328f: PUSH1 0x00
00003291: DUP1
00003292: REVERT
00003293: JUMPDEST
00003294: DUP4
00003295: CALLDATALOAD
00003296: PUSH8 0xffffffffffffffff
0000329f: DUP2
000032a0: GT
000032a1: ISZERO
000032a2: PUSH2 0x32aa
000032a5: JUMPI
000032a6: PUSH1 0x00
000032a8: DUP1
000032a9: REVERT
000032aa: JUMPDEST
000032ab: PUSH2 0x32b6
000032ae: DUP7
000032af: DUP3
000032b0: DUP8
000032b1: ADD
000032b2: PUSH2 0x3152
000032b5: JUMP
000032b6: JUMPDEST
000032b7: SWAP1
000032b8: SWAP5
000032b9: POP
000032ba: SWAP3
000032bb: POP
000032bc: POP
000032bd: PUSH1 0x20
000032bf: DUP5
000032c0: ADD
000032c1: CALLDATALOAD
000032c2: PUSH2 0x32ca
000032c5: DUP2
000032c6: PUSH2 0x3268
000032c9: JUMP
000032ca: JUMPDEST
000032cb: DUP1
000032cc: SWAP2
000032cd: POP
000032ce: POP
000032cf: SWAP3
000032d0: POP
000032d1: SWAP3
000032d2: POP
000032d3: SWAP3
000032d4: JUMP
000032d5: JUMPDEST
000032d6: PUSH1 0x00
000032d8: PUSH1 0x20
000032da: DUP3
000032db: DUP5
000032dc: SUB
000032dd: SLT
000032de: ISZERO
000032df: PUSH2 0x32e7
000032e2: JUMPI
000032e3: PUSH1 0x00
000032e5: DUP1
000032e6: REVERT
000032e7: JUMPDEST
000032e8: DUP2
000032e9: CALLDATALOAD
000032ea: PUSH2 0x19ab
000032ed: DUP2
000032ee: PUSH2 0x313d
000032f1: JUMP
000032f2: JUMPDEST
000032f3: PUSH4 0x4e487b71
000032f8: PUSH1 0xe0
000032fa: SHL
000032fb: PUSH1 0x00
000032fd: MSTORE
000032fe: PUSH1 0x41
00003300: PUSH1 0x04
00003302: MSTORE
00003303: PUSH1 0x24
00003305: PUSH1 0x00
00003307: REVERT
00003308: JUMPDEST
00003309: PUSH1 0x00
0000330b: DUP3
0000330c: PUSH1 0x1f
0000330e: DUP4
0000330f: ADD
00003310: SLT
00003311: PUSH2 0x3319
00003314: JUMPI
00003315: PUSH1 0x00
00003317: DUP1
00003318: REVERT
00003319: JUMPDEST
0000331a: DUP2
0000331b: CALLDATALOAD
0000331c: PUSH8 0xffffffffffffffff
00003325: DUP1
00003326: DUP3
00003327: GT
00003328: ISZERO
00003329: PUSH2 0x3334
0000332c: JUMPI
0000332d: PUSH2 0x3334
00003330: PUSH2 0x32f2
00003333: JUMP
00003334: JUMPDEST
00003335: PUSH1 0x40
00003337: MLOAD
00003338: PUSH1 0x1f
0000333a: DUP4
0000333b: ADD
0000333c: PUSH1 0x1f
0000333e: NOT
0000333f: SWAP1
00003340: DUP2
00003341: AND
00003342: PUSH1 0x3f
00003344: ADD
00003345: AND
00003346: DUP2
00003347: ADD
00003348: SWAP1
00003349: DUP3
0000334a: DUP3
0000334b: GT
0000334c: DUP2
0000334d: DUP4
0000334e: LT
0000334f: OR
00003350: ISZERO
00003351: PUSH2 0x335c
00003354: JUMPI
00003355: PUSH2 0x335c
00003358: PUSH2 0x32f2
0000335b: JUMP
0000335c: JUMPDEST
0000335d: DUP2
0000335e: PUSH1 0x40
00003360: MSTORE
00003361: DUP4
00003362: DUP2
00003363: MSTORE
00003364: DUP7
00003365: PUSH1 0x20
00003367: DUP6
00003368: DUP9
00003369: ADD
0000336a: ADD
0000336b: GT
0000336c: ISZERO
0000336d: PUSH2 0x3375
00003370: JUMPI
00003371: PUSH1 0x00
00003373: DUP1
00003374: REVERT
00003375: JUMPDEST
00003376: DUP4
00003377: PUSH1 0x20
00003379: DUP8
0000337a: ADD
0000337b: PUSH1 0x20
0000337d: DUP4
0000337e: ADD
0000337f: CALLDATACOPY
00003380: PUSH1 0x00
00003382: PUSH1 0x20
00003384: DUP6
00003385: DUP4
00003386: ADD
00003387: ADD
00003388: MSTORE
00003389: DUP1
0000338a: SWAP5
0000338b: POP
0000338c: POP
0000338d: POP
0000338e: POP
0000338f: POP
00003390: SWAP3
00003391: SWAP2
00003392: POP
00003393: POP
00003394: JUMP
00003395: JUMPDEST
00003396: PUSH1 0x00
00003398: PUSH1 0x20
0000339a: DUP3
0000339b: DUP5
0000339c: SUB
0000339d: SLT
0000339e: ISZERO
0000339f: PUSH2 0x33a7
000033a2: JUMPI
000033a3: PUSH1 0x00
000033a5: DUP1
000033a6: REVERT
000033a7: JUMPDEST
000033a8: DUP2
000033a9: CALLDATALOAD
000033aa: PUSH8 0xffffffffffffffff
000033b3: DUP2
000033b4: GT
000033b5: ISZERO
000033b6: PUSH2 0x33be
000033b9: JUMPI
000033ba: PUSH1 0x00
000033bc: DUP1
000033bd: REVERT
000033be: JUMPDEST
000033bf: PUSH2 0x33ca
000033c2: DUP5
000033c3: DUP3
000033c4: DUP6
000033c5: ADD
000033c6: PUSH2 0x3308
000033c9: JUMP
000033ca: JUMPDEST
000033cb: SWAP5
000033cc: SWAP4
000033cd: POP
000033ce: POP
000033cf: POP
000033d0: POP
000033d1: JUMP
000033d2: JUMPDEST
000033d3: PUSH1 0x00
000033d5: JUMPDEST
000033d6: DUP4
000033d7: DUP2
000033d8: LT
000033d9: ISZERO
000033da: PUSH2 0x33ed
000033dd: JUMPI
000033de: DUP2
000033df: DUP2
000033e0: ADD
000033e1: MLOAD
000033e2: DUP4
000033e3: DUP3
000033e4: ADD
000033e5: MSTORE
000033e6: PUSH1 0x20
000033e8: ADD
000033e9: PUSH2 0x33d5
000033ec: JUMP
000033ed: JUMPDEST
000033ee: DUP4
000033ef: DUP2
000033f0: GT
000033f1: ISZERO
000033f2: PUSH2 0x33fc
000033f5: JUMPI
000033f6: PUSH1 0x00
000033f8: DUP5
000033f9: DUP5
000033fa: ADD
000033fb: MSTORE
000033fc: JUMPDEST
000033fd: POP
000033fe: POP
000033ff: POP
00003400: POP
00003401: JUMP
00003402: JUMPDEST
00003403: PUSH1 0x00
00003405: DUP2
00003406: MLOAD
00003407: DUP1
00003408: DUP5
00003409: MSTORE
0000340a: PUSH2 0x341a
0000340d: DUP2
0000340e: PUSH1 0x20
00003410: DUP7
00003411: ADD
00003412: PUSH1 0x20
00003414: DUP7
00003415: ADD
00003416: PUSH2 0x33d2
00003419: JUMP
0000341a: JUMPDEST
0000341b: PUSH1 0x1f
0000341d: ADD
0000341e: PUSH1 0x1f
00003420: NOT
00003421: AND
00003422: SWAP3
00003423: SWAP1
00003424: SWAP3
00003425: ADD
00003426: PUSH1 0x20
00003428: ADD
00003429: SWAP3
0000342a: SWAP2
0000342b: POP
0000342c: POP
0000342d: JUMP
0000342e: JUMPDEST
0000342f: PUSH1 0x00
00003431: PUSH2 0x0120
00003434: DUP1
00003435: DUP4
00003436: MSTORE
00003437: PUSH2 0x3442
0000343a: DUP2
0000343b: DUP5
0000343c: ADD
0000343d: DUP14
0000343e: PUSH2 0x3402
00003441: JUMP
00003442: JUMPDEST
00003443: SWAP1
00003444: POP
00003445: DUP3
00003446: DUP2
00003447: SUB
00003448: PUSH1 0x20
0000344a: DUP5
0000344b: ADD
0000344c: MSTORE
0000344d: PUSH2 0x3456
00003450: DUP2
00003451: DUP13
00003452: PUSH2 0x3402
00003455: JUMP
00003456: JUMPDEST
00003457: SWAP10
00003458: ISZERO
00003459: ISZERO
0000345a: PUSH1 0x40
0000345c: DUP5
0000345d: ADD
0000345e: MSTORE
0000345f: POP
00003460: POP
00003461: PUSH8 0xffffffffffffffff
0000346a: SWAP7
0000346b: DUP8
0000346c: AND
0000346d: PUSH1 0x60
0000346f: DUP3
00003470: ADD
00003471: MSTORE
00003472: SWAP5
00003473: DUP7
00003474: AND
00003475: PUSH1 0x80
00003477: DUP7
00003478: ADD
00003479: MSTORE
0000347a: SWAP3
0000347b: DUP6
0000347c: AND
0000347d: PUSH1 0xa0
0000347f: DUP6
00003480: ADD
00003481: MSTORE
00003482: SWAP1
00003483: DUP5
00003484: AND
00003485: PUSH1 0xc0
00003487: DUP5
00003488: ADD
00003489: MSTORE
0000348a: DUP4
0000348b: AND
0000348c: PUSH1 0xe0
0000348e: DUP4
0000348f: ADD
00003490: MSTORE
00003491: SWAP1
00003492: SWAP2
00003493: AND
00003494: PUSH2 0x0100
00003497: SWAP1
00003498: SWAP2
00003499: ADD
0000349a: MSTORE
0000349b: SWAP3
0000349c: SWAP2
0000349d: POP
0000349e: POP
0000349f: JUMP
000034a0: JUMPDEST
000034a1: PUSH1 0x20
000034a3: DUP2
000034a4: MSTORE
000034a5: PUSH1 0x00
000034a7: DUP3
000034a8: MLOAD
000034a9: PUSH2 0x0120
000034ac: DUP1
000034ad: PUSH1 0x20
000034af: DUP6
000034b0: ADD
000034b1: MSTORE
000034b2: PUSH2 0x34bf
000034b5: PUSH2 0x0140
000034b8: DUP6
000034b9: ADD
000034ba: DUP4
000034bb: PUSH2 0x3402
000034be: JUMP
000034bf: JUMPDEST
000034c0: SWAP2
000034c1: POP
000034c2: PUSH1 0x20
000034c4: DUP6
000034c5: ADD
000034c6: MLOAD
000034c7: PUSH1 0x1f
000034c9: NOT
000034ca: DUP6
000034cb: DUP5
000034cc: SUB
000034cd: ADD
000034ce: PUSH1 0x40
000034d0: DUP7
000034d1: ADD
000034d2: MSTORE
000034d3: PUSH2 0x34dc
000034d6: DUP4
000034d7: DUP3
000034d8: PUSH2 0x3402
000034db: JUMP
000034dc: JUMPDEST
000034dd: SWAP3
000034de: POP
000034df: POP
000034e0: PUSH1 0x40
000034e2: DUP6
000034e3: ADD
000034e4: MLOAD
000034e5: PUSH2 0x34f2
000034e8: PUSH1 0x60
000034ea: DUP7
000034eb: ADD
000034ec: DUP3
000034ed: ISZERO
000034ee: ISZERO
000034ef: SWAP1
000034f0: MSTORE
000034f1: JUMP
000034f2: JUMPDEST
000034f3: POP
000034f4: PUSH1 0x60
000034f6: DUP6
000034f7: ADD
000034f8: MLOAD
000034f9: PUSH8 0xffffffffffffffff
00003502: DUP2
00003503: AND
00003504: PUSH1 0x80
00003506: DUP7
00003507: ADD
00003508: MSTORE
00003509: POP
0000350a: PUSH1 0x80
0000350c: DUP6
0000350d: ADD
0000350e: MLOAD
0000350f: PUSH8 0xffffffffffffffff
00003518: DUP2
00003519: AND
0000351a: PUSH1 0xa0
0000351c: DUP7
0000351d: ADD
0000351e: MSTORE
0000351f: POP
00003520: PUSH1 0xa0
00003522: DUP6
00003523: ADD
00003524: MLOAD
00003525: PUSH8 0xffffffffffffffff
0000352e: DUP2
0000352f: AND
00003530: PUSH1 0xc0
00003532: DUP7
00003533: ADD
00003534: MSTORE
00003535: POP
00003536: PUSH1 0xc0
00003538: DUP6
00003539: ADD
0000353a: MLOAD
0000353b: PUSH8 0xffffffffffffffff
00003544: DUP2
00003545: AND
00003546: PUSH1 0xe0
00003548: DUP7
00003549: ADD
0000354a: MSTORE
0000354b: POP
0000354c: PUSH1 0xe0
0000354e: DUP6
0000354f: ADD
00003550: MLOAD
00003551: PUSH2 0x0100
00003554: PUSH2 0x3568
00003557: DUP2
00003558: DUP8
00003559: ADD
0000355a: DUP4
0000355b: PUSH8 0xffffffffffffffff
00003564: AND
00003565: SWAP1
00003566: MSTORE
00003567: JUMP
00003568: JUMPDEST
00003569: SWAP1
0000356a: SWAP6
0000356b: ADD
0000356c: MLOAD
0000356d: PUSH8 0xffffffffffffffff
00003576: AND
00003577: SWAP4
00003578: ADD
00003579: SWAP3
0000357a: SWAP1
0000357b: SWAP3
0000357c: MSTORE
0000357d: POP
0000357e: SWAP2
0000357f: SWAP1
00003580: POP
00003581: JUMP
00003582: JUMPDEST
00003583: PUSH1 0x20
00003585: DUP2
00003586: MSTORE
00003587: PUSH1 0x00
00003589: PUSH2 0x19ab
0000358c: PUSH1 0x20
0000358e: DUP4
0000358f: ADD
00003590: DUP5
00003591: PUSH2 0x3402
00003594: JUMP
00003595: JUMPDEST
00003596: PUSH4 0x4e487b71
0000359b: PUSH1 0xe0
0000359d: SHL
0000359e: PUSH1 0x00
000035a0: MSTORE
000035a1: PUSH1 0x21
000035a3: PUSH1 0x04
000035a5: MSTORE
000035a6: PUSH1 0x24
000035a8: PUSH1 0x00
000035aa: REVERT
000035ab: JUMPDEST
000035ac: PUSH1 0x20
000035ae: DUP2
000035af: ADD
000035b0: PUSH1 0x06
000035b2: DUP4
000035b3: LT
000035b4: PUSH2 0x35cd
000035b7: JUMPI
000035b8: PUSH4 0x4e487b71
000035bd: PUSH1 0xe0
000035bf: SHL
000035c0: PUSH1 0x00
000035c2: MSTORE
000035c3: PUSH1 0x21
000035c5: PUSH1 0x04
000035c7: MSTORE
000035c8: PUSH1 0x24
000035ca: PUSH1 0x00
000035cc: REVERT
000035cd: JUMPDEST
000035ce: SWAP2
000035cf: SWAP1
000035d0: MSTORE
000035d1: SWAP1
000035d2: JUMP
000035d3: JUMPDEST
000035d4: PUSH1 0x00
000035d6: DUP1
000035d7: PUSH1 0x40
000035d9: DUP4
000035da: DUP6
000035db: SUB
000035dc: SLT
000035dd: ISZERO
000035de: PUSH2 0x35e6
000035e1: JUMPI
000035e2: PUSH1 0x00
000035e4: DUP1
000035e5: REVERT
000035e6: JUMPDEST
000035e7: DUP3
000035e8: CALLDATALOAD
000035e9: PUSH2 0x35f1
000035ec: DUP2
000035ed: PUSH2 0x313d
000035f0: JUMP
000035f1: JUMPDEST
000035f2: SWAP5
000035f3: PUSH1 0x20
000035f5: SWAP4
000035f6: SWAP1
000035f7: SWAP4
000035f8: ADD
000035f9: CALLDATALOAD
000035fa: SWAP4
000035fb: POP
000035fc: POP
000035fd: POP
000035fe: JUMP
000035ff: JUMPDEST
00003600: PUSH1 0x00
00003602: DUP1
00003603: PUSH1 0x40
00003605: DUP4
00003606: DUP6
00003607: SUB
00003608: SLT
00003609: ISZERO
0000360a: PUSH2 0x3612
0000360d: JUMPI
0000360e: PUSH1 0x00
00003610: DUP1
00003611: REVERT
00003612: JUMPDEST
00003613: DUP3
00003614: CALLDATALOAD
00003615: PUSH2 0x361d
00003618: DUP2
00003619: PUSH2 0x313d
0000361c: JUMP
0000361d: JUMPDEST
0000361e: SWAP2
0000361f: POP
00003620: PUSH1 0x20
00003622: DUP4
00003623: ADD
00003624: CALLDATALOAD
00003625: PUSH8 0xffffffffffffffff
0000362e: DUP2
0000362f: GT
00003630: ISZERO
00003631: PUSH2 0x3639
00003634: JUMPI
00003635: PUSH1 0x00
00003637: DUP1
00003638: REVERT
00003639: JUMPDEST
0000363a: PUSH2 0x3645
0000363d: DUP6
0000363e: DUP3
0000363f: DUP7
00003640: ADD
00003641: PUSH2 0x3308
00003644: JUMP
00003645: JUMPDEST
00003646: SWAP2
00003647: POP
00003648: POP
00003649: SWAP3
0000364a: POP
0000364b: SWAP3
0000364c: SWAP1
0000364d: POP
0000364e: JUMP
0000364f: JUMPDEST
00003650: PUSH1 0x00
00003652: PUSH2 0x0120
00003655: DUP3
00003656: DUP5
00003657: SUB
00003658: SLT
00003659: ISZERO
0000365a: PUSH2 0x3662
0000365d: JUMPI
0000365e: PUSH1 0x00
00003660: DUP1
00003661: REVERT
00003662: JUMPDEST
00003663: POP
00003664: SWAP2
00003665: SWAP1
00003666: POP
00003667: JUMP
00003668: JUMPDEST
00003669: PUSH1 0x00
0000366b: DUP1
0000366c: PUSH1 0x00
0000366e: DUP1
0000366f: PUSH1 0x00
00003671: DUP1
00003672: PUSH1 0xa0
00003674: DUP8
00003675: DUP10
00003676: SUB
00003677: SLT
00003678: ISZERO
00003679: PUSH2 0x3681
0000367c: JUMPI
0000367d: PUSH1 0x00
0000367f: DUP1
00003680: REVERT
00003681: JUMPDEST
00003682: DUP7
00003683: CALLDATALOAD
00003684: PUSH2 0x368c
00003687: DUP2
00003688: PUSH2 0x313d
0000368b: JUMP
0000368c: JUMPDEST
0000368d: SWAP6
0000368e: POP
0000368f: PUSH1 0x20
00003691: DUP8
00003692: ADD
00003693: CALLDATALOAD
00003694: PUSH8 0xffffffffffffffff
0000369d: DUP1
0000369e: DUP3
0000369f: GT
000036a0: ISZERO
000036a1: PUSH2 0x36a9
000036a4: JUMPI
000036a5: PUSH1 0x00
000036a7: DUP1
000036a8: REVERT
000036a9: JUMPDEST
000036aa: PUSH2 0x36b5
000036ad: DUP11
000036ae: DUP4
000036af: DUP12
000036b0: ADD
000036b1: PUSH2 0x3152
000036b4: JUMP
000036b5: JUMPDEST
000036b6: SWAP1
000036b7: SWAP8
000036b8: POP
000036b9: SWAP6
000036ba: POP
000036bb: PUSH1 0x40
000036bd: DUP10
000036be: ADD
000036bf: CALLDATALOAD
000036c0: SWAP2
000036c1: POP
000036c2: PUSH2 0x36ca
000036c5: DUP3
000036c6: PUSH2 0x313d
000036c9: JUMP
000036ca: JUMPDEST
000036cb: SWAP1
000036cc: SWAP4
000036cd: POP
000036ce: PUSH1 0x60
000036d0: DUP9
000036d1: ADD
000036d2: CALLDATALOAD
000036d3: SWAP3
000036d4: POP
000036d5: PUSH1 0x80
000036d7: DUP9
000036d8: ADD
000036d9: CALLDATALOAD
000036da: SWAP1
000036db: DUP1
000036dc: DUP3
000036dd: GT
000036de: ISZERO
000036df: PUSH2 0x36e7
000036e2: JUMPI
000036e3: PUSH1 0x00
000036e5: DUP1
000036e6: REVERT
000036e7: JUMPDEST
000036e8: POP
000036e9: PUSH2 0x36f4
000036ec: DUP10
000036ed: DUP3
000036ee: DUP11
000036ef: ADD
000036f0: PUSH2 0x364f
000036f3: JUMP
000036f4: JUMPDEST
000036f5: SWAP2
000036f6: POP
000036f7: POP
000036f8: SWAP3
000036f9: SWAP6
000036fa: POP
000036fb: SWAP3
000036fc: SWAP6
000036fd: POP
000036fe: SWAP3
000036ff: SWAP6
00003700: JUMP
00003701: JUMPDEST
00003702: PUSH1 0x00
00003704: DUP1
00003705: PUSH1 0x00
00003707: DUP1
00003708: PUSH1 0x60
0000370a: DUP6
0000370b: DUP8
0000370c: SUB
0000370d: SLT
0000370e: ISZERO
0000370f: PUSH2 0x3717
00003712: JUMPI
00003713: PUSH1 0x00
00003715: DUP1
00003716: REVERT
00003717: JUMPDEST
00003718: DUP5
00003719: CALLDATALOAD
0000371a: PUSH8 0xffffffffffffffff
00003723: DUP2
00003724: GT
00003725: ISZERO
00003726: PUSH2 0x372e
00003729: JUMPI
0000372a: PUSH1 0x00
0000372c: DUP1
0000372d: REVERT
0000372e: JUMPDEST
0000372f: PUSH2 0x373a
00003732: DUP8
00003733: DUP3
00003734: DUP9
00003735: ADD
00003736: PUSH2 0x3152
00003739: JUMP
0000373a: JUMPDEST
0000373b: SWAP1
0000373c: SWAP6
0000373d: POP
0000373e: SWAP4
0000373f: POP
00003740: POP
00003741: PUSH1 0x20
00003743: DUP6
00003744: ADD
00003745: CALLDATALOAD
00003746: PUSH2 0x374e
00003749: DUP2
0000374a: PUSH2 0x3268
0000374d: JUMP
0000374e: JUMPDEST
0000374f: SWAP2
00003750: POP
00003751: PUSH1 0x40
00003753: DUP6
00003754: ADD
00003755: CALLDATALOAD
00003756: PUSH2 0x375e
00003759: DUP2
0000375a: PUSH2 0x3268
0000375d: JUMP
0000375e: JUMPDEST
0000375f: SWAP4
00003760: SWAP7
00003761: SWAP3
00003762: SWAP6
00003763: POP
00003764: SWAP1
00003765: SWAP4
00003766: POP
00003767: POP
00003768: JUMP
00003769: JUMPDEST
0000376a: PUSH1 0x00
0000376c: DUP1
0000376d: PUSH1 0x00
0000376f: PUSH1 0x40
00003771: DUP5
00003772: DUP7
00003773: SUB
00003774: SLT
00003775: ISZERO
00003776: PUSH2 0x377e
00003779: JUMPI
0000377a: PUSH1 0x00
0000377c: DUP1
0000377d: REVERT
0000377e: JUMPDEST
0000377f: DUP4
00003780: CALLDATALOAD
00003781: PUSH8 0xffffffffffffffff
0000378a: DUP1
0000378b: DUP3
0000378c: GT
0000378d: ISZERO
0000378e: PUSH2 0x3796
00003791: JUMPI
00003792: PUSH1 0x00
00003794: DUP1
00003795: REVERT
00003796: JUMPDEST
00003797: PUSH2 0x37a2
0000379a: DUP8
0000379b: DUP4
0000379c: DUP9
0000379d: ADD
0000379e: PUSH2 0x3152
000037a1: JUMP
000037a2: JUMPDEST
000037a3: SWAP1
000037a4: SWAP6
000037a5: POP
000037a6: SWAP4
000037a7: POP
000037a8: PUSH1 0x20
000037aa: DUP7
000037ab: ADD
000037ac: CALLDATALOAD
000037ad: SWAP2
000037ae: POP
000037af: DUP1
000037b0: DUP3
000037b1: GT
000037b2: ISZERO
000037b3: PUSH2 0x37bb
000037b6: JUMPI
000037b7: PUSH1 0x00
000037b9: DUP1
000037ba: REVERT
000037bb: JUMPDEST
000037bc: POP
000037bd: PUSH2 0x37c8
000037c0: DUP7
000037c1: DUP3
000037c2: DUP8
000037c3: ADD
000037c4: PUSH2 0x364f
000037c7: JUMP
000037c8: JUMPDEST
000037c9: SWAP2
000037ca: POP
000037cb: POP
000037cc: SWAP3
000037cd: POP
000037ce: SWAP3
000037cf: POP
000037d0: SWAP3
000037d1: JUMP
000037d2: JUMPDEST
000037d3: PUSH1 0x00
000037d5: DUP1
000037d6: PUSH1 0x00
000037d8: DUP1
000037d9: PUSH1 0x00
000037db: PUSH1 0x60
000037dd: DUP7
000037de: DUP9
000037df: SUB
000037e0: SLT
000037e1: ISZERO
000037e2: PUSH2 0x37ea
000037e5: JUMPI
000037e6: PUSH1 0x00
000037e8: DUP1
000037e9: REVERT
000037ea: JUMPDEST
000037eb: DUP6
000037ec: CALLDATALOAD
000037ed: PUSH2 0x37f5
000037f0: DUP2
000037f1: PUSH2 0x313d
000037f4: JUMP
000037f5: JUMPDEST
000037f6: SWAP5
000037f7: POP
000037f8: PUSH1 0x20
000037fa: DUP7
000037fb: ADD
000037fc: CALLDATALOAD
000037fd: PUSH8 0xffffffffffffffff
00003806: DUP1
00003807: DUP3
00003808: GT
00003809: ISZERO
0000380a: PUSH2 0x3812
0000380d: JUMPI
0000380e: PUSH1 0x00
00003810: DUP1
00003811: REVERT
00003812: JUMPDEST
00003813: PUSH2 0x381e
00003816: DUP10
00003817: DUP4
00003818: DUP11
00003819: ADD
0000381a: PUSH2 0x3152
0000381d: JUMP
0000381e: JUMPDEST
0000381f: SWAP1
00003820: SWAP7
00003821: POP
00003822: SWAP5
00003823: POP
00003824: PUSH1 0x40
00003826: DUP9
00003827: ADD
00003828: CALLDATALOAD
00003829: SWAP2
0000382a: POP
0000382b: DUP1
0000382c: DUP3
0000382d: GT
0000382e: ISZERO
0000382f: PUSH2 0x3837
00003832: JUMPI
00003833: PUSH1 0x00
00003835: DUP1
00003836: REVERT
00003837: JUMPDEST
00003838: POP
00003839: PUSH2 0x3844
0000383c: DUP9
0000383d: DUP3
0000383e: DUP10
0000383f: ADD
00003840: PUSH2 0x3152
00003843: JUMP
00003844: JUMPDEST
00003845: SWAP7
00003846: SWAP10
00003847: SWAP6
00003848: SWAP9
00003849: POP
0000384a: SWAP4
0000384b: SWAP7
0000384c: POP
0000384d: SWAP3
0000384e: SWAP5
0000384f: SWAP4
00003850: SWAP3
00003851: POP
00003852: POP
00003853: POP
00003854: JUMP
00003855: JUMPDEST
00003856: PUSH1 0x20
00003858: DUP2
00003859: MSTORE
0000385a: PUSH1 0x01
0000385c: PUSH1 0x01
0000385e: PUSH1 0xa0
00003860: SHL
00003861: SUB
00003862: DUP3
00003863: MLOAD
00003864: AND
00003865: PUSH1 0x20
00003867: DUP3
00003868: ADD
00003869: MSTORE
0000386a: PUSH1 0x00
0000386c: PUSH1 0x20
0000386e: DUP4
0000386f: ADD
00003870: MLOAD
00003871: PUSH1 0x60
00003873: PUSH1 0x40
00003875: DUP5
00003876: ADD
00003877: MSTORE
00003878: PUSH2 0x3884
0000387b: PUSH1 0x80
0000387d: DUP5
0000387e: ADD
0000387f: DUP3
00003880: PUSH2 0x3402
00003883: JUMP
00003884: JUMPDEST
00003885: SWAP1
00003886: POP
00003887: PUSH1 0x40
00003889: DUP5
0000388a: ADD
0000388b: MLOAD
0000388c: PUSH1 0x60
0000388e: DUP5
0000388f: ADD
00003890: MSTORE
00003891: DUP1
00003892: SWAP2
00003893: POP
00003894: POP
00003895: SWAP3
00003896: SWAP2
00003897: POP
00003898: POP
00003899: JUMP
0000389a: JUMPDEST
0000389b: PUSH1 0x00
0000389d: DUP1
0000389e: PUSH1 0x00
000038a0: DUP1
000038a1: PUSH1 0x00
000038a3: DUP1
000038a4: PUSH1 0x00
000038a6: PUSH1 0xa0
000038a8: DUP9
000038a9: DUP11
000038aa: SUB
000038ab: SLT
000038ac: ISZERO
000038ad: PUSH2 0x38b5
000038b0: JUMPI
000038b1: PUSH1 0x00
000038b3: DUP1
000038b4: REVERT
000038b5: JUMPDEST
000038b6: DUP8
000038b7: CALLDATALOAD
000038b8: PUSH2 0x38c0
000038bb: DUP2
000038bc: PUSH2 0x313d
000038bf: JUMP
000038c0: JUMPDEST
000038c1: SWAP7
000038c2: POP
000038c3: PUSH1 0x20
000038c5: DUP9
000038c6: ADD
000038c7: CALLDATALOAD
000038c8: PUSH8 0xffffffffffffffff
000038d1: DUP1
000038d2: DUP3
000038d3: GT
000038d4: ISZERO
000038d5: PUSH2 0x38dd
000038d8: JUMPI
000038d9: PUSH1 0x00
000038db: DUP1
000038dc: REVERT
000038dd: JUMPDEST
000038de: PUSH2 0x38e9
000038e1: DUP12
000038e2: DUP4
000038e3: DUP13
000038e4: ADD
000038e5: PUSH2 0x3152
000038e8: JUMP
000038e9: JUMPDEST
000038ea: SWAP1
000038eb: SWAP9
000038ec: POP
000038ed: SWAP7
000038ee: POP
000038ef: PUSH1 0x40
000038f1: DUP11
000038f2: ADD
000038f3: CALLDATALOAD
000038f4: SWAP2
000038f5: POP
000038f6: DUP1
000038f7: DUP3
000038f8: GT
000038f9: ISZERO
000038fa: PUSH2 0x3902
000038fd: JUMPI
000038fe: PUSH1 0x00
00003900: DUP1
00003901: REVERT
00003902: JUMPDEST
00003903: POP
00003904: PUSH2 0x390f
00003907: DUP11
00003908: DUP3
00003909: DUP12
0000390a: ADD
0000390b: PUSH2 0x3152
0000390e: JUMP
0000390f: JUMPDEST
00003910: SWAP1
00003911: SWAP6
00003912: POP
00003913: SWAP4
00003914: POP
00003915: POP
00003916: PUSH1 0x60
00003918: DUP9
00003919: ADD
0000391a: CALLDATALOAD
0000391b: PUSH2 0x3923
0000391e: DUP2
0000391f: PUSH2 0x313d
00003922: JUMP
00003923: JUMPDEST
00003924: DUP1
00003925: SWAP3
00003926: POP
00003927: POP
00003928: PUSH1 0x80
0000392a: DUP9
0000392b: ADD
0000392c: CALLDATALOAD
0000392d: SWAP1
0000392e: POP
0000392f: SWAP3
00003930: SWAP6
00003931: SWAP9
00003932: SWAP2
00003933: SWAP5
00003934: SWAP8
00003935: POP
00003936: SWAP3
00003937: SWAP6
00003938: POP
00003939: JUMP
0000393a: JUMPDEST
0000393b: PUSH1 0x00
0000393d: DUP1
0000393e: PUSH1 0x00
00003940: DUP1
00003941: PUSH1 0x00
00003943: DUP1
00003944: PUSH1 0xa0
00003946: DUP8
00003947: DUP10
00003948: SUB
00003949: SLT
0000394a: ISZERO
0000394b: PUSH2 0x3953
0000394e: JUMPI
0000394f: PUSH1 0x00
00003951: DUP1
00003952: REVERT
00003953: JUMPDEST
00003954: DUP7
00003955: CALLDATALOAD
00003956: PUSH2 0x395e
00003959: DUP2
0000395a: PUSH2 0x313d
0000395d: JUMP
0000395e: JUMPDEST
0000395f: SWAP6
00003960: POP
00003961: PUSH1 0x20
00003963: DUP8
00003964: ADD
00003965: CALLDATALOAD
00003966: PUSH8 0xffffffffffffffff
0000396f: DUP2
00003970: GT
00003971: ISZERO
00003972: PUSH2 0x397a
00003975: JUMPI
00003976: PUSH1 0x00
00003978: DUP1
00003979: REVERT
0000397a: JUMPDEST
0000397b: PUSH2 0x3986
0000397e: DUP10
0000397f: DUP3
00003980: DUP11
00003981: ADD
00003982: PUSH2 0x3152
00003985: JUMP
00003986: JUMPDEST
00003987: SWAP1
00003988: SWAP7
00003989: POP
0000398a: SWAP5
0000398b: POP
0000398c: POP
0000398d: PUSH1 0x40
0000398f: DUP8
00003990: ADD
00003991: CALLDATALOAD
00003992: PUSH2 0x399a
00003995: DUP2
00003996: PUSH2 0x313d
00003999: JUMP
0000399a: JUMPDEST
0000399b: SWAP6
0000399c: SWAP9
0000399d: SWAP5
0000399e: SWAP8
0000399f: POP
000039a0: SWAP3
000039a1: SWAP6
000039a2: PUSH1 0x60
000039a4: DUP2
000039a5: ADD
000039a6: CALLDATALOAD
000039a7: SWAP5
000039a8: PUSH1 0x80
000039aa: SWAP1
000039ab: SWAP2
000039ac: ADD
000039ad: CALLDATALOAD
000039ae: SWAP4
000039af: POP
000039b0: SWAP2
000039b1: POP
000039b2: POP
000039b3: JUMP
000039b4: JUMPDEST
000039b5: PUSH1 0x00
000039b7: PUSH1 0x20
000039b9: DUP3
000039ba: DUP5
000039bb: SUB
000039bc: SLT
000039bd: ISZERO
000039be: PUSH2 0x39c6
000039c1: JUMPI
000039c2: PUSH1 0x00
000039c4: DUP1
000039c5: REVERT
000039c6: JUMPDEST
000039c7: POP
000039c8: CALLDATALOAD
000039c9: SWAP2
000039ca: SWAP1
000039cb: POP
000039cc: JUMP
000039cd: JUMPDEST
000039ce: PUSH1 0x00
000039d0: DUP1
000039d1: PUSH1 0x00
000039d3: DUP1
000039d4: PUSH1 0x00
000039d6: DUP1
000039d7: PUSH1 0x00
000039d9: DUP1
000039da: PUSH1 0xa0
000039dc: DUP10
000039dd: DUP12
000039de: SUB
000039df: SLT
000039e0: ISZERO
000039e1: PUSH2 0x39e9
000039e4: JUMPI
000039e5: PUSH1 0x00
000039e7: DUP1
000039e8: REVERT
000039e9: JUMPDEST
000039ea: DUP9
000039eb: CALLDATALOAD
000039ec: PUSH2 0x39f4
000039ef: DUP2
000039f0: PUSH2 0x313d
000039f3: JUMP
000039f4: JUMPDEST
000039f5: SWAP8
000039f6: POP
000039f7: PUSH1 0x20
000039f9: DUP10
000039fa: ADD
000039fb: CALLDATALOAD
000039fc: PUSH8 0xffffffffffffffff
00003a05: DUP1
00003a06: DUP3
00003a07: GT
00003a08: ISZERO
00003a09: PUSH2 0x3a11
00003a0c: JUMPI
00003a0d: PUSH1 0x00
00003a0f: DUP1
00003a10: REVERT
00003a11: JUMPDEST
00003a12: PUSH2 0x3a1d
00003a15: DUP13
00003a16: DUP4
00003a17: DUP14
00003a18: ADD
00003a19: PUSH2 0x3152
00003a1c: JUMP
00003a1d: JUMPDEST
00003a1e: SWAP1
00003a1f: SWAP10
00003a20: POP
00003a21: SWAP8
00003a22: POP
00003a23: PUSH1 0x40
00003a25: DUP12
00003a26: ADD
00003a27: CALLDATALOAD
00003a28: SWAP2
00003a29: POP
00003a2a: DUP1
00003a2b: DUP3
00003a2c: GT
00003a2d: ISZERO
00003a2e: PUSH2 0x3a36
00003a31: JUMPI
00003a32: PUSH1 0x00
00003a34: DUP1
00003a35: REVERT
00003a36: JUMPDEST
00003a37: PUSH2 0x3a42
00003a3a: DUP13
00003a3b: DUP4
00003a3c: DUP14
00003a3d: ADD
00003a3e: PUSH2 0x3152
00003a41: JUMP
00003a42: JUMPDEST
00003a43: SWAP1
00003a44: SWAP8
00003a45: POP
00003a46: SWAP6
00003a47: POP
00003a48: PUSH1 0x60
00003a4a: DUP12
00003a4b: ADD
00003a4c: CALLDATALOAD
00003a4d: SWAP2
00003a4e: POP
00003a4f: DUP1
00003a50: DUP3
00003a51: GT
00003a52: ISZERO
00003a53: PUSH2 0x3a5b
00003a56: JUMPI
00003a57: PUSH1 0x00
00003a59: DUP1
00003a5a: REVERT
00003a5b: JUMPDEST
00003a5c: POP
00003a5d: PUSH2 0x3a68
00003a60: DUP12
00003a61: DUP3
00003a62: DUP13
00003a63: ADD
00003a64: PUSH2 0x3152
00003a67: JUMP
00003a68: JUMPDEST
00003a69: SWAP10
00003a6a: SWAP13
00003a6b: SWAP9
00003a6c: SWAP12
00003a6d: POP
00003a6e: SWAP7
00003a6f: SWAP10
00003a70: SWAP6
00003a71: SWAP9
00003a72: SWAP5
00003a73: SWAP8
00003a74: SWAP5
00003a75: SWAP6
00003a76: PUSH1 0x80
00003a78: ADD
00003a79: CALLDATALOAD
00003a7a: SWAP5
00003a7b: SWAP4
00003a7c: POP
00003a7d: POP
00003a7e: POP
00003a7f: POP
00003a80: JUMP
00003a81: JUMPDEST
00003a82: PUSH1 0x01
00003a84: PUSH1 0x01
00003a86: PUSH1 0xa0
00003a88: SHL
00003a89: SUB
00003a8a: DUP5
00003a8b: AND
00003a8c: DUP2
00003a8d: MSTORE
00003a8e: PUSH1 0x60
00003a90: PUSH1 0x20
00003a92: DUP3
00003a93: ADD
00003a94: MSTORE
00003a95: PUSH1 0x00
00003a97: PUSH2 0x3aa3
00003a9a: PUSH1 0x60
00003a9c: DUP4
00003a9d: ADD
00003a9e: DUP6
00003a9f: PUSH2 0x3402
00003aa2: JUMP
00003aa3: JUMPDEST
00003aa4: SWAP1
00003aa5: POP
00003aa6: DUP3
00003aa7: PUSH1 0x40
00003aa9: DUP4
00003aaa: ADD
00003aab: MSTORE
00003aac: SWAP5
00003aad: SWAP4
00003aae: POP
00003aaf: POP
00003ab0: POP
00003ab1: POP
00003ab2: JUMP
00003ab3: JUMPDEST
00003ab4: PUSH1 0x00
00003ab6: DUP1
00003ab7: PUSH1 0x00
00003ab9: PUSH1 0x40
00003abb: DUP5
00003abc: DUP7
00003abd: SUB
00003abe: SLT
00003abf: ISZERO
00003ac0: PUSH2 0x3ac8
00003ac3: JUMPI
00003ac4: PUSH1 0x00
00003ac6: DUP1
00003ac7: REVERT
00003ac8: JUMPDEST
00003ac9: DUP4
00003aca: CALLDATALOAD
00003acb: PUSH2 0x3ad3
00003ace: DUP2
00003acf: PUSH2 0x313d
00003ad2: JUMP
00003ad3: JUMPDEST
00003ad4: SWAP3
00003ad5: POP
00003ad6: PUSH1 0x20
00003ad8: DUP5
00003ad9: ADD
00003ada: CALLDATALOAD
00003adb: PUSH8 0xffffffffffffffff
00003ae4: DUP2
00003ae5: GT
00003ae6: ISZERO
00003ae7: PUSH2 0x3aef
00003aea: JUMPI
00003aeb: PUSH1 0x00
00003aed: DUP1
00003aee: REVERT
00003aef: JUMPDEST
00003af0: PUSH2 0x3afb
00003af3: DUP7
00003af4: DUP3
00003af5: DUP8
00003af6: ADD
00003af7: PUSH2 0x3152
00003afa: JUMP
00003afb: JUMPDEST
00003afc: SWAP5
00003afd: SWAP8
00003afe: SWAP1
00003aff: SWAP7
00003b00: POP
00003b01: SWAP4
00003b02: SWAP5
00003b03: POP
00003b04: POP
00003b05: POP
00003b06: POP
00003b07: JUMP
00003b08: JUMPDEST
00003b09: DUP2
00003b0a: DUP4
00003b0b: MSTORE
00003b0c: DUP2
00003b0d: DUP2
00003b0e: PUSH1 0x20
00003b10: DUP6
00003b11: ADD
00003b12: CALLDATACOPY
00003b13: POP
00003b14: PUSH1 0x00
00003b16: DUP3
00003b17: DUP3
00003b18: ADD
00003b19: PUSH1 0x20
00003b1b: SWAP1
00003b1c: DUP2
00003b1d: ADD
00003b1e: SWAP2
00003b1f: SWAP1
00003b20: SWAP2
00003b21: MSTORE
00003b22: PUSH1 0x1f
00003b24: SWAP1
00003b25: SWAP2
00003b26: ADD
00003b27: PUSH1 0x1f
00003b29: NOT
00003b2a: AND
00003b2b: SWAP1
00003b2c: SWAP2
00003b2d: ADD
00003b2e: ADD
00003b2f: SWAP1
00003b30: JUMP
00003b31: JUMPDEST
00003b32: PUSH1 0x20
00003b34: DUP2
00003b35: MSTORE
00003b36: PUSH1 0x00
00003b38: PUSH2 0x33ca
00003b3b: PUSH1 0x20
00003b3d: DUP4
00003b3e: ADD
00003b3f: DUP5
00003b40: DUP7
00003b41: PUSH2 0x3b08
00003b44: JUMP
00003b45: JUMPDEST
00003b46: DUP2
00003b47: DUP4
00003b48: DUP3
00003b49: CALLDATACOPY
00003b4a: PUSH1 0x00
00003b4c: SWAP2
00003b4d: ADD
00003b4e: SWAP1
00003b4f: DUP2
00003b50: MSTORE
00003b51: SWAP2
00003b52: SWAP1
00003b53: POP
00003b54: JUMP
00003b55: JUMPDEST
00003b56: PUSH1 0x01
00003b58: DUP2
00003b59: DUP2
00003b5a: SHR
00003b5b: SWAP1
00003b5c: DUP3
00003b5d: AND
00003b5e: DUP1
00003b5f: PUSH2 0x3b69
00003b62: JUMPI
00003b63: PUSH1 0x7f
00003b65: DUP3
00003b66: AND
00003b67: SWAP2
00003b68: POP
00003b69: JUMPDEST
00003b6a: PUSH1 0x20
00003b6c: DUP3
00003b6d: LT
00003b6e: DUP2
00003b6f: SUB
00003b70: PUSH2 0x3662
00003b73: JUMPI
00003b74: PUSH4 0x4e487b71
00003b79: PUSH1 0xe0
00003b7b: SHL
00003b7c: PUSH1 0x00
00003b7e: MSTORE
00003b7f: PUSH1 0x22
00003b81: PUSH1 0x04
00003b83: MSTORE
00003b84: PUSH1 0x24
00003b86: PUSH1 0x00
00003b88: REVERT
00003b89: JUMPDEST
00003b8a: PUSH1 0x00
00003b8c: PUSH1 0x01
00003b8e: PUSH1 0x01
00003b90: PUSH1 0xa0
00003b92: SHL
00003b93: SUB
00003b94: DUP1
00003b95: DUP9
00003b96: AND
00003b97: DUP4
00003b98: MSTORE
00003b99: PUSH1 0x80
00003b9b: PUSH1 0x20
00003b9d: DUP5
00003b9e: ADD
00003b9f: MSTORE
00003ba0: PUSH2 0x3bad
00003ba3: PUSH1 0x80
00003ba5: DUP5
00003ba6: ADD
00003ba7: DUP8
00003ba8: DUP10
00003ba9: PUSH2 0x3b08
00003bac: JUMP
00003bad: JUMPDEST
00003bae: SWAP5
00003baf: AND
00003bb0: PUSH1 0x40
00003bb2: DUP4
00003bb3: ADD
00003bb4: MSTORE
00003bb5: POP
00003bb6: PUSH1 0x60
00003bb8: ADD
00003bb9: MSTORE
00003bba: SWAP4
00003bbb: SWAP3
00003bbc: POP
00003bbd: POP
00003bbe: POP
00003bbf: JUMP
00003bc0: JUMPDEST
00003bc1: PUSH1 0x00
00003bc3: DUP1
00003bc4: DUP4
00003bc5: CALLDATALOAD
00003bc6: PUSH1 0x1e
00003bc8: NOT
00003bc9: DUP5
00003bca: CALLDATASIZE
00003bcb: SUB
00003bcc: ADD
00003bcd: DUP2
00003bce: SLT
00003bcf: PUSH2 0x3bd7
00003bd2: JUMPI
00003bd3: PUSH1 0x00
00003bd5: DUP1
00003bd6: REVERT
00003bd7: JUMPDEST
00003bd8: DUP4
00003bd9: ADD
00003bda: DUP1
00003bdb: CALLDATALOAD
00003bdc: SWAP2
00003bdd: POP
00003bde: PUSH8 0xffffffffffffffff
00003be7: DUP3
00003be8: GT
00003be9: ISZERO
00003bea: PUSH2 0x3bf2
00003bed: JUMPI
00003bee: PUSH1 0x00
00003bf0: DUP1
00003bf1: REVERT
00003bf2: JUMPDEST
00003bf3: PUSH1 0x20
00003bf5: ADD
00003bf6: SWAP2
00003bf7: POP
00003bf8: CALLDATASIZE
00003bf9: DUP2
00003bfa: SWAP1
00003bfb: SUB
00003bfc: DUP3
00003bfd: SGT
00003bfe: ISZERO
00003bff: PUSH2 0x3194
00003c02: JUMPI
00003c03: PUSH1 0x00
00003c05: DUP1
00003c06: REVERT
00003c07: JUMPDEST
00003c08: PUSH1 0x1f
00003c0a: DUP3
00003c0b: GT
00003c0c: ISZERO
00003c0d: PUSH2 0x243f
00003c10: JUMPI
00003c11: PUSH1 0x00
00003c13: DUP2
00003c14: DUP2
00003c15: MSTORE
00003c16: PUSH1 0x20
00003c18: DUP2
00003c19: KECCAK256
00003c1a: PUSH1 0x1f
00003c1c: DUP6
00003c1d: ADD
00003c1e: PUSH1 0x05
00003c20: SHR
00003c21: DUP2
00003c22: ADD
00003c23: PUSH1 0x20
00003c25: DUP7
00003c26: LT
00003c27: ISZERO
00003c28: PUSH2 0x3c2e
00003c2b: JUMPI
00003c2c: POP
00003c2d: DUP1
00003c2e: JUMPDEST
00003c2f: PUSH1 0x1f
00003c31: DUP6
00003c32: ADD
00003c33: PUSH1 0x05
00003c35: SHR
00003c36: DUP3
00003c37: ADD
00003c38: SWAP2
00003c39: POP
00003c3a: JUMPDEST
00003c3b: DUP2
00003c3c: DUP2
00003c3d: LT
00003c3e: ISZERO
00003c3f: PUSH2 0x2c5e
00003c42: JUMPI
00003c43: DUP3
00003c44: DUP2
00003c45: SSTORE
00003c46: PUSH1 0x01
00003c48: ADD
00003c49: PUSH2 0x3c3a
00003c4c: JUMP
00003c4d: JUMPDEST
00003c4e: PUSH8 0xffffffffffffffff
00003c57: DUP4
00003c58: GT
00003c59: ISZERO
00003c5a: PUSH2 0x3c65
00003c5d: JUMPI
00003c5e: PUSH2 0x3c65
00003c61: PUSH2 0x32f2
00003c64: JUMP
00003c65: JUMPDEST
00003c66: PUSH2 0x3c79
00003c69: DUP4
00003c6a: PUSH2 0x3c73
00003c6d: DUP4
00003c6e: SLOAD
00003c6f: PUSH2 0x3b55
00003c72: JUMP
00003c73: JUMPDEST
00003c74: DUP4
00003c75: PUSH2 0x3c07
00003c78: JUMP
00003c79: JUMPDEST
00003c7a: PUSH1 0x00
00003c7c: PUSH1 0x1f
00003c7e: DUP5
00003c7f: GT
00003c80: PUSH1 0x01
00003c82: DUP2
00003c83: EQ
00003c84: PUSH2 0x3cad
00003c87: JUMPI
00003c88: PUSH1 0x00
00003c8a: DUP6
00003c8b: ISZERO
00003c8c: PUSH2 0x3c95
00003c8f: JUMPI
00003c90: POP
00003c91: DUP4
00003c92: DUP3
00003c93: ADD
00003c94: CALLDATALOAD
00003c95: JUMPDEST
00003c96: PUSH1 0x00
00003c98: NOT
00003c99: PUSH1 0x03
00003c9b: DUP8
00003c9c: SWAP1
00003c9d: SHL
00003c9e: SHR
00003c9f: NOT
00003ca0: AND
00003ca1: PUSH1 0x01
00003ca3: DUP7
00003ca4: SWAP1
00003ca5: SHL
00003ca6: OR
00003ca7: DUP4
00003ca8: SSTORE
00003ca9: PUSH2 0x1672
00003cac: JUMP
00003cad: JUMPDEST
00003cae: PUSH1 0x00
00003cb0: DUP4
00003cb1: DUP2
00003cb2: MSTORE
00003cb3: PUSH1 0x20
00003cb5: SWAP1
00003cb6: KECCAK256
00003cb7: PUSH1 0x1f
00003cb9: NOT
00003cba: DUP7
00003cbb: AND
00003cbc: SWAP1
00003cbd: DUP4
00003cbe: JUMPDEST
00003cbf: DUP3
00003cc0: DUP2
00003cc1: LT
00003cc2: ISZERO
00003cc3: PUSH2 0x3cde
00003cc6: JUMPI
00003cc7: DUP7
00003cc8: DUP6
00003cc9: ADD
00003cca: CALLDATALOAD
00003ccb: DUP3
00003ccc: SSTORE
00003ccd: PUSH1 0x20
00003ccf: SWAP5
00003cd0: DUP6
00003cd1: ADD
00003cd2: SWAP5
00003cd3: PUSH1 0x01
00003cd5: SWAP1
00003cd6: SWAP3
00003cd7: ADD
00003cd8: SWAP2
00003cd9: ADD
00003cda: PUSH2 0x3cbe
00003cdd: JUMP
00003cde: JUMPDEST
00003cdf: POP
00003ce0: DUP7
00003ce1: DUP3
00003ce2: LT
00003ce3: ISZERO
00003ce4: PUSH2 0x3cfb
00003ce7: JUMPI
00003ce8: PUSH1 0x00
00003cea: NOT
00003ceb: PUSH1 0xf8
00003ced: DUP9
00003cee: PUSH1 0x03
00003cf0: SHL
00003cf1: AND
00003cf2: SHR
00003cf3: NOT
00003cf4: DUP5
00003cf5: DUP8
00003cf6: ADD
00003cf7: CALLDATALOAD
00003cf8: AND
00003cf9: DUP2
00003cfa: SSTORE
00003cfb: JUMPDEST
00003cfc: POP
00003cfd: POP
00003cfe: PUSH1 0x01
00003d00: DUP6
00003d01: PUSH1 0x01
00003d03: SHL
00003d04: ADD
00003d05: DUP4
00003d06: SSTORE
00003d07: POP
00003d08: POP
00003d09: POP
00003d0a: POP
00003d0b: POP
00003d0c: JUMP
00003d0d: JUMPDEST
00003d0e: DUP1
00003d0f: ISZERO
00003d10: ISZERO
00003d11: DUP2
00003d12: EQ
00003d13: PUSH2 0x0ef0
00003d16: JUMPI
00003d17: PUSH1 0x00
00003d19: DUP1
00003d1a: REVERT
00003d1b: JUMPDEST
00003d1c: PUSH1 0x00
00003d1e: DUP2
00003d1f: CALLDATALOAD
00003d20: PUSH2 0x07c7
00003d23: DUP2
00003d24: PUSH2 0x3d0d
00003d27: JUMP
00003d28: JUMPDEST
00003d29: PUSH1 0x00
00003d2b: DUP2
00003d2c: CALLDATALOAD
00003d2d: PUSH2 0x07c7
00003d30: DUP2
00003d31: PUSH2 0x3268
00003d34: JUMP
00003d35: JUMPDEST
00003d36: PUSH2 0x3d3f
00003d39: DUP3
00003d3a: DUP4
00003d3b: PUSH2 0x3bc0
00003d3e: JUMP
00003d3f: JUMPDEST
00003d40: PUSH8 0xffffffffffffffff
00003d49: DUP2
00003d4a: GT
00003d4b: ISZERO
00003d4c: PUSH2 0x3d57
00003d4f: JUMPI
00003d50: PUSH2 0x3d57
00003d53: PUSH2 0x32f2
00003d56: JUMP
00003d57: JUMPDEST
00003d58: PUSH2 0x3d6b
00003d5b: DUP2
00003d5c: PUSH2 0x3d65
00003d5f: DUP6
00003d60: SLOAD
00003d61: PUSH2 0x3b55
00003d64: JUMP
00003d65: JUMPDEST
00003d66: DUP6
00003d67: PUSH2 0x3c07
00003d6a: JUMP
00003d6b: JUMPDEST
00003d6c: PUSH1 0x00
00003d6e: PUSH1 0x1f
00003d70: DUP3
00003d71: GT
00003d72: PUSH1 0x01
00003d74: DUP2
00003d75: EQ
00003d76: PUSH2 0x3d9f
00003d79: JUMPI
00003d7a: PUSH1 0x00
00003d7c: DUP4
00003d7d: ISZERO
00003d7e: PUSH2 0x3d87
00003d81: JUMPI
00003d82: POP
00003d83: DUP4
00003d84: DUP3
00003d85: ADD
00003d86: CALLDATALOAD
00003d87: JUMPDEST
00003d88: PUSH1 0x00
00003d8a: NOT
00003d8b: PUSH1 0x03
00003d8d: DUP6
00003d8e: SWAP1
00003d8f: SHL
00003d90: SHR
00003d91: NOT
00003d92: AND
00003d93: PUSH1 0x01
00003d95: DUP5
00003d96: SWAP1
00003d97: SHL
00003d98: OR
00003d99: DUP6
00003d9a: SSTORE
00003d9b: PUSH2 0x3df9
00003d9e: JUMP
00003d9f: JUMPDEST
00003da0: PUSH1 0x00
00003da2: DUP6
00003da3: DUP2
00003da4: MSTORE
00003da5: PUSH1 0x20
00003da7: SWAP1
00003da8: KECCAK256
00003da9: PUSH1 0x1f
00003dab: NOT
00003dac: DUP5
00003dad: AND
00003dae: SWAP1
00003daf: DUP4
00003db0: JUMPDEST
00003db1: DUP3
00003db2: DUP2
00003db3: LT
00003db4: ISZERO
00003db5: PUSH2 0x3dd0
00003db8: JUMPI
00003db9: DUP7
00003dba: DUP6
00003dbb: ADD
00003dbc: CALLDATALOAD
00003dbd: DUP3
00003dbe: SSTORE
00003dbf: PUSH1 0x20
00003dc1: SWAP5
00003dc2: DUP6
00003dc3: ADD
00003dc4: SWAP5
00003dc5: PUSH1 0x01
00003dc7: SWAP1
00003dc8: SWAP3
00003dc9: ADD
00003dca: SWAP2
00003dcb: ADD
00003dcc: PUSH2 0x3db0
00003dcf: JUMP
00003dd0: JUMPDEST
00003dd1: POP
00003dd2: DUP5
00003dd3: DUP3
00003dd4: LT
00003dd5: ISZERO
00003dd6: PUSH2 0x3ded
00003dd9: JUMPI
00003dda: PUSH1 0x00
00003ddc: NOT
00003ddd: PUSH1 0xf8
00003ddf: DUP7
00003de0: PUSH1 0x03
00003de2: SHL
00003de3: AND
00003de4: SHR
00003de5: NOT
00003de6: DUP5
00003de7: DUP8
00003de8: ADD
00003de9: CALLDATALOAD
00003dea: AND
00003deb: DUP2
00003dec: SSTORE
00003ded: JUMPDEST
00003dee: POP
00003def: POP
00003df0: PUSH1 0x01
00003df2: DUP4
00003df3: PUSH1 0x01
00003df5: SHL
00003df6: ADD
00003df7: DUP6
00003df8: SSTORE
00003df9: JUMPDEST
00003dfa: POP
00003dfb: POP
00003dfc: POP
00003dfd: POP
00003dfe: PUSH2 0x3e0a
00003e01: PUSH1 0x20
00003e03: DUP4
00003e04: ADD
00003e05: DUP4
00003e06: PUSH2 0x3bc0
00003e09: JUMP
00003e0a: JUMPDEST
00003e0b: PUSH2 0x3e18
00003e0e: DUP2
00003e0f: DUP4
00003e10: PUSH1 0x01
00003e12: DUP7
00003e13: ADD
00003e14: PUSH2 0x3c4d
00003e17: JUMP
00003e18: JUMPDEST
00003e19: POP
00003e1a: POP
00003e1b: PUSH1 0x02
00003e1d: DUP2
00003e1e: ADD
00003e1f: PUSH2 0x3e41
00003e22: PUSH2 0x3e2d
00003e25: PUSH1 0x40
00003e27: DUP6
00003e28: ADD
00003e29: PUSH2 0x3d1b
00003e2c: JUMP
00003e2d: JUMPDEST
00003e2e: DUP3
00003e2f: SLOAD
00003e30: SWAP1
00003e31: ISZERO
00003e32: ISZERO
00003e33: PUSH1 0xff
00003e35: AND
00003e36: PUSH1 0xff
00003e38: NOT
00003e39: SWAP2
00003e3a: SWAP1
00003e3b: SWAP2
00003e3c: AND
00003e3d: OR
00003e3e: DUP3
00003e3f: SSTORE
00003e40: JUMP
00003e41: JUMPDEST
00003e42: PUSH2 0x3e74
00003e45: PUSH2 0x3e50
00003e48: PUSH1 0x60
00003e4a: DUP6
00003e4b: ADD
00003e4c: PUSH2 0x3d28
00003e4f: JUMP
00003e50: JUMPDEST
00003e51: DUP3
00003e52: SLOAD
00003e53: PUSH9 0xffffffffffffffff00
00003e5d: NOT
00003e5e: AND
00003e5f: PUSH1 0x08
00003e61: SWAP2
00003e62: SWAP1
00003e63: SWAP2
00003e64: SHL
00003e65: PUSH9 0xffffffffffffffff00
00003e6f: AND
00003e70: OR
00003e71: DUP3
00003e72: SSTORE
00003e73: JUMP
00003e74: JUMPDEST
00003e75: PUSH2 0x3ec5
00003e78: PUSH2 0x3e83
00003e7b: PUSH1 0x80
00003e7d: DUP6
00003e7e: ADD
00003e7f: PUSH2 0x3d28
00003e82: JUMP
00003e83: JUMPDEST
00003e84: DUP3
00003e85: SLOAD
00003e86: PUSH32 0xffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff
00003ea7: AND
00003ea8: PUSH1 0x48
00003eaa: SWAP2
00003eab: SWAP1
00003eac: SWAP2
00003ead: SHL
00003eae: PUSH17 0xffffffffffffffff000000000000000000
00003ec0: AND
00003ec1: OR
00003ec2: DUP3
00003ec3: SSTORE
00003ec4: JUMP
00003ec5: JUMPDEST
00003ec6: PUSH2 0x3f1e
00003ec9: PUSH2 0x3ed4
00003ecc: PUSH1 0xa0
00003ece: DUP6
00003ecf: ADD
00003ed0: PUSH2 0x3d28
00003ed3: JUMP
00003ed4: JUMPDEST
00003ed5: DUP3
00003ed6: SLOAD
00003ed7: PUSH32 0xffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff
00003ef8: AND
00003ef9: PUSH1 0x88
00003efb: SWAP2
00003efc: SWAP1
00003efd: SWAP2
00003efe: SHL
00003eff: PUSH25 0xffffffffffffffff0000000000000000000000000000000000
00003f19: AND
00003f1a: OR
00003f1b: DUP3
00003f1c: SSTORE
00003f1d: JUMP
00003f1e: JUMPDEST
00003f1f: POP
00003f20: PUSH1 0x03
00003f22: DUP2
00003f23: ADD
00003f24: PUSH2 0x3f51
00003f27: PUSH2 0x3f32
00003f2a: PUSH1 0xc0
00003f2c: DUP6
00003f2d: ADD
00003f2e: PUSH2 0x3d28
00003f31: JUMP
00003f32: JUMPDEST
00003f33: DUP3
00003f34: SLOAD
00003f35: PUSH8 0xffffffffffffffff
00003f3e: NOT
00003f3f: AND
00003f40: PUSH8 0xffffffffffffffff
00003f49: SWAP2
00003f4a: SWAP1
00003f4b: SWAP2
00003f4c: AND
00003f4d: OR
00003f4e: DUP3
00003f4f: SSTORE
00003f50: JUMP
00003f51: JUMPDEST
00003f52: PUSH2 0x3fa1
00003f55: PUSH2 0x3f60
00003f58: PUSH1 0xe0
00003f5a: DUP6
00003f5b: ADD
00003f5c: PUSH2 0x3d28
00003f5f: JUMP
00003f60: JUMPDEST
00003f61: DUP3
00003f62: SLOAD
00003f63: PUSH32 0xffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff
00003f84: AND
00003f85: PUSH1 0x40
00003f87: SWAP2
00003f88: SWAP1
00003f89: SWAP2
00003f8a: SHL
00003f8b: PUSH16 0xffffffffffffffff0000000000000000
00003f9c: AND
00003f9d: OR
00003f9e: DUP3
00003f9f: SSTORE
00003fa0: JUMP
00003fa1: JUMPDEST
00003fa2: PUSH2 0x243f
00003fa5: PUSH2 0x3fb1
00003fa8: PUSH2 0x0100
00003fab: DUP6
00003fac: ADD
00003fad: PUSH2 0x3d28
00003fb0: JUMP
00003fb1: JUMPDEST
00003fb2: DUP3
00003fb3: SLOAD
00003fb4: PUSH32 0xffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff
00003fd5: AND
00003fd6: PUSH1 0x80
00003fd8: SWAP2
00003fd9: SWAP1
00003fda: SWAP2
00003fdb: SHL
00003fdc: PUSH24 0xffffffffffffffff00000000000000000000000000000000
00003ff5: AND
00003ff6: OR
00003ff7: DUP3
00003ff8: SSTORE
00003ff9: JUMP
00003ffa: JUMPDEST
00003ffb: PUSH1 0x00
00003ffd: PUSH1 0x20
00003fff: DUP3
00004000: DUP5
00004001: SUB
00004002: SLT
00004003: ISZERO
00004004: PUSH2 0x400c
00004007: JUMPI
00004008: PUSH1 0x00
0000400a: DUP1
0000400b: REVERT
0000400c: JUMPDEST
0000400d: DUP2
0000400e: MLOAD
0000400f: PUSH2 0x19ab
00004012: DUP2
00004013: PUSH2 0x3d0d
00004016: JUMP
00004017: JUMPDEST
00004018: PUSH4 0x4e487b71
0000401d: PUSH1 0xe0
0000401f: SHL
00004020: PUSH1 0x00
00004022: MSTORE
00004023: PUSH1 0x32
00004025: PUSH1 0x04
00004027: MSTORE
00004028: PUSH1 0x24
0000402a: PUSH1 0x00
0000402c: REVERT
0000402d: JUMPDEST
0000402e: PUSH1 0x60
00004030: DUP2
00004031: MSTORE
00004032: PUSH1 0x00
00004034: PUSH2 0x4041
00004037: PUSH1 0x60
00004039: DUP4
0000403a: ADD
0000403b: DUP9
0000403c: DUP11
0000403d: PUSH2 0x3b08
00004040: JUMP
00004041: JUMPDEST
00004042: DUP3
00004043: DUP2
00004044: SUB
00004045: PUSH1 0x20
00004047: DUP5
00004048: ADD
00004049: MSTORE
0000404a: PUSH2 0x4054
0000404d: DUP2
0000404e: DUP8
0000404f: DUP10
00004050: PUSH2 0x3b08
00004053: JUMP
00004054: JUMPDEST
00004055: SWAP1
00004056: POP
00004057: DUP3
00004058: DUP2
00004059: SUB
0000405a: PUSH1 0x40
0000405c: DUP5
0000405d: ADD
0000405e: MSTORE
0000405f: PUSH2 0x4069
00004062: DUP2
00004063: DUP6
00004064: DUP8
00004065: PUSH2 0x3b08
00004068: JUMP
00004069: JUMPDEST
0000406a: SWAP10
0000406b: SWAP9
0000406c: POP
0000406d: POP
0000406e: POP
0000406f: POP
00004070: POP
00004071: POP
00004072: POP
00004073: POP
00004074: POP
00004075: JUMP
00004076: JUMPDEST
00004077: PUSH1 0x00
00004079: PUSH1 0x20
0000407b: DUP3
0000407c: DUP5
0000407d: SUB
0000407e: SLT
0000407f: ISZERO
00004080: PUSH2 0x4088
00004083: JUMPI
00004084: PUSH1 0x00
00004086: DUP1
00004087: REVERT
00004088: JUMPDEST
00004089: DUP2
0000408a: MLOAD
0000408b: PUSH2 0x19ab
0000408e: DUP2
0000408f: PUSH2 0x313d
00004092: JUMP
00004093: JUMPDEST
00004094: PUSH1 0x01
00004096: PUSH1 0x01
00004098: PUSH1 0xa0
0000409a: SHL
0000409b: SUB
0000409c: DUP5
0000409d: AND
0000409e: DUP2
0000409f: MSTORE
000040a0: PUSH1 0x40
000040a2: PUSH1 0x20
000040a4: DUP3
000040a5: ADD
000040a6: MSTORE
000040a7: PUSH1 0x00
000040a9: PUSH2 0x2fb7
000040ac: PUSH1 0x40
000040ae: DUP4
000040af: ADD
000040b0: DUP5
000040b1: DUP7
000040b2: PUSH2 0x3b08
000040b5: JUMP
000040b6: JUMPDEST
000040b7: PUSH1 0x01
000040b9: PUSH1 0x01
000040bb: PUSH1 0xa0
000040bd: SHL
000040be: SUB
000040bf: DUP8
000040c0: AND
000040c1: DUP2
000040c2: MSTORE
000040c3: PUSH1 0x80
000040c5: PUSH1 0x20
000040c7: DUP3
000040c8: ADD
000040c9: MSTORE
000040ca: PUSH1 0x00
000040cc: PUSH2 0x40d9
000040cf: PUSH1 0x80
000040d1: DUP4
000040d2: ADD
000040d3: DUP8
000040d4: DUP10
000040d5: PUSH2 0x3b08
000040d8: JUMP
000040d9: JUMPDEST
000040da: DUP3
000040db: DUP2
000040dc: SUB
000040dd: PUSH1 0x40
000040df: DUP5
000040e0: ADD
000040e1: MSTORE
000040e2: PUSH2 0x40ec
000040e5: DUP2
000040e6: DUP7
000040e7: DUP9
000040e8: PUSH2 0x3b08
000040eb: JUMP
000040ec: JUMPDEST
000040ed: SWAP2
000040ee: POP
000040ef: POP
000040f0: DUP3
000040f1: PUSH1 0x60
000040f3: DUP4
000040f4: ADD
000040f5: MSTORE
000040f6: SWAP8
000040f7: SWAP7
000040f8: POP
000040f9: POP
000040fa: POP
000040fb: POP
000040fc: POP
000040fd: POP
000040fe: POP
000040ff: JUMP
00004100: JUMPDEST
00004101: PUSH1 0x00
00004103: PUSH1 0x01
00004105: PUSH1 0x01
00004107: PUSH1 0xa0
00004109: SHL
0000410a: SUB
0000410b: DUP1
0000410c: DUP9
0000410d: AND
0000410e: DUP4
0000410f: MSTORE
00004110: PUSH1 0xa0
00004112: PUSH1 0x20
00004114: DUP5
00004115: ADD
00004116: MSTORE
00004117: PUSH2 0x4123
0000411a: PUSH1 0xa0
0000411c: DUP5
0000411d: ADD
0000411e: DUP9
0000411f: PUSH2 0x3402
00004122: JUMP
00004123: JUMPDEST
00004124: DUP2
00004125: DUP8
00004126: AND
00004127: PUSH1 0x40
00004129: DUP6
0000412a: ADD
0000412b: MSTORE
0000412c: DUP4
0000412d: DUP2
0000412e: SUB
0000412f: PUSH1 0x60
00004131: DUP6
00004132: ADD
00004133: MSTORE
00004134: PUSH2 0x413d
00004137: DUP2
00004138: DUP8
00004139: PUSH2 0x3402
0000413c: JUMP
0000413d: JUMPDEST
0000413e: SWAP3
0000413f: POP
00004140: POP
00004141: POP
00004142: DUP3
00004143: PUSH1 0x80
00004145: DUP4
00004146: ADD
00004147: MSTORE
00004148: SWAP7
00004149: SWAP6
0000414a: POP
0000414b: POP
0000414c: POP
0000414d: POP
0000414e: POP
0000414f: POP
00004150: JUMP
00004151: JUMPDEST
00004152: PUSH1 0x00
00004154: PUSH1 0x01
00004156: PUSH1 0x01
00004158: PUSH1 0xa0
0000415a: SHL
0000415b: SUB
0000415c: DUP1
0000415d: DUP10
0000415e: AND
0000415f: DUP4
00004160: MSTORE
00004161: PUSH1 0xa0
00004163: PUSH1 0x20
00004165: DUP5
00004166: ADD
00004167: MSTORE
00004168: PUSH2 0x4175
0000416b: PUSH1 0xa0
0000416d: DUP5
0000416e: ADD
0000416f: DUP9
00004170: DUP11
00004171: PUSH2 0x3b08
00004174: JUMP
00004175: JUMPDEST
00004176: SWAP6
00004177: AND
00004178: PUSH1 0x40
0000417a: DUP4
0000417b: ADD
0000417c: MSTORE
0000417d: POP
0000417e: PUSH1 0x60
00004180: DUP2
00004181: ADD
00004182: SWAP3
00004183: SWAP1
00004184: SWAP3
00004185: MSTORE
00004186: PUSH1 0x80
00004188: SWAP1
00004189: SWAP2
0000418a: ADD
0000418b: MSTORE
0000418c: SWAP4
0000418d: SWAP3
0000418e: POP
0000418f: POP
00004190: POP
00004191: JUMP
00004192: JUMPDEST
00004193: PUSH1 0x00
00004195: DUP3
00004196: MLOAD
00004197: PUSH2 0x41a4
0000419a: DUP2
0000419b: DUP5
0000419c: PUSH1 0x20
0000419e: DUP8
0000419f: ADD
000041a0: PUSH2 0x33d2
000041a3: JUMP
000041a4: JUMPDEST
000041a5: SWAP2
000041a6: SWAP1
000041a7: SWAP2
000041a8: ADD
000041a9: SWAP3
000041aa: SWAP2
000041ab: POP
000041ac: POP
000041ad: JUMP
000041ae: INVALID
000041af: COINBASE
000041b0: PUSH5 0x6472657373
000041b6: GASPRICE
000041b7: KECCAK256
000041b8: PUSH13 0x6f772d6c6576656c2064656c65
000041c6: PUSH8 0x6174652063616c6c
000041cf: KECCAK256
000041d0: PUSH7 0x61696c6564a264
000041d8: PUSH10 0x70667358221220fd562a
000041e3: DELEGATECALL
000041e4: PUSH16 0xf3965537ae7ed199bb874aabe6db4cd5
000041f5: POP
000041f6: MSIZE
000041f7: UNKNOWN(0x2E)
000041f8: DIV
000041f9: DUP3
000041fa: PUSH3 0xad9eab
000041fe: CALLCODE
000041ff: CALLVALUE
00004200: PUSH5 0x736f6c6343
00004206: STOP
00004207: ADDMOD
00004208: UNKNOWN(0x0D)
00004209: STOP
0000420a: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0xb5c1d4dda6f2f8cf32eed400176c93fbeafeea3b6f43f9878fb5ac0859514bef
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0xb5c1d4dda6f2f8cf32eed400176c93fbeafeea3b6f43f9878fb5ac0859514bef",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xf2a40db8",
            "selector": "0xf2a40db8",
            "calldata_variants": [
                "0xf2a40db8",
                "0xf2a40db80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf308a7cc",
            "selector": "0xf308a7cc",
            "calldata_variants": [
                "0xf308a7cc",
                "0xf308a7cc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf47774d6",
            "selector": "0xf47774d6",
            "calldata_variants": [
                "0xf47774d6",
                "0xf47774d60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8361364",
            "selector": "0xe8361364",
            "calldata_variants": [
                "0xe8361364",
                "0xe83613640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf10c2720",
            "selector": "0xf10c2720",
            "calldata_variants": [
                "0xf10c2720",
                "0xf10c27200000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb9588300",
            "selector": "0xb9588300",
            "calldata_variants": [
                "0xb9588300",
                "0xb95883000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xce88b145",
            "selector": "0xce88b145",
            "calldata_variants": [
                "0xce88b145",
                "0xce88b1450000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd4cbab61",
            "selector": "0xd4cbab61",
            "calldata_variants": [
                "0xd4cbab61",
                "0xd4cbab610000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 12123,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 16867,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 2,
    "untrusted_delegatecall_count": 2
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x852f6162b5719653e8eccf042f171022c9b6750085accccafceab9becf03f0e6
call_targets: 0x9227cb6d3388c7247f4726cbbb9c6f1f1def1504
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x852f6162b5719653e8eccf042f171022c9b6750085accccafceab9becf03f0e6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9227cb6d3388c7247f4726cbbb9c6f1f1def1504"
    ],
    "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": "0xf2a40db8",
            "selector": "0xf2a40db8",
            "calldata_variants": [
                "0xf2a40db8",
                "0xf2a40db80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf308a7cc",
            "selector": "0xf308a7cc",
            "calldata_variants": [
                "0xf308a7cc",
                "0xf308a7cc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf47774d6",
            "selector": "0xf47774d6",
            "calldata_variants": [
                "0xf47774d6",
                "0xf47774d60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8361364",
            "selector": "0xe8361364",
            "calldata_variants": [
                "0xe8361364",
                "0xe83613640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf10c2720",
            "selector": "0xf10c2720",
            "calldata_variants": [
                "0xf10c2720",
                "0xf10c27200000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb9588300",
            "selector": "0xb9588300",
            "calldata_variants": [
                "0xb9588300",
                "0xb95883000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xce88b145",
            "selector": "0xce88b145",
            "calldata_variants": [
                "0xce88b145",
                "0xce88b1450000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd4cbab61",
            "selector": "0xd4cbab61",
            "calldata_variants": [
                "0xd4cbab61",
                "0xd4cbab610000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3864,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4863,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8588,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 7,
    "guards_detected": [],
    "untrusted_call_count": 7
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x852f6162b5719653e8eccf042f171022c9b6750085accccafceab9becf03f0e6
call_targets: 0x9227cb6d3388c7247f4726cbbb9c6f1f1def1504
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x852f6162b5719653e8eccf042f171022c9b6750085accccafceab9becf03f0e6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9227cb6d3388c7247f4726cbbb9c6f1f1def1504"
    ],
    "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": "0xf2a40db8",
            "selector": "0xf2a40db8",
            "calldata_variants": [
                "0xf2a40db8",
                "0xf2a40db80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf308a7cc",
            "selector": "0xf308a7cc",
            "calldata_variants": [
                "0xf308a7cc",
                "0xf308a7cc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf47774d6",
            "selector": "0xf47774d6",
            "calldata_variants": [
                "0xf47774d6",
                "0xf47774d60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8361364",
            "selector": "0xe8361364",
            "calldata_variants": [
                "0xe8361364",
                "0xe83613640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf10c2720",
            "selector": "0xf10c2720",
            "calldata_variants": [
                "0xf10c2720",
                "0xf10c27200000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb9588300",
            "selector": "0xb9588300",
            "calldata_variants": [
                "0xb9588300",
                "0xb95883000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xce88b145",
            "selector": "0xce88b145",
            "calldata_variants": [
                "0xce88b145",
                "0xce88b1450000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd4cbab61",
            "selector": "0xd4cbab61",
            "calldata_variants": [
                "0xd4cbab61",
                "0xd4cbab610000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3864,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4863,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 8588,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 7,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 2
}
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": 8
}
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": 16
}