6b94122f-0b42-463b-a985-cc39b8b8438a
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 16
}
|