fb61facd-855c-4867-86ad-2135cd2a7761
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 |
|---|---|---|---|---|
| 31123 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 76552 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 76553 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 76554 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 76555 | capability.graph | complete | 1 / 3 | 1 week ago |
| 76556 | detector.run | complete | 1 / 3 | 1 week ago |
| 76557 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1276932] OpenAI Codex v0.77.0 (research preview)
[codex:1276932] --------
[codex:1276932] workdir: /tmp/codex-multi-pefp_pui
[codex:1276932] model: gpt-5.2-codex
[codex:1276932] provider: openai
[codex:1276932] approval: never
[codex:1276932] sandbox: read-only
[codex:1276932] reasoning effort: xhigh
[codex:1276932] reasoning summaries: auto
[codex:1276932] session id: 019b7b1f-315f-7043-8f7d-ca5345f6790e
[codex:1276932] --------
[codex:1276932] user
[codex:1276932] 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:1276932]
[codex:1276932] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1276932]
[codex:1276932] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1276932] - Gas inefficiency, code quality, or best practices
[codex:1276932] - Theoretical vulnerabilities without a clear extraction path
[codex:1276932] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1276932] - Issues requiring social engineering or off-chain coordination
[codex:1276932]
[codex:1276932] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1276932] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1276932] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1276932] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1276932] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1276932] - External calls before state updates (reentrancy)
[codex:1276932] - SELFDESTRUCT with controllable beneficiary
[codex:1276932] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1276932]
[codex:1276932] For each finding, you MUST explain:
[codex:1276932] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1276932] 2. The concrete sequence of transactions to extract value
[codex:1276932] 3. Why you believe this is exploitable (not just suspicious)
[codex:1276932]
[codex:1276932] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1276932] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1276932]
[codex:1276932] Output MUST be valid JSON matching the provided schema.
[codex:1276932] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1276932] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1276932] mcp startup: no servers
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Checking file presence**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc ls in /tmp/codex-multi-pefp_pui succeeded in 5ms:
[codex:1276932] BYTECODE_BUNDLE.txt
[codex:1276932] codex-output-schema.json
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Preparing to read file**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-pefp_pui succeeded in 6ms:
[codex:1276932] Runtime bytecode bundle for best-effort auditing.
[codex:1276932] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1276932]
[codex:1276932] FILE: runtime_bytecode.hex
[codex:1276932] 0x608060405260043610610204575f3560e01c80635ca7ab591161012957806394abab1d116100a8578063b9b4aacd1161006d578063b9b4aacd1461050f578063c7137f5e1461052e578063e14770621461054d578063e98d8c3a1461056c578063fa461e3314610333575f5ffd5b806394abab1d1461049f578063999895db146104be578063a0000000146102cf578063a1000000146104dd578063b80042dc146104f0575f5ffd5b8063824a811d116100ee578063824a811d14610432578063853828b61461043a5780638d690bab1461044e5780638e0000001461046d5780639410ae8814610480575f5ffd5b80635ca7ab59146103c257806362000000146103e15780636568a279146103f45780637000000014610270578063800a35d914610413575f5ffd5b8060cc116101ac57806323a69e751161017757806323a69e75146103335780632de6ca25146103525780633ab1a494146103715780633c0000001461039057806353b03a83146103a3575f5ffd5b8060cc146102bc578060d7146102cf57806315e2b6cd146102e257806317f8f44d146103015780631f00000014610320575f5ffd5b806050116101e0578060501461025d57806067146102705780606914610283578060b914610296578060c3146102a9575f5ffd5b8060021461020f57806024146102245780603514610237578060401461024a575f5ffd5b3661020b57005b5f5ffd5b61022261021d366004612f60565b61058b565b005b610222610232366004612fc2565b6105f5565b610222610245366004613067565b61065b565b6102226102583660046130ca565b6106b7565b61022261026b366004613122565b61070a565b61022261027e366004613195565b610768565b610222610291366004613230565b6107d3565b6102226102a4366004613289565b61082d565b6102226102b736600461332f565b610880565b6102226102ca36600461336e565b6109e4565b6102226102dd366004613230565b610a47565b3480156102ed575f5ffd5b506102226102fc3660046133ac565b610aa1565b34801561030c575f5ffd5b5061022261031b3660046133ac565b610b03565b61022261032e3660046133ce565b610b4f565b34801561033e575f5ffd5b5061022261034d366004613456565b610bbc565b34801561035d575f5ffd5b5061022261036c3660046134a5565b610bc8565b34801561037c575f5ffd5b5061022261038b3660046133ac565b610c55565b61022261039e3660046134bc565b610ca0565b3480156103ae575f5ffd5b506102226103bd3660046133ac565b610cfa565b3480156103cd575f5ffd5b506102226103dc366004613554565b610d5c565b6102226103ef3660046133ce565b610f8e565b3480156103ff575f5ffd5b5061022261040e3660046135b4565b610fee565b34801561041e575f5ffd5b5061022261042d3660046135b4565b61106f565b610222611102565b348015610445575f5ffd5b50610222611161565b348015610459575f5ffd5b506102226104683660046133ac565b611206565b61022261047b366004613289565b611252565b34801561048b575f5ffd5b5061022261049a3660046135e7565b6112a5565b3480156104aa575f5ffd5b506102226104b93660046133ac565b6112af565b3480156104c9575f5ffd5b506102226104d83660046133ac565b611311565b6102226104eb366004613611565b611373565b3480156104fb575f5ffd5b5061022261050a3660046135b4565b6113db565b34801561051a575f5ffd5b506102226105293660046133ac565b61145e565b348015610539575f5ffd5b506102226105483660046135e7565b6114ac565b348015610558575f5ffd5b506102226105673660046136b6565b61160a565b348015610577575f5ffd5b506102226105863660046133ac565b6116dc565b3443146105b35760405162461bcd60e51b81526004016105aa906136f4565b60405180910390fd5b335f9081526002602052604090205460ff166105e15760405162461bcd60e51b81526004016105aa9061370f565b6105ee8585858585611741565b5050505050565b3443146106145760405162461bcd60e51b81526004016105aa906136f4565b8a61061f3382611898565b61063b5760405162461bcd60e51b81526004016105aa9061370f565b61064d8b8b8b8b8b8b8b8b8b8b6118e1565b505050505050505050505050565b34431461067a5760405162461bcd60e51b81526004016105aa906136f4565b856106853382611898565b6106a15760405162461bcd60e51b81526004016105aa9061370f565b6106ae8686868686611af1565b50505050505050565b3443146106d65760405162461bcd60e51b81526004016105aa906136f4565b856106e13382611898565b6106fd5760405162461bcd60e51b81526004016105aa9061370f565b6106ae8686868686611741565b3443146107295760405162461bcd60e51b81526004016105aa906136f4565b866107343382611898565b6107505760405162461bcd60e51b81526004016105aa9061370f565b61075e878787878787611bd1565b5050505050505050565b3443146107875760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff166107b55760405162461bcd60e51b81526004016105aa9061370f565b6107c78a8a8a8a8a8a8a8a8a8a6118e1565b50505050505050505050565b3443146107f25760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff166108205760405162461bcd60e51b81526004016105aa9061370f565b6105ee858585858561213f565b34431461084c5760405162461bcd60e51b81526004016105aa906136f4565b856108573382611898565b6108735760405162461bcd60e51b81526004016105aa9061370f565b6106ae8686868686612277565b34431461089f5760405162461bcd60e51b81526004016105aa906136f4565b735b43453fce04b92e190f391a83136bfbecedefd133146108d25760405162461bcd60e51b81526004016105aa9061370f565b6108dd60698261373e565b156108fa5760405162461bcd60e51b81526004016105aa9061370f565b5f610906606983613765565b90505f5b818110156109de575f808080806109548989610927896069613778565b91909101803560f81c926001820135606090811c93506015830135901c9160298101359160499091013590565b945094509450945094505f5f61097187600181811c929181161490565b91509150816001036109965761098a8682868689612277565b505050505050506109d6565b815f036109aa5761098a868286868961213f565b60405162461bcd60e51b81526020600482015260016024820152606560f81b60448201526064016105aa565b60010161090a565b50505050565b344314610a035760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff16610a315760405162461bcd60e51b81526004016105aa9061370f565b610a3f868686868686611bd1565b505050505050565b344314610a665760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff16610a945760405162461bcd60e51b81526004016105aa9061370f565b6105ee8585858585612277565b5f546001600160a01b0316331480610ac75750335f9081526003602052604090205460ff165b610ae35760405162461bcd60e51b81526004016105aa9061378f565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610b2c5760405162461bcd60e51b81526004016105aa906137aa565b6001600160a01b03165f908152600360205260409020805460ff19166001179055565b344314610b6e5760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff16610b9c5760405162461bcd60e51b81526004016105aa9061370f565b610baf8b8b8b8b8b878c8c8c8c8b61240d565b5050505050505050505050565b6109de84848484612614565b335f9081526004602052604090205460ff16610bf65760405162461bcd60e51b81526004016105aa906137c5565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015610c43575f5ffd5b505af1158015610a3f573d5f5f3e3d5ffd5b5f546001600160a01b03163314610c7e5760405162461bcd60e51b81526004016105aa906137aa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b344314610cbf5760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff16610ced5760405162461bcd60e51b81526004016105aa9061370f565b6105ee8585858585611af1565b5f546001600160a01b0316331480610d205750335f9081526003602052604090205460ff165b610d3c5760405162461bcd60e51b81526004016105aa9061378f565b6001600160a01b03165f908152600260205260409020805460ff19169055565b5f546001600160a01b0316331480610d825750335f9081526003602052604090205460ff165b610d9e5760405162461bcd60e51b81526004016105aa9061378f565b828114610da9575f5ffd5b5f805b82811015610de257838382818110610dc657610dc66137e0565b9050602002013582610dd891906137f4565b9150600101610dac565b50604051632e1a7d4d60e01b81526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b158015610e2d575f5ffd5b505af1158015610e3f573d5f5f3e3d5ffd5b505f925050505b82811015610a3f5760025f878784818110610e6357610e636137e0565b9050602002016020810190610e7891906133ac565b6001600160a01b0316815260208101919091526040015f205460ff16610ec45760405162461bcd60e51b81526020600482015260016024820152602d60f81b60448201526064016105aa565b5f868683818110610ed757610ed76137e0565b9050602002016020810190610eec91906133ac565b6001600160a01b0316858584818110610f0757610f076137e0565b905060200201356040515f6040518083038185875af1925050503d805f8114610f4b576040519150601f19603f3d011682016040523d82523d5f602084013e610f50565b606091505b5050905080610f855760405162461bcd60e51b81526020600482015260016024820152603360f91b60448201526064016105aa565b50600101610e46565b344314610fad5760405162461bcd60e51b81526004016105aa906136f4565b335f9081526002602052604090205460ff16610fdb5760405162461bcd60e51b81526004016105aa9061370f565b610baf8b8b8b8b8b8b8b8b8b8b8b61240d565b5f546001600160a01b03163314806110145750335f9081526003602052604090205460ff165b6110305760405162461bcd60e51b81526004016105aa9061378f565b61106b8282808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061279292505050565b5050565b5f546001600160a01b031633146110985760405162461bcd60e51b81526004016105aa906137aa565b5f5b818110156110fd57600160025f8585858181106110b9576110b96137e0565b90506020020160208101906110ce91906133ac565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161109a565b505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561114f575f5ffd5b505af11580156105ee573d5f5f3e3d5ffd5b5f546001600160a01b03163314806111875750335f9081526003602052604090205460ff165b6111a35760405162461bcd60e51b81526004016105aa9061378f565b61120460068054806020026020016040519081016040528092919081815260200182805480156111fa57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111dc575b5050505050612792565b565b5f546001600160a01b0316331461122f5760405162461bcd60e51b81526004016105aa906137aa565b6001600160a01b03165f908152600560205260409020805460ff19166001179055565b3443146112715760405162461bcd60e51b81526004016105aa906136f4565b8561127c3382611898565b6112985760405162461bcd60e51b81526004016105aa9061370f565b6106ae868686868661213f565b61106b82826128e7565b5f546001600160a01b03163314806112d55750335f9081526003602052604090205460ff165b6112f15760405162461bcd60e51b81526004016105aa9061378f565b6001600160a01b03165f908152600360205260409020805460ff19169055565b5f546001600160a01b03163314806113375750335f9081526003602052604090205460ff165b6113535760405162461bcd60e51b81526004016105aa9061378f565b6001600160a01b03165f908152600560205260409020805460ff19169055565b3443146113925760405162461bcd60e51b81526004016105aa906136f4565b8b61139d3382611898565b6113b95760405162461bcd60e51b81526004016105aa9061370f565b6113cc8c8c8c8c8c8c8c8c8c8c8c61240d565b50505050505050505050505050565b5f546001600160a01b03163314806114015750335f9081526003602052604090205460ff165b61141d5760405162461bcd60e51b81526004016105aa9061378f565b5f5b818110156110fd5761145683838381811061143c5761143c6137e0565b905060200201602081019061145191906133ac565b6129a9565b60010161141f565b5f546001600160a01b03163314806114845750335f9081526003602052604090205460ff165b6114a05760405162461bcd60e51b81526004016105aa9061378f565b6114a9816129a9565b50565b335f90815260046020526040902054829060ff166114dc5760405162461bcd60e51b81526004016105aa906137c5565b6001600160a01b0381165f9081526005602052604090205460ff166115275760405162461bcd60e51b81526020600482015260016024820152601d60fa1b60448201526064016105aa565b604051632e1a7d4d60e01b81526004810183905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b158015611571575f5ffd5b505af1158015611583573d5f5f3e3d5ffd5b505050505f836001600160a01b0316836040515f6040518083038185875af1925050503d805f81146115d0576040519150601f19603f3d011682016040523d82523d5f602084013e6115d5565b606091505b50509050806109de5760405162461bcd60e51b81526020600482015260016024820152603360f91b60448201526064016105aa565b335f90815260046020526040902054839060ff1661163a5760405162461bcd60e51b81526004016105aa906137c5565b6001600160a01b0381165f9081526005602052604090205460ff166116855760405162461bcd60e51b81526020600482015260016024820152601d60fa1b60448201526064016105aa565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906116b39087908690600401613807565b5f604051808303815f87803b1580156116ca575f5ffd5b505af115801561075e573d5f5f3e3d5ffd5b5f546001600160a01b03163314806117025750335f9081526003602052604090205460ff165b61171e5760405162461bcd60e51b81526004016105aa9061378f565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b6001600160a01b03841663095ea7b373ba12222222228d8ba445958a75a0704d566bf2c86117708560016137f4565b6040518363ffffffff1660e01b815260040161178d929190613807565b5f604051808303815f87803b1580156117a4575f5ffd5b505af11580156117b6573d5f5f3e3d5ffd5b50506040805160c0810182528881525f60208083018290526001600160a01b03808b1684860152891660608085019190915260808085018a90528551808401875284815260a086015285519081018652308082529281018490528086019290925281019190915291516352bbbe2960e01b815273ba12222222228d8ba445958a75a0704d566bf2c894506352bbbe29935061185892908690429060040161384e565b6020604051808303815f875af1158015611874573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190613929565b5f5f6040518061028001604052806102588152602001613b7261025891399050601d8311156118ca575f9150506118db565b60148302016020015160601c831490505b92915050565b416001600160a01b0382161461191d5760405162461bcd60e51b81526020600482015260016024820152604360f81b60448201526064016105aa565b5f85116119505760405162461bcd60e51b81526020600482015260016024820152604760f81b60448201526064016105aa565b61271082106119855760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064016105aa565b5f5f6119948c8c8c8c8c612a5c565b90925090505f87670de0b6b3a76400006119ae8885613940565b896119b88761396f565b6119c29190613940565b6119cc9190613989565b6119d691906139af565b6119e09190613989565b90505f8113611a155760405162461bcd60e51b81526020600482015260016024820152601360fa1b60448201526064016105aa565b5f612710611a238784613778565b611a2d9190613765565b905047811115611a8e576040515f90419047908381818185875af1925050503d805f8114611a76576040519150601f19603f3d011682016040523d82523d5f602084013e611a7b565b606091505b5050905080611a88575f5ffd5b50611ae1565b6040515f90419083908381818185875af1925050503d805f8114611acd576040519150601f19603f3d011682016040523d82523d5f602084013e611ad2565b606091505b5050905080611adf575f5ffd5b505b5050505050505050505050505050565b6001600160a01b03841663095ea7b386611b0c8660016137f4565b6040518363ffffffff1660e01b8152600401611b29929190613807565b5f604051808303815f87803b158015611b40575f5ffd5b505af1158015611b52573d5f5f3e3d5ffd5b5050604051638201aa3f60e01b81526001600160a01b038781166004830152602482018790528581166044830152606482018590525f19608483015288169250638201aa3f915060a4015b5f604051808303815f87803b158015611bb4575f5ffd5b505af1158015611bc6573d5f5f3e3d5ffd5b505050505050505050565b6040516370a0823160e01b81523060048201528690849086905f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611c1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3f9190613929565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611c86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611caa9190613929565b90505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b038b1601611dae57604051632e1a7d4d60e01b81526004810189905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b158015611d1c575f5ffd5b505af1158015611d2e573d5f5f3e3d5ffd5b5050604051632f85f1e760e21b81526001600160a01b038916925063be17c79c91508a90611d66908f9083908d905f906004016139db565b60206040518083038185885af1158015611d82573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611da79190613929565b9050611f39565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b038a1601611eba57611ddd8a89612b60565b604051632f85f1e760e21b81526001600160a01b0387169063be17c79c90611e0f908e908c908c905f906004016139db565b6020604051808303815f875af1158015611e2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4f9190613929565b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611e9e575f5ffd5b505af1158015611eb0573d5f5f3e3d5ffd5b5050505050611f39565b611ec48a89612b60565b604051632f85f1e760e21b81526001600160a01b0387169063be17c79c90611ef6908e908c908c905f906004016139db565b6020604051808303815f875af1158015611f12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190613929565b90505b8a15611f785786811015611f735760405162461bcd60e51b81526020600482015260016024820152606d60f81b60448201526064016105aa565b611fac565b86811015611fac5760405162461bcd60e51b81526020600482015260016024820152604d60f81b60448201526064016105aa565b69466c75696454314445585c8015611fd65760405162461bcd60e51b81526004016105aa90613a01565b6040516370a0823160e01b81523060048201525f906001600160a01b038816906370a0823190602401602060405180830381865afa15801561201a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203e9190613929565b90505f61204b84876137f4565b9050808210156120815760405162461bcd60e51b81526020600482015260016024820152603960f91b60448201526064016105aa565b6040516370a0823160e01b81523060048201525f906001600160a01b038916906370a0823190602401602060405180830381865afa1580156120c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e99190613929565b90505f6120f68d88613a1c565b90508082101561212c5760405162461bcd60e51b81526020600482015260016024820152607160f81b60448201526064016105aa565b5050505050505050505050505050505050565b60405163a9059cbb60e01b815281906001600160a01b0382169063a9059cbb9061216f9089908890600401613807565b5f604051808303815f87803b158015612186575f5ffd5b505af1158015612198573d5f5f3e3d5ffd5b50889250508615905061221357604080516020810182525f808252915163022c0d9f60e01b81526001600160a01b0384169263022c0d9f926121e1928992913091600401613a2f565b5f604051808303815f87803b1580156121f8575f5ffd5b505af115801561220a573d5f5f3e3d5ffd5b505050506106ae565b604080516020810182525f808252915163022c0d9f60e01b81526001600160a01b0384169263022c0d9f9261224e9289913091600401613a2f565b5f604051808303815f87803b158015612265575f5ffd5b505af1158015610baf573d5f5f3e3d5ffd5b846001600160601b038116606085901b178068556e697377617056335d505f5f826001600160a01b031663128acb083089898b6122c85773fffd8963efd1fc6a506488495d951d5263988d256122cf565b6401000276a45b604080516001600160a01b038c1660208201528e15158183015281518082038301815260608201928390526001600160e01b031960e089901b1690925261231d959493929190606401613a65565b60408051808303815f875af1158015612338573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235c9190613a9f565b909250905068556e697377617056335c801561238a5760405162461bcd60e51b81526004016105aa90613a01565b87156123d1578561239a8361396f565b10156123cc5760405162461bcd60e51b81526020600482015260016024820152606d60f81b60448201526064016105aa565b611bc6565b856123db8461396f565b1015611bc65760405162461bcd60e51b81526020600482015260016024820152604d60f81b60448201526064016105aa565b416001600160a01b038216146124495760405162461bcd60e51b81526020600482015260016024820152604360f81b60448201526064016105aa565b5f851161247c5760405162461bcd60e51b81526020600482015260016024820152604760f81b60448201526064016105aa565b61271082106124b15760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064016105aa565b5f5f6124c18d8d8d8d8d8d612b82565b90925090505f87670de0b6b3a76400006124db8986613778565b6124e58986613778565b6124ef9190613989565b6124f991906139af565b6125039190613989565b90505f81136125385760405162461bcd60e51b81526020600482015260016024820152601360fa1b60448201526064016105aa565b5f6127106125468784613778565b6125509190613765565b9050478111156125b1576040515f90419047908381818185875af1925050503d805f8114612599576040519150601f19603f3d011682016040523d82523d5f602084013e61259e565b606091505b50509050806125ab575f5ffd5b50611adf565b6040515f90419083908381818185875af1925050503d805f81146125f0576040519150601f19603f3d011682016040523d82523d5f602084013e6125f5565b606091505b5050905080612602575f5ffd5b50505050505050505050505050505050565b68556e697377617056335c6001600160601b038181169160601c9033168083146126665760405162461bcd60e51b81526020600482015260036024820152623bba3360e91b60448201526064016105aa565b5f8061267486880188613ac1565b91509150801561270d578884101561269e5760405162461bcd60e51b81526004016105aa90613af4565b5f68556e697377617056335d60405163a9059cbb60e01b815282906001600160a01b0382169063a9059cbb906126da9033908e90600401613807565b5f604051808303815f87803b1580156126f1575f5ffd5b505af1158015612703573d5f5f3e3d5ffd5b5050505050611bc6565b8784101561272d5760405162461bcd60e51b81526004016105aa90613af4565b5f68556e697377617056335d60405163a9059cbb60e01b815282906001600160a01b0382169063a9059cbb906127699033908d90600401613807565b5f604051808303815f87803b158015612780575f5ffd5b505af1158015611ae1573d5f5f3e3d5ffd5b5f5b815181101561289c575f8282815181106127b0576127b06137e0565b60209081029190910101516040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa925050508015612820575060408051601f3d908101601f1916820190925261281d91810190613929565b60015b61282b57505f61282e565b90505b80156128925760015460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb9261286892909116908590600401613807565b5f604051808303815f87803b15801561287f575f5ffd5b505af1925050508015612890575060015b505b5050600101612794565b506001546040515f916001600160a01b03169047908381818185875af1925050503d805f81146105ee576040519150601f19603f3d011682016040523d82523d5f602084013e6105ee565b69466c75696454314445585c6001600160601b038181169160601c90841680831461293a5760405162461bcd60e51b81526020600482015260036024820152623bba3360e91b60448201526064016105aa565b8382101561295a5760405162461bcd60e51b81526004016105aa90613af4565b5f69466c75696454314445585d60405163a9059cbb60e01b81526001600160a01b0386169063a9059cbb90611b9d907352aa899454998be5b000ad077a46bbe360f4e497908890600401613807565b5f5460405163095ea7b360e01b81526001600160a01b038381169263095ea7b3926129dd92909116905f1990600401613807565b5f604051808303815f87803b1580156129f4575f5ffd5b505af1158015612a06573d5f5f3e3d5ffd5b5050600680546001810182555f919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b0394909416939093179092555050565b5f80866001600160601b038116606087901b178068556e697377617056335d50806001600160a01b031663128acb0830898989898d604051602001612ab89291906001600160a01b039290921682521515602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612ae7959493929190613a65565b60408051808303815f875af1158015612b02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b269190613a9f565b909350915068556e697377617056335c8015612b545760405162461bcd60e51b81526004016105aa90613a01565b50509550959350505050565b6001600160601b038216606082901b178069466c75696454314445585d505050565b5f5f5f889050806001600160a01b0316637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612be89190613929565b8414612c1a5760405162461bcd60e51b81526020600482015260016024820152606b60f81b60448201526064016105aa565b5f5f826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612c58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7c9190613b25565b50915091508915612d2157806001600160701b03168811612cc35760405162461bcd60e51b81526020600482015260016024820152607360f81b60448201526064016105aa565b6103e5612cd96001600160701b0383168a613a1c565b612ce5906103e8613778565b612cef9190613765565b945084891015612cfd578894505b612d1a85826001600160701b0316846001600160701b0316612f00565b9350612db7565b816001600160701b03168811612d5d5760405162461bcd60e51b81526020600482015260016024820152605360f81b60448201526064016105aa565b6103e5612d736001600160701b0384168a613a1c565b612d7f906103e8613778565b612d899190613765565b945084891015612d97578894505b612db485836001600160701b0316836001600160701b0316612f00565b93505b60405163a9059cbb60e01b815287906001600160a01b0382169063a9059cbb90612de7908f908a90600401613807565b5f604051808303815f87803b158015612dfe575f5ffd5b505af1158015612e10573d5f5f3e3d5ffd5b505050508a15612e8857604080516020810182525f808252915163022c0d9f60e01b81526001600160a01b0387169263022c0d9f92612e56928a92913091600401613a2f565b5f604051808303815f87803b158015612e6d575f5ffd5b505af1158015612e7f573d5f5f3e3d5ffd5b50505050612ef1565b604080516020810182525f808252915163022c0d9f60e01b81526001600160a01b0387169263022c0d9f92612ec3928a913091600401613a2f565b5f604051808303815f87803b158015612eda575f5ffd5b505af1158015612eec573d5f5f3e3d5ffd5b505050505b50505050965096945050505050565b5f80612f0e856103e5613778565b90505f612f1b8483613778565b90505f82612f2b876103e8613778565b612f3591906137f4565b9050612f418183613765565b979650505050505050565b6001600160a01b03811681146114a9575f5ffd5b5f5f5f5f5f60a08688031215612f74575f5ffd5b853594506020860135612f8681612f4c565b93506040860135612f9681612f4c565b94979396509394606081013594506080013592915050565b80358015158114612fbd575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e031215612fdd575f5ffd5b8b359a5060208c0135612fef81612f4c565b9950612ffd60408d01612fae565b985060608c0135975060808c013561301481612f4c565b965060a08c013561302481612f4c565b955060c08c0135945060e08c013593506101008c013592506101208c013591506101408c013561305381612f4c565b809150509295989b509295989b9093969950565b5f5f5f5f5f5f60c0878903121561307c575f5ffd5b86359550602087013561308e81612f4c565b9450604087013561309e81612f4c565b93506060870135925060808701356130b581612f4c565b9598949750929591949360a090920135925050565b5f5f5f5f5f5f60c087890312156130df575f5ffd5b863595506020870135945060408701356130f881612f4c565b9350606087013561310881612f4c565b9598949750929560808101359460a0909101359350915050565b5f5f5f5f5f5f5f60e0888a031215613138575f5ffd5b87359650602088013561314a81612f4c565b955061315860408901612fae565b9450606088013561316881612f4c565b9350608088013561317881612f4c565b9699959850939692959460a0840135945060c09093013592915050565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156131af575f5ffd5b8a356131ba81612f4c565b99506131c860208c01612fae565b985060408b0135975060608b01356131df81612f4c565b965060808b01356131ef81612f4c565b955060a08b0135945060c08b0135935060e08b013592506101008b013591506101208b013561321d81612f4c565b809150509295989b9194979a5092959850565b5f5f5f5f5f60a08688031215613244575f5ffd5b853561324f81612f4c565b945061325d60208701612fae565b93506040860135925060608601359150608086013561327b81612f4c565b809150509295509295909350565b5f5f5f5f5f5f60c0878903121561329e575f5ffd5b8635955060208701356132b081612f4c565b94506132be60408801612fae565b9350606087013592506080870135915060a08701356132dc81612f4c565b809150509295509295509295565b5f5f83601f8401126132fa575f5ffd5b50813567ffffffffffffffff811115613311575f5ffd5b602083019150836020828501011115613328575f5ffd5b9250929050565b5f5f60208385031215613340575f5ffd5b823567ffffffffffffffff811115613356575f5ffd5b613362858286016132ea565b90969095509350505050565b5f5f5f5f5f5f60c08789031215613383575f5ffd5b863561338e81612f4c565b955061339c60208801612fae565b945060408701356130f881612f4c565b5f602082840312156133bc575f5ffd5b81356133c781612f4c565b9392505050565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e0312156133e9575f5ffd5b8b356133f481612f4c565b9a5061340260208d01612fae565b995060408c0135985060608c0135975060808c013561342081612f4c565b965060a08c0135955060c08c0135945060e08c013593506101008c013592506101208c013591506101408c013561305381612f4c565b5f5f5f5f60608587031215613469575f5ffd5b8435935060208501359250604085013567ffffffffffffffff81111561348d575f5ffd5b613499878288016132ea565b95989497509550505050565b5f602082840312156134b5575f5ffd5b5035919050565b5f5f5f5f5f60a086880312156134d0575f5ffd5b85356134db81612f4c565b945060208601356134eb81612f4c565b935060408601359250606086013561350281612f4c565b949793965091946080013592915050565b5f5f83601f840112613523575f5ffd5b50813567ffffffffffffffff81111561353a575f5ffd5b6020830191508360208260051b8501011115613328575f5ffd5b5f5f5f5f60408587031215613567575f5ffd5b843567ffffffffffffffff81111561357d575f5ffd5b61358987828801613513565b909550935050602085013567ffffffffffffffff8111156135a8575f5ffd5b61349987828801613513565b5f5f602083850312156135c5575f5ffd5b823567ffffffffffffffff8111156135db575f5ffd5b61336285828601613513565b5f5f604083850312156135f8575f5ffd5b823561360381612f4c565b946020939093013593505050565b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f03121561362d575f5ffd5b8c359b5060208d013561363f81612f4c565b9a5061364d60408e01612fae565b995060608d0135985060808d0135975060a08d013561366b81612f4c565b965060c08d0135955060e08d013594506101008d013593506101208d013592506101408d013591506101608d01356136a281612f4c565b809150509295989b509295989b509295989b565b5f5f5f606084860312156136c8575f5ffd5b83356136d381612f4c565b925060208401356136e381612f4c565b929592945050506040919091013590565b6020808252600190820152603160f91b604082015260600190565b6020808252600190820152603f60f81b604082015260600190565b634e487b7160e01b5f52601260045260245ffd5b5f8261374c5761374c61372a565b500690565b634e487b7160e01b5f52601160045260245ffd5b5f826137735761377361372a565b500490565b80820281158282048414176118db576118db613751565b6020808252600190820152601d60f91b604082015260600190565b6020808252600190820152602160f81b604082015260600190565b6020808252600190820152603b60f81b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b808201808211156118db576118db613751565b6001600160a01b03929092168252602082015260400190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60e08152845160e08201525f60208601516002811061387b57634e487b7160e01b5f52602160045260245ffd5b61010083015260408601516001600160a01b031661012083015260608601516138b06101408401826001600160a01b03169052565b50608086015161016083015260a086015160c06101808401526138d76101a0840182613820565b915050613917602083018680516001600160a01b039081168352602080830151151590840152604080830151909116908301526060908101511515910152565b60a082019390935260c0015292915050565b5f60208284031215613939575f5ffd5b5051919050565b8082025f8212600160ff1b8414161561395b5761395b613751565b81810583148215176118db576118db613751565b5f600160ff1b820161398357613983613751565b505f0390565b8181035f8312801583831316838312821617156139a8576139a8613751565b5092915050565b5f826139bd576139bd61372a565b600160ff1b82145f19841416156139d6576139d6613751565b500590565b9315158452602084019290925260408301526001600160a01b0316606082015260800190565b6020808252600190820152607960f81b604082015260600190565b818103818111156118db576118db613751565b84815283602082015260018060a01b0383166040820152608060608201525f613a5b6080830184613820565b9695505050505050565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f90612f4190830184613820565b5f5f60408385031215613ab0575f5ffd5b505080516020909101519092909150565b5f5f60408385031215613ad2575f5ffd5b8235613add81612f4c565b9150613aeb60208401612fae565b90509250929050565b6020808252600190820152606f60f81b604082015260600190565b80516001600160701b0381168114612fbd575f5ffd5b5f5f5f60608486031215613b37575f5ffd5b613b4084613b0f565b9250613b4e60208501613b0f565b9150604084015163ffffffff81168114613b66575f5ffd5b80915050925092509256fee75e6a3c6a329107482f820d07d07777040a1b49129c7f15f9e3a5cb40fd403cad331680b65f6b5ec2107b85fbb92698a43bf0e51840d116fad068fcaef9f6720d6b5c6c1c0026823ab039233bc9cd8cbd119420d79bc40671c0d4718ad6b11ddca0b344e6fec63723e5e45130e964fce5aa952e8c5597361d1fa2104d4cb82a7e05ac81e062ea0112b5b3d81ee8149c110f348493d74b645dbe617a05bd55a09d50006fe0bd757cd402e12121d03d527ae97cfa2559f2c1172ab1fab2d1513fd93d261760609a2ceda04c95fa70da7ca7fdbdf80f0cd3136f4c1a9aca372e59191cf8b72c609ed61f70536b8b978987763c77ce949fc6bd21841c3a6d402c693d68612cd60b07fb653c3ebdec76c6b04b7e6c6f206bbeeac975655460229b977d0616600dcf2c4247de6faf8309fe2e70b06b0e50c95bf69ef8ff856f6498995c0836451b26edf2744061cbf2271257e1bcfdb1814de89edc0def58687574480b8ee1e3408a16c826518093c74f6a4f49900d267acb8db04c40961473eb6ecccda9cb7ca639091ab2bcbbfc915d0491225ebe0218a8d442924597242bf6e21c163c7e89570056a241aa083f138c202da7840752b6bc63cfe7c5a51e8c4a502d57005206fc9ae2fb599e842e7de358d2f5da7d60e34d2ffdc69ebf391bfc93366d1b9e61c1914a0ea2b36c6904453f8d4e9d19db4e39de15ecd85448210ac02ad340268c645bb959459308d471f36f52a69048299581b8b204dc2901c933333c5efb91aa4453e2dcf9e6f55307656dfdacdb2d4c3d048e32fa21b35d5edf339a554aef3aa19dca9614781cfa1ec7ae9888ab15c00ff844daa2646970667358221220c377a55f2273419549d253419c5313c109964e15de1ec4c7c50612da6e68f31564736f6c634300081c0033
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing bytecode for vulnerabilities**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] # extract runtime_bytecode.hex contents
[codex:1276932] m=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata)
[codex:1276932] if not m:
[codex:1276932] print('not found');exit()
[codex:1276932] hexstr=m.group(1)[2:]
[codex:1276932] # remove possible trailing metadata? just keep all
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932] # disassemble simple
[codex:1276932] ops=[]
[codex:1276932] # opcodes mapping for push length
[codex:1276932] push_len = {i: i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # map names for some
[codex:1276932] names={0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xff:'SELFDESTRUCT',0x55:'SSTORE',0x54:'SLOAD',0x33:'CALLER',0x32:'ORIGIN',0x3d:'RETURNDATASIZE',0x5b:'JUMPDEST',0x57:'JUMPI',0x56:'JUMP',0x7f:'PUSH32'}
[codex:1276932] # For location tracking
[codex:1276932] i=0
[codex:1276932] while i < len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]
[codex:1276932] data=b[i+1:i+1+l]
[codex:1276932] ops.append((i, op, data))
[codex:1276932] i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i, op, None))
[codex:1276932] i+=1
[codex:1276932]
[codex:1276932] # Find delegatecall/selfdestruct
[codex:1276932] for target in (0xf4,0xff):
[codex:1276932] locs=[o for o in ops if o[1]==target]
[codex:1276932] print(hex(target), 'count', len(locs))
[codex:1276932] print('locs', [hex(o[0]) for o in locs][:20])
[codex:1276932]
[codex:1276932] # find CALLs with value potentially nonzero? Hard. But list call positions
[codex:1276932] call_locs=[o for o in ops if o[1]==0xf1]
[codex:1276932] print('CALL count', len(call_locs), 'first locs', [hex(o[0]) for o in call_locs[:20]])
[codex:1276932]
[codex:1276932] # find SELFDESTRUCT destinations by pattern: PUSH/?? before 0xff maybe.
[codex:1276932] # We'll print small window around each SELFDESTRUCT
[codex:1276932] for loc,op,_ in [o for o in ops if o[1]==0xff]:
[codex:1276932] # show previous 5 ops
[codex:1276932] idx = [i for i,x in enumerate(ops) if x[0]==loc][0]
[codex:1276932] window=ops[max(0,idx-6):idx+1]
[codex:1276932] # represent
[codex:1276932] def repr_op(o):
[codex:1276932] loc,op,data=o
[codex:1276932] if op in push_len:
[codex:1276932] return f\"{hex(loc)} PUSH{push_len[op]} {data.hex()}\"
[codex:1276932] else:
[codex:1276932] return f\"{hex(loc)} {names.get(op,hex(op))}\"
[codex:1276932] print('window:', '; '.join(repr_op(o) for o in window))
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 55ms:
[codex:1276932] 0xf4 count 0
[codex:1276932] locs []
[codex:1276932] 0xff count 0
[codex:1276932] locs []
[codex:1276932] CALL count 33 first locs ['0xc46', '0xe30', '0xf1d', '0x1152', '0x1574', '0x15a2', '0x16cd', '0x17a7', '0x1865', '0x1a48', '0x1a9f', '0x1b43', '0x1bb7', '0x1d1f', '0x1d73', '0x1e1c', '0x1ea1', '0x1f03', '0x2189', '0x21fb']
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing contract calls and storage writes for vulnerabilities**
[codex:1276932]
[codex:1276932] I'm examining CALL instructions to detect if any ETH transfers with non-zero value could be unprotected and identifying SSTORE operations to check for unauthorized state changes. I'll write a Python script to disassemble and annotate opcodes around CALLs and SSTOREs to evaluate access control and potential risks methodically.
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932] # disassemble
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] names={0x55:'SSTORE',0x54:'SLOAD',0x33:'CALLER',0x32:'ORIGIN',0x5b:'JUMPDEST',0x57:'JUMPI',0x56:'JUMP',0x14:'EQ',0x15:'ISZERO',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x34:'CALLVALUE',0x43:'NUMBER',0x42:'TIMESTAMP'}
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] # find SSTORE
[codex:1276932] sstore_idxs=[idx for idx,o in enumerate(ops) if o[1]==0x55]
[codex:1276932] print('SSTORE count', len(sstore_idxs))
[codex:1276932]
[codex:1276932] # print context around each sstore
[codex:1276932] for idx in sstore_idxs:
[codex:1276932] window=ops[max(0,idx-12):idx+1]
[codex:1276932] def fmt(o):
[codex:1276932] loc,op,data=o
[codex:1276932] if op in push_len:
[codex:1276932] return f\"{hex(loc)} PUSH{push_len[op]} {data.hex()}\"
[codex:1276932] else:
[codex:1276932] return f\"{hex(loc)} {names.get(op,hex(op))}\"
[codex:1276932] print('--- SSTORE at', hex(ops[idx][0]))
[codex:1276932] print(' ; '.join(fmt(o) for o in window))
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 33ms:
[codex:1276932] SSTORE count 13
[codex:1276932] --- SSTORE at 0xb01
[codex:1276932] 0xaf1 PUSH1 04 ; 0xaf3 PUSH1 20 ; 0xaf5 0x52 ; 0xaf6 PUSH1 40 ; 0xaf8 0x90 ; 0xaf9 0x20 ; 0xafa 0x80 ; 0xafb SLOAD ; 0xafc PUSH1 ff ; 0xafe 0x19 ; 0xaff 0x16 ; 0xb00 0x90 ; 0xb01 SSTORE
[codex:1276932] --- SSTORE at 0xb4d
[codex:1276932] 0xb3e 0x52 ; 0xb3f PUSH1 40 ; 0xb41 0x90 ; 0xb42 0x20 ; 0xb43 0x80 ; 0xb44 SLOAD ; 0xb45 PUSH1 ff ; 0xb47 0x19 ; 0xb48 0x16 ; 0xb49 PUSH1 01 ; 0xb4b 0x17 ; 0xb4c 0x90 ; 0xb4d SSTORE
[codex:1276932] --- SSTORE at 0xc9e
[codex:1276932] 0xc91 PUSH1 a0 ; 0xc93 0x1b ; 0xc94 0x3 ; 0xc95 0x92 ; 0xc96 0x90 ; 0xc97 0x92 ; 0xc98 0x16 ; 0xc99 0x91 ; 0xc9a 0x90 ; 0xc9b 0x91 ; 0xc9c 0x17 ; 0xc9d 0x90 ; 0xc9e SSTORE
[codex:1276932] --- SSTORE at 0xd5a
[codex:1276932] 0xd4a PUSH1 02 ; 0xd4c PUSH1 20 ; 0xd4e 0x52 ; 0xd4f PUSH1 40 ; 0xd51 0x90 ; 0xd52 0x20 ; 0xd53 0x80 ; 0xd54 SLOAD ; 0xd55 PUSH1 ff ; 0xd57 0x19 ; 0xd58 0x16 ; 0xd59 0x90 ; 0xd5a SSTORE
[codex:1276932] --- SSTORE at 0x10f5
[codex:1276932] 0x10e8 SLOAD ; 0x10e9 PUSH1 ff ; 0x10eb 0x19 ; 0x10ec 0x16 ; 0x10ed 0x91 ; 0x10ee ISZERO ; 0x10ef ISZERO ; 0x10f0 0x91 ; 0x10f1 0x90 ; 0x10f2 0x91 ; 0x10f3 0x17 ; 0x10f4 0x90 ; 0x10f5 SSTORE
[codex:1276932] --- SSTORE at 0x1250
[codex:1276932] 0x1241 0x52 ; 0x1242 PUSH1 40 ; 0x1244 0x90 ; 0x1245 0x20 ; 0x1246 0x80 ; 0x1247 SLOAD ; 0x1248 PUSH1 ff ; 0x124a 0x19 ; 0x124b 0x16 ; 0x124c PUSH1 01 ; 0x124e 0x17 ; 0x124f 0x90 ; 0x1250 SSTORE
[codex:1276932] --- SSTORE at 0x130f
[codex:1276932] 0x12ff PUSH1 03 ; 0x1301 PUSH1 20 ; 0x1303 0x52 ; 0x1304 PUSH1 40 ; 0x1306 0x90 ; 0x1307 0x20 ; 0x1308 0x80 ; 0x1309 SLOAD ; 0x130a PUSH1 ff ; 0x130c 0x19 ; 0x130d 0x16 ; 0x130e 0x90 ; 0x130f SSTORE
[codex:1276932] --- SSTORE at 0x1371
[codex:1276932] 0x1361 PUSH1 05 ; 0x1363 PUSH1 20 ; 0x1365 0x52 ; 0x1366 PUSH1 40 ; 0x1368 0x90 ; 0x1369 0x20 ; 0x136a 0x80 ; 0x136b SLOAD ; 0x136c PUSH1 ff ; 0x136e 0x19 ; 0x136f 0x16 ; 0x1370 0x90 ; 0x1371 SSTORE
[codex:1276932] --- SSTORE at 0x173f
[codex:1276932] 0x1730 0x52 ; 0x1731 PUSH1 40 ; 0x1733 0x90 ; 0x1734 0x20 ; 0x1735 0x80 ; 0x1736 SLOAD ; 0x1737 PUSH1 ff ; 0x1739 0x19 ; 0x173a 0x16 ; 0x173b PUSH1 01 ; 0x173d 0x17 ; 0x173e 0x90 ; 0x173f SSTORE
[codex:1276932] --- SSTORE at 0x2a12
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing SSTORE instructions and metadata boundary**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932]
[codex:1276932] # names map
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 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:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] # index mapping
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] # function to format window
[codex:1276932]
[codex:1276932] def fmt(o):
[codex:1276932] loc,op,data=o
[codex:1276932] if op in push_len:
[codex:1276932] return f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\"
[codex:1276932] else:
[codex:1276932] return f\"{loc:04x}: {names.get(op,hex(op))}\"
[codex:1276932]
[codex:1276932] # for each sstore, show 40 ops before
[codex:1276932] for loc,op,data in [o for o in ops if o[1]==0x55][:]:
[codex:1276932] idx=loc_to_idx[loc]
[codex:1276932] start=max(0,idx-25)
[codex:1276932] window=ops[start:idx+6]
[codex:1276932] print('\\n=== SSTORE at', hex(loc), '===')
[codex:1276932] for o in window:
[codex:1276932] print(fmt(o))
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 39ms:
[codex:1276932]
[codex:1276932] === SSTORE at 0xb01 ===
[codex:1276932] 0adf: PUSH2 0x378f
[codex:1276932] 0ae2: JUMP
[codex:1276932] 0ae3: JUMPDEST
[codex:1276932] 0ae4: PUSH1 0x01
[codex:1276932] 0ae6: PUSH1 0x01
[codex:1276932] 0ae8: PUSH1 0xa0
[codex:1276932] 0aea: SHL
[codex:1276932] 0aeb: SUB
[codex:1276932] 0aec: AND
[codex:1276932] 0aed: 0x5f
[codex:1276932] 0aee: 0x90
[codex:1276932] 0aef: 0x81
[codex:1276932] 0af0: MSTORE
[codex:1276932] 0af1: PUSH1 0x04
[codex:1276932] 0af3: PUSH1 0x20
[codex:1276932] 0af5: MSTORE
[codex:1276932] 0af6: PUSH1 0x40
[codex:1276932] 0af8: 0x90
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing SSTORE instructions for access control**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # names
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 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:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] def fmt(o):
[codex:1276932] loc,op,data=o
[codex:1276932] if op in push_len:
[codex:1276932] return f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\"
[codex:1276932] else:
[codex:1276932] return f\"{loc:04x}: {names.get(op,hex(op))}\"
[codex:1276932]
[codex:1276932] start=loc_to_idx[0x2a40]-30
[codex:1276932] end=loc_to_idx[0x2a5c]+30
[codex:1276932] for o in ops[start:end]:
[codex:1276932] print(fmt(o))
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 37ms:
[codex:1276932] 29fe: JUMPI
[codex:1276932] 29ff: RETURNDATASIZE
[codex:1276932] 2a00: 0x5f
[codex:1276932] 2a01: 0x5f
[codex:1276932] 2a02: RETURNDATACOPY
[codex:1276932] 2a03: RETURNDATASIZE
[codex:1276932] 2a04: 0x5f
[codex:1276932] 2a05: REVERT
[codex:1276932] 2a06: JUMPDEST
[codex:1276932] 2a07: POP
[codex:1276932] 2a08: POP
[codex:1276932] 2a09: PUSH1 0x06
[codex:1276932] 2a0b: 0x80
[codex:1276932] 2a0c: SLOAD
[codex:1276932] 2a0d: PUSH1 0x01
[codex:1276932] 2a0f: 0x81
[codex:1276932] 2a10: ADD
[codex:1276932] 2a11: 0x82
[codex:1276932] 2a12: SSTORE
[codex:1276932] 2a13: 0x5f
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing storage slot updates and function calls**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] # find occurrences of push2 0x2a5c and 0x29a9 and 0x2a06
[codex:1276932] for target in [0x2a5c,0x29a9,0x2a06]:
[codex:1276932] pattern=f\"61{target:04x}\".lower()
[codex:1276932] print('target',hex(target),'occurs',hexstr.count(pattern))
[codex:1276932] # print offsets
[codex:1276932] idxs=[m.start() for m in re.finditer(pattern, hexstr)]
[codex:1276932] print('offsets', idxs[:10])
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 27ms:
[codex:1276932] target 0x2a5c occurs 1
[codex:1276932] offsets [13088]
[codex:1276932] target 0x29a9 occurs 2
[codex:1276932] offsets [10404, 10570]
[codex:1276932] target 0x2a06 occurs 1
[codex:1276932] offsets [21494]
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Locating push2 0x2a5c instruction**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # names map
[codex:1276932] names={0x5b:'JUMPDEST',0x56:'JUMP',0x57:'JUMPI',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0x55:'SSTORE',0x54:'SLOAD',0x33:'CALLER',0x14:'EQ',0x15:'ISZERO'}
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] # find push2 0x2a5c
[codex:1276932] for idx,(loc,op,data) in enumerate(ops):
[codex:1276932] if op==0x61 and data==bytes.fromhex('2a5c'):
[codex:1276932] start=max(0,idx-15); end=idx+10
[codex:1276932] print('--- around push2 0x2a5c at',hex(loc))
[codex:1276932] for o in ops[start:end]:
[codex:1276932] loc,op,data=o
[codex:1276932] if op in push_len:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 34ms:
[codex:1276932] --- around push2 0x2a5c at 0x1990
[codex:1276932] 197c: 0x1
[codex:1276932] 197d: 0x52
[codex:1276932] 197e: PUSH1 0x64
[codex:1276932] 1980: 0x1
[codex:1276932] 1981: PUSH2 0x05aa
[codex:1276932] 1984: JUMP
[codex:1276932] 1985: JUMPDEST
[codex:1276932] 1986: 0x5f
[codex:1276932] 1987: 0x5f
[codex:1276932] 1988: PUSH2 0x1994
[codex:1276932] 198b: 0x8c
[codex:1276932] 198c: 0x8c
[codex:1276932] 198d: 0x8c
[codex:1276932] 198e: 0x8c
[codex:1276932] 198f: 0x8c
[codex:1276932] 1990: PUSH2 0x2a5c
[codex:1276932] 1993: JUMP
[codex:1276932] 1994: JUMPDEST
[codex:1276932] 1995: 0x90
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Tracing function call and access control**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 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:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] # locate JUMPDEST before 0x1986
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932] idx=loc_to_idx[0x1986]
[codex:1276932] # find previous jumpdest in ops
[codex:1276932] prev_idx=idx
[codex:1276932] while prev_idx>0 and ops[prev_idx][1]"'!=0x5b:
[codex:1276932] prev_idx-=1
[codex:1276932] print('"'prev jumpdest', hex(ops[prev_idx][0]))
[codex:1276932]
[codex:1276932] start=max(0,prev_idx-20); end=idx+30
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 34ms:
[codex:1276932] prev jumpdest 0x1985
[codex:1276932] 1968: PUSH1 0x04
[codex:1276932] 196a: 0x82
[codex:1276932] 196b: ADD
[codex:1276932] 196c: MSTORE
[codex:1276932] 196d: PUSH1 0x01
[codex:1276932] 196f: PUSH1 0x24
[codex:1276932] 1971: 0x82
[codex:1276932] 1972: ADD
[codex:1276932] 1973: MSTORE
[codex:1276932] 1974: PUSH1 0x21
[codex:1276932] 1976: PUSH1 0xf9
[codex:1276932] 1978: SHL
[codex:1276932] 1979: PUSH1 0x44
[codex:1276932] 197b: 0x82
[codex:1276932] 197c: ADD
[codex:1276932] 197d: MSTORE
[codex:1276932] 197e: PUSH1 0x64
[codex:1276932] 1980: ADD
[codex:1276932] 1981: PUSH2 0x05aa
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing potential function entry and storage writes**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] # display around 0x2a12-0x2a5c
[codex:1276932] start=loc_to_idx[0x29ff]-20
[codex:1276932] end=loc_to_idx[0x2a5c]+20
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 40ms:
[codex:1276932] 29e7: 0x87
[codex:1276932] 29e8: 0x80
[codex:1276932] 29e9: EXTCODESIZE
[codex:1276932] 29ea: ISZERO
[codex:1276932] 29eb: 0x80
[codex:1276932] 29ec: ISZERO
[codex:1276932] 29ed: PUSH2 0x29f4
[codex:1276932] 29f0: JUMPI
[codex:1276932] 29f1: PUSH0
[codex:1276932] 29f2: PUSH0
[codex:1276932] 29f3: REVERT
[codex:1276932] 29f4: JUMPDEST
[codex:1276932] 29f5: POP
[codex:1276932] 29f6: GAS
[codex:1276932] 29f7: CALL
[codex:1276932] 29f8: ISZERO
[codex:1276932] 29f9: 0x80
[codex:1276932] 29fa: ISZERO
[codex:1276932] 29fb: PUSH2 0x2a06
[codex:1276932] 29fe: JUMPI
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing storage slot calculation and potential exploits**
[codex:1276932]
[codex:1276932] I'm examining how storage slots are computed using MSTORE and PUSH instructions, noticing they're adding constants instead of hashing keys with keccak256. This might indicate linear slot calculation in mappings. I'm also considering authorization checks using tx.origin and the presence of ecrecover calls via STATICCALL to address 0x01, planning to scan for such opcodes to find signature verification patterns.
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={0xfa:'STATICCALL',0xf1:'CALL',0x5b:'JUMPDEST'}
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] statics=[(loc,idx) for idx,(loc,op,_) in enumerate(ops) if op==0xfa]
[codex:1276932] print('STATICCALL count', len(statics))
[codex:1276932] # show context around each
[codex:1276932] for loc,idx in statics:
[codex:1276932] start=max(0,idx-10); end=idx+5
[codex:1276932] print('\\n-- STATICCALL at', hex(loc))
[codex:1276932] for loc2,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] print(f\"{loc2:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc2:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 34ms:
[codex:1276932] STATICCALL count 10
[codex:1276932]
[codex:1276932] -- STATICCALL at 0x1c0c
[codex:1276932] 1c00: 0x1
[codex:1276932] 1c01: PUSH1 0x20
[codex:1276932] 1c03: PUSH1 0x40
[codex:1276932] 1c05: 0x51
[codex:1276932] 1c06: 0x80
[codex:1276932] 1c07: 0x83
[codex:1276932] 1c08: 0x3
[codex:1276932] 1c09: 0x81
[codex:1276932] 1c0a: 0x86
[codex:1276932] 1c0b: 0x5a
[codex:1276932] 1c0c: STATICCALL
[codex:1276932] 1c0d: 0x15
[codex:1276932] 1c0e: 0x80
[codex:1276932] 1c0f: 0x15
[codex:1276932] 1c10: PUSH2 0x1c1b
[codex:1276932]
[codex:1276932] -- STATICCALL at 0x1c77
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing CALL instructions for potential ETH transfers**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] call_idxs=[idx for idx,(loc,op,_) in enumerate(ops) if op==0xf1]
[codex:1276932] print('CALL count', len(call_idxs))
[codex:1276932]
[codex:1276932] # show context around each call
[codex:1276932] for idx in call_idxs:
[codex:1276932] loc=ops[idx][0]
[codex:1276932] start=max(0,idx-12); end=idx+6
[codex:1276932] print('\\n-- CALL at', hex(loc))
[codex:1276932] for loc2,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc2:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc2:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc2:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 35ms:
[codex:1276932] CALL count 33
[codex:1276932]
[codex:1276932] -- CALL at 0xc46
[codex:1276932] 0c38: EXTCODESIZE
[codex:1276932] 0c39: ISZERO
[codex:1276932] 0c3a: 0x80
[codex:1276932] 0c3b: ISZERO
[codex:1276932] 0c3c: PUSH2 0x0c43
[codex:1276932] 0c3f: JUMPI
[codex:1276932] 0c40: PUSH0
[codex:1276932] 0c41: PUSH0
[codex:1276932] 0c42: REVERT
[codex:1276932] 0c43: JUMPDEST
[codex:1276932] 0c44: POP
[codex:1276932] 0c45: GAS
[codex:1276932] 0c46: CALL
[codex:1276932] 0c47: ISZERO
[codex:1276932] 0c48: 0x80
[codex:1276932] 0c49: ISZERO
[codex:1276932] 0c4a: PUSH2 0x0a3f
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing CALL argument sources**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] # disassemble
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] # show window around 0x1a48
[codex:1276932] center=0x1a48
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-30; end=idx+20
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 35ms:
[codex:1276932] 1a23: JUMPDEST
[codex:1276932] 1a24: PUSH2 0x1a2d
[codex:1276932] 1a27: 0x91
[codex:1276932] 1a28: 0x90
[codex:1276932] 1a29: PUSH2 0x3765
[codex:1276932] 1a2c: JUMP
[codex:1276932] 1a2d: JUMPDEST
[codex:1276932] 1a2e: 0x90
[codex:1276932] 1a2f: POP
[codex:1276932] 1a30: SELFBALANCE
[codex:1276932] 1a31: 0x81
[codex:1276932] 1a32: GT
[codex:1276932] 1a33: ISZERO
[codex:1276932] 1a34: PUSH2 0x1a8e
[codex:1276932] 1a37: JUMPI
[codex:1276932] 1a38: PUSH1 0x40
[codex:1276932] 1a3a: MLOAD
[codex:1276932] 1a3b: PUSH0
[codex:1276932] 1a3c: 0x90
[codex:1276932] 1a3d: COINBASE
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing EVM call and stack operations**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] start=loc_to_idx[0x1a80]-10
[codex:1276932] end=loc_to_idx[0x1ab0]+10
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 36ms:
[codex:1276932] 1a75: JUMP
[codex:1276932] 1a76: JUMPDEST
[codex:1276932] 1a77: PUSH1 0x60
[codex:1276932] 1a79: 0x91
[codex:1276932] 1a7a: POP
[codex:1276932] 1a7b: JUMPDEST
[codex:1276932] 1a7c: POP
[codex:1276932] 1a7d: POP
[codex:1276932] 1a7e: 0x90
[codex:1276932] 1a7f: POP
[codex:1276932] 1a80: 0x80
[codex:1276932] 1a81: PUSH2 0x1a88
[codex:1276932] 1a84: JUMPI
[codex:1276932] 1a85: PUSH0
[codex:1276932] 1a86: PUSH0
[codex:1276932] 1a87: REVERT
[codex:1276932] 1a88: JUMPDEST
[codex:1276932] 1a89: POP
[codex:1276932] 1a8a: PUSH2 0x1ae1
[codex:1276932] 1a8d: JUMP
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing call paths and potential ETH transfers**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] # find CALL with CALLER within 12 ops before
[codex:1276932] for idx,(loc,op,data) in enumerate(ops):
[codex:1276932] if op==0xf1:
[codex:1276932] window=ops[max(0,idx-12):idx]
[codex:1276932] if any(o[1]==0x33 for o in window):
[codex:1276932] print('CALL at',hex(loc),'has CALLER within 12 ops before at', [hex(o[0]) for o in window if o[1]==0x33])
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 36ms:
[codex:1276932]
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing ownership and access control checks**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] # show a window around 0xc7e JUMPDEST (owner update)
[codex:1276932] center=0xc7e
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-40; end=idx+30
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 37ms:
[codex:1276932] 0c45: GAS
[codex:1276932] 0c46: CALL
[codex:1276932] 0c47: ISZERO
[codex:1276932] 0c48: 0x80
[codex:1276932] 0c49: ISZERO
[codex:1276932] 0c4a: PUSH2 0x0a3f
[codex:1276932] 0c4d: JUMPI
[codex:1276932] 0c4e: RETURNDATASIZE
[codex:1276932] 0c4f: PUSH0
[codex:1276932] 0c50: PUSH0
[codex:1276932] 0c51: RETURNDATACOPY
[codex:1276932] 0c52: RETURNDATASIZE
[codex:1276932] 0c53: PUSH0
[codex:1276932] 0c54: REVERT
[codex:1276932] 0c55: JUMPDEST
[codex:1276932] 0c56: PUSH0
[codex:1276932] 0c57: SLOAD
[codex:1276932] 0c58: PUSH1 0x01
[codex:1276932] 0c5a: PUSH1 0x01
[codex:1276932] 0c5c: PUSH1 0xa0
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Verifying owner checks on storage updates**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] center=0xb2c
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-40; end=idx+30
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 36ms:
[codex:1276932] 0af1: PUSH1 0x04
[codex:1276932] 0af3: PUSH1 0x20
[codex:1276932] 0af5: MSTORE
[codex:1276932] 0af6: PUSH1 0x40
[codex:1276932] 0af8: 0x90
[codex:1276932] 0af9: SHA3
[codex:1276932] 0afa: 0x80
[codex:1276932] 0afb: SLOAD
[codex:1276932] 0afc: PUSH1 0xff
[codex:1276932] 0afe: NOT
[codex:1276932] 0aff: AND
[codex:1276932] 0b00: 0x90
[codex:1276932] 0b01: SSTORE
[codex:1276932] 0b02: JUMP
[codex:1276932] 0b03: JUMPDEST
[codex:1276932] 0b04: PUSH0
[codex:1276932] 0b05: SLOAD
[codex:1276932] 0b06: PUSH1 0x01
[codex:1276932] 0b08: PUSH1 0x01
[codex:1276932] 0b0a: PUSH1 0xa0
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing storage updates and owner checks**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] center=0xd3c
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-30; end=idx+40
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 41ms:
[codex:1276932] 0d0e: CALLER
[codex:1276932] 0d0f: PUSH0
[codex:1276932] 0d10: 0x90
[codex:1276932] 0d11: 0x81
[codex:1276932] 0d12: MSTORE
[codex:1276932] 0d13: PUSH1 0x03
[codex:1276932] 0d15: PUSH1 0x20
[codex:1276932] 0d17: MSTORE
[codex:1276932] 0d18: PUSH1 0x40
[codex:1276932] 0d1a: 0x90
[codex:1276932] 0d1b: SHA3
[codex:1276932] 0d1c: SLOAD
[codex:1276932] 0d1d: PUSH1 0xff
[codex:1276932] 0d1f: AND
[codex:1276932] 0d20: JUMPDEST
[codex:1276932] 0d21: PUSH2 0x0d3c
[codex:1276932] 0d24: JUMPI
[codex:1276932] 0d25: PUSH1 0x40
[codex:1276932] 0d27: MLOAD
[codex:1276932] 0d28: PUSH3 0x461bcd
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing SSTORE access protections**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] # include PUSH0
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] center=0x109a
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-40; end=idx+40
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 37ms:
[codex:1276932] 1061: MSTORE
[codex:1276932] 1062: POP
[codex:1276932] 1063: PUSH2 0x2792
[codex:1276932] 1066: 0x92
[codex:1276932] 1067: POP
[codex:1276932] 1068: POP
[codex:1276932] 1069: POP
[codex:1276932] 106a: JUMP
[codex:1276932] 106b: JUMPDEST
[codex:1276932] 106c: POP
[codex:1276932] 106d: POP
[codex:1276932] 106e: JUMP
[codex:1276932] 106f: JUMPDEST
[codex:1276932] 1070: PUSH0
[codex:1276932] 1071: SLOAD
[codex:1276932] 1072: PUSH1 0x01
[codex:1276932] 1074: PUSH1 0x01
[codex:1276932] 1076: PUSH1 0xa0
[codex:1276932] 1078: SHL
[codex:1276932] 1079: SUB
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing role-based access and reentrancy risks**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] center=0x122f
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-40; end=idx+40
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 37ms:
[codex:1276932] 11f4: 0x83
[codex:1276932] 11f5: GT
[codex:1276932] 11f6: PUSH2 0x11dc
[codex:1276932] 11f9: JUMPI
[codex:1276932] 11fa: JUMPDEST
[codex:1276932] 11fb: POP
[codex:1276932] 11fc: POP
[codex:1276932] 11fd: POP
[codex:1276932] 11fe: POP
[codex:1276932] 11ff: POP
[codex:1276932] 1200: PUSH2 0x2792
[codex:1276932] 1203: JUMP
[codex:1276932] 1204: JUMPDEST
[codex:1276932] 1205: JUMP
[codex:1276932] 1206: JUMPDEST
[codex:1276932] 1207: PUSH0
[codex:1276932] 1208: SLOAD
[codex:1276932] 1209: PUSH1 0x01
[codex:1276932] 120b: PUSH1 0x01
[codex:1276932] 120d: PUSH1 0xa0
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Inspecting owner checks around storage operations**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] center=0x12f1
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-40; end=idx+40
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 43ms:
[codex:1276932] 12b6: PUSH1 0xa0
[codex:1276932] 12b8: SHL
[codex:1276932] 12b9: SUB
[codex:1276932] 12ba: AND
[codex:1276932] 12bb: CALLER
[codex:1276932] 12bc: EQ
[codex:1276932] 12bd: 0x80
[codex:1276932] 12be: PUSH2 0x12d5
[codex:1276932] 12c1: JUMPI
[codex:1276932] 12c2: POP
[codex:1276932] 12c3: CALLER
[codex:1276932] 12c4: PUSH0
[codex:1276932] 12c5: 0x90
[codex:1276932] 12c6: 0x81
[codex:1276932] 12c7: MSTORE
[codex:1276932] 12c8: PUSH1 0x03
[codex:1276932] 12ca: PUSH1 0x20
[codex:1276932] 12cc: MSTORE
[codex:1276932] 12cd: PUSH1 0x40
[codex:1276932] 12cf: 0x90
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Analyzing ownership and mapping checks in bytecode**
[codex:1276932] exec
[codex:1276932] /bin/bash -lc "python3 - <<'PY'
[codex:1276932] import re
[codex:1276932] from pathlib import Path
[codex:1276932] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1276932] hexstr=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)',hexdata).group(1)[2:]
[codex:1276932] b=bytes.fromhex(hexstr)
[codex:1276932]
[codex:1276932] push_len={i:i-0x5f for i in range(0x60,0x80)}
[codex:1276932] push_len[0x5f]=0
[codex:1276932]
[codex:1276932] names={
[codex:1276932] 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:1276932] 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:1276932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1276932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1276932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1276932] }
[codex:1276932]
[codex:1276932] ops=[]
[codex:1276932] i=0
[codex:1276932] while i<len(b):
[codex:1276932] op=b[i]
[codex:1276932] if op in push_len:
[codex:1276932] l=push_len[op]; data=b[i+1:i+1+l]; ops.append((i,op,data)); i+=1+l
[codex:1276932] else:
[codex:1276932] ops.append((i,op,None)); i+=1
[codex:1276932]
[codex:1276932] loc_to_idx={loc:idx for idx,(loc,_,_) in enumerate(ops)}
[codex:1276932]
[codex:1276932] center=0x1702
[codex:1276932] idx=loc_to_idx[center]
[codex:1276932] start=idx-40; end=idx+40
[codex:1276932] for loc,op,data in ops[start:end]:
[codex:1276932] if op in push_len:
[codex:1276932] if op==0x5f:
[codex:1276932] print(f\"{loc:04x}: PUSH0\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: PUSH{push_len[op]} 0x{data.hex()}\")
[codex:1276932] else:
[codex:1276932] print(f\"{loc:04x}: {names.get(op,hex(op))}\")
[codex:1276932] PY" in /tmp/codex-multi-pefp_pui succeeded in 38ms:
[codex:1276932] 16cf: 0x80
[codex:1276932] 16d0: ISZERO
[codex:1276932] 16d1: PUSH2 0x075e
[codex:1276932] 16d4: JUMPI
[codex:1276932] 16d5: RETURNDATASIZE
[codex:1276932] 16d6: PUSH0
[codex:1276932] 16d7: PUSH0
[codex:1276932] 16d8: RETURNDATACOPY
[codex:1276932] 16d9: RETURNDATASIZE
[codex:1276932] 16da: PUSH0
[codex:1276932] 16db: REVERT
[codex:1276932] 16dc: JUMPDEST
[codex:1276932] 16dd: PUSH0
[codex:1276932] 16de: SLOAD
[codex:1276932] 16df: PUSH1 0x01
[codex:1276932] 16e1: PUSH1 0x01
[codex:1276932] 16e3: PUSH1 0xa0
[codex:1276932] 16e5: SHL
[codex:1276932] 16e6: SUB
[codex:1276932] 16e7: AND
[codex:1276932]
[codex:1276932] thinking
[codex:1276932] **Finalizing exploit analysis and JSON output**
[codex:1276932]
[codex:1276932] I'm concluding that no concrete exploitable profit path is found from the bytecode analysis, so I'll prepare a JSON response with no_findings set to true, an appropriate summary message, and an empty findings array, all formatted per the required schema.
[codex:1276932] codex
[codex:1276932] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode.","findings":[]}
[codex:1276932] tokens used
[codex:1276932] 124,566
[codex:1276932] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode.","findings":[]}
{
"codex": {
"ran_at": "2026-01-01T20:02:10.843211+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode.",
"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 0x0204 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0x5ca7ab59 00000018: GT 00000019: PUSH2 0x0129 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0x94abab1d 00000023: GT 00000024: PUSH2 0x00a8 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0xb9b4aacd 0000002e: GT 0000002f: PUSH2 0x006d 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xb9b4aacd 00000039: EQ 0000003a: PUSH2 0x050f 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xc7137f5e 00000044: EQ 00000045: PUSH2 0x052e 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xe1477062 0000004f: EQ 00000050: PUSH2 0x054d 00000053: JUMPI 00000054: DUP1 00000055: PUSH4 0xe98d8c3a 0000005a: EQ 0000005b: PUSH2 0x056c 0000005e: JUMPI 0000005f: DUP1 00000060: PUSH4 0xfa461e33 00000065: EQ 00000066: PUSH2 0x0333 00000069: JUMPI 0000006a: PUSH0 0000006b: PUSH0 0000006c: REVERT 0000006d: JUMPDEST 0000006e: DUP1 0000006f: PUSH4 0x94abab1d 00000074: EQ 00000075: PUSH2 0x049f 00000078: JUMPI 00000079: DUP1 0000007a: PUSH4 0x999895db 0000007f: EQ 00000080: PUSH2 0x04be 00000083: JUMPI 00000084: DUP1 00000085: PUSH4 0xa0000000 0000008a: EQ 0000008b: PUSH2 0x02cf 0000008e: JUMPI 0000008f: DUP1 00000090: PUSH4 0xa1000000 00000095: EQ 00000096: PUSH2 0x04dd 00000099: JUMPI 0000009a: DUP1 0000009b: PUSH4 0xb80042dc 000000a0: EQ 000000a1: PUSH2 0x04f0 000000a4: JUMPI 000000a5: PUSH0 000000a6: PUSH0 000000a7: REVERT 000000a8: JUMPDEST 000000a9: DUP1 000000aa: PUSH4 0x824a811d 000000af: GT 000000b0: PUSH2 0x00ee 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x824a811d 000000ba: EQ 000000bb: PUSH2 0x0432 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0x853828b6 000000c5: EQ 000000c6: PUSH2 0x043a 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0x8d690bab 000000d0: EQ 000000d1: PUSH2 0x044e 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0x8e000000 000000db: EQ 000000dc: PUSH2 0x046d 000000df: JUMPI 000000e0: DUP1 000000e1: PUSH4 0x9410ae88 000000e6: EQ 000000e7: PUSH2 0x0480 000000ea: JUMPI 000000eb: PUSH0 000000ec: PUSH0 000000ed: REVERT 000000ee: JUMPDEST 000000ef: DUP1 000000f0: PUSH4 0x5ca7ab59 000000f5: EQ 000000f6: PUSH2 0x03c2 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x62000000 00000100: EQ 00000101: PUSH2 0x03e1 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x6568a279 0000010b: EQ 0000010c: PUSH2 0x03f4 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x70000000 00000116: EQ 00000117: PUSH2 0x0270 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0x800a35d9 00000121: EQ 00000122: PUSH2 0x0413 00000125: JUMPI 00000126: PUSH0 00000127: PUSH0 00000128: REVERT 00000129: JUMPDEST 0000012a: DUP1 0000012b: PUSH1 0xcc 0000012d: GT 0000012e: PUSH2 0x01ac 00000131: JUMPI 00000132: DUP1 00000133: PUSH4 0x23a69e75 00000138: GT 00000139: PUSH2 0x0177 0000013c: JUMPI 0000013d: DUP1 0000013e: PUSH4 0x23a69e75 00000143: EQ 00000144: PUSH2 0x0333 00000147: JUMPI 00000148: DUP1 00000149: PUSH4 0x2de6ca25 0000014e: EQ 0000014f: PUSH2 0x0352 00000152: JUMPI 00000153: DUP1 00000154: PUSH4 0x3ab1a494 00000159: EQ 0000015a: PUSH2 0x0371 0000015d: JUMPI 0000015e: DUP1 0000015f: PUSH4 0x3c000000 00000164: EQ 00000165: PUSH2 0x0390 00000168: JUMPI 00000169: DUP1 0000016a: PUSH4 0x53b03a83 0000016f: EQ 00000170: PUSH2 0x03a3 00000173: JUMPI 00000174: PUSH0 00000175: PUSH0 00000176: REVERT 00000177: JUMPDEST 00000178: DUP1 00000179: PUSH1 0xcc 0000017b: EQ 0000017c: PUSH2 0x02bc 0000017f: JUMPI 00000180: DUP1 00000181: PUSH1 0xd7 00000183: EQ 00000184: PUSH2 0x02cf 00000187: JUMPI 00000188: DUP1 00000189: PUSH4 0x15e2b6cd 0000018e: EQ 0000018f: PUSH2 0x02e2 00000192: JUMPI 00000193: DUP1 00000194: PUSH4 0x17f8f44d 00000199: EQ 0000019a: PUSH2 0x0301 0000019d: JUMPI 0000019e: DUP1 0000019f: PUSH4 0x1f000000 000001a4: EQ 000001a5: PUSH2 0x0320 000001a8: JUMPI 000001a9: PUSH0 000001aa: PUSH0 000001ab: REVERT 000001ac: JUMPDEST 000001ad: DUP1 000001ae: PUSH1 0x50 000001b0: GT 000001b1: PUSH2 0x01e0 000001b4: JUMPI 000001b5: DUP1 000001b6: PUSH1 0x50 000001b8: EQ 000001b9: PUSH2 0x025d 000001bc: JUMPI 000001bd: DUP1 000001be: PUSH1 0x67 000001c0: EQ 000001c1: PUSH2 0x0270 000001c4: JUMPI 000001c5: DUP1 000001c6: PUSH1 0x69 000001c8: EQ 000001c9: PUSH2 0x0283 000001cc: JUMPI 000001cd: DUP1 000001ce: PUSH1 0xb9 000001d0: EQ 000001d1: PUSH2 0x0296 000001d4: JUMPI 000001d5: DUP1 000001d6: PUSH1 0xc3 000001d8: EQ 000001d9: PUSH2 0x02a9 000001dc: JUMPI 000001dd: PUSH0 000001de: PUSH0 000001df: REVERT 000001e0: JUMPDEST 000001e1: DUP1 000001e2: PUSH1 0x02 000001e4: EQ 000001e5: PUSH2 0x020f 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH1 0x24 000001ec: EQ 000001ed: PUSH2 0x0224 000001f0: JUMPI 000001f1: DUP1 000001f2: PUSH1 0x35 000001f4: EQ 000001f5: PUSH2 0x0237 000001f8: JUMPI 000001f9: DUP1 000001fa: PUSH1 0x40 000001fc: EQ 000001fd: PUSH2 0x024a 00000200: JUMPI 00000201: PUSH0 00000202: PUSH0 00000203: REVERT 00000204: JUMPDEST 00000205: CALLDATASIZE 00000206: PUSH2 0x020b 00000209: JUMPI 0000020a: STOP 0000020b: JUMPDEST 0000020c: PUSH0 0000020d: PUSH0 0000020e: REVERT 0000020f: JUMPDEST 00000210: PUSH2 0x0222 00000213: PUSH2 0x021d 00000216: CALLDATASIZE 00000217: PUSH1 0x04 00000219: PUSH2 0x2f60 0000021c: JUMP 0000021d: JUMPDEST 0000021e: PUSH2 0x058b 00000221: JUMP 00000222: JUMPDEST 00000223: STOP 00000224: JUMPDEST 00000225: PUSH2 0x0222 00000228: PUSH2 0x0232 0000022b: CALLDATASIZE 0000022c: PUSH1 0x04 0000022e: PUSH2 0x2fc2 00000231: JUMP 00000232: JUMPDEST 00000233: PUSH2 0x05f5 00000236: JUMP 00000237: JUMPDEST 00000238: PUSH2 0x0222 0000023b: PUSH2 0x0245 0000023e: CALLDATASIZE 0000023f: PUSH1 0x04 00000241: PUSH2 0x3067 00000244: JUMP 00000245: JUMPDEST 00000246: PUSH2 0x065b 00000249: JUMP 0000024a: JUMPDEST 0000024b: PUSH2 0x0222 0000024e: PUSH2 0x0258 00000251: CALLDATASIZE 00000252: PUSH1 0x04 00000254: PUSH2 0x30ca 00000257: JUMP 00000258: JUMPDEST 00000259: PUSH2 0x06b7 0000025c: JUMP 0000025d: JUMPDEST 0000025e: PUSH2 0x0222 00000261: PUSH2 0x026b 00000264: CALLDATASIZE 00000265: PUSH1 0x04 00000267: PUSH2 0x3122 0000026a: JUMP 0000026b: JUMPDEST 0000026c: PUSH2 0x070a 0000026f: JUMP 00000270: JUMPDEST 00000271: PUSH2 0x0222 00000274: PUSH2 0x027e 00000277: CALLDATASIZE 00000278: PUSH1 0x04 0000027a: PUSH2 0x3195 0000027d: JUMP 0000027e: JUMPDEST 0000027f: PUSH2 0x0768 00000282: JUMP 00000283: JUMPDEST 00000284: PUSH2 0x0222 00000287: PUSH2 0x0291 0000028a: CALLDATASIZE 0000028b: PUSH1 0x04 0000028d: PUSH2 0x3230 00000290: JUMP 00000291: JUMPDEST 00000292: PUSH2 0x07d3 00000295: JUMP 00000296: JUMPDEST 00000297: PUSH2 0x0222 0000029a: PUSH2 0x02a4 0000029d: CALLDATASIZE 0000029e: PUSH1 0x04 000002a0: PUSH2 0x3289 000002a3: JUMP 000002a4: JUMPDEST 000002a5: PUSH2 0x082d 000002a8: JUMP 000002a9: JUMPDEST 000002aa: PUSH2 0x0222 000002ad: PUSH2 0x02b7 000002b0: CALLDATASIZE 000002b1: PUSH1 0x04 000002b3: PUSH2 0x332f 000002b6: JUMP 000002b7: JUMPDEST 000002b8: PUSH2 0x0880 000002bb: JUMP 000002bc: JUMPDEST 000002bd: PUSH2 0x0222 000002c0: PUSH2 0x02ca 000002c3: CALLDATASIZE 000002c4: PUSH1 0x04 000002c6: PUSH2 0x336e 000002c9: JUMP 000002ca: JUMPDEST 000002cb: PUSH2 0x09e4 000002ce: JUMP 000002cf: JUMPDEST 000002d0: PUSH2 0x0222 000002d3: PUSH2 0x02dd 000002d6: CALLDATASIZE 000002d7: PUSH1 0x04 000002d9: PUSH2 0x3230 000002dc: JUMP 000002dd: JUMPDEST 000002de: PUSH2 0x0a47 000002e1: JUMP 000002e2: JUMPDEST 000002e3: CALLVALUE 000002e4: DUP1 000002e5: ISZERO 000002e6: PUSH2 0x02ed 000002e9: JUMPI 000002ea: PUSH0 000002eb: PUSH0 000002ec: REVERT 000002ed: JUMPDEST 000002ee: POP 000002ef: PUSH2 0x0222 000002f2: PUSH2 0x02fc 000002f5: CALLDATASIZE 000002f6: PUSH1 0x04 000002f8: PUSH2 0x33ac 000002fb: JUMP 000002fc: JUMPDEST 000002fd: PUSH2 0x0aa1 00000300: JUMP 00000301: JUMPDEST 00000302: CALLVALUE 00000303: DUP1 00000304: ISZERO 00000305: PUSH2 0x030c 00000308: JUMPI 00000309: PUSH0 0000030a: PUSH0 0000030b: REVERT 0000030c: JUMPDEST 0000030d: POP 0000030e: PUSH2 0x0222 00000311: PUSH2 0x031b 00000314: CALLDATASIZE 00000315: PUSH1 0x04 00000317: PUSH2 0x33ac 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH2 0x0b03 0000031f: JUMP 00000320: JUMPDEST 00000321: PUSH2 0x0222 00000324: PUSH2 0x032e 00000327: CALLDATASIZE 00000328: PUSH1 0x04 0000032a: PUSH2 0x33ce 0000032d: JUMP 0000032e: JUMPDEST 0000032f: PUSH2 0x0b4f 00000332: JUMP 00000333: JUMPDEST 00000334: CALLVALUE 00000335: DUP1 00000336: ISZERO 00000337: PUSH2 0x033e 0000033a: JUMPI 0000033b: PUSH0 0000033c: PUSH0 0000033d: REVERT 0000033e: JUMPDEST 0000033f: POP 00000340: PUSH2 0x0222 00000343: PUSH2 0x034d 00000346: CALLDATASIZE 00000347: PUSH1 0x04 00000349: PUSH2 0x3456 0000034c: JUMP 0000034d: JUMPDEST 0000034e: PUSH2 0x0bbc 00000351: JUMP 00000352: JUMPDEST 00000353: CALLVALUE 00000354: DUP1 00000355: ISZERO 00000356: PUSH2 0x035d 00000359: JUMPI 0000035a: PUSH0 0000035b: PUSH0 0000035c: REVERT 0000035d: JUMPDEST 0000035e: POP 0000035f: PUSH2 0x0222 00000362: PUSH2 0x036c 00000365: CALLDATASIZE 00000366: PUSH1 0x04 00000368: PUSH2 0x34a5 0000036b: JUMP 0000036c: JUMPDEST 0000036d: PUSH2 0x0bc8 00000370: JUMP 00000371: JUMPDEST 00000372: CALLVALUE 00000373: DUP1 00000374: ISZERO 00000375: PUSH2 0x037c 00000378: JUMPI 00000379: PUSH0 0000037a: PUSH0 0000037b: REVERT 0000037c: JUMPDEST 0000037d: POP 0000037e: PUSH2 0x0222 00000381: PUSH2 0x038b 00000384: CALLDATASIZE 00000385: PUSH1 0x04 00000387: PUSH2 0x33ac 0000038a: JUMP 0000038b: JUMPDEST 0000038c: PUSH2 0x0c55 0000038f: JUMP 00000390: JUMPDEST 00000391: PUSH2 0x0222 00000394: PUSH2 0x039e 00000397: CALLDATASIZE 00000398: PUSH1 0x04 0000039a: PUSH2 0x34bc 0000039d: JUMP 0000039e: JUMPDEST 0000039f: PUSH2 0x0ca0 000003a2: JUMP 000003a3: JUMPDEST 000003a4: CALLVALUE 000003a5: DUP1 000003a6: ISZERO 000003a7: PUSH2 0x03ae 000003aa: JUMPI 000003ab: PUSH0 000003ac: PUSH0 000003ad: REVERT 000003ae: JUMPDEST 000003af: POP 000003b0: PUSH2 0x0222 000003b3: PUSH2 0x03bd 000003b6: CALLDATASIZE 000003b7: PUSH1 0x04 000003b9: PUSH2 0x33ac 000003bc: JUMP 000003bd: JUMPDEST 000003be: PUSH2 0x0cfa 000003c1: JUMP 000003c2: JUMPDEST 000003c3: CALLVALUE 000003c4: DUP1 000003c5: ISZERO 000003c6: PUSH2 0x03cd 000003c9: JUMPI 000003ca: PUSH0 000003cb: PUSH0 000003cc: REVERT 000003cd: JUMPDEST 000003ce: POP 000003cf: PUSH2 0x0222 000003d2: PUSH2 0x03dc 000003d5: CALLDATASIZE 000003d6: PUSH1 0x04 000003d8: PUSH2 0x3554 000003db: JUMP 000003dc: JUMPDEST 000003dd: PUSH2 0x0d5c 000003e0: JUMP 000003e1: JUMPDEST 000003e2: PUSH2 0x0222 000003e5: PUSH2 0x03ef 000003e8: CALLDATASIZE 000003e9: PUSH1 0x04 000003eb: PUSH2 0x33ce 000003ee: JUMP 000003ef: JUMPDEST 000003f0: PUSH2 0x0f8e 000003f3: JUMP 000003f4: JUMPDEST 000003f5: CALLVALUE 000003f6: DUP1 000003f7: ISZERO 000003f8: PUSH2 0x03ff 000003fb: JUMPI 000003fc: PUSH0 000003fd: PUSH0 000003fe: REVERT 000003ff: JUMPDEST 00000400: POP 00000401: PUSH2 0x0222 00000404: PUSH2 0x040e 00000407: CALLDATASIZE 00000408: PUSH1 0x04 0000040a: PUSH2 0x35b4 0000040d: JUMP 0000040e: JUMPDEST 0000040f: PUSH2 0x0fee 00000412: JUMP 00000413: JUMPDEST 00000414: CALLVALUE 00000415: DUP1 00000416: ISZERO 00000417: PUSH2 0x041e 0000041a: JUMPI 0000041b: PUSH0 0000041c: PUSH0 0000041d: REVERT 0000041e: JUMPDEST 0000041f: POP 00000420: PUSH2 0x0222 00000423: PUSH2 0x042d 00000426: CALLDATASIZE 00000427: PUSH1 0x04 00000429: PUSH2 0x35b4 0000042c: JUMP 0000042d: JUMPDEST 0000042e: PUSH2 0x106f 00000431: JUMP 00000432: JUMPDEST 00000433: PUSH2 0x0222 00000436: PUSH2 0x1102 00000439: JUMP 0000043a: JUMPDEST 0000043b: CALLVALUE 0000043c: DUP1 0000043d: ISZERO 0000043e: PUSH2 0x0445 00000441: JUMPI 00000442: PUSH0 00000443: PUSH0 00000444: REVERT 00000445: JUMPDEST 00000446: POP 00000447: PUSH2 0x0222 0000044a: PUSH2 0x1161 0000044d: JUMP 0000044e: JUMPDEST 0000044f: CALLVALUE 00000450: DUP1 00000451: ISZERO 00000452: PUSH2 0x0459 00000455: JUMPI 00000456: PUSH0 00000457: PUSH0 00000458: REVERT 00000459: JUMPDEST 0000045a: POP 0000045b: PUSH2 0x0222 0000045e: PUSH2 0x0468 00000461: CALLDATASIZE 00000462: PUSH1 0x04 00000464: PUSH2 0x33ac 00000467: JUMP 00000468: JUMPDEST 00000469: PUSH2 0x1206 0000046c: JUMP 0000046d: JUMPDEST 0000046e: PUSH2 0x0222 00000471: PUSH2 0x047b 00000474: CALLDATASIZE 00000475: PUSH1 0x04 00000477: PUSH2 0x3289 0000047a: JUMP 0000047b: JUMPDEST 0000047c: PUSH2 0x1252 0000047f: JUMP 00000480: JUMPDEST 00000481: CALLVALUE 00000482: DUP1 00000483: ISZERO 00000484: PUSH2 0x048b 00000487: JUMPI 00000488: PUSH0 00000489: PUSH0 0000048a: REVERT 0000048b: JUMPDEST 0000048c: POP 0000048d: PUSH2 0x0222 00000490: PUSH2 0x049a 00000493: CALLDATASIZE 00000494: PUSH1 0x04 00000496: PUSH2 0x35e7 00000499: JUMP 0000049a: JUMPDEST 0000049b: PUSH2 0x12a5 0000049e: JUMP 0000049f: JUMPDEST 000004a0: CALLVALUE 000004a1: DUP1 000004a2: ISZERO 000004a3: PUSH2 0x04aa 000004a6: JUMPI 000004a7: PUSH0 000004a8: PUSH0 000004a9: REVERT 000004aa: JUMPDEST 000004ab: POP 000004ac: PUSH2 0x0222 000004af: PUSH2 0x04b9 000004b2: CALLDATASIZE 000004b3: PUSH1 0x04 000004b5: PUSH2 0x33ac 000004b8: JUMP 000004b9: JUMPDEST 000004ba: PUSH2 0x12af 000004bd: JUMP 000004be: JUMPDEST 000004bf: CALLVALUE 000004c0: DUP1 000004c1: ISZERO 000004c2: PUSH2 0x04c9 000004c5: JUMPI 000004c6: PUSH0 000004c7: PUSH0 000004c8: REVERT 000004c9: JUMPDEST 000004ca: POP 000004cb: PUSH2 0x0222 000004ce: PUSH2 0x04d8 000004d1: CALLDATASIZE 000004d2: PUSH1 0x04 000004d4: PUSH2 0x33ac 000004d7: JUMP 000004d8: JUMPDEST 000004d9: PUSH2 0x1311 000004dc: JUMP 000004dd: JUMPDEST 000004de: PUSH2 0x0222 000004e1: PUSH2 0x04eb 000004e4: CALLDATASIZE 000004e5: PUSH1 0x04 000004e7: PUSH2 0x3611 000004ea: JUMP 000004eb: JUMPDEST 000004ec: PUSH2 0x1373 000004ef: JUMP 000004f0: JUMPDEST 000004f1: CALLVALUE 000004f2: DUP1 000004f3: ISZERO 000004f4: PUSH2 0x04fb 000004f7: JUMPI 000004f8: PUSH0 000004f9: PUSH0 000004fa: REVERT 000004fb: JUMPDEST 000004fc: POP 000004fd: PUSH2 0x0222 00000500: PUSH2 0x050a 00000503: CALLDATASIZE 00000504: PUSH1 0x04 00000506: PUSH2 0x35b4 00000509: JUMP 0000050a: JUMPDEST 0000050b: PUSH2 0x13db 0000050e: JUMP 0000050f: JUMPDEST 00000510: CALLVALUE 00000511: DUP1 00000512: ISZERO 00000513: PUSH2 0x051a 00000516: JUMPI 00000517: PUSH0 00000518: PUSH0 00000519: REVERT 0000051a: JUMPDEST 0000051b: POP 0000051c: PUSH2 0x0222 0000051f: PUSH2 0x0529 00000522: CALLDATASIZE 00000523: PUSH1 0x04 00000525: PUSH2 0x33ac 00000528: JUMP 00000529: JUMPDEST 0000052a: PUSH2 0x145e 0000052d: JUMP 0000052e: JUMPDEST 0000052f: CALLVALUE 00000530: DUP1 00000531: ISZERO 00000532: PUSH2 0x0539 00000535: JUMPI 00000536: PUSH0 00000537: PUSH0 00000538: REVERT 00000539: JUMPDEST 0000053a: POP 0000053b: PUSH2 0x0222 0000053e: PUSH2 0x0548 00000541: CALLDATASIZE 00000542: PUSH1 0x04 00000544: PUSH2 0x35e7 00000547: JUMP 00000548: JUMPDEST 00000549: PUSH2 0x14ac 0000054c: JUMP 0000054d: JUMPDEST 0000054e: CALLVALUE 0000054f: DUP1 00000550: ISZERO 00000551: PUSH2 0x0558 00000554: JUMPI 00000555: PUSH0 00000556: PUSH0 00000557: REVERT 00000558: JUMPDEST 00000559: POP 0000055a: PUSH2 0x0222 0000055d: PUSH2 0x0567 00000560: CALLDATASIZE 00000561: PUSH1 0x04 00000563: PUSH2 0x36b6 00000566: JUMP 00000567: JUMPDEST 00000568: PUSH2 0x160a 0000056b: JUMP 0000056c: JUMPDEST 0000056d: CALLVALUE 0000056e: DUP1 0000056f: ISZERO 00000570: PUSH2 0x0577 00000573: JUMPI 00000574: PUSH0 00000575: PUSH0 00000576: REVERT 00000577: JUMPDEST 00000578: POP 00000579: PUSH2 0x0222 0000057c: PUSH2 0x0586 0000057f: CALLDATASIZE 00000580: PUSH1 0x04 00000582: PUSH2 0x33ac 00000585: JUMP 00000586: JUMPDEST 00000587: PUSH2 0x16dc 0000058a: JUMP 0000058b: JUMPDEST 0000058c: CALLVALUE 0000058d: NUMBER 0000058e: EQ 0000058f: PUSH2 0x05b3 00000592: JUMPI 00000593: PUSH1 0x40 00000595: MLOAD 00000596: PUSH3 0x461bcd 0000059a: PUSH1 0xe5 0000059c: SHL 0000059d: DUP2 0000059e: MSTORE 0000059f: PUSH1 0x04 000005a1: ADD 000005a2: PUSH2 0x05aa 000005a5: SWAP1 000005a6: PUSH2 0x36f4 000005a9: JUMP 000005aa: JUMPDEST 000005ab: PUSH1 0x40 000005ad: MLOAD 000005ae: DUP1 000005af: SWAP2 000005b0: SUB 000005b1: SWAP1 000005b2: REVERT 000005b3: JUMPDEST 000005b4: CALLER 000005b5: PUSH0 000005b6: SWAP1 000005b7: DUP2 000005b8: MSTORE 000005b9: PUSH1 0x02 000005bb: PUSH1 0x20 000005bd: MSTORE 000005be: PUSH1 0x40 000005c0: SWAP1 000005c1: KECCAK256 000005c2: SLOAD 000005c3: PUSH1 0xff 000005c5: AND 000005c6: PUSH2 0x05e1 000005c9: JUMPI 000005ca: PUSH1 0x40 000005cc: MLOAD 000005cd: PUSH3 0x461bcd 000005d1: PUSH1 0xe5 000005d3: SHL 000005d4: DUP2 000005d5: MSTORE 000005d6: PUSH1 0x04 000005d8: ADD 000005d9: PUSH2 0x05aa 000005dc: SWAP1 000005dd: PUSH2 0x370f 000005e0: JUMP 000005e1: JUMPDEST 000005e2: PUSH2 0x05ee 000005e5: DUP6 000005e6: DUP6 000005e7: DUP6 000005e8: DUP6 000005e9: DUP6 000005ea: PUSH2 0x1741 000005ed: JUMP 000005ee: JUMPDEST 000005ef: POP 000005f0: POP 000005f1: POP 000005f2: POP 000005f3: POP 000005f4: JUMP 000005f5: JUMPDEST 000005f6: CALLVALUE 000005f7: NUMBER 000005f8: EQ 000005f9: PUSH2 0x0614 000005fc: JUMPI 000005fd: PUSH1 0x40 000005ff: MLOAD 00000600: PUSH3 0x461bcd 00000604: PUSH1 0xe5 00000606: SHL 00000607: DUP2 00000608: MSTORE 00000609: PUSH1 0x04 0000060b: ADD 0000060c: PUSH2 0x05aa 0000060f: SWAP1 00000610: PUSH2 0x36f4 00000613: JUMP 00000614: JUMPDEST 00000615: DUP11 00000616: PUSH2 0x061f 00000619: CALLER 0000061a: DUP3 0000061b: PUSH2 0x1898 0000061e: JUMP 0000061f: JUMPDEST 00000620: PUSH2 0x063b 00000623: JUMPI 00000624: PUSH1 0x40 00000626: MLOAD 00000627: PUSH3 0x461bcd 0000062b: PUSH1 0xe5 0000062d: SHL 0000062e: DUP2 0000062f: MSTORE 00000630: PUSH1 0x04 00000632: ADD 00000633: PUSH2 0x05aa 00000636: SWAP1 00000637: PUSH2 0x370f 0000063a: JUMP 0000063b: JUMPDEST 0000063c: PUSH2 0x064d 0000063f: DUP12 00000640: DUP12 00000641: DUP12 00000642: DUP12 00000643: DUP12 00000644: DUP12 00000645: DUP12 00000646: DUP12 00000647: DUP12 00000648: DUP12 00000649: PUSH2 0x18e1 0000064c: JUMP 0000064d: JUMPDEST 0000064e: POP 0000064f: POP 00000650: POP 00000651: POP 00000652: POP 00000653: POP 00000654: POP 00000655: POP 00000656: POP 00000657: POP 00000658: POP 00000659: POP 0000065a: JUMP 0000065b: JUMPDEST 0000065c: CALLVALUE 0000065d: NUMBER 0000065e: EQ 0000065f: PUSH2 0x067a 00000662: JUMPI 00000663: PUSH1 0x40 00000665: MLOAD 00000666: PUSH3 0x461bcd 0000066a: PUSH1 0xe5 0000066c: SHL 0000066d: DUP2 0000066e: MSTORE 0000066f: PUSH1 0x04 00000671: ADD 00000672: PUSH2 0x05aa 00000675: SWAP1 00000676: PUSH2 0x36f4 00000679: JUMP 0000067a: JUMPDEST 0000067b: DUP6 0000067c: PUSH2 0x0685 0000067f: CALLER 00000680: DUP3 00000681: PUSH2 0x1898 00000684: JUMP 00000685: JUMPDEST 00000686: PUSH2 0x06a1 00000689: JUMPI 0000068a: PUSH1 0x40 0000068c: MLOAD 0000068d: PUSH3 0x461bcd 00000691: PUSH1 0xe5 00000693: SHL 00000694: DUP2 00000695: MSTORE 00000696: PUSH1 0x04 00000698: ADD 00000699: PUSH2 0x05aa 0000069c: SWAP1 0000069d: PUSH2 0x370f 000006a0: JUMP 000006a1: JUMPDEST 000006a2: PUSH2 0x06ae 000006a5: DUP7 000006a6: DUP7 000006a7: DUP7 000006a8: DUP7 000006a9: DUP7 000006aa: PUSH2 0x1af1 000006ad: JUMP 000006ae: JUMPDEST 000006af: POP 000006b0: POP 000006b1: POP 000006b2: POP 000006b3: POP 000006b4: POP 000006b5: POP 000006b6: JUMP 000006b7: JUMPDEST 000006b8: CALLVALUE 000006b9: NUMBER 000006ba: EQ 000006bb: PUSH2 0x06d6 000006be: JUMPI 000006bf: PUSH1 0x40 000006c1: MLOAD 000006c2: PUSH3 0x461bcd 000006c6: PUSH1 0xe5 000006c8: SHL 000006c9: DUP2 000006ca: MSTORE 000006cb: PUSH1 0x04 000006cd: ADD 000006ce: PUSH2 0x05aa 000006d1: SWAP1 000006d2: PUSH2 0x36f4 000006d5: JUMP 000006d6: JUMPDEST 000006d7: DUP6 000006d8: PUSH2 0x06e1 000006db: CALLER 000006dc: DUP3 000006dd: PUSH2 0x1898 000006e0: JUMP 000006e1: JUMPDEST 000006e2: PUSH2 0x06fd 000006e5: JUMPI 000006e6: PUSH1 0x40 000006e8: MLOAD 000006e9: PUSH3 0x461bcd 000006ed: PUSH1 0xe5 000006ef: SHL 000006f0: DUP2 000006f1: MSTORE 000006f2: PUSH1 0x04 000006f4: ADD 000006f5: PUSH2 0x05aa 000006f8: SWAP1 000006f9: PUSH2 0x370f 000006fc: JUMP 000006fd: JUMPDEST 000006fe: PUSH2 0x06ae 00000701: DUP7 00000702: DUP7 00000703: DUP7 00000704: DUP7 00000705: DUP7 00000706: PUSH2 0x1741 00000709: JUMP 0000070a: JUMPDEST 0000070b: CALLVALUE 0000070c: NUMBER 0000070d: EQ 0000070e: PUSH2 0x0729 00000711: JUMPI 00000712: PUSH1 0x40 00000714: MLOAD 00000715: PUSH3 0x461bcd 00000719: PUSH1 0xe5 0000071b: SHL 0000071c: DUP2 0000071d: MSTORE 0000071e: PUSH1 0x04 00000720: ADD 00000721: PUSH2 0x05aa 00000724: SWAP1 00000725: PUSH2 0x36f4 00000728: JUMP 00000729: JUMPDEST 0000072a: DUP7 0000072b: PUSH2 0x0734 0000072e: CALLER 0000072f: DUP3 00000730: PUSH2 0x1898 00000733: JUMP 00000734: JUMPDEST 00000735: PUSH2 0x0750 00000738: JUMPI 00000739: PUSH1 0x40 0000073b: MLOAD 0000073c: PUSH3 0x461bcd 00000740: PUSH1 0xe5 00000742: SHL 00000743: DUP2 00000744: MSTORE 00000745: PUSH1 0x04 00000747: ADD 00000748: PUSH2 0x05aa 0000074b: SWAP1 0000074c: PUSH2 0x370f 0000074f: JUMP 00000750: JUMPDEST 00000751: PUSH2 0x075e 00000754: DUP8 00000755: DUP8 00000756: DUP8 00000757: DUP8 00000758: DUP8 00000759: DUP8 0000075a: PUSH2 0x1bd1 0000075d: JUMP 0000075e: JUMPDEST 0000075f: POP 00000760: POP 00000761: POP 00000762: POP 00000763: POP 00000764: POP 00000765: POP 00000766: POP 00000767: JUMP 00000768: JUMPDEST 00000769: CALLVALUE 0000076a: NUMBER 0000076b: EQ 0000076c: PUSH2 0x0787 0000076f: JUMPI 00000770: PUSH1 0x40 00000772: MLOAD 00000773: PUSH3 0x461bcd 00000777: PUSH1 0xe5 00000779: SHL 0000077a: DUP2 0000077b: MSTORE 0000077c: PUSH1 0x04 0000077e: ADD 0000077f: PUSH2 0x05aa 00000782: SWAP1 00000783: PUSH2 0x36f4 00000786: JUMP 00000787: JUMPDEST 00000788: CALLER 00000789: PUSH0 0000078a: SWAP1 0000078b: DUP2 0000078c: MSTORE 0000078d: PUSH1 0x02 0000078f: PUSH1 0x20 00000791: MSTORE 00000792: PUSH1 0x40 00000794: SWAP1 00000795: KECCAK256 00000796: SLOAD 00000797: PUSH1 0xff 00000799: AND 0000079a: PUSH2 0x07b5 0000079d: JUMPI 0000079e: PUSH1 0x40 000007a0: MLOAD 000007a1: PUSH3 0x461bcd 000007a5: PUSH1 0xe5 000007a7: SHL 000007a8: DUP2 000007a9: MSTORE 000007aa: PUSH1 0x04 000007ac: ADD 000007ad: PUSH2 0x05aa 000007b0: SWAP1 000007b1: PUSH2 0x370f 000007b4: JUMP 000007b5: JUMPDEST 000007b6: PUSH2 0x07c7 000007b9: DUP11 000007ba: DUP11 000007bb: DUP11 000007bc: DUP11 000007bd: DUP11 000007be: DUP11 000007bf: DUP11 000007c0: DUP11 000007c1: DUP11 000007c2: DUP11 000007c3: PUSH2 0x18e1 000007c6: JUMP 000007c7: JUMPDEST 000007c8: POP 000007c9: POP 000007ca: POP 000007cb: POP 000007cc: POP 000007cd: POP 000007ce: POP 000007cf: POP 000007d0: POP 000007d1: POP 000007d2: JUMP 000007d3: JUMPDEST 000007d4: CALLVALUE 000007d5: NUMBER 000007d6: EQ 000007d7: PUSH2 0x07f2 000007da: JUMPI 000007db: PUSH1 0x40 000007dd: MLOAD 000007de: PUSH3 0x461bcd 000007e2: PUSH1 0xe5 000007e4: SHL 000007e5: DUP2 000007e6: MSTORE 000007e7: PUSH1 0x04 000007e9: ADD 000007ea: PUSH2 0x05aa 000007ed: SWAP1 000007ee: PUSH2 0x36f4 000007f1: JUMP 000007f2: JUMPDEST 000007f3: CALLER 000007f4: PUSH0 000007f5: SWAP1 000007f6: DUP2 000007f7: MSTORE 000007f8: PUSH1 0x02 000007fa: PUSH1 0x20 000007fc: MSTORE 000007fd: PUSH1 0x40 000007ff: SWAP1 00000800: KECCAK256 00000801: SLOAD 00000802: PUSH1 0xff 00000804: AND 00000805: PUSH2 0x0820 00000808: JUMPI 00000809: PUSH1 0x40 0000080b: MLOAD 0000080c: PUSH3 0x461bcd 00000810: PUSH1 0xe5 00000812: SHL 00000813: DUP2 00000814: MSTORE 00000815: PUSH1 0x04 00000817: ADD 00000818: PUSH2 0x05aa 0000081b: SWAP1 0000081c: PUSH2 0x370f 0000081f: JUMP 00000820: JUMPDEST 00000821: PUSH2 0x05ee 00000824: DUP6 00000825: DUP6 00000826: DUP6 00000827: DUP6 00000828: DUP6 00000829: PUSH2 0x213f 0000082c: JUMP 0000082d: JUMPDEST 0000082e: CALLVALUE 0000082f: NUMBER 00000830: EQ 00000831: PUSH2 0x084c 00000834: JUMPI 00000835: PUSH1 0x40 00000837: MLOAD 00000838: PUSH3 0x461bcd 0000083c: PUSH1 0xe5 0000083e: SHL 0000083f: DUP2 00000840: MSTORE 00000841: PUSH1 0x04 00000843: ADD 00000844: PUSH2 0x05aa 00000847: SWAP1 00000848: PUSH2 0x36f4 0000084b: JUMP 0000084c: JUMPDEST 0000084d: DUP6 0000084e: PUSH2 0x0857 00000851: CALLER 00000852: DUP3 00000853: PUSH2 0x1898 00000856: JUMP 00000857: JUMPDEST 00000858: PUSH2 0x0873 0000085b: JUMPI 0000085c: PUSH1 0x40 0000085e: MLOAD 0000085f: PUSH3 0x461bcd 00000863: PUSH1 0xe5 00000865: SHL 00000866: DUP2 00000867: MSTORE 00000868: PUSH1 0x04 0000086a: ADD 0000086b: PUSH2 0x05aa 0000086e: SWAP1 0000086f: PUSH2 0x370f 00000872: JUMP 00000873: JUMPDEST 00000874: PUSH2 0x06ae 00000877: DUP7 00000878: DUP7 00000879: DUP7 0000087a: DUP7 0000087b: DUP7 0000087c: PUSH2 0x2277 0000087f: JUMP 00000880: JUMPDEST 00000881: CALLVALUE 00000882: NUMBER 00000883: EQ 00000884: PUSH2 0x089f 00000887: JUMPI 00000888: PUSH1 0x40 0000088a: MLOAD 0000088b: PUSH3 0x461bcd 0000088f: PUSH1 0xe5 00000891: SHL 00000892: DUP2 00000893: MSTORE 00000894: PUSH1 0x04 00000896: ADD 00000897: PUSH2 0x05aa 0000089a: SWAP1 0000089b: PUSH2 0x36f4 0000089e: JUMP 0000089f: JUMPDEST 000008a0: PUSH20 0x5b43453fce04b92e190f391a83136bfbecedefd1 000008b5: CALLER 000008b6: EQ 000008b7: PUSH2 0x08d2 000008ba: JUMPI 000008bb: PUSH1 0x40 000008bd: MLOAD 000008be: PUSH3 0x461bcd 000008c2: PUSH1 0xe5 000008c4: SHL 000008c5: DUP2 000008c6: MSTORE 000008c7: PUSH1 0x04 000008c9: ADD 000008ca: PUSH2 0x05aa 000008cd: SWAP1 000008ce: PUSH2 0x370f 000008d1: JUMP 000008d2: JUMPDEST 000008d3: PUSH2 0x08dd 000008d6: PUSH1 0x69 000008d8: DUP3 000008d9: PUSH2 0x373e 000008dc: JUMP 000008dd: JUMPDEST 000008de: ISZERO 000008df: PUSH2 0x08fa 000008e2: JUMPI 000008e3: PUSH1 0x40 000008e5: MLOAD 000008e6: PUSH3 0x461bcd 000008ea: PUSH1 0xe5 000008ec: SHL 000008ed: DUP2 000008ee: MSTORE 000008ef: PUSH1 0x04 000008f1: ADD 000008f2: PUSH2 0x05aa 000008f5: SWAP1 000008f6: PUSH2 0x370f 000008f9: JUMP 000008fa: JUMPDEST 000008fb: PUSH0 000008fc: PUSH2 0x0906 000008ff: PUSH1 0x69 00000901: DUP4 00000902: PUSH2 0x3765 00000905: JUMP 00000906: JUMPDEST 00000907: SWAP1 00000908: POP 00000909: PUSH0 0000090a: JUMPDEST 0000090b: DUP2 0000090c: DUP2 0000090d: LT 0000090e: ISZERO 0000090f: PUSH2 0x09de 00000912: JUMPI 00000913: PUSH0 00000914: DUP1 00000915: DUP1 00000916: DUP1 00000917: DUP1 00000918: PUSH2 0x0954 0000091b: DUP10 0000091c: DUP10 0000091d: PUSH2 0x0927 00000920: DUP10 00000921: PUSH1 0x69 00000923: PUSH2 0x3778 00000926: JUMP 00000927: JUMPDEST 00000928: SWAP2 00000929: SWAP1 0000092a: SWAP2 0000092b: ADD 0000092c: DUP1 0000092d: CALLDATALOAD 0000092e: PUSH1 0xf8 00000930: SHR 00000931: SWAP3 00000932: PUSH1 0x01 00000934: DUP3 00000935: ADD 00000936: CALLDATALOAD 00000937: PUSH1 0x60 00000939: SWAP1 0000093a: DUP2 0000093b: SHR 0000093c: SWAP4 0000093d: POP 0000093e: PUSH1 0x15 00000940: DUP4 00000941: ADD 00000942: CALLDATALOAD 00000943: SWAP1 00000944: SHR 00000945: SWAP2 00000946: PUSH1 0x29 00000948: DUP2 00000949: ADD 0000094a: CALLDATALOAD 0000094b: SWAP2 0000094c: PUSH1 0x49 0000094e: SWAP1 0000094f: SWAP2 00000950: ADD 00000951: CALLDATALOAD 00000952: SWAP1 00000953: JUMP 00000954: JUMPDEST 00000955: SWAP5 00000956: POP 00000957: SWAP5 00000958: POP 00000959: SWAP5 0000095a: POP 0000095b: SWAP5 0000095c: POP 0000095d: SWAP5 0000095e: POP 0000095f: PUSH0 00000960: PUSH0 00000961: PUSH2 0x0971 00000964: DUP8 00000965: PUSH1 0x01 00000967: DUP2 00000968: DUP2 00000969: SHR 0000096a: SWAP3 0000096b: SWAP2 0000096c: DUP2 0000096d: AND 0000096e: EQ 0000096f: SWAP1 00000970: JUMP 00000971: JUMPDEST 00000972: SWAP2 00000973: POP 00000974: SWAP2 00000975: POP 00000976: DUP2 00000977: PUSH1 0x01 00000979: SUB 0000097a: PUSH2 0x0996 0000097d: JUMPI 0000097e: PUSH2 0x098a 00000981: DUP7 00000982: DUP3 00000983: DUP7 00000984: DUP7 00000985: DUP10 00000986: PUSH2 0x2277 00000989: JUMP 0000098a: JUMPDEST 0000098b: POP 0000098c: POP 0000098d: POP 0000098e: POP 0000098f: POP 00000990: POP 00000991: POP 00000992: PUSH2 0x09d6 00000995: JUMP 00000996: JUMPDEST 00000997: DUP2 00000998: PUSH0 00000999: SUB 0000099a: PUSH2 0x09aa 0000099d: JUMPI 0000099e: PUSH2 0x098a 000009a1: DUP7 000009a2: DUP3 000009a3: DUP7 000009a4: DUP7 000009a5: DUP10 000009a6: PUSH2 0x213f 000009a9: JUMP 000009aa: JUMPDEST 000009ab: PUSH1 0x40 000009ad: MLOAD 000009ae: PUSH3 0x461bcd 000009b2: PUSH1 0xe5 000009b4: SHL 000009b5: DUP2 000009b6: MSTORE 000009b7: PUSH1 0x20 000009b9: PUSH1 0x04 000009bb: DUP3 000009bc: ADD 000009bd: MSTORE 000009be: PUSH1 0x01 000009c0: PUSH1 0x24 000009c2: DUP3 000009c3: ADD 000009c4: MSTORE 000009c5: PUSH1 0x65 000009c7: PUSH1 0xf8 000009c9: SHL 000009ca: PUSH1 0x44 000009cc: DUP3 000009cd: ADD 000009ce: MSTORE 000009cf: PUSH1 0x64 000009d1: ADD 000009d2: PUSH2 0x05aa 000009d5: JUMP 000009d6: JUMPDEST 000009d7: PUSH1 0x01 000009d9: ADD 000009da: PUSH2 0x090a 000009dd: JUMP 000009de: JUMPDEST 000009df: POP 000009e0: POP 000009e1: POP 000009e2: POP 000009e3: JUMP 000009e4: JUMPDEST 000009e5: CALLVALUE 000009e6: NUMBER 000009e7: EQ 000009e8: PUSH2 0x0a03 000009eb: JUMPI 000009ec: PUSH1 0x40 000009ee: MLOAD 000009ef: PUSH3 0x461bcd 000009f3: PUSH1 0xe5 000009f5: SHL 000009f6: DUP2 000009f7: MSTORE 000009f8: PUSH1 0x04 000009fa: ADD 000009fb: PUSH2 0x05aa 000009fe: SWAP1 000009ff: PUSH2 0x36f4 00000a02: JUMP 00000a03: JUMPDEST 00000a04: CALLER 00000a05: PUSH0 00000a06: SWAP1 00000a07: DUP2 00000a08: MSTORE 00000a09: PUSH1 0x02 00000a0b: PUSH1 0x20 00000a0d: MSTORE 00000a0e: PUSH1 0x40 00000a10: SWAP1 00000a11: KECCAK256 00000a12: SLOAD 00000a13: PUSH1 0xff 00000a15: AND 00000a16: PUSH2 0x0a31 00000a19: JUMPI 00000a1a: PUSH1 0x40 00000a1c: MLOAD 00000a1d: PUSH3 0x461bcd 00000a21: PUSH1 0xe5 00000a23: SHL 00000a24: DUP2 00000a25: MSTORE 00000a26: PUSH1 0x04 00000a28: ADD 00000a29: PUSH2 0x05aa 00000a2c: SWAP1 00000a2d: PUSH2 0x370f 00000a30: JUMP 00000a31: JUMPDEST 00000a32: PUSH2 0x0a3f 00000a35: DUP7 00000a36: DUP7 00000a37: DUP7 00000a38: DUP7 00000a39: DUP7 00000a3a: DUP7 00000a3b: PUSH2 0x1bd1 00000a3e: JUMP 00000a3f: JUMPDEST 00000a40: POP 00000a41: POP 00000a42: POP 00000a43: POP 00000a44: POP 00000a45: POP 00000a46: JUMP 00000a47: JUMPDEST 00000a48: CALLVALUE 00000a49: NUMBER 00000a4a: EQ 00000a4b: PUSH2 0x0a66 00000a4e: JUMPI 00000a4f: PUSH1 0x40 00000a51: MLOAD 00000a52: PUSH3 0x461bcd 00000a56: PUSH1 0xe5 00000a58: SHL 00000a59: DUP2 00000a5a: MSTORE 00000a5b: PUSH1 0x04 00000a5d: ADD 00000a5e: PUSH2 0x05aa 00000a61: SWAP1 00000a62: PUSH2 0x36f4 00000a65: JUMP 00000a66: JUMPDEST 00000a67: CALLER 00000a68: PUSH0 00000a69: SWAP1 00000a6a: DUP2 00000a6b: MSTORE 00000a6c: PUSH1 0x02 00000a6e: PUSH1 0x20 00000a70: MSTORE 00000a71: PUSH1 0x40 00000a73: SWAP1 00000a74: KECCAK256 00000a75: SLOAD 00000a76: PUSH1 0xff 00000a78: AND 00000a79: PUSH2 0x0a94 00000a7c: JUMPI 00000a7d: PUSH1 0x40 00000a7f: MLOAD 00000a80: PUSH3 0x461bcd 00000a84: PUSH1 0xe5 00000a86: SHL 00000a87: DUP2 00000a88: MSTORE 00000a89: PUSH1 0x04 00000a8b: ADD 00000a8c: PUSH2 0x05aa 00000a8f: SWAP1 00000a90: PUSH2 0x370f 00000a93: JUMP 00000a94: JUMPDEST 00000a95: PUSH2 0x05ee 00000a98: DUP6 00000a99: DUP6 00000a9a: DUP6 00000a9b: DUP6 00000a9c: DUP6 00000a9d: PUSH2 0x2277 00000aa0: JUMP 00000aa1: JUMPDEST 00000aa2: PUSH0 00000aa3: SLOAD 00000aa4: PUSH1 0x01 00000aa6: PUSH1 0x01 00000aa8: PUSH1 0xa0 00000aaa: SHL 00000aab: SUB 00000aac: AND 00000aad: CALLER 00000aae: EQ 00000aaf: DUP1 00000ab0: PUSH2 0x0ac7 00000ab3: JUMPI 00000ab4: POP 00000ab5: CALLER 00000ab6: PUSH0 00000ab7: SWAP1 00000ab8: DUP2 00000ab9: MSTORE 00000aba: PUSH1 0x03 00000abc: PUSH1 0x20 00000abe: MSTORE 00000abf: PUSH1 0x40 00000ac1: SWAP1 00000ac2: KECCAK256 00000ac3: SLOAD 00000ac4: PUSH1 0xff 00000ac6: AND 00000ac7: JUMPDEST 00000ac8: PUSH2 0x0ae3 00000acb: JUMPI 00000acc: PUSH1 0x40 00000ace: MLOAD 00000acf: PUSH3 0x461bcd 00000ad3: PUSH1 0xe5 00000ad5: SHL 00000ad6: DUP2 00000ad7: MSTORE 00000ad8: PUSH1 0x04 00000ada: ADD 00000adb: PUSH2 0x05aa 00000ade: SWAP1 00000adf: PUSH2 0x378f 00000ae2: JUMP 00000ae3: JUMPDEST 00000ae4: PUSH1 0x01 00000ae6: PUSH1 0x01 00000ae8: PUSH1 0xa0 00000aea: SHL 00000aeb: SUB 00000aec: AND 00000aed: PUSH0 00000aee: SWAP1 00000aef: DUP2 00000af0: MSTORE 00000af1: PUSH1 0x04 00000af3: PUSH1 0x20 00000af5: MSTORE 00000af6: PUSH1 0x40 00000af8: SWAP1 00000af9: KECCAK256 00000afa: DUP1 00000afb: SLOAD 00000afc: PUSH1 0xff 00000afe: NOT 00000aff: AND 00000b00: SWAP1 00000b01: SSTORE 00000b02: JUMP 00000b03: JUMPDEST 00000b04: PUSH0 00000b05: SLOAD 00000b06: PUSH1 0x01 00000b08: PUSH1 0x01 00000b0a: PUSH1 0xa0 00000b0c: SHL 00000b0d: SUB 00000b0e: AND 00000b0f: CALLER 00000b10: EQ 00000b11: PUSH2 0x0b2c 00000b14: JUMPI 00000b15: PUSH1 0x40 00000b17: MLOAD 00000b18: PUSH3 0x461bcd 00000b1c: PUSH1 0xe5 00000b1e: SHL 00000b1f: DUP2 00000b20: MSTORE 00000b21: PUSH1 0x04 00000b23: ADD 00000b24: PUSH2 0x05aa 00000b27: SWAP1 00000b28: PUSH2 0x37aa 00000b2b: JUMP 00000b2c: JUMPDEST 00000b2d: PUSH1 0x01 00000b2f: PUSH1 0x01 00000b31: PUSH1 0xa0 00000b33: SHL 00000b34: SUB 00000b35: AND 00000b36: PUSH0 00000b37: SWAP1 00000b38: DUP2 00000b39: MSTORE 00000b3a: PUSH1 0x03 00000b3c: PUSH1 0x20 00000b3e: MSTORE 00000b3f: PUSH1 0x40 00000b41: SWAP1 00000b42: KECCAK256 00000b43: DUP1 00000b44: SLOAD 00000b45: PUSH1 0xff 00000b47: NOT 00000b48: AND 00000b49: PUSH1 0x01 00000b4b: OR 00000b4c: SWAP1 00000b4d: SSTORE 00000b4e: JUMP 00000b4f: JUMPDEST 00000b50: CALLVALUE 00000b51: NUMBER 00000b52: EQ 00000b53: PUSH2 0x0b6e 00000b56: JUMPI 00000b57: PUSH1 0x40 00000b59: MLOAD 00000b5a: PUSH3 0x461bcd 00000b5e: PUSH1 0xe5 00000b60: SHL 00000b61: DUP2 00000b62: MSTORE 00000b63: PUSH1 0x04 00000b65: ADD 00000b66: PUSH2 0x05aa 00000b69: SWAP1 00000b6a: PUSH2 0x36f4 00000b6d: JUMP 00000b6e: JUMPDEST 00000b6f: CALLER 00000b70: PUSH0 00000b71: SWAP1 00000b72: DUP2 00000b73: MSTORE 00000b74: PUSH1 0x02 00000b76: PUSH1 0x20 00000b78: MSTORE 00000b79: PUSH1 0x40 00000b7b: SWAP1 00000b7c: KECCAK256 00000b7d: SLOAD 00000b7e: PUSH1 0xff 00000b80: AND 00000b81: PUSH2 0x0b9c 00000b84: JUMPI 00000b85: PUSH1 0x40 00000b87: MLOAD 00000b88: PUSH3 0x461bcd 00000b8c: PUSH1 0xe5 00000b8e: SHL 00000b8f: DUP2 00000b90: MSTORE 00000b91: PUSH1 0x04 00000b93: ADD 00000b94: PUSH2 0x05aa 00000b97: SWAP1 00000b98: PUSH2 0x370f 00000b9b: JUMP 00000b9c: JUMPDEST 00000b9d: PUSH2 0x0baf 00000ba0: DUP12 00000ba1: DUP12 00000ba2: DUP12 00000ba3: DUP12 00000ba4: DUP12 00000ba5: DUP8 00000ba6: DUP13 00000ba7: DUP13 00000ba8: DUP13 00000ba9: DUP13 00000baa: DUP12 00000bab: PUSH2 0x240d 00000bae: JUMP 00000baf: JUMPDEST 00000bb0: POP 00000bb1: POP 00000bb2: POP 00000bb3: POP 00000bb4: POP 00000bb5: POP 00000bb6: POP 00000bb7: POP 00000bb8: POP 00000bb9: POP 00000bba: POP 00000bbb: JUMP 00000bbc: JUMPDEST 00000bbd: PUSH2 0x09de 00000bc0: DUP5 00000bc1: DUP5 00000bc2: DUP5 00000bc3: DUP5 00000bc4: PUSH2 0x2614 00000bc7: JUMP 00000bc8: JUMPDEST 00000bc9: CALLER 00000bca: PUSH0 00000bcb: SWAP1 00000bcc: DUP2 00000bcd: MSTORE 00000bce: PUSH1 0x04 00000bd0: PUSH1 0x20 00000bd2: MSTORE 00000bd3: PUSH1 0x40 00000bd5: SWAP1 00000bd6: KECCAK256 00000bd7: SLOAD 00000bd8: PUSH1 0xff 00000bda: AND 00000bdb: PUSH2 0x0bf6 00000bde: JUMPI 00000bdf: PUSH1 0x40 00000be1: MLOAD 00000be2: PUSH3 0x461bcd 00000be6: PUSH1 0xe5 00000be8: SHL 00000be9: DUP2 00000bea: MSTORE 00000beb: PUSH1 0x04 00000bed: ADD 00000bee: PUSH2 0x05aa 00000bf1: SWAP1 00000bf2: PUSH2 0x37c5 00000bf5: JUMP 00000bf6: JUMPDEST 00000bf7: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000c0c: PUSH1 0x01 00000c0e: PUSH1 0x01 00000c10: PUSH1 0xa0 00000c12: SHL 00000c13: SUB 00000c14: AND 00000c15: PUSH4 0xd0e30db0 00000c1a: DUP3 00000c1b: PUSH1 0x40 00000c1d: MLOAD 00000c1e: DUP3 00000c1f: PUSH4 0xffffffff 00000c24: AND 00000c25: PUSH1 0xe0 00000c27: SHL 00000c28: DUP2 00000c29: MSTORE 00000c2a: PUSH1 0x04 00000c2c: ADD 00000c2d: PUSH0 00000c2e: PUSH1 0x40 00000c30: MLOAD 00000c31: DUP1 00000c32: DUP4 00000c33: SUB 00000c34: DUP2 00000c35: DUP6 00000c36: DUP9 00000c37: DUP1 00000c38: EXTCODESIZE 00000c39: ISZERO 00000c3a: DUP1 00000c3b: ISZERO 00000c3c: PUSH2 0x0c43 00000c3f: JUMPI 00000c40: PUSH0 00000c41: PUSH0 00000c42: REVERT 00000c43: JUMPDEST 00000c44: POP 00000c45: GAS 00000c46: CALL 00000c47: ISZERO 00000c48: DUP1 00000c49: ISZERO 00000c4a: PUSH2 0x0a3f 00000c4d: JUMPI 00000c4e: RETURNDATASIZE 00000c4f: PUSH0 00000c50: PUSH0 00000c51: RETURNDATACOPY 00000c52: RETURNDATASIZE 00000c53: PUSH0 00000c54: REVERT 00000c55: JUMPDEST 00000c56: PUSH0 00000c57: SLOAD 00000c58: PUSH1 0x01 00000c5a: PUSH1 0x01 00000c5c: PUSH1 0xa0 00000c5e: SHL 00000c5f: SUB 00000c60: AND 00000c61: CALLER 00000c62: EQ 00000c63: PUSH2 0x0c7e 00000c66: JUMPI 00000c67: PUSH1 0x40 00000c69: MLOAD 00000c6a: PUSH3 0x461bcd 00000c6e: PUSH1 0xe5 00000c70: SHL 00000c71: DUP2 00000c72: MSTORE 00000c73: PUSH1 0x04 00000c75: ADD 00000c76: PUSH2 0x05aa 00000c79: SWAP1 00000c7a: PUSH2 0x37aa 00000c7d: JUMP 00000c7e: JUMPDEST 00000c7f: PUSH1 0x01 00000c81: DUP1 00000c82: SLOAD 00000c83: PUSH1 0x01 00000c85: PUSH1 0x01 00000c87: PUSH1 0xa0 00000c89: SHL 00000c8a: SUB 00000c8b: NOT 00000c8c: AND 00000c8d: PUSH1 0x01 00000c8f: PUSH1 0x01 00000c91: PUSH1 0xa0 00000c93: SHL 00000c94: SUB 00000c95: SWAP3 00000c96: SWAP1 00000c97: SWAP3 00000c98: AND 00000c99: SWAP2 00000c9a: SWAP1 00000c9b: SWAP2 00000c9c: OR 00000c9d: SWAP1 00000c9e: SSTORE 00000c9f: JUMP 00000ca0: JUMPDEST 00000ca1: CALLVALUE 00000ca2: NUMBER 00000ca3: EQ 00000ca4: PUSH2 0x0cbf 00000ca7: JUMPI 00000ca8: PUSH1 0x40 00000caa: MLOAD 00000cab: PUSH3 0x461bcd 00000caf: PUSH1 0xe5 00000cb1: SHL 00000cb2: DUP2 00000cb3: MSTORE 00000cb4: PUSH1 0x04 00000cb6: ADD 00000cb7: PUSH2 0x05aa 00000cba: SWAP1 00000cbb: PUSH2 0x36f4 00000cbe: JUMP 00000cbf: JUMPDEST 00000cc0: CALLER 00000cc1: PUSH0 00000cc2: SWAP1 00000cc3: DUP2 00000cc4: MSTORE 00000cc5: PUSH1 0x02 00000cc7: PUSH1 0x20 00000cc9: MSTORE 00000cca: PUSH1 0x40 00000ccc: SWAP1 00000ccd: KECCAK256 00000cce: SLOAD 00000ccf: PUSH1 0xff 00000cd1: AND 00000cd2: PUSH2 0x0ced 00000cd5: JUMPI 00000cd6: PUSH1 0x40 00000cd8: MLOAD 00000cd9: PUSH3 0x461bcd 00000cdd: PUSH1 0xe5 00000cdf: SHL 00000ce0: DUP2 00000ce1: MSTORE 00000ce2: PUSH1 0x04 00000ce4: ADD 00000ce5: PUSH2 0x05aa 00000ce8: SWAP1 00000ce9: PUSH2 0x370f 00000cec: JUMP 00000ced: JUMPDEST 00000cee: PUSH2 0x05ee 00000cf1: DUP6 00000cf2: DUP6 00000cf3: DUP6 00000cf4: DUP6 00000cf5: DUP6 00000cf6: PUSH2 0x1af1 00000cf9: JUMP 00000cfa: JUMPDEST 00000cfb: PUSH0 00000cfc: SLOAD 00000cfd: PUSH1 0x01 00000cff: PUSH1 0x01 00000d01: PUSH1 0xa0 00000d03: SHL 00000d04: SUB 00000d05: AND 00000d06: CALLER 00000d07: EQ 00000d08: DUP1 00000d09: PUSH2 0x0d20 00000d0c: JUMPI 00000d0d: POP 00000d0e: CALLER 00000d0f: PUSH0 00000d10: SWAP1 00000d11: DUP2 00000d12: MSTORE 00000d13: PUSH1 0x03 00000d15: PUSH1 0x20 00000d17: MSTORE 00000d18: PUSH1 0x40 00000d1a: SWAP1 00000d1b: KECCAK256 00000d1c: SLOAD 00000d1d: PUSH1 0xff 00000d1f: AND 00000d20: JUMPDEST 00000d21: PUSH2 0x0d3c 00000d24: JUMPI 00000d25: PUSH1 0x40 00000d27: MLOAD 00000d28: PUSH3 0x461bcd 00000d2c: PUSH1 0xe5 00000d2e: SHL 00000d2f: DUP2 00000d30: MSTORE 00000d31: PUSH1 0x04 00000d33: ADD 00000d34: PUSH2 0x05aa 00000d37: SWAP1 00000d38: PUSH2 0x378f 00000d3b: JUMP 00000d3c: JUMPDEST 00000d3d: PUSH1 0x01 00000d3f: PUSH1 0x01 00000d41: PUSH1 0xa0 00000d43: SHL 00000d44: SUB 00000d45: AND 00000d46: PUSH0 00000d47: SWAP1 00000d48: DUP2 00000d49: MSTORE 00000d4a: PUSH1 0x02 00000d4c: PUSH1 0x20 00000d4e: MSTORE 00000d4f: PUSH1 0x40 00000d51: SWAP1 00000d52: KECCAK256 00000d53: DUP1 00000d54: SLOAD 00000d55: PUSH1 0xff 00000d57: NOT 00000d58: AND 00000d59: SWAP1 00000d5a: SSTORE 00000d5b: JUMP 00000d5c: JUMPDEST 00000d5d: PUSH0 00000d5e: SLOAD 00000d5f: PUSH1 0x01 00000d61: PUSH1 0x01 00000d63: PUSH1 0xa0 00000d65: SHL 00000d66: SUB 00000d67: AND 00000d68: CALLER 00000d69: EQ 00000d6a: DUP1 00000d6b: PUSH2 0x0d82 00000d6e: JUMPI 00000d6f: POP 00000d70: CALLER 00000d71: PUSH0 00000d72: SWAP1 00000d73: DUP2 00000d74: MSTORE 00000d75: PUSH1 0x03 00000d77: PUSH1 0x20 00000d79: MSTORE 00000d7a: PUSH1 0x40 00000d7c: SWAP1 00000d7d: KECCAK256 00000d7e: SLOAD 00000d7f: PUSH1 0xff 00000d81: AND 00000d82: JUMPDEST 00000d83: PUSH2 0x0d9e 00000d86: JUMPI 00000d87: PUSH1 0x40 00000d89: MLOAD 00000d8a: PUSH3 0x461bcd 00000d8e: PUSH1 0xe5 00000d90: SHL 00000d91: DUP2 00000d92: MSTORE 00000d93: PUSH1 0x04 00000d95: ADD 00000d96: PUSH2 0x05aa 00000d99: SWAP1 00000d9a: PUSH2 0x378f 00000d9d: JUMP 00000d9e: JUMPDEST 00000d9f: DUP3 00000da0: DUP2 00000da1: EQ 00000da2: PUSH2 0x0da9 00000da5: JUMPI 00000da6: PUSH0 00000da7: PUSH0 00000da8: REVERT 00000da9: JUMPDEST 00000daa: PUSH0 00000dab: DUP1 00000dac: JUMPDEST 00000dad: DUP3 00000dae: DUP2 00000daf: LT 00000db0: ISZERO 00000db1: PUSH2 0x0de2 00000db4: JUMPI 00000db5: DUP4 00000db6: DUP4 00000db7: DUP3 00000db8: DUP2 00000db9: DUP2 00000dba: LT 00000dbb: PUSH2 0x0dc6 00000dbe: JUMPI 00000dbf: PUSH2 0x0dc6 00000dc2: PUSH2 0x37e0 00000dc5: JUMP 00000dc6: JUMPDEST 00000dc7: SWAP1 00000dc8: POP 00000dc9: PUSH1 0x20 00000dcb: MUL 00000dcc: ADD 00000dcd: CALLDATALOAD 00000dce: DUP3 00000dcf: PUSH2 0x0dd8 00000dd2: SWAP2 00000dd3: SWAP1 00000dd4: PUSH2 0x37f4 00000dd7: JUMP 00000dd8: JUMPDEST 00000dd9: SWAP2 00000dda: POP 00000ddb: PUSH1 0x01 00000ddd: ADD 00000dde: PUSH2 0x0dac 00000de1: JUMP 00000de2: JUMPDEST 00000de3: POP 00000de4: PUSH1 0x40 00000de6: MLOAD 00000de7: PUSH4 0x2e1a7d4d 00000dec: PUSH1 0xe0 00000dee: SHL 00000def: DUP2 00000df0: MSTORE 00000df1: PUSH1 0x04 00000df3: DUP2 00000df4: ADD 00000df5: DUP3 00000df6: SWAP1 00000df7: MSTORE 00000df8: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000e0d: SWAP1 00000e0e: PUSH4 0x2e1a7d4d 00000e13: SWAP1 00000e14: PUSH1 0x24 00000e16: ADD 00000e17: PUSH0 00000e18: PUSH1 0x40 00000e1a: MLOAD 00000e1b: DUP1 00000e1c: DUP4 00000e1d: SUB 00000e1e: DUP2 00000e1f: PUSH0 00000e20: DUP8 00000e21: DUP1 00000e22: EXTCODESIZE 00000e23: ISZERO 00000e24: DUP1 00000e25: ISZERO 00000e26: PUSH2 0x0e2d 00000e29: JUMPI 00000e2a: PUSH0 00000e2b: PUSH0 00000e2c: REVERT 00000e2d: JUMPDEST 00000e2e: POP 00000e2f: GAS 00000e30: CALL 00000e31: ISZERO 00000e32: DUP1 00000e33: ISZERO 00000e34: PUSH2 0x0e3f 00000e37: JUMPI 00000e38: RETURNDATASIZE 00000e39: PUSH0 00000e3a: PUSH0 00000e3b: RETURNDATACOPY 00000e3c: RETURNDATASIZE 00000e3d: PUSH0 00000e3e: REVERT 00000e3f: JUMPDEST 00000e40: POP 00000e41: PUSH0 00000e42: SWAP3 00000e43: POP 00000e44: POP 00000e45: POP 00000e46: JUMPDEST 00000e47: DUP3 00000e48: DUP2 00000e49: LT 00000e4a: ISZERO 00000e4b: PUSH2 0x0a3f 00000e4e: JUMPI 00000e4f: PUSH1 0x02 00000e51: PUSH0 00000e52: DUP8 00000e53: DUP8 00000e54: DUP5 00000e55: DUP2 00000e56: DUP2 00000e57: LT 00000e58: PUSH2 0x0e63 00000e5b: JUMPI 00000e5c: PUSH2 0x0e63 00000e5f: PUSH2 0x37e0 00000e62: JUMP 00000e63: JUMPDEST 00000e64: SWAP1 00000e65: POP 00000e66: PUSH1 0x20 00000e68: MUL 00000e69: ADD 00000e6a: PUSH1 0x20 00000e6c: DUP2 00000e6d: ADD 00000e6e: SWAP1 00000e6f: PUSH2 0x0e78 00000e72: SWAP2 00000e73: SWAP1 00000e74: PUSH2 0x33ac 00000e77: JUMP 00000e78: JUMPDEST 00000e79: PUSH1 0x01 00000e7b: PUSH1 0x01 00000e7d: PUSH1 0xa0 00000e7f: SHL 00000e80: SUB 00000e81: AND 00000e82: DUP2 00000e83: MSTORE 00000e84: PUSH1 0x20 00000e86: DUP2 00000e87: ADD 00000e88: SWAP2 00000e89: SWAP1 00000e8a: SWAP2 00000e8b: MSTORE 00000e8c: PUSH1 0x40 00000e8e: ADD 00000e8f: PUSH0 00000e90: KECCAK256 00000e91: SLOAD 00000e92: PUSH1 0xff 00000e94: AND 00000e95: PUSH2 0x0ec4 00000e98: JUMPI 00000e99: PUSH1 0x40 00000e9b: MLOAD 00000e9c: PUSH3 0x461bcd 00000ea0: PUSH1 0xe5 00000ea2: SHL 00000ea3: DUP2 00000ea4: MSTORE 00000ea5: PUSH1 0x20 00000ea7: PUSH1 0x04 00000ea9: DUP3 00000eaa: ADD 00000eab: MSTORE 00000eac: PUSH1 0x01 00000eae: PUSH1 0x24 00000eb0: DUP3 00000eb1: ADD 00000eb2: MSTORE 00000eb3: PUSH1 0x2d 00000eb5: PUSH1 0xf8 00000eb7: SHL 00000eb8: PUSH1 0x44 00000eba: DUP3 00000ebb: ADD 00000ebc: MSTORE 00000ebd: PUSH1 0x64 00000ebf: ADD 00000ec0: PUSH2 0x05aa 00000ec3: JUMP 00000ec4: JUMPDEST 00000ec5: PUSH0 00000ec6: DUP7 00000ec7: DUP7 00000ec8: DUP4 00000ec9: DUP2 00000eca: DUP2 00000ecb: LT 00000ecc: PUSH2 0x0ed7 00000ecf: JUMPI 00000ed0: PUSH2 0x0ed7 00000ed3: PUSH2 0x37e0 00000ed6: JUMP 00000ed7: JUMPDEST 00000ed8: SWAP1 00000ed9: POP 00000eda: PUSH1 0x20 00000edc: MUL 00000edd: ADD 00000ede: PUSH1 0x20 00000ee0: DUP2 00000ee1: ADD 00000ee2: SWAP1 00000ee3: PUSH2 0x0eec 00000ee6: SWAP2 00000ee7: SWAP1 00000ee8: PUSH2 0x33ac 00000eeb: JUMP 00000eec: JUMPDEST 00000eed: PUSH1 0x01 00000eef: PUSH1 0x01 00000ef1: PUSH1 0xa0 00000ef3: SHL 00000ef4: SUB 00000ef5: AND 00000ef6: DUP6 00000ef7: DUP6 00000ef8: DUP5 00000ef9: DUP2 00000efa: DUP2 00000efb: LT 00000efc: PUSH2 0x0f07 00000eff: JUMPI 00000f00: PUSH2 0x0f07 00000f03: PUSH2 0x37e0 00000f06: JUMP 00000f07: JUMPDEST 00000f08: SWAP1 00000f09: POP 00000f0a: PUSH1 0x20 00000f0c: MUL 00000f0d: ADD 00000f0e: CALLDATALOAD 00000f0f: PUSH1 0x40 00000f11: MLOAD 00000f12: PUSH0 00000f13: PUSH1 0x40 00000f15: MLOAD 00000f16: DUP1 00000f17: DUP4 00000f18: SUB 00000f19: DUP2 00000f1a: DUP6 00000f1b: DUP8 00000f1c: GAS 00000f1d: CALL 00000f1e: SWAP3 00000f1f: POP 00000f20: POP 00000f21: POP 00000f22: RETURNDATASIZE 00000f23: DUP1 00000f24: PUSH0 00000f25: DUP2 00000f26: EQ 00000f27: PUSH2 0x0f4b 00000f2a: JUMPI 00000f2b: PUSH1 0x40 00000f2d: MLOAD 00000f2e: SWAP2 00000f2f: POP 00000f30: PUSH1 0x1f 00000f32: NOT 00000f33: PUSH1 0x3f 00000f35: RETURNDATASIZE 00000f36: ADD 00000f37: AND 00000f38: DUP3 00000f39: ADD 00000f3a: PUSH1 0x40 00000f3c: MSTORE 00000f3d: RETURNDATASIZE 00000f3e: DUP3 00000f3f: MSTORE 00000f40: RETURNDATASIZE 00000f41: PUSH0 00000f42: PUSH1 0x20 00000f44: DUP5 00000f45: ADD 00000f46: RETURNDATACOPY 00000f47: PUSH2 0x0f50 00000f4a: JUMP 00000f4b: JUMPDEST 00000f4c: PUSH1 0x60 00000f4e: SWAP2 00000f4f: POP 00000f50: JUMPDEST 00000f51: POP 00000f52: POP 00000f53: SWAP1 00000f54: POP 00000f55: DUP1 00000f56: PUSH2 0x0f85 00000f59: JUMPI 00000f5a: PUSH1 0x40 00000f5c: MLOAD 00000f5d: PUSH3 0x461bcd 00000f61: PUSH1 0xe5 00000f63: SHL 00000f64: DUP2 00000f65: MSTORE 00000f66: PUSH1 0x20 00000f68: PUSH1 0x04 00000f6a: DUP3 00000f6b: ADD 00000f6c: MSTORE 00000f6d: PUSH1 0x01 00000f6f: PUSH1 0x24 00000f71: DUP3 00000f72: ADD 00000f73: MSTORE 00000f74: PUSH1 0x33 00000f76: PUSH1 0xf9 00000f78: SHL 00000f79: PUSH1 0x44 00000f7b: DUP3 00000f7c: ADD 00000f7d: MSTORE 00000f7e: PUSH1 0x64 00000f80: ADD 00000f81: PUSH2 0x05aa 00000f84: JUMP 00000f85: JUMPDEST 00000f86: POP 00000f87: PUSH1 0x01 00000f89: ADD 00000f8a: PUSH2 0x0e46 00000f8d: JUMP 00000f8e: JUMPDEST 00000f8f: CALLVALUE 00000f90: NUMBER 00000f91: EQ 00000f92: PUSH2 0x0fad 00000f95: JUMPI 00000f96: PUSH1 0x40 00000f98: MLOAD 00000f99: PUSH3 0x461bcd 00000f9d: PUSH1 0xe5 00000f9f: SHL 00000fa0: DUP2 00000fa1: MSTORE 00000fa2: PUSH1 0x04 00000fa4: ADD 00000fa5: PUSH2 0x05aa 00000fa8: SWAP1 00000fa9: PUSH2 0x36f4 00000fac: JUMP 00000fad: JUMPDEST 00000fae: CALLER 00000faf: PUSH0 00000fb0: SWAP1 00000fb1: DUP2 00000fb2: MSTORE 00000fb3: PUSH1 0x02 00000fb5: PUSH1 0x20 00000fb7: MSTORE 00000fb8: PUSH1 0x40 00000fba: SWAP1 00000fbb: KECCAK256 00000fbc: SLOAD 00000fbd: PUSH1 0xff 00000fbf: AND 00000fc0: PUSH2 0x0fdb 00000fc3: JUMPI 00000fc4: PUSH1 0x40 00000fc6: MLOAD 00000fc7: PUSH3 0x461bcd 00000fcb: PUSH1 0xe5 00000fcd: SHL 00000fce: DUP2 00000fcf: MSTORE 00000fd0: PUSH1 0x04 00000fd2: ADD 00000fd3: PUSH2 0x05aa 00000fd6: SWAP1 00000fd7: PUSH2 0x370f 00000fda: JUMP 00000fdb: JUMPDEST 00000fdc: PUSH2 0x0baf 00000fdf: DUP12 00000fe0: DUP12 00000fe1: DUP12 00000fe2: DUP12 00000fe3: DUP12 00000fe4: DUP12 00000fe5: DUP12 00000fe6: DUP12 00000fe7: DUP12 00000fe8: DUP12 00000fe9: DUP12 00000fea: PUSH2 0x240d 00000fed: JUMP 00000fee: JUMPDEST 00000fef: PUSH0 00000ff0: SLOAD 00000ff1: PUSH1 0x01 00000ff3: PUSH1 0x01 00000ff5: PUSH1 0xa0 00000ff7: SHL 00000ff8: SUB 00000ff9: AND 00000ffa: CALLER 00000ffb: EQ 00000ffc: DUP1 00000ffd: PUSH2 0x1014 00001000: JUMPI 00001001: POP 00001002: CALLER 00001003: PUSH0 00001004: SWAP1 00001005: DUP2 00001006: MSTORE 00001007: PUSH1 0x03 00001009: PUSH1 0x20 0000100b: MSTORE 0000100c: PUSH1 0x40 0000100e: SWAP1 0000100f: KECCAK256 00001010: SLOAD 00001011: PUSH1 0xff 00001013: AND 00001014: JUMPDEST 00001015: PUSH2 0x1030 00001018: JUMPI 00001019: PUSH1 0x40 0000101b: MLOAD 0000101c: PUSH3 0x461bcd 00001020: PUSH1 0xe5 00001022: SHL 00001023: DUP2 00001024: MSTORE 00001025: PUSH1 0x04 00001027: ADD 00001028: PUSH2 0x05aa 0000102b: SWAP1 0000102c: PUSH2 0x378f 0000102f: JUMP 00001030: JUMPDEST 00001031: PUSH2 0x106b 00001034: DUP3 00001035: DUP3 00001036: DUP1 00001037: DUP1 00001038: PUSH1 0x20 0000103a: MUL 0000103b: PUSH1 0x20 0000103d: ADD 0000103e: PUSH1 0x40 00001040: MLOAD 00001041: SWAP1 00001042: DUP2 00001043: ADD 00001044: PUSH1 0x40 00001046: MSTORE 00001047: DUP1 00001048: SWAP4 00001049: SWAP3 0000104a: SWAP2 0000104b: SWAP1 0000104c: DUP2 0000104d: DUP2 0000104e: MSTORE 0000104f: PUSH1 0x20 00001051: ADD 00001052: DUP4 00001053: DUP4 00001054: PUSH1 0x20 00001056: MUL 00001057: DUP1 00001058: DUP3 00001059: DUP5 0000105a: CALLDATACOPY 0000105b: PUSH0 0000105c: SWAP3 0000105d: ADD 0000105e: SWAP2 0000105f: SWAP1 00001060: SWAP2 00001061: MSTORE 00001062: POP 00001063: PUSH2 0x2792 00001066: SWAP3 00001067: POP 00001068: POP 00001069: POP 0000106a: JUMP 0000106b: JUMPDEST 0000106c: POP 0000106d: POP 0000106e: JUMP 0000106f: JUMPDEST 00001070: PUSH0 00001071: SLOAD 00001072: PUSH1 0x01 00001074: PUSH1 0x01 00001076: PUSH1 0xa0 00001078: SHL 00001079: SUB 0000107a: AND 0000107b: CALLER 0000107c: EQ 0000107d: PUSH2 0x1098 00001080: JUMPI 00001081: PUSH1 0x40 00001083: MLOAD 00001084: PUSH3 0x461bcd 00001088: PUSH1 0xe5 0000108a: SHL 0000108b: DUP2 0000108c: MSTORE 0000108d: PUSH1 0x04 0000108f: ADD 00001090: PUSH2 0x05aa 00001093: SWAP1 00001094: PUSH2 0x37aa 00001097: JUMP 00001098: JUMPDEST 00001099: PUSH0 0000109a: JUMPDEST 0000109b: DUP2 0000109c: DUP2 0000109d: LT 0000109e: ISZERO 0000109f: PUSH2 0x10fd 000010a2: JUMPI 000010a3: PUSH1 0x01 000010a5: PUSH1 0x02 000010a7: PUSH0 000010a8: DUP6 000010a9: DUP6 000010aa: DUP6 000010ab: DUP2 000010ac: DUP2 000010ad: LT 000010ae: PUSH2 0x10b9 000010b1: JUMPI 000010b2: PUSH2 0x10b9 000010b5: PUSH2 0x37e0 000010b8: JUMP 000010b9: JUMPDEST 000010ba: SWAP1 000010bb: POP 000010bc: PUSH1 0x20 000010be: MUL 000010bf: ADD 000010c0: PUSH1 0x20 000010c2: DUP2 000010c3: ADD 000010c4: SWAP1 000010c5: PUSH2 0x10ce 000010c8: SWAP2 000010c9: SWAP1 000010ca: PUSH2 0x33ac 000010cd: JUMP 000010ce: JUMPDEST 000010cf: PUSH1 0x01 000010d1: PUSH1 0x01 000010d3: PUSH1 0xa0 000010d5: SHL 000010d6: SUB 000010d7: AND 000010d8: DUP2 000010d9: MSTORE 000010da: PUSH1 0x20 000010dc: DUP2 000010dd: ADD 000010de: SWAP2 000010df: SWAP1 000010e0: SWAP2 000010e1: MSTORE 000010e2: PUSH1 0x40 000010e4: ADD 000010e5: PUSH0 000010e6: KECCAK256 000010e7: DUP1 000010e8: SLOAD 000010e9: PUSH1 0xff 000010eb: NOT 000010ec: AND 000010ed: SWAP2 000010ee: ISZERO 000010ef: ISZERO 000010f0: SWAP2 000010f1: SWAP1 000010f2: SWAP2 000010f3: OR 000010f4: SWAP1 000010f5: SSTORE 000010f6: PUSH1 0x01 000010f8: ADD 000010f9: PUSH2 0x109a 000010fc: JUMP 000010fd: JUMPDEST 000010fe: POP 000010ff: POP 00001100: POP 00001101: JUMP 00001102: JUMPDEST 00001103: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001118: PUSH1 0x01 0000111a: PUSH1 0x01 0000111c: PUSH1 0xa0 0000111e: SHL 0000111f: SUB 00001120: AND 00001121: PUSH4 0xd0e30db0 00001126: CALLVALUE 00001127: PUSH1 0x40 00001129: MLOAD 0000112a: DUP3 0000112b: PUSH4 0xffffffff 00001130: AND 00001131: PUSH1 0xe0 00001133: SHL 00001134: DUP2 00001135: MSTORE 00001136: PUSH1 0x04 00001138: ADD 00001139: PUSH0 0000113a: PUSH1 0x40 0000113c: MLOAD 0000113d: DUP1 0000113e: DUP4 0000113f: SUB 00001140: DUP2 00001141: DUP6 00001142: DUP9 00001143: DUP1 00001144: EXTCODESIZE 00001145: ISZERO 00001146: DUP1 00001147: ISZERO 00001148: PUSH2 0x114f 0000114b: JUMPI 0000114c: PUSH0 0000114d: PUSH0 0000114e: REVERT 0000114f: JUMPDEST 00001150: POP 00001151: GAS 00001152: CALL 00001153: ISZERO 00001154: DUP1 00001155: ISZERO 00001156: PUSH2 0x05ee 00001159: JUMPI 0000115a: RETURNDATASIZE 0000115b: PUSH0 0000115c: PUSH0 0000115d: RETURNDATACOPY 0000115e: RETURNDATASIZE 0000115f: PUSH0 00001160: REVERT 00001161: JUMPDEST 00001162: PUSH0 00001163: SLOAD 00001164: PUSH1 0x01 00001166: PUSH1 0x01 00001168: PUSH1 0xa0 0000116a: SHL 0000116b: SUB 0000116c: AND 0000116d: CALLER 0000116e: EQ 0000116f: DUP1 00001170: PUSH2 0x1187 00001173: JUMPI 00001174: POP 00001175: CALLER 00001176: PUSH0 00001177: SWAP1 00001178: DUP2 00001179: MSTORE 0000117a: PUSH1 0x03 0000117c: PUSH1 0x20 0000117e: MSTORE 0000117f: PUSH1 0x40 00001181: SWAP1 00001182: KECCAK256 00001183: SLOAD 00001184: PUSH1 0xff 00001186: AND 00001187: JUMPDEST 00001188: PUSH2 0x11a3 0000118b: JUMPI 0000118c: PUSH1 0x40 0000118e: MLOAD 0000118f: PUSH3 0x461bcd 00001193: PUSH1 0xe5 00001195: SHL 00001196: DUP2 00001197: MSTORE 00001198: PUSH1 0x04 0000119a: ADD 0000119b: PUSH2 0x05aa 0000119e: SWAP1 0000119f: PUSH2 0x378f 000011a2: JUMP 000011a3: JUMPDEST 000011a4: PUSH2 0x1204 000011a7: PUSH1 0x06 000011a9: DUP1 000011aa: SLOAD 000011ab: DUP1 000011ac: PUSH1 0x20 000011ae: MUL 000011af: PUSH1 0x20 000011b1: ADD 000011b2: PUSH1 0x40 000011b4: MLOAD 000011b5: SWAP1 000011b6: DUP2 000011b7: ADD 000011b8: PUSH1 0x40 000011ba: MSTORE 000011bb: DUP1 000011bc: SWAP3 000011bd: SWAP2 000011be: SWAP1 000011bf: DUP2 000011c0: DUP2 000011c1: MSTORE 000011c2: PUSH1 0x20 000011c4: ADD 000011c5: DUP3 000011c6: DUP1 000011c7: SLOAD 000011c8: DUP1 000011c9: ISZERO 000011ca: PUSH2 0x11fa 000011cd: JUMPI 000011ce: PUSH1 0x20 000011d0: MUL 000011d1: DUP3 000011d2: ADD 000011d3: SWAP2 000011d4: SWAP1 000011d5: PUSH0 000011d6: MSTORE 000011d7: PUSH1 0x20 000011d9: PUSH0 000011da: KECCAK256 000011db: SWAP1 000011dc: JUMPDEST 000011dd: DUP2 000011de: SLOAD 000011df: PUSH1 0x01 000011e1: PUSH1 0x01 000011e3: PUSH1 0xa0 000011e5: SHL 000011e6: SUB 000011e7: AND 000011e8: DUP2 000011e9: MSTORE 000011ea: PUSH1 0x01 000011ec: SWAP1 000011ed: SWAP2 000011ee: ADD 000011ef: SWAP1 000011f0: PUSH1 0x20 000011f2: ADD 000011f3: DUP1 000011f4: DUP4 000011f5: GT 000011f6: PUSH2 0x11dc 000011f9: JUMPI 000011fa: JUMPDEST 000011fb: POP 000011fc: POP 000011fd: POP 000011fe: POP 000011ff: POP 00001200: PUSH2 0x2792 00001203: JUMP 00001204: JUMPDEST 00001205: JUMP 00001206: JUMPDEST 00001207: PUSH0 00001208: SLOAD 00001209: PUSH1 0x01 0000120b: PUSH1 0x01 0000120d: PUSH1 0xa0 0000120f: SHL 00001210: SUB 00001211: AND 00001212: CALLER 00001213: EQ 00001214: PUSH2 0x122f 00001217: JUMPI 00001218: PUSH1 0x40 0000121a: MLOAD 0000121b: PUSH3 0x461bcd 0000121f: PUSH1 0xe5 00001221: SHL 00001222: DUP2 00001223: MSTORE 00001224: PUSH1 0x04 00001226: ADD 00001227: PUSH2 0x05aa 0000122a: SWAP1 0000122b: PUSH2 0x37aa 0000122e: JUMP 0000122f: JUMPDEST 00001230: PUSH1 0x01 00001232: PUSH1 0x01 00001234: PUSH1 0xa0 00001236: SHL 00001237: SUB 00001238: AND 00001239: PUSH0 0000123a: SWAP1 0000123b: DUP2 0000123c: MSTORE 0000123d: PUSH1 0x05 0000123f: PUSH1 0x20 00001241: MSTORE 00001242: PUSH1 0x40 00001244: SWAP1 00001245: KECCAK256 00001246: DUP1 00001247: SLOAD 00001248: PUSH1 0xff 0000124a: NOT 0000124b: AND 0000124c: PUSH1 0x01 0000124e: OR 0000124f: SWAP1 00001250: SSTORE 00001251: JUMP 00001252: JUMPDEST 00001253: CALLVALUE 00001254: NUMBER 00001255: EQ 00001256: PUSH2 0x1271 00001259: JUMPI 0000125a: PUSH1 0x40 0000125c: MLOAD 0000125d: PUSH3 0x461bcd 00001261: PUSH1 0xe5 00001263: SHL 00001264: DUP2 00001265: MSTORE 00001266: PUSH1 0x04 00001268: ADD 00001269: PUSH2 0x05aa 0000126c: SWAP1 0000126d: PUSH2 0x36f4 00001270: JUMP 00001271: JUMPDEST 00001272: DUP6 00001273: PUSH2 0x127c 00001276: CALLER 00001277: DUP3 00001278: PUSH2 0x1898 0000127b: JUMP 0000127c: JUMPDEST 0000127d: PUSH2 0x1298 00001280: JUMPI 00001281: PUSH1 0x40 00001283: MLOAD 00001284: PUSH3 0x461bcd 00001288: PUSH1 0xe5 0000128a: SHL 0000128b: DUP2 0000128c: MSTORE 0000128d: PUSH1 0x04 0000128f: ADD 00001290: PUSH2 0x05aa 00001293: SWAP1 00001294: PUSH2 0x370f 00001297: JUMP 00001298: JUMPDEST 00001299: PUSH2 0x06ae 0000129c: DUP7 0000129d: DUP7 0000129e: DUP7 0000129f: DUP7 000012a0: DUP7 000012a1: PUSH2 0x213f 000012a4: JUMP 000012a5: JUMPDEST 000012a6: PUSH2 0x106b 000012a9: DUP3 000012aa: DUP3 000012ab: PUSH2 0x28e7 000012ae: JUMP 000012af: JUMPDEST 000012b0: PUSH0 000012b1: SLOAD 000012b2: PUSH1 0x01 000012b4: PUSH1 0x01 000012b6: PUSH1 0xa0 000012b8: SHL 000012b9: SUB 000012ba: AND 000012bb: CALLER 000012bc: EQ 000012bd: DUP1 000012be: PUSH2 0x12d5 000012c1: JUMPI 000012c2: POP 000012c3: CALLER 000012c4: PUSH0 000012c5: SWAP1 000012c6: DUP2 000012c7: MSTORE 000012c8: PUSH1 0x03 000012ca: PUSH1 0x20 000012cc: MSTORE 000012cd: PUSH1 0x40 000012cf: SWAP1 000012d0: KECCAK256 000012d1: SLOAD 000012d2: PUSH1 0xff 000012d4: AND 000012d5: JUMPDEST 000012d6: PUSH2 0x12f1 000012d9: JUMPI 000012da: PUSH1 0x40 000012dc: MLOAD 000012dd: PUSH3 0x461bcd 000012e1: PUSH1 0xe5 000012e3: SHL 000012e4: DUP2 000012e5: MSTORE 000012e6: PUSH1 0x04 000012e8: ADD 000012e9: PUSH2 0x05aa 000012ec: SWAP1 000012ed: PUSH2 0x378f 000012f0: JUMP 000012f1: JUMPDEST 000012f2: PUSH1 0x01 000012f4: PUSH1 0x01 000012f6: PUSH1 0xa0 000012f8: SHL 000012f9: SUB 000012fa: AND 000012fb: PUSH0 000012fc: SWAP1 000012fd: DUP2 000012fe: MSTORE 000012ff: PUSH1 0x03 00001301: PUSH1 0x20 00001303: MSTORE 00001304: PUSH1 0x40 00001306: SWAP1 00001307: KECCAK256 00001308: DUP1 00001309: SLOAD 0000130a: PUSH1 0xff 0000130c: NOT 0000130d: AND 0000130e: SWAP1 0000130f: SSTORE 00001310: JUMP 00001311: JUMPDEST 00001312: PUSH0 00001313: SLOAD 00001314: PUSH1 0x01 00001316: PUSH1 0x01 00001318: PUSH1 0xa0 0000131a: SHL 0000131b: SUB 0000131c: AND 0000131d: CALLER 0000131e: EQ 0000131f: DUP1 00001320: PUSH2 0x1337 00001323: JUMPI 00001324: POP 00001325: CALLER 00001326: PUSH0 00001327: SWAP1 00001328: DUP2 00001329: MSTORE 0000132a: PUSH1 0x03 0000132c: PUSH1 0x20 0000132e: MSTORE 0000132f: PUSH1 0x40 00001331: SWAP1 00001332: KECCAK256 00001333: SLOAD 00001334: PUSH1 0xff 00001336: AND 00001337: JUMPDEST 00001338: PUSH2 0x1353 0000133b: JUMPI 0000133c: PUSH1 0x40 0000133e: MLOAD 0000133f: PUSH3 0x461bcd 00001343: PUSH1 0xe5 00001345: SHL 00001346: DUP2 00001347: MSTORE 00001348: PUSH1 0x04 0000134a: ADD 0000134b: PUSH2 0x05aa 0000134e: SWAP1 0000134f: PUSH2 0x378f 00001352: JUMP 00001353: JUMPDEST 00001354: PUSH1 0x01 00001356: PUSH1 0x01 00001358: PUSH1 0xa0 0000135a: SHL 0000135b: SUB 0000135c: AND 0000135d: PUSH0 0000135e: SWAP1 0000135f: DUP2 00001360: MSTORE 00001361: PUSH1 0x05 00001363: PUSH1 0x20 00001365: MSTORE 00001366: PUSH1 0x40 00001368: SWAP1 00001369: KECCAK256 0000136a: DUP1 0000136b: SLOAD 0000136c: PUSH1 0xff 0000136e: NOT 0000136f: AND 00001370: SWAP1 00001371: SSTORE 00001372: JUMP 00001373: JUMPDEST 00001374: CALLVALUE 00001375: NUMBER 00001376: EQ 00001377: PUSH2 0x1392 0000137a: JUMPI 0000137b: PUSH1 0x40 0000137d: MLOAD 0000137e: PUSH3 0x461bcd 00001382: PUSH1 0xe5 00001384: SHL 00001385: DUP2 00001386: MSTORE 00001387: PUSH1 0x04 00001389: ADD 0000138a: PUSH2 0x05aa 0000138d: SWAP1 0000138e: PUSH2 0x36f4 00001391: JUMP 00001392: JUMPDEST 00001393: DUP12 00001394: PUSH2 0x139d 00001397: CALLER 00001398: DUP3 00001399: PUSH2 0x1898 0000139c: JUMP 0000139d: JUMPDEST 0000139e: PUSH2 0x13b9 000013a1: JUMPI 000013a2: PUSH1 0x40 000013a4: MLOAD 000013a5: PUSH3 0x461bcd 000013a9: PUSH1 0xe5 000013ab: SHL 000013ac: DUP2 000013ad: MSTORE 000013ae: PUSH1 0x04 000013b0: ADD 000013b1: PUSH2 0x05aa 000013b4: SWAP1 000013b5: PUSH2 0x370f 000013b8: JUMP 000013b9: JUMPDEST 000013ba: PUSH2 0x13cc 000013bd: DUP13 000013be: DUP13 000013bf: DUP13 000013c0: DUP13 000013c1: DUP13 000013c2: DUP13 000013c3: DUP13 000013c4: DUP13 000013c5: DUP13 000013c6: DUP13 000013c7: DUP13 000013c8: PUSH2 0x240d 000013cb: JUMP 000013cc: JUMPDEST 000013cd: POP 000013ce: POP 000013cf: POP 000013d0: POP 000013d1: POP 000013d2: POP 000013d3: POP 000013d4: POP 000013d5: POP 000013d6: POP 000013d7: POP 000013d8: POP 000013d9: POP 000013da: JUMP 000013db: JUMPDEST 000013dc: PUSH0 000013dd: SLOAD 000013de: PUSH1 0x01 000013e0: PUSH1 0x01 000013e2: PUSH1 0xa0 000013e4: SHL 000013e5: SUB 000013e6: AND 000013e7: CALLER 000013e8: EQ 000013e9: DUP1 000013ea: PUSH2 0x1401 000013ed: JUMPI 000013ee: POP 000013ef: CALLER 000013f0: PUSH0 000013f1: SWAP1 000013f2: DUP2 000013f3: MSTORE 000013f4: PUSH1 0x03 000013f6: PUSH1 0x20 000013f8: MSTORE 000013f9: PUSH1 0x40 000013fb: SWAP1 000013fc: KECCAK256 000013fd: SLOAD 000013fe: PUSH1 0xff 00001400: AND 00001401: JUMPDEST 00001402: PUSH2 0x141d 00001405: JUMPI 00001406: PUSH1 0x40 00001408: MLOAD 00001409: PUSH3 0x461bcd 0000140d: PUSH1 0xe5 0000140f: SHL 00001410: DUP2 00001411: MSTORE 00001412: PUSH1 0x04 00001414: ADD 00001415: PUSH2 0x05aa 00001418: SWAP1 00001419: PUSH2 0x378f 0000141c: JUMP 0000141d: JUMPDEST 0000141e: PUSH0 0000141f: JUMPDEST 00001420: DUP2 00001421: DUP2 00001422: LT 00001423: ISZERO 00001424: PUSH2 0x10fd 00001427: JUMPI 00001428: PUSH2 0x1456 0000142b: DUP4 0000142c: DUP4 0000142d: DUP4 0000142e: DUP2 0000142f: DUP2 00001430: LT 00001431: PUSH2 0x143c 00001434: JUMPI 00001435: PUSH2 0x143c 00001438: PUSH2 0x37e0 0000143b: JUMP 0000143c: JUMPDEST 0000143d: SWAP1 0000143e: POP 0000143f: PUSH1 0x20 00001441: MUL 00001442: ADD 00001443: PUSH1 0x20 00001445: DUP2 00001446: ADD 00001447: SWAP1 00001448: PUSH2 0x1451 0000144b: SWAP2 0000144c: SWAP1 0000144d: PUSH2 0x33ac 00001450: JUMP 00001451: JUMPDEST 00001452: PUSH2 0x29a9 00001455: JUMP 00001456: JUMPDEST 00001457: PUSH1 0x01 00001459: ADD 0000145a: PUSH2 0x141f 0000145d: JUMP 0000145e: JUMPDEST 0000145f: PUSH0 00001460: SLOAD 00001461: PUSH1 0x01 00001463: PUSH1 0x01 00001465: PUSH1 0xa0 00001467: SHL 00001468: SUB 00001469: AND 0000146a: CALLER 0000146b: EQ 0000146c: DUP1 0000146d: PUSH2 0x1484 00001470: JUMPI 00001471: POP 00001472: CALLER 00001473: PUSH0 00001474: SWAP1 00001475: DUP2 00001476: MSTORE 00001477: PUSH1 0x03 00001479: PUSH1 0x20 0000147b: MSTORE 0000147c: PUSH1 0x40 0000147e: SWAP1 0000147f: KECCAK256 00001480: SLOAD 00001481: PUSH1 0xff 00001483: AND 00001484: JUMPDEST 00001485: PUSH2 0x14a0 00001488: JUMPI 00001489: PUSH1 0x40 0000148b: MLOAD 0000148c: PUSH3 0x461bcd 00001490: PUSH1 0xe5 00001492: SHL 00001493: DUP2 00001494: MSTORE 00001495: PUSH1 0x04 00001497: ADD 00001498: PUSH2 0x05aa 0000149b: SWAP1 0000149c: PUSH2 0x378f 0000149f: JUMP 000014a0: JUMPDEST 000014a1: PUSH2 0x14a9 000014a4: DUP2 000014a5: PUSH2 0x29a9 000014a8: JUMP 000014a9: JUMPDEST 000014aa: POP 000014ab: JUMP 000014ac: JUMPDEST 000014ad: CALLER 000014ae: PUSH0 000014af: SWAP1 000014b0: DUP2 000014b1: MSTORE 000014b2: PUSH1 0x04 000014b4: PUSH1 0x20 000014b6: MSTORE 000014b7: PUSH1 0x40 000014b9: SWAP1 000014ba: KECCAK256 000014bb: SLOAD 000014bc: DUP3 000014bd: SWAP1 000014be: PUSH1 0xff 000014c0: AND 000014c1: PUSH2 0x14dc 000014c4: JUMPI 000014c5: PUSH1 0x40 000014c7: MLOAD 000014c8: PUSH3 0x461bcd 000014cc: PUSH1 0xe5 000014ce: SHL 000014cf: DUP2 000014d0: MSTORE 000014d1: PUSH1 0x04 000014d3: ADD 000014d4: PUSH2 0x05aa 000014d7: SWAP1 000014d8: PUSH2 0x37c5 000014db: JUMP 000014dc: JUMPDEST 000014dd: PUSH1 0x01 000014df: PUSH1 0x01 000014e1: PUSH1 0xa0 000014e3: SHL 000014e4: SUB 000014e5: DUP2 000014e6: AND 000014e7: PUSH0 000014e8: SWAP1 000014e9: DUP2 000014ea: MSTORE 000014eb: PUSH1 0x05 000014ed: PUSH1 0x20 000014ef: MSTORE 000014f0: PUSH1 0x40 000014f2: SWAP1 000014f3: KECCAK256 000014f4: SLOAD 000014f5: PUSH1 0xff 000014f7: AND 000014f8: PUSH2 0x1527 000014fb: JUMPI 000014fc: PUSH1 0x40 000014fe: MLOAD 000014ff: PUSH3 0x461bcd 00001503: PUSH1 0xe5 00001505: SHL 00001506: DUP2 00001507: MSTORE 00001508: PUSH1 0x20 0000150a: PUSH1 0x04 0000150c: DUP3 0000150d: ADD 0000150e: MSTORE 0000150f: PUSH1 0x01 00001511: PUSH1 0x24 00001513: DUP3 00001514: ADD 00001515: MSTORE 00001516: PUSH1 0x1d 00001518: PUSH1 0xfa 0000151a: SHL 0000151b: PUSH1 0x44 0000151d: DUP3 0000151e: ADD 0000151f: MSTORE 00001520: PUSH1 0x64 00001522: ADD 00001523: PUSH2 0x05aa 00001526: JUMP 00001527: JUMPDEST 00001528: PUSH1 0x40 0000152a: MLOAD 0000152b: PUSH4 0x2e1a7d4d 00001530: PUSH1 0xe0 00001532: SHL 00001533: DUP2 00001534: MSTORE 00001535: PUSH1 0x04 00001537: DUP2 00001538: ADD 00001539: DUP4 0000153a: SWAP1 0000153b: MSTORE 0000153c: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001551: SWAP1 00001552: PUSH4 0x2e1a7d4d 00001557: SWAP1 00001558: PUSH1 0x24 0000155a: ADD 0000155b: PUSH0 0000155c: PUSH1 0x40 0000155e: MLOAD 0000155f: DUP1 00001560: DUP4 00001561: SUB 00001562: DUP2 00001563: PUSH0 00001564: DUP8 00001565: DUP1 00001566: EXTCODESIZE 00001567: ISZERO 00001568: DUP1 00001569: ISZERO 0000156a: PUSH2 0x1571 0000156d: JUMPI 0000156e: PUSH0 0000156f: PUSH0 00001570: REVERT 00001571: JUMPDEST 00001572: POP 00001573: GAS 00001574: CALL 00001575: ISZERO 00001576: DUP1 00001577: ISZERO 00001578: PUSH2 0x1583 0000157b: JUMPI 0000157c: RETURNDATASIZE 0000157d: PUSH0 0000157e: PUSH0 0000157f: RETURNDATACOPY 00001580: RETURNDATASIZE 00001581: PUSH0 00001582: REVERT 00001583: JUMPDEST 00001584: POP 00001585: POP 00001586: POP 00001587: POP 00001588: PUSH0 00001589: DUP4 0000158a: PUSH1 0x01 0000158c: PUSH1 0x01 0000158e: PUSH1 0xa0 00001590: SHL 00001591: SUB 00001592: AND 00001593: DUP4 00001594: PUSH1 0x40 00001596: MLOAD 00001597: PUSH0 00001598: PUSH1 0x40 0000159a: MLOAD 0000159b: DUP1 0000159c: DUP4 0000159d: SUB 0000159e: DUP2 0000159f: DUP6 000015a0: DUP8 000015a1: GAS 000015a2: CALL 000015a3: SWAP3 000015a4: POP 000015a5: POP 000015a6: POP 000015a7: RETURNDATASIZE 000015a8: DUP1 000015a9: PUSH0 000015aa: DUP2 000015ab: EQ 000015ac: PUSH2 0x15d0 000015af: JUMPI 000015b0: PUSH1 0x40 000015b2: MLOAD 000015b3: SWAP2 000015b4: POP 000015b5: PUSH1 0x1f 000015b7: NOT 000015b8: PUSH1 0x3f 000015ba: RETURNDATASIZE 000015bb: ADD 000015bc: AND 000015bd: DUP3 000015be: ADD 000015bf: PUSH1 0x40 000015c1: MSTORE 000015c2: RETURNDATASIZE 000015c3: DUP3 000015c4: MSTORE 000015c5: RETURNDATASIZE 000015c6: PUSH0 000015c7: PUSH1 0x20 000015c9: DUP5 000015ca: ADD 000015cb: RETURNDATACOPY 000015cc: PUSH2 0x15d5 000015cf: JUMP 000015d0: JUMPDEST 000015d1: PUSH1 0x60 000015d3: SWAP2 000015d4: POP 000015d5: JUMPDEST 000015d6: POP 000015d7: POP 000015d8: SWAP1 000015d9: POP 000015da: DUP1 000015db: PUSH2 0x09de 000015de: JUMPI 000015df: PUSH1 0x40 000015e1: MLOAD 000015e2: PUSH3 0x461bcd 000015e6: PUSH1 0xe5 000015e8: SHL 000015e9: DUP2 000015ea: MSTORE 000015eb: PUSH1 0x20 000015ed: PUSH1 0x04 000015ef: DUP3 000015f0: ADD 000015f1: MSTORE 000015f2: PUSH1 0x01 000015f4: PUSH1 0x24 000015f6: DUP3 000015f7: ADD 000015f8: MSTORE 000015f9: PUSH1 0x33 000015fb: PUSH1 0xf9 000015fd: SHL 000015fe: PUSH1 0x44 00001600: DUP3 00001601: ADD 00001602: MSTORE 00001603: PUSH1 0x64 00001605: ADD 00001606: PUSH2 0x05aa 00001609: JUMP 0000160a: JUMPDEST 0000160b: CALLER 0000160c: PUSH0 0000160d: SWAP1 0000160e: DUP2 0000160f: MSTORE 00001610: PUSH1 0x04 00001612: PUSH1 0x20 00001614: MSTORE 00001615: PUSH1 0x40 00001617: SWAP1 00001618: KECCAK256 00001619: SLOAD 0000161a: DUP4 0000161b: SWAP1 0000161c: PUSH1 0xff 0000161e: AND 0000161f: PUSH2 0x163a 00001622: JUMPI 00001623: PUSH1 0x40 00001625: MLOAD 00001626: PUSH3 0x461bcd 0000162a: PUSH1 0xe5 0000162c: SHL 0000162d: DUP2 0000162e: MSTORE 0000162f: PUSH1 0x04 00001631: ADD 00001632: PUSH2 0x05aa 00001635: SWAP1 00001636: PUSH2 0x37c5 00001639: JUMP 0000163a: JUMPDEST 0000163b: PUSH1 0x01 0000163d: PUSH1 0x01 0000163f: PUSH1 0xa0 00001641: SHL 00001642: SUB 00001643: DUP2 00001644: AND 00001645: PUSH0 00001646: SWAP1 00001647: DUP2 00001648: MSTORE 00001649: PUSH1 0x05 0000164b: PUSH1 0x20 0000164d: MSTORE 0000164e: PUSH1 0x40 00001650: SWAP1 00001651: KECCAK256 00001652: SLOAD 00001653: PUSH1 0xff 00001655: AND 00001656: PUSH2 0x1685 00001659: JUMPI 0000165a: PUSH1 0x40 0000165c: MLOAD 0000165d: PUSH3 0x461bcd 00001661: PUSH1 0xe5 00001663: SHL 00001664: DUP2 00001665: MSTORE 00001666: PUSH1 0x20 00001668: PUSH1 0x04 0000166a: DUP3 0000166b: ADD 0000166c: MSTORE 0000166d: PUSH1 0x01 0000166f: PUSH1 0x24 00001671: DUP3 00001672: ADD 00001673: MSTORE 00001674: PUSH1 0x1d 00001676: PUSH1 0xfa 00001678: SHL 00001679: PUSH1 0x44 0000167b: DUP3 0000167c: ADD 0000167d: MSTORE 0000167e: PUSH1 0x64 00001680: ADD 00001681: PUSH2 0x05aa 00001684: JUMP 00001685: JUMPDEST 00001686: PUSH1 0x40 00001688: MLOAD 00001689: PUSH4 0xa9059cbb 0000168e: PUSH1 0xe0 00001690: SHL 00001691: DUP2 00001692: MSTORE 00001693: PUSH1 0x01 00001695: PUSH1 0x01 00001697: PUSH1 0xa0 00001699: SHL 0000169a: SUB 0000169b: DUP5 0000169c: AND 0000169d: SWAP1 0000169e: PUSH4 0xa9059cbb 000016a3: SWAP1 000016a4: PUSH2 0x16b3 000016a7: SWAP1 000016a8: DUP8 000016a9: SWAP1 000016aa: DUP7 000016ab: SWAP1 000016ac: PUSH1 0x04 000016ae: ADD 000016af: PUSH2 0x3807 000016b2: JUMP 000016b3: JUMPDEST 000016b4: PUSH0 000016b5: PUSH1 0x40 000016b7: MLOAD 000016b8: DUP1 000016b9: DUP4 000016ba: SUB 000016bb: DUP2 000016bc: PUSH0 000016bd: DUP8 000016be: DUP1 000016bf: EXTCODESIZE 000016c0: ISZERO 000016c1: DUP1 000016c2: ISZERO 000016c3: PUSH2 0x16ca 000016c6: JUMPI 000016c7: PUSH0 000016c8: PUSH0 000016c9: REVERT 000016ca: JUMPDEST 000016cb: POP 000016cc: GAS 000016cd: CALL 000016ce: ISZERO 000016cf: DUP1 000016d0: ISZERO 000016d1: PUSH2 0x075e 000016d4: JUMPI 000016d5: RETURNDATASIZE 000016d6: PUSH0 000016d7: PUSH0 000016d8: RETURNDATACOPY 000016d9: RETURNDATASIZE 000016da: PUSH0 000016db: REVERT 000016dc: JUMPDEST 000016dd: PUSH0 000016de: SLOAD 000016df: PUSH1 0x01 000016e1: PUSH1 0x01 000016e3: PUSH1 0xa0 000016e5: SHL 000016e6: SUB 000016e7: AND 000016e8: CALLER 000016e9: EQ 000016ea: DUP1 000016eb: PUSH2 0x1702 000016ee: JUMPI 000016ef: POP 000016f0: CALLER 000016f1: PUSH0 000016f2: SWAP1 000016f3: DUP2 000016f4: MSTORE 000016f5: PUSH1 0x03 000016f7: PUSH1 0x20 000016f9: MSTORE 000016fa: PUSH1 0x40 000016fc: SWAP1 000016fd: KECCAK256 000016fe: SLOAD 000016ff: PUSH1 0xff 00001701: AND 00001702: JUMPDEST 00001703: PUSH2 0x171e 00001706: JUMPI 00001707: PUSH1 0x40 00001709: MLOAD 0000170a: PUSH3 0x461bcd 0000170e: PUSH1 0xe5 00001710: SHL 00001711: DUP2 00001712: MSTORE 00001713: PUSH1 0x04 00001715: ADD 00001716: PUSH2 0x05aa 00001719: SWAP1 0000171a: PUSH2 0x378f 0000171d: JUMP 0000171e: JUMPDEST 0000171f: PUSH1 0x01 00001721: PUSH1 0x01 00001723: PUSH1 0xa0 00001725: SHL 00001726: SUB 00001727: AND 00001728: PUSH0 00001729: SWAP1 0000172a: DUP2 0000172b: MSTORE 0000172c: PUSH1 0x04 0000172e: PUSH1 0x20 00001730: MSTORE 00001731: PUSH1 0x40 00001733: SWAP1 00001734: KECCAK256 00001735: DUP1 00001736: SLOAD 00001737: PUSH1 0xff 00001739: NOT 0000173a: AND 0000173b: PUSH1 0x01 0000173d: OR 0000173e: SWAP1 0000173f: SSTORE 00001740: JUMP 00001741: JUMPDEST 00001742: PUSH1 0x01 00001744: PUSH1 0x01 00001746: PUSH1 0xa0 00001748: SHL 00001749: SUB 0000174a: DUP5 0000174b: AND 0000174c: PUSH4 0x095ea7b3 00001751: PUSH20 0xba12222222228d8ba445958a75a0704d566bf2c8 00001766: PUSH2 0x1770 00001769: DUP6 0000176a: PUSH1 0x01 0000176c: PUSH2 0x37f4 0000176f: JUMP 00001770: JUMPDEST 00001771: PUSH1 0x40 00001773: MLOAD 00001774: DUP4 00001775: PUSH4 0xffffffff 0000177a: AND 0000177b: PUSH1 0xe0 0000177d: SHL 0000177e: DUP2 0000177f: MSTORE 00001780: PUSH1 0x04 00001782: ADD 00001783: PUSH2 0x178d 00001786: SWAP3 00001787: SWAP2 00001788: SWAP1 00001789: PUSH2 0x3807 0000178c: JUMP 0000178d: JUMPDEST 0000178e: PUSH0 0000178f: PUSH1 0x40 00001791: MLOAD 00001792: DUP1 00001793: DUP4 00001794: SUB 00001795: DUP2 00001796: PUSH0 00001797: DUP8 00001798: DUP1 00001799: EXTCODESIZE 0000179a: ISZERO 0000179b: DUP1 0000179c: ISZERO 0000179d: PUSH2 0x17a4 000017a0: JUMPI 000017a1: PUSH0 000017a2: PUSH0 000017a3: REVERT 000017a4: JUMPDEST 000017a5: POP 000017a6: GAS 000017a7: CALL 000017a8: ISZERO 000017a9: DUP1 000017aa: ISZERO 000017ab: PUSH2 0x17b6 000017ae: JUMPI 000017af: RETURNDATASIZE 000017b0: PUSH0 000017b1: PUSH0 000017b2: RETURNDATACOPY 000017b3: RETURNDATASIZE 000017b4: PUSH0 000017b5: REVERT 000017b6: JUMPDEST 000017b7: POP 000017b8: POP 000017b9: PUSH1 0x40 000017bb: DUP1 000017bc: MLOAD 000017bd: PUSH1 0xc0 000017bf: DUP2 000017c0: ADD 000017c1: DUP3 000017c2: MSTORE 000017c3: DUP9 000017c4: DUP2 000017c5: MSTORE 000017c6: PUSH0 000017c7: PUSH1 0x20 000017c9: DUP1 000017ca: DUP4 000017cb: ADD 000017cc: DUP3 000017cd: SWAP1 000017ce: MSTORE 000017cf: PUSH1 0x01 000017d1: PUSH1 0x01 000017d3: PUSH1 0xa0 000017d5: SHL 000017d6: SUB 000017d7: DUP1 000017d8: DUP12 000017d9: AND 000017da: DUP5 000017db: DUP7 000017dc: ADD 000017dd: MSTORE 000017de: DUP10 000017df: AND 000017e0: PUSH1 0x60 000017e2: DUP1 000017e3: DUP6 000017e4: ADD 000017e5: SWAP2 000017e6: SWAP1 000017e7: SWAP2 000017e8: MSTORE 000017e9: PUSH1 0x80 000017eb: DUP1 000017ec: DUP6 000017ed: ADD 000017ee: DUP11 000017ef: SWAP1 000017f0: MSTORE 000017f1: DUP6 000017f2: MLOAD 000017f3: DUP1 000017f4: DUP5 000017f5: ADD 000017f6: DUP8 000017f7: MSTORE 000017f8: DUP5 000017f9: DUP2 000017fa: MSTORE 000017fb: PUSH1 0xa0 000017fd: DUP7 000017fe: ADD 000017ff: MSTORE 00001800: DUP6 00001801: MLOAD 00001802: SWAP1 00001803: DUP2 00001804: ADD 00001805: DUP7 00001806: MSTORE 00001807: ADDRESS 00001808: DUP1 00001809: DUP3 0000180a: MSTORE 0000180b: SWAP3 0000180c: DUP2 0000180d: ADD 0000180e: DUP5 0000180f: SWAP1 00001810: MSTORE 00001811: DUP1 00001812: DUP7 00001813: ADD 00001814: SWAP3 00001815: SWAP1 00001816: SWAP3 00001817: MSTORE 00001818: DUP2 00001819: ADD 0000181a: SWAP2 0000181b: SWAP1 0000181c: SWAP2 0000181d: MSTORE 0000181e: SWAP2 0000181f: MLOAD 00001820: PUSH4 0x52bbbe29 00001825: PUSH1 0xe0 00001827: SHL 00001828: DUP2 00001829: MSTORE 0000182a: PUSH20 0xba12222222228d8ba445958a75a0704d566bf2c8 0000183f: SWAP5 00001840: POP 00001841: PUSH4 0x52bbbe29 00001846: SWAP4 00001847: POP 00001848: PUSH2 0x1858 0000184b: SWAP3 0000184c: SWAP1 0000184d: DUP7 0000184e: SWAP1 0000184f: TIMESTAMP 00001850: SWAP1 00001851: PUSH1 0x04 00001853: ADD 00001854: PUSH2 0x384e 00001857: JUMP 00001858: JUMPDEST 00001859: PUSH1 0x20 0000185b: PUSH1 0x40 0000185d: MLOAD 0000185e: DUP1 0000185f: DUP4 00001860: SUB 00001861: DUP2 00001862: PUSH0 00001863: DUP8 00001864: GAS 00001865: CALL 00001866: ISZERO 00001867: DUP1 00001868: ISZERO 00001869: PUSH2 0x1874 0000186c: JUMPI 0000186d: RETURNDATASIZE 0000186e: PUSH0 0000186f: PUSH0 00001870: RETURNDATACOPY 00001871: RETURNDATASIZE 00001872: PUSH0 00001873: REVERT 00001874: JUMPDEST 00001875: POP 00001876: POP 00001877: POP 00001878: POP 00001879: PUSH1 0x40 0000187b: MLOAD 0000187c: RETURNDATASIZE 0000187d: PUSH1 0x1f 0000187f: NOT 00001880: PUSH1 0x1f 00001882: DUP3 00001883: ADD 00001884: AND 00001885: DUP3 00001886: ADD 00001887: DUP1 00001888: PUSH1 0x40 0000188a: MSTORE 0000188b: POP 0000188c: DUP2 0000188d: ADD 0000188e: SWAP1 0000188f: PUSH2 0x0a3f 00001892: SWAP2 00001893: SWAP1 00001894: PUSH2 0x3929 00001897: JUMP 00001898: JUMPDEST 00001899: PUSH0 0000189a: PUSH0 0000189b: PUSH1 0x40 0000189d: MLOAD 0000189e: DUP1 0000189f: PUSH2 0x0280 000018a2: ADD 000018a3: PUSH1 0x40 000018a5: MSTORE 000018a6: DUP1 000018a7: PUSH2 0x0258 000018aa: DUP2 000018ab: MSTORE 000018ac: PUSH1 0x20 000018ae: ADD 000018af: PUSH2 0x3b72 000018b2: PUSH2 0x0258 000018b5: SWAP2 000018b6: CODECOPY 000018b7: SWAP1 000018b8: POP 000018b9: PUSH1 0x1d 000018bb: DUP4 000018bc: GT 000018bd: ISZERO 000018be: PUSH2 0x18ca 000018c1: JUMPI 000018c2: PUSH0 000018c3: SWAP2 000018c4: POP 000018c5: POP 000018c6: PUSH2 0x18db 000018c9: JUMP 000018ca: JUMPDEST 000018cb: PUSH1 0x14 000018cd: DUP4 000018ce: MUL 000018cf: ADD 000018d0: PUSH1 0x20 000018d2: ADD 000018d3: MLOAD 000018d4: PUSH1 0x60 000018d6: SHR 000018d7: DUP4 000018d8: EQ 000018d9: SWAP1 000018da: POP 000018db: JUMPDEST 000018dc: SWAP3 000018dd: SWAP2 000018de: POP 000018df: POP 000018e0: JUMP 000018e1: JUMPDEST 000018e2: COINBASE 000018e3: PUSH1 0x01 000018e5: PUSH1 0x01 000018e7: PUSH1 0xa0 000018e9: SHL 000018ea: SUB 000018eb: DUP3 000018ec: AND 000018ed: EQ 000018ee: PUSH2 0x191d 000018f1: JUMPI 000018f2: PUSH1 0x40 000018f4: MLOAD 000018f5: PUSH3 0x461bcd 000018f9: PUSH1 0xe5 000018fb: SHL 000018fc: DUP2 000018fd: MSTORE 000018fe: PUSH1 0x20 00001900: PUSH1 0x04 00001902: DUP3 00001903: ADD 00001904: MSTORE 00001905: PUSH1 0x01 00001907: PUSH1 0x24 00001909: DUP3 0000190a: ADD 0000190b: MSTORE 0000190c: PUSH1 0x43 0000190e: PUSH1 0xf8 00001910: SHL 00001911: PUSH1 0x44 00001913: DUP3 00001914: ADD 00001915: MSTORE 00001916: PUSH1 0x64 00001918: ADD 00001919: PUSH2 0x05aa 0000191c: JUMP 0000191d: JUMPDEST 0000191e: PUSH0 0000191f: DUP6 00001920: GT 00001921: PUSH2 0x1950 00001924: JUMPI 00001925: PUSH1 0x40 00001927: MLOAD 00001928: PUSH3 0x461bcd 0000192c: PUSH1 0xe5 0000192e: SHL 0000192f: DUP2 00001930: MSTORE 00001931: PUSH1 0x20 00001933: PUSH1 0x04 00001935: DUP3 00001936: ADD 00001937: MSTORE 00001938: PUSH1 0x01 0000193a: PUSH1 0x24 0000193c: DUP3 0000193d: ADD 0000193e: MSTORE 0000193f: PUSH1 0x47 00001941: PUSH1 0xf8 00001943: SHL 00001944: PUSH1 0x44 00001946: DUP3 00001947: ADD 00001948: MSTORE 00001949: PUSH1 0x64 0000194b: ADD 0000194c: PUSH2 0x05aa 0000194f: JUMP 00001950: JUMPDEST 00001951: PUSH2 0x2710 00001954: DUP3 00001955: LT 00001956: PUSH2 0x1985 00001959: JUMPI 0000195a: PUSH1 0x40 0000195c: MLOAD 0000195d: PUSH3 0x461bcd 00001961: PUSH1 0xe5 00001963: SHL 00001964: DUP2 00001965: MSTORE 00001966: PUSH1 0x20 00001968: PUSH1 0x04 0000196a: DUP3 0000196b: ADD 0000196c: MSTORE 0000196d: PUSH1 0x01 0000196f: PUSH1 0x24 00001971: DUP3 00001972: ADD 00001973: MSTORE 00001974: PUSH1 0x21 00001976: PUSH1 0xf9 00001978: SHL 00001979: PUSH1 0x44 0000197b: DUP3 0000197c: ADD 0000197d: MSTORE 0000197e: PUSH1 0x64 00001980: ADD 00001981: PUSH2 0x05aa 00001984: JUMP 00001985: JUMPDEST 00001986: PUSH0 00001987: PUSH0 00001988: PUSH2 0x1994 0000198b: DUP13 0000198c: DUP13 0000198d: DUP13 0000198e: DUP13 0000198f: DUP13 00001990: PUSH2 0x2a5c 00001993: JUMP 00001994: JUMPDEST 00001995: SWAP1 00001996: SWAP3 00001997: POP 00001998: SWAP1 00001999: POP 0000199a: PUSH0 0000199b: DUP8 0000199c: PUSH8 0x0de0b6b3a7640000 000019a5: PUSH2 0x19ae 000019a8: DUP9 000019a9: DUP6 000019aa: PUSH2 0x3940 000019ad: JUMP 000019ae: JUMPDEST 000019af: DUP10 000019b0: PUSH2 0x19b8 000019b3: DUP8 000019b4: PUSH2 0x396f 000019b7: JUMP 000019b8: JUMPDEST 000019b9: PUSH2 0x19c2 000019bc: SWAP2 000019bd: SWAP1 000019be: PUSH2 0x3940 000019c1: JUMP 000019c2: JUMPDEST 000019c3: PUSH2 0x19cc 000019c6: SWAP2 000019c7: SWAP1 000019c8: PUSH2 0x3989 000019cb: JUMP 000019cc: JUMPDEST 000019cd: PUSH2 0x19d6 000019d0: SWAP2 000019d1: SWAP1 000019d2: PUSH2 0x39af 000019d5: JUMP 000019d6: JUMPDEST 000019d7: PUSH2 0x19e0 000019da: SWAP2 000019db: SWAP1 000019dc: PUSH2 0x3989 000019df: JUMP 000019e0: JUMPDEST 000019e1: SWAP1 000019e2: POP 000019e3: PUSH0 000019e4: DUP2 000019e5: SGT 000019e6: PUSH2 0x1a15 000019e9: JUMPI 000019ea: PUSH1 0x40 000019ec: MLOAD 000019ed: PUSH3 0x461bcd 000019f1: PUSH1 0xe5 000019f3: SHL 000019f4: DUP2 000019f5: MSTORE 000019f6: PUSH1 0x20 000019f8: PUSH1 0x04 000019fa: DUP3 000019fb: ADD 000019fc: MSTORE 000019fd: PUSH1 0x01 000019ff: PUSH1 0x24 00001a01: DUP3 00001a02: ADD 00001a03: MSTORE 00001a04: PUSH1 0x13 00001a06: PUSH1 0xfa 00001a08: SHL 00001a09: PUSH1 0x44 00001a0b: DUP3 00001a0c: ADD 00001a0d: MSTORE 00001a0e: PUSH1 0x64 00001a10: ADD 00001a11: PUSH2 0x05aa 00001a14: JUMP 00001a15: JUMPDEST 00001a16: PUSH0 00001a17: PUSH2 0x2710 00001a1a: PUSH2 0x1a23 00001a1d: DUP8 00001a1e: DUP5 00001a1f: PUSH2 0x3778 00001a22: JUMP 00001a23: JUMPDEST 00001a24: PUSH2 0x1a2d 00001a27: SWAP2 00001a28: SWAP1 00001a29: PUSH2 0x3765 00001a2c: JUMP 00001a2d: JUMPDEST 00001a2e: SWAP1 00001a2f: POP 00001a30: SELFBALANCE 00001a31: DUP2 00001a32: GT 00001a33: ISZERO 00001a34: PUSH2 0x1a8e 00001a37: JUMPI 00001a38: PUSH1 0x40 00001a3a: MLOAD 00001a3b: PUSH0 00001a3c: SWAP1 00001a3d: COINBASE 00001a3e: SWAP1 00001a3f: SELFBALANCE 00001a40: SWAP1 00001a41: DUP4 00001a42: DUP2 00001a43: DUP2 00001a44: DUP2 00001a45: DUP6 00001a46: DUP8 00001a47: GAS 00001a48: CALL 00001a49: SWAP3 00001a4a: POP 00001a4b: POP 00001a4c: POP 00001a4d: RETURNDATASIZE 00001a4e: DUP1 00001a4f: PUSH0 00001a50: DUP2 00001a51: EQ 00001a52: PUSH2 0x1a76 00001a55: JUMPI 00001a56: PUSH1 0x40 00001a58: MLOAD 00001a59: SWAP2 00001a5a: POP 00001a5b: PUSH1 0x1f 00001a5d: NOT 00001a5e: PUSH1 0x3f 00001a60: RETURNDATASIZE 00001a61: ADD 00001a62: AND 00001a63: DUP3 00001a64: ADD 00001a65: PUSH1 0x40 00001a67: MSTORE 00001a68: RETURNDATASIZE 00001a69: DUP3 00001a6a: MSTORE 00001a6b: RETURNDATASIZE 00001a6c: PUSH0 00001a6d: PUSH1 0x20 00001a6f: DUP5 00001a70: ADD 00001a71: RETURNDATACOPY 00001a72: PUSH2 0x1a7b 00001a75: JUMP 00001a76: JUMPDEST 00001a77: PUSH1 0x60 00001a79: SWAP2 00001a7a: POP 00001a7b: JUMPDEST 00001a7c: POP 00001a7d: POP 00001a7e: SWAP1 00001a7f: POP 00001a80: DUP1 00001a81: PUSH2 0x1a88 00001a84: JUMPI 00001a85: PUSH0 00001a86: PUSH0 00001a87: REVERT 00001a88: JUMPDEST 00001a89: POP 00001a8a: PUSH2 0x1ae1 00001a8d: JUMP 00001a8e: JUMPDEST 00001a8f: PUSH1 0x40 00001a91: MLOAD 00001a92: PUSH0 00001a93: SWAP1 00001a94: COINBASE 00001a95: SWAP1 00001a96: DUP4 00001a97: SWAP1 00001a98: DUP4 00001a99: DUP2 00001a9a: DUP2 00001a9b: DUP2 00001a9c: DUP6 00001a9d: DUP8 00001a9e: GAS 00001a9f: CALL 00001aa0: SWAP3 00001aa1: POP 00001aa2: POP 00001aa3: POP 00001aa4: RETURNDATASIZE 00001aa5: DUP1 00001aa6: PUSH0 00001aa7: DUP2 00001aa8: EQ 00001aa9: PUSH2 0x1acd 00001aac: JUMPI 00001aad: PUSH1 0x40 00001aaf: MLOAD 00001ab0: SWAP2 00001ab1: POP 00001ab2: PUSH1 0x1f 00001ab4: NOT 00001ab5: PUSH1 0x3f 00001ab7: RETURNDATASIZE 00001ab8: ADD 00001ab9: AND 00001aba: DUP3 00001abb: ADD 00001abc: PUSH1 0x40 00001abe: MSTORE 00001abf: RETURNDATASIZE 00001ac0: DUP3 00001ac1: MSTORE 00001ac2: RETURNDATASIZE 00001ac3: PUSH0 00001ac4: PUSH1 0x20 00001ac6: DUP5 00001ac7: ADD 00001ac8: RETURNDATACOPY 00001ac9: PUSH2 0x1ad2 00001acc: JUMP 00001acd: JUMPDEST 00001ace: PUSH1 0x60 00001ad0: SWAP2 00001ad1: POP 00001ad2: JUMPDEST 00001ad3: POP 00001ad4: POP 00001ad5: SWAP1 00001ad6: POP 00001ad7: DUP1 00001ad8: PUSH2 0x1adf 00001adb: JUMPI 00001adc: PUSH0 00001add: PUSH0 00001ade: REVERT 00001adf: JUMPDEST 00001ae0: POP 00001ae1: JUMPDEST 00001ae2: POP 00001ae3: POP 00001ae4: POP 00001ae5: POP 00001ae6: POP 00001ae7: POP 00001ae8: POP 00001ae9: POP 00001aea: POP 00001aeb: POP 00001aec: POP 00001aed: POP 00001aee: POP 00001aef: POP 00001af0: JUMP 00001af1: JUMPDEST 00001af2: PUSH1 0x01 00001af4: PUSH1 0x01 00001af6: PUSH1 0xa0 00001af8: SHL 00001af9: SUB 00001afa: DUP5 00001afb: AND 00001afc: PUSH4 0x095ea7b3 00001b01: DUP7 00001b02: PUSH2 0x1b0c 00001b05: DUP7 00001b06: PUSH1 0x01 00001b08: PUSH2 0x37f4 00001b0b: JUMP 00001b0c: JUMPDEST 00001b0d: PUSH1 0x40 00001b0f: MLOAD 00001b10: DUP4 00001b11: PUSH4 0xffffffff 00001b16: AND 00001b17: PUSH1 0xe0 00001b19: SHL 00001b1a: DUP2 00001b1b: MSTORE 00001b1c: PUSH1 0x04 00001b1e: ADD 00001b1f: PUSH2 0x1b29 00001b22: SWAP3 00001b23: SWAP2 00001b24: SWAP1 00001b25: PUSH2 0x3807 00001b28: JUMP 00001b29: JUMPDEST 00001b2a: PUSH0 00001b2b: PUSH1 0x40 00001b2d: MLOAD 00001b2e: DUP1 00001b2f: DUP4 00001b30: SUB 00001b31: DUP2 00001b32: PUSH0 00001b33: DUP8 00001b34: DUP1 00001b35: EXTCODESIZE 00001b36: ISZERO 00001b37: DUP1 00001b38: ISZERO 00001b39: PUSH2 0x1b40 00001b3c: JUMPI 00001b3d: PUSH0 00001b3e: PUSH0 00001b3f: REVERT 00001b40: JUMPDEST 00001b41: POP 00001b42: GAS 00001b43: CALL 00001b44: ISZERO 00001b45: DUP1 00001b46: ISZERO 00001b47: PUSH2 0x1b52 00001b4a: JUMPI 00001b4b: RETURNDATASIZE 00001b4c: PUSH0 00001b4d: PUSH0 00001b4e: RETURNDATACOPY 00001b4f: RETURNDATASIZE 00001b50: PUSH0 00001b51: REVERT 00001b52: JUMPDEST 00001b53: POP 00001b54: POP 00001b55: PUSH1 0x40 00001b57: MLOAD 00001b58: PUSH4 0x8201aa3f 00001b5d: PUSH1 0xe0 00001b5f: SHL 00001b60: DUP2 00001b61: MSTORE 00001b62: PUSH1 0x01 00001b64: PUSH1 0x01 00001b66: PUSH1 0xa0 00001b68: SHL 00001b69: SUB 00001b6a: DUP8 00001b6b: DUP2 00001b6c: AND 00001b6d: PUSH1 0x04 00001b6f: DUP4 00001b70: ADD 00001b71: MSTORE 00001b72: PUSH1 0x24 00001b74: DUP3 00001b75: ADD 00001b76: DUP8 00001b77: SWAP1 00001b78: MSTORE 00001b79: DUP6 00001b7a: DUP2 00001b7b: AND 00001b7c: PUSH1 0x44 00001b7e: DUP4 00001b7f: ADD 00001b80: MSTORE 00001b81: PUSH1 0x64 00001b83: DUP3 00001b84: ADD 00001b85: DUP6 00001b86: SWAP1 00001b87: MSTORE 00001b88: PUSH0 00001b89: NOT 00001b8a: PUSH1 0x84 00001b8c: DUP4 00001b8d: ADD 00001b8e: MSTORE 00001b8f: DUP9 00001b90: AND 00001b91: SWAP3 00001b92: POP 00001b93: PUSH4 0x8201aa3f 00001b98: SWAP2 00001b99: POP 00001b9a: PUSH1 0xa4 00001b9c: ADD 00001b9d: JUMPDEST 00001b9e: PUSH0 00001b9f: PUSH1 0x40 00001ba1: MLOAD 00001ba2: DUP1 00001ba3: DUP4 00001ba4: SUB 00001ba5: DUP2 00001ba6: PUSH0 00001ba7: DUP8 00001ba8: DUP1 00001ba9: EXTCODESIZE 00001baa: ISZERO 00001bab: DUP1 00001bac: ISZERO 00001bad: PUSH2 0x1bb4 00001bb0: JUMPI 00001bb1: PUSH0 00001bb2: PUSH0 00001bb3: REVERT 00001bb4: JUMPDEST 00001bb5: POP 00001bb6: GAS 00001bb7: CALL 00001bb8: ISZERO 00001bb9: DUP1 00001bba: ISZERO 00001bbb: PUSH2 0x1bc6 00001bbe: JUMPI 00001bbf: RETURNDATASIZE 00001bc0: PUSH0 00001bc1: PUSH0 00001bc2: RETURNDATACOPY 00001bc3: RETURNDATASIZE 00001bc4: PUSH0 00001bc5: REVERT 00001bc6: JUMPDEST 00001bc7: POP 00001bc8: POP 00001bc9: POP 00001bca: POP 00001bcb: POP 00001bcc: POP 00001bcd: POP 00001bce: POP 00001bcf: POP 00001bd0: JUMP 00001bd1: JUMPDEST 00001bd2: PUSH1 0x40 00001bd4: MLOAD 00001bd5: PUSH4 0x70a08231 00001bda: PUSH1 0xe0 00001bdc: SHL 00001bdd: DUP2 00001bde: MSTORE 00001bdf: ADDRESS 00001be0: PUSH1 0x04 00001be2: DUP3 00001be3: ADD 00001be4: MSTORE 00001be5: DUP7 00001be6: SWAP1 00001be7: DUP5 00001be8: SWAP1 00001be9: DUP7 00001bea: SWAP1 00001beb: PUSH0 00001bec: SWAP1 00001bed: PUSH1 0x01 00001bef: PUSH1 0x01 00001bf1: PUSH1 0xa0 00001bf3: SHL 00001bf4: SUB 00001bf5: DUP5 00001bf6: AND 00001bf7: SWAP1 00001bf8: PUSH4 0x70a08231 00001bfd: SWAP1 00001bfe: PUSH1 0x24 00001c00: ADD 00001c01: PUSH1 0x20 00001c03: PUSH1 0x40 00001c05: MLOAD 00001c06: DUP1 00001c07: DUP4 00001c08: SUB 00001c09: DUP2 00001c0a: DUP7 00001c0b: GAS 00001c0c: STATICCALL 00001c0d: ISZERO 00001c0e: DUP1 00001c0f: ISZERO 00001c10: PUSH2 0x1c1b 00001c13: JUMPI 00001c14: RETURNDATASIZE 00001c15: PUSH0 00001c16: PUSH0 00001c17: RETURNDATACOPY 00001c18: RETURNDATASIZE 00001c19: PUSH0 00001c1a: REVERT 00001c1b: JUMPDEST 00001c1c: POP 00001c1d: POP 00001c1e: POP 00001c1f: POP 00001c20: PUSH1 0x40 00001c22: MLOAD 00001c23: RETURNDATASIZE 00001c24: PUSH1 0x1f 00001c26: NOT 00001c27: PUSH1 0x1f 00001c29: DUP3 00001c2a: ADD 00001c2b: AND 00001c2c: DUP3 00001c2d: ADD 00001c2e: DUP1 00001c2f: PUSH1 0x40 00001c31: MSTORE 00001c32: POP 00001c33: DUP2 00001c34: ADD 00001c35: SWAP1 00001c36: PUSH2 0x1c3f 00001c39: SWAP2 00001c3a: SWAP1 00001c3b: PUSH2 0x3929 00001c3e: JUMP 00001c3f: JUMPDEST 00001c40: PUSH1 0x40 00001c42: MLOAD 00001c43: PUSH4 0x70a08231 00001c48: PUSH1 0xe0 00001c4a: SHL 00001c4b: DUP2 00001c4c: MSTORE 00001c4d: ADDRESS 00001c4e: PUSH1 0x04 00001c50: DUP3 00001c51: ADD 00001c52: MSTORE 00001c53: SWAP1 00001c54: SWAP2 00001c55: POP 00001c56: PUSH0 00001c57: SWAP1 00001c58: PUSH1 0x01 00001c5a: PUSH1 0x01 00001c5c: PUSH1 0xa0 00001c5e: SHL 00001c5f: SUB 00001c60: DUP5 00001c61: AND 00001c62: SWAP1 00001c63: PUSH4 0x70a08231 00001c68: SWAP1 00001c69: PUSH1 0x24 00001c6b: ADD 00001c6c: PUSH1 0x20 00001c6e: PUSH1 0x40 00001c70: MLOAD 00001c71: DUP1 00001c72: DUP4 00001c73: SUB 00001c74: DUP2 00001c75: DUP7 00001c76: GAS 00001c77: STATICCALL 00001c78: ISZERO 00001c79: DUP1 00001c7a: ISZERO 00001c7b: PUSH2 0x1c86 00001c7e: JUMPI 00001c7f: RETURNDATASIZE 00001c80: PUSH0 00001c81: PUSH0 00001c82: RETURNDATACOPY 00001c83: RETURNDATASIZE 00001c84: PUSH0 00001c85: REVERT 00001c86: JUMPDEST 00001c87: POP 00001c88: POP 00001c89: POP 00001c8a: POP 00001c8b: PUSH1 0x40 00001c8d: MLOAD 00001c8e: RETURNDATASIZE 00001c8f: PUSH1 0x1f 00001c91: NOT 00001c92: PUSH1 0x1f 00001c94: DUP3 00001c95: ADD 00001c96: AND 00001c97: DUP3 00001c98: ADD 00001c99: DUP1 00001c9a: PUSH1 0x40 00001c9c: MSTORE 00001c9d: POP 00001c9e: DUP2 00001c9f: ADD 00001ca0: SWAP1 00001ca1: PUSH2 0x1caa 00001ca4: SWAP2 00001ca5: SWAP1 00001ca6: PUSH2 0x3929 00001ca9: JUMP 00001caa: JUMPDEST 00001cab: SWAP1 00001cac: POP 00001cad: PUSH0 00001cae: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc1 00001cc3: NOT 00001cc4: PUSH1 0x01 00001cc6: PUSH1 0x01 00001cc8: PUSH1 0xa0 00001cca: SHL 00001ccb: SUB 00001ccc: DUP12 00001ccd: AND 00001cce: ADD 00001ccf: PUSH2 0x1dae 00001cd2: JUMPI 00001cd3: PUSH1 0x40 00001cd5: MLOAD 00001cd6: PUSH4 0x2e1a7d4d 00001cdb: PUSH1 0xe0 00001cdd: SHL 00001cde: DUP2 00001cdf: MSTORE 00001ce0: PUSH1 0x04 00001ce2: DUP2 00001ce3: ADD 00001ce4: DUP10 00001ce5: SWAP1 00001ce6: MSTORE 00001ce7: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001cfc: SWAP1 00001cfd: PUSH4 0x2e1a7d4d 00001d02: SWAP1 00001d03: PUSH1 0x24 00001d05: ADD 00001d06: PUSH0 00001d07: PUSH1 0x40 00001d09: MLOAD 00001d0a: DUP1 00001d0b: DUP4 00001d0c: SUB 00001d0d: DUP2 00001d0e: PUSH0 00001d0f: DUP8 00001d10: DUP1 00001d11: EXTCODESIZE 00001d12: ISZERO 00001d13: DUP1 00001d14: ISZERO 00001d15: PUSH2 0x1d1c 00001d18: JUMPI 00001d19: PUSH0 00001d1a: PUSH0 00001d1b: REVERT 00001d1c: JUMPDEST 00001d1d: POP 00001d1e: GAS 00001d1f: CALL 00001d20: ISZERO 00001d21: DUP1 00001d22: ISZERO 00001d23: PUSH2 0x1d2e 00001d26: JUMPI 00001d27: RETURNDATASIZE 00001d28: PUSH0 00001d29: PUSH0 00001d2a: RETURNDATACOPY 00001d2b: RETURNDATASIZE 00001d2c: PUSH0 00001d2d: REVERT 00001d2e: JUMPDEST 00001d2f: POP 00001d30: POP 00001d31: PUSH1 0x40 00001d33: MLOAD 00001d34: PUSH4 0x2f85f1e7 00001d39: PUSH1 0xe2 00001d3b: SHL 00001d3c: DUP2 00001d3d: MSTORE 00001d3e: PUSH1 0x01 00001d40: PUSH1 0x01 00001d42: PUSH1 0xa0 00001d44: SHL 00001d45: SUB 00001d46: DUP10 00001d47: AND 00001d48: SWAP3 00001d49: POP 00001d4a: PUSH4 0xbe17c79c 00001d4f: SWAP2 00001d50: POP 00001d51: DUP11 00001d52: SWAP1 00001d53: PUSH2 0x1d66 00001d56: SWAP1 00001d57: DUP16 00001d58: SWAP1 00001d59: DUP4 00001d5a: SWAP1 00001d5b: DUP14 00001d5c: SWAP1 00001d5d: PUSH0 00001d5e: SWAP1 00001d5f: PUSH1 0x04 00001d61: ADD 00001d62: PUSH2 0x39db 00001d65: JUMP 00001d66: JUMPDEST 00001d67: PUSH1 0x20 00001d69: PUSH1 0x40 00001d6b: MLOAD 00001d6c: DUP1 00001d6d: DUP4 00001d6e: SUB 00001d6f: DUP2 00001d70: DUP6 00001d71: DUP9 00001d72: GAS 00001d73: CALL 00001d74: ISZERO 00001d75: DUP1 00001d76: ISZERO 00001d77: PUSH2 0x1d82 00001d7a: JUMPI 00001d7b: RETURNDATASIZE 00001d7c: PUSH0 00001d7d: PUSH0 00001d7e: RETURNDATACOPY 00001d7f: RETURNDATASIZE 00001d80: PUSH0 00001d81: REVERT 00001d82: JUMPDEST 00001d83: POP 00001d84: POP 00001d85: POP 00001d86: POP 00001d87: POP 00001d88: PUSH1 0x40 00001d8a: MLOAD 00001d8b: RETURNDATASIZE 00001d8c: PUSH1 0x1f 00001d8e: NOT 00001d8f: PUSH1 0x1f 00001d91: DUP3 00001d92: ADD 00001d93: AND 00001d94: DUP3 00001d95: ADD 00001d96: DUP1 00001d97: PUSH1 0x40 00001d99: MSTORE 00001d9a: POP 00001d9b: DUP2 00001d9c: ADD 00001d9d: SWAP1 00001d9e: PUSH2 0x1da7 00001da1: SWAP2 00001da2: SWAP1 00001da3: PUSH2 0x3929 00001da6: JUMP 00001da7: JUMPDEST 00001da8: SWAP1 00001da9: POP 00001daa: PUSH2 0x1f39 00001dad: JUMP 00001dae: JUMPDEST 00001daf: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc1 00001dc4: NOT 00001dc5: PUSH1 0x01 00001dc7: PUSH1 0x01 00001dc9: PUSH1 0xa0 00001dcb: SHL 00001dcc: SUB 00001dcd: DUP11 00001dce: AND 00001dcf: ADD 00001dd0: PUSH2 0x1eba 00001dd3: JUMPI 00001dd4: PUSH2 0x1ddd 00001dd7: DUP11 00001dd8: DUP10 00001dd9: PUSH2 0x2b60 00001ddc: JUMP 00001ddd: JUMPDEST 00001dde: PUSH1 0x40 00001de0: MLOAD 00001de1: PUSH4 0x2f85f1e7 00001de6: PUSH1 0xe2 00001de8: SHL 00001de9: DUP2 00001dea: MSTORE 00001deb: PUSH1 0x01 00001ded: PUSH1 0x01 00001def: PUSH1 0xa0 00001df1: SHL 00001df2: SUB 00001df3: DUP8 00001df4: AND 00001df5: SWAP1 00001df6: PUSH4 0xbe17c79c 00001dfb: SWAP1 00001dfc: PUSH2 0x1e0f 00001dff: SWAP1 00001e00: DUP15 00001e01: SWAP1 00001e02: DUP13 00001e03: SWAP1 00001e04: DUP13 00001e05: SWAP1 00001e06: PUSH0 00001e07: SWAP1 00001e08: PUSH1 0x04 00001e0a: ADD 00001e0b: PUSH2 0x39db 00001e0e: JUMP 00001e0f: JUMPDEST 00001e10: PUSH1 0x20 00001e12: PUSH1 0x40 00001e14: MLOAD 00001e15: DUP1 00001e16: DUP4 00001e17: SUB 00001e18: DUP2 00001e19: PUSH0 00001e1a: DUP8 00001e1b: GAS 00001e1c: CALL 00001e1d: ISZERO 00001e1e: DUP1 00001e1f: ISZERO 00001e20: PUSH2 0x1e2b 00001e23: JUMPI 00001e24: RETURNDATASIZE 00001e25: PUSH0 00001e26: PUSH0 00001e27: RETURNDATACOPY 00001e28: RETURNDATASIZE 00001e29: PUSH0 00001e2a: REVERT 00001e2b: JUMPDEST 00001e2c: POP 00001e2d: POP 00001e2e: POP 00001e2f: POP 00001e30: PUSH1 0x40 00001e32: MLOAD 00001e33: RETURNDATASIZE 00001e34: PUSH1 0x1f 00001e36: NOT 00001e37: PUSH1 0x1f 00001e39: DUP3 00001e3a: ADD 00001e3b: AND 00001e3c: DUP3 00001e3d: ADD 00001e3e: DUP1 00001e3f: PUSH1 0x40 00001e41: MSTORE 00001e42: POP 00001e43: DUP2 00001e44: ADD 00001e45: SWAP1 00001e46: PUSH2 0x1e4f 00001e49: SWAP2 00001e4a: SWAP1 00001e4b: PUSH2 0x3929 00001e4e: JUMP 00001e4f: JUMPDEST 00001e50: SWAP1 00001e51: POP 00001e52: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001e67: PUSH1 0x01 00001e69: PUSH1 0x01 00001e6b: PUSH1 0xa0 00001e6d: SHL 00001e6e: SUB 00001e6f: AND 00001e70: PUSH4 0xd0e30db0 00001e75: DUP3 00001e76: PUSH1 0x40 00001e78: MLOAD 00001e79: DUP3 00001e7a: PUSH4 0xffffffff 00001e7f: AND 00001e80: PUSH1 0xe0 00001e82: SHL 00001e83: DUP2 00001e84: MSTORE 00001e85: PUSH1 0x04 00001e87: ADD 00001e88: PUSH0 00001e89: PUSH1 0x40 00001e8b: MLOAD 00001e8c: DUP1 00001e8d: DUP4 00001e8e: SUB 00001e8f: DUP2 00001e90: DUP6 00001e91: DUP9 00001e92: DUP1 00001e93: EXTCODESIZE 00001e94: ISZERO 00001e95: DUP1 00001e96: ISZERO 00001e97: PUSH2 0x1e9e 00001e9a: JUMPI 00001e9b: PUSH0 00001e9c: PUSH0 00001e9d: REVERT 00001e9e: JUMPDEST 00001e9f: POP 00001ea0: GAS 00001ea1: CALL 00001ea2: ISZERO 00001ea3: DUP1 00001ea4: ISZERO 00001ea5: PUSH2 0x1eb0 00001ea8: JUMPI 00001ea9: RETURNDATASIZE 00001eaa: PUSH0 00001eab: PUSH0 00001eac: RETURNDATACOPY 00001ead: RETURNDATASIZE 00001eae: PUSH0 00001eaf: REVERT 00001eb0: JUMPDEST 00001eb1: POP 00001eb2: POP 00001eb3: POP 00001eb4: POP 00001eb5: POP 00001eb6: PUSH2 0x1f39 00001eb9: JUMP 00001eba: JUMPDEST 00001ebb: PUSH2 0x1ec4 00001ebe: DUP11 00001ebf: DUP10 00001ec0: PUSH2 0x2b60 00001ec3: JUMP 00001ec4: JUMPDEST 00001ec5: PUSH1 0x40 00001ec7: MLOAD 00001ec8: PUSH4 0x2f85f1e7 00001ecd: PUSH1 0xe2 00001ecf: SHL 00001ed0: DUP2 00001ed1: MSTORE 00001ed2: PUSH1 0x01 00001ed4: PUSH1 0x01 00001ed6: PUSH1 0xa0 00001ed8: SHL 00001ed9: SUB 00001eda: DUP8 00001edb: AND 00001edc: SWAP1 00001edd: PUSH4 0xbe17c79c 00001ee2: SWAP1 00001ee3: PUSH2 0x1ef6 00001ee6: SWAP1 00001ee7: DUP15 00001ee8: SWAP1 00001ee9: DUP13 00001eea: SWAP1 00001eeb: DUP13 00001eec: SWAP1 00001eed: PUSH0 00001eee: SWAP1 00001eef: PUSH1 0x04 00001ef1: ADD 00001ef2: PUSH2 0x39db 00001ef5: JUMP 00001ef6: JUMPDEST 00001ef7: PUSH1 0x20 00001ef9: PUSH1 0x40 00001efb: MLOAD 00001efc: DUP1 00001efd: DUP4 00001efe: SUB 00001eff: DUP2 00001f00: PUSH0 00001f01: DUP8 00001f02: GAS 00001f03: CALL 00001f04: ISZERO 00001f05: DUP1 00001f06: ISZERO 00001f07: PUSH2 0x1f12 00001f0a: JUMPI 00001f0b: RETURNDATASIZE 00001f0c: PUSH0 00001f0d: PUSH0 00001f0e: RETURNDATACOPY 00001f0f: RETURNDATASIZE 00001f10: PUSH0 00001f11: REVERT 00001f12: JUMPDEST 00001f13: POP 00001f14: POP 00001f15: POP 00001f16: POP 00001f17: PUSH1 0x40 00001f19: MLOAD 00001f1a: RETURNDATASIZE 00001f1b: PUSH1 0x1f 00001f1d: NOT 00001f1e: PUSH1 0x1f 00001f20: DUP3 00001f21: ADD 00001f22: AND 00001f23: DUP3 00001f24: ADD 00001f25: DUP1 00001f26: PUSH1 0x40 00001f28: MSTORE 00001f29: POP 00001f2a: DUP2 00001f2b: ADD 00001f2c: SWAP1 00001f2d: PUSH2 0x1f36 00001f30: SWAP2 00001f31: SWAP1 00001f32: PUSH2 0x3929 00001f35: JUMP 00001f36: JUMPDEST 00001f37: SWAP1 00001f38: POP 00001f39: JUMPDEST 00001f3a: DUP11 00001f3b: ISZERO 00001f3c: PUSH2 0x1f78 00001f3f: JUMPI 00001f40: DUP7 00001f41: DUP2 00001f42: LT 00001f43: ISZERO 00001f44: PUSH2 0x1f73 00001f47: JUMPI 00001f48: PUSH1 0x40 00001f4a: MLOAD 00001f4b: PUSH3 0x461bcd 00001f4f: PUSH1 0xe5 00001f51: SHL 00001f52: DUP2 00001f53: MSTORE 00001f54: PUSH1 0x20 00001f56: PUSH1 0x04 00001f58: DUP3 00001f59: ADD 00001f5a: MSTORE 00001f5b: PUSH1 0x01 00001f5d: PUSH1 0x24 00001f5f: DUP3 00001f60: ADD 00001f61: MSTORE 00001f62: PUSH1 0x6d 00001f64: PUSH1 0xf8 00001f66: SHL 00001f67: PUSH1 0x44 00001f69: DUP3 00001f6a: ADD 00001f6b: MSTORE 00001f6c: PUSH1 0x64 00001f6e: ADD 00001f6f: PUSH2 0x05aa 00001f72: JUMP 00001f73: JUMPDEST 00001f74: PUSH2 0x1fac 00001f77: JUMP 00001f78: JUMPDEST 00001f79: DUP7 00001f7a: DUP2 00001f7b: LT 00001f7c: ISZERO 00001f7d: PUSH2 0x1fac 00001f80: JUMPI 00001f81: PUSH1 0x40 00001f83: MLOAD 00001f84: PUSH3 0x461bcd 00001f88: PUSH1 0xe5 00001f8a: SHL 00001f8b: DUP2 00001f8c: MSTORE 00001f8d: PUSH1 0x20 00001f8f: PUSH1 0x04 00001f91: DUP3 00001f92: ADD 00001f93: MSTORE 00001f94: PUSH1 0x01 00001f96: PUSH1 0x24 00001f98: DUP3 00001f99: ADD 00001f9a: MSTORE 00001f9b: PUSH1 0x4d 00001f9d: PUSH1 0xf8 00001f9f: SHL 00001fa0: PUSH1 0x44 00001fa2: DUP3 00001fa3: ADD 00001fa4: MSTORE 00001fa5: PUSH1 0x64 00001fa7: ADD 00001fa8: PUSH2 0x05aa 00001fab: JUMP 00001fac: JUMPDEST 00001fad: PUSH10 0x466c7569645431444558 00001fb8: TLOAD 00001fb9: DUP1 00001fba: ISZERO 00001fbb: PUSH2 0x1fd6 00001fbe: JUMPI 00001fbf: PUSH1 0x40 00001fc1: MLOAD 00001fc2: PUSH3 0x461bcd 00001fc6: PUSH1 0xe5 00001fc8: SHL 00001fc9: DUP2 00001fca: MSTORE 00001fcb: PUSH1 0x04 00001fcd: ADD 00001fce: PUSH2 0x05aa 00001fd1: SWAP1 00001fd2: PUSH2 0x3a01 00001fd5: JUMP 00001fd6: JUMPDEST 00001fd7: PUSH1 0x40 00001fd9: MLOAD 00001fda: PUSH4 0x70a08231 00001fdf: PUSH1 0xe0 00001fe1: SHL 00001fe2: DUP2 00001fe3: MSTORE 00001fe4: ADDRESS 00001fe5: PUSH1 0x04 00001fe7: DUP3 00001fe8: ADD 00001fe9: MSTORE 00001fea: PUSH0 00001feb: SWAP1 00001fec: PUSH1 0x01 00001fee: PUSH1 0x01 00001ff0: PUSH1 0xa0 00001ff2: SHL 00001ff3: SUB 00001ff4: DUP9 00001ff5: AND 00001ff6: SWAP1 00001ff7: PUSH4 0x70a08231 00001ffc: SWAP1 00001ffd: PUSH1 0x24 00001fff: ADD 00002000: PUSH1 0x20 00002002: PUSH1 0x40 00002004: MLOAD 00002005: DUP1 00002006: DUP4 00002007: SUB 00002008: DUP2 00002009: DUP7 0000200a: GAS 0000200b: STATICCALL 0000200c: ISZERO 0000200d: DUP1 0000200e: ISZERO 0000200f: PUSH2 0x201a 00002012: JUMPI 00002013: RETURNDATASIZE 00002014: PUSH0 00002015: PUSH0 00002016: RETURNDATACOPY 00002017: RETURNDATASIZE 00002018: PUSH0 00002019: REVERT 0000201a: JUMPDEST 0000201b: POP 0000201c: POP 0000201d: POP 0000201e: POP 0000201f: PUSH1 0x40 00002021: MLOAD 00002022: RETURNDATASIZE 00002023: PUSH1 0x1f 00002025: NOT 00002026: PUSH1 0x1f 00002028: DUP3 00002029: ADD 0000202a: AND 0000202b: DUP3 0000202c: ADD 0000202d: DUP1 0000202e: PUSH1 0x40 00002030: MSTORE 00002031: POP 00002032: DUP2 00002033: ADD 00002034: SWAP1 00002035: PUSH2 0x203e 00002038: SWAP2 00002039: SWAP1 0000203a: PUSH2 0x3929 0000203d: JUMP 0000203e: JUMPDEST 0000203f: SWAP1 00002040: POP 00002041: PUSH0 00002042: PUSH2 0x204b 00002045: DUP5 00002046: DUP8 00002047: PUSH2 0x37f4 0000204a: JUMP 0000204b: JUMPDEST 0000204c: SWAP1 0000204d: POP 0000204e: DUP1 0000204f: DUP3 00002050: LT 00002051: ISZERO 00002052: PUSH2 0x2081 00002055: JUMPI 00002056: PUSH1 0x40 00002058: MLOAD 00002059: PUSH3 0x461bcd 0000205d: PUSH1 0xe5 0000205f: SHL 00002060: DUP2 00002061: MSTORE 00002062: PUSH1 0x20 00002064: PUSH1 0x04 00002066: DUP3 00002067: ADD 00002068: MSTORE 00002069: PUSH1 0x01 0000206b: PUSH1 0x24 0000206d: DUP3 0000206e: ADD 0000206f: MSTORE 00002070: PUSH1 0x39 00002072: PUSH1 0xf9 00002074: SHL 00002075: PUSH1 0x44 00002077: DUP3 00002078: ADD 00002079: MSTORE 0000207a: PUSH1 0x64 0000207c: ADD 0000207d: PUSH2 0x05aa 00002080: JUMP 00002081: JUMPDEST 00002082: PUSH1 0x40 00002084: MLOAD 00002085: PUSH4 0x70a08231 0000208a: PUSH1 0xe0 0000208c: SHL 0000208d: DUP2 0000208e: MSTORE 0000208f: ADDRESS 00002090: PUSH1 0x04 00002092: DUP3 00002093: ADD 00002094: MSTORE 00002095: PUSH0 00002096: SWAP1 00002097: PUSH1 0x01 00002099: PUSH1 0x01 0000209b: PUSH1 0xa0 0000209d: SHL 0000209e: SUB 0000209f: DUP10 000020a0: AND 000020a1: SWAP1 000020a2: PUSH4 0x70a08231 000020a7: SWAP1 000020a8: PUSH1 0x24 000020aa: ADD 000020ab: PUSH1 0x20 000020ad: PUSH1 0x40 000020af: MLOAD 000020b0: DUP1 000020b1: DUP4 000020b2: SUB 000020b3: DUP2 000020b4: DUP7 000020b5: GAS 000020b6: STATICCALL 000020b7: ISZERO 000020b8: DUP1 000020b9: ISZERO 000020ba: PUSH2 0x20c5 000020bd: JUMPI 000020be: RETURNDATASIZE 000020bf: PUSH0 000020c0: PUSH0 000020c1: RETURNDATACOPY 000020c2: RETURNDATASIZE 000020c3: PUSH0 000020c4: REVERT 000020c5: JUMPDEST 000020c6: POP 000020c7: POP 000020c8: POP 000020c9: POP 000020ca: PUSH1 0x40 000020cc: MLOAD 000020cd: RETURNDATASIZE 000020ce: PUSH1 0x1f 000020d0: NOT 000020d1: PUSH1 0x1f 000020d3: DUP3 000020d4: ADD 000020d5: AND 000020d6: DUP3 000020d7: ADD 000020d8: DUP1 000020d9: PUSH1 0x40 000020db: MSTORE 000020dc: POP 000020dd: DUP2 000020de: ADD 000020df: SWAP1 000020e0: PUSH2 0x20e9 000020e3: SWAP2 000020e4: SWAP1 000020e5: PUSH2 0x3929 000020e8: JUMP 000020e9: JUMPDEST 000020ea: SWAP1 000020eb: POP 000020ec: PUSH0 000020ed: PUSH2 0x20f6 000020f0: DUP14 000020f1: DUP9 000020f2: PUSH2 0x3a1c 000020f5: JUMP 000020f6: JUMPDEST 000020f7: SWAP1 000020f8: POP 000020f9: DUP1 000020fa: DUP3 000020fb: LT 000020fc: ISZERO 000020fd: PUSH2 0x212c 00002100: JUMPI 00002101: PUSH1 0x40 00002103: MLOAD 00002104: PUSH3 0x461bcd 00002108: PUSH1 0xe5 0000210a: SHL 0000210b: DUP2 0000210c: MSTORE 0000210d: PUSH1 0x20 0000210f: PUSH1 0x04 00002111: DUP3 00002112: ADD 00002113: MSTORE 00002114: PUSH1 0x01 00002116: PUSH1 0x24 00002118: DUP3 00002119: ADD 0000211a: MSTORE 0000211b: PUSH1 0x71 0000211d: PUSH1 0xf8 0000211f: SHL 00002120: PUSH1 0x44 00002122: DUP3 00002123: ADD 00002124: MSTORE 00002125: PUSH1 0x64 00002127: ADD 00002128: PUSH2 0x05aa 0000212b: JUMP 0000212c: JUMPDEST 0000212d: POP 0000212e: POP 0000212f: POP 00002130: POP 00002131: POP 00002132: POP 00002133: POP 00002134: POP 00002135: POP 00002136: POP 00002137: POP 00002138: POP 00002139: POP 0000213a: POP 0000213b: POP 0000213c: POP 0000213d: POP 0000213e: JUMP 0000213f: JUMPDEST 00002140: PUSH1 0x40 00002142: MLOAD 00002143: PUSH4 0xa9059cbb 00002148: PUSH1 0xe0 0000214a: SHL 0000214b: DUP2 0000214c: MSTORE 0000214d: DUP2 0000214e: SWAP1 0000214f: PUSH1 0x01 00002151: PUSH1 0x01 00002153: PUSH1 0xa0 00002155: SHL 00002156: SUB 00002157: DUP3 00002158: AND 00002159: SWAP1 0000215a: PUSH4 0xa9059cbb 0000215f: SWAP1 00002160: PUSH2 0x216f 00002163: SWAP1 00002164: DUP10 00002165: SWAP1 00002166: DUP9 00002167: SWAP1 00002168: PUSH1 0x04 0000216a: ADD 0000216b: PUSH2 0x3807 0000216e: JUMP 0000216f: JUMPDEST 00002170: PUSH0 00002171: PUSH1 0x40 00002173: MLOAD 00002174: DUP1 00002175: DUP4 00002176: SUB 00002177: DUP2 00002178: PUSH0 00002179: DUP8 0000217a: DUP1 0000217b: EXTCODESIZE 0000217c: ISZERO 0000217d: DUP1 0000217e: ISZERO 0000217f: PUSH2 0x2186 00002182: JUMPI 00002183: PUSH0 00002184: PUSH0 00002185: REVERT 00002186: JUMPDEST 00002187: POP 00002188: GAS 00002189: CALL 0000218a: ISZERO 0000218b: DUP1 0000218c: ISZERO 0000218d: PUSH2 0x2198 00002190: JUMPI 00002191: RETURNDATASIZE 00002192: PUSH0 00002193: PUSH0 00002194: RETURNDATACOPY 00002195: RETURNDATASIZE 00002196: PUSH0 00002197: REVERT 00002198: JUMPDEST 00002199: POP 0000219a: DUP9 0000219b: SWAP3 0000219c: POP 0000219d: POP 0000219e: DUP7 0000219f: ISZERO 000021a0: SWAP1 000021a1: POP 000021a2: PUSH2 0x2213 000021a5: JUMPI 000021a6: PUSH1 0x40 000021a8: DUP1 000021a9: MLOAD 000021aa: PUSH1 0x20 000021ac: DUP2 000021ad: ADD 000021ae: DUP3 000021af: MSTORE 000021b0: PUSH0 000021b1: DUP1 000021b2: DUP3 000021b3: MSTORE 000021b4: SWAP2 000021b5: MLOAD 000021b6: PUSH4 0x022c0d9f 000021bb: PUSH1 0xe0 000021bd: SHL 000021be: DUP2 000021bf: MSTORE 000021c0: PUSH1 0x01 000021c2: PUSH1 0x01 000021c4: PUSH1 0xa0 000021c6: SHL 000021c7: SUB 000021c8: DUP5 000021c9: AND 000021ca: SWAP3 000021cb: PUSH4 0x022c0d9f 000021d0: SWAP3 000021d1: PUSH2 0x21e1 000021d4: SWAP3 000021d5: DUP10 000021d6: SWAP3 000021d7: SWAP2 000021d8: ADDRESS 000021d9: SWAP2 000021da: PUSH1 0x04 000021dc: ADD 000021dd: PUSH2 0x3a2f 000021e0: JUMP 000021e1: JUMPDEST 000021e2: PUSH0 000021e3: PUSH1 0x40 000021e5: MLOAD 000021e6: DUP1 000021e7: DUP4 000021e8: SUB 000021e9: DUP2 000021ea: PUSH0 000021eb: DUP8 000021ec: DUP1 000021ed: EXTCODESIZE 000021ee: ISZERO 000021ef: DUP1 000021f0: ISZERO 000021f1: PUSH2 0x21f8 000021f4: JUMPI 000021f5: PUSH0 000021f6: PUSH0 000021f7: REVERT 000021f8: JUMPDEST 000021f9: POP 000021fa: GAS 000021fb: CALL 000021fc: ISZERO 000021fd: DUP1 000021fe: ISZERO 000021ff: PUSH2 0x220a 00002202: JUMPI 00002203: RETURNDATASIZE 00002204: PUSH0 00002205: PUSH0 00002206: RETURNDATACOPY 00002207: RETURNDATASIZE 00002208: PUSH0 00002209: REVERT 0000220a: JUMPDEST 0000220b: POP 0000220c: POP 0000220d: POP 0000220e: POP 0000220f: PUSH2 0x06ae 00002212: JUMP 00002213: JUMPDEST 00002214: PUSH1 0x40 00002216: DUP1 00002217: MLOAD 00002218: PUSH1 0x20 0000221a: DUP2 0000221b: ADD 0000221c: DUP3 0000221d: MSTORE 0000221e: PUSH0 0000221f: DUP1 00002220: DUP3 00002221: MSTORE 00002222: SWAP2 00002223: MLOAD 00002224: PUSH4 0x022c0d9f 00002229: PUSH1 0xe0 0000222b: SHL 0000222c: DUP2 0000222d: MSTORE 0000222e: PUSH1 0x01 00002230: PUSH1 0x01 00002232: PUSH1 0xa0 00002234: SHL 00002235: SUB 00002236: DUP5 00002237: AND 00002238: SWAP3 00002239: PUSH4 0x022c0d9f 0000223e: SWAP3 0000223f: PUSH2 0x224e 00002242: SWAP3 00002243: DUP10 00002244: SWAP2 00002245: ADDRESS 00002246: SWAP2 00002247: PUSH1 0x04 00002249: ADD 0000224a: PUSH2 0x3a2f 0000224d: JUMP 0000224e: JUMPDEST 0000224f: PUSH0 00002250: PUSH1 0x40 00002252: MLOAD 00002253: DUP1 00002254: DUP4 00002255: SUB 00002256: DUP2 00002257: PUSH0 00002258: DUP8 00002259: DUP1 0000225a: EXTCODESIZE 0000225b: ISZERO 0000225c: DUP1 0000225d: ISZERO 0000225e: PUSH2 0x2265 00002261: JUMPI 00002262: PUSH0 00002263: PUSH0 00002264: REVERT 00002265: JUMPDEST 00002266: POP 00002267: GAS 00002268: CALL 00002269: ISZERO 0000226a: DUP1 0000226b: ISZERO 0000226c: PUSH2 0x0baf 0000226f: JUMPI 00002270: RETURNDATASIZE 00002271: PUSH0 00002272: PUSH0 00002273: RETURNDATACOPY 00002274: RETURNDATASIZE 00002275: PUSH0 00002276: REVERT 00002277: JUMPDEST 00002278: DUP5 00002279: PUSH1 0x01 0000227b: PUSH1 0x01 0000227d: PUSH1 0x60 0000227f: SHL 00002280: SUB 00002281: DUP2 00002282: AND 00002283: PUSH1 0x60 00002285: DUP6 00002286: SWAP1 00002287: SHL 00002288: OR 00002289: DUP1 0000228a: PUSH9 0x556e69737761705633 00002294: TSTORE 00002295: POP 00002296: PUSH0 00002297: PUSH0 00002298: DUP3 00002299: PUSH1 0x01 0000229b: PUSH1 0x01 0000229d: PUSH1 0xa0 0000229f: SHL 000022a0: SUB 000022a1: AND 000022a2: PUSH4 0x128acb08 000022a7: ADDRESS 000022a8: DUP10 000022a9: DUP10 000022aa: DUP12 000022ab: PUSH2 0x22c8 000022ae: JUMPI 000022af: PUSH20 0xfffd8963efd1fc6a506488495d951d5263988d25 000022c4: PUSH2 0x22cf 000022c7: JUMP 000022c8: JUMPDEST 000022c9: PUSH5 0x01000276a4 000022cf: JUMPDEST 000022d0: PUSH1 0x40 000022d2: DUP1 000022d3: MLOAD 000022d4: PUSH1 0x01 000022d6: PUSH1 0x01 000022d8: PUSH1 0xa0 000022da: SHL 000022db: SUB 000022dc: DUP13 000022dd: AND 000022de: PUSH1 0x20 000022e0: DUP3 000022e1: ADD 000022e2: MSTORE 000022e3: DUP15 000022e4: ISZERO 000022e5: ISZERO 000022e6: DUP2 000022e7: DUP4 000022e8: ADD 000022e9: MSTORE 000022ea: DUP2 000022eb: MLOAD 000022ec: DUP1 000022ed: DUP3 000022ee: SUB 000022ef: DUP4 000022f0: ADD 000022f1: DUP2 000022f2: MSTORE 000022f3: PUSH1 0x60 000022f5: DUP3 000022f6: ADD 000022f7: SWAP3 000022f8: DUP4 000022f9: SWAP1 000022fa: MSTORE 000022fb: PUSH1 0x01 000022fd: PUSH1 0x01 000022ff: PUSH1 0xe0 00002301: SHL 00002302: SUB 00002303: NOT 00002304: PUSH1 0xe0 00002306: DUP10 00002307: SWAP1 00002308: SHL 00002309: AND 0000230a: SWAP1 0000230b: SWAP3 0000230c: MSTORE 0000230d: PUSH2 0x231d 00002310: SWAP6 00002311: SWAP5 00002312: SWAP4 00002313: SWAP3 00002314: SWAP2 00002315: SWAP1 00002316: PUSH1 0x64 00002318: ADD 00002319: PUSH2 0x3a65 0000231c: JUMP 0000231d: JUMPDEST 0000231e: PUSH1 0x40 00002320: DUP1 00002321: MLOAD 00002322: DUP1 00002323: DUP4 00002324: SUB 00002325: DUP2 00002326: PUSH0 00002327: DUP8 00002328: GAS 00002329: CALL 0000232a: ISZERO 0000232b: DUP1 0000232c: ISZERO 0000232d: PUSH2 0x2338 00002330: JUMPI 00002331: RETURNDATASIZE 00002332: PUSH0 00002333: PUSH0 00002334: RETURNDATACOPY 00002335: RETURNDATASIZE 00002336: PUSH0 00002337: REVERT 00002338: JUMPDEST 00002339: POP 0000233a: POP 0000233b: POP 0000233c: POP 0000233d: PUSH1 0x40 0000233f: MLOAD 00002340: RETURNDATASIZE 00002341: PUSH1 0x1f 00002343: NOT 00002344: PUSH1 0x1f 00002346: DUP3 00002347: ADD 00002348: AND 00002349: DUP3 0000234a: ADD 0000234b: DUP1 0000234c: PUSH1 0x40 0000234e: MSTORE 0000234f: POP 00002350: DUP2 00002351: ADD 00002352: SWAP1 00002353: PUSH2 0x235c 00002356: SWAP2 00002357: SWAP1 00002358: PUSH2 0x3a9f 0000235b: JUMP 0000235c: JUMPDEST 0000235d: SWAP1 0000235e: SWAP3 0000235f: POP 00002360: SWAP1 00002361: POP 00002362: PUSH9 0x556e69737761705633 0000236c: TLOAD 0000236d: DUP1 0000236e: ISZERO 0000236f: PUSH2 0x238a 00002372: JUMPI 00002373: PUSH1 0x40 00002375: MLOAD 00002376: PUSH3 0x461bcd 0000237a: PUSH1 0xe5 0000237c: SHL 0000237d: DUP2 0000237e: MSTORE 0000237f: PUSH1 0x04 00002381: ADD 00002382: PUSH2 0x05aa 00002385: SWAP1 00002386: PUSH2 0x3a01 00002389: JUMP 0000238a: JUMPDEST 0000238b: DUP8 0000238c: ISZERO 0000238d: PUSH2 0x23d1 00002390: JUMPI 00002391: DUP6 00002392: PUSH2 0x239a 00002395: DUP4 00002396: PUSH2 0x396f 00002399: JUMP 0000239a: JUMPDEST 0000239b: LT 0000239c: ISZERO 0000239d: PUSH2 0x23cc 000023a0: JUMPI 000023a1: PUSH1 0x40 000023a3: MLOAD 000023a4: PUSH3 0x461bcd 000023a8: PUSH1 0xe5 000023aa: SHL 000023ab: DUP2 000023ac: MSTORE 000023ad: PUSH1 0x20 000023af: PUSH1 0x04 000023b1: DUP3 000023b2: ADD 000023b3: MSTORE 000023b4: PUSH1 0x01 000023b6: PUSH1 0x24 000023b8: DUP3 000023b9: ADD 000023ba: MSTORE 000023bb: PUSH1 0x6d 000023bd: PUSH1 0xf8 000023bf: SHL 000023c0: PUSH1 0x44 000023c2: DUP3 000023c3: ADD 000023c4: MSTORE 000023c5: PUSH1 0x64 000023c7: ADD 000023c8: PUSH2 0x05aa 000023cb: JUMP 000023cc: JUMPDEST 000023cd: PUSH2 0x1bc6 000023d0: JUMP 000023d1: JUMPDEST 000023d2: DUP6 000023d3: PUSH2 0x23db 000023d6: DUP5 000023d7: PUSH2 0x396f 000023da: JUMP 000023db: JUMPDEST 000023dc: LT 000023dd: ISZERO 000023de: PUSH2 0x1bc6 000023e1: JUMPI 000023e2: PUSH1 0x40 000023e4: MLOAD 000023e5: PUSH3 0x461bcd 000023e9: PUSH1 0xe5 000023eb: SHL 000023ec: DUP2 000023ed: MSTORE 000023ee: PUSH1 0x20 000023f0: PUSH1 0x04 000023f2: DUP3 000023f3: ADD 000023f4: MSTORE 000023f5: PUSH1 0x01 000023f7: PUSH1 0x24 000023f9: DUP3 000023fa: ADD 000023fb: MSTORE 000023fc: PUSH1 0x4d 000023fe: PUSH1 0xf8 00002400: SHL 00002401: PUSH1 0x44 00002403: DUP3 00002404: ADD 00002405: MSTORE 00002406: PUSH1 0x64 00002408: ADD 00002409: PUSH2 0x05aa 0000240c: JUMP 0000240d: JUMPDEST 0000240e: COINBASE 0000240f: PUSH1 0x01 00002411: PUSH1 0x01 00002413: PUSH1 0xa0 00002415: SHL 00002416: SUB 00002417: DUP3 00002418: AND 00002419: EQ 0000241a: PUSH2 0x2449 0000241d: JUMPI 0000241e: PUSH1 0x40 00002420: MLOAD 00002421: PUSH3 0x461bcd 00002425: PUSH1 0xe5 00002427: SHL 00002428: DUP2 00002429: MSTORE 0000242a: PUSH1 0x20 0000242c: PUSH1 0x04 0000242e: DUP3 0000242f: ADD 00002430: MSTORE 00002431: PUSH1 0x01 00002433: PUSH1 0x24 00002435: DUP3 00002436: ADD 00002437: MSTORE 00002438: PUSH1 0x43 0000243a: PUSH1 0xf8 0000243c: SHL 0000243d: PUSH1 0x44 0000243f: DUP3 00002440: ADD 00002441: MSTORE 00002442: PUSH1 0x64 00002444: ADD 00002445: PUSH2 0x05aa 00002448: JUMP 00002449: JUMPDEST 0000244a: PUSH0 0000244b: DUP6 0000244c: GT 0000244d: PUSH2 0x247c 00002450: JUMPI 00002451: PUSH1 0x40 00002453: MLOAD 00002454: PUSH3 0x461bcd 00002458: PUSH1 0xe5 0000245a: SHL 0000245b: DUP2 0000245c: MSTORE 0000245d: PUSH1 0x20 0000245f: PUSH1 0x04 00002461: DUP3 00002462: ADD 00002463: MSTORE 00002464: PUSH1 0x01 00002466: PUSH1 0x24 00002468: DUP3 00002469: ADD 0000246a: MSTORE 0000246b: PUSH1 0x47 0000246d: PUSH1 0xf8 0000246f: SHL 00002470: PUSH1 0x44 00002472: DUP3 00002473: ADD 00002474: MSTORE 00002475: PUSH1 0x64 00002477: ADD 00002478: PUSH2 0x05aa 0000247b: JUMP 0000247c: JUMPDEST 0000247d: PUSH2 0x2710 00002480: DUP3 00002481: LT 00002482: PUSH2 0x24b1 00002485: JUMPI 00002486: PUSH1 0x40 00002488: MLOAD 00002489: PUSH3 0x461bcd 0000248d: PUSH1 0xe5 0000248f: SHL 00002490: DUP2 00002491: MSTORE 00002492: PUSH1 0x20 00002494: PUSH1 0x04 00002496: DUP3 00002497: ADD 00002498: MSTORE 00002499: PUSH1 0x01 0000249b: PUSH1 0x24 0000249d: DUP3 0000249e: ADD 0000249f: MSTORE 000024a0: PUSH1 0x21 000024a2: PUSH1 0xf9 000024a4: SHL 000024a5: PUSH1 0x44 000024a7: DUP3 000024a8: ADD 000024a9: MSTORE 000024aa: PUSH1 0x64 000024ac: ADD 000024ad: PUSH2 0x05aa 000024b0: JUMP 000024b1: JUMPDEST 000024b2: PUSH0 000024b3: PUSH0 000024b4: PUSH2 0x24c1 000024b7: DUP14 000024b8: DUP14 000024b9: DUP14 000024ba: DUP14 000024bb: DUP14 000024bc: DUP14 000024bd: PUSH2 0x2b82 000024c0: JUMP 000024c1: JUMPDEST 000024c2: SWAP1 000024c3: SWAP3 000024c4: POP 000024c5: SWAP1 000024c6: POP 000024c7: PUSH0 000024c8: DUP8 000024c9: PUSH8 0x0de0b6b3a7640000 000024d2: PUSH2 0x24db 000024d5: DUP10 000024d6: DUP7 000024d7: PUSH2 0x3778 000024da: JUMP 000024db: JUMPDEST 000024dc: PUSH2 0x24e5 000024df: DUP10 000024e0: DUP7 000024e1: PUSH2 0x3778 000024e4: JUMP 000024e5: JUMPDEST 000024e6: PUSH2 0x24ef 000024e9: SWAP2 000024ea: SWAP1 000024eb: PUSH2 0x3989 000024ee: JUMP 000024ef: JUMPDEST 000024f0: PUSH2 0x24f9 000024f3: SWAP2 000024f4: SWAP1 000024f5: PUSH2 0x39af 000024f8: JUMP 000024f9: JUMPDEST 000024fa: PUSH2 0x2503 000024fd: SWAP2 000024fe: SWAP1 000024ff: PUSH2 0x3989 00002502: JUMP 00002503: JUMPDEST 00002504: SWAP1 00002505: POP 00002506: PUSH0 00002507: DUP2 00002508: SGT 00002509: PUSH2 0x2538 0000250c: JUMPI 0000250d: PUSH1 0x40 0000250f: MLOAD 00002510: PUSH3 0x461bcd 00002514: PUSH1 0xe5 00002516: SHL 00002517: DUP2 00002518: MSTORE 00002519: PUSH1 0x20 0000251b: PUSH1 0x04 0000251d: DUP3 0000251e: ADD 0000251f: MSTORE 00002520: PUSH1 0x01 00002522: PUSH1 0x24 00002524: DUP3 00002525: ADD 00002526: MSTORE 00002527: PUSH1 0x13 00002529: PUSH1 0xfa 0000252b: SHL 0000252c: PUSH1 0x44 0000252e: DUP3 0000252f: ADD 00002530: MSTORE 00002531: PUSH1 0x64 00002533: ADD 00002534: PUSH2 0x05aa 00002537: JUMP 00002538: JUMPDEST 00002539: PUSH0 0000253a: PUSH2 0x2710 0000253d: PUSH2 0x2546 00002540: DUP8 00002541: DUP5 00002542: PUSH2 0x3778 00002545: JUMP 00002546: JUMPDEST 00002547: PUSH2 0x2550 0000254a: SWAP2 0000254b: SWAP1 0000254c: PUSH2 0x3765 0000254f: JUMP 00002550: JUMPDEST 00002551: SWAP1 00002552: POP 00002553: SELFBALANCE 00002554: DUP2 00002555: GT 00002556: ISZERO 00002557: PUSH2 0x25b1 0000255a: JUMPI 0000255b: PUSH1 0x40 0000255d: MLOAD 0000255e: PUSH0 0000255f: SWAP1 00002560: COINBASE 00002561: SWAP1 00002562: SELFBALANCE 00002563: SWAP1 00002564: DUP4 00002565: DUP2 00002566: DUP2 00002567: DUP2 00002568: DUP6 00002569: DUP8 0000256a: GAS 0000256b: CALL 0000256c: SWAP3 0000256d: POP 0000256e: POP 0000256f: POP 00002570: RETURNDATASIZE 00002571: DUP1 00002572: PUSH0 00002573: DUP2 00002574: EQ 00002575: PUSH2 0x2599 00002578: JUMPI 00002579: PUSH1 0x40 0000257b: MLOAD 0000257c: SWAP2 0000257d: POP 0000257e: PUSH1 0x1f 00002580: NOT 00002581: PUSH1 0x3f 00002583: RETURNDATASIZE 00002584: ADD 00002585: AND 00002586: DUP3 00002587: ADD 00002588: PUSH1 0x40 0000258a: MSTORE 0000258b: RETURNDATASIZE 0000258c: DUP3 0000258d: MSTORE 0000258e: RETURNDATASIZE 0000258f: PUSH0 00002590: PUSH1 0x20 00002592: DUP5 00002593: ADD 00002594: RETURNDATACOPY 00002595: PUSH2 0x259e 00002598: JUMP 00002599: JUMPDEST 0000259a: PUSH1 0x60 0000259c: SWAP2 0000259d: POP 0000259e: JUMPDEST 0000259f: POP 000025a0: POP 000025a1: SWAP1 000025a2: POP 000025a3: DUP1 000025a4: PUSH2 0x25ab 000025a7: JUMPI 000025a8: PUSH0 000025a9: PUSH0 000025aa: REVERT 000025ab: JUMPDEST 000025ac: POP 000025ad: PUSH2 0x1adf 000025b0: JUMP 000025b1: JUMPDEST 000025b2: PUSH1 0x40 000025b4: MLOAD 000025b5: PUSH0 000025b6: SWAP1 000025b7: COINBASE 000025b8: SWAP1 000025b9: DUP4 000025ba: SWAP1 000025bb: DUP4 000025bc: DUP2 000025bd: DUP2 000025be: DUP2 000025bf: DUP6 000025c0: DUP8 000025c1: GAS 000025c2: CALL 000025c3: SWAP3 000025c4: POP 000025c5: POP 000025c6: POP 000025c7: RETURNDATASIZE 000025c8: DUP1 000025c9: PUSH0 000025ca: DUP2 000025cb: EQ 000025cc: PUSH2 0x25f0 000025cf: JUMPI 000025d0: PUSH1 0x40 000025d2: MLOAD 000025d3: SWAP2 000025d4: POP 000025d5: PUSH1 0x1f 000025d7: NOT 000025d8: PUSH1 0x3f 000025da: RETURNDATASIZE 000025db: ADD 000025dc: AND 000025dd: DUP3 000025de: ADD 000025df: PUSH1 0x40 000025e1: MSTORE 000025e2: RETURNDATASIZE 000025e3: DUP3 000025e4: MSTORE 000025e5: RETURNDATASIZE 000025e6: PUSH0 000025e7: PUSH1 0x20 000025e9: DUP5 000025ea: ADD 000025eb: RETURNDATACOPY 000025ec: PUSH2 0x25f5 000025ef: JUMP 000025f0: JUMPDEST 000025f1: PUSH1 0x60 000025f3: SWAP2 000025f4: POP 000025f5: JUMPDEST 000025f6: POP 000025f7: POP 000025f8: SWAP1 000025f9: POP 000025fa: DUP1 000025fb: PUSH2 0x2602 000025fe: JUMPI 000025ff: PUSH0 00002600: PUSH0 00002601: REVERT 00002602: JUMPDEST 00002603: POP 00002604: POP 00002605: POP 00002606: POP 00002607: POP 00002608: POP 00002609: POP 0000260a: POP 0000260b: POP 0000260c: POP 0000260d: POP 0000260e: POP 0000260f: POP 00002610: POP 00002611: POP 00002612: POP 00002613: JUMP 00002614: JUMPDEST 00002615: PUSH9 0x556e69737761705633 0000261f: TLOAD 00002620: PUSH1 0x01 00002622: PUSH1 0x01 00002624: PUSH1 0x60 00002626: SHL 00002627: SUB 00002628: DUP2 00002629: DUP2 0000262a: AND 0000262b: SWAP2 0000262c: PUSH1 0x60 0000262e: SHR 0000262f: SWAP1 00002630: CALLER 00002631: AND 00002632: DUP1 00002633: DUP4 00002634: EQ 00002635: PUSH2 0x2666 00002638: JUMPI 00002639: PUSH1 0x40 0000263b: MLOAD 0000263c: PUSH3 0x461bcd 00002640: PUSH1 0xe5 00002642: SHL 00002643: DUP2 00002644: MSTORE 00002645: PUSH1 0x20 00002647: PUSH1 0x04 00002649: DUP3 0000264a: ADD 0000264b: MSTORE 0000264c: PUSH1 0x03 0000264e: PUSH1 0x24 00002650: DUP3 00002651: ADD 00002652: MSTORE 00002653: PUSH3 0x3bba33 00002657: PUSH1 0xe9 00002659: SHL 0000265a: PUSH1 0x44 0000265c: DUP3 0000265d: ADD 0000265e: MSTORE 0000265f: PUSH1 0x64 00002661: ADD 00002662: PUSH2 0x05aa 00002665: JUMP 00002666: JUMPDEST 00002667: PUSH0 00002668: DUP1 00002669: PUSH2 0x2674 0000266c: DUP7 0000266d: DUP9 0000266e: ADD 0000266f: DUP9 00002670: PUSH2 0x3ac1 00002673: JUMP 00002674: JUMPDEST 00002675: SWAP2 00002676: POP 00002677: SWAP2 00002678: POP 00002679: DUP1 0000267a: ISZERO 0000267b: PUSH2 0x270d 0000267e: JUMPI 0000267f: DUP9 00002680: DUP5 00002681: LT 00002682: ISZERO 00002683: PUSH2 0x269e 00002686: JUMPI 00002687: PUSH1 0x40 00002689: MLOAD 0000268a: PUSH3 0x461bcd 0000268e: PUSH1 0xe5 00002690: SHL 00002691: DUP2 00002692: MSTORE 00002693: PUSH1 0x04 00002695: ADD 00002696: PUSH2 0x05aa 00002699: SWAP1 0000269a: PUSH2 0x3af4 0000269d: JUMP 0000269e: JUMPDEST 0000269f: PUSH0 000026a0: PUSH9 0x556e69737761705633 000026aa: TSTORE 000026ab: PUSH1 0x40 000026ad: MLOAD 000026ae: PUSH4 0xa9059cbb 000026b3: PUSH1 0xe0 000026b5: SHL 000026b6: DUP2 000026b7: MSTORE 000026b8: DUP3 000026b9: SWAP1 000026ba: PUSH1 0x01 000026bc: PUSH1 0x01 000026be: PUSH1 0xa0 000026c0: SHL 000026c1: SUB 000026c2: DUP3 000026c3: AND 000026c4: SWAP1 000026c5: PUSH4 0xa9059cbb 000026ca: SWAP1 000026cb: PUSH2 0x26da 000026ce: SWAP1 000026cf: CALLER 000026d0: SWAP1 000026d1: DUP15 000026d2: SWAP1 000026d3: PUSH1 0x04 000026d5: ADD 000026d6: PUSH2 0x3807 000026d9: JUMP 000026da: JUMPDEST 000026db: PUSH0 000026dc: PUSH1 0x40 000026de: MLOAD 000026df: DUP1 000026e0: DUP4 000026e1: SUB 000026e2: DUP2 000026e3: PUSH0 000026e4: DUP8 000026e5: DUP1 000026e6: EXTCODESIZE 000026e7: ISZERO 000026e8: DUP1 000026e9: ISZERO 000026ea: PUSH2 0x26f1 000026ed: JUMPI 000026ee: PUSH0 000026ef: PUSH0 000026f0: REVERT 000026f1: JUMPDEST 000026f2: POP 000026f3: GAS 000026f4: CALL 000026f5: ISZERO 000026f6: DUP1 000026f7: ISZERO 000026f8: PUSH2 0x2703 000026fb: JUMPI 000026fc: RETURNDATASIZE 000026fd: PUSH0 000026fe: PUSH0 000026ff: RETURNDATACOPY 00002700: RETURNDATASIZE 00002701: PUSH0 00002702: REVERT 00002703: JUMPDEST 00002704: POP 00002705: POP 00002706: POP 00002707: POP 00002708: POP 00002709: PUSH2 0x1bc6 0000270c: JUMP 0000270d: JUMPDEST 0000270e: DUP8 0000270f: DUP5 00002710: LT 00002711: ISZERO 00002712: PUSH2 0x272d 00002715: JUMPI 00002716: PUSH1 0x40 00002718: MLOAD 00002719: PUSH3 0x461bcd 0000271d: PUSH1 0xe5 0000271f: SHL 00002720: DUP2 00002721: MSTORE 00002722: PUSH1 0x04 00002724: ADD 00002725: PUSH2 0x05aa 00002728: SWAP1 00002729: PUSH2 0x3af4 0000272c: JUMP 0000272d: JUMPDEST 0000272e: PUSH0 0000272f: PUSH9 0x556e69737761705633 00002739: TSTORE 0000273a: PUSH1 0x40 0000273c: MLOAD 0000273d: PUSH4 0xa9059cbb 00002742: PUSH1 0xe0 00002744: SHL 00002745: DUP2 00002746: MSTORE 00002747: DUP3 00002748: SWAP1 00002749: PUSH1 0x01 0000274b: PUSH1 0x01 0000274d: PUSH1 0xa0 0000274f: SHL 00002750: SUB 00002751: DUP3 00002752: AND 00002753: SWAP1 00002754: PUSH4 0xa9059cbb 00002759: SWAP1 0000275a: PUSH2 0x2769 0000275d: SWAP1 0000275e: CALLER 0000275f: SWAP1 00002760: DUP14 00002761: SWAP1 00002762: PUSH1 0x04 00002764: ADD 00002765: PUSH2 0x3807 00002768: JUMP 00002769: JUMPDEST 0000276a: PUSH0 0000276b: PUSH1 0x40 0000276d: MLOAD 0000276e: DUP1 0000276f: DUP4 00002770: SUB 00002771: DUP2 00002772: PUSH0 00002773: DUP8 00002774: DUP1 00002775: EXTCODESIZE 00002776: ISZERO 00002777: DUP1 00002778: ISZERO 00002779: PUSH2 0x2780 0000277c: JUMPI 0000277d: PUSH0 0000277e: PUSH0 0000277f: REVERT 00002780: JUMPDEST 00002781: POP 00002782: GAS 00002783: CALL 00002784: ISZERO 00002785: DUP1 00002786: ISZERO 00002787: PUSH2 0x1ae1 0000278a: JUMPI 0000278b: RETURNDATASIZE 0000278c: PUSH0 0000278d: PUSH0 0000278e: RETURNDATACOPY 0000278f: RETURNDATASIZE 00002790: PUSH0 00002791: REVERT 00002792: JUMPDEST 00002793: PUSH0 00002794: JUMPDEST 00002795: DUP2 00002796: MLOAD 00002797: DUP2 00002798: LT 00002799: ISZERO 0000279a: PUSH2 0x289c 0000279d: JUMPI 0000279e: PUSH0 0000279f: DUP3 000027a0: DUP3 000027a1: DUP2 000027a2: MLOAD 000027a3: DUP2 000027a4: LT 000027a5: PUSH2 0x27b0 000027a8: JUMPI 000027a9: PUSH2 0x27b0 000027ac: PUSH2 0x37e0 000027af: JUMP 000027b0: JUMPDEST 000027b1: PUSH1 0x20 000027b3: SWAP1 000027b4: DUP2 000027b5: MUL 000027b6: SWAP2 000027b7: SWAP1 000027b8: SWAP2 000027b9: ADD 000027ba: ADD 000027bb: MLOAD 000027bc: PUSH1 0x40 000027be: MLOAD 000027bf: PUSH4 0x70a08231 000027c4: PUSH1 0xe0 000027c6: SHL 000027c7: DUP2 000027c8: MSTORE 000027c9: ADDRESS 000027ca: PUSH1 0x04 000027cc: DUP3 000027cd: ADD 000027ce: MSTORE 000027cf: SWAP1 000027d0: SWAP2 000027d1: POP 000027d2: PUSH0 000027d3: SWAP1 000027d4: PUSH1 0x01 000027d6: PUSH1 0x01 000027d8: PUSH1 0xa0 000027da: SHL 000027db: SUB 000027dc: DUP4 000027dd: AND 000027de: SWAP1 000027df: PUSH4 0x70a08231 000027e4: SWAP1 000027e5: PUSH1 0x24 000027e7: ADD 000027e8: PUSH1 0x20 000027ea: PUSH1 0x40 000027ec: MLOAD 000027ed: DUP1 000027ee: DUP4 000027ef: SUB 000027f0: DUP2 000027f1: DUP7 000027f2: GAS 000027f3: STATICCALL 000027f4: SWAP3 000027f5: POP 000027f6: POP 000027f7: POP 000027f8: DUP1 000027f9: ISZERO 000027fa: PUSH2 0x2820 000027fd: JUMPI 000027fe: POP 000027ff: PUSH1 0x40 00002801: DUP1 00002802: MLOAD 00002803: PUSH1 0x1f 00002805: RETURNDATASIZE 00002806: SWAP1 00002807: DUP2 00002808: ADD 00002809: PUSH1 0x1f 0000280b: NOT 0000280c: AND 0000280d: DUP3 0000280e: ADD 0000280f: SWAP1 00002810: SWAP3 00002811: MSTORE 00002812: PUSH2 0x281d 00002815: SWAP2 00002816: DUP2 00002817: ADD 00002818: SWAP1 00002819: PUSH2 0x3929 0000281c: JUMP 0000281d: JUMPDEST 0000281e: PUSH1 0x01 00002820: JUMPDEST 00002821: PUSH2 0x282b 00002824: JUMPI 00002825: POP 00002826: PUSH0 00002827: PUSH2 0x282e 0000282a: JUMP 0000282b: JUMPDEST 0000282c: SWAP1 0000282d: POP 0000282e: JUMPDEST 0000282f: DUP1 00002830: ISZERO 00002831: PUSH2 0x2892 00002834: JUMPI 00002835: PUSH1 0x01 00002837: SLOAD 00002838: PUSH1 0x40 0000283a: MLOAD 0000283b: PUSH4 0xa9059cbb 00002840: PUSH1 0xe0 00002842: SHL 00002843: DUP2 00002844: MSTORE 00002845: PUSH1 0x01 00002847: PUSH1 0x01 00002849: PUSH1 0xa0 0000284b: SHL 0000284c: SUB 0000284d: DUP5 0000284e: DUP2 0000284f: AND 00002850: SWAP3 00002851: PUSH4 0xa9059cbb 00002856: SWAP3 00002857: PUSH2 0x2868 0000285a: SWAP3 0000285b: SWAP1 0000285c: SWAP2 0000285d: AND 0000285e: SWAP1 0000285f: DUP6 00002860: SWAP1 00002861: PUSH1 0x04 00002863: ADD 00002864: PUSH2 0x3807 00002867: JUMP 00002868: JUMPDEST 00002869: PUSH0 0000286a: PUSH1 0x40 0000286c: MLOAD 0000286d: DUP1 0000286e: DUP4 0000286f: SUB 00002870: DUP2 00002871: PUSH0 00002872: DUP8 00002873: DUP1 00002874: EXTCODESIZE 00002875: ISZERO 00002876: DUP1 00002877: ISZERO 00002878: PUSH2 0x287f 0000287b: JUMPI 0000287c: PUSH0 0000287d: PUSH0 0000287e: REVERT 0000287f: JUMPDEST 00002880: POP 00002881: GAS 00002882: CALL 00002883: SWAP3 00002884: POP 00002885: POP 00002886: POP 00002887: DUP1 00002888: ISZERO 00002889: PUSH2 0x2890 0000288c: JUMPI 0000288d: POP 0000288e: PUSH1 0x01 00002890: JUMPDEST 00002891: POP 00002892: JUMPDEST 00002893: POP 00002894: POP 00002895: PUSH1 0x01 00002897: ADD 00002898: PUSH2 0x2794 0000289b: JUMP 0000289c: JUMPDEST 0000289d: POP 0000289e: PUSH1 0x01 000028a0: SLOAD 000028a1: PUSH1 0x40 000028a3: MLOAD 000028a4: PUSH0 000028a5: SWAP2 000028a6: PUSH1 0x01 000028a8: PUSH1 0x01 000028aa: PUSH1 0xa0 000028ac: SHL 000028ad: SUB 000028ae: AND 000028af: SWAP1 000028b0: SELFBALANCE 000028b1: SWAP1 000028b2: DUP4 000028b3: DUP2 000028b4: DUP2 000028b5: DUP2 000028b6: DUP6 000028b7: DUP8 000028b8: GAS 000028b9: CALL 000028ba: SWAP3 000028bb: POP 000028bc: POP 000028bd: POP 000028be: RETURNDATASIZE 000028bf: DUP1 000028c0: PUSH0 000028c1: DUP2 000028c2: EQ 000028c3: PUSH2 0x05ee 000028c6: JUMPI 000028c7: PUSH1 0x40 000028c9: MLOAD 000028ca: SWAP2 000028cb: POP 000028cc: PUSH1 0x1f 000028ce: NOT 000028cf: PUSH1 0x3f 000028d1: RETURNDATASIZE 000028d2: ADD 000028d3: AND 000028d4: DUP3 000028d5: ADD 000028d6: PUSH1 0x40 000028d8: MSTORE 000028d9: RETURNDATASIZE 000028da: DUP3 000028db: MSTORE 000028dc: RETURNDATASIZE 000028dd: PUSH0 000028de: PUSH1 0x20 000028e0: DUP5 000028e1: ADD 000028e2: RETURNDATACOPY 000028e3: PUSH2 0x05ee 000028e6: JUMP 000028e7: JUMPDEST 000028e8: PUSH10 0x466c7569645431444558 000028f3: TLOAD 000028f4: PUSH1 0x01 000028f6: PUSH1 0x01 000028f8: PUSH1 0x60 000028fa: SHL 000028fb: SUB 000028fc: DUP2 000028fd: DUP2 000028fe: AND 000028ff: SWAP2 00002900: PUSH1 0x60 00002902: SHR 00002903: SWAP1 00002904: DUP5 00002905: AND 00002906: DUP1 00002907: DUP4 00002908: EQ 00002909: PUSH2 0x293a 0000290c: JUMPI 0000290d: PUSH1 0x40 0000290f: MLOAD 00002910: PUSH3 0x461bcd 00002914: PUSH1 0xe5 00002916: SHL 00002917: DUP2 00002918: MSTORE 00002919: PUSH1 0x20 0000291b: PUSH1 0x04 0000291d: DUP3 0000291e: ADD 0000291f: MSTORE 00002920: PUSH1 0x03 00002922: PUSH1 0x24 00002924: DUP3 00002925: ADD 00002926: MSTORE 00002927: PUSH3 0x3bba33 0000292b: PUSH1 0xe9 0000292d: SHL 0000292e: PUSH1 0x44 00002930: DUP3 00002931: ADD 00002932: MSTORE 00002933: PUSH1 0x64 00002935: ADD 00002936: PUSH2 0x05aa 00002939: JUMP 0000293a: JUMPDEST 0000293b: DUP4 0000293c: DUP3 0000293d: LT 0000293e: ISZERO 0000293f: PUSH2 0x295a 00002942: JUMPI 00002943: PUSH1 0x40 00002945: MLOAD 00002946: PUSH3 0x461bcd 0000294a: PUSH1 0xe5 0000294c: SHL 0000294d: DUP2 0000294e: MSTORE 0000294f: PUSH1 0x04 00002951: ADD 00002952: PUSH2 0x05aa 00002955: SWAP1 00002956: PUSH2 0x3af4 00002959: JUMP 0000295a: JUMPDEST 0000295b: PUSH0 0000295c: PUSH10 0x466c7569645431444558 00002967: TSTORE 00002968: PUSH1 0x40 0000296a: MLOAD 0000296b: PUSH4 0xa9059cbb 00002970: PUSH1 0xe0 00002972: SHL 00002973: DUP2 00002974: MSTORE 00002975: PUSH1 0x01 00002977: PUSH1 0x01 00002979: PUSH1 0xa0 0000297b: SHL 0000297c: SUB 0000297d: DUP7 0000297e: AND 0000297f: SWAP1 00002980: PUSH4 0xa9059cbb 00002985: SWAP1 00002986: PUSH2 0x1b9d 00002989: SWAP1 0000298a: PUSH20 0x52aa899454998be5b000ad077a46bbe360f4e497 0000299f: SWAP1 000029a0: DUP9 000029a1: SWAP1 000029a2: PUSH1 0x04 000029a4: ADD 000029a5: PUSH2 0x3807 000029a8: JUMP 000029a9: JUMPDEST 000029aa: PUSH0 000029ab: SLOAD 000029ac: PUSH1 0x40 000029ae: MLOAD 000029af: PUSH4 0x095ea7b3 000029b4: PUSH1 0xe0 000029b6: SHL 000029b7: DUP2 000029b8: MSTORE 000029b9: PUSH1 0x01 000029bb: PUSH1 0x01 000029bd: PUSH1 0xa0 000029bf: SHL 000029c0: SUB 000029c1: DUP4 000029c2: DUP2 000029c3: AND 000029c4: SWAP3 000029c5: PUSH4 0x095ea7b3 000029ca: SWAP3 000029cb: PUSH2 0x29dd 000029ce: SWAP3 000029cf: SWAP1 000029d0: SWAP2 000029d1: AND 000029d2: SWAP1 000029d3: PUSH0 000029d4: NOT 000029d5: SWAP1 000029d6: PUSH1 0x04 000029d8: ADD 000029d9: PUSH2 0x3807 000029dc: JUMP 000029dd: JUMPDEST 000029de: PUSH0 000029df: PUSH1 0x40 000029e1: MLOAD 000029e2: DUP1 000029e3: DUP4 000029e4: SUB 000029e5: DUP2 000029e6: PUSH0 000029e7: DUP8 000029e8: DUP1 000029e9: EXTCODESIZE 000029ea: ISZERO 000029eb: DUP1 000029ec: ISZERO 000029ed: PUSH2 0x29f4 000029f0: JUMPI 000029f1: PUSH0 000029f2: PUSH0 000029f3: REVERT 000029f4: JUMPDEST 000029f5: POP 000029f6: GAS 000029f7: CALL 000029f8: ISZERO 000029f9: DUP1 000029fa: ISZERO 000029fb: PUSH2 0x2a06 000029fe: JUMPI 000029ff: RETURNDATASIZE 00002a00: PUSH0 00002a01: PUSH0 00002a02: RETURNDATACOPY 00002a03: RETURNDATASIZE 00002a04: PUSH0 00002a05: REVERT 00002a06: JUMPDEST 00002a07: POP 00002a08: POP 00002a09: PUSH1 0x06 00002a0b: DUP1 00002a0c: SLOAD 00002a0d: PUSH1 0x01 00002a0f: DUP2 00002a10: ADD 00002a11: DUP3 00002a12: SSTORE 00002a13: PUSH0 00002a14: SWAP2 00002a15: SWAP1 00002a16: SWAP2 00002a17: MSTORE 00002a18: PUSH32 0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f 00002a39: ADD 00002a3a: DUP1 00002a3b: SLOAD 00002a3c: PUSH1 0x01 00002a3e: PUSH1 0x01 00002a40: PUSH1 0xa0 00002a42: SHL 00002a43: SUB 00002a44: NOT 00002a45: AND 00002a46: PUSH1 0x01 00002a48: PUSH1 0x01 00002a4a: PUSH1 0xa0 00002a4c: SHL 00002a4d: SUB 00002a4e: SWAP5 00002a4f: SWAP1 00002a50: SWAP5 00002a51: AND 00002a52: SWAP4 00002a53: SWAP1 00002a54: SWAP4 00002a55: OR 00002a56: SWAP1 00002a57: SWAP3 00002a58: SSTORE 00002a59: POP 00002a5a: POP 00002a5b: JUMP 00002a5c: JUMPDEST 00002a5d: PUSH0 00002a5e: DUP1 00002a5f: DUP7 00002a60: PUSH1 0x01 00002a62: PUSH1 0x01 00002a64: PUSH1 0x60 00002a66: SHL 00002a67: SUB 00002a68: DUP2 00002a69: AND 00002a6a: PUSH1 0x60 00002a6c: DUP8 00002a6d: SWAP1 00002a6e: SHL 00002a6f: OR 00002a70: DUP1 00002a71: PUSH9 0x556e69737761705633 00002a7b: TSTORE 00002a7c: POP 00002a7d: DUP1 00002a7e: PUSH1 0x01 00002a80: PUSH1 0x01 00002a82: PUSH1 0xa0 00002a84: SHL 00002a85: SUB 00002a86: AND 00002a87: PUSH4 0x128acb08 00002a8c: ADDRESS 00002a8d: DUP10 00002a8e: DUP10 00002a8f: DUP10 00002a90: DUP10 00002a91: DUP14 00002a92: PUSH1 0x40 00002a94: MLOAD 00002a95: PUSH1 0x20 00002a97: ADD 00002a98: PUSH2 0x2ab8 00002a9b: SWAP3 00002a9c: SWAP2 00002a9d: SWAP1 00002a9e: PUSH1 0x01 00002aa0: PUSH1 0x01 00002aa2: PUSH1 0xa0 00002aa4: SHL 00002aa5: SUB 00002aa6: SWAP3 00002aa7: SWAP1 00002aa8: SWAP3 00002aa9: AND 00002aaa: DUP3 00002aab: MSTORE 00002aac: ISZERO 00002aad: ISZERO 00002aae: PUSH1 0x20 00002ab0: DUP3 00002ab1: ADD 00002ab2: MSTORE 00002ab3: PUSH1 0x40 00002ab5: ADD 00002ab6: SWAP1 00002ab7: JUMP 00002ab8: JUMPDEST 00002ab9: PUSH1 0x40 00002abb: MLOAD 00002abc: PUSH1 0x20 00002abe: DUP2 00002abf: DUP4 00002ac0: SUB 00002ac1: SUB 00002ac2: DUP2 00002ac3: MSTORE 00002ac4: SWAP1 00002ac5: PUSH1 0x40 00002ac7: MSTORE 00002ac8: PUSH1 0x40 00002aca: MLOAD 00002acb: DUP7 00002acc: PUSH4 0xffffffff 00002ad1: AND 00002ad2: PUSH1 0xe0 00002ad4: SHL 00002ad5: DUP2 00002ad6: MSTORE 00002ad7: PUSH1 0x04 00002ad9: ADD 00002ada: PUSH2 0x2ae7 00002add: SWAP6 00002ade: SWAP5 00002adf: SWAP4 00002ae0: SWAP3 00002ae1: SWAP2 00002ae2: SWAP1 00002ae3: PUSH2 0x3a65 00002ae6: JUMP 00002ae7: JUMPDEST 00002ae8: PUSH1 0x40 00002aea: DUP1 00002aeb: MLOAD 00002aec: DUP1 00002aed: DUP4 00002aee: SUB 00002aef: DUP2 00002af0: PUSH0 00002af1: DUP8 00002af2: GAS 00002af3: CALL 00002af4: ISZERO 00002af5: DUP1 00002af6: ISZERO 00002af7: PUSH2 0x2b02 00002afa: JUMPI 00002afb: RETURNDATASIZE 00002afc: PUSH0 00002afd: PUSH0 00002afe: RETURNDATACOPY 00002aff: RETURNDATASIZE 00002b00: PUSH0 00002b01: REVERT 00002b02: JUMPDEST 00002b03: POP 00002b04: POP 00002b05: POP 00002b06: POP 00002b07: PUSH1 0x40 00002b09: MLOAD 00002b0a: RETURNDATASIZE 00002b0b: PUSH1 0x1f 00002b0d: NOT 00002b0e: PUSH1 0x1f 00002b10: DUP3 00002b11: ADD 00002b12: AND 00002b13: DUP3 00002b14: ADD 00002b15: DUP1 00002b16: PUSH1 0x40 00002b18: MSTORE 00002b19: POP 00002b1a: DUP2 00002b1b: ADD 00002b1c: SWAP1 00002b1d: PUSH2 0x2b26 00002b20: SWAP2 00002b21: SWAP1 00002b22: PUSH2 0x3a9f 00002b25: JUMP 00002b26: JUMPDEST 00002b27: SWAP1 00002b28: SWAP4 00002b29: POP 00002b2a: SWAP2 00002b2b: POP 00002b2c: PUSH9 0x556e69737761705633 00002b36: TLOAD 00002b37: DUP1 00002b38: ISZERO 00002b39: PUSH2 0x2b54 00002b3c: JUMPI 00002b3d: PUSH1 0x40 00002b3f: MLOAD 00002b40: PUSH3 0x461bcd 00002b44: PUSH1 0xe5 00002b46: SHL 00002b47: DUP2 00002b48: MSTORE 00002b49: PUSH1 0x04 00002b4b: ADD 00002b4c: PUSH2 0x05aa 00002b4f: SWAP1 00002b50: PUSH2 0x3a01 00002b53: JUMP 00002b54: JUMPDEST 00002b55: POP 00002b56: POP 00002b57: SWAP6 00002b58: POP 00002b59: SWAP6 00002b5a: SWAP4 00002b5b: POP 00002b5c: POP 00002b5d: POP 00002b5e: POP 00002b5f: JUMP 00002b60: JUMPDEST 00002b61: PUSH1 0x01 00002b63: PUSH1 0x01 00002b65: PUSH1 0x60 00002b67: SHL 00002b68: SUB 00002b69: DUP3 00002b6a: AND 00002b6b: PUSH1 0x60 00002b6d: DUP3 00002b6e: SWAP1 00002b6f: SHL 00002b70: OR 00002b71: DUP1 00002b72: PUSH10 0x466c7569645431444558 00002b7d: TSTORE 00002b7e: POP 00002b7f: POP 00002b80: POP 00002b81: JUMP 00002b82: JUMPDEST 00002b83: PUSH0 00002b84: PUSH0 00002b85: PUSH0 00002b86: DUP9 00002b87: SWAP1 00002b88: POP 00002b89: DUP1 00002b8a: PUSH1 0x01 00002b8c: PUSH1 0x01 00002b8e: PUSH1 0xa0 00002b90: SHL 00002b91: SUB 00002b92: AND 00002b93: PUSH4 0x7464fc3d 00002b98: PUSH1 0x40 00002b9a: MLOAD 00002b9b: DUP2 00002b9c: PUSH4 0xffffffff 00002ba1: AND 00002ba2: PUSH1 0xe0 00002ba4: SHL 00002ba5: DUP2 00002ba6: MSTORE 00002ba7: PUSH1 0x04 00002ba9: ADD 00002baa: PUSH1 0x20 00002bac: PUSH1 0x40 00002bae: MLOAD 00002baf: DUP1 00002bb0: DUP4 00002bb1: SUB 00002bb2: DUP2 00002bb3: DUP7 00002bb4: GAS 00002bb5: STATICCALL 00002bb6: ISZERO 00002bb7: DUP1 00002bb8: ISZERO 00002bb9: PUSH2 0x2bc4 00002bbc: JUMPI 00002bbd: RETURNDATASIZE 00002bbe: PUSH0 00002bbf: PUSH0 00002bc0: RETURNDATACOPY 00002bc1: RETURNDATASIZE 00002bc2: PUSH0 00002bc3: REVERT 00002bc4: JUMPDEST 00002bc5: POP 00002bc6: POP 00002bc7: POP 00002bc8: POP 00002bc9: PUSH1 0x40 00002bcb: MLOAD 00002bcc: RETURNDATASIZE 00002bcd: PUSH1 0x1f 00002bcf: NOT 00002bd0: PUSH1 0x1f 00002bd2: DUP3 00002bd3: ADD 00002bd4: AND 00002bd5: DUP3 00002bd6: ADD 00002bd7: DUP1 00002bd8: PUSH1 0x40 00002bda: MSTORE 00002bdb: POP 00002bdc: DUP2 00002bdd: ADD 00002bde: SWAP1 00002bdf: PUSH2 0x2be8 00002be2: SWAP2 00002be3: SWAP1 00002be4: PUSH2 0x3929 00002be7: JUMP 00002be8: JUMPDEST 00002be9: DUP5 00002bea: EQ 00002beb: PUSH2 0x2c1a 00002bee: JUMPI 00002bef: PUSH1 0x40 00002bf1: MLOAD 00002bf2: PUSH3 0x461bcd 00002bf6: PUSH1 0xe5 00002bf8: SHL 00002bf9: DUP2 00002bfa: MSTORE 00002bfb: PUSH1 0x20 00002bfd: PUSH1 0x04 00002bff: DUP3 00002c00: ADD 00002c01: MSTORE 00002c02: PUSH1 0x01 00002c04: PUSH1 0x24 00002c06: DUP3 00002c07: ADD 00002c08: MSTORE 00002c09: PUSH1 0x6b 00002c0b: PUSH1 0xf8 00002c0d: SHL 00002c0e: PUSH1 0x44 00002c10: DUP3 00002c11: ADD 00002c12: MSTORE 00002c13: PUSH1 0x64 00002c15: ADD 00002c16: PUSH2 0x05aa 00002c19: JUMP 00002c1a: JUMPDEST 00002c1b: PUSH0 00002c1c: PUSH0 00002c1d: DUP3 00002c1e: PUSH1 0x01 00002c20: PUSH1 0x01 00002c22: PUSH1 0xa0 00002c24: SHL 00002c25: SUB 00002c26: AND 00002c27: PUSH4 0x0902f1ac 00002c2c: PUSH1 0x40 00002c2e: MLOAD 00002c2f: DUP2 00002c30: PUSH4 0xffffffff 00002c35: AND 00002c36: PUSH1 0xe0 00002c38: SHL 00002c39: DUP2 00002c3a: MSTORE 00002c3b: PUSH1 0x04 00002c3d: ADD 00002c3e: PUSH1 0x60 00002c40: PUSH1 0x40 00002c42: MLOAD 00002c43: DUP1 00002c44: DUP4 00002c45: SUB 00002c46: DUP2 00002c47: DUP7 00002c48: GAS 00002c49: STATICCALL 00002c4a: ISZERO 00002c4b: DUP1 00002c4c: ISZERO 00002c4d: PUSH2 0x2c58 00002c50: JUMPI 00002c51: RETURNDATASIZE 00002c52: PUSH0 00002c53: PUSH0 00002c54: RETURNDATACOPY 00002c55: RETURNDATASIZE 00002c56: PUSH0 00002c57: REVERT 00002c58: JUMPDEST 00002c59: POP 00002c5a: POP 00002c5b: POP 00002c5c: POP 00002c5d: PUSH1 0x40 00002c5f: MLOAD 00002c60: RETURNDATASIZE 00002c61: PUSH1 0x1f 00002c63: NOT 00002c64: PUSH1 0x1f 00002c66: DUP3 00002c67: ADD 00002c68: AND 00002c69: DUP3 00002c6a: ADD 00002c6b: DUP1 00002c6c: PUSH1 0x40 00002c6e: MSTORE 00002c6f: POP 00002c70: DUP2 00002c71: ADD 00002c72: SWAP1 00002c73: PUSH2 0x2c7c 00002c76: SWAP2 00002c77: SWAP1 00002c78: PUSH2 0x3b25 00002c7b: JUMP 00002c7c: JUMPDEST 00002c7d: POP 00002c7e: SWAP2 00002c7f: POP 00002c80: SWAP2 00002c81: POP 00002c82: DUP10 00002c83: ISZERO 00002c84: PUSH2 0x2d21 00002c87: JUMPI 00002c88: DUP1 00002c89: PUSH1 0x01 00002c8b: PUSH1 0x01 00002c8d: PUSH1 0x70 00002c8f: SHL 00002c90: SUB 00002c91: AND 00002c92: DUP9 00002c93: GT 00002c94: PUSH2 0x2cc3 00002c97: JUMPI 00002c98: PUSH1 0x40 00002c9a: MLOAD 00002c9b: PUSH3 0x461bcd 00002c9f: PUSH1 0xe5 00002ca1: SHL 00002ca2: DUP2 00002ca3: MSTORE 00002ca4: PUSH1 0x20 00002ca6: PUSH1 0x04 00002ca8: DUP3 00002ca9: ADD 00002caa: MSTORE 00002cab: PUSH1 0x01 00002cad: PUSH1 0x24 00002caf: DUP3 00002cb0: ADD 00002cb1: MSTORE 00002cb2: PUSH1 0x73 00002cb4: PUSH1 0xf8 00002cb6: SHL 00002cb7: PUSH1 0x44 00002cb9: DUP3 00002cba: ADD 00002cbb: MSTORE 00002cbc: PUSH1 0x64 00002cbe: ADD 00002cbf: PUSH2 0x05aa 00002cc2: JUMP 00002cc3: JUMPDEST 00002cc4: PUSH2 0x03e5 00002cc7: PUSH2 0x2cd9 00002cca: PUSH1 0x01 00002ccc: PUSH1 0x01 00002cce: PUSH1 0x70 00002cd0: SHL 00002cd1: SUB 00002cd2: DUP4 00002cd3: AND 00002cd4: DUP11 00002cd5: PUSH2 0x3a1c 00002cd8: JUMP 00002cd9: JUMPDEST 00002cda: PUSH2 0x2ce5 00002cdd: SWAP1 00002cde: PUSH2 0x03e8 00002ce1: PUSH2 0x3778 00002ce4: JUMP 00002ce5: JUMPDEST 00002ce6: PUSH2 0x2cef 00002ce9: SWAP2 00002cea: SWAP1 00002ceb: PUSH2 0x3765 00002cee: JUMP 00002cef: JUMPDEST 00002cf0: SWAP5 00002cf1: POP 00002cf2: DUP5 00002cf3: DUP10 00002cf4: LT 00002cf5: ISZERO 00002cf6: PUSH2 0x2cfd 00002cf9: JUMPI 00002cfa: DUP9 00002cfb: SWAP5 00002cfc: POP 00002cfd: JUMPDEST 00002cfe: PUSH2 0x2d1a 00002d01: DUP6 00002d02: DUP3 00002d03: PUSH1 0x01 00002d05: PUSH1 0x01 00002d07: PUSH1 0x70 00002d09: SHL 00002d0a: SUB 00002d0b: AND 00002d0c: DUP5 00002d0d: PUSH1 0x01 00002d0f: PUSH1 0x01 00002d11: PUSH1 0x70 00002d13: SHL 00002d14: SUB 00002d15: AND 00002d16: PUSH2 0x2f00 00002d19: JUMP 00002d1a: JUMPDEST 00002d1b: SWAP4 00002d1c: POP 00002d1d: PUSH2 0x2db7 00002d20: JUMP 00002d21: JUMPDEST 00002d22: DUP2 00002d23: PUSH1 0x01 00002d25: PUSH1 0x01 00002d27: PUSH1 0x70 00002d29: SHL 00002d2a: SUB 00002d2b: AND 00002d2c: DUP9 00002d2d: GT 00002d2e: PUSH2 0x2d5d 00002d31: JUMPI 00002d32: PUSH1 0x40 00002d34: MLOAD 00002d35: PUSH3 0x461bcd 00002d39: PUSH1 0xe5 00002d3b: SHL 00002d3c: DUP2 00002d3d: MSTORE 00002d3e: PUSH1 0x20 00002d40: PUSH1 0x04 00002d42: DUP3 00002d43: ADD 00002d44: MSTORE 00002d45: PUSH1 0x01 00002d47: PUSH1 0x24 00002d49: DUP3 00002d4a: ADD 00002d4b: MSTORE 00002d4c: PUSH1 0x53 00002d4e: PUSH1 0xf8 00002d50: SHL 00002d51: PUSH1 0x44 00002d53: DUP3 00002d54: ADD 00002d55: MSTORE 00002d56: PUSH1 0x64 00002d58: ADD 00002d59: PUSH2 0x05aa 00002d5c: JUMP 00002d5d: JUMPDEST 00002d5e: PUSH2 0x03e5 00002d61: PUSH2 0x2d73 00002d64: PUSH1 0x01 00002d66: PUSH1 0x01 00002d68: PUSH1 0x70 00002d6a: SHL 00002d6b: SUB 00002d6c: DUP5 00002d6d: AND 00002d6e: DUP11 00002d6f: PUSH2 0x3a1c 00002d72: JUMP 00002d73: JUMPDEST 00002d74: PUSH2 0x2d7f 00002d77: SWAP1 00002d78: PUSH2 0x03e8 00002d7b: PUSH2 0x3778 00002d7e: JUMP 00002d7f: JUMPDEST 00002d80: PUSH2 0x2d89 00002d83: SWAP2 00002d84: SWAP1 00002d85: PUSH2 0x3765 00002d88: JUMP 00002d89: JUMPDEST 00002d8a: SWAP5 00002d8b: POP 00002d8c: DUP5 00002d8d: DUP10 00002d8e: LT 00002d8f: ISZERO 00002d90: PUSH2 0x2d97 00002d93: JUMPI 00002d94: DUP9 00002d95: SWAP5 00002d96: POP 00002d97: JUMPDEST 00002d98: PUSH2 0x2db4 00002d9b: DUP6 00002d9c: DUP4 00002d9d: PUSH1 0x01 00002d9f: PUSH1 0x01 00002da1: PUSH1 0x70 00002da3: SHL 00002da4: SUB 00002da5: AND 00002da6: DUP4 00002da7: PUSH1 0x01 00002da9: PUSH1 0x01 00002dab: PUSH1 0x70 00002dad: SHL 00002dae: SUB 00002daf: AND 00002db0: PUSH2 0x2f00 00002db3: JUMP 00002db4: JUMPDEST 00002db5: SWAP4 00002db6: POP 00002db7: JUMPDEST 00002db8: PUSH1 0x40 00002dba: MLOAD 00002dbb: PUSH4 0xa9059cbb 00002dc0: PUSH1 0xe0 00002dc2: SHL 00002dc3: DUP2 00002dc4: MSTORE 00002dc5: DUP8 00002dc6: SWAP1 00002dc7: PUSH1 0x01 00002dc9: PUSH1 0x01 00002dcb: PUSH1 0xa0 00002dcd: SHL 00002dce: SUB 00002dcf: DUP3 00002dd0: AND 00002dd1: SWAP1 00002dd2: PUSH4 0xa9059cbb 00002dd7: SWAP1 00002dd8: PUSH2 0x2de7 00002ddb: SWAP1 00002ddc: DUP16 00002ddd: SWAP1 00002dde: DUP11 00002ddf: SWAP1 00002de0: PUSH1 0x04 00002de2: ADD 00002de3: PUSH2 0x3807 00002de6: JUMP 00002de7: JUMPDEST 00002de8: PUSH0 00002de9: PUSH1 0x40 00002deb: MLOAD 00002dec: DUP1 00002ded: DUP4 00002dee: SUB 00002def: DUP2 00002df0: PUSH0 00002df1: DUP8 00002df2: DUP1 00002df3: EXTCODESIZE 00002df4: ISZERO 00002df5: DUP1 00002df6: ISZERO 00002df7: PUSH2 0x2dfe 00002dfa: JUMPI 00002dfb: PUSH0 00002dfc: PUSH0 00002dfd: REVERT 00002dfe: JUMPDEST 00002dff: POP 00002e00: GAS 00002e01: CALL 00002e02: ISZERO 00002e03: DUP1 00002e04: ISZERO 00002e05: PUSH2 0x2e10 00002e08: JUMPI 00002e09: RETURNDATASIZE 00002e0a: PUSH0 00002e0b: PUSH0 00002e0c: RETURNDATACOPY 00002e0d: RETURNDATASIZE 00002e0e: PUSH0 00002e0f: REVERT 00002e10: JUMPDEST 00002e11: POP 00002e12: POP 00002e13: POP 00002e14: POP 00002e15: DUP11 00002e16: ISZERO 00002e17: PUSH2 0x2e88 00002e1a: JUMPI 00002e1b: PUSH1 0x40 00002e1d: DUP1 00002e1e: MLOAD 00002e1f: PUSH1 0x20 00002e21: DUP2 00002e22: ADD 00002e23: DUP3 00002e24: MSTORE 00002e25: PUSH0 00002e26: DUP1 00002e27: DUP3 00002e28: MSTORE 00002e29: SWAP2 00002e2a: MLOAD 00002e2b: PUSH4 0x022c0d9f 00002e30: PUSH1 0xe0 00002e32: SHL 00002e33: DUP2 00002e34: MSTORE 00002e35: PUSH1 0x01 00002e37: PUSH1 0x01 00002e39: PUSH1 0xa0 00002e3b: SHL 00002e3c: SUB 00002e3d: DUP8 00002e3e: AND 00002e3f: SWAP3 00002e40: PUSH4 0x022c0d9f 00002e45: SWAP3 00002e46: PUSH2 0x2e56 00002e49: SWAP3 00002e4a: DUP11 00002e4b: SWAP3 00002e4c: SWAP2 00002e4d: ADDRESS 00002e4e: SWAP2 00002e4f: PUSH1 0x04 00002e51: ADD 00002e52: PUSH2 0x3a2f 00002e55: JUMP 00002e56: JUMPDEST 00002e57: PUSH0 00002e58: PUSH1 0x40 00002e5a: MLOAD 00002e5b: DUP1 00002e5c: DUP4 00002e5d: SUB 00002e5e: DUP2 00002e5f: PUSH0 00002e60: DUP8 00002e61: DUP1 00002e62: EXTCODESIZE 00002e63: ISZERO 00002e64: DUP1 00002e65: ISZERO 00002e66: PUSH2 0x2e6d 00002e69: JUMPI 00002e6a: PUSH0 00002e6b: PUSH0 00002e6c: REVERT 00002e6d: JUMPDEST 00002e6e: POP 00002e6f: GAS 00002e70: CALL 00002e71: ISZERO 00002e72: DUP1 00002e73: ISZERO 00002e74: PUSH2 0x2e7f 00002e77: JUMPI 00002e78: RETURNDATASIZE 00002e79: PUSH0 00002e7a: PUSH0 00002e7b: RETURNDATACOPY 00002e7c: RETURNDATASIZE 00002e7d: PUSH0 00002e7e: REVERT 00002e7f: JUMPDEST 00002e80: POP 00002e81: POP 00002e82: POP 00002e83: POP 00002e84: PUSH2 0x2ef1 00002e87: JUMP 00002e88: JUMPDEST 00002e89: PUSH1 0x40 00002e8b: DUP1 00002e8c: MLOAD 00002e8d: PUSH1 0x20 00002e8f: DUP2 00002e90: ADD 00002e91: DUP3 00002e92: MSTORE 00002e93: PUSH0 00002e94: DUP1 00002e95: DUP3 00002e96: MSTORE 00002e97: SWAP2 00002e98: MLOAD 00002e99: PUSH4 0x022c0d9f 00002e9e: PUSH1 0xe0 00002ea0: SHL 00002ea1: DUP2 00002ea2: MSTORE 00002ea3: PUSH1 0x01 00002ea5: PUSH1 0x01 00002ea7: PUSH1 0xa0 00002ea9: SHL 00002eaa: SUB 00002eab: DUP8 00002eac: AND 00002ead: SWAP3 00002eae: PUSH4 0x022c0d9f 00002eb3: SWAP3 00002eb4: PUSH2 0x2ec3 00002eb7: SWAP3 00002eb8: DUP11 00002eb9: SWAP2 00002eba: ADDRESS 00002ebb: SWAP2 00002ebc: PUSH1 0x04 00002ebe: ADD 00002ebf: PUSH2 0x3a2f 00002ec2: JUMP 00002ec3: JUMPDEST 00002ec4: PUSH0 00002ec5: PUSH1 0x40 00002ec7: MLOAD 00002ec8: DUP1 00002ec9: DUP4 00002eca: SUB 00002ecb: DUP2 00002ecc: PUSH0 00002ecd: DUP8 00002ece: DUP1 00002ecf: EXTCODESIZE 00002ed0: ISZERO 00002ed1: DUP1 00002ed2: ISZERO 00002ed3: PUSH2 0x2eda 00002ed6: JUMPI 00002ed7: PUSH0 00002ed8: PUSH0 00002ed9: REVERT 00002eda: JUMPDEST 00002edb: POP 00002edc: GAS 00002edd: CALL 00002ede: ISZERO 00002edf: DUP1 00002ee0: ISZERO 00002ee1: PUSH2 0x2eec 00002ee4: JUMPI 00002ee5: RETURNDATASIZE 00002ee6: PUSH0 00002ee7: PUSH0 00002ee8: RETURNDATACOPY 00002ee9: RETURNDATASIZE 00002eea: PUSH0 00002eeb: REVERT 00002eec: JUMPDEST 00002eed: POP 00002eee: POP 00002eef: POP 00002ef0: POP 00002ef1: JUMPDEST 00002ef2: POP 00002ef3: POP 00002ef4: POP 00002ef5: POP 00002ef6: SWAP7 00002ef7: POP 00002ef8: SWAP7 00002ef9: SWAP5 00002efa: POP 00002efb: POP 00002efc: POP 00002efd: POP 00002efe: POP 00002eff: JUMP 00002f00: JUMPDEST 00002f01: PUSH0 00002f02: DUP1 00002f03: PUSH2 0x2f0e 00002f06: DUP6 00002f07: PUSH2 0x03e5 00002f0a: PUSH2 0x3778 00002f0d: JUMP 00002f0e: JUMPDEST 00002f0f: SWAP1 00002f10: POP 00002f11: PUSH0 00002f12: PUSH2 0x2f1b 00002f15: DUP5 00002f16: DUP4 00002f17: PUSH2 0x3778 00002f1a: JUMP 00002f1b: JUMPDEST 00002f1c: SWAP1 00002f1d: POP 00002f1e: PUSH0 00002f1f: DUP3 00002f20: PUSH2 0x2f2b 00002f23: DUP8 00002f24: PUSH2 0x03e8 00002f27: PUSH2 0x3778 00002f2a: JUMP 00002f2b: JUMPDEST 00002f2c: PUSH2 0x2f35 00002f2f: SWAP2 00002f30: SWAP1 00002f31: PUSH2 0x37f4 00002f34: JUMP 00002f35: JUMPDEST 00002f36: SWAP1 00002f37: POP 00002f38: PUSH2 0x2f41 00002f3b: DUP2 00002f3c: DUP4 00002f3d: PUSH2 0x3765 00002f40: JUMP 00002f41: JUMPDEST 00002f42: SWAP8 00002f43: SWAP7 00002f44: POP 00002f45: POP 00002f46: POP 00002f47: POP 00002f48: POP 00002f49: POP 00002f4a: POP 00002f4b: JUMP 00002f4c: JUMPDEST 00002f4d: PUSH1 0x01 00002f4f: PUSH1 0x01 00002f51: PUSH1 0xa0 00002f53: SHL 00002f54: SUB 00002f55: DUP2 00002f56: AND 00002f57: DUP2 00002f58: EQ 00002f59: PUSH2 0x14a9 00002f5c: JUMPI 00002f5d: PUSH0 00002f5e: PUSH0 00002f5f: REVERT 00002f60: JUMPDEST 00002f61: PUSH0 00002f62: PUSH0 00002f63: PUSH0 00002f64: PUSH0 00002f65: PUSH0 00002f66: PUSH1 0xa0 00002f68: DUP7 00002f69: DUP9 00002f6a: SUB 00002f6b: SLT 00002f6c: ISZERO 00002f6d: PUSH2 0x2f74 00002f70: JUMPI 00002f71: PUSH0 00002f72: PUSH0 00002f73: REVERT 00002f74: JUMPDEST 00002f75: DUP6 00002f76: CALLDATALOAD 00002f77: SWAP5 00002f78: POP 00002f79: PUSH1 0x20 00002f7b: DUP7 00002f7c: ADD 00002f7d: CALLDATALOAD 00002f7e: PUSH2 0x2f86 00002f81: DUP2 00002f82: PUSH2 0x2f4c 00002f85: JUMP 00002f86: JUMPDEST 00002f87: SWAP4 00002f88: POP 00002f89: PUSH1 0x40 00002f8b: DUP7 00002f8c: ADD 00002f8d: CALLDATALOAD 00002f8e: PUSH2 0x2f96 00002f91: DUP2 00002f92: PUSH2 0x2f4c 00002f95: JUMP 00002f96: JUMPDEST 00002f97: SWAP5 00002f98: SWAP8 00002f99: SWAP4 00002f9a: SWAP7 00002f9b: POP 00002f9c: SWAP4 00002f9d: SWAP5 00002f9e: PUSH1 0x60 00002fa0: DUP2 00002fa1: ADD 00002fa2: CALLDATALOAD 00002fa3: SWAP5 00002fa4: POP 00002fa5: PUSH1 0x80 00002fa7: ADD 00002fa8: CALLDATALOAD 00002fa9: SWAP3 00002faa: SWAP2 00002fab: POP 00002fac: POP 00002fad: JUMP 00002fae: JUMPDEST 00002faf: DUP1 00002fb0: CALLDATALOAD 00002fb1: DUP1 00002fb2: ISZERO 00002fb3: ISZERO 00002fb4: DUP2 00002fb5: EQ 00002fb6: PUSH2 0x2fbd 00002fb9: JUMPI 00002fba: PUSH0 00002fbb: PUSH0 00002fbc: REVERT 00002fbd: JUMPDEST 00002fbe: SWAP2 00002fbf: SWAP1 00002fc0: POP 00002fc1: JUMP 00002fc2: JUMPDEST 00002fc3: PUSH0 00002fc4: PUSH0 00002fc5: PUSH0 00002fc6: PUSH0 00002fc7: PUSH0 00002fc8: PUSH0 00002fc9: PUSH0 00002fca: PUSH0 00002fcb: PUSH0 00002fcc: PUSH0 00002fcd: PUSH0 00002fce: PUSH2 0x0160 00002fd1: DUP13 00002fd2: DUP15 00002fd3: SUB 00002fd4: SLT 00002fd5: ISZERO 00002fd6: PUSH2 0x2fdd 00002fd9: JUMPI 00002fda: PUSH0 00002fdb: PUSH0 00002fdc: REVERT 00002fdd: JUMPDEST 00002fde: DUP12 00002fdf: CALLDATALOAD 00002fe0: SWAP11 00002fe1: POP 00002fe2: PUSH1 0x20 00002fe4: DUP13 00002fe5: ADD 00002fe6: CALLDATALOAD 00002fe7: PUSH2 0x2fef 00002fea: DUP2 00002feb: PUSH2 0x2f4c 00002fee: JUMP 00002fef: JUMPDEST 00002ff0: SWAP10 00002ff1: POP 00002ff2: PUSH2 0x2ffd 00002ff5: PUSH1 0x40 00002ff7: DUP14 00002ff8: ADD 00002ff9: PUSH2 0x2fae 00002ffc: JUMP 00002ffd: JUMPDEST 00002ffe: SWAP9 00002fff: POP 00003000: PUSH1 0x60 00003002: DUP13 00003003: ADD 00003004: CALLDATALOAD 00003005: SWAP8 00003006: POP 00003007: PUSH1 0x80 00003009: DUP13 0000300a: ADD 0000300b: CALLDATALOAD 0000300c: PUSH2 0x3014 0000300f: DUP2 00003010: PUSH2 0x2f4c 00003013: JUMP 00003014: JUMPDEST 00003015: SWAP7 00003016: POP 00003017: PUSH1 0xa0 00003019: DUP13 0000301a: ADD 0000301b: CALLDATALOAD 0000301c: PUSH2 0x3024 0000301f: DUP2 00003020: PUSH2 0x2f4c 00003023: JUMP 00003024: JUMPDEST 00003025: SWAP6 00003026: POP 00003027: PUSH1 0xc0 00003029: DUP13 0000302a: ADD 0000302b: CALLDATALOAD 0000302c: SWAP5 0000302d: POP 0000302e: PUSH1 0xe0 00003030: DUP13 00003031: ADD 00003032: CALLDATALOAD 00003033: SWAP4 00003034: POP 00003035: PUSH2 0x0100 00003038: DUP13 00003039: ADD 0000303a: CALLDATALOAD 0000303b: SWAP3 0000303c: POP 0000303d: PUSH2 0x0120 00003040: DUP13 00003041: ADD 00003042: CALLDATALOAD 00003043: SWAP2 00003044: POP 00003045: PUSH2 0x0140 00003048: DUP13 00003049: ADD 0000304a: CALLDATALOAD 0000304b: PUSH2 0x3053 0000304e: DUP2 0000304f: PUSH2 0x2f4c 00003052: JUMP 00003053: JUMPDEST 00003054: DUP1 00003055: SWAP2 00003056: POP 00003057: POP 00003058: SWAP3 00003059: SWAP6 0000305a: SWAP9 0000305b: SWAP12 0000305c: POP 0000305d: SWAP3 0000305e: SWAP6 0000305f: SWAP9 00003060: SWAP12 00003061: SWAP1 00003062: SWAP4 00003063: SWAP7 00003064: SWAP10 00003065: POP 00003066: JUMP 00003067: JUMPDEST 00003068: PUSH0 00003069: PUSH0 0000306a: PUSH0 0000306b: PUSH0 0000306c: PUSH0 0000306d: PUSH0 0000306e: PUSH1 0xc0 00003070: DUP8 00003071: DUP10 00003072: SUB 00003073: SLT 00003074: ISZERO 00003075: PUSH2 0x307c 00003078: JUMPI 00003079: PUSH0 0000307a: PUSH0 0000307b: REVERT 0000307c: JUMPDEST 0000307d: DUP7 0000307e: CALLDATALOAD 0000307f: SWAP6 00003080: POP 00003081: PUSH1 0x20 00003083: DUP8 00003084: ADD 00003085: CALLDATALOAD 00003086: PUSH2 0x308e 00003089: DUP2 0000308a: PUSH2 0x2f4c 0000308d: JUMP 0000308e: JUMPDEST 0000308f: SWAP5 00003090: POP 00003091: PUSH1 0x40 00003093: DUP8 00003094: ADD 00003095: CALLDATALOAD 00003096: PUSH2 0x309e 00003099: DUP2 0000309a: PUSH2 0x2f4c 0000309d: JUMP 0000309e: JUMPDEST 0000309f: SWAP4 000030a0: POP 000030a1: PUSH1 0x60 000030a3: DUP8 000030a4: ADD 000030a5: CALLDATALOAD 000030a6: SWAP3 000030a7: POP 000030a8: PUSH1 0x80 000030aa: DUP8 000030ab: ADD 000030ac: CALLDATALOAD 000030ad: PUSH2 0x30b5 000030b0: DUP2 000030b1: PUSH2 0x2f4c 000030b4: JUMP 000030b5: JUMPDEST 000030b6: SWAP6 000030b7: SWAP9 000030b8: SWAP5 000030b9: SWAP8 000030ba: POP 000030bb: SWAP3 000030bc: SWAP6 000030bd: SWAP2 000030be: SWAP5 000030bf: SWAP4 000030c0: PUSH1 0xa0 000030c2: SWAP1 000030c3: SWAP3 000030c4: ADD 000030c5: CALLDATALOAD 000030c6: SWAP3 000030c7: POP 000030c8: POP 000030c9: JUMP 000030ca: JUMPDEST 000030cb: PUSH0 000030cc: PUSH0 000030cd: PUSH0 000030ce: PUSH0 000030cf: PUSH0 000030d0: PUSH0 000030d1: PUSH1 0xc0 000030d3: DUP8 000030d4: DUP10 000030d5: SUB 000030d6: SLT 000030d7: ISZERO 000030d8: PUSH2 0x30df 000030db: JUMPI 000030dc: PUSH0 000030dd: PUSH0 000030de: REVERT 000030df: JUMPDEST 000030e0: DUP7 000030e1: CALLDATALOAD 000030e2: SWAP6 000030e3: POP 000030e4: PUSH1 0x20 000030e6: DUP8 000030e7: ADD 000030e8: CALLDATALOAD 000030e9: SWAP5 000030ea: POP 000030eb: PUSH1 0x40 000030ed: DUP8 000030ee: ADD 000030ef: CALLDATALOAD 000030f0: PUSH2 0x30f8 000030f3: DUP2 000030f4: PUSH2 0x2f4c 000030f7: JUMP 000030f8: JUMPDEST 000030f9: SWAP4 000030fa: POP 000030fb: PUSH1 0x60 000030fd: DUP8 000030fe: ADD 000030ff: CALLDATALOAD 00003100: PUSH2 0x3108 00003103: DUP2 00003104: PUSH2 0x2f4c 00003107: JUMP 00003108: JUMPDEST 00003109: SWAP6 0000310a: SWAP9 0000310b: SWAP5 0000310c: SWAP8 0000310d: POP 0000310e: SWAP3 0000310f: SWAP6 00003110: PUSH1 0x80 00003112: DUP2 00003113: ADD 00003114: CALLDATALOAD 00003115: SWAP5 00003116: PUSH1 0xa0 00003118: SWAP1 00003119: SWAP2 0000311a: ADD 0000311b: CALLDATALOAD 0000311c: SWAP4 0000311d: POP 0000311e: SWAP2 0000311f: POP 00003120: POP 00003121: JUMP 00003122: JUMPDEST 00003123: PUSH0 00003124: PUSH0 00003125: PUSH0 00003126: PUSH0 00003127: PUSH0 00003128: PUSH0 00003129: PUSH0 0000312a: PUSH1 0xe0 0000312c: DUP9 0000312d: DUP11 0000312e: SUB 0000312f: SLT 00003130: ISZERO 00003131: PUSH2 0x3138 00003134: JUMPI 00003135: PUSH0 00003136: PUSH0 00003137: REVERT 00003138: JUMPDEST 00003139: DUP8 0000313a: CALLDATALOAD 0000313b: SWAP7 0000313c: POP 0000313d: PUSH1 0x20 0000313f: DUP9 00003140: ADD 00003141: CALLDATALOAD 00003142: PUSH2 0x314a 00003145: DUP2 00003146: PUSH2 0x2f4c 00003149: JUMP 0000314a: JUMPDEST 0000314b: SWAP6 0000314c: POP 0000314d: PUSH2 0x3158 00003150: PUSH1 0x40 00003152: DUP10 00003153: ADD 00003154: PUSH2 0x2fae 00003157: JUMP 00003158: JUMPDEST 00003159: SWAP5 0000315a: POP 0000315b: PUSH1 0x60 0000315d: DUP9 0000315e: ADD 0000315f: CALLDATALOAD 00003160: PUSH2 0x3168 00003163: DUP2 00003164: PUSH2 0x2f4c 00003167: JUMP 00003168: JUMPDEST 00003169: SWAP4 0000316a: POP 0000316b: PUSH1 0x80 0000316d: DUP9 0000316e: ADD 0000316f: CALLDATALOAD 00003170: PUSH2 0x3178 00003173: DUP2 00003174: PUSH2 0x2f4c 00003177: JUMP 00003178: JUMPDEST 00003179: SWAP7 0000317a: SWAP10 0000317b: SWAP6 0000317c: SWAP9 0000317d: POP 0000317e: SWAP4 0000317f: SWAP7 00003180: SWAP3 00003181: SWAP6 00003182: SWAP5 00003183: PUSH1 0xa0 00003185: DUP5 00003186: ADD 00003187: CALLDATALOAD 00003188: SWAP5 00003189: POP 0000318a: PUSH1 0xc0 0000318c: SWAP1 0000318d: SWAP4 0000318e: ADD 0000318f: CALLDATALOAD 00003190: SWAP3 00003191: SWAP2 00003192: POP 00003193: POP 00003194: JUMP 00003195: JUMPDEST 00003196: PUSH0 00003197: PUSH0 00003198: PUSH0 00003199: PUSH0 0000319a: PUSH0 0000319b: PUSH0 0000319c: PUSH0 0000319d: PUSH0 0000319e: PUSH0 0000319f: PUSH0 000031a0: PUSH2 0x0140 000031a3: DUP12 000031a4: DUP14 000031a5: SUB 000031a6: SLT 000031a7: ISZERO 000031a8: PUSH2 0x31af 000031ab: JUMPI 000031ac: PUSH0 000031ad: PUSH0 000031ae: REVERT 000031af: JUMPDEST 000031b0: DUP11 000031b1: CALLDATALOAD 000031b2: PUSH2 0x31ba 000031b5: DUP2 000031b6: PUSH2 0x2f4c 000031b9: JUMP 000031ba: JUMPDEST 000031bb: SWAP10 000031bc: POP 000031bd: PUSH2 0x31c8 000031c0: PUSH1 0x20 000031c2: DUP13 000031c3: ADD 000031c4: PUSH2 0x2fae 000031c7: JUMP 000031c8: JUMPDEST 000031c9: SWAP9 000031ca: POP 000031cb: PUSH1 0x40 000031cd: DUP12 000031ce: ADD 000031cf: CALLDATALOAD 000031d0: SWAP8 000031d1: POP 000031d2: PUSH1 0x60 000031d4: DUP12 000031d5: ADD 000031d6: CALLDATALOAD 000031d7: PUSH2 0x31df 000031da: DUP2 000031db: PUSH2 0x2f4c 000031de: JUMP 000031df: JUMPDEST 000031e0: SWAP7 000031e1: POP 000031e2: PUSH1 0x80 000031e4: DUP12 000031e5: ADD 000031e6: CALLDATALOAD 000031e7: PUSH2 0x31ef 000031ea: DUP2 000031eb: PUSH2 0x2f4c 000031ee: JUMP 000031ef: JUMPDEST 000031f0: SWAP6 000031f1: POP 000031f2: PUSH1 0xa0 000031f4: DUP12 000031f5: ADD 000031f6: CALLDATALOAD 000031f7: SWAP5 000031f8: POP 000031f9: PUSH1 0xc0 000031fb: DUP12 000031fc: ADD 000031fd: CALLDATALOAD 000031fe: SWAP4 000031ff: POP 00003200: PUSH1 0xe0 00003202: DUP12 00003203: ADD 00003204: CALLDATALOAD 00003205: SWAP3 00003206: POP 00003207: PUSH2 0x0100 0000320a: DUP12 0000320b: ADD 0000320c: CALLDATALOAD 0000320d: SWAP2 0000320e: POP 0000320f: PUSH2 0x0120 00003212: DUP12 00003213: ADD 00003214: CALLDATALOAD 00003215: PUSH2 0x321d 00003218: DUP2 00003219: PUSH2 0x2f4c 0000321c: JUMP 0000321d: JUMPDEST 0000321e: DUP1 0000321f: SWAP2 00003220: POP 00003221: POP 00003222: SWAP3 00003223: SWAP6 00003224: SWAP9 00003225: SWAP12 00003226: SWAP2 00003227: SWAP5 00003228: SWAP8 00003229: SWAP11 0000322a: POP 0000322b: SWAP3 0000322c: SWAP6 0000322d: SWAP9 0000322e: POP 0000322f: JUMP 00003230: JUMPDEST 00003231: PUSH0 00003232: PUSH0 00003233: PUSH0 00003234: PUSH0 00003235: PUSH0 00003236: PUSH1 0xa0 00003238: DUP7 00003239: DUP9 0000323a: SUB 0000323b: SLT 0000323c: ISZERO 0000323d: PUSH2 0x3244 00003240: JUMPI 00003241: PUSH0 00003242: PUSH0 00003243: REVERT 00003244: JUMPDEST 00003245: DUP6 00003246: CALLDATALOAD 00003247: PUSH2 0x324f 0000324a: DUP2 0000324b: PUSH2 0x2f4c 0000324e: JUMP 0000324f: JUMPDEST 00003250: SWAP5 00003251: POP 00003252: PUSH2 0x325d 00003255: PUSH1 0x20 00003257: DUP8 00003258: ADD 00003259: PUSH2 0x2fae 0000325c: JUMP 0000325d: JUMPDEST 0000325e: SWAP4 0000325f: POP 00003260: PUSH1 0x40 00003262: DUP7 00003263: ADD 00003264: CALLDATALOAD 00003265: SWAP3 00003266: POP 00003267: PUSH1 0x60 00003269: DUP7 0000326a: ADD 0000326b: CALLDATALOAD 0000326c: SWAP2 0000326d: POP 0000326e: PUSH1 0x80 00003270: DUP7 00003271: ADD 00003272: CALLDATALOAD 00003273: PUSH2 0x327b 00003276: DUP2 00003277: PUSH2 0x2f4c 0000327a: JUMP 0000327b: JUMPDEST 0000327c: DUP1 0000327d: SWAP2 0000327e: POP 0000327f: POP 00003280: SWAP3 00003281: SWAP6 00003282: POP 00003283: SWAP3 00003284: SWAP6 00003285: SWAP1 00003286: SWAP4 00003287: POP 00003288: JUMP 00003289: JUMPDEST 0000328a: PUSH0 0000328b: PUSH0 0000328c: PUSH0 0000328d: PUSH0 0000328e: PUSH0 0000328f: PUSH0 00003290: PUSH1 0xc0 00003292: DUP8 00003293: DUP10 00003294: SUB 00003295: SLT 00003296: ISZERO 00003297: PUSH2 0x329e 0000329a: JUMPI 0000329b: PUSH0 0000329c: PUSH0 0000329d: REVERT 0000329e: JUMPDEST 0000329f: DUP7 000032a0: CALLDATALOAD 000032a1: SWAP6 000032a2: POP 000032a3: PUSH1 0x20 000032a5: DUP8 000032a6: ADD 000032a7: CALLDATALOAD 000032a8: PUSH2 0x32b0 000032ab: DUP2 000032ac: PUSH2 0x2f4c 000032af: JUMP 000032b0: JUMPDEST 000032b1: SWAP5 000032b2: POP 000032b3: PUSH2 0x32be 000032b6: PUSH1 0x40 000032b8: DUP9 000032b9: ADD 000032ba: PUSH2 0x2fae 000032bd: JUMP 000032be: JUMPDEST 000032bf: SWAP4 000032c0: POP 000032c1: PUSH1 0x60 000032c3: DUP8 000032c4: ADD 000032c5: CALLDATALOAD 000032c6: SWAP3 000032c7: POP 000032c8: PUSH1 0x80 000032ca: DUP8 000032cb: ADD 000032cc: CALLDATALOAD 000032cd: SWAP2 000032ce: POP 000032cf: PUSH1 0xa0 000032d1: DUP8 000032d2: ADD 000032d3: CALLDATALOAD 000032d4: PUSH2 0x32dc 000032d7: DUP2 000032d8: PUSH2 0x2f4c 000032db: JUMP 000032dc: JUMPDEST 000032dd: DUP1 000032de: SWAP2 000032df: POP 000032e0: POP 000032e1: SWAP3 000032e2: SWAP6 000032e3: POP 000032e4: SWAP3 000032e5: SWAP6 000032e6: POP 000032e7: SWAP3 000032e8: SWAP6 000032e9: JUMP 000032ea: JUMPDEST 000032eb: PUSH0 000032ec: PUSH0 000032ed: DUP4 000032ee: PUSH1 0x1f 000032f0: DUP5 000032f1: ADD 000032f2: SLT 000032f3: PUSH2 0x32fa 000032f6: JUMPI 000032f7: PUSH0 000032f8: PUSH0 000032f9: REVERT 000032fa: JUMPDEST 000032fb: POP 000032fc: DUP2 000032fd: CALLDATALOAD 000032fe: PUSH8 0xffffffffffffffff 00003307: DUP2 00003308: GT 00003309: ISZERO 0000330a: PUSH2 0x3311 0000330d: JUMPI 0000330e: PUSH0 0000330f: PUSH0 00003310: REVERT 00003311: JUMPDEST 00003312: PUSH1 0x20 00003314: DUP4 00003315: ADD 00003316: SWAP2 00003317: POP 00003318: DUP4 00003319: PUSH1 0x20 0000331b: DUP3 0000331c: DUP6 0000331d: ADD 0000331e: ADD 0000331f: GT 00003320: ISZERO 00003321: PUSH2 0x3328 00003324: JUMPI 00003325: PUSH0 00003326: PUSH0 00003327: REVERT 00003328: JUMPDEST 00003329: SWAP3 0000332a: POP 0000332b: SWAP3 0000332c: SWAP1 0000332d: POP 0000332e: JUMP 0000332f: JUMPDEST 00003330: PUSH0 00003331: PUSH0 00003332: PUSH1 0x20 00003334: DUP4 00003335: DUP6 00003336: SUB 00003337: SLT 00003338: ISZERO 00003339: PUSH2 0x3340 0000333c: JUMPI 0000333d: PUSH0 0000333e: PUSH0 0000333f: REVERT 00003340: JUMPDEST 00003341: DUP3 00003342: CALLDATALOAD 00003343: PUSH8 0xffffffffffffffff 0000334c: DUP2 0000334d: GT 0000334e: ISZERO 0000334f: PUSH2 0x3356 00003352: JUMPI 00003353: PUSH0 00003354: PUSH0 00003355: REVERT 00003356: JUMPDEST 00003357: PUSH2 0x3362 0000335a: DUP6 0000335b: DUP3 0000335c: DUP7 0000335d: ADD 0000335e: PUSH2 0x32ea 00003361: JUMP 00003362: JUMPDEST 00003363: SWAP1 00003364: SWAP7 00003365: SWAP1 00003366: SWAP6 00003367: POP 00003368: SWAP4 00003369: POP 0000336a: POP 0000336b: POP 0000336c: POP 0000336d: JUMP 0000336e: JUMPDEST 0000336f: PUSH0 00003370: PUSH0 00003371: PUSH0 00003372: PUSH0 00003373: PUSH0 00003374: PUSH0 00003375: PUSH1 0xc0 00003377: DUP8 00003378: DUP10 00003379: SUB 0000337a: SLT 0000337b: ISZERO 0000337c: PUSH2 0x3383 0000337f: JUMPI 00003380: PUSH0 00003381: PUSH0 00003382: REVERT 00003383: JUMPDEST 00003384: DUP7 00003385: CALLDATALOAD 00003386: PUSH2 0x338e 00003389: DUP2 0000338a: PUSH2 0x2f4c 0000338d: JUMP 0000338e: JUMPDEST 0000338f: SWAP6 00003390: POP 00003391: PUSH2 0x339c 00003394: PUSH1 0x20 00003396: DUP9 00003397: ADD 00003398: PUSH2 0x2fae 0000339b: JUMP 0000339c: JUMPDEST 0000339d: SWAP5 0000339e: POP 0000339f: PUSH1 0x40 000033a1: DUP8 000033a2: ADD 000033a3: CALLDATALOAD 000033a4: PUSH2 0x30f8 000033a7: DUP2 000033a8: PUSH2 0x2f4c 000033ab: JUMP 000033ac: JUMPDEST 000033ad: PUSH0 000033ae: PUSH1 0x20 000033b0: DUP3 000033b1: DUP5 000033b2: SUB 000033b3: SLT 000033b4: ISZERO 000033b5: PUSH2 0x33bc 000033b8: JUMPI 000033b9: PUSH0 000033ba: PUSH0 000033bb: REVERT 000033bc: JUMPDEST 000033bd: DUP2 000033be: CALLDATALOAD 000033bf: PUSH2 0x33c7 000033c2: DUP2 000033c3: PUSH2 0x2f4c 000033c6: JUMP 000033c7: JUMPDEST 000033c8: SWAP4 000033c9: SWAP3 000033ca: POP 000033cb: POP 000033cc: POP 000033cd: JUMP 000033ce: JUMPDEST 000033cf: PUSH0 000033d0: PUSH0 000033d1: PUSH0 000033d2: PUSH0 000033d3: PUSH0 000033d4: PUSH0 000033d5: PUSH0 000033d6: PUSH0 000033d7: PUSH0 000033d8: PUSH0 000033d9: PUSH0 000033da: PUSH2 0x0160 000033dd: DUP13 000033de: DUP15 000033df: SUB 000033e0: SLT 000033e1: ISZERO 000033e2: PUSH2 0x33e9 000033e5: JUMPI 000033e6: PUSH0 000033e7: PUSH0 000033e8: REVERT 000033e9: JUMPDEST 000033ea: DUP12 000033eb: CALLDATALOAD 000033ec: PUSH2 0x33f4 000033ef: DUP2 000033f0: PUSH2 0x2f4c 000033f3: JUMP 000033f4: JUMPDEST 000033f5: SWAP11 000033f6: POP 000033f7: PUSH2 0x3402 000033fa: PUSH1 0x20 000033fc: DUP14 000033fd: ADD 000033fe: PUSH2 0x2fae 00003401: JUMP 00003402: JUMPDEST 00003403: SWAP10 00003404: POP 00003405: PUSH1 0x40 00003407: DUP13 00003408: ADD 00003409: CALLDATALOAD 0000340a: SWAP9 0000340b: POP 0000340c: PUSH1 0x60 0000340e: DUP13 0000340f: ADD 00003410: CALLDATALOAD 00003411: SWAP8 00003412: POP 00003413: PUSH1 0x80 00003415: DUP13 00003416: ADD 00003417: CALLDATALOAD 00003418: PUSH2 0x3420 0000341b: DUP2 0000341c: PUSH2 0x2f4c 0000341f: JUMP 00003420: JUMPDEST 00003421: SWAP7 00003422: POP 00003423: PUSH1 0xa0 00003425: DUP13 00003426: ADD 00003427: CALLDATALOAD 00003428: SWAP6 00003429: POP 0000342a: PUSH1 0xc0 0000342c: DUP13 0000342d: ADD 0000342e: CALLDATALOAD 0000342f: SWAP5 00003430: POP 00003431: PUSH1 0xe0 00003433: DUP13 00003434: ADD 00003435: CALLDATALOAD 00003436: SWAP4 00003437: POP 00003438: PUSH2 0x0100 0000343b: DUP13 0000343c: ADD 0000343d: CALLDATALOAD 0000343e: SWAP3 0000343f: POP 00003440: PUSH2 0x0120 00003443: DUP13 00003444: ADD 00003445: CALLDATALOAD 00003446: SWAP2 00003447: POP 00003448: PUSH2 0x0140 0000344b: DUP13 0000344c: ADD 0000344d: CALLDATALOAD 0000344e: PUSH2 0x3053 00003451: DUP2 00003452: PUSH2 0x2f4c 00003455: JUMP 00003456: JUMPDEST 00003457: PUSH0 00003458: PUSH0 00003459: PUSH0 0000345a: PUSH0 0000345b: PUSH1 0x60 0000345d: DUP6 0000345e: DUP8 0000345f: SUB 00003460: SLT 00003461: ISZERO 00003462: PUSH2 0x3469 00003465: JUMPI 00003466: PUSH0 00003467: PUSH0 00003468: REVERT 00003469: JUMPDEST 0000346a: DUP5 0000346b: CALLDATALOAD 0000346c: SWAP4 0000346d: POP 0000346e: PUSH1 0x20 00003470: DUP6 00003471: ADD 00003472: CALLDATALOAD 00003473: SWAP3 00003474: POP 00003475: PUSH1 0x40 00003477: DUP6 00003478: ADD 00003479: CALLDATALOAD 0000347a: PUSH8 0xffffffffffffffff 00003483: DUP2 00003484: GT 00003485: ISZERO 00003486: PUSH2 0x348d 00003489: JUMPI 0000348a: PUSH0 0000348b: PUSH0 0000348c: REVERT 0000348d: JUMPDEST 0000348e: PUSH2 0x3499 00003491: DUP8 00003492: DUP3 00003493: DUP9 00003494: ADD 00003495: PUSH2 0x32ea 00003498: JUMP 00003499: JUMPDEST 0000349a: SWAP6 0000349b: SWAP9 0000349c: SWAP5 0000349d: SWAP8 0000349e: POP 0000349f: SWAP6 000034a0: POP 000034a1: POP 000034a2: POP 000034a3: POP 000034a4: JUMP 000034a5: JUMPDEST 000034a6: PUSH0 000034a7: PUSH1 0x20 000034a9: DUP3 000034aa: DUP5 000034ab: SUB 000034ac: SLT 000034ad: ISZERO 000034ae: PUSH2 0x34b5 000034b1: JUMPI 000034b2: PUSH0 000034b3: PUSH0 000034b4: REVERT 000034b5: JUMPDEST 000034b6: POP 000034b7: CALLDATALOAD 000034b8: SWAP2 000034b9: SWAP1 000034ba: POP 000034bb: JUMP 000034bc: JUMPDEST 000034bd: PUSH0 000034be: PUSH0 000034bf: PUSH0 000034c0: PUSH0 000034c1: PUSH0 000034c2: PUSH1 0xa0 000034c4: DUP7 000034c5: DUP9 000034c6: SUB 000034c7: SLT 000034c8: ISZERO 000034c9: PUSH2 0x34d0 000034cc: JUMPI 000034cd: PUSH0 000034ce: PUSH0 000034cf: REVERT 000034d0: JUMPDEST 000034d1: DUP6 000034d2: CALLDATALOAD 000034d3: PUSH2 0x34db 000034d6: DUP2 000034d7: PUSH2 0x2f4c 000034da: JUMP 000034db: JUMPDEST 000034dc: SWAP5 000034dd: POP 000034de: PUSH1 0x20 000034e0: DUP7 000034e1: ADD 000034e2: CALLDATALOAD 000034e3: PUSH2 0x34eb 000034e6: DUP2 000034e7: PUSH2 0x2f4c 000034ea: JUMP 000034eb: JUMPDEST 000034ec: SWAP4 000034ed: POP 000034ee: PUSH1 0x40 000034f0: DUP7 000034f1: ADD 000034f2: CALLDATALOAD 000034f3: SWAP3 000034f4: POP 000034f5: PUSH1 0x60 000034f7: DUP7 000034f8: ADD 000034f9: CALLDATALOAD 000034fa: PUSH2 0x3502 000034fd: DUP2 000034fe: PUSH2 0x2f4c 00003501: JUMP 00003502: JUMPDEST 00003503: SWAP5 00003504: SWAP8 00003505: SWAP4 00003506: SWAP7 00003507: POP 00003508: SWAP2 00003509: SWAP5 0000350a: PUSH1 0x80 0000350c: ADD 0000350d: CALLDATALOAD 0000350e: SWAP3 0000350f: SWAP2 00003510: POP 00003511: POP 00003512: JUMP 00003513: JUMPDEST 00003514: PUSH0 00003515: PUSH0 00003516: DUP4 00003517: PUSH1 0x1f 00003519: DUP5 0000351a: ADD 0000351b: SLT 0000351c: PUSH2 0x3523 0000351f: JUMPI 00003520: PUSH0 00003521: PUSH0 00003522: REVERT 00003523: JUMPDEST 00003524: POP 00003525: DUP2 00003526: CALLDATALOAD 00003527: PUSH8 0xffffffffffffffff 00003530: DUP2 00003531: GT 00003532: ISZERO 00003533: PUSH2 0x353a 00003536: JUMPI 00003537: PUSH0 00003538: PUSH0 00003539: REVERT 0000353a: JUMPDEST 0000353b: PUSH1 0x20 0000353d: DUP4 0000353e: ADD 0000353f: SWAP2 00003540: POP 00003541: DUP4 00003542: PUSH1 0x20 00003544: DUP3 00003545: PUSH1 0x05 00003547: SHL 00003548: DUP6 00003549: ADD 0000354a: ADD 0000354b: GT 0000354c: ISZERO 0000354d: PUSH2 0x3328 00003550: JUMPI 00003551: PUSH0 00003552: PUSH0 00003553: REVERT 00003554: JUMPDEST 00003555: PUSH0 00003556: PUSH0 00003557: PUSH0 00003558: PUSH0 00003559: PUSH1 0x40 0000355b: DUP6 0000355c: DUP8 0000355d: SUB 0000355e: SLT 0000355f: ISZERO 00003560: PUSH2 0x3567 00003563: JUMPI 00003564: PUSH0 00003565: PUSH0 00003566: REVERT 00003567: JUMPDEST 00003568: DUP5 00003569: CALLDATALOAD 0000356a: PUSH8 0xffffffffffffffff 00003573: DUP2 00003574: GT 00003575: ISZERO 00003576: PUSH2 0x357d 00003579: JUMPI 0000357a: PUSH0 0000357b: PUSH0 0000357c: REVERT 0000357d: JUMPDEST 0000357e: PUSH2 0x3589 00003581: DUP8 00003582: DUP3 00003583: DUP9 00003584: ADD 00003585: PUSH2 0x3513 00003588: JUMP 00003589: JUMPDEST 0000358a: SWAP1 0000358b: SWAP6 0000358c: POP 0000358d: SWAP4 0000358e: POP 0000358f: POP 00003590: PUSH1 0x20 00003592: DUP6 00003593: ADD 00003594: CALLDATALOAD 00003595: PUSH8 0xffffffffffffffff 0000359e: DUP2 0000359f: GT 000035a0: ISZERO 000035a1: PUSH2 0x35a8 000035a4: JUMPI 000035a5: PUSH0 000035a6: PUSH0 000035a7: REVERT 000035a8: JUMPDEST 000035a9: PUSH2 0x3499 000035ac: DUP8 000035ad: DUP3 000035ae: DUP9 000035af: ADD 000035b0: PUSH2 0x3513 000035b3: JUMP 000035b4: JUMPDEST 000035b5: PUSH0 000035b6: PUSH0 000035b7: PUSH1 0x20 000035b9: DUP4 000035ba: DUP6 000035bb: SUB 000035bc: SLT 000035bd: ISZERO 000035be: PUSH2 0x35c5 000035c1: JUMPI 000035c2: PUSH0 000035c3: PUSH0 000035c4: REVERT 000035c5: JUMPDEST 000035c6: DUP3 000035c7: CALLDATALOAD 000035c8: PUSH8 0xffffffffffffffff 000035d1: DUP2 000035d2: GT 000035d3: ISZERO 000035d4: PUSH2 0x35db 000035d7: JUMPI 000035d8: PUSH0 000035d9: PUSH0 000035da: REVERT 000035db: JUMPDEST 000035dc: PUSH2 0x3362 000035df: DUP6 000035e0: DUP3 000035e1: DUP7 000035e2: ADD 000035e3: PUSH2 0x3513 000035e6: JUMP 000035e7: JUMPDEST 000035e8: PUSH0 000035e9: PUSH0 000035ea: PUSH1 0x40 000035ec: DUP4 000035ed: DUP6 000035ee: SUB 000035ef: SLT 000035f0: ISZERO 000035f1: PUSH2 0x35f8 000035f4: JUMPI 000035f5: PUSH0 000035f6: PUSH0 000035f7: REVERT 000035f8: JUMPDEST 000035f9: DUP3 000035fa: CALLDATALOAD 000035fb: PUSH2 0x3603 000035fe: DUP2 000035ff: PUSH2 0x2f4c 00003602: JUMP 00003603: JUMPDEST 00003604: SWAP5 00003605: PUSH1 0x20 00003607: SWAP4 00003608: SWAP1 00003609: SWAP4 0000360a: ADD 0000360b: CALLDATALOAD 0000360c: SWAP4 0000360d: POP 0000360e: POP 0000360f: POP 00003610: JUMP 00003611: JUMPDEST 00003612: PUSH0 00003613: PUSH0 00003614: PUSH0 00003615: PUSH0 00003616: PUSH0 00003617: PUSH0 00003618: PUSH0 00003619: PUSH0 0000361a: PUSH0 0000361b: PUSH0 0000361c: PUSH0 0000361d: PUSH0 0000361e: PUSH2 0x0180 00003621: DUP14 00003622: DUP16 00003623: SUB 00003624: SLT 00003625: ISZERO 00003626: PUSH2 0x362d 00003629: JUMPI 0000362a: PUSH0 0000362b: PUSH0 0000362c: REVERT 0000362d: JUMPDEST 0000362e: DUP13 0000362f: CALLDATALOAD 00003630: SWAP12 00003631: POP 00003632: PUSH1 0x20 00003634: DUP14 00003635: ADD 00003636: CALLDATALOAD 00003637: PUSH2 0x363f 0000363a: DUP2 0000363b: PUSH2 0x2f4c 0000363e: JUMP 0000363f: JUMPDEST 00003640: SWAP11 00003641: POP 00003642: PUSH2 0x364d 00003645: PUSH1 0x40 00003647: DUP15 00003648: ADD 00003649: PUSH2 0x2fae 0000364c: JUMP 0000364d: JUMPDEST 0000364e: SWAP10 0000364f: POP 00003650: PUSH1 0x60 00003652: DUP14 00003653: ADD 00003654: CALLDATALOAD 00003655: SWAP9 00003656: POP 00003657: PUSH1 0x80 00003659: DUP14 0000365a: ADD 0000365b: CALLDATALOAD 0000365c: SWAP8 0000365d: POP 0000365e: PUSH1 0xa0 00003660: DUP14 00003661: ADD 00003662: CALLDATALOAD 00003663: PUSH2 0x366b 00003666: DUP2 00003667: PUSH2 0x2f4c 0000366a: JUMP 0000366b: JUMPDEST 0000366c: SWAP7 0000366d: POP 0000366e: PUSH1 0xc0 00003670: DUP14 00003671: ADD 00003672: CALLDATALOAD 00003673: SWAP6 00003674: POP 00003675: PUSH1 0xe0 00003677: DUP14 00003678: ADD 00003679: CALLDATALOAD 0000367a: SWAP5 0000367b: POP 0000367c: PUSH2 0x0100 0000367f: DUP14 00003680: ADD 00003681: CALLDATALOAD 00003682: SWAP4 00003683: POP 00003684: PUSH2 0x0120 00003687: DUP14 00003688: ADD 00003689: CALLDATALOAD 0000368a: SWAP3 0000368b: POP 0000368c: PUSH2 0x0140 0000368f: DUP14 00003690: ADD 00003691: CALLDATALOAD 00003692: SWAP2 00003693: POP 00003694: PUSH2 0x0160 00003697: DUP14 00003698: ADD 00003699: CALLDATALOAD 0000369a: PUSH2 0x36a2 0000369d: DUP2 0000369e: PUSH2 0x2f4c 000036a1: JUMP 000036a2: JUMPDEST 000036a3: DUP1 000036a4: SWAP2 000036a5: POP 000036a6: POP 000036a7: SWAP3 000036a8: SWAP6 000036a9: SWAP9 000036aa: SWAP12 000036ab: POP 000036ac: SWAP3 000036ad: SWAP6 000036ae: SWAP9 000036af: SWAP12 000036b0: POP 000036b1: SWAP3 000036b2: SWAP6 000036b3: SWAP9 000036b4: SWAP12 000036b5: JUMP 000036b6: JUMPDEST 000036b7: PUSH0 000036b8: PUSH0 000036b9: PUSH0 000036ba: PUSH1 0x60 000036bc: DUP5 000036bd: DUP7 000036be: SUB 000036bf: SLT 000036c0: ISZERO 000036c1: PUSH2 0x36c8 000036c4: JUMPI 000036c5: PUSH0 000036c6: PUSH0 000036c7: REVERT 000036c8: JUMPDEST 000036c9: DUP4 000036ca: CALLDATALOAD 000036cb: PUSH2 0x36d3 000036ce: DUP2 000036cf: PUSH2 0x2f4c 000036d2: JUMP 000036d3: JUMPDEST 000036d4: SWAP3 000036d5: POP 000036d6: PUSH1 0x20 000036d8: DUP5 000036d9: ADD 000036da: CALLDATALOAD 000036db: PUSH2 0x36e3 000036de: DUP2 000036df: PUSH2 0x2f4c 000036e2: JUMP 000036e3: JUMPDEST 000036e4: SWAP3 000036e5: SWAP6 000036e6: SWAP3 000036e7: SWAP5 000036e8: POP 000036e9: POP 000036ea: POP 000036eb: PUSH1 0x40 000036ed: SWAP2 000036ee: SWAP1 000036ef: SWAP2 000036f0: ADD 000036f1: CALLDATALOAD 000036f2: SWAP1 000036f3: JUMP 000036f4: JUMPDEST 000036f5: PUSH1 0x20 000036f7: DUP1 000036f8: DUP3 000036f9: MSTORE 000036fa: PUSH1 0x01 000036fc: SWAP1 000036fd: DUP3 000036fe: ADD 000036ff: MSTORE 00003700: PUSH1 0x31 00003702: PUSH1 0xf9 00003704: SHL 00003705: PUSH1 0x40 00003707: DUP3 00003708: ADD 00003709: MSTORE 0000370a: PUSH1 0x60 0000370c: ADD 0000370d: SWAP1 0000370e: JUMP 0000370f: JUMPDEST 00003710: PUSH1 0x20 00003712: DUP1 00003713: DUP3 00003714: MSTORE 00003715: PUSH1 0x01 00003717: SWAP1 00003718: DUP3 00003719: ADD 0000371a: MSTORE 0000371b: PUSH1 0x3f 0000371d: PUSH1 0xf8 0000371f: SHL 00003720: PUSH1 0x40 00003722: DUP3 00003723: ADD 00003724: MSTORE 00003725: PUSH1 0x60 00003727: ADD 00003728: SWAP1 00003729: JUMP 0000372a: JUMPDEST 0000372b: PUSH4 0x4e487b71 00003730: PUSH1 0xe0 00003732: SHL 00003733: PUSH0 00003734: MSTORE 00003735: PUSH1 0x12 00003737: PUSH1 0x04 00003739: MSTORE 0000373a: PUSH1 0x24 0000373c: PUSH0 0000373d: REVERT 0000373e: JUMPDEST 0000373f: PUSH0 00003740: DUP3 00003741: PUSH2 0x374c 00003744: JUMPI 00003745: PUSH2 0x374c 00003748: PUSH2 0x372a 0000374b: JUMP 0000374c: JUMPDEST 0000374d: POP 0000374e: MOD 0000374f: SWAP1 00003750: JUMP 00003751: JUMPDEST 00003752: PUSH4 0x4e487b71 00003757: PUSH1 0xe0 00003759: SHL 0000375a: PUSH0 0000375b: MSTORE 0000375c: PUSH1 0x11 0000375e: PUSH1 0x04 00003760: MSTORE 00003761: PUSH1 0x24 00003763: PUSH0 00003764: REVERT 00003765: JUMPDEST 00003766: PUSH0 00003767: DUP3 00003768: PUSH2 0x3773 0000376b: JUMPI 0000376c: PUSH2 0x3773 0000376f: PUSH2 0x372a 00003772: JUMP 00003773: JUMPDEST 00003774: POP 00003775: DIV 00003776: SWAP1 00003777: JUMP 00003778: JUMPDEST 00003779: DUP1 0000377a: DUP3 0000377b: MUL 0000377c: DUP2 0000377d: ISZERO 0000377e: DUP3 0000377f: DUP3 00003780: DIV 00003781: DUP5 00003782: EQ 00003783: OR 00003784: PUSH2 0x18db 00003787: JUMPI 00003788: PUSH2 0x18db 0000378b: PUSH2 0x3751 0000378e: JUMP 0000378f: JUMPDEST 00003790: PUSH1 0x20 00003792: DUP1 00003793: DUP3 00003794: MSTORE 00003795: PUSH1 0x01 00003797: SWAP1 00003798: DUP3 00003799: ADD 0000379a: MSTORE 0000379b: PUSH1 0x1d 0000379d: PUSH1 0xf9 0000379f: SHL 000037a0: PUSH1 0x40 000037a2: DUP3 000037a3: ADD 000037a4: MSTORE 000037a5: PUSH1 0x60 000037a7: ADD 000037a8: SWAP1 000037a9: JUMP 000037aa: JUMPDEST 000037ab: PUSH1 0x20 000037ad: DUP1 000037ae: DUP3 000037af: MSTORE 000037b0: PUSH1 0x01 000037b2: SWAP1 000037b3: DUP3 000037b4: ADD 000037b5: MSTORE 000037b6: PUSH1 0x21 000037b8: PUSH1 0xf8 000037ba: SHL 000037bb: PUSH1 0x40 000037bd: DUP3 000037be: ADD 000037bf: MSTORE 000037c0: PUSH1 0x60 000037c2: ADD 000037c3: SWAP1 000037c4: JUMP 000037c5: JUMPDEST 000037c6: PUSH1 0x20 000037c8: DUP1 000037c9: DUP3 000037ca: MSTORE 000037cb: PUSH1 0x01 000037cd: SWAP1 000037ce: DUP3 000037cf: ADD 000037d0: MSTORE 000037d1: PUSH1 0x3b 000037d3: PUSH1 0xf8 000037d5: SHL 000037d6: PUSH1 0x40 000037d8: DUP3 000037d9: ADD 000037da: MSTORE 000037db: PUSH1 0x60 000037dd: ADD 000037de: SWAP1 000037df: JUMP 000037e0: JUMPDEST 000037e1: PUSH4 0x4e487b71 000037e6: PUSH1 0xe0 000037e8: SHL 000037e9: PUSH0 000037ea: MSTORE 000037eb: PUSH1 0x32 000037ed: PUSH1 0x04 000037ef: MSTORE 000037f0: PUSH1 0x24 000037f2: PUSH0 000037f3: REVERT 000037f4: JUMPDEST 000037f5: DUP1 000037f6: DUP3 000037f7: ADD 000037f8: DUP1 000037f9: DUP3 000037fa: GT 000037fb: ISZERO 000037fc: PUSH2 0x18db 000037ff: JUMPI 00003800: PUSH2 0x18db 00003803: PUSH2 0x3751 00003806: JUMP 00003807: JUMPDEST 00003808: PUSH1 0x01 0000380a: PUSH1 0x01 0000380c: PUSH1 0xa0 0000380e: SHL 0000380f: SUB 00003810: SWAP3 00003811: SWAP1 00003812: SWAP3 00003813: AND 00003814: DUP3 00003815: MSTORE 00003816: PUSH1 0x20 00003818: DUP3 00003819: ADD 0000381a: MSTORE 0000381b: PUSH1 0x40 0000381d: ADD 0000381e: SWAP1 0000381f: JUMP 00003820: JUMPDEST 00003821: PUSH0 00003822: DUP2 00003823: MLOAD 00003824: DUP1 00003825: DUP5 00003826: MSTORE 00003827: DUP1 00003828: PUSH1 0x20 0000382a: DUP5 0000382b: ADD 0000382c: PUSH1 0x20 0000382e: DUP7 0000382f: ADD 00003830: MCOPY 00003831: PUSH0 00003832: PUSH1 0x20 00003834: DUP3 00003835: DUP7 00003836: ADD 00003837: ADD 00003838: MSTORE 00003839: PUSH1 0x20 0000383b: PUSH1 0x1f 0000383d: NOT 0000383e: PUSH1 0x1f 00003840: DUP4 00003841: ADD 00003842: AND 00003843: DUP6 00003844: ADD 00003845: ADD 00003846: SWAP2 00003847: POP 00003848: POP 00003849: SWAP3 0000384a: SWAP2 0000384b: POP 0000384c: POP 0000384d: JUMP 0000384e: JUMPDEST 0000384f: PUSH1 0xe0 00003851: DUP2 00003852: MSTORE 00003853: DUP5 00003854: MLOAD 00003855: PUSH1 0xe0 00003857: DUP3 00003858: ADD 00003859: MSTORE 0000385a: PUSH0 0000385b: PUSH1 0x20 0000385d: DUP7 0000385e: ADD 0000385f: MLOAD 00003860: PUSH1 0x02 00003862: DUP2 00003863: LT 00003864: PUSH2 0x387b 00003867: JUMPI 00003868: PUSH4 0x4e487b71 0000386d: PUSH1 0xe0 0000386f: SHL 00003870: PUSH0 00003871: MSTORE 00003872: PUSH1 0x21 00003874: PUSH1 0x04 00003876: MSTORE 00003877: PUSH1 0x24 00003879: PUSH0 0000387a: REVERT 0000387b: JUMPDEST 0000387c: PUSH2 0x0100 0000387f: DUP4 00003880: ADD 00003881: MSTORE 00003882: PUSH1 0x40 00003884: DUP7 00003885: ADD 00003886: MLOAD 00003887: PUSH1 0x01 00003889: PUSH1 0x01 0000388b: PUSH1 0xa0 0000388d: SHL 0000388e: SUB 0000388f: AND 00003890: PUSH2 0x0120 00003893: DUP4 00003894: ADD 00003895: MSTORE 00003896: PUSH1 0x60 00003898: DUP7 00003899: ADD 0000389a: MLOAD 0000389b: PUSH2 0x38b0 0000389e: PUSH2 0x0140 000038a1: DUP5 000038a2: ADD 000038a3: DUP3 000038a4: PUSH1 0x01 000038a6: PUSH1 0x01 000038a8: PUSH1 0xa0 000038aa: SHL 000038ab: SUB 000038ac: AND 000038ad: SWAP1 000038ae: MSTORE 000038af: JUMP 000038b0: JUMPDEST 000038b1: POP 000038b2: PUSH1 0x80 000038b4: DUP7 000038b5: ADD 000038b6: MLOAD 000038b7: PUSH2 0x0160 000038ba: DUP4 000038bb: ADD 000038bc: MSTORE 000038bd: PUSH1 0xa0 000038bf: DUP7 000038c0: ADD 000038c1: MLOAD 000038c2: PUSH1 0xc0 000038c4: PUSH2 0x0180 000038c7: DUP5 000038c8: ADD 000038c9: MSTORE 000038ca: PUSH2 0x38d7 000038cd: PUSH2 0x01a0 000038d0: DUP5 000038d1: ADD 000038d2: DUP3 000038d3: PUSH2 0x3820 000038d6: JUMP 000038d7: JUMPDEST 000038d8: SWAP2 000038d9: POP 000038da: POP 000038db: PUSH2 0x3917 000038de: PUSH1 0x20 000038e0: DUP4 000038e1: ADD 000038e2: DUP7 000038e3: DUP1 000038e4: MLOAD 000038e5: PUSH1 0x01 000038e7: PUSH1 0x01 000038e9: PUSH1 0xa0 000038eb: SHL 000038ec: SUB 000038ed: SWAP1 000038ee: DUP2 000038ef: AND 000038f0: DUP4 000038f1: MSTORE 000038f2: PUSH1 0x20 000038f4: DUP1 000038f5: DUP4 000038f6: ADD 000038f7: MLOAD 000038f8: ISZERO 000038f9: ISZERO 000038fa: SWAP1 000038fb: DUP5 000038fc: ADD 000038fd: MSTORE 000038fe: PUSH1 0x40 00003900: DUP1 00003901: DUP4 00003902: ADD 00003903: MLOAD 00003904: SWAP1 00003905: SWAP2 00003906: AND 00003907: SWAP1 00003908: DUP4 00003909: ADD 0000390a: MSTORE 0000390b: PUSH1 0x60 0000390d: SWAP1 0000390e: DUP2 0000390f: ADD 00003910: MLOAD 00003911: ISZERO 00003912: ISZERO 00003913: SWAP2 00003914: ADD 00003915: MSTORE 00003916: JUMP 00003917: JUMPDEST 00003918: PUSH1 0xa0 0000391a: DUP3 0000391b: ADD 0000391c: SWAP4 0000391d: SWAP1 0000391e: SWAP4 0000391f: MSTORE 00003920: PUSH1 0xc0 00003922: ADD 00003923: MSTORE 00003924: SWAP3 00003925: SWAP2 00003926: POP 00003927: POP 00003928: JUMP 00003929: JUMPDEST 0000392a: PUSH0 0000392b: PUSH1 0x20 0000392d: DUP3 0000392e: DUP5 0000392f: SUB 00003930: SLT 00003931: ISZERO 00003932: PUSH2 0x3939 00003935: JUMPI 00003936: PUSH0 00003937: PUSH0 00003938: REVERT 00003939: JUMPDEST 0000393a: POP 0000393b: MLOAD 0000393c: SWAP2 0000393d: SWAP1 0000393e: POP 0000393f: JUMP 00003940: JUMPDEST 00003941: DUP1 00003942: DUP3 00003943: MUL 00003944: PUSH0 00003945: DUP3 00003946: SLT 00003947: PUSH1 0x01 00003949: PUSH1 0xff 0000394b: SHL 0000394c: DUP5 0000394d: EQ 0000394e: AND 0000394f: ISZERO 00003950: PUSH2 0x395b 00003953: JUMPI 00003954: PUSH2 0x395b 00003957: PUSH2 0x3751 0000395a: JUMP 0000395b: JUMPDEST 0000395c: DUP2 0000395d: DUP2 0000395e: SDIV 0000395f: DUP4 00003960: EQ 00003961: DUP3 00003962: ISZERO 00003963: OR 00003964: PUSH2 0x18db 00003967: JUMPI 00003968: PUSH2 0x18db 0000396b: PUSH2 0x3751 0000396e: JUMP 0000396f: JUMPDEST 00003970: PUSH0 00003971: PUSH1 0x01 00003973: PUSH1 0xff 00003975: SHL 00003976: DUP3 00003977: ADD 00003978: PUSH2 0x3983 0000397b: JUMPI 0000397c: PUSH2 0x3983 0000397f: PUSH2 0x3751 00003982: JUMP 00003983: JUMPDEST 00003984: POP 00003985: PUSH0 00003986: SUB 00003987: SWAP1 00003988: JUMP 00003989: JUMPDEST 0000398a: DUP2 0000398b: DUP2 0000398c: SUB 0000398d: PUSH0 0000398e: DUP4 0000398f: SLT 00003990: DUP1 00003991: ISZERO 00003992: DUP4 00003993: DUP4 00003994: SGT 00003995: AND 00003996: DUP4 00003997: DUP4 00003998: SLT 00003999: DUP3 0000399a: AND 0000399b: OR 0000399c: ISZERO 0000399d: PUSH2 0x39a8 000039a0: JUMPI 000039a1: PUSH2 0x39a8 000039a4: PUSH2 0x3751 000039a7: JUMP 000039a8: JUMPDEST 000039a9: POP 000039aa: SWAP3 000039ab: SWAP2 000039ac: POP 000039ad: POP 000039ae: JUMP 000039af: JUMPDEST 000039b0: PUSH0 000039b1: DUP3 000039b2: PUSH2 0x39bd 000039b5: JUMPI 000039b6: PUSH2 0x39bd 000039b9: PUSH2 0x372a 000039bc: JUMP 000039bd: JUMPDEST 000039be: PUSH1 0x01 000039c0: PUSH1 0xff 000039c2: SHL 000039c3: DUP3 000039c4: EQ 000039c5: PUSH0 000039c6: NOT 000039c7: DUP5 000039c8: EQ 000039c9: AND 000039ca: ISZERO 000039cb: PUSH2 0x39d6 000039ce: JUMPI 000039cf: PUSH2 0x39d6 000039d2: PUSH2 0x3751 000039d5: JUMP 000039d6: JUMPDEST 000039d7: POP 000039d8: SDIV 000039d9: SWAP1 000039da: JUMP 000039db: JUMPDEST 000039dc: SWAP4 000039dd: ISZERO 000039de: ISZERO 000039df: DUP5 000039e0: MSTORE 000039e1: PUSH1 0x20 000039e3: DUP5 000039e4: ADD 000039e5: SWAP3 000039e6: SWAP1 000039e7: SWAP3 000039e8: MSTORE 000039e9: PUSH1 0x40 000039eb: DUP4 000039ec: ADD 000039ed: MSTORE 000039ee: PUSH1 0x01 000039f0: PUSH1 0x01 000039f2: PUSH1 0xa0 000039f4: SHL 000039f5: SUB 000039f6: AND 000039f7: PUSH1 0x60 000039f9: DUP3 000039fa: ADD 000039fb: MSTORE 000039fc: PUSH1 0x80 000039fe: ADD 000039ff: SWAP1 00003a00: JUMP 00003a01: JUMPDEST 00003a02: PUSH1 0x20 00003a04: DUP1 00003a05: DUP3 00003a06: MSTORE 00003a07: PUSH1 0x01 00003a09: SWAP1 00003a0a: DUP3 00003a0b: ADD 00003a0c: MSTORE 00003a0d: PUSH1 0x79 00003a0f: PUSH1 0xf8 00003a11: SHL 00003a12: PUSH1 0x40 00003a14: DUP3 00003a15: ADD 00003a16: MSTORE 00003a17: PUSH1 0x60 00003a19: ADD 00003a1a: SWAP1 00003a1b: JUMP 00003a1c: JUMPDEST 00003a1d: DUP2 00003a1e: DUP2 00003a1f: SUB 00003a20: DUP2 00003a21: DUP2 00003a22: GT 00003a23: ISZERO 00003a24: PUSH2 0x18db 00003a27: JUMPI 00003a28: PUSH2 0x18db 00003a2b: PUSH2 0x3751 00003a2e: JUMP 00003a2f: JUMPDEST 00003a30: DUP5 00003a31: DUP2 00003a32: MSTORE 00003a33: DUP4 00003a34: PUSH1 0x20 00003a36: DUP3 00003a37: ADD 00003a38: MSTORE 00003a39: PUSH1 0x01 00003a3b: DUP1 00003a3c: PUSH1 0xa0 00003a3e: SHL 00003a3f: SUB 00003a40: DUP4 00003a41: AND 00003a42: PUSH1 0x40 00003a44: DUP3 00003a45: ADD 00003a46: MSTORE 00003a47: PUSH1 0x80 00003a49: PUSH1 0x60 00003a4b: DUP3 00003a4c: ADD 00003a4d: MSTORE 00003a4e: PUSH0 00003a4f: PUSH2 0x3a5b 00003a52: PUSH1 0x80 00003a54: DUP4 00003a55: ADD 00003a56: DUP5 00003a57: PUSH2 0x3820 00003a5a: JUMP 00003a5b: JUMPDEST 00003a5c: SWAP7 00003a5d: SWAP6 00003a5e: POP 00003a5f: POP 00003a60: POP 00003a61: POP 00003a62: POP 00003a63: POP 00003a64: JUMP 00003a65: JUMPDEST 00003a66: PUSH1 0x01 00003a68: PUSH1 0x01 00003a6a: PUSH1 0xa0 00003a6c: SHL 00003a6d: SUB 00003a6e: DUP7 00003a6f: DUP2 00003a70: AND 00003a71: DUP3 00003a72: MSTORE 00003a73: DUP6 00003a74: ISZERO 00003a75: ISZERO 00003a76: PUSH1 0x20 00003a78: DUP4 00003a79: ADD 00003a7a: MSTORE 00003a7b: PUSH1 0x40 00003a7d: DUP3 00003a7e: ADD 00003a7f: DUP6 00003a80: SWAP1 00003a81: MSTORE 00003a82: DUP4 00003a83: AND 00003a84: PUSH1 0x60 00003a86: DUP3 00003a87: ADD 00003a88: MSTORE 00003a89: PUSH1 0xa0 00003a8b: PUSH1 0x80 00003a8d: DUP3 00003a8e: ADD 00003a8f: DUP2 00003a90: SWAP1 00003a91: MSTORE 00003a92: PUSH0 00003a93: SWAP1 00003a94: PUSH2 0x2f41 00003a97: SWAP1 00003a98: DUP4 00003a99: ADD 00003a9a: DUP5 00003a9b: PUSH2 0x3820 00003a9e: JUMP 00003a9f: JUMPDEST 00003aa0: PUSH0 00003aa1: PUSH0 00003aa2: PUSH1 0x40 00003aa4: DUP4 00003aa5: DUP6 00003aa6: SUB 00003aa7: SLT 00003aa8: ISZERO 00003aa9: PUSH2 0x3ab0 00003aac: JUMPI 00003aad: PUSH0 00003aae: PUSH0 00003aaf: REVERT 00003ab0: JUMPDEST 00003ab1: POP 00003ab2: POP 00003ab3: DUP1 00003ab4: MLOAD 00003ab5: PUSH1 0x20 00003ab7: SWAP1 00003ab8: SWAP2 00003ab9: ADD 00003aba: MLOAD 00003abb: SWAP1 00003abc: SWAP3 00003abd: SWAP1 00003abe: SWAP2 00003abf: POP 00003ac0: JUMP 00003ac1: JUMPDEST 00003ac2: PUSH0 00003ac3: PUSH0 00003ac4: PUSH1 0x40 00003ac6: DUP4 00003ac7: DUP6 00003ac8: SUB 00003ac9: SLT 00003aca: ISZERO 00003acb: PUSH2 0x3ad2 00003ace: JUMPI 00003acf: PUSH0 00003ad0: PUSH0 00003ad1: REVERT 00003ad2: JUMPDEST 00003ad3: DUP3 00003ad4: CALLDATALOAD 00003ad5: PUSH2 0x3add 00003ad8: DUP2 00003ad9: PUSH2 0x2f4c 00003adc: JUMP 00003add: JUMPDEST 00003ade: SWAP2 00003adf: POP 00003ae0: PUSH2 0x3aeb 00003ae3: PUSH1 0x20 00003ae5: DUP5 00003ae6: ADD 00003ae7: PUSH2 0x2fae 00003aea: JUMP 00003aeb: JUMPDEST 00003aec: SWAP1 00003aed: POP 00003aee: SWAP3 00003aef: POP 00003af0: SWAP3 00003af1: SWAP1 00003af2: POP 00003af3: JUMP 00003af4: JUMPDEST 00003af5: PUSH1 0x20 00003af7: DUP1 00003af8: DUP3 00003af9: MSTORE 00003afa: PUSH1 0x01 00003afc: SWAP1 00003afd: DUP3 00003afe: ADD 00003aff: MSTORE 00003b00: PUSH1 0x6f 00003b02: PUSH1 0xf8 00003b04: SHL 00003b05: PUSH1 0x40 00003b07: DUP3 00003b08: ADD 00003b09: MSTORE 00003b0a: PUSH1 0x60 00003b0c: ADD 00003b0d: SWAP1 00003b0e: JUMP 00003b0f: JUMPDEST 00003b10: DUP1 00003b11: MLOAD 00003b12: PUSH1 0x01 00003b14: PUSH1 0x01 00003b16: PUSH1 0x70 00003b18: SHL 00003b19: SUB 00003b1a: DUP2 00003b1b: AND 00003b1c: DUP2 00003b1d: EQ 00003b1e: PUSH2 0x2fbd 00003b21: JUMPI 00003b22: PUSH0 00003b23: PUSH0 00003b24: REVERT 00003b25: JUMPDEST 00003b26: PUSH0 00003b27: PUSH0 00003b28: PUSH0 00003b29: PUSH1 0x60 00003b2b: DUP5 00003b2c: DUP7 00003b2d: SUB 00003b2e: SLT 00003b2f: ISZERO 00003b30: PUSH2 0x3b37 00003b33: JUMPI 00003b34: PUSH0 00003b35: PUSH0 00003b36: REVERT 00003b37: JUMPDEST 00003b38: PUSH2 0x3b40 00003b3b: DUP5 00003b3c: PUSH2 0x3b0f 00003b3f: JUMP 00003b40: JUMPDEST 00003b41: SWAP3 00003b42: POP 00003b43: PUSH2 0x3b4e 00003b46: PUSH1 0x20 00003b48: DUP6 00003b49: ADD 00003b4a: PUSH2 0x3b0f 00003b4d: JUMP 00003b4e: JUMPDEST 00003b4f: SWAP2 00003b50: POP 00003b51: PUSH1 0x40 00003b53: DUP5 00003b54: ADD 00003b55: MLOAD 00003b56: PUSH4 0xffffffff 00003b5b: DUP2 00003b5c: AND 00003b5d: DUP2 00003b5e: EQ 00003b5f: PUSH2 0x3b66 00003b62: JUMPI 00003b63: PUSH0 00003b64: PUSH0 00003b65: REVERT 00003b66: JUMPDEST 00003b67: DUP1 00003b68: SWAP2 00003b69: POP 00003b6a: POP 00003b6b: SWAP3 00003b6c: POP 00003b6d: SWAP3 00003b6e: POP 00003b6f: SWAP3 00003b70: JUMP 00003b71: INVALID 00003b72: UNKNOWN(0xE7) 00003b73: MCOPY 00003b74: PUSH11 0x3c6a329107482f820d07d0 00003b80: PUSH24 0x77040a1b49129c7f15f9e3a5cb40fd403cad331680b65f6b 00003b99: MCOPY 00003b9a: UNKNOWN(0xC2) 00003b9b: LT 00003b9c: PUSH28 0x85fbb92698a43bf0e51840d116fad068fcaef9f6720d6b5c6c1c0026 00003bb9: DUP3 00003bba: GASPRICE 00003bbb: UNKNOWN(0xB0) 00003bbc: CODECOPY 00003bbd: UNKNOWN(0x23) 00003bbe: EXTCODESIZE 00003bbf: UNKNOWN(0xC9) 00003bc0: UNKNOWN(0xCD) 00003bc1: DUP13 00003bc2: UNKNOWN(0xBD) 00003bc3: GT 00003bc4: SWAP5 00003bc5: KECCAK256 00003bc6: UNKNOWN(0xD7) 00003bc7: SWAP12 00003bc8: UNKNOWN(0xC4) 00003bc9: MOD 00003bca: PUSH18 0xc0d4718ad6b11ddca0b344e6fec63723e5e4 00003bdd: MLOAD 00003bde: ADDRESS 00003bdf: UNKNOWN(0xE9) 00003be0: PUSH5 0xfce5aa952e 00003be6: DUP13 00003be7: SSTORE 00003be8: SWAP8 00003be9: CALLDATASIZE 00003bea: SAR 00003beb: UNKNOWN(0x1F) 00003bec: LOG2 00003bed: LT 00003bee: UNKNOWN(0x4D) 00003bef: UNKNOWN(0x4C) 00003bf0: UNKNOWN(0xB8) 00003bf1: UNKNOWN(0x2A) 00003bf2: PUSH31 0x05ac81e062ea0112b5b3d81ee8149c110f348493d74b645dbe617a05bd55a0 00003c12: SWAP14 00003c13: POP 00003c14: STOP 00003c15: PUSH16 0xe0bd757cd402e12121d03d527ae97cfa 00003c26: UNKNOWN(0x25) 00003c27: MSIZE 00003c28: CALLCODE 00003c29: UNKNOWN(0xC1) 00003c2a: OR 00003c2b: UNKNOWN(0x2A) 00003c2c: UNKNOWN(0xB1) 00003c2d: STATICCALL 00003c2e: UNKNOWN(0xB2) 00003c2f: UNKNOWN(0xD1) 00003c30: MLOAD 00003c31: EXTCODEHASH 00003c32: UNKNOWN(0xD9) 00003c33: RETURNDATASIZE 00003c34: UNKNOWN(0x26) 00003c35: OR 00003c36: PUSH1 0x60 00003c38: SWAP11 00003c39: UNKNOWN(0x2C) 00003c3a: UNKNOWN(0xED) 00003c3b: LOG0 00003c3c: UNKNOWN(0x4C) 00003c3d: SWAP6 00003c3e: STATICCALL 00003c3f: PUSH17 0xda7ca7fdbdf80f0cd3136f4c1a9aca372e 00003c51: MSIZE 00003c52: NOT 00003c53: SHR 00003c54: UNKNOWN(0xF8) 00003c55: UNKNOWN(0xB7) 00003c56: UNKNOWN(0x2C) 00003c57: PUSH1 0x9e 00003c59: UNKNOWN(0xD6) 00003c5a: UNKNOWN(0x1F) 00003c5b: PUSH17 0x536b8b978987763c77ce949fc6bd21841c 00003c6d: GASPRICE 00003c6e: PUSH14 0x402c693d68612cd60b07fb653c3e 00003c7d: UNKNOWN(0xBD) 00003c7e: UNKNOWN(0xEC) 00003c7f: PUSH23 0xc6b04b7e6c6f206bbeeac975655460229b977d0616600d 00003c97: UNKNOWN(0xCF) 00003c98: UNKNOWN(0x2C) 00003c99: TIMESTAMP 00003c9a: SELFBALANCE 00003c9b: UNKNOWN(0xDE) 00003c9c: PUSH16 0xaf8309fe2e70b06b0e50c95bf69ef8ff 00003cad: DUP6 00003cae: PUSH16 0x6498995c0836451b26edf2744061cbf2 00003cbf: UNKNOWN(0x27) 00003cc0: SLT 00003cc1: JUMPI 00003cc2: UNKNOWN(0xE1) 00003cc3: UNKNOWN(0xBC) 00003cc4: REVERT 00003cc5: UNKNOWN(0xB1) 00003cc6: DUP2 00003cc7: UNKNOWN(0x4D) 00003cc8: UNKNOWN(0xE8) 00003cc9: SWAP15 00003cca: UNKNOWN(0xDC) 00003ccb: UNKNOWN(0x0D) 00003ccc: UNKNOWN(0xEF) 00003ccd: PC 00003cce: PUSH9 0x7574480b8ee1e3408a 00003cd8: AND 00003cd9: UNKNOWN(0xC8) 00003cda: UNKNOWN(0x26) 00003cdb: MLOAD 00003cdc: DUP1 00003cdd: SWAP4 00003cde: UNKNOWN(0xC7) 00003cdf: UNKNOWN(0x4F) 00003ce0: PUSH11 0x4f49900d267acb8db04c40 00003cec: SWAP7 00003ced: EQ 00003cee: PUSH20 0xeb6ecccda9cb7ca639091ab2bcbbfc915d049122 00003d03: MCOPY 00003d04: UNKNOWN(0xBE) 00003d05: MUL 00003d06: XOR 00003d07: UNKNOWN(0xA8) 00003d08: UNKNOWN(0xD4) 00003d09: TIMESTAMP 00003d0a: SWAP3 00003d0b: GASLIMIT 00003d0c: SWAP8 00003d0d: UNKNOWN(0x24) 00003d0e: UNKNOWN(0x2B) 00003d0f: UNKNOWN(0xF6) 00003d10: UNKNOWN(0xE2) 00003d11: SHR 00003d12: AND 00003d13: EXTCODECOPY 00003d14: PUSH31 0x89570056a241aa083f138c202da7840752b6bc63cfe7c5a51e8c4a502d5700 00003d34: MSTORE 00003d35: MOD 00003d36: UNKNOWN(0xFC) 00003d37: SWAP11 00003d38: UNKNOWN(0xE2) 00003d39: UNKNOWN(0xFB) 00003d3a: MSIZE 00003d3b: SWAP15 00003d3c: DUP5 00003d3d: UNKNOWN(0x2E) 00003d3e: PUSH30 0xe358d2f5da7d60e34d2ffdc69ebf391bfc93366d1b9e61c1914a0ea2b36c 00003d5d: PUSH10 0x04453f8d4e9d19db4e39 00003d68: UNKNOWN(0xDE) 00003d69: ISZERO 00003d6a: UNKNOWN(0xEC) 00003d6b: UNKNOWN(0xD8) 00003d6c: SLOAD 00003d6d: BASEFEE 00003d6e: UNKNOWN(0x21) 00003d6f: EXP 00003d70: UNKNOWN(0xC0) 00003d71: UNKNOWN(0x2A) 00003d72: UNKNOWN(0xD3) 00003d73: BLOCKHASH 00003d74: UNKNOWN(0x26) 00003d75: DUP13 00003d76: PUSH5 0x5bb9594593 00003d7c: ADDMOD 00003d7d: UNKNOWN(0xD4) 00003d7e: PUSH18 0xf36f52a69048299581b8b204dc2901c93333 00003d91: EXTCODECOPY 00003d92: MCOPY 00003d93: UNKNOWN(0xFB) 00003d94: SWAP2 00003d95: UNKNOWN(0xAA) 00003d96: DIFFICULTY 00003d97: MSTORE8 00003d98: UNKNOWN(0xE2) 00003d99: UNKNOWN(0xDC) 00003d9a: UNKNOWN(0xF9) 00003d9b: UNKNOWN(0xE6) 00003d9c: CREATE2 00003d9d: MSTORE8 00003d9e: SMOD 00003d9f: PUSH6 0x6dfdacdb2d4c 00003da6: RETURNDATASIZE 00003da7: DIV 00003da8: DUP15 00003da9: ORIGIN 00003daa: STATICCALL 00003dab: UNKNOWN(0x21) 00003dac: UNKNOWN(0xB3) 00003dad: TSTORE 00003dae: MCOPY 00003daf: UNKNOWN(0xDF) 00003db0: CALLER 00003db1: SWAP11 00003db2: SSTORE 00003db3: BLOBBASEFEE 00003db4: UNKNOWN(0xEF) 00003db5: GASPRICE 00003db6: LOG1 00003db7: SWAP14 00003db8: UNKNOWN(0xCA) 00003db9: SWAP7 00003dba: EQ 00003dbb: PUSH25 0x1cfa1ec7ae9888ab15c00ff844daa2646970667358221220c3 00003dd5: PUSH24 0xa55f2273419549d253419c5313c109964e15de1ec4c7c506 00003dee: SLT 00003def: UNKNOWN(0xDA) 00003df0: PUSH15
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xb9b4aacd",
"selector": "0xb9b4aacd",
"calldata_variants": [
"0xb9b4aacd",
"0xb9b4aacd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc7137f5e",
"selector": "0xc7137f5e",
"calldata_variants": [
"0xc7137f5e",
"0xc7137f5e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1477062",
"selector": "0xe1477062",
"calldata_variants": [
"0xe1477062",
"0xe14770620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe98d8c3a",
"selector": "0xe98d8c3a",
"calldata_variants": [
"0xe98d8c3a",
"0xe98d8c3a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa461e33",
"selector": "0xfa461e33",
"calldata_variants": [
"0xfa461e33",
"0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x94abab1d",
"selector": "0x94abab1d",
"calldata_variants": [
"0x94abab1d",
"0x94abab1d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x999895db",
"selector": "0x999895db",
"calldata_variants": [
"0x999895db",
"0x999895db0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0000000",
"selector": "0xa0000000",
"calldata_variants": [
"0xa0000000",
"0xa00000000000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 2230,
"type": "msg_sender_eq_const",
"value": 5.210183425326348e+47
},
{
"pc": 15785,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xa36287c5be70b3a3cdcfdebf1a1bd35c1168f684a59e7858a317b60832115779
call_targets:
0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa36287c5be70b3a3cdcfdebf1a1bd35c1168f684a59e7858a317b60832115779",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37"
],
"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": "0xb9b4aacd",
"selector": "0xb9b4aacd",
"calldata_variants": [
"0xb9b4aacd",
"0xb9b4aacd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc7137f5e",
"selector": "0xc7137f5e",
"calldata_variants": [
"0xc7137f5e",
"0xc7137f5e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1477062",
"selector": "0xe1477062",
"calldata_variants": [
"0xe1477062",
"0xe14770620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe98d8c3a",
"selector": "0xe98d8c3a",
"calldata_variants": [
"0xe98d8c3a",
"0xe98d8c3a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa461e33",
"selector": "0xfa461e33",
"calldata_variants": [
"0xfa461e33",
"0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x94abab1d",
"selector": "0x94abab1d",
"calldata_variants": [
"0x94abab1d",
"0x94abab1d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x999895db",
"selector": "0x999895db",
"calldata_variants": [
"0x999895db",
"0x999895db0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0000000",
"selector": "0xa0000000",
"calldata_variants": [
"0xa0000000",
"0xa00000000000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3142,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3632,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3869,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 34,
"guards_detected": [
{
"pc": 2230,
"type": "msg_sender_eq_const",
"value": 5.210183425326348e+47
},
{
"pc": 15785,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 34
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xf4b8f359f0f8fe52acf574f1b84bab6c7e98c968cfb5e224289fcbe0a1e5a6d5
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xf4b8f359f0f8fe52acf574f1b84bab6c7e98c968cfb5e224289fcbe0a1e5a6d5",
"confirmed": false,
"trace_mode": "structLogs",
"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": "0xb9b4aacd",
"selector": "0xb9b4aacd",
"calldata_variants": [
"0xb9b4aacd",
"0xb9b4aacd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc7137f5e",
"selector": "0xc7137f5e",
"calldata_variants": [
"0xc7137f5e",
"0xc7137f5e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1477062",
"selector": "0xe1477062",
"calldata_variants": [
"0xe1477062",
"0xe14770620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe98d8c3a",
"selector": "0xe98d8c3a",
"calldata_variants": [
"0xe98d8c3a",
"0xe98d8c3a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa461e33",
"selector": "0xfa461e33",
"calldata_variants": [
"0xfa461e33",
"0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x94abab1d",
"selector": "0x94abab1d",
"calldata_variants": [
"0x94abab1d",
"0x94abab1d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x999895db",
"selector": "0x999895db",
"calldata_variants": [
"0x999895db",
"0x999895db0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0000000",
"selector": "0xa0000000",
"calldata_variants": [
"0xa0000000",
"0xa00000000000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xa36287c5be70b3a3cdcfdebf1a1bd35c1168f684a59e7858a317b60832115779
call_targets:
0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa36287c5be70b3a3cdcfdebf1a1bd35c1168f684a59e7858a317b60832115779",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37"
],
"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": "0xb9b4aacd",
"selector": "0xb9b4aacd",
"calldata_variants": [
"0xb9b4aacd",
"0xb9b4aacd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc7137f5e",
"selector": "0xc7137f5e",
"calldata_variants": [
"0xc7137f5e",
"0xc7137f5e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1477062",
"selector": "0xe1477062",
"calldata_variants": [
"0xe1477062",
"0xe14770620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe98d8c3a",
"selector": "0xe98d8c3a",
"calldata_variants": [
"0xe98d8c3a",
"0xe98d8c3a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa461e33",
"selector": "0xfa461e33",
"calldata_variants": [
"0xfa461e33",
"0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x94abab1d",
"selector": "0x94abab1d",
"calldata_variants": [
"0x94abab1d",
"0x94abab1d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x999895db",
"selector": "0x999895db",
"calldata_variants": [
"0x999895db",
"0x999895db0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0000000",
"selector": "0xa0000000",
"calldata_variants": [
"0xa0000000",
"0xa00000000000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3142,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3632,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3869,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 34,
"guards_detected": [
{
"pc": 2230,
"type": "msg_sender_eq_const",
"value": 5.210183425326348e+47
},
{
"pc": 15785,
"type": "tx_origin_used"
}
]
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 1
}
|
| 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": 44
}
|
| 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": 24
}
|