dc39f4dd-c3c3-4e8f-b144-c30baee7c884
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 |
|---|---|---|---|---|
| 30262 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 73756 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 73757 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 73758 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 73759 | capability.graph | complete | 1 / 3 | 1 week ago |
| 73760 | detector.run | complete | 1 / 3 | 1 week ago |
| 73761 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1043961] OpenAI Codex v0.77.0 (research preview)
[codex:1043961] --------
[codex:1043961] workdir: /tmp/codex-multi-v1kfmig8
[codex:1043961] model: gpt-5.2-codex
[codex:1043961] provider: openai
[codex:1043961] approval: never
[codex:1043961] sandbox: read-only
[codex:1043961] reasoning effort: xhigh
[codex:1043961] reasoning summaries: auto
[codex:1043961] session id: 019b62a2-a744-71c3-acad-cfae4240f3ac
[codex:1043961] --------
[codex:1043961] user
[codex:1043961] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1043961] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1043961]
[codex:1043961] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1043961]
[codex:1043961] Output MUST be valid JSON matching the provided schema.
[codex:1043961] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1043961] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1043961]
[codex:1043961] Output constraints (IMPORTANT):
[codex:1043961] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1043961] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1043961] mcp startup: no servers
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc ls in /tmp/codex-multi-v1kfmig8 succeeded in 5ms:
[codex:1043961] BYTECODE_BUNDLE.txt
[codex:1043961] codex-output-schema.json
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Reading BYTECODE_BUNDLE.txt**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-v1kfmig8 succeeded in 6ms:
[codex:1043961] Runtime bytecode bundle for best-effort auditing.
[codex:1043961] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1043961]
[codex:1043961] FILE: runtime_bytecode.hex
[codex:1043961] 0x608060405234801561001057600080fd5b50600436106101425760003560e01c80639a013413116100b8578063da58b9661161007c578063da58b9661461029d578063e20056e6146102b0578063ee949a03146102c3578063f4fae995146102d6578063facf8323146102e9578063fb48295d1461030157610142565b80639a01341314610253578063a910657e1461026d578063b91d4f3e14610275578063c54e44eb1461028d578063cbe911d11461029557610142565b806337b688c01161010a57806337b688c0146101ed5780634829e554146102025780634bd834c71461021557806352f3d6a31461022c5780637c826ee91461023457806389a302711461024b57610142565b8063025e7c27146101475780630ffb1b73146101705780632f54bf6e14610194578063318c15e8146101b457806333ea3dc8146101c9575b600080fd5b61015a610155366004611fd9565b610314565b6040516101679190612098565b60405180910390f35b61018361017e366004611fd9565b61033e565b6040516101679594939291906121f8565b6101a76101a2366004611f25565b610379565b60405161016791906122a4565b6101bc61038e565b60405161016791906124f7565b6101dc6101d7366004611fd9565b610394565b60405161016795949392919061216b565b6102006101fb366004611ff1565b61047e565b005b6101bc610210366004612034565b610868565b61021d610885565b60405161016793929190612147565b6101bc6108a1565b61023c6108a8565b6040516101679392919061251f565b61015a6108b4565b61025b6108c3565b604051610167969594939291906121b0565b6101bc610a18565b61027d610a1e565b6040516101679493929190612500565b61015a610a94565b6101bc610aa3565b6102006102ab366004612034565b610aa9565b6102006102be366004611f46565b611096565b6102006102d1366004611f78565b611406565b6101836102e4366004611fd9565b6118df565b6102f161191b565b604051610167949392919061210a565b61020061030f366004612034565b6119a1565b6002818154811061032457600080fd5b6000918252602090912001546001600160a01b0316905081565b600660205260009081526040902080546001820154600283015460048401546005909401546001600160a01b03938416949390921692909185565b60086020526000908152604090205460ff1681565b60005481565b6000818152600560209081526040808320815160c08101835281546001600160a01b0390811682526001830154168185015260028201548184015260038201805484518187028101870190955280855286958695606095879586959094919385890193929083018282801561043257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610414575b5050505050815260200160048201548152602001600582015481525050905080600001519550806020015194508060400151935080606001519250806080015191505091939590929450565b61048733611bf9565b6104ac5760405162461bcd60e51b81526004016104a3906122ff565b60405180910390fd5b60028411156104cd5760405162461bcd60e51b81526004016104a390612336565b6003546001600160a01b03848116911614806104f657506004546001600160a01b038481169116145b6105125760405162461bcd60e51b81526004016104a3906122d7565b61051b82611bf9565b6105375760405162461bcd60e51b81526004016104a3906123cf565b60006105438186611c1b565b60008581526005602090815260409182902060038101805484518185028101850190955280855291936105b6939092908301828280156105ac57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161058e575b5050505050611d46565b60018101546001600160a01b031661066c5780546001600160a01b03199081166001600160a01b0387811691909117835560018084018054841692881692909217909155600283018590556003830180549182018155600090815260209020018054339216821790554260048301556040517fddc7de7d213588a85d50185ff270cf0a86195f91476a3c64fe0c096d0bd2da0c9161065d9189908990899089908990612242565b60405180910390a15050610862565b600381018054600181018255600091825260209091200180546001600160a01b0319163317905580546001600160a01b039081169086161480156106bf575060018101546001600160a01b038581169116145b80156106ce5750828160020154145b6106ea5760405162461bcd60e51b81526004016104a39061247a565b851580156106fc575060038101546002145b8061071557506001861480156107155750600380820154145b8061072f575060028614801561072f575060038101546004145b1561081e5761073e8684611dbd565b80546001820154600283015460405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb9361077893911691600401612229565b602060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611fb9565b50600086815260056020526040812080546001600160a01b03199081168255600182018054909116905560028101829055906108096003830182611ed4565b50600060048201819055600590910155600191505b7fddc7de7d213588a85d50185ff270cf0a86195f91476a3c64fe0c096d0bd2da0c33878787878760405161085796959493929190612242565b60405180910390a150505b50505050565b600760209081526000928352604080842090915290825290205481565b600d54600e546010546001600160a01b03928316929091169083565b6201518081565b600954600a54600c5483565b6004546001600160a01b031681565b6000808052600660209081526040805160c0810182526000805160206125b683398151915280546001600160a01b0390811683527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f95416828501527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa54828401527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb80548451818702810187019095528085528695869560609587958695869592949193858a019390928301828280156109c657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109a8575b5050505050815260200160048201548152602001600582015481525050905080600001519650806020015195508060400151945080606001519350806080015192508060a00151915050909192939495565b61038481565b600954600a54600b8054604080516020808402820181019092528281526060936000939192909190830182828015610a7f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a61575b50505050509150600960030154905090919293565b6003546001600160a01b031681565b60015481565b610ab233611bf9565b610ace5760405162461bcd60e51b81526004016104a3906122ff565b6002821115610aef5760405162461bcd60e51b81526004016104a3906124cf565b81610d0b576002811115610b155760405162461bcd60e51b81526004016104a390612336565b600081815260056020526040902060018101546001600160a01b0316610b4d5760405162461bcd60e51b81526004016104a3906123a1565b60005b6003820154811015610cac57336001600160a01b0316826003018281548110610b8957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610c9a576003820154610bb59060019061256d565b8114610c5657600382018054610bcd9060019061256d565b81548110610beb57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546003830180546001600160a01b039092169183908110610c2757634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b81600301805480610c7757634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555b80610ca481612584565b915050610b50565b506003810154610d0557600082815260056020526040812080546001600160a01b0319908116825560018201805490911690556002810182905590610cf46003830182611ed4565b506000600482018190556005909101555b50611092565b6001821415610ed957801580610d215750600181145b610d3d5760405162461bcd60e51b81526004016104a390612336565b600a54610d5c5760405162461bcd60e51b81526004016104a3906124a7565b60005b600b54811015610ea957600b805433919083908110610d8e57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610e9757600b54610db89060019061256d565b8114610e5557600b8054610dce9060019061256d565b81548110610dec57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600b80546001600160a01b039092169183908110610e2657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600b805480610e7457634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555b80610ea181612584565b915050610d5f565b50600b54610ed45760006009818155600a82905590610ec9600b82611ed4565b600382016000905550505b611092565b600282141561109257600d546001600160a01b0316610f0a5760405162461bcd60e51b81526004016104a3906122af565b60005b600f5481101561105757600f805433919083908110610f3c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561104557600f54610f669060019061256d565b811461100357600f8054610f7c9060019061256d565b81548110610f9a57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b039092169183908110610fd457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600f80548061102257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555b8061104f81612584565b915050610f0d565b50600f5461109257600d80546001600160a01b03199081168255600e805490911690556000611087600f82611ed4565b600382016000905550505b5050565b61109f33611bf9565b6110bb5760405162461bcd60e51b81526004016104a3906122ff565b6110c58282611e77565b6001600160a01b0381166110eb5760405162461bcd60e51b81526004016104a3906123ff565b60006110f960026000611c1b565b61115d600d6002018054806020026020016040519081016040528092919081815260200182805480156105ac576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161058e575050505050611d46565b600f5461121757600d80546001600160a01b03199081166001600160a01b0386811691909117909255600e8054821692851692909217909155600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805433921682179055426010556040517f4de1da2ebb8ff99f26de086191d18cf7fef6f4cd6ce5c2b553278ec98b24425191611209918690869086906120ac565b60405180910390a150611092565b600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03191633179055600d546001600160a01b039081169084161480156112845750600e546001600160a01b038381169116145b6112a05760405162461bcd60e51b81526004016104a39061247a565b600f54600314156113c45760005b60025481101561138d57600d54600280546001600160a01b0390921691839081106112e957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561137b57826002828154811061132657634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055600d5483168252600890526040808220805460ff1990811690915592861682529020805490911660011790555b8061138581612584565b9150506112ae565b50600d80546001600160a01b03199081168255600e8054909116905560006113b6600f82611ed4565b506000600391909101555060015b7f4de1da2ebb8ff99f26de086191d18cf7fef6f4cd6ce5c2b553278ec98b244251338484846040516113f994939291906120ac565b60405180910390a1505050565b61140f33611bf9565b61142b5760405162461bcd60e51b81526004016104a3906122ff565b6003546001600160a01b0385811691161480159061145757506004546001600160a01b03858116911614155b6114735760405162461bcd60e51b81526004016104a3906122d7565b61147c83611bf9565b6114985760405162461bcd60e51b81526004016104a3906123cf565b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fc546000805160206125b68339815191529080158015906114ec57506103846114ea824261256d565b115b156115a257600080805260066020526000805160206125b683398151915280546001600160a01b031990811682557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9805490911690557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa829055906115917f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb82611ed4565b506000600482018190556005909101555b6000611607836003018054806020026020016040519081016040528092919081815260200182805480156105ac576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161058e575050505050611d46565b60018301546001600160a01b03166116c35782546001600160a01b03199081166001600160a01b03898116919091178555600180860180548416928a169290921790915560028501879055600385018054918201815560009081526020902001805433921682179055426004850155600584018590556040517f1f47622f5d505acde2babf8610db5c24be9279be61c3c5ce5949fa41e51eb2f3916116b3918a908a908a9087906120d6565b60405180910390a1505050610862565b82546001600160a01b0388811691161480156116ee575060018301546001600160a01b038781169116145b80156116fd5750848360020154145b801561170c5750838360050154145b6117285760405162461bcd60e51b81526004016104a39061247a565b600380840180546001810182556000828152602090200180546001600160a01b031916331790555414156118975782546001840154600285015460405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb9361179093911691600401612229565b602060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e29190611fb9565b50600080805260066020526000805160206125b683398151915280546001600160a01b031990811682557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9805490911690557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa829055906118837f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb82611ed4565b506000600482018190556005909101555060015b7f1f47622f5d505acde2babf8610db5c24be9279be61c3c5ce5949fa41e51eb2f333888888856040516118ce9594939291906120d6565b60405180910390a150505050505050565b6005602081905260009182526040909120805460018201546002830154600484015493909401546001600160a01b039283169492909116929085565b600d54600e54600f8054604080516020808402820181019092528281526001600160a01b039586169590941693606093600093919290919083018282801561198c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161196e575b50505050509150600d60030154905090919293565b6119aa33611bf9565b6119c65760405162461bcd60e51b81526004016104a3906122ff565b8115806119d35750600182145b6119ef5760405162461bcd60e51b81526004016104a390612336565b60008111611a0f5760405162461bcd60e51b81526004016104a3906124a7565b6000611a1c600184611c1b565b611a8060096002018054806020026020016040519081016040528092919081815260200182805480156105ac576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161058e575050505050611d46565b600b54611b0e576009839055600a829055600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319163390811790915542600c556040517f6692196c862e8fb6ee9b07e8efc6f64d1c5903ff560277952d7d19dad7aff7bf916112099186908690869061227c565b600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319163317905560095483148015611b625750600a5482145b611b7e5760405162461bcd60e51b81526004016104a39061247a565b600b5460031415611bc45782611b98576000829055611b9e565b60018290555b60006009818155600a82905590611bb6600b82611ed4565b506000600391909101555060015b7f6692196c862e8fb6ee9b07e8efc6f64d1c5903ff560277952d7d19dad7aff7bf338484846040516113f9949392919061227c565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b81611c905760008181526005602052604090206004015480611c3d5750611092565b610384611c4a824261256d565b1115611c8e57600082815260056020526040812080546001600160a01b0319908116825560018201805490911690556002810182905590610cf46003830182611ed4565b505b6001821415611ce457600c5480611ca75750611092565b610384611cb4824261256d565b1115611ce25760006009818155600a82905590611cd2600b82611ed4565b6003820160009055505050611092565b505b60028214156110925760105480611cfb5750611092565b610384611d08824261256d565b1115611d4157600d80546001600160a01b03199081168255600e805490911690556000611d36600f82611ed4565b600382016000905550505b505050565b60005b815181101561109257336001600160a01b0316828281518110611d7c57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161415611dab5760405162461bcd60e51b81526004016104a39061242e565b80611db581612584565b915050611d49565b6002821415611dcb57611092565b6000611dda620151804261254d565b600084815260076020908152604080832084845290915281205491925090611e03908490612535565b905083611e2c57600054811115611e2c5760405162461bcd60e51b81526004016104a39061245b565b6001841415611e5757600154811115611e575760405162461bcd60e51b81526004016104a39061245b565b600084815260076020908152604080832094835293905291909120555050565b6001600160a01b03821660009081526008602052604090205460ff168015611eb857506001600160a01b03811660009081526008602052604090205460ff16155b6110925760405162461bcd60e51b81526004016104a39061235e565b5080546000825590600052602060002090810190611ef29190611ef5565b50565b5b80821115611f0a5760008155600101611ef6565b5090565b80356001600160a01b0381168114611c1657600080fd5b600060208284031215611f36578081fd5b611f3f82611f0e565b9392505050565b60008060408385031215611f58578081fd5b611f6183611f0e565b9150611f6f60208401611f0e565b90509250929050565b60008060008060808587031215611f8d578182fd5b611f9685611f0e565b9350611fa460208601611f0e565b93969395505050506040820135916060013590565b600060208284031215611fca578081fd5b81518015158114611f3f578182fd5b600060208284031215611fea578081fd5b5035919050565b60008060008060808587031215612006578384fd5b8435935061201660208601611f0e565b925061202460408601611f0e565b9396929550929360600135925050565b60008060408385031215612046578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561208d5781516001600160a01b031687529582019590820190600101612068565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b0385811682528416602082015260806040820181905260009061213690830185612055565b905082606083015295945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061219e90830185612055565b90508260808301529695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906121e390830186612055565b60808301949094525060a00152949350505050565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0396871681526020810195909552928516604085015293166060830152608082019290925290151560a082015260c00190565b6001600160a01b03949094168452602084019290925260408301521515606082015260800190565b901515815260200190565b6020808252600e908201526d20b13737b936b0b61037bbb732b960911b604082015260600190565b6020808252600e908201526d20b13737b936b0b6103a37b5b2b760911b604082015260600190565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252600e908201526d41626e6f726d616c20737461676560901b604082015260600190565b60208082526023908201527f4f6c642061646472657373206f72204e657720616464726573732061626e6f726040820152621b585b60ea1b606082015260800190565b60208082526014908201527320b13737b936b0b6103a3930b739b0b1ba34b7b760611b604082015260600190565b602080825260169082015275546f2069732061626e6f726d616c206164647265737360501b604082015260600190565b6020808252601590820152744f776e6572206973207a65726f206164647265737360581b604082015260600190565b6020808252601390820152724475706c6963617465207369676e617475726560681b604082015260600190565b60208082526005908201526451756f746160d81b604082015260600190565b60208082526013908201527229b4b3b730ba3ab9329022bc31b2b83a34b7b760691b604082015260600190565b6020808252600e908201526d41626e6f726d616c2071756f746160901b604082015260600190565b6020808252600e908201526d41626e6f726d616c20737461746560901b604082015260600190565b90815260200190565b6000858252846020830152608060408301526121366080830185612055565b9283526020830191909152604082015260600190565b600082198211156125485761254861259f565b500190565b60008261256857634e487b7160e01b81526012600452602481fd5b500490565b60008282101561257f5761257f61259f565b500390565b60006000198214156125985761259861259f565b5060010190565b634e487b7160e01b600052601160045260246000fdfe54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8a2646970667358221220c4fe4cfb85c77d63c740d75d33720e0e3caaed806fc05b150a003a5c9f5dce6d64736f6c63430008010033
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Evaluating bytecode for security patterns**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] import re
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1043961] # extract hex string after 'FILE: runtime_bytecode.hex'
[codex:1043961] match=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1043961] if not match:
[codex:1043961] raise SystemExit('hex not found')
[codex:1043961] hexstr=match.group(1)[2:]
[codex:1043961] # remove metadata? keep all
[codex:1043961] b=bytes.fromhex(hexstr)
[codex:1043961] # opcode table for push
[codex:1043961] opnames={
[codex:1043961] 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:1043961] 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:1043961] 0x20:'SHA3',
[codex:1043961] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1043961] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1043961] 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:1043961] 0x60:'PUSH1',
[codex:1043961] }
[codex:1043961] for i in range(1,33):
[codex:1043961] opnames[0x5f+i]=f'PUSH{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x7f+i]=f'DUP{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x8f+i]=f'SWAP{i}'
[codex:1043961] for i in range(0,5):
[codex:1043961] opnames[0xa0+i]=f'LOG{i}'
[codex:1043961] # count opcodes, and record positions of certain ones
[codex:1043961] ops_count={}
[codex:1043961] positions={}
[codex:1043961] interesting={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xf0:'CREATE',0xff:'SELFDESTRUCT',0xfa:'STATICCALL',0xf3:'RETURN',0xfd:'REVERT'}
[codex:1043961]
[codex:1043961] i=0
[codex:1043961] while i < len(b):
[codex:1043961] op=b[i]
[codex:1043961] ops_count[op]=ops_count.get(op,0)+1
[codex:1043961] if op in interesting:
[codex:1043961] positions.setdefault(op,[]).append(i)
[codex:1043961] # handle push
[codex:1043961] if 0x60 <= op <= 0x7f:
[codex:1043961] n=op-0x5f
[codex:1043961] i+=1+n
[codex:1043961] else:
[codex:1043961] i+=1
[codex:1043961]
[codex:1043961] print('len',len(b))
[codex:1043961] for op, name in interesting.items():
[codex:1043961] print(name, len(positions.get(op,[])))
[codex:1043961] # list any ORIGIN
[codex:1043961] print('ORIGIN count', ops_count.get(0x32,0))
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 42ms:
[codex:1043961] len 9739
[codex:1043961] CALL 2
[codex:1043961] CALLCODE 0
[codex:1043961] DELEGATECALL 0
[codex:1043961] CREATE2 0
[codex:1043961] CREATE 0
[codex:1043961] SELFDESTRUCT 0
[codex:1043961] STATICCALL 0
[codex:1043961] RETURN 1
[codex:1043961] REVERT 34
[codex:1043961] ORIGIN count 0
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Analyzing external calls for reentrancy risk**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] import re
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1043961] match=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1043961] hexstr=match.group(1)[2:]
[codex:1043961] b=bytes.fromhex(hexstr)
[codex:1043961] # disassemble with positions
[codex:1043961] opnames={
[codex:1043961] 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:1043961] 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:1043961] 0x20:'SHA3',
[codex:1043961] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1043961] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1043961] 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:1043961] 0x60:'PUSH1',
[codex:1043961] }
[codex:1043961] for i in range(1,33):
[codex:1043961] opnames[0x5f+i]=f'PUSH{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x7f+i]=f'DUP{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x8f+i]=f'SWAP{i}'
[codex:1043961] for i in range(0,5):
[codex:1043961] opnames[0xa0+i]=f'LOG{i}'
[codex:1043961] # get list of ops with positions
[codex:1043961] ops=[]
[codex:1043961]
[codex:1043961] i=0
[codex:1043961] while i < len(b):
[codex:1043961] op=b[i]
[codex:1043961] name=opnames.get(op, f'OP_{op:02x}')
[codex:1043961] if 0x60 <= op <= 0x7f:
[codex:1043961] n=op-0x5f
[codex:1043961] data=b[i+1:i+1+n]
[codex:1043961] ops.append((i, name, data.hex()))
[codex:1043961] i+=1+n
[codex:1043961] else:
[codex:1043961] ops.append((i, name, None))
[codex:1043961] i+=1
[codex:1043961]
[codex:1043961] # find CALL positions
[codex:1043961] call_positions=[pos for pos,name,_ in ops if name=='CALL']
[codex:1043961] print('CALL positions', call_positions)
[codex:1043961] # print window of ops around each call
[codex:1043961] for pos in call_positions:
[codex:1043961] # find index
[codex:1043961] idx=next(i for i,(p,_,__) in enumerate(ops) if p==pos)
[codex:1043961] start=max(0, idx-20)
[codex:1043961] end=min(len(ops), idx+20)
[codex:1043961] print('\\nAround CALL at', pos)
[codex:1043961] for p,name,data in ops[start:end]:
[codex:1043961] if data is not None:
[codex:1043961] print(f'{p:06x}: {name} {data}')
[codex:1043961] else:
[codex:1043961] print(f'{p:06x}: {name}')
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 36ms:
[codex:1043961] CALL positions []
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Updating opcode name handling**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] import re
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1043961] match=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1043961] hexstr=match.group(1)[2:]
[codex:1043961] b=bytes.fromhex(hexstr)
[codex:1043961] # opcode table
[codex:1043961] opnames={
[codex:1043961] 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:1043961] 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:1043961] 0x20:'SHA3',
[codex:1043961] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1043961] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1043961] 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:1043961] 0x60:'PUSH1',
[codex:1043961] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',
[codex:1043961] }
[codex:1043961] for i in range(1,33):
[codex:1043961] opnames[0x5f+i]=f'PUSH{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x7f+i]=f'DUP{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x8f+i]=f'SWAP{i}'
[codex:1043961] for i in range(0,5):
[codex:1043961] opnames[0xa0+i]=f'LOG{i}'
[codex:1043961]
[codex:1043961] ops=[]
[codex:1043961]
[codex:1043961] i=0
[codex:1043961] while i < len(b):
[codex:1043961] op=b[i]
[codex:1043961] name=opnames.get(op, f'OP_{op:02x}')
[codex:1043961] if 0x60 <= op <= 0x7f:
[codex:1043961] n=op-0x5f
[codex:1043961] data=b[i+1:i+1+n]
[codex:1043961] ops.append((i, name, data.hex()))
[codex:1043961] i+=1+n
[codex:1043961] else:
[codex:1043961] ops.append((i, name, None))
[codex:1043961] i+=1
[codex:1043961]
[codex:1043961] call_positions=[pos for pos,name,_ in ops if name=='CALL']
[codex:1043961] print('CALL positions', call_positions)
[codex:1043961] for pos in call_positions:
[codex:1043961] idx=next(i for i,(p,_,__) in enumerate(ops) if p==pos)
[codex:1043961] start=max(0, idx-25)
[codex:1043961] end=min(len(ops), idx+25)
[codex:1043961] print('\\nAround CALL at', hex(pos))
[codex:1043961] for p,name,data in ops[start:end]:
[codex:1043961] if data is not None:
[codex:1043961] print(f'{p:06x}: {name} {data}')
[codex:1043961] else:
[codex:1043961] print(f'{p:06x}: {name}')
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 33ms:
[codex:1043961] CALL positions [1941, 6061]
[codex:1043961]
[codex:1043961] Around CALL at 0x795
[codex:1043961] 000774: PUSH2 2229
[codex:1043961] 000777: JUMP
[codex:1043961] 000778: JUMPDEST
[codex:1043961] 000779: PUSH1 20
[codex:1043961] 00077b: PUSH1 40
[codex:1043961] 00077d: MLOAD
[codex:1043961] 00077e: DUP1
[codex:1043961] 00077f: DUP4
[codex:1043961] 000780: SUB
[codex:1043961] 000781: DUP2
[codex:1043961] 000782: PUSH1 00
[codex:1043961] 000784: DUP8
[codex:1043961] 000785: DUP1
[codex:1043961] 000786: EXTCODESIZE
[codex:1043961] 000787: ISZERO
[codex:1043961] 000788: DUP1
[codex:1043961] 000789: ISZERO
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Analyzing post-call state updates**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] import re
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1043961] match=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1043961] hexstr=match.group(1)[2:]
[codex:1043961] b=bytes.fromhex(hexstr)
[codex:1043961] # opnames
[codex:1043961] opnames={
[codex:1043961] 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:1043961] 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:1043961] 0x20:'SHA3',
[codex:1043961] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1043961] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1043961] 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:1043961] 0x60:'PUSH1',
[codex:1043961] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',
[codex:1043961] }
[codex:1043961] for i in range(1,33):
[codex:1043961] opnames[0x5f+i]=f'PUSH{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x7f+i]=f'DUP{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x8f+i]=f'SWAP{i}'
[codex:1043961] for i in range(0,5):
[codex:1043961] opnames[0xa0+i]=f'LOG{i}'
[codex:1043961]
[codex:1043961] # disassemble
[codex:1043961] ops=[]
[codex:1043961]
[codex:1043961] i=0
[codex:1043961] while i < len(b):
[codex:1043961] op=b[i]
[codex:1043961] name=opnames.get(op, f'OP_{op:02x}')
[codex:1043961] if 0x60 <= op <= 0x7f:
[codex:1043961] n=op-0x5f
[codex:1043961] data=b[i+1:i+1+n]
[codex:1043961] ops.append((i, name, data.hex()))
[codex:1043961] i+=1+n
[codex:1043961] else:
[codex:1043961] ops.append((i, name, None))
[codex:1043961] i+=1
[codex:1043961]
[codex:1043961] call_positions=[pos for pos,name,_ in ops if name=='CALL']
[codex:1043961] for pos in call_positions:
[codex:1043961] idx=next(i for i,(p,_,__) in enumerate(ops) if p==pos)
[codex:1043961] print('\\nCALL at', hex(pos))
[codex:1043961] # print next 80 ops
[codex:1043961] for p,name,data in ops[idx:idx+120]:
[codex:1043961] if data is not None:
[codex:1043961] print(f'{p:06x}: {name} {data}')
[codex:1043961] else:
[codex:1043961] print(f'{p:06x}: {name}')
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 36ms:
[codex:1043961]
[codex:1043961] CALL at 0x795
[codex:1043961] 000795: CALL
[codex:1043961] 000796: ISZERO
[codex:1043961] 000797: DUP1
[codex:1043961] 000798: ISZERO
[codex:1043961] 000799: PUSH2 07a6
[codex:1043961] 00079c: JUMPI
[codex:1043961] 00079d: RETURNDATASIZE
[codex:1043961] 00079e: PUSH1 00
[codex:1043961] 0007a0: DUP1
[codex:1043961] 0007a1: RETURNDATACOPY
[codex:1043961] 0007a2: RETURNDATASIZE
[codex:1043961] 0007a3: PUSH1 00
[codex:1043961] 0007a5: REVERT
[codex:1043961] 0007a6: JUMPDEST
[codex:1043961] 0007a7: POP
[codex:1043961] 0007a8: POP
[codex:1043961] 0007a9: POP
[codex:1043961] 0007aa: POP
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Analyzing potential reentrancy risk**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc 'nl -ba BYTECODE_BUNDLE.txt' in /tmp/codex-multi-v1kfmig8 succeeded in 6ms:
[codex:1043961] 1 Runtime bytecode bundle for best-effort auditing.
[codex:1043961] 2 Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1043961] 3
[codex:1043961] 4 FILE: runtime_bytecode.hex
[codex:1043961] 5 0x608060405234801561001057600080fd5b50600436106101425760003560e01c80639a013413116100b8578063da58b9661161007c578063da58b9661461029d578063e20056e6146102b0578063ee949a03146102c3578063f4fae995146102d6578063facf8323146102e9578063fb48295d1461030157610142565b80639a01341314610253578063a910657e1461026d578063b91d4f3e14610275578063c54e44eb1461028d578063cbe911d11461029557610142565b806337b688c01161010a57806337b688c0146101ed5780634829e554146102025780634bd834c71461021557806352f3d6a31461022c5780637c826ee91461023457806389a302711461024b57610142565b8063025e7c27146101475780630ffb1b73146101705780632f54bf6e14610194578063318c15e8146101b457806333ea3dc8146101c9575b600080fd5b61015a610155366004611fd9565b610314565b6040516101679190612098565b60405180910390f35b61018361017e366004611fd9565b61033e565b6040516101679594939291906121f8565b6101a76101a2366004611f25565b610379565b60405161016791906122a4565b6101bc61038e565b60405161016791906124f7565b6101dc6101d7366004611fd9565b610394565b60405161016795949392919061216b565b6102006101fb366004611ff1565b61047e565b005b6101bc610210366004612034565b610868565b61021d610885565b60405161016793929190612147565b6101bc6108a1565b61023c6108a8565b6040516101679392919061251f565b61015a6108b4565b61025b6108c3565b604051610167969594939291906121b0565b6101bc610a18565b61027d610a1e565b6040516101679493929190612500565b61015a610a94565b6101bc610aa3565b6102006102ab366004612034565b610aa9565b6102006102be366004611f46565b611096565b6102006102d1366004611f78565b611406565b6101836102e4366004611fd9565b6118df565b6102f161191b565b604051610167949392919061210a565b61020061030f366004612034565b6119a1565b6002818154811061032457600080fd5b6000918252602090912001546001600160a01b0316905081565b600660205260009081526040902080546001820154600283015460048401546005909401546001600160a01b03938416949390921692909185565b60086020526000908152604090205460ff1681565b60005481565b6000818152600560209081526040808320815160c08101835281546001600160a01b0390811682526001830154168185015260028201548184015260038201805484518187028101870190955280855286958695606095879586959094919385890193929083018282801561043257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610414575b5050505050815260200160048201548152602001600582015481525050905080600001519550806020015194508060400151935080606001519250806080015191505091939590929450565b61048733611bf9565b6104ac5760405162461bcd60e51b81526004016104a3906122ff565b60405180910390fd5b60028411156104cd5760405162461bcd60e51b81526004016104a390612336565b6003546001600160a01b03848116911614806104f657506004546001600160a01b038481169116145b6105125760405162461bcd60e51b81526004016104a3906122d7565b61051b82611bf9565b6105375760405162461bcd60e51b81526004016104a3906123cf565b60006105438186611c1b565b60008581526005602090815260409182902060038101805484518185028101850190955280855291936105b6939092908301828280156105ac57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161058e575b5050505050611d46565b60018101546001600160a01b031661066c5780546001600160a01b03199081166001600160a01b0387811691909117835560018084018054841692881692909217909155600283018590556003830180549182018155600090815260209020018054339216821790554260048301556040517fddc7de7d213588a85d50185ff270cf0a86195f91476a3c64fe0c096d0bd2da0c9161065d9189908990899089908990612242565b60405180910390a15050610862565b600381018054600181018255600091825260209091200180546001600160a01b0319163317905580546001600160a01b039081169086161480156106bf575060018101546001600160a01b038581169116145b80156106ce5750828160020154145b6106ea5760405162461bcd60e51b81526004016104a39061247a565b851580156106fc575060038101546002145b8061071557506001861480156107155750600380820154145b8061072f575060028614801561072f575060038101546004145b1561081e5761073e8684611dbd565b80546001820154600283015460405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb9361077893911691600401612229565b602060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611fb9565b50600086815260056020526040812080546001600160a01b03199081168255600182018054909116905560028101829055906108096003830182611ed4565b50600060048201819055600590910155600191505b7fddc7de7d213588a85d50185ff270cf0a86195f91476a3c64fe0c096d0bd2da0c33878787878760405161085796959493929190612242565b60405180910390a150505b50505050565b600760209081526000928352604080842090915290825290205481565b600d54600e546010546001600160a01b03928316929091169083565b6201518081565b600954600a54600c5483565b6004546001600160a01b031681565b6000808052600660209081526040805160c0810182526000805160206125b683398151915280546001600160a01b0390811683527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f95416828501527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa54828401527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb80548451818702810187019095528085528695869560609587958695869592949193858a019390928301828280156109c657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109a8575b5050505050815260200160048201548152602001600582015481525050905080600001519650806020015195508060400151945080606001519350806080015192508060a00151915050909192939495565b61038481565b600954600a54600b8054604080516020808402820181019092528281526060936000939192909190830182828015610a7f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a61575b50505050509150600960030154905090919293565b6003546001600160a01b031681565b60015481565b610ab233611bf9565b610ace5760405162461bcd60e51b81526004016104a3906122ff565b6002821115610aef5760405162461bcd60e51b81526004016104a3906124cf565b81610d0b576002811115610b155760405162461bcd60e51b81526004016104a390612336565b600081815260056020526040902060018101546001600160a01b0316610b4d5760405162461bcd60e51b81526004016104a3906123a1565b60005b6003820154811015610cac57336001600160a01b0316826003018281548110610b8957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610c9a576003820154610bb59060019061256d565b8114610c5657600382018054610bcd9060019061256d565b81548110610beb57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546003830180546001600160a01b039092169183908110610c2757634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b81600301805480610c7757634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555b80610ca481612584565b915050610b50565b506003810154610d0557600082815260056020526040812080546001600160a01b0319908116825560018201805490911690556002810182905590610cf46003830182611ed4565b506000600482018190556005909101555b50611092565b6001821415610ed957801580610d215750600181145b610d3d5760405162461bcd60e51b81526004016104a390612336565b600a54610d5c5760405162461bcd60e51b81526004016104a3906124a7565b60005b600b54811015610ea957600b805433919083908110610d8e57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610e9757600b54610db89060019061256d565b8114610e5557600b8054610dce9060019061256d565b81548110610dec57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600b80546001600160a01b039092169183908110610e2657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600b805480610e7457634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555b80610ea181612584565b915050610d5f565b50600b54610ed45760006009818155600a82905590610ec9600b82611ed4565b600382016000905550505b611092565b600282141561109257600d546001600160a01b0316610f0a5760405162461bcd60e51b81526004016104a3906122af565b60005b600f5481101561105757600f805433919083908110610f3c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561104557600f54610f669060019061256d565b811461100357600f8054610f7c9060019061256d565b81548110610f9a57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b039092169183908110610fd457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600f80548061102257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555b8061104f81612584565b915050610f0d565b50600f5461109257600d80546001600160a01b03199081168255600e805490911690556000611087600f82611ed4565b600382016000905550505b5050565b61109f33611bf9565b6110bb5760405162461bcd60e51b81526004016104a3906122ff565b6110c58282611e77565b6001600160a01b0381166110eb5760405162461bcd60e51b81526004016104a3906123ff565b60006110f960026000611c1b565b61115d600d6002018054806020026020016040519081016040528092919081815260200182805480156105ac576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161058e575050505050611d46565b600f5461121757600d80546001600160a01b03199081166001600160a01b0386811691909117909255600e8054821692851692909217909155600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805433921682179055426010556040517f4de1da2ebb8ff99f26de086191d18cf7fef6f4cd6ce5c2b553278ec98b24425191611209918690869086906120ac565b60405180910390a150611092565b600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03191633179055600d546001600160a01b039081169084161480156112845750600e546001600160a01b038381169116145b6112a05760405162461bcd60e51b81526004016104a39061247a565b600f54600314156113c45760005b60025481101561138d57600d54600280546001600160a01b0390921691839081106112e957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561137b57826002828154811061132657634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055600d5483168252600890526040808220805460ff1990811690915592861682529020805490911660011790555b8061138581612584565b9150506112ae565b50600d80546001600160a01b03199081168255600e8054909116905560006113b6600f82611ed4565b506000600391909101555060015b7f4de1da2ebb8ff99f26de086191d18cf7fef6f4cd6ce5c2b553278ec98b244251338484846040516113f994939291906120ac565b60405180910390a1505050565b61140f33611bf9565b61142b5760405162461bcd60e51b81526004016104a3906122ff565b6003546001600160a01b0385811691161480159061145757506004546001600160a01b03858116911614155b6114735760405162461bcd60e51b81526004016104a3906122d7565b61147c83611bf9565b6114985760405162461bcd60e51b81526004016104a3906123cf565b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fc546000805160206125b68339815191529080158015906114ec57506103846114ea824261256d565b115b156115a257600080805260066020526000805160206125b683398151915280546001600160a01b031990811682557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9805490911690557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa829055906115917f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb82611ed4565b506000600482018190556005909101555b6000611607836003018054806020026020016040519081016040528092919081815260200182805480156105ac576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161058e575050505050611d46565b60018301546001600160a01b03166116c35782546001600160a01b03199081166001600160a01b03898116919091178555600180860180548416928a169290921790915560028501879055600385018054918201815560009081526020902001805433921682179055426004850155600584018590556040517f1f47622f5d505acde2babf8610db5c24be9279be61c3c5ce5949fa41e51eb2f3916116b3918a908a908a9087906120d6565b60405180910390a1505050610862565b82546001600160a01b0388811691161480156116ee575060018301546001600160a01b038781169116145b80156116fd5750848360020154145b801561170c5750838360050154145b6117285760405162461bcd60e51b81526004016104a39061247a565b600380840180546001810182556000828152602090200180546001600160a01b031916331790555414156118975782546001840154600285015460405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb9361179093911691600401612229565b602060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e29190611fb9565b50600080805260066020526000805160206125b683398151915280546001600160a01b031990811682557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9805490911690557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa829055906118837f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb82611ed4565b506000600482018190556005909101555060015b7f1f47622f5d505acde2babf8610db5c24be9279be61c3c5ce5949fa41e51eb2f333888888856040516118ce9594939291906120d6565b60405180910390a150505050505050565b6005602081905260009182526040909120805460018201546002830154600484015493909401546001600160a01b039283169492909116929085565b600d54600e54600f8054604080516020808402820181019092528281526001600160a01b039586169590941693606093600093919290919083018282801561198c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161196e575b50505050509150600d60030154905090919293565b6119aa33611bf9565b6119c65760405162461bcd60e51b81526004016104a3906122ff565b8115806119d35750600182145b6119ef5760405162461bcd60e51b81526004016104a390612336565b60008111611a0f5760405162461bcd60e51b81526004016104a3906124a7565b6000611a1c600184611c1b565b611a8060096002018054806020026020016040519081016040528092919081815260200182805480156105ac576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161058e575050505050611d46565b600b54611b0e576009839055600a829055600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319163390811790915542600c556040517f6692196c862e8fb6ee9b07e8efc6f64d1c5903ff560277952d7d19dad7aff7bf916112099186908690869061227c565b600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319163317905560095483148015611b625750600a5482145b611b7e5760405162461bcd60e51b81526004016104a39061247a565b600b5460031415611bc45782611b98576000829055611b9e565b60018290555b60006009818155600a82905590611bb6600b82611ed4565b506000600391909101555060015b7f6692196c862e8fb6ee9b07e8efc6f64d1c5903ff560277952d7d19dad7aff7bf338484846040516113f9949392919061227c565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b81611c905760008181526005602052604090206004015480611c3d5750611092565b610384611c4a824261256d565b1115611c8e57600082815260056020526040812080546001600160a01b0319908116825560018201805490911690556002810182905590610cf46003830182611ed4565b505b6001821415611ce457600c5480611ca75750611092565b610384611cb4824261256d565b1115611ce25760006009818155600a82905590611cd2600b82611ed4565b6003820160009055505050611092565b505b60028214156110925760105480611cfb5750611092565b610384611d08824261256d565b1115611d4157600d80546001600160a01b03199081168255600e805490911690556000611d36600f82611ed4565b600382016000905550505b505050565b60005b815181101561109257336001600160a01b0316828281518110611d7c57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161415611dab5760405162461bcd60e51b81526004016104a39061242e565b80611db581612584565b915050611d49565b6002821415611dcb57611092565b6000611dda620151804261254d565b600084815260076020908152604080832084845290915281205491925090611e03908490612535565b905083611e2c57600054811115611e2c5760405162461bcd60e51b81526004016104a39061245b565b6001841415611e5757600154811115611e575760405162461bcd60e51b81526004016104a39061245b565b600084815260076020908152604080832094835293905291909120555050565b6001600160a01b03821660009081526008602052604090205460ff168015611eb857506001600160a01b03811660009081526008602052604090205460ff16155b6110925760405162461bcd60e51b81526004016104a39061235e565b5080546000825590600052602060002090810190611ef29190611ef5565b50565b5b80821115611f0a5760008155600101611ef6565b5090565b80356001600160a01b0381168114611c1657600080fd5b600060208284031215611f36578081fd5b611f3f82611f0e565b9392505050565b60008060408385031215611f58578081fd5b611f6183611f0e565b9150611f6f60208401611f0e565b90509250929050565b60008060008060808587031215611f8d578182fd5b611f9685611f0e565b9350611fa460208601611f0e565b93969395505050506040820135916060013590565b600060208284031215611fca578081fd5b81518015158114611f3f578182fd5b600060208284031215611fea578081fd5b5035919050565b60008060008060808587031215612006578384fd5b8435935061201660208601611f0e565b925061202460408601611f0e565b9396929550929360600135925050565b60008060408385031215612046578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561208d5781516001600160a01b031687529582019590820190600101612068565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b0385811682528416602082015260806040820181905260009061213690830185612055565b905082606083015295945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061219e90830185612055565b90508260808301529695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906121e390830186612055565b60808301949094525060a00152949350505050565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0396871681526020810195909552928516604085015293166060830152608082019290925290151560a082015260c00190565b6001600160a01b03949094168452602084019290925260408301521515606082015260800190565b901515815260200190565b6020808252600e908201526d20b13737b936b0b61037bbb732b960911b604082015260600190565b6020808252600e908201526d20b13737b936b0b6103a37b5b2b760911b604082015260600190565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252600e908201526d41626e6f726d616c20737461676560901b604082015260600190565b60208082526023908201527f4f6c642061646472657373206f72204e657720616464726573732061626e6f726040820152621b585b60ea1b606082015260800190565b60208082526014908201527320b13737b936b0b6103a3930b739b0b1ba34b7b760611b604082015260600190565b602080825260169082015275546f2069732061626e6f726d616c206164647265737360501b604082015260600190565b6020808252601590820152744f776e6572206973207a65726f206164647265737360581b604082015260600190565b6020808252601390820152724475706c6963617465207369676e617475726560681b604082015260600190565b60208082526005908201526451756f746160d81b604082015260600190565b60208082526013908201527229b4b3b730ba3ab9329022bc31b2b83a34b7b760691b604082015260600190565b6020808252600e908201526d41626e6f726d616c2071756f746160901b604082015260600190565b6020808252600e908201526d41626e6f726d616c20737461746560901b604082015260600190565b90815260200190565b6000858252846020830152608060408301526121366080830185612055565b9283526020830191909152604082015260600190565b600082198211156125485761254861259f565b500190565b60008261256857634e487b7160e01b81526012600452602481fd5b500490565b60008282101561257f5761257f61259f565b500390565b60006000198214156125985761259861259f565b5060010190565b634e487b7160e01b600052601160045260246000fdfe54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8a2646970667358221220c4fe4cfb85c77d63c740d75d33720e0e3caaed806fc05b150a003a5c9f5dce6d64736f6c63430008010033
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Analyzing bytecode line references and reentrancy**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] import re
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1043961] match=re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:1043961] hexstr=match.group(1)[2:]
[codex:1043961] b=bytes.fromhex(hexstr)
[codex:1043961] # disassemble with positions to op names
[codex:1043961] opnames={
[codex:1043961] 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:1043961] 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:1043961] 0x20:'SHA3',
[codex:1043961] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1043961] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1043961] 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:1043961] 0x60:'PUSH1',
[codex:1043961] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',
[codex:1043961] }
[codex:1043961] for i in range(1,33):
[codex:1043961] opnames[0x5f+i]=f'PUSH{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x7f+i]=f'DUP{i}'
[codex:1043961] for i in range(1,17):
[codex:1043961] opnames[0x8f+i]=f'SWAP{i}'
[codex:1043961] for i in range(0,5):
[codex:1043961] opnames[0xa0+i]=f'LOG{i}'
[codex:1043961]
[codex:1043961] ops=[]
[codex:1043961]
[codex:1043961] i=0
[codex:1043961] while i < len(b):
[codex:1043961] op=b[i]
[codex:1043961] name=opnames.get(op, f'OP_{op:02x}')
[codex:1043961] if 0x60 <= op <= 0x7f:
[codex:1043961] n=op-0x5f
[codex:1043961] data=b[i+1:i+1+n]
[codex:1043961] ops.append((i, name, data.hex()))
[codex:1043961] i+=1+n
[codex:1043961] else:
[codex:1043961] ops.append((i, name, None))
[codex:1043961] i+=1
[codex:1043961]
[codex:1043961] # find JUMPDEST near 0x1fb9
[codex:1043961] for i,(p,name,data) in enumerate(ops):
[codex:1043961] if p==0x1fb9:
[codex:1043961] start=max(0,i-10); end=i+30
[codex:1043961] for p2,n2,d2 in ops[start:end]:
[codex:1043961] if d2 is not None:
[codex:1043961] print(f'{p2:06x}: {n2} {d2}')
[codex:1043961] else:
[codex:1043961] print(f'{p2:06x}: {n2}')
[codex:1043961] break
[codex:1043961] else:
[codex:1043961] print('0x1fb9 not found')
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 35ms:
[codex:1043961] 001fad: PUSH1 40
[codex:1043961] 001faf: DUP3
[codex:1043961] 001fb0: ADD
[codex:1043961] 001fb1: CALLDATALOAD
[codex:1043961] 001fb2: SWAP2
[codex:1043961] 001fb3: PUSH1 60
[codex:1043961] 001fb5: ADD
[codex:1043961] 001fb6: CALLDATALOAD
[codex:1043961] 001fb7: SWAP1
[codex:1043961] 001fb8: JUMP
[codex:1043961] 001fb9: JUMPDEST
[codex:1043961] 001fba: PUSH1 00
[codex:1043961] 001fbc: PUSH1 20
[codex:1043961] 001fbe: DUP3
[codex:1043961] 001fbf: DUP5
[codex:1043961] 001fc0: SUB
[codex:1043961] 001fc1: SLT
[codex:1043961] 001fc2: ISZERO
[codex:1043961] 001fc3: PUSH2 1fca
[codex:1043961] 001fc6: JUMPI
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Analyzing ERC20 call and return value checking**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] import re
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text().splitlines()
[codex:1043961] hexline=text[4]
[codex:1043961] # find first occurrence of a9059cbb
[codex:1043961] idx=hexline.find('63a9059cbb')
[codex:1043961] print('idx',idx)
[codex:1043961] print(hexline[idx-40:idx+120])
[codex:1043961] # find second occurrence maybe later
[codex:1043961] idx2=hexline.find('63a9059cbb', idx+1)
[codex:1043961] print('idx2',idx2)
[codex:1043961] print(hexline[idx2-40:idx2+120])
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 28ms:
[codex:1043961] idx 3742
[codex:1043961] 611dbd565b80546001820154600283015460405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb9361077893911691600401612229565b602060405180830381600087803b158015
[codex:1043961] idx2 3786
[codex:1043961] 059cbb60e01b81526001600160a01b039384169363a9059cbb9361077893911691600401612229565b602060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Searching hexline snippet**
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] text=Path('BYTECODE_BUNDLE.txt').read_text().splitlines()
[codex:1043961] hexline=text[4]
[codex:1043961] idx=hexline.find('5af115')
[codex:1043961] print('idx', idx)
[codex:1043961] print(hexline[idx-60:idx+120])
[codex:1043961] # find second occurrence
[codex:1043961] idx2=hexline.find('5af115', idx+1)
[codex:1043961] print('idx2', idx2)
[codex:1043961] print(hexline[idx2-60:idx2+120])
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 27ms:
[codex:1043961] idx 3882
[codex:1043961] 29565b602060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611fb9565b5060008681
[codex:1043961] idx2 12122
[codex:1043961] 29565b602060405180830381600087803b1580156117aa57600080fd5b505af11580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e29190611fb9565b5060008080
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Extracting bytecode snippets for SSTORE evidence**
[codex:1043961]
[codex:1043961] I'm focusing on snippets from BYTECODE_BUNDLE.txt around `5af115` and the subsequent `55` opcodes to demonstrate external calls followed by SSTORE instructions. I'll extract enough bytes after `5af115` (about 250 characters) to capture these `55` opcodes and will reference line locations from the file to provide clear evidence.
[codex:1043961] exec
[codex:1043961] /bin/bash -lc "python3 - <<'PY'
[codex:1043961] from pathlib import Path
[codex:1043961] hexline=Path('BYTECODE_BUNDLE.txt').read_text().splitlines()[4]
[codex:1043961] idx=hexline.find('5af115')
[codex:1043961] print(hexline[idx:idx+260])
[codex:1043961] print('\\n---\\n')
[codex:1043961] idx2=hexline.find('5af115', idx+1)
[codex:1043961] print(hexline[idx2:idx2+260])
[codex:1043961] PY" in /tmp/codex-multi-v1kfmig8 succeeded in 28ms:
[codex:1043961] 5af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611fb9565b50600086815260056020526040812080546001600160a01b03199081168255600182018054909116905560028101829055906108096003830182611ed4565b506000600482018190556005
[codex:1043961]
[codex:1043961] ---
[codex:1043961]
[codex:1043961] 5af11580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e29190611fb9565b50600080805260066020526000805160206125b683398151915280546001600160a01b031990811682557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9
[codex:1043961]
[codex:1043961] thinking
[codex:1043961] **Summarizing bytecode security findings**
[codex:1043961]
[codex:1043961] I'm preparing a JSON report that outlines two findings based on bytecode patterns at line 5: a medium-severity potential reentrancy risk due to external calls before state updates, and a low-severity unchecked ERC20 transfer return value where the result is discarded before state changes. I’m carefully crafting the evidence from CALL and SSTORE opcodes, respecting best-effort language, and ensuring the final output aligns with the specified JSON schema.
[codex:1043961] codex
[codex:1043961] {"no_findings":false,"summary":"Found two bytecode-level issues: external token transfer calls are followed by state updates (reentrancy window) and the ERC20 transfer return value is decoded but not checked.","findings":[{"severity":"medium","category":"reentrancy","title":"External token CALL before state updates (reentrancy window)","exploit_scenario":"A malicious or hook-enabled token contract called via `a9059cbb` can reenter this contract before the subsequent `SSTORE` updates complete, potentially repeating withdrawals/transfers or corrupting accounting if the function is reentrant.","recommendation":"Move all state updates (effects) before the external CALL, or add a reentrancy guard around the call path.","evidence":"`...63a9059cbb...5af115...5b506000868152...8054...55...55...` shows a CALL (`f1`) to the token transfer selector followed by multiple `SSTORE` (`55`) operations after the call.","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"low","category":"other","title":"ERC20 transfer return value decoded but not enforced","exploit_scenario":"If the token’s `transfer` returns `false` without reverting, the low-level CALL still succeeds and the contract continues to update state, leading to accounting mismatches or loss of funds.","recommendation":"Require the decoded boolean return value to be `true` (or use a SafeERC20-style helper that treats missing return data as success but rejects explicit `false`).","evidence":"`...5af115...6107ca9190611fb9565b50...` shows a CALL followed by a jump to the return-data decoder at `0x1fb9`, then an immediate `POP` (`50`), indicating the boolean return value is discarded before state updates.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
[codex:1043961] tokens used
[codex:1043961] 47,855
[codex:1043961] {"no_findings":false,"summary":"Found two bytecode-level issues: external token transfer calls are followed by state updates (reentrancy window) and the ERC20 transfer return value is decoded but not checked.","findings":[{"severity":"medium","category":"reentrancy","title":"External token CALL before state updates (reentrancy window)","exploit_scenario":"A malicious or hook-enabled token contract called via `a9059cbb` can reenter this contract before the subsequent `SSTORE` updates complete, potentially repeating withdrawals/transfers or corrupting accounting if the function is reentrant.","recommendation":"Move all state updates (effects) before the external CALL, or add a reentrancy guard around the call path.","evidence":"`...63a9059cbb...5af115...5b506000868152...8054...55...55...` shows a CALL (`f1`) to the token transfer selector followed by multiple `SSTORE` (`55`) operations after the call.","locations":["BYTECODE_BUNDLE.txt:5"]},{"severity":"low","category":"other","title":"ERC20 transfer return value decoded but not enforced","exploit_scenario":"If the token’s `transfer` returns `false` without reverting, the low-level CALL still succeeds and the contract continues to update state, leading to accounting mismatches or loss of funds.","recommendation":"Require the decoded boolean return value to be `true` (or use a SafeERC20-style helper that treats missing return data as success but rejects explicit `false`).","evidence":"`...5af115...6107ca9190611fb9565b50...` shows a CALL followed by a jump to the return-data decoder at `0x1fb9`, then an immediate `POP` (`50`), indicating the boolean return value is discarded before state updates.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
{
"codex": {
"ran_at": "2025-12-28T01:50:47.888466+00:00",
"returncode": 0
},
"summary": "Found two bytecode-level issues: external token transfer calls are followed by state updates (reentrancy window) and the ERC20 transfer return value is decoded but not checked.",
"raw_final": {
"summary": "Found two bytecode-level issues: external token transfer calls are followed by state updates (reentrancy window) and the ERC20 transfer return value is decoded but not checked.",
"findings": [
{
"title": "External token CALL before state updates (reentrancy window)",
"category": "reentrancy",
"evidence": "`...63a9059cbb...5af115...5b506000868152...8054...55...55...` shows a CALL (`f1`) to the token transfer selector followed by multiple `SSTORE` (`55`) operations after the call.",
"severity": "medium",
"locations": [
"BYTECODE_BUNDLE.txt:5"
],
"recommendation": "Move all state updates (effects) before the external CALL, or add a reentrancy guard around the call path.",
"exploit_scenario": "A malicious or hook-enabled token contract called via `a9059cbb` can reenter this contract before the subsequent `SSTORE` updates complete, potentially repeating withdrawals/transfers or corrupting accounting if the function is reentrant."
},
{
"title": "ERC20 transfer return value decoded but not enforced",
"category": "other",
"evidence": "`...5af115...6107ca9190611fb9565b50...` shows a CALL followed by a jump to the return-data decoder at `0x1fb9`, then an immediate `POP` (`50`), indicating the boolean return value is discarded before state updates.",
"severity": "low",
"locations": [
"BYTECODE_BUNDLE.txt:5"
],
"recommendation": "Require the decoded boolean return value to be `true` (or use a SafeERC20-style helper that treats missing return data as success but rejects explicit `false`).",
"exploit_scenario": "If the token\u2019s `transfer` returns `false` without reverting, the low-level CALL still succeeds and the contract continues to update state, leading to accounting mismatches or loss of funds."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x0142 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x9a013413 00000026: GT 00000027: PUSH2 0x00b8 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xda58b966 00000031: GT 00000032: PUSH2 0x007c 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xda58b966 0000003c: EQ 0000003d: PUSH2 0x029d 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xe20056e6 00000047: EQ 00000048: PUSH2 0x02b0 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xee949a03 00000052: EQ 00000053: PUSH2 0x02c3 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf4fae995 0000005d: EQ 0000005e: PUSH2 0x02d6 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xfacf8323 00000068: EQ 00000069: PUSH2 0x02e9 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xfb48295d 00000073: EQ 00000074: PUSH2 0x0301 00000077: JUMPI 00000078: PUSH2 0x0142 0000007b: JUMP 0000007c: JUMPDEST 0000007d: DUP1 0000007e: PUSH4 0x9a013413 00000083: EQ 00000084: PUSH2 0x0253 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0xa910657e 0000008e: EQ 0000008f: PUSH2 0x026d 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0xb91d4f3e 00000099: EQ 0000009a: PUSH2 0x0275 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0xc54e44eb 000000a4: EQ 000000a5: PUSH2 0x028d 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0xcbe911d1 000000af: EQ 000000b0: PUSH2 0x0295 000000b3: JUMPI 000000b4: PUSH2 0x0142 000000b7: JUMP 000000b8: JUMPDEST 000000b9: DUP1 000000ba: PUSH4 0x37b688c0 000000bf: GT 000000c0: PUSH2 0x010a 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0x37b688c0 000000ca: EQ 000000cb: PUSH2 0x01ed 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0x4829e554 000000d5: EQ 000000d6: PUSH2 0x0202 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0x4bd834c7 000000e0: EQ 000000e1: PUSH2 0x0215 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0x52f3d6a3 000000eb: EQ 000000ec: PUSH2 0x022c 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0x7c826ee9 000000f6: EQ 000000f7: PUSH2 0x0234 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0x89a30271 00000101: EQ 00000102: PUSH2 0x024b 00000105: JUMPI 00000106: PUSH2 0x0142 00000109: JUMP 0000010a: JUMPDEST 0000010b: DUP1 0000010c: PUSH4 0x025e7c27 00000111: EQ 00000112: PUSH2 0x0147 00000115: JUMPI 00000116: DUP1 00000117: PUSH4 0x0ffb1b73 0000011c: EQ 0000011d: PUSH2 0x0170 00000120: JUMPI 00000121: DUP1 00000122: PUSH4 0x2f54bf6e 00000127: EQ 00000128: PUSH2 0x0194 0000012b: JUMPI 0000012c: DUP1 0000012d: PUSH4 0x318c15e8 00000132: EQ 00000133: PUSH2 0x01b4 00000136: JUMPI 00000137: DUP1 00000138: PUSH4 0x33ea3dc8 0000013d: EQ 0000013e: PUSH2 0x01c9 00000141: JUMPI 00000142: JUMPDEST 00000143: PUSH1 0x00 00000145: DUP1 00000146: REVERT 00000147: JUMPDEST 00000148: PUSH2 0x015a 0000014b: PUSH2 0x0155 0000014e: CALLDATASIZE 0000014f: PUSH1 0x04 00000151: PUSH2 0x1fd9 00000154: JUMP 00000155: JUMPDEST 00000156: PUSH2 0x0314 00000159: JUMP 0000015a: JUMPDEST 0000015b: PUSH1 0x40 0000015d: MLOAD 0000015e: PUSH2 0x0167 00000161: SWAP2 00000162: SWAP1 00000163: PUSH2 0x2098 00000166: JUMP 00000167: JUMPDEST 00000168: PUSH1 0x40 0000016a: MLOAD 0000016b: DUP1 0000016c: SWAP2 0000016d: SUB 0000016e: SWAP1 0000016f: RETURN 00000170: JUMPDEST 00000171: PUSH2 0x0183 00000174: PUSH2 0x017e 00000177: CALLDATASIZE 00000178: PUSH1 0x04 0000017a: PUSH2 0x1fd9 0000017d: JUMP 0000017e: JUMPDEST 0000017f: PUSH2 0x033e 00000182: JUMP 00000183: JUMPDEST 00000184: PUSH1 0x40 00000186: MLOAD 00000187: PUSH2 0x0167 0000018a: SWAP6 0000018b: SWAP5 0000018c: SWAP4 0000018d: SWAP3 0000018e: SWAP2 0000018f: SWAP1 00000190: PUSH2 0x21f8 00000193: JUMP 00000194: JUMPDEST 00000195: PUSH2 0x01a7 00000198: PUSH2 0x01a2 0000019b: CALLDATASIZE 0000019c: PUSH1 0x04 0000019e: PUSH2 0x1f25 000001a1: JUMP 000001a2: JUMPDEST 000001a3: PUSH2 0x0379 000001a6: JUMP 000001a7: JUMPDEST 000001a8: PUSH1 0x40 000001aa: MLOAD 000001ab: PUSH2 0x0167 000001ae: SWAP2 000001af: SWAP1 000001b0: PUSH2 0x22a4 000001b3: JUMP 000001b4: JUMPDEST 000001b5: PUSH2 0x01bc 000001b8: PUSH2 0x038e 000001bb: JUMP 000001bc: JUMPDEST 000001bd: PUSH1 0x40 000001bf: MLOAD 000001c0: PUSH2 0x0167 000001c3: SWAP2 000001c4: SWAP1 000001c5: PUSH2 0x24f7 000001c8: JUMP 000001c9: JUMPDEST 000001ca: PUSH2 0x01dc 000001cd: PUSH2 0x01d7 000001d0: CALLDATASIZE 000001d1: PUSH1 0x04 000001d3: PUSH2 0x1fd9 000001d6: JUMP 000001d7: JUMPDEST 000001d8: PUSH2 0x0394 000001db: JUMP 000001dc: JUMPDEST 000001dd: PUSH1 0x40 000001df: MLOAD 000001e0: PUSH2 0x0167 000001e3: SWAP6 000001e4: SWAP5 000001e5: SWAP4 000001e6: SWAP3 000001e7: SWAP2 000001e8: SWAP1 000001e9: PUSH2 0x216b 000001ec: JUMP 000001ed: JUMPDEST 000001ee: PUSH2 0x0200 000001f1: PUSH2 0x01fb 000001f4: CALLDATASIZE 000001f5: PUSH1 0x04 000001f7: PUSH2 0x1ff1 000001fa: JUMP 000001fb: JUMPDEST 000001fc: PUSH2 0x047e 000001ff: JUMP 00000200: JUMPDEST 00000201: STOP 00000202: JUMPDEST 00000203: PUSH2 0x01bc 00000206: PUSH2 0x0210 00000209: CALLDATASIZE 0000020a: PUSH1 0x04 0000020c: PUSH2 0x2034 0000020f: JUMP 00000210: JUMPDEST 00000211: PUSH2 0x0868 00000214: JUMP 00000215: JUMPDEST 00000216: PUSH2 0x021d 00000219: PUSH2 0x0885 0000021c: JUMP 0000021d: JUMPDEST 0000021e: PUSH1 0x40 00000220: MLOAD 00000221: PUSH2 0x0167 00000224: SWAP4 00000225: SWAP3 00000226: SWAP2 00000227: SWAP1 00000228: PUSH2 0x2147 0000022b: JUMP 0000022c: JUMPDEST 0000022d: PUSH2 0x01bc 00000230: PUSH2 0x08a1 00000233: JUMP 00000234: JUMPDEST 00000235: PUSH2 0x023c 00000238: PUSH2 0x08a8 0000023b: JUMP 0000023c: JUMPDEST 0000023d: PUSH1 0x40 0000023f: MLOAD 00000240: PUSH2 0x0167 00000243: SWAP4 00000244: SWAP3 00000245: SWAP2 00000246: SWAP1 00000247: PUSH2 0x251f 0000024a: JUMP 0000024b: JUMPDEST 0000024c: PUSH2 0x015a 0000024f: PUSH2 0x08b4 00000252: JUMP 00000253: JUMPDEST 00000254: PUSH2 0x025b 00000257: PUSH2 0x08c3 0000025a: JUMP 0000025b: JUMPDEST 0000025c: PUSH1 0x40 0000025e: MLOAD 0000025f: PUSH2 0x0167 00000262: SWAP7 00000263: SWAP6 00000264: SWAP5 00000265: SWAP4 00000266: SWAP3 00000267: SWAP2 00000268: SWAP1 00000269: PUSH2 0x21b0 0000026c: JUMP 0000026d: JUMPDEST 0000026e: PUSH2 0x01bc 00000271: PUSH2 0x0a18 00000274: JUMP 00000275: JUMPDEST 00000276: PUSH2 0x027d 00000279: PUSH2 0x0a1e 0000027c: JUMP 0000027d: JUMPDEST 0000027e: PUSH1 0x40 00000280: MLOAD 00000281: PUSH2 0x0167 00000284: SWAP5 00000285: SWAP4 00000286: SWAP3 00000287: SWAP2 00000288: SWAP1 00000289: PUSH2 0x2500 0000028c: JUMP 0000028d: JUMPDEST 0000028e: PUSH2 0x015a 00000291: PUSH2 0x0a94 00000294: JUMP 00000295: JUMPDEST 00000296: PUSH2 0x01bc 00000299: PUSH2 0x0aa3 0000029c: JUMP 0000029d: JUMPDEST 0000029e: PUSH2 0x0200 000002a1: PUSH2 0x02ab 000002a4: CALLDATASIZE 000002a5: PUSH1 0x04 000002a7: PUSH2 0x2034 000002aa: JUMP 000002ab: JUMPDEST 000002ac: PUSH2 0x0aa9 000002af: JUMP 000002b0: JUMPDEST 000002b1: PUSH2 0x0200 000002b4: PUSH2 0x02be 000002b7: CALLDATASIZE 000002b8: PUSH1 0x04 000002ba: PUSH2 0x1f46 000002bd: JUMP 000002be: JUMPDEST 000002bf: PUSH2 0x1096 000002c2: JUMP 000002c3: JUMPDEST 000002c4: PUSH2 0x0200 000002c7: PUSH2 0x02d1 000002ca: CALLDATASIZE 000002cb: PUSH1 0x04 000002cd: PUSH2 0x1f78 000002d0: JUMP 000002d1: JUMPDEST 000002d2: PUSH2 0x1406 000002d5: JUMP 000002d6: JUMPDEST 000002d7: PUSH2 0x0183 000002da: PUSH2 0x02e4 000002dd: CALLDATASIZE 000002de: PUSH1 0x04 000002e0: PUSH2 0x1fd9 000002e3: JUMP 000002e4: JUMPDEST 000002e5: PUSH2 0x18df 000002e8: JUMP 000002e9: JUMPDEST 000002ea: PUSH2 0x02f1 000002ed: PUSH2 0x191b 000002f0: JUMP 000002f1: JUMPDEST 000002f2: PUSH1 0x40 000002f4: MLOAD 000002f5: PUSH2 0x0167 000002f8: SWAP5 000002f9: SWAP4 000002fa: SWAP3 000002fb: SWAP2 000002fc: SWAP1 000002fd: PUSH2 0x210a 00000300: JUMP 00000301: JUMPDEST 00000302: PUSH2 0x0200 00000305: PUSH2 0x030f 00000308: CALLDATASIZE 00000309: PUSH1 0x04 0000030b: PUSH2 0x2034 0000030e: JUMP 0000030f: JUMPDEST 00000310: PUSH2 0x19a1 00000313: JUMP 00000314: JUMPDEST 00000315: PUSH1 0x02 00000317: DUP2 00000318: DUP2 00000319: SLOAD 0000031a: DUP2 0000031b: LT 0000031c: PUSH2 0x0324 0000031f: JUMPI 00000320: PUSH1 0x00 00000322: DUP1 00000323: REVERT 00000324: JUMPDEST 00000325: PUSH1 0x00 00000327: SWAP2 00000328: DUP3 00000329: MSTORE 0000032a: PUSH1 0x20 0000032c: SWAP1 0000032d: SWAP2 0000032e: KECCAK256 0000032f: ADD 00000330: SLOAD 00000331: PUSH1 0x01 00000333: PUSH1 0x01 00000335: PUSH1 0xa0 00000337: SHL 00000338: SUB 00000339: AND 0000033a: SWAP1 0000033b: POP 0000033c: DUP2 0000033d: JUMP 0000033e: JUMPDEST 0000033f: PUSH1 0x06 00000341: PUSH1 0x20 00000343: MSTORE 00000344: PUSH1 0x00 00000346: SWAP1 00000347: DUP2 00000348: MSTORE 00000349: PUSH1 0x40 0000034b: SWAP1 0000034c: KECCAK256 0000034d: DUP1 0000034e: SLOAD 0000034f: PUSH1 0x01 00000351: DUP3 00000352: ADD 00000353: SLOAD 00000354: PUSH1 0x02 00000356: DUP4 00000357: ADD 00000358: SLOAD 00000359: PUSH1 0x04 0000035b: DUP5 0000035c: ADD 0000035d: SLOAD 0000035e: PUSH1 0x05 00000360: SWAP1 00000361: SWAP5 00000362: ADD 00000363: SLOAD 00000364: PUSH1 0x01 00000366: PUSH1 0x01 00000368: PUSH1 0xa0 0000036a: SHL 0000036b: SUB 0000036c: SWAP4 0000036d: DUP5 0000036e: AND 0000036f: SWAP5 00000370: SWAP4 00000371: SWAP1 00000372: SWAP3 00000373: AND 00000374: SWAP3 00000375: SWAP1 00000376: SWAP2 00000377: DUP6 00000378: JUMP 00000379: JUMPDEST 0000037a: PUSH1 0x08 0000037c: PUSH1 0x20 0000037e: MSTORE 0000037f: PUSH1 0x00 00000381: SWAP1 00000382: DUP2 00000383: MSTORE 00000384: PUSH1 0x40 00000386: SWAP1 00000387: KECCAK256 00000388: SLOAD 00000389: PUSH1 0xff 0000038b: AND 0000038c: DUP2 0000038d: JUMP 0000038e: JUMPDEST 0000038f: PUSH1 0x00 00000391: SLOAD 00000392: DUP2 00000393: JUMP 00000394: JUMPDEST 00000395: PUSH1 0x00 00000397: DUP2 00000398: DUP2 00000399: MSTORE 0000039a: PUSH1 0x05 0000039c: PUSH1 0x20 0000039e: SWAP1 0000039f: DUP2 000003a0: MSTORE 000003a1: PUSH1 0x40 000003a3: DUP1 000003a4: DUP4 000003a5: KECCAK256 000003a6: DUP2 000003a7: MLOAD 000003a8: PUSH1 0xc0 000003aa: DUP2 000003ab: ADD 000003ac: DUP4 000003ad: MSTORE 000003ae: DUP2 000003af: SLOAD 000003b0: PUSH1 0x01 000003b2: PUSH1 0x01 000003b4: PUSH1 0xa0 000003b6: SHL 000003b7: SUB 000003b8: SWAP1 000003b9: DUP2 000003ba: AND 000003bb: DUP3 000003bc: MSTORE 000003bd: PUSH1 0x01 000003bf: DUP4 000003c0: ADD 000003c1: SLOAD 000003c2: AND 000003c3: DUP2 000003c4: DUP6 000003c5: ADD 000003c6: MSTORE 000003c7: PUSH1 0x02 000003c9: DUP3 000003ca: ADD 000003cb: SLOAD 000003cc: DUP2 000003cd: DUP5 000003ce: ADD 000003cf: MSTORE 000003d0: PUSH1 0x03 000003d2: DUP3 000003d3: ADD 000003d4: DUP1 000003d5: SLOAD 000003d6: DUP5 000003d7: MLOAD 000003d8: DUP2 000003d9: DUP8 000003da: MUL 000003db: DUP2 000003dc: ADD 000003dd: DUP8 000003de: ADD 000003df: SWAP1 000003e0: SWAP6 000003e1: MSTORE 000003e2: DUP1 000003e3: DUP6 000003e4: MSTORE 000003e5: DUP7 000003e6: SWAP6 000003e7: DUP7 000003e8: SWAP6 000003e9: PUSH1 0x60 000003eb: SWAP6 000003ec: DUP8 000003ed: SWAP6 000003ee: DUP7 000003ef: SWAP6 000003f0: SWAP1 000003f1: SWAP5 000003f2: SWAP2 000003f3: SWAP4 000003f4: DUP6 000003f5: DUP10 000003f6: ADD 000003f7: SWAP4 000003f8: SWAP3 000003f9: SWAP1 000003fa: DUP4 000003fb: ADD 000003fc: DUP3 000003fd: DUP3 000003fe: DUP1 000003ff: ISZERO 00000400: PUSH2 0x0432 00000403: JUMPI 00000404: PUSH1 0x20 00000406: MUL 00000407: DUP3 00000408: ADD 00000409: SWAP2 0000040a: SWAP1 0000040b: PUSH1 0x00 0000040d: MSTORE 0000040e: PUSH1 0x20 00000410: PUSH1 0x00 00000412: KECCAK256 00000413: SWAP1 00000414: JUMPDEST 00000415: DUP2 00000416: SLOAD 00000417: PUSH1 0x01 00000419: PUSH1 0x01 0000041b: PUSH1 0xa0 0000041d: SHL 0000041e: SUB 0000041f: AND 00000420: DUP2 00000421: MSTORE 00000422: PUSH1 0x01 00000424: SWAP1 00000425: SWAP2 00000426: ADD 00000427: SWAP1 00000428: PUSH1 0x20 0000042a: ADD 0000042b: DUP1 0000042c: DUP4 0000042d: GT 0000042e: PUSH2 0x0414 00000431: JUMPI 00000432: JUMPDEST 00000433: POP 00000434: POP 00000435: POP 00000436: POP 00000437: POP 00000438: DUP2 00000439: MSTORE 0000043a: PUSH1 0x20 0000043c: ADD 0000043d: PUSH1 0x04 0000043f: DUP3 00000440: ADD 00000441: SLOAD 00000442: DUP2 00000443: MSTORE 00000444: PUSH1 0x20 00000446: ADD 00000447: PUSH1 0x05 00000449: DUP3 0000044a: ADD 0000044b: SLOAD 0000044c: DUP2 0000044d: MSTORE 0000044e: POP 0000044f: POP 00000450: SWAP1 00000451: POP 00000452: DUP1 00000453: PUSH1 0x00 00000455: ADD 00000456: MLOAD 00000457: SWAP6 00000458: POP 00000459: DUP1 0000045a: PUSH1 0x20 0000045c: ADD 0000045d: MLOAD 0000045e: SWAP5 0000045f: POP 00000460: DUP1 00000461: PUSH1 0x40 00000463: ADD 00000464: MLOAD 00000465: SWAP4 00000466: POP 00000467: DUP1 00000468: PUSH1 0x60 0000046a: ADD 0000046b: MLOAD 0000046c: SWAP3 0000046d: POP 0000046e: DUP1 0000046f: PUSH1 0x80 00000471: ADD 00000472: MLOAD 00000473: SWAP2 00000474: POP 00000475: POP 00000476: SWAP2 00000477: SWAP4 00000478: SWAP6 00000479: SWAP1 0000047a: SWAP3 0000047b: SWAP5 0000047c: POP 0000047d: JUMP 0000047e: JUMPDEST 0000047f: PUSH2 0x0487 00000482: CALLER 00000483: PUSH2 0x1bf9 00000486: JUMP 00000487: JUMPDEST 00000488: PUSH2 0x04ac 0000048b: JUMPI 0000048c: PUSH1 0x40 0000048e: MLOAD 0000048f: PUSH3 0x461bcd 00000493: PUSH1 0xe5 00000495: SHL 00000496: DUP2 00000497: MSTORE 00000498: PUSH1 0x04 0000049a: ADD 0000049b: PUSH2 0x04a3 0000049e: SWAP1 0000049f: PUSH2 0x22ff 000004a2: JUMP 000004a3: JUMPDEST 000004a4: PUSH1 0x40 000004a6: MLOAD 000004a7: DUP1 000004a8: SWAP2 000004a9: SUB 000004aa: SWAP1 000004ab: REVERT 000004ac: JUMPDEST 000004ad: PUSH1 0x02 000004af: DUP5 000004b0: GT 000004b1: ISZERO 000004b2: PUSH2 0x04cd 000004b5: JUMPI 000004b6: PUSH1 0x40 000004b8: MLOAD 000004b9: PUSH3 0x461bcd 000004bd: PUSH1 0xe5 000004bf: SHL 000004c0: DUP2 000004c1: MSTORE 000004c2: PUSH1 0x04 000004c4: ADD 000004c5: PUSH2 0x04a3 000004c8: SWAP1 000004c9: PUSH2 0x2336 000004cc: JUMP 000004cd: JUMPDEST 000004ce: PUSH1 0x03 000004d0: SLOAD 000004d1: PUSH1 0x01 000004d3: PUSH1 0x01 000004d5: PUSH1 0xa0 000004d7: SHL 000004d8: SUB 000004d9: DUP5 000004da: DUP2 000004db: AND 000004dc: SWAP2 000004dd: AND 000004de: EQ 000004df: DUP1 000004e0: PUSH2 0x04f6 000004e3: JUMPI 000004e4: POP 000004e5: PUSH1 0x04 000004e7: SLOAD 000004e8: PUSH1 0x01 000004ea: PUSH1 0x01 000004ec: PUSH1 0xa0 000004ee: SHL 000004ef: SUB 000004f0: DUP5 000004f1: DUP2 000004f2: AND 000004f3: SWAP2 000004f4: AND 000004f5: EQ 000004f6: JUMPDEST 000004f7: PUSH2 0x0512 000004fa: JUMPI 000004fb: PUSH1 0x40 000004fd: MLOAD 000004fe: PUSH3 0x461bcd 00000502: PUSH1 0xe5 00000504: SHL 00000505: DUP2 00000506: MSTORE 00000507: PUSH1 0x04 00000509: ADD 0000050a: PUSH2 0x04a3 0000050d: SWAP1 0000050e: PUSH2 0x22d7 00000511: JUMP 00000512: JUMPDEST 00000513: PUSH2 0x051b 00000516: DUP3 00000517: PUSH2 0x1bf9 0000051a: JUMP 0000051b: JUMPDEST 0000051c: PUSH2 0x0537 0000051f: JUMPI 00000520: PUSH1 0x40 00000522: MLOAD 00000523: PUSH3 0x461bcd 00000527: PUSH1 0xe5 00000529: SHL 0000052a: DUP2 0000052b: MSTORE 0000052c: PUSH1 0x04 0000052e: ADD 0000052f: PUSH2 0x04a3 00000532: SWAP1 00000533: PUSH2 0x23cf 00000536: JUMP 00000537: JUMPDEST 00000538: PUSH1 0x00 0000053a: PUSH2 0x0543 0000053d: DUP2 0000053e: DUP7 0000053f: PUSH2 0x1c1b 00000542: JUMP 00000543: JUMPDEST 00000544: PUSH1 0x00 00000546: DUP6 00000547: DUP2 00000548: MSTORE 00000549: PUSH1 0x05 0000054b: PUSH1 0x20 0000054d: SWAP1 0000054e: DUP2 0000054f: MSTORE 00000550: PUSH1 0x40 00000552: SWAP2 00000553: DUP3 00000554: SWAP1 00000555: KECCAK256 00000556: PUSH1 0x03 00000558: DUP2 00000559: ADD 0000055a: DUP1 0000055b: SLOAD 0000055c: DUP5 0000055d: MLOAD 0000055e: DUP2 0000055f: DUP6 00000560: MUL 00000561: DUP2 00000562: ADD 00000563: DUP6 00000564: ADD 00000565: SWAP1 00000566: SWAP6 00000567: MSTORE 00000568: DUP1 00000569: DUP6 0000056a: MSTORE 0000056b: SWAP2 0000056c: SWAP4 0000056d: PUSH2 0x05b6 00000570: SWAP4 00000571: SWAP1 00000572: SWAP3 00000573: SWAP1 00000574: DUP4 00000575: ADD 00000576: DUP3 00000577: DUP3 00000578: DUP1 00000579: ISZERO 0000057a: PUSH2 0x05ac 0000057d: JUMPI 0000057e: PUSH1 0x20 00000580: MUL 00000581: DUP3 00000582: ADD 00000583: SWAP2 00000584: SWAP1 00000585: PUSH1 0x00 00000587: MSTORE 00000588: PUSH1 0x20 0000058a: PUSH1 0x00 0000058c: KECCAK256 0000058d: SWAP1 0000058e: JUMPDEST 0000058f: DUP2 00000590: SLOAD 00000591: PUSH1 0x01 00000593: PUSH1 0x01 00000595: PUSH1 0xa0 00000597: SHL 00000598: SUB 00000599: AND 0000059a: DUP2 0000059b: MSTORE 0000059c: PUSH1 0x01 0000059e: SWAP1 0000059f: SWAP2 000005a0: ADD 000005a1: SWAP1 000005a2: PUSH1 0x20 000005a4: ADD 000005a5: DUP1 000005a6: DUP4 000005a7: GT 000005a8: PUSH2 0x058e 000005ab: JUMPI 000005ac: JUMPDEST 000005ad: POP 000005ae: POP 000005af: POP 000005b0: POP 000005b1: POP 000005b2: PUSH2 0x1d46 000005b5: JUMP 000005b6: JUMPDEST 000005b7: PUSH1 0x01 000005b9: DUP2 000005ba: ADD 000005bb: SLOAD 000005bc: PUSH1 0x01 000005be: PUSH1 0x01 000005c0: PUSH1 0xa0 000005c2: SHL 000005c3: SUB 000005c4: AND 000005c5: PUSH2 0x066c 000005c8: JUMPI 000005c9: DUP1 000005ca: SLOAD 000005cb: PUSH1 0x01 000005cd: PUSH1 0x01 000005cf: PUSH1 0xa0 000005d1: SHL 000005d2: SUB 000005d3: NOT 000005d4: SWAP1 000005d5: DUP2 000005d6: AND 000005d7: PUSH1 0x01 000005d9: PUSH1 0x01 000005db: PUSH1 0xa0 000005dd: SHL 000005de: SUB 000005df: DUP8 000005e0: DUP2 000005e1: AND 000005e2: SWAP2 000005e3: SWAP1 000005e4: SWAP2 000005e5: OR 000005e6: DUP4 000005e7: SSTORE 000005e8: PUSH1 0x01 000005ea: DUP1 000005eb: DUP5 000005ec: ADD 000005ed: DUP1 000005ee: SLOAD 000005ef: DUP5 000005f0: AND 000005f1: SWAP3 000005f2: DUP9 000005f3: AND 000005f4: SWAP3 000005f5: SWAP1 000005f6: SWAP3 000005f7: OR 000005f8: SWAP1 000005f9: SWAP2 000005fa: SSTORE 000005fb: PUSH1 0x02 000005fd: DUP4 000005fe: ADD 000005ff: DUP6 00000600: SWAP1 00000601: SSTORE 00000602: PUSH1 0x03 00000604: DUP4 00000605: ADD 00000606: DUP1 00000607: SLOAD 00000608: SWAP2 00000609: DUP3 0000060a: ADD 0000060b: DUP2 0000060c: SSTORE 0000060d: PUSH1 0x00 0000060f: SWAP1 00000610: DUP2 00000611: MSTORE 00000612: PUSH1 0x20 00000614: SWAP1 00000615: KECCAK256 00000616: ADD 00000617: DUP1 00000618: SLOAD 00000619: CALLER 0000061a: SWAP3 0000061b: AND 0000061c: DUP3 0000061d: OR 0000061e: SWAP1 0000061f: SSTORE 00000620: TIMESTAMP 00000621: PUSH1 0x04 00000623: DUP4 00000624: ADD 00000625: SSTORE 00000626: PUSH1 0x40 00000628: MLOAD 00000629: PUSH32 0xddc7de7d213588a85d50185ff270cf0a86195f91476a3c64fe0c096d0bd2da0c 0000064a: SWAP2 0000064b: PUSH2 0x065d 0000064e: SWAP2 0000064f: DUP10 00000650: SWAP1 00000651: DUP10 00000652: SWAP1 00000653: DUP10 00000654: SWAP1 00000655: DUP10 00000656: SWAP1 00000657: DUP10 00000658: SWAP1 00000659: PUSH2 0x2242 0000065c: JUMP 0000065d: JUMPDEST 0000065e: PUSH1 0x40 00000660: MLOAD 00000661: DUP1 00000662: SWAP2 00000663: SUB 00000664: SWAP1 00000665: LOG1 00000666: POP 00000667: POP 00000668: PUSH2 0x0862 0000066b: JUMP 0000066c: JUMPDEST 0000066d: PUSH1 0x03 0000066f: DUP2 00000670: ADD 00000671: DUP1 00000672: SLOAD 00000673: PUSH1 0x01 00000675: DUP2 00000676: ADD 00000677: DUP3 00000678: SSTORE 00000679: PUSH1 0x00 0000067b: SWAP2 0000067c: DUP3 0000067d: MSTORE 0000067e: PUSH1 0x20 00000680: SWAP1 00000681: SWAP2 00000682: KECCAK256 00000683: ADD 00000684: DUP1 00000685: SLOAD 00000686: PUSH1 0x01 00000688: PUSH1 0x01 0000068a: PUSH1 0xa0 0000068c: SHL 0000068d: SUB 0000068e: NOT 0000068f: AND 00000690: CALLER 00000691: OR 00000692: SWAP1 00000693: SSTORE 00000694: DUP1 00000695: SLOAD 00000696: PUSH1 0x01 00000698: PUSH1 0x01 0000069a: PUSH1 0xa0 0000069c: SHL 0000069d: SUB 0000069e: SWAP1 0000069f: DUP2 000006a0: AND 000006a1: SWAP1 000006a2: DUP7 000006a3: AND 000006a4: EQ 000006a5: DUP1 000006a6: ISZERO 000006a7: PUSH2 0x06bf 000006aa: JUMPI 000006ab: POP 000006ac: PUSH1 0x01 000006ae: DUP2 000006af: ADD 000006b0: SLOAD 000006b1: PUSH1 0x01 000006b3: PUSH1 0x01 000006b5: PUSH1 0xa0 000006b7: SHL 000006b8: SUB 000006b9: DUP6 000006ba: DUP2 000006bb: AND 000006bc: SWAP2 000006bd: AND 000006be: EQ 000006bf: JUMPDEST 000006c0: DUP1 000006c1: ISZERO 000006c2: PUSH2 0x06ce 000006c5: JUMPI 000006c6: POP 000006c7: DUP3 000006c8: DUP2 000006c9: PUSH1 0x02 000006cb: ADD 000006cc: SLOAD 000006cd: EQ 000006ce: JUMPDEST 000006cf: PUSH2 0x06ea 000006d2: JUMPI 000006d3: PUSH1 0x40 000006d5: MLOAD 000006d6: PUSH3 0x461bcd 000006da: PUSH1 0xe5 000006dc: SHL 000006dd: DUP2 000006de: MSTORE 000006df: PUSH1 0x04 000006e1: ADD 000006e2: PUSH2 0x04a3 000006e5: SWAP1 000006e6: PUSH2 0x247a 000006e9: JUMP 000006ea: JUMPDEST 000006eb: DUP6 000006ec: ISZERO 000006ed: DUP1 000006ee: ISZERO 000006ef: PUSH2 0x06fc 000006f2: JUMPI 000006f3: POP 000006f4: PUSH1 0x03 000006f6: DUP2 000006f7: ADD 000006f8: SLOAD 000006f9: PUSH1 0x02 000006fb: EQ 000006fc: JUMPDEST 000006fd: DUP1 000006fe: PUSH2 0x0715 00000701: JUMPI 00000702: POP 00000703: PUSH1 0x01 00000705: DUP7 00000706: EQ 00000707: DUP1 00000708: ISZERO 00000709: PUSH2 0x0715 0000070c: JUMPI 0000070d: POP 0000070e: PUSH1 0x03 00000710: DUP1 00000711: DUP3 00000712: ADD 00000713: SLOAD 00000714: EQ 00000715: JUMPDEST 00000716: DUP1 00000717: PUSH2 0x072f 0000071a: JUMPI 0000071b: POP 0000071c: PUSH1 0x02 0000071e: DUP7 0000071f: EQ 00000720: DUP1 00000721: ISZERO 00000722: PUSH2 0x072f 00000725: JUMPI 00000726: POP 00000727: PUSH1 0x03 00000729: DUP2 0000072a: ADD 0000072b: SLOAD 0000072c: PUSH1 0x04 0000072e: EQ 0000072f: JUMPDEST 00000730: ISZERO 00000731: PUSH2 0x081e 00000734: JUMPI 00000735: PUSH2 0x073e 00000738: DUP7 00000739: DUP5 0000073a: PUSH2 0x1dbd 0000073d: JUMP 0000073e: JUMPDEST 0000073f: DUP1 00000740: SLOAD 00000741: PUSH1 0x01 00000743: DUP3 00000744: ADD 00000745: SLOAD 00000746: PUSH1 0x02 00000748: DUP4 00000749: ADD 0000074a: SLOAD 0000074b: PUSH1 0x40 0000074d: MLOAD 0000074e: PUSH4 0xa9059cbb 00000753: PUSH1 0xe0 00000755: SHL 00000756: DUP2 00000757: MSTORE 00000758: PUSH1 0x01 0000075a: PUSH1 0x01 0000075c: PUSH1 0xa0 0000075e: SHL 0000075f: SUB 00000760: SWAP4 00000761: DUP5 00000762: AND 00000763: SWAP4 00000764: PUSH4 0xa9059cbb 00000769: SWAP4 0000076a: PUSH2 0x0778 0000076d: SWAP4 0000076e: SWAP2 0000076f: AND 00000770: SWAP2 00000771: PUSH1 0x04 00000773: ADD 00000774: PUSH2 0x2229 00000777: JUMP 00000778: JUMPDEST 00000779: PUSH1 0x20 0000077b: PUSH1 0x40 0000077d: MLOAD 0000077e: DUP1 0000077f: DUP4 00000780: SUB 00000781: DUP2 00000782: PUSH1 0x00 00000784: DUP8 00000785: DUP1 00000786: EXTCODESIZE 00000787: ISZERO 00000788: DUP1 00000789: ISZERO 0000078a: PUSH2 0x0792 0000078d: JUMPI 0000078e: PUSH1 0x00 00000790: DUP1 00000791: REVERT 00000792: JUMPDEST 00000793: POP 00000794: GAS 00000795: CALL 00000796: ISZERO 00000797: DUP1 00000798: ISZERO 00000799: PUSH2 0x07a6 0000079c: JUMPI 0000079d: RETURNDATASIZE 0000079e: PUSH1 0x00 000007a0: DUP1 000007a1: RETURNDATACOPY 000007a2: RETURNDATASIZE 000007a3: PUSH1 0x00 000007a5: REVERT 000007a6: JUMPDEST 000007a7: POP 000007a8: POP 000007a9: POP 000007aa: POP 000007ab: PUSH1 0x40 000007ad: MLOAD 000007ae: RETURNDATASIZE 000007af: PUSH1 0x1f 000007b1: NOT 000007b2: PUSH1 0x1f 000007b4: DUP3 000007b5: ADD 000007b6: AND 000007b7: DUP3 000007b8: ADD 000007b9: DUP1 000007ba: PUSH1 0x40 000007bc: MSTORE 000007bd: POP 000007be: DUP2 000007bf: ADD 000007c0: SWAP1 000007c1: PUSH2 0x07ca 000007c4: SWAP2 000007c5: SWAP1 000007c6: PUSH2 0x1fb9 000007c9: JUMP 000007ca: JUMPDEST 000007cb: POP 000007cc: PUSH1 0x00 000007ce: DUP7 000007cf: DUP2 000007d0: MSTORE 000007d1: PUSH1 0x05 000007d3: PUSH1 0x20 000007d5: MSTORE 000007d6: PUSH1 0x40 000007d8: DUP2 000007d9: KECCAK256 000007da: DUP1 000007db: SLOAD 000007dc: PUSH1 0x01 000007de: PUSH1 0x01 000007e0: PUSH1 0xa0 000007e2: SHL 000007e3: SUB 000007e4: NOT 000007e5: SWAP1 000007e6: DUP2 000007e7: AND 000007e8: DUP3 000007e9: SSTORE 000007ea: PUSH1 0x01 000007ec: DUP3 000007ed: ADD 000007ee: DUP1 000007ef: SLOAD 000007f0: SWAP1 000007f1: SWAP2 000007f2: AND 000007f3: SWAP1 000007f4: SSTORE 000007f5: PUSH1 0x02 000007f7: DUP2 000007f8: ADD 000007f9: DUP3 000007fa: SWAP1 000007fb: SSTORE 000007fc: SWAP1 000007fd: PUSH2 0x0809 00000800: PUSH1 0x03 00000802: DUP4 00000803: ADD 00000804: DUP3 00000805: PUSH2 0x1ed4 00000808: JUMP 00000809: JUMPDEST 0000080a: POP 0000080b: PUSH1 0x00 0000080d: PUSH1 0x04 0000080f: DUP3 00000810: ADD 00000811: DUP2 00000812: SWAP1 00000813: SSTORE 00000814: PUSH1 0x05 00000816: SWAP1 00000817: SWAP2 00000818: ADD 00000819: SSTORE 0000081a: PUSH1 0x01 0000081c: SWAP2 0000081d: POP 0000081e: JUMPDEST 0000081f: PUSH32 0xddc7de7d213588a85d50185ff270cf0a86195f91476a3c64fe0c096d0bd2da0c 00000840: CALLER 00000841: DUP8 00000842: DUP8 00000843: DUP8 00000844: DUP8 00000845: DUP8 00000846: PUSH1 0x40 00000848: MLOAD 00000849: PUSH2 0x0857 0000084c: SWAP7 0000084d: SWAP6 0000084e: SWAP5 0000084f: SWAP4 00000850: SWAP3 00000851: SWAP2 00000852: SWAP1 00000853: PUSH2 0x2242 00000856: JUMP 00000857: JUMPDEST 00000858: PUSH1 0x40 0000085a: MLOAD 0000085b: DUP1 0000085c: SWAP2 0000085d: SUB 0000085e: SWAP1 0000085f: LOG1 00000860: POP 00000861: POP 00000862: JUMPDEST 00000863: POP 00000864: POP 00000865: POP 00000866: POP 00000867: JUMP 00000868: JUMPDEST 00000869: PUSH1 0x07 0000086b: PUSH1 0x20 0000086d: SWAP1 0000086e: DUP2 0000086f: MSTORE 00000870: PUSH1 0x00 00000872: SWAP3 00000873: DUP4 00000874: MSTORE 00000875: PUSH1 0x40 00000877: DUP1 00000878: DUP5 00000879: KECCAK256 0000087a: SWAP1 0000087b: SWAP2 0000087c: MSTORE 0000087d: SWAP1 0000087e: DUP3 0000087f: MSTORE 00000880: SWAP1 00000881: KECCAK256 00000882: SLOAD 00000883: DUP2 00000884: JUMP 00000885: JUMPDEST 00000886: PUSH1 0x0d 00000888: SLOAD 00000889: PUSH1 0x0e 0000088b: SLOAD 0000088c: PUSH1 0x10 0000088e: SLOAD 0000088f: PUSH1 0x01 00000891: PUSH1 0x01 00000893: PUSH1 0xa0 00000895: SHL 00000896: SUB 00000897: SWAP3 00000898: DUP4 00000899: AND 0000089a: SWAP3 0000089b: SWAP1 0000089c: SWAP2 0000089d: AND 0000089e: SWAP1 0000089f: DUP4 000008a0: JUMP 000008a1: JUMPDEST 000008a2: PUSH3 0x015180 000008a6: DUP2 000008a7: JUMP 000008a8: JUMPDEST 000008a9: PUSH1 0x09 000008ab: SLOAD 000008ac: PUSH1 0x0a 000008ae: SLOAD 000008af: PUSH1 0x0c 000008b1: SLOAD 000008b2: DUP4 000008b3: JUMP 000008b4: JUMPDEST 000008b5: PUSH1 0x04 000008b7: SLOAD 000008b8: PUSH1 0x01 000008ba: PUSH1 0x01 000008bc: PUSH1 0xa0 000008be: SHL 000008bf: SUB 000008c0: AND 000008c1: DUP2 000008c2: JUMP 000008c3: JUMPDEST 000008c4: PUSH1 0x00 000008c6: DUP1 000008c7: DUP1 000008c8: MSTORE 000008c9: PUSH1 0x06 000008cb: PUSH1 0x20 000008cd: SWAP1 000008ce: DUP2 000008cf: MSTORE 000008d0: PUSH1 0x40 000008d2: DUP1 000008d3: MLOAD 000008d4: PUSH1 0xc0 000008d6: DUP2 000008d7: ADD 000008d8: DUP3 000008d9: MSTORE 000008da: PUSH1 0x00 000008dc: DUP1 000008dd: MLOAD 000008de: PUSH1 0x20 000008e0: PUSH2 0x25b6 000008e3: DUP4 000008e4: CODECOPY 000008e5: DUP2 000008e6: MLOAD 000008e7: SWAP2 000008e8: MSTORE 000008e9: DUP1 000008ea: SLOAD 000008eb: PUSH1 0x01 000008ed: PUSH1 0x01 000008ef: PUSH1 0xa0 000008f1: SHL 000008f2: SUB 000008f3: SWAP1 000008f4: DUP2 000008f5: AND 000008f6: DUP4 000008f7: MSTORE 000008f8: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9 00000919: SLOAD 0000091a: AND 0000091b: DUP3 0000091c: DUP6 0000091d: ADD 0000091e: MSTORE 0000091f: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa 00000940: SLOAD 00000941: DUP3 00000942: DUP5 00000943: ADD 00000944: MSTORE 00000945: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb 00000966: DUP1 00000967: SLOAD 00000968: DUP5 00000969: MLOAD 0000096a: DUP2 0000096b: DUP8 0000096c: MUL 0000096d: DUP2 0000096e: ADD 0000096f: DUP8 00000970: ADD 00000971: SWAP1 00000972: SWAP6 00000973: MSTORE 00000974: DUP1 00000975: DUP6 00000976: MSTORE 00000977: DUP7 00000978: SWAP6 00000979: DUP7 0000097a: SWAP6 0000097b: PUSH1 0x60 0000097d: SWAP6 0000097e: DUP8 0000097f: SWAP6 00000980: DUP7 00000981: SWAP6 00000982: DUP7 00000983: SWAP6 00000984: SWAP3 00000985: SWAP5 00000986: SWAP2 00000987: SWAP4 00000988: DUP6 00000989: DUP11 0000098a: ADD 0000098b: SWAP4 0000098c: SWAP1 0000098d: SWAP3 0000098e: DUP4 0000098f: ADD 00000990: DUP3 00000991: DUP3 00000992: DUP1 00000993: ISZERO 00000994: PUSH2 0x09c6 00000997: JUMPI 00000998: PUSH1 0x20 0000099a: MUL 0000099b: DUP3 0000099c: ADD 0000099d: SWAP2 0000099e: SWAP1 0000099f: PUSH1 0x00 000009a1: MSTORE 000009a2: PUSH1 0x20 000009a4: PUSH1 0x00 000009a6: KECCAK256 000009a7: SWAP1 000009a8: JUMPDEST 000009a9: DUP2 000009aa: SLOAD 000009ab: PUSH1 0x01 000009ad: PUSH1 0x01 000009af: PUSH1 0xa0 000009b1: SHL 000009b2: SUB 000009b3: AND 000009b4: DUP2 000009b5: MSTORE 000009b6: PUSH1 0x01 000009b8: SWAP1 000009b9: SWAP2 000009ba: ADD 000009bb: SWAP1 000009bc: PUSH1 0x20 000009be: ADD 000009bf: DUP1 000009c0: DUP4 000009c1: GT 000009c2: PUSH2 0x09a8 000009c5: JUMPI 000009c6: JUMPDEST 000009c7: POP 000009c8: POP 000009c9: POP 000009ca: POP 000009cb: POP 000009cc: DUP2 000009cd: MSTORE 000009ce: PUSH1 0x20 000009d0: ADD 000009d1: PUSH1 0x04 000009d3: DUP3 000009d4: ADD 000009d5: SLOAD 000009d6: DUP2 000009d7: MSTORE 000009d8: PUSH1 0x20 000009da: ADD 000009db: PUSH1 0x05 000009dd: DUP3 000009de: ADD 000009df: SLOAD 000009e0: DUP2 000009e1: MSTORE 000009e2: POP 000009e3: POP 000009e4: SWAP1 000009e5: POP 000009e6: DUP1 000009e7: PUSH1 0x00 000009e9: ADD 000009ea: MLOAD 000009eb: SWAP7 000009ec: POP 000009ed: DUP1 000009ee: PUSH1 0x20 000009f0: ADD 000009f1: MLOAD 000009f2: SWAP6 000009f3: POP 000009f4: DUP1 000009f5: PUSH1 0x40 000009f7: ADD 000009f8: MLOAD 000009f9: SWAP5 000009fa: POP 000009fb: DUP1 000009fc: PUSH1 0x60 000009fe: ADD 000009ff: MLOAD 00000a00: SWAP4 00000a01: POP 00000a02: DUP1 00000a03: PUSH1 0x80 00000a05: ADD 00000a06: MLOAD 00000a07: SWAP3 00000a08: POP 00000a09: DUP1 00000a0a: PUSH1 0xa0 00000a0c: ADD 00000a0d: MLOAD 00000a0e: SWAP2 00000a0f: POP 00000a10: POP 00000a11: SWAP1 00000a12: SWAP2 00000a13: SWAP3 00000a14: SWAP4 00000a15: SWAP5 00000a16: SWAP6 00000a17: JUMP 00000a18: JUMPDEST 00000a19: PUSH2 0x0384 00000a1c: DUP2 00000a1d: JUMP 00000a1e: JUMPDEST 00000a1f: PUSH1 0x09 00000a21: SLOAD 00000a22: PUSH1 0x0a 00000a24: SLOAD 00000a25: PUSH1 0x0b 00000a27: DUP1 00000a28: SLOAD 00000a29: PUSH1 0x40 00000a2b: DUP1 00000a2c: MLOAD 00000a2d: PUSH1 0x20 00000a2f: DUP1 00000a30: DUP5 00000a31: MUL 00000a32: DUP3 00000a33: ADD 00000a34: DUP2 00000a35: ADD 00000a36: SWAP1 00000a37: SWAP3 00000a38: MSTORE 00000a39: DUP3 00000a3a: DUP2 00000a3b: MSTORE 00000a3c: PUSH1 0x60 00000a3e: SWAP4 00000a3f: PUSH1 0x00 00000a41: SWAP4 00000a42: SWAP2 00000a43: SWAP3 00000a44: SWAP1 00000a45: SWAP2 00000a46: SWAP1 00000a47: DUP4 00000a48: ADD 00000a49: DUP3 00000a4a: DUP3 00000a4b: DUP1 00000a4c: ISZERO 00000a4d: PUSH2 0x0a7f 00000a50: JUMPI 00000a51: PUSH1 0x20 00000a53: MUL 00000a54: DUP3 00000a55: ADD 00000a56: SWAP2 00000a57: SWAP1 00000a58: PUSH1 0x00 00000a5a: MSTORE 00000a5b: PUSH1 0x20 00000a5d: PUSH1 0x00 00000a5f: KECCAK256 00000a60: SWAP1 00000a61: JUMPDEST 00000a62: DUP2 00000a63: SLOAD 00000a64: PUSH1 0x01 00000a66: PUSH1 0x01 00000a68: PUSH1 0xa0 00000a6a: SHL 00000a6b: SUB 00000a6c: AND 00000a6d: DUP2 00000a6e: MSTORE 00000a6f: PUSH1 0x01 00000a71: SWAP1 00000a72: SWAP2 00000a73: ADD 00000a74: SWAP1 00000a75: PUSH1 0x20 00000a77: ADD 00000a78: DUP1 00000a79: DUP4 00000a7a: GT 00000a7b: PUSH2 0x0a61 00000a7e: JUMPI 00000a7f: JUMPDEST 00000a80: POP 00000a81: POP 00000a82: POP 00000a83: POP 00000a84: POP 00000a85: SWAP2 00000a86: POP 00000a87: PUSH1 0x09 00000a89: PUSH1 0x03 00000a8b: ADD 00000a8c: SLOAD 00000a8d: SWAP1 00000a8e: POP 00000a8f: SWAP1 00000a90: SWAP2 00000a91: SWAP3 00000a92: SWAP4 00000a93: JUMP 00000a94: JUMPDEST 00000a95: PUSH1 0x03 00000a97: SLOAD 00000a98: PUSH1 0x01 00000a9a: PUSH1 0x01 00000a9c: PUSH1 0xa0 00000a9e: SHL 00000a9f: SUB 00000aa0: AND 00000aa1: DUP2 00000aa2: JUMP 00000aa3: JUMPDEST 00000aa4: PUSH1 0x01 00000aa6: SLOAD 00000aa7: DUP2 00000aa8: JUMP 00000aa9: JUMPDEST 00000aaa: PUSH2 0x0ab2 00000aad: CALLER 00000aae: PUSH2 0x1bf9 00000ab1: JUMP 00000ab2: JUMPDEST 00000ab3: PUSH2 0x0ace 00000ab6: JUMPI 00000ab7: PUSH1 0x40 00000ab9: MLOAD 00000aba: PUSH3 0x461bcd 00000abe: PUSH1 0xe5 00000ac0: SHL 00000ac1: DUP2 00000ac2: MSTORE 00000ac3: PUSH1 0x04 00000ac5: ADD 00000ac6: PUSH2 0x04a3 00000ac9: SWAP1 00000aca: PUSH2 0x22ff 00000acd: JUMP 00000ace: JUMPDEST 00000acf: PUSH1 0x02 00000ad1: DUP3 00000ad2: GT 00000ad3: ISZERO 00000ad4: PUSH2 0x0aef 00000ad7: JUMPI 00000ad8: PUSH1 0x40 00000ada: MLOAD 00000adb: PUSH3 0x461bcd 00000adf: PUSH1 0xe5 00000ae1: SHL 00000ae2: DUP2 00000ae3: MSTORE 00000ae4: PUSH1 0x04 00000ae6: ADD 00000ae7: PUSH2 0x04a3 00000aea: SWAP1 00000aeb: PUSH2 0x24cf 00000aee: JUMP 00000aef: JUMPDEST 00000af0: DUP2 00000af1: PUSH2 0x0d0b 00000af4: JUMPI 00000af5: PUSH1 0x02 00000af7: DUP2 00000af8: GT 00000af9: ISZERO 00000afa: PUSH2 0x0b15 00000afd: JUMPI 00000afe: PUSH1 0x40 00000b00: MLOAD 00000b01: PUSH3 0x461bcd 00000b05: PUSH1 0xe5 00000b07: SHL 00000b08: DUP2 00000b09: MSTORE 00000b0a: PUSH1 0x04 00000b0c: ADD 00000b0d: PUSH2 0x04a3 00000b10: SWAP1 00000b11: PUSH2 0x2336 00000b14: JUMP 00000b15: JUMPDEST 00000b16: PUSH1 0x00 00000b18: DUP2 00000b19: DUP2 00000b1a: MSTORE 00000b1b: PUSH1 0x05 00000b1d: PUSH1 0x20 00000b1f: MSTORE 00000b20: PUSH1 0x40 00000b22: SWAP1 00000b23: KECCAK256 00000b24: PUSH1 0x01 00000b26: DUP2 00000b27: ADD 00000b28: SLOAD 00000b29: PUSH1 0x01 00000b2b: PUSH1 0x01 00000b2d: PUSH1 0xa0 00000b2f: SHL 00000b30: SUB 00000b31: AND 00000b32: PUSH2 0x0b4d 00000b35: JUMPI 00000b36: PUSH1 0x40 00000b38: MLOAD 00000b39: PUSH3 0x461bcd 00000b3d: PUSH1 0xe5 00000b3f: SHL 00000b40: DUP2 00000b41: MSTORE 00000b42: PUSH1 0x04 00000b44: ADD 00000b45: PUSH2 0x04a3 00000b48: SWAP1 00000b49: PUSH2 0x23a1 00000b4c: JUMP 00000b4d: JUMPDEST 00000b4e: PUSH1 0x00 00000b50: JUMPDEST 00000b51: PUSH1 0x03 00000b53: DUP3 00000b54: ADD 00000b55: SLOAD 00000b56: DUP2 00000b57: LT 00000b58: ISZERO 00000b59: PUSH2 0x0cac 00000b5c: JUMPI 00000b5d: CALLER 00000b5e: PUSH1 0x01 00000b60: PUSH1 0x01 00000b62: PUSH1 0xa0 00000b64: SHL 00000b65: SUB 00000b66: AND 00000b67: DUP3 00000b68: PUSH1 0x03 00000b6a: ADD 00000b6b: DUP3 00000b6c: DUP2 00000b6d: SLOAD 00000b6e: DUP2 00000b6f: LT 00000b70: PUSH2 0x0b89 00000b73: JUMPI 00000b74: PUSH4 0x4e487b71 00000b79: PUSH1 0xe0 00000b7b: SHL 00000b7c: PUSH1 0x00 00000b7e: MSTORE 00000b7f: PUSH1 0x32 00000b81: PUSH1 0x04 00000b83: MSTORE 00000b84: PUSH1 0x24 00000b86: PUSH1 0x00 00000b88: REVERT 00000b89: JUMPDEST 00000b8a: PUSH1 0x00 00000b8c: SWAP2 00000b8d: DUP3 00000b8e: MSTORE 00000b8f: PUSH1 0x20 00000b91: SWAP1 00000b92: SWAP2 00000b93: KECCAK256 00000b94: ADD 00000b95: SLOAD 00000b96: PUSH1 0x01 00000b98: PUSH1 0x01 00000b9a: PUSH1 0xa0 00000b9c: SHL 00000b9d: SUB 00000b9e: AND 00000b9f: EQ 00000ba0: ISZERO 00000ba1: PUSH2 0x0c9a 00000ba4: JUMPI 00000ba5: PUSH1 0x03 00000ba7: DUP3 00000ba8: ADD 00000ba9: SLOAD 00000baa: PUSH2 0x0bb5 00000bad: SWAP1 00000bae: PUSH1 0x01 00000bb0: SWAP1 00000bb1: PUSH2 0x256d 00000bb4: JUMP 00000bb5: JUMPDEST 00000bb6: DUP2 00000bb7: EQ 00000bb8: PUSH2 0x0c56 00000bbb: JUMPI 00000bbc: PUSH1 0x03 00000bbe: DUP3 00000bbf: ADD 00000bc0: DUP1 00000bc1: SLOAD 00000bc2: PUSH2 0x0bcd 00000bc5: SWAP1 00000bc6: PUSH1 0x01 00000bc8: SWAP1 00000bc9: PUSH2 0x256d 00000bcc: JUMP 00000bcd: JUMPDEST 00000bce: DUP2 00000bcf: SLOAD 00000bd0: DUP2 00000bd1: LT 00000bd2: PUSH2 0x0beb 00000bd5: JUMPI 00000bd6: PUSH4 0x4e487b71 00000bdb: PUSH1 0xe0 00000bdd: SHL 00000bde: PUSH1 0x00 00000be0: MSTORE 00000be1: PUSH1 0x32 00000be3: PUSH1 0x04 00000be5: MSTORE 00000be6: PUSH1 0x24 00000be8: PUSH1 0x00 00000bea: REVERT 00000beb: JUMPDEST 00000bec: PUSH1 0x00 00000bee: SWAP2 00000bef: DUP3 00000bf0: MSTORE 00000bf1: PUSH1 0x20 00000bf3: SWAP1 00000bf4: SWAP2 00000bf5: KECCAK256 00000bf6: ADD 00000bf7: SLOAD 00000bf8: PUSH1 0x03 00000bfa: DUP4 00000bfb: ADD 00000bfc: DUP1 00000bfd: SLOAD 00000bfe: PUSH1 0x01 00000c00: PUSH1 0x01 00000c02: PUSH1 0xa0 00000c04: SHL 00000c05: SUB 00000c06: SWAP1 00000c07: SWAP3 00000c08: AND 00000c09: SWAP2 00000c0a: DUP4 00000c0b: SWAP1 00000c0c: DUP2 00000c0d: LT 00000c0e: PUSH2 0x0c27 00000c11: JUMPI 00000c12: PUSH4 0x4e487b71 00000c17: PUSH1 0xe0 00000c19: SHL 00000c1a: PUSH1 0x00 00000c1c: MSTORE 00000c1d: PUSH1 0x32 00000c1f: PUSH1 0x04 00000c21: MSTORE 00000c22: PUSH1 0x24 00000c24: PUSH1 0x00 00000c26: REVERT 00000c27: JUMPDEST 00000c28: SWAP1 00000c29: PUSH1 0x00 00000c2b: MSTORE 00000c2c: PUSH1 0x20 00000c2e: PUSH1 0x00 00000c30: KECCAK256 00000c31: ADD 00000c32: PUSH1 0x00 00000c34: PUSH2 0x0100 00000c37: EXP 00000c38: DUP2 00000c39: SLOAD 00000c3a: DUP2 00000c3b: PUSH1 0x01 00000c3d: PUSH1 0x01 00000c3f: PUSH1 0xa0 00000c41: SHL 00000c42: SUB 00000c43: MUL 00000c44: NOT 00000c45: AND 00000c46: SWAP1 00000c47: DUP4 00000c48: PUSH1 0x01 00000c4a: PUSH1 0x01 00000c4c: PUSH1 0xa0 00000c4e: SHL 00000c4f: SUB 00000c50: AND 00000c51: MUL 00000c52: OR 00000c53: SWAP1 00000c54: SSTORE 00000c55: POP 00000c56: JUMPDEST 00000c57: DUP2 00000c58: PUSH1 0x03 00000c5a: ADD 00000c5b: DUP1 00000c5c: SLOAD 00000c5d: DUP1 00000c5e: PUSH2 0x0c77 00000c61: JUMPI 00000c62: PUSH4 0x4e487b71 00000c67: PUSH1 0xe0 00000c69: SHL 00000c6a: PUSH1 0x00 00000c6c: MSTORE 00000c6d: PUSH1 0x31 00000c6f: PUSH1 0x04 00000c71: MSTORE 00000c72: PUSH1 0x24 00000c74: PUSH1 0x00 00000c76: REVERT 00000c77: JUMPDEST 00000c78: PUSH1 0x00 00000c7a: DUP3 00000c7b: DUP2 00000c7c: MSTORE 00000c7d: PUSH1 0x20 00000c7f: SWAP1 00000c80: KECCAK256 00000c81: DUP2 00000c82: ADD 00000c83: PUSH1 0x00 00000c85: NOT 00000c86: SWAP1 00000c87: DUP2 00000c88: ADD 00000c89: DUP1 00000c8a: SLOAD 00000c8b: PUSH1 0x01 00000c8d: PUSH1 0x01 00000c8f: PUSH1 0xa0 00000c91: SHL 00000c92: SUB 00000c93: NOT 00000c94: AND 00000c95: SWAP1 00000c96: SSTORE 00000c97: ADD 00000c98: SWAP1 00000c99: SSTORE 00000c9a: JUMPDEST 00000c9b: DUP1 00000c9c: PUSH2 0x0ca4 00000c9f: DUP2 00000ca0: PUSH2 0x2584 00000ca3: JUMP 00000ca4: JUMPDEST 00000ca5: SWAP2 00000ca6: POP 00000ca7: POP 00000ca8: PUSH2 0x0b50 00000cab: JUMP 00000cac: JUMPDEST 00000cad: POP 00000cae: PUSH1 0x03 00000cb0: DUP2 00000cb1: ADD 00000cb2: SLOAD 00000cb3: PUSH2 0x0d05 00000cb6: JUMPI 00000cb7: PUSH1 0x00 00000cb9: DUP3 00000cba: DUP2 00000cbb: MSTORE 00000cbc: PUSH1 0x05 00000cbe: PUSH1 0x20 00000cc0: MSTORE 00000cc1: PUSH1 0x40 00000cc3: DUP2 00000cc4: KECCAK256 00000cc5: DUP1 00000cc6: SLOAD 00000cc7: PUSH1 0x01 00000cc9: PUSH1 0x01 00000ccb: PUSH1 0xa0 00000ccd: SHL 00000cce: SUB 00000ccf: NOT 00000cd0: SWAP1 00000cd1: DUP2 00000cd2: AND 00000cd3: DUP3 00000cd4: SSTORE 00000cd5: PUSH1 0x01 00000cd7: DUP3 00000cd8: ADD 00000cd9: DUP1 00000cda: SLOAD 00000cdb: SWAP1 00000cdc: SWAP2 00000cdd: AND 00000cde: SWAP1 00000cdf: SSTORE 00000ce0: PUSH1 0x02 00000ce2: DUP2 00000ce3: ADD 00000ce4: DUP3 00000ce5: SWAP1 00000ce6: SSTORE 00000ce7: SWAP1 00000ce8: PUSH2 0x0cf4 00000ceb: PUSH1 0x03 00000ced: DUP4 00000cee: ADD 00000cef: DUP3 00000cf0: PUSH2 0x1ed4 00000cf3: JUMP 00000cf4: JUMPDEST 00000cf5: POP 00000cf6: PUSH1 0x00 00000cf8: PUSH1 0x04 00000cfa: DUP3 00000cfb: ADD 00000cfc: DUP2 00000cfd: SWAP1 00000cfe: SSTORE 00000cff: PUSH1 0x05 00000d01: SWAP1 00000d02: SWAP2 00000d03: ADD 00000d04: SSTORE 00000d05: JUMPDEST 00000d06: POP 00000d07: PUSH2 0x1092 00000d0a: JUMP 00000d0b: JUMPDEST 00000d0c: PUSH1 0x01 00000d0e: DUP3 00000d0f: EQ 00000d10: ISZERO 00000d11: PUSH2 0x0ed9 00000d14: JUMPI 00000d15: DUP1 00000d16: ISZERO 00000d17: DUP1 00000d18: PUSH2 0x0d21 00000d1b: JUMPI 00000d1c: POP 00000d1d: PUSH1 0x01 00000d1f: DUP2 00000d20: EQ 00000d21: JUMPDEST 00000d22: PUSH2 0x0d3d 00000d25: JUMPI 00000d26: PUSH1 0x40 00000d28: MLOAD 00000d29: PUSH3 0x461bcd 00000d2d: PUSH1 0xe5 00000d2f: SHL 00000d30: DUP2 00000d31: MSTORE 00000d32: PUSH1 0x04 00000d34: ADD 00000d35: PUSH2 0x04a3 00000d38: SWAP1 00000d39: PUSH2 0x2336 00000d3c: JUMP 00000d3d: JUMPDEST 00000d3e: PUSH1 0x0a 00000d40: SLOAD 00000d41: PUSH2 0x0d5c 00000d44: JUMPI 00000d45: PUSH1 0x40 00000d47: MLOAD 00000d48: PUSH3 0x461bcd 00000d4c: PUSH1 0xe5 00000d4e: SHL 00000d4f: DUP2 00000d50: MSTORE 00000d51: PUSH1 0x04 00000d53: ADD 00000d54: PUSH2 0x04a3 00000d57: SWAP1 00000d58: PUSH2 0x24a7 00000d5b: JUMP 00000d5c: JUMPDEST 00000d5d: PUSH1 0x00 00000d5f: JUMPDEST 00000d60: PUSH1 0x0b 00000d62: SLOAD 00000d63: DUP2 00000d64: LT 00000d65: ISZERO 00000d66: PUSH2 0x0ea9 00000d69: JUMPI 00000d6a: PUSH1 0x0b 00000d6c: DUP1 00000d6d: SLOAD 00000d6e: CALLER 00000d6f: SWAP2 00000d70: SWAP1 00000d71: DUP4 00000d72: SWAP1 00000d73: DUP2 00000d74: LT 00000d75: PUSH2 0x0d8e 00000d78: JUMPI 00000d79: PUSH4 0x4e487b71 00000d7e: PUSH1 0xe0 00000d80: SHL 00000d81: PUSH1 0x00 00000d83: MSTORE 00000d84: PUSH1 0x32 00000d86: PUSH1 0x04 00000d88: MSTORE 00000d89: PUSH1 0x24 00000d8b: PUSH1 0x00 00000d8d: REVERT 00000d8e: JUMPDEST 00000d8f: PUSH1 0x00 00000d91: SWAP2 00000d92: DUP3 00000d93: MSTORE 00000d94: PUSH1 0x20 00000d96: SWAP1 00000d97: SWAP2 00000d98: KECCAK256 00000d99: ADD 00000d9a: SLOAD 00000d9b: PUSH1 0x01 00000d9d: PUSH1 0x01 00000d9f: PUSH1 0xa0 00000da1: SHL 00000da2: SUB 00000da3: AND 00000da4: EQ 00000da5: ISZERO 00000da6: PUSH2 0x0e97 00000da9: JUMPI 00000daa: PUSH1 0x0b 00000dac: SLOAD 00000dad: PUSH2 0x0db8 00000db0: SWAP1 00000db1: PUSH1 0x01 00000db3: SWAP1 00000db4: PUSH2 0x256d 00000db7: JUMP 00000db8: JUMPDEST 00000db9: DUP2 00000dba: EQ 00000dbb: PUSH2 0x0e55 00000dbe: JUMPI 00000dbf: PUSH1 0x0b 00000dc1: DUP1 00000dc2: SLOAD 00000dc3: PUSH2 0x0dce 00000dc6: SWAP1 00000dc7: PUSH1 0x01 00000dc9: SWAP1 00000dca: PUSH2 0x256d 00000dcd: JUMP 00000dce: JUMPDEST 00000dcf: DUP2 00000dd0: SLOAD 00000dd1: DUP2 00000dd2: LT 00000dd3: PUSH2 0x0dec 00000dd6: JUMPI 00000dd7: PUSH4 0x4e487b71 00000ddc: PUSH1 0xe0 00000dde: SHL 00000ddf: PUSH1 0x00 00000de1: MSTORE 00000de2: PUSH1 0x32 00000de4: PUSH1 0x04 00000de6: MSTORE 00000de7: PUSH1 0x24 00000de9: PUSH1 0x00 00000deb: REVERT 00000dec: JUMPDEST 00000ded: PUSH1 0x00 00000def: SWAP2 00000df0: DUP3 00000df1: MSTORE 00000df2: PUSH1 0x20 00000df4: SWAP1 00000df5: SWAP2 00000df6: KECCAK256 00000df7: ADD 00000df8: SLOAD 00000df9: PUSH1 0x0b 00000dfb: DUP1 00000dfc: SLOAD 00000dfd: PUSH1 0x01 00000dff: PUSH1 0x01 00000e01: PUSH1 0xa0 00000e03: SHL 00000e04: SUB 00000e05: SWAP1 00000e06: SWAP3 00000e07: AND 00000e08: SWAP2 00000e09: DUP4 00000e0a: SWAP1 00000e0b: DUP2 00000e0c: LT 00000e0d: PUSH2 0x0e26 00000e10: JUMPI 00000e11: PUSH4 0x4e487b71 00000e16: PUSH1 0xe0 00000e18: SHL 00000e19: PUSH1 0x00 00000e1b: MSTORE 00000e1c: PUSH1 0x32 00000e1e: PUSH1 0x04 00000e20: MSTORE 00000e21: PUSH1 0x24 00000e23: PUSH1 0x00 00000e25: REVERT 00000e26: JUMPDEST 00000e27: SWAP1 00000e28: PUSH1 0x00 00000e2a: MSTORE 00000e2b: PUSH1 0x20 00000e2d: PUSH1 0x00 00000e2f: KECCAK256 00000e30: ADD 00000e31: PUSH1 0x00 00000e33: PUSH2 0x0100 00000e36: EXP 00000e37: DUP2 00000e38: SLOAD 00000e39: DUP2 00000e3a: PUSH1 0x01 00000e3c: PUSH1 0x01 00000e3e: PUSH1 0xa0 00000e40: SHL 00000e41: SUB 00000e42: MUL 00000e43: NOT 00000e44: AND 00000e45: SWAP1 00000e46: DUP4 00000e47: PUSH1 0x01 00000e49: PUSH1 0x01 00000e4b: PUSH1 0xa0 00000e4d: SHL 00000e4e: SUB 00000e4f: AND 00000e50: MUL 00000e51: OR 00000e52: SWAP1 00000e53: SSTORE 00000e54: POP 00000e55: JUMPDEST 00000e56: PUSH1 0x0b 00000e58: DUP1 00000e59: SLOAD 00000e5a: DUP1 00000e5b: PUSH2 0x0e74 00000e5e: JUMPI 00000e5f: PUSH4 0x4e487b71 00000e64: PUSH1 0xe0 00000e66: SHL 00000e67: PUSH1 0x00 00000e69: MSTORE 00000e6a: PUSH1 0x31 00000e6c: PUSH1 0x04 00000e6e: MSTORE 00000e6f: PUSH1 0x24 00000e71: PUSH1 0x00 00000e73: REVERT 00000e74: JUMPDEST 00000e75: PUSH1 0x00 00000e77: DUP3 00000e78: DUP2 00000e79: MSTORE 00000e7a: PUSH1 0x20 00000e7c: SWAP1 00000e7d: KECCAK256 00000e7e: DUP2 00000e7f: ADD 00000e80: PUSH1 0x00 00000e82: NOT 00000e83: SWAP1 00000e84: DUP2 00000e85: ADD 00000e86: DUP1 00000e87: SLOAD 00000e88: PUSH1 0x01 00000e8a: PUSH1 0x01 00000e8c: PUSH1 0xa0 00000e8e: SHL 00000e8f: SUB 00000e90: NOT 00000e91: AND 00000e92: SWAP1 00000e93: SSTORE 00000e94: ADD 00000e95: SWAP1 00000e96: SSTORE 00000e97: JUMPDEST 00000e98: DUP1 00000e99: PUSH2 0x0ea1 00000e9c: DUP2 00000e9d: PUSH2 0x2584 00000ea0: JUMP 00000ea1: JUMPDEST 00000ea2: SWAP2 00000ea3: POP 00000ea4: POP 00000ea5: PUSH2 0x0d5f 00000ea8: JUMP 00000ea9: JUMPDEST 00000eaa: POP 00000eab: PUSH1 0x0b 00000ead: SLOAD 00000eae: PUSH2 0x0ed4 00000eb1: JUMPI 00000eb2: PUSH1 0x00 00000eb4: PUSH1 0x09 00000eb6: DUP2 00000eb7: DUP2 00000eb8: SSTORE 00000eb9: PUSH1 0x0a 00000ebb: DUP3 00000ebc: SWAP1 00000ebd: SSTORE 00000ebe: SWAP1 00000ebf: PUSH2 0x0ec9 00000ec2: PUSH1 0x0b 00000ec4: DUP3 00000ec5: PUSH2 0x1ed4 00000ec8: JUMP 00000ec9: JUMPDEST 00000eca: PUSH1 0x03 00000ecc: DUP3 00000ecd: ADD 00000ece: PUSH1 0x00 00000ed0: SWAP1 00000ed1: SSTORE 00000ed2: POP 00000ed3: POP 00000ed4: JUMPDEST 00000ed5: PUSH2 0x1092 00000ed8: JUMP 00000ed9: JUMPDEST 00000eda: PUSH1 0x02 00000edc: DUP3 00000edd: EQ 00000ede: ISZERO 00000edf: PUSH2 0x1092 00000ee2: JUMPI 00000ee3: PUSH1 0x0d 00000ee5: SLOAD 00000ee6: PUSH1 0x01 00000ee8: PUSH1 0x01 00000eea: PUSH1 0xa0 00000eec: SHL 00000eed: SUB 00000eee: AND 00000eef: PUSH2 0x0f0a 00000ef2: JUMPI 00000ef3: PUSH1 0x40 00000ef5: MLOAD 00000ef6: PUSH3 0x461bcd 00000efa: PUSH1 0xe5 00000efc: SHL 00000efd: DUP2 00000efe: MSTORE 00000eff: PUSH1 0x04 00000f01: ADD 00000f02: PUSH2 0x04a3 00000f05: SWAP1 00000f06: PUSH2 0x22af 00000f09: JUMP 00000f0a: JUMPDEST 00000f0b: PUSH1 0x00 00000f0d: JUMPDEST 00000f0e: PUSH1 0x0f 00000f10: SLOAD 00000f11: DUP2 00000f12: LT 00000f13: ISZERO 00000f14: PUSH2 0x1057 00000f17: JUMPI 00000f18: PUSH1 0x0f 00000f1a: DUP1 00000f1b: SLOAD 00000f1c: CALLER 00000f1d: SWAP2 00000f1e: SWAP1 00000f1f: DUP4 00000f20: SWAP1 00000f21: DUP2 00000f22: LT 00000f23: PUSH2 0x0f3c 00000f26: JUMPI 00000f27: PUSH4 0x4e487b71 00000f2c: PUSH1 0xe0 00000f2e: SHL 00000f2f: PUSH1 0x00 00000f31: MSTORE 00000f32: PUSH1 0x32 00000f34: PUSH1 0x04 00000f36: MSTORE 00000f37: PUSH1 0x24 00000f39: PUSH1 0x00 00000f3b: REVERT 00000f3c: JUMPDEST 00000f3d: PUSH1 0x00 00000f3f: SWAP2 00000f40: DUP3 00000f41: MSTORE 00000f42: PUSH1 0x20 00000f44: SWAP1 00000f45: SWAP2 00000f46: KECCAK256 00000f47: ADD 00000f48: SLOAD 00000f49: PUSH1 0x01 00000f4b: PUSH1 0x01 00000f4d: PUSH1 0xa0 00000f4f: SHL 00000f50: SUB 00000f51: AND 00000f52: EQ 00000f53: ISZERO 00000f54: PUSH2 0x1045 00000f57: JUMPI 00000f58: PUSH1 0x0f 00000f5a: SLOAD 00000f5b: PUSH2 0x0f66 00000f5e: SWAP1 00000f5f: PUSH1 0x01 00000f61: SWAP1 00000f62: PUSH2 0x256d 00000f65: JUMP 00000f66: JUMPDEST 00000f67: DUP2 00000f68: EQ 00000f69: PUSH2 0x1003 00000f6c: JUMPI 00000f6d: PUSH1 0x0f 00000f6f: DUP1 00000f70: SLOAD 00000f71: PUSH2 0x0f7c 00000f74: SWAP1 00000f75: PUSH1 0x01 00000f77: SWAP1 00000f78: PUSH2 0x256d 00000f7b: JUMP 00000f7c: JUMPDEST 00000f7d: DUP2 00000f7e: SLOAD 00000f7f: DUP2 00000f80: LT 00000f81: PUSH2 0x0f9a 00000f84: JUMPI 00000f85: PUSH4 0x4e487b71 00000f8a: PUSH1 0xe0 00000f8c: SHL 00000f8d: PUSH1 0x00 00000f8f: MSTORE 00000f90: PUSH1 0x32 00000f92: PUSH1 0x04 00000f94: MSTORE 00000f95: PUSH1 0x24 00000f97: PUSH1 0x00 00000f99: REVERT 00000f9a: JUMPDEST 00000f9b: PUSH1 0x00 00000f9d: SWAP2 00000f9e: DUP3 00000f9f: MSTORE 00000fa0: PUSH1 0x20 00000fa2: SWAP1 00000fa3: SWAP2 00000fa4: KECCAK256 00000fa5: ADD 00000fa6: SLOAD 00000fa7: PUSH1 0x0f 00000fa9: DUP1 00000faa: SLOAD 00000fab: PUSH1 0x01 00000fad: PUSH1 0x01 00000faf: PUSH1 0xa0 00000fb1: SHL 00000fb2: SUB 00000fb3: SWAP1 00000fb4: SWAP3 00000fb5: AND 00000fb6: SWAP2 00000fb7: DUP4 00000fb8: SWAP1 00000fb9: DUP2 00000fba: LT 00000fbb: PUSH2 0x0fd4 00000fbe: JUMPI 00000fbf: PUSH4 0x4e487b71 00000fc4: PUSH1 0xe0 00000fc6: SHL 00000fc7: PUSH1 0x00 00000fc9: MSTORE 00000fca: PUSH1 0x32 00000fcc: PUSH1 0x04 00000fce: MSTORE 00000fcf: PUSH1 0x24 00000fd1: PUSH1 0x00 00000fd3: REVERT 00000fd4: JUMPDEST 00000fd5: SWAP1 00000fd6: PUSH1 0x00 00000fd8: MSTORE 00000fd9: PUSH1 0x20 00000fdb: PUSH1 0x00 00000fdd: KECCAK256 00000fde: ADD 00000fdf: PUSH1 0x00 00000fe1: PUSH2 0x0100 00000fe4: EXP 00000fe5: DUP2 00000fe6: SLOAD 00000fe7: DUP2 00000fe8: PUSH1 0x01 00000fea: PUSH1 0x01 00000fec: PUSH1 0xa0 00000fee: SHL 00000fef: SUB 00000ff0: MUL 00000ff1: NOT 00000ff2: AND 00000ff3: SWAP1 00000ff4: DUP4 00000ff5: PUSH1 0x01 00000ff7: PUSH1 0x01 00000ff9: PUSH1 0xa0 00000ffb: SHL 00000ffc: SUB 00000ffd: AND 00000ffe: MUL 00000fff: OR 00001000: SWAP1 00001001: SSTORE 00001002: POP 00001003: JUMPDEST 00001004: PUSH1 0x0f 00001006: DUP1 00001007: SLOAD 00001008: DUP1 00001009: PUSH2 0x1022 0000100c: JUMPI 0000100d: PUSH4 0x4e487b71 00001012: PUSH1 0xe0 00001014: SHL 00001015: PUSH1 0x00 00001017: MSTORE 00001018: PUSH1 0x31 0000101a: PUSH1 0x04 0000101c: MSTORE 0000101d: PUSH1 0x24 0000101f: PUSH1 0x00 00001021: REVERT 00001022: JUMPDEST 00001023: PUSH1 0x00 00001025: DUP3 00001026: DUP2 00001027: MSTORE 00001028: PUSH1 0x20 0000102a: SWAP1 0000102b: KECCAK256 0000102c: DUP2 0000102d: ADD 0000102e: PUSH1 0x00 00001030: NOT 00001031: SWAP1 00001032: DUP2 00001033: ADD 00001034: DUP1 00001035: SLOAD 00001036: PUSH1 0x01 00001038: PUSH1 0x01 0000103a: PUSH1 0xa0 0000103c: SHL 0000103d: SUB 0000103e: NOT 0000103f: AND 00001040: SWAP1 00001041: SSTORE 00001042: ADD 00001043: SWAP1 00001044: SSTORE 00001045: JUMPDEST 00001046: DUP1 00001047: PUSH2 0x104f 0000104a: DUP2 0000104b: PUSH2 0x2584 0000104e: JUMP 0000104f: JUMPDEST 00001050: SWAP2 00001051: POP 00001052: POP 00001053: PUSH2 0x0f0d 00001056: JUMP 00001057: JUMPDEST 00001058: POP 00001059: PUSH1 0x0f 0000105b: SLOAD 0000105c: PUSH2 0x1092 0000105f: JUMPI 00001060: PUSH1 0x0d 00001062: DUP1 00001063: SLOAD 00001064: PUSH1 0x01 00001066: PUSH1 0x01 00001068: PUSH1 0xa0 0000106a: SHL 0000106b: SUB 0000106c: NOT 0000106d: SWAP1 0000106e: DUP2 0000106f: AND 00001070: DUP3 00001071: SSTORE 00001072: PUSH1 0x0e 00001074: DUP1 00001075: SLOAD 00001076: SWAP1 00001077: SWAP2 00001078: AND 00001079: SWAP1 0000107a: SSTORE 0000107b: PUSH1 0x00 0000107d: PUSH2 0x1087 00001080: PUSH1 0x0f 00001082: DUP3 00001083: PUSH2 0x1ed4 00001086: JUMP 00001087: JUMPDEST 00001088: PUSH1 0x03 0000108a: DUP3 0000108b: ADD 0000108c: PUSH1 0x00 0000108e: SWAP1 0000108f: SSTORE 00001090: POP 00001091: POP 00001092: JUMPDEST 00001093: POP 00001094: POP 00001095: JUMP 00001096: JUMPDEST 00001097: PUSH2 0x109f 0000109a: CALLER 0000109b: PUSH2 0x1bf9 0000109e: JUMP 0000109f: JUMPDEST 000010a0: PUSH2 0x10bb 000010a3: JUMPI 000010a4: PUSH1 0x40 000010a6: MLOAD 000010a7: PUSH3 0x461bcd 000010ab: PUSH1 0xe5 000010ad: SHL 000010ae: DUP2 000010af: MSTORE 000010b0: PUSH1 0x04 000010b2: ADD 000010b3: PUSH2 0x04a3 000010b6: SWAP1 000010b7: PUSH2 0x22ff 000010ba: JUMP 000010bb: JUMPDEST 000010bc: PUSH2 0x10c5 000010bf: DUP3 000010c0: DUP3 000010c1: PUSH2 0x1e77 000010c4: JUMP 000010c5: JUMPDEST 000010c6: PUSH1 0x01 000010c8: PUSH1 0x01 000010ca: PUSH1 0xa0 000010cc: SHL 000010cd: SUB 000010ce: DUP2 000010cf: AND 000010d0: PUSH2 0x10eb 000010d3: JUMPI 000010d4: PUSH1 0x40 000010d6: MLOAD 000010d7: PUSH3 0x461bcd 000010db: PUSH1 0xe5 000010dd: SHL 000010de: DUP2 000010df: MSTORE 000010e0: PUSH1 0x04 000010e2: ADD 000010e3: PUSH2 0x04a3 000010e6: SWAP1 000010e7: PUSH2 0x23ff 000010ea: JUMP 000010eb: JUMPDEST 000010ec: PUSH1 0x00 000010ee: PUSH2 0x10f9 000010f1: PUSH1 0x02 000010f3: PUSH1 0x00 000010f5: PUSH2 0x1c1b 000010f8: JUMP 000010f9: JUMPDEST 000010fa: PUSH2 0x115d 000010fd: PUSH1 0x0d 000010ff: PUSH1 0x02 00001101: ADD 00001102: DUP1 00001103: SLOAD 00001104: DUP1 00001105: PUSH1 0x20 00001107: MUL 00001108: PUSH1 0x20 0000110a: ADD 0000110b: PUSH1 0x40 0000110d: MLOAD 0000110e: SWAP1 0000110f: DUP2 00001110: ADD 00001111: PUSH1 0x40 00001113: MSTORE 00001114: DUP1 00001115: SWAP3 00001116: SWAP2 00001117: SWAP1 00001118: DUP2 00001119: DUP2 0000111a: MSTORE 0000111b: PUSH1 0x20 0000111d: ADD 0000111e: DUP3 0000111f: DUP1 00001120: SLOAD 00001121: DUP1 00001122: ISZERO 00001123: PUSH2 0x05ac 00001126: JUMPI 00001127: PUSH1 0x20 00001129: MUL 0000112a: DUP3 0000112b: ADD 0000112c: SWAP2 0000112d: SWAP1 0000112e: PUSH1 0x00 00001130: MSTORE 00001131: PUSH1 0x20 00001133: PUSH1 0x00 00001135: KECCAK256 00001136: SWAP1 00001137: DUP2 00001138: SLOAD 00001139: PUSH1 0x01 0000113b: PUSH1 0x01 0000113d: PUSH1 0xa0 0000113f: SHL 00001140: SUB 00001141: AND 00001142: DUP2 00001143: MSTORE 00001144: PUSH1 0x01 00001146: SWAP1 00001147: SWAP2 00001148: ADD 00001149: SWAP1 0000114a: PUSH1 0x20 0000114c: ADD 0000114d: DUP1 0000114e: DUP4 0000114f: GT 00001150: PUSH2 0x058e 00001153: JUMPI 00001154: POP 00001155: POP 00001156: POP 00001157: POP 00001158: POP 00001159: PUSH2 0x1d46 0000115c: JUMP 0000115d: JUMPDEST 0000115e: PUSH1 0x0f 00001160: SLOAD 00001161: PUSH2 0x1217 00001164: JUMPI 00001165: PUSH1 0x0d 00001167: DUP1 00001168: SLOAD 00001169: PUSH1 0x01 0000116b: PUSH1 0x01 0000116d: PUSH1 0xa0 0000116f: SHL 00001170: SUB 00001171: NOT 00001172: SWAP1 00001173: DUP2 00001174: AND 00001175: PUSH1 0x01 00001177: PUSH1 0x01 00001179: PUSH1 0xa0 0000117b: SHL 0000117c: SUB 0000117d: DUP7 0000117e: DUP2 0000117f: AND 00001180: SWAP2 00001181: SWAP1 00001182: SWAP2 00001183: OR 00001184: SWAP1 00001185: SWAP3 00001186: SSTORE 00001187: PUSH1 0x0e 00001189: DUP1 0000118a: SLOAD 0000118b: DUP3 0000118c: AND 0000118d: SWAP3 0000118e: DUP6 0000118f: AND 00001190: SWAP3 00001191: SWAP1 00001192: SWAP3 00001193: OR 00001194: SWAP1 00001195: SWAP2 00001196: SSTORE 00001197: PUSH1 0x0f 00001199: DUP1 0000119a: SLOAD 0000119b: PUSH1 0x01 0000119d: DUP2 0000119e: ADD 0000119f: DUP3 000011a0: SSTORE 000011a1: PUSH1 0x00 000011a3: SWAP2 000011a4: SWAP1 000011a5: SWAP2 000011a6: MSTORE 000011a7: PUSH32 0x8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802 000011c8: ADD 000011c9: DUP1 000011ca: SLOAD 000011cb: CALLER 000011cc: SWAP3 000011cd: AND 000011ce: DUP3 000011cf: OR 000011d0: SWAP1 000011d1: SSTORE 000011d2: TIMESTAMP 000011d3: PUSH1 0x10 000011d5: SSTORE 000011d6: PUSH1 0x40 000011d8: MLOAD 000011d9: PUSH32 0x4de1da2ebb8ff99f26de086191d18cf7fef6f4cd6ce5c2b553278ec98b244251 000011fa: SWAP2 000011fb: PUSH2 0x1209 000011fe: SWAP2 000011ff: DUP7 00001200: SWAP1 00001201: DUP7 00001202: SWAP1 00001203: DUP7 00001204: SWAP1 00001205: PUSH2 0x20ac 00001208: JUMP 00001209: JUMPDEST 0000120a: PUSH1 0x40 0000120c: MLOAD 0000120d: DUP1 0000120e: SWAP2 0000120f: SUB 00001210: SWAP1 00001211: LOG1 00001212: POP 00001213: PUSH2 0x1092 00001216: JUMP 00001217: JUMPDEST 00001218: PUSH1 0x0f 0000121a: DUP1 0000121b: SLOAD 0000121c: PUSH1 0x01 0000121e: DUP2 0000121f: ADD 00001220: DUP3 00001221: SSTORE 00001222: PUSH1 0x00 00001224: SWAP2 00001225: SWAP1 00001226: SWAP2 00001227: MSTORE 00001228: PUSH32 0x8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802 00001249: ADD 0000124a: DUP1 0000124b: SLOAD 0000124c: PUSH1 0x01 0000124e: PUSH1 0x01 00001250: PUSH1 0xa0 00001252: SHL 00001253: SUB 00001254: NOT 00001255: AND 00001256: CALLER 00001257: OR 00001258: SWAP1 00001259: SSTORE 0000125a: PUSH1 0x0d 0000125c: SLOAD 0000125d: PUSH1 0x01 0000125f: PUSH1 0x01 00001261: PUSH1 0xa0 00001263: SHL 00001264: SUB 00001265: SWAP1 00001266: DUP2 00001267: AND 00001268: SWAP1 00001269: DUP5 0000126a: AND 0000126b: EQ 0000126c: DUP1 0000126d: ISZERO 0000126e: PUSH2 0x1284 00001271: JUMPI 00001272: POP 00001273: PUSH1 0x0e 00001275: SLOAD 00001276: PUSH1 0x01 00001278: PUSH1 0x01 0000127a: PUSH1 0xa0 0000127c: SHL 0000127d: SUB 0000127e: DUP4 0000127f: DUP2 00001280: AND 00001281: SWAP2 00001282: AND 00001283: EQ 00001284: JUMPDEST 00001285: PUSH2 0x12a0 00001288: JUMPI 00001289: PUSH1 0x40 0000128b: MLOAD 0000128c: PUSH3 0x461bcd 00001290: PUSH1 0xe5 00001292: SHL 00001293: DUP2 00001294: MSTORE 00001295: PUSH1 0x04 00001297: ADD 00001298: PUSH2 0x04a3 0000129b: SWAP1 0000129c: PUSH2 0x247a 0000129f: JUMP 000012a0: JUMPDEST 000012a1: PUSH1 0x0f 000012a3: SLOAD 000012a4: PUSH1 0x03 000012a6: EQ 000012a7: ISZERO 000012a8: PUSH2 0x13c4 000012ab: JUMPI 000012ac: PUSH1 0x00 000012ae: JUMPDEST 000012af: PUSH1 0x02 000012b1: SLOAD 000012b2: DUP2 000012b3: LT 000012b4: ISZERO 000012b5: PUSH2 0x138d 000012b8: JUMPI 000012b9: PUSH1 0x0d 000012bb: SLOAD 000012bc: PUSH1 0x02 000012be: DUP1 000012bf: SLOAD 000012c0: PUSH1 0x01 000012c2: PUSH1 0x01 000012c4: PUSH1 0xa0 000012c6: SHL 000012c7: SUB 000012c8: SWAP1 000012c9: SWAP3 000012ca: AND 000012cb: SWAP2 000012cc: DUP4 000012cd: SWAP1 000012ce: DUP2 000012cf: LT 000012d0: PUSH2 0x12e9 000012d3: JUMPI 000012d4: PUSH4 0x4e487b71 000012d9: PUSH1 0xe0 000012db: SHL 000012dc: PUSH1 0x00 000012de: MSTORE 000012df: PUSH1 0x32 000012e1: PUSH1 0x04 000012e3: MSTORE 000012e4: PUSH1 0x24 000012e6: PUSH1 0x00 000012e8: REVERT 000012e9: JUMPDEST 000012ea: PUSH1 0x00 000012ec: SWAP2 000012ed: DUP3 000012ee: MSTORE 000012ef: PUSH1 0x20 000012f1: SWAP1 000012f2: SWAP2 000012f3: KECCAK256 000012f4: ADD 000012f5: SLOAD 000012f6: PUSH1 0x01 000012f8: PUSH1 0x01 000012fa: PUSH1 0xa0 000012fc: SHL 000012fd: SUB 000012fe: AND 000012ff: EQ 00001300: ISZERO 00001301: PUSH2 0x137b 00001304: JUMPI 00001305: DUP3 00001306: PUSH1 0x02 00001308: DUP3 00001309: DUP2 0000130a: SLOAD 0000130b: DUP2 0000130c: LT 0000130d: PUSH2 0x1326 00001310: JUMPI 00001311: PUSH4 0x4e487b71 00001316: PUSH1 0xe0 00001318: SHL 00001319: PUSH1 0x00 0000131b: MSTORE 0000131c: PUSH1 0x32 0000131e: PUSH1 0x04 00001320: MSTORE 00001321: PUSH1 0x24 00001323: PUSH1 0x00 00001325: REVERT 00001326: JUMPDEST 00001327: PUSH1 0x00 00001329: SWAP2 0000132a: DUP3 0000132b: MSTORE 0000132c: PUSH1 0x20 0000132e: DUP1 0000132f: DUP4 00001330: KECCAK256 00001331: SWAP2 00001332: SWAP1 00001333: SWAP2 00001334: ADD 00001335: DUP1 00001336: SLOAD 00001337: PUSH1 0x01 00001339: PUSH1 0x01 0000133b: PUSH1 0xa0 0000133d: SHL 0000133e: SUB 0000133f: NOT 00001340: AND 00001341: PUSH1 0x01 00001343: PUSH1 0x01 00001345: PUSH1 0xa0 00001347: SHL 00001348: SUB 00001349: SWAP5 0000134a: DUP6 0000134b: AND 0000134c: OR 0000134d: SWAP1 0000134e: SSTORE 0000134f: PUSH1 0x0d 00001351: SLOAD 00001352: DUP4 00001353: AND 00001354: DUP3 00001355: MSTORE 00001356: PUSH1 0x08 00001358: SWAP1 00001359: MSTORE 0000135a: PUSH1 0x40 0000135c: DUP1 0000135d: DUP3 0000135e: KECCAK256 0000135f: DUP1 00001360: SLOAD 00001361: PUSH1 0xff 00001363: NOT 00001364: SWAP1 00001365: DUP2 00001366: AND 00001367: SWAP1 00001368: SWAP2 00001369: SSTORE 0000136a: SWAP3 0000136b: DUP7 0000136c: AND 0000136d: DUP3 0000136e: MSTORE 0000136f: SWAP1 00001370: KECCAK256 00001371: DUP1 00001372: SLOAD 00001373: SWAP1 00001374: SWAP2 00001375: AND 00001376: PUSH1 0x01 00001378: OR 00001379: SWAP1 0000137a: SSTORE 0000137b: JUMPDEST 0000137c: DUP1 0000137d: PUSH2 0x1385 00001380: DUP2 00001381: PUSH2 0x2584 00001384: JUMP 00001385: JUMPDEST 00001386: SWAP2 00001387: POP 00001388: POP 00001389: PUSH2 0x12ae 0000138c: JUMP 0000138d: JUMPDEST 0000138e: POP 0000138f: PUSH1 0x0d 00001391: DUP1 00001392: SLOAD 00001393: PUSH1 0x01 00001395: PUSH1 0x01 00001397: PUSH1 0xa0 00001399: SHL 0000139a: SUB 0000139b: NOT 0000139c: SWAP1 0000139d: DUP2 0000139e: AND 0000139f: DUP3 000013a0: SSTORE 000013a1: PUSH1 0x0e 000013a3: DUP1 000013a4: SLOAD 000013a5: SWAP1 000013a6: SWAP2 000013a7: AND 000013a8: SWAP1 000013a9: SSTORE 000013aa: PUSH1 0x00 000013ac: PUSH2 0x13b6 000013af: PUSH1 0x0f 000013b1: DUP3 000013b2: PUSH2 0x1ed4 000013b5: JUMP 000013b6: JUMPDEST 000013b7: POP 000013b8: PUSH1 0x00 000013ba: PUSH1 0x03 000013bc: SWAP2 000013bd: SWAP1 000013be: SWAP2 000013bf: ADD 000013c0: SSTORE 000013c1: POP 000013c2: PUSH1 0x01 000013c4: JUMPDEST 000013c5: PUSH32 0x4de1da2ebb8ff99f26de086191d18cf7fef6f4cd6ce5c2b553278ec98b244251 000013e6: CALLER 000013e7: DUP5 000013e8: DUP5 000013e9: DUP5 000013ea: PUSH1 0x40 000013ec: MLOAD 000013ed: PUSH2 0x13f9 000013f0: SWAP5 000013f1: SWAP4 000013f2: SWAP3 000013f3: SWAP2 000013f4: SWAP1 000013f5: PUSH2 0x20ac 000013f8: JUMP 000013f9: JUMPDEST 000013fa: PUSH1 0x40 000013fc: MLOAD 000013fd: DUP1 000013fe: SWAP2 000013ff: SUB 00001400: SWAP1 00001401: LOG1 00001402: POP 00001403: POP 00001404: POP 00001405: JUMP 00001406: JUMPDEST 00001407: PUSH2 0x140f 0000140a: CALLER 0000140b: PUSH2 0x1bf9 0000140e: JUMP 0000140f: JUMPDEST 00001410: PUSH2 0x142b 00001413: JUMPI 00001414: PUSH1 0x40 00001416: MLOAD 00001417: PUSH3 0x461bcd 0000141b: PUSH1 0xe5 0000141d: SHL 0000141e: DUP2 0000141f: MSTORE 00001420: PUSH1 0x04 00001422: ADD 00001423: PUSH2 0x04a3 00001426: SWAP1 00001427: PUSH2 0x22ff 0000142a: JUMP 0000142b: JUMPDEST 0000142c: PUSH1 0x03 0000142e: SLOAD 0000142f: PUSH1 0x01 00001431: PUSH1 0x01 00001433: PUSH1 0xa0 00001435: SHL 00001436: SUB 00001437: DUP6 00001438: DUP2 00001439: AND 0000143a: SWAP2 0000143b: AND 0000143c: EQ 0000143d: DUP1 0000143e: ISZERO 0000143f: SWAP1 00001440: PUSH2 0x1457 00001443: JUMPI 00001444: POP 00001445: PUSH1 0x04 00001447: SLOAD 00001448: PUSH1 0x01 0000144a: PUSH1 0x01 0000144c: PUSH1 0xa0 0000144e: SHL 0000144f: SUB 00001450: DUP6 00001451: DUP2 00001452: AND 00001453: SWAP2 00001454: AND 00001455: EQ 00001456: ISZERO 00001457: JUMPDEST 00001458: PUSH2 0x1473 0000145b: JUMPI 0000145c: PUSH1 0x40 0000145e: MLOAD 0000145f: PUSH3 0x461bcd 00001463: PUSH1 0xe5 00001465: SHL 00001466: DUP2 00001467: MSTORE 00001468: PUSH1 0x04 0000146a: ADD 0000146b: PUSH2 0x04a3 0000146e: SWAP1 0000146f: PUSH2 0x22d7 00001472: JUMP 00001473: JUMPDEST 00001474: PUSH2 0x147c 00001477: DUP4 00001478: PUSH2 0x1bf9 0000147b: JUMP 0000147c: JUMPDEST 0000147d: PUSH2 0x1498 00001480: JUMPI 00001481: PUSH1 0x40 00001483: MLOAD 00001484: PUSH3 0x461bcd 00001488: PUSH1 0xe5 0000148a: SHL 0000148b: DUP2 0000148c: MSTORE 0000148d: PUSH1 0x04 0000148f: ADD 00001490: PUSH2 0x04a3 00001493: SWAP1 00001494: PUSH2 0x23cf 00001497: JUMP 00001498: JUMPDEST 00001499: PUSH1 0x00 0000149b: DUP1 0000149c: MSTORE 0000149d: PUSH1 0x06 0000149f: PUSH1 0x20 000014a1: MSTORE 000014a2: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fc 000014c3: SLOAD 000014c4: PUSH1 0x00 000014c6: DUP1 000014c7: MLOAD 000014c8: PUSH1 0x20 000014ca: PUSH2 0x25b6 000014cd: DUP4 000014ce: CODECOPY 000014cf: DUP2 000014d0: MLOAD 000014d1: SWAP2 000014d2: MSTORE 000014d3: SWAP1 000014d4: DUP1 000014d5: ISZERO 000014d6: DUP1 000014d7: ISZERO 000014d8: SWAP1 000014d9: PUSH2 0x14ec 000014dc: JUMPI 000014dd: POP 000014de: PUSH2 0x0384 000014e1: PUSH2 0x14ea 000014e4: DUP3 000014e5: TIMESTAMP 000014e6: PUSH2 0x256d 000014e9: JUMP 000014ea: JUMPDEST 000014eb: GT 000014ec: JUMPDEST 000014ed: ISZERO 000014ee: PUSH2 0x15a2 000014f1: JUMPI 000014f2: PUSH1 0x00 000014f4: DUP1 000014f5: DUP1 000014f6: MSTORE 000014f7: PUSH1 0x06 000014f9: PUSH1 0x20 000014fb: MSTORE 000014fc: PUSH1 0x00 000014fe: DUP1 000014ff: MLOAD 00001500: PUSH1 0x20 00001502: PUSH2 0x25b6 00001505: DUP4 00001506: CODECOPY 00001507: DUP2 00001508: MLOAD 00001509: SWAP2 0000150a: MSTORE 0000150b: DUP1 0000150c: SLOAD 0000150d: PUSH1 0x01 0000150f: PUSH1 0x01 00001511: PUSH1 0xa0 00001513: SHL 00001514: SUB 00001515: NOT 00001516: SWAP1 00001517: DUP2 00001518: AND 00001519: DUP3 0000151a: SSTORE 0000151b: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9 0000153c: DUP1 0000153d: SLOAD 0000153e: SWAP1 0000153f: SWAP2 00001540: AND 00001541: SWAP1 00001542: SSTORE 00001543: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa 00001564: DUP3 00001565: SWAP1 00001566: SSTORE 00001567: SWAP1 00001568: PUSH2 0x1591 0000156b: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb 0000158c: DUP3 0000158d: PUSH2 0x1ed4 00001590: JUMP 00001591: JUMPDEST 00001592: POP 00001593: PUSH1 0x00 00001595: PUSH1 0x04 00001597: DUP3 00001598: ADD 00001599: DUP2 0000159a: SWAP1 0000159b: SSTORE 0000159c: PUSH1 0x05 0000159e: SWAP1 0000159f: SWAP2 000015a0: ADD 000015a1: SSTORE 000015a2: JUMPDEST 000015a3: PUSH1 0x00 000015a5: PUSH2 0x1607 000015a8: DUP4 000015a9: PUSH1 0x03 000015ab: ADD 000015ac: DUP1 000015ad: SLOAD 000015ae: DUP1 000015af: PUSH1 0x20 000015b1: MUL 000015b2: PUSH1 0x20 000015b4: ADD 000015b5: PUSH1 0x40 000015b7: MLOAD 000015b8: SWAP1 000015b9: DUP2 000015ba: ADD 000015bb: PUSH1 0x40 000015bd: MSTORE 000015be: DUP1 000015bf: SWAP3 000015c0: SWAP2 000015c1: SWAP1 000015c2: DUP2 000015c3: DUP2 000015c4: MSTORE 000015c5: PUSH1 0x20 000015c7: ADD 000015c8: DUP3 000015c9: DUP1 000015ca: SLOAD 000015cb: DUP1 000015cc: ISZERO 000015cd: PUSH2 0x05ac 000015d0: JUMPI 000015d1: PUSH1 0x20 000015d3: MUL 000015d4: DUP3 000015d5: ADD 000015d6: SWAP2 000015d7: SWAP1 000015d8: PUSH1 0x00 000015da: MSTORE 000015db: PUSH1 0x20 000015dd: PUSH1 0x00 000015df: KECCAK256 000015e0: SWAP1 000015e1: DUP2 000015e2: SLOAD 000015e3: PUSH1 0x01 000015e5: PUSH1 0x01 000015e7: PUSH1 0xa0 000015e9: SHL 000015ea: SUB 000015eb: AND 000015ec: DUP2 000015ed: MSTORE 000015ee: PUSH1 0x01 000015f0: SWAP1 000015f1: SWAP2 000015f2: ADD 000015f3: SWAP1 000015f4: PUSH1 0x20 000015f6: ADD 000015f7: DUP1 000015f8: DUP4 000015f9: GT 000015fa: PUSH2 0x058e 000015fd: JUMPI 000015fe: POP 000015ff: POP 00001600: POP 00001601: POP 00001602: POP 00001603: PUSH2 0x1d46 00001606: JUMP 00001607: JUMPDEST 00001608: PUSH1 0x01 0000160a: DUP4 0000160b: ADD 0000160c: SLOAD 0000160d: PUSH1 0x01 0000160f: PUSH1 0x01 00001611: PUSH1 0xa0 00001613: SHL 00001614: SUB 00001615: AND 00001616: PUSH2 0x16c3 00001619: JUMPI 0000161a: DUP3 0000161b: SLOAD 0000161c: PUSH1 0x01 0000161e: PUSH1 0x01 00001620: PUSH1 0xa0 00001622: SHL 00001623: SUB 00001624: NOT 00001625: SWAP1 00001626: DUP2 00001627: AND 00001628: PUSH1 0x01 0000162a: PUSH1 0x01 0000162c: PUSH1 0xa0 0000162e: SHL 0000162f: SUB 00001630: DUP10 00001631: DUP2 00001632: AND 00001633: SWAP2 00001634: SWAP1 00001635: SWAP2 00001636: OR 00001637: DUP6 00001638: SSTORE 00001639: PUSH1 0x01 0000163b: DUP1 0000163c: DUP7 0000163d: ADD 0000163e: DUP1 0000163f: SLOAD 00001640: DUP5 00001641: AND 00001642: SWAP3 00001643: DUP11 00001644: AND 00001645: SWAP3 00001646: SWAP1 00001647: SWAP3 00001648: OR 00001649: SWAP1 0000164a: SWAP2 0000164b: SSTORE 0000164c: PUSH1 0x02 0000164e: DUP6 0000164f: ADD 00001650: DUP8 00001651: SWAP1 00001652: SSTORE 00001653: PUSH1 0x03 00001655: DUP6 00001656: ADD 00001657: DUP1 00001658: SLOAD 00001659: SWAP2 0000165a: DUP3 0000165b: ADD 0000165c: DUP2 0000165d: SSTORE 0000165e: PUSH1 0x00 00001660: SWAP1 00001661: DUP2 00001662: MSTORE 00001663: PUSH1 0x20 00001665: SWAP1 00001666: KECCAK256 00001667: ADD 00001668: DUP1 00001669: SLOAD 0000166a: CALLER 0000166b: SWAP3 0000166c: AND 0000166d: DUP3 0000166e: OR 0000166f: SWAP1 00001670: SSTORE 00001671: TIMESTAMP 00001672: PUSH1 0x04 00001674: DUP6 00001675: ADD 00001676: SSTORE 00001677: PUSH1 0x05 00001679: DUP5 0000167a: ADD 0000167b: DUP6 0000167c: SWAP1 0000167d: SSTORE 0000167e: PUSH1 0x40 00001680: MLOAD 00001681: PUSH32 0x1f47622f5d505acde2babf8610db5c24be9279be61c3c5ce5949fa41e51eb2f3 000016a2: SWAP2 000016a3: PUSH2 0x16b3 000016a6: SWAP2 000016a7: DUP11 000016a8: SWAP1 000016a9: DUP11 000016aa: SWAP1 000016ab: DUP11 000016ac: SWAP1 000016ad: DUP8 000016ae: SWAP1 000016af: PUSH2 0x20d6 000016b2: JUMP 000016b3: JUMPDEST 000016b4: PUSH1 0x40 000016b6: MLOAD 000016b7: DUP1 000016b8: SWAP2 000016b9: SUB 000016ba: SWAP1 000016bb: LOG1 000016bc: POP 000016bd: POP 000016be: POP 000016bf: PUSH2 0x0862 000016c2: JUMP 000016c3: JUMPDEST 000016c4: DUP3 000016c5: SLOAD 000016c6: PUSH1 0x01 000016c8: PUSH1 0x01 000016ca: PUSH1 0xa0 000016cc: SHL 000016cd: SUB 000016ce: DUP9 000016cf: DUP2 000016d0: AND 000016d1: SWAP2 000016d2: AND 000016d3: EQ 000016d4: DUP1 000016d5: ISZERO 000016d6: PUSH2 0x16ee 000016d9: JUMPI 000016da: POP 000016db: PUSH1 0x01 000016dd: DUP4 000016de: ADD 000016df: SLOAD 000016e0: PUSH1 0x01 000016e2: PUSH1 0x01 000016e4: PUSH1 0xa0 000016e6: SHL 000016e7: SUB 000016e8: DUP8 000016e9: DUP2 000016ea: AND 000016eb: SWAP2 000016ec: AND 000016ed: EQ 000016ee: JUMPDEST 000016ef: DUP1 000016f0: ISZERO 000016f1: PUSH2 0x16fd 000016f4: JUMPI 000016f5: POP 000016f6: DUP5 000016f7: DUP4 000016f8: PUSH1 0x02 000016fa: ADD 000016fb: SLOAD 000016fc: EQ 000016fd: JUMPDEST 000016fe: DUP1 000016ff: ISZERO 00001700: PUSH2 0x170c 00001703: JUMPI 00001704: POP 00001705: DUP4 00001706: DUP4 00001707: PUSH1 0x05 00001709: ADD 0000170a: SLOAD 0000170b: EQ 0000170c: JUMPDEST 0000170d: PUSH2 0x1728 00001710: JUMPI 00001711: PUSH1 0x40 00001713: MLOAD 00001714: PUSH3 0x461bcd 00001718: PUSH1 0xe5 0000171a: SHL 0000171b: DUP2 0000171c: MSTORE 0000171d: PUSH1 0x04 0000171f: ADD 00001720: PUSH2 0x04a3 00001723: SWAP1 00001724: PUSH2 0x247a 00001727: JUMP 00001728: JUMPDEST 00001729: PUSH1 0x03 0000172b: DUP1 0000172c: DUP5 0000172d: ADD 0000172e: DUP1 0000172f: SLOAD 00001730: PUSH1 0x01 00001732: DUP2 00001733: ADD 00001734: DUP3 00001735: SSTORE 00001736: PUSH1 0x00 00001738: DUP3 00001739: DUP2 0000173a: MSTORE 0000173b: PUSH1 0x20 0000173d: SWAP1 0000173e: KECCAK256 0000173f: ADD 00001740: DUP1 00001741: SLOAD 00001742: PUSH1 0x01 00001744: PUSH1 0x01 00001746: PUSH1 0xa0 00001748: SHL 00001749: SUB 0000174a: NOT 0000174b: AND 0000174c: CALLER 0000174d: OR 0000174e: SWAP1 0000174f: SSTORE 00001750: SLOAD 00001751: EQ 00001752: ISZERO 00001753: PUSH2 0x1897 00001756: JUMPI 00001757: DUP3 00001758: SLOAD 00001759: PUSH1 0x01 0000175b: DUP5 0000175c: ADD 0000175d: SLOAD 0000175e: PUSH1 0x02 00001760: DUP6 00001761: ADD 00001762: SLOAD 00001763: PUSH1 0x40 00001765: MLOAD 00001766: PUSH4 0xa9059cbb 0000176b: PUSH1 0xe0 0000176d: SHL 0000176e: DUP2 0000176f: MSTORE 00001770: PUSH1 0x01 00001772: PUSH1 0x01 00001774: PUSH1 0xa0 00001776: SHL 00001777: SUB 00001778: SWAP4 00001779: DUP5 0000177a: AND 0000177b: SWAP4 0000177c: PUSH4 0xa9059cbb 00001781: SWAP4 00001782: PUSH2 0x1790 00001785: SWAP4 00001786: SWAP2 00001787: AND 00001788: SWAP2 00001789: PUSH1 0x04 0000178b: ADD 0000178c: PUSH2 0x2229 0000178f: JUMP 00001790: JUMPDEST 00001791: PUSH1 0x20 00001793: PUSH1 0x40 00001795: MLOAD 00001796: DUP1 00001797: DUP4 00001798: SUB 00001799: DUP2 0000179a: PUSH1 0x00 0000179c: DUP8 0000179d: DUP1 0000179e: EXTCODESIZE 0000179f: ISZERO 000017a0: DUP1 000017a1: ISZERO 000017a2: PUSH2 0x17aa 000017a5: JUMPI 000017a6: PUSH1 0x00 000017a8: DUP1 000017a9: REVERT 000017aa: JUMPDEST 000017ab: POP 000017ac: GAS 000017ad: CALL 000017ae: ISZERO 000017af: DUP1 000017b0: ISZERO 000017b1: PUSH2 0x17be 000017b4: JUMPI 000017b5: RETURNDATASIZE 000017b6: PUSH1 0x00 000017b8: DUP1 000017b9: RETURNDATACOPY 000017ba: RETURNDATASIZE 000017bb: PUSH1 0x00 000017bd: REVERT 000017be: JUMPDEST 000017bf: POP 000017c0: POP 000017c1: POP 000017c2: POP 000017c3: PUSH1 0x40 000017c5: MLOAD 000017c6: RETURNDATASIZE 000017c7: PUSH1 0x1f 000017c9: NOT 000017ca: PUSH1 0x1f 000017cc: DUP3 000017cd: ADD 000017ce: AND 000017cf: DUP3 000017d0: ADD 000017d1: DUP1 000017d2: PUSH1 0x40 000017d4: MSTORE 000017d5: POP 000017d6: DUP2 000017d7: ADD 000017d8: SWAP1 000017d9: PUSH2 0x17e2 000017dc: SWAP2 000017dd: SWAP1 000017de: PUSH2 0x1fb9 000017e1: JUMP 000017e2: JUMPDEST 000017e3: POP 000017e4: PUSH1 0x00 000017e6: DUP1 000017e7: DUP1 000017e8: MSTORE 000017e9: PUSH1 0x06 000017eb: PUSH1 0x20 000017ed: MSTORE 000017ee: PUSH1 0x00 000017f0: DUP1 000017f1: MLOAD 000017f2: PUSH1 0x20 000017f4: PUSH2 0x25b6 000017f7: DUP4 000017f8: CODECOPY 000017f9: DUP2 000017fa: MLOAD 000017fb: SWAP2 000017fc: MSTORE 000017fd: DUP1 000017fe: SLOAD 000017ff: PUSH1 0x01 00001801: PUSH1 0x01 00001803: PUSH1 0xa0 00001805: SHL 00001806: SUB 00001807: NOT 00001808: SWAP1 00001809: DUP2 0000180a: AND 0000180b: DUP3 0000180c: SSTORE 0000180d: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f9 0000182e: DUP1 0000182f: SLOAD 00001830: SWAP1 00001831: SWAP2 00001832: AND 00001833: SWAP1 00001834: SSTORE 00001835: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fa 00001856: DUP3 00001857: SWAP1 00001858: SSTORE 00001859: SWAP1 0000185a: PUSH2 0x1883 0000185d: PUSH32 0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4fb 0000187e: DUP3 0000187f: PUSH2 0x1ed4 00001882: JUMP 00001883: JUMPDEST 00001884: POP 00001885: PUSH1 0x00 00001887: PUSH1 0x04 00001889: DUP3 0000188a: ADD 0000188b: DUP2 0000188c: SWAP1 0000188d: SSTORE 0000188e: PUSH1 0x05 00001890: SWAP1 00001891: SWAP2 00001892: ADD 00001893: SSTORE 00001894: POP 00001895: PUSH1 0x01 00001897: JUMPDEST 00001898: PUSH32 0x1f47622f5d505acde2babf8610db5c24be9279be61c3c5ce5949fa41e51eb2f3 000018b9: CALLER 000018ba: DUP9 000018bb: DUP9 000018bc: DUP9 000018bd: DUP6 000018be: PUSH1 0x40 000018c0: MLOAD 000018c1: PUSH2 0x18ce 000018c4: SWAP6 000018c5: SWAP5 000018c6: SWAP4 000018c7: SWAP3 000018c8: SWAP2 000018c9: SWAP1 000018ca: PUSH2 0x20d6 000018cd: JUMP 000018ce: JUMPDEST 000018cf: PUSH1 0x40 000018d1: MLOAD 000018d2: DUP1 000018d3: SWAP2 000018d4: SUB 000018d5: SWAP1 000018d6: LOG1 000018d7: POP 000018d8: POP 000018d9: POP 000018da: POP 000018db: POP 000018dc: POP 000018dd: POP 000018de: JUMP 000018df: JUMPDEST 000018e0: PUSH1 0x05 000018e2: PUSH1 0x20 000018e4: DUP2 000018e5: SWAP1 000018e6: MSTORE 000018e7: PUSH1 0x00 000018e9: SWAP2 000018ea: DUP3 000018eb: MSTORE 000018ec: PUSH1 0x40 000018ee: SWAP1 000018ef: SWAP2 000018f0: KECCAK256 000018f1: DUP1 000018f2: SLOAD 000018f3: PUSH1 0x01 000018f5: DUP3 000018f6: ADD 000018f7: SLOAD 000018f8: PUSH1 0x02 000018fa: DUP4 000018fb: ADD 000018fc: SLOAD 000018fd: PUSH1 0x04 000018ff: DUP5 00001900: ADD 00001901: SLOAD 00001902: SWAP4 00001903: SWAP1 00001904: SWAP5 00001905: ADD 00001906: SLOAD 00001907: PUSH1 0x01 00001909: PUSH1 0x01 0000190b: PUSH1 0xa0 0000190d: SHL 0000190e: SUB 0000190f: SWAP3 00001910: DUP4 00001911: AND 00001912: SWAP5 00001913: SWAP3 00001914: SWAP1 00001915: SWAP2 00001916: AND 00001917: SWAP3 00001918: SWAP1 00001919: DUP6 0000191a: JUMP 0000191b: JUMPDEST 0000191c: PUSH1 0x0d 0000191e: SLOAD 0000191f: PUSH1 0x0e 00001921: SLOAD 00001922: PUSH1 0x0f 00001924: DUP1 00001925: SLOAD 00001926: PUSH1 0x40 00001928: DUP1 00001929: MLOAD 0000192a: PUSH1 0x20 0000192c: DUP1 0000192d: DUP5 0000192e: MUL 0000192f: DUP3 00001930: ADD 00001931: DUP2 00001932: ADD 00001933: SWAP1 00001934: SWAP3 00001935: MSTORE 00001936: DUP3 00001937: DUP2 00001938: MSTORE 00001939: PUSH1 0x01 0000193b: PUSH1 0x01 0000193d: PUSH1 0xa0 0000193f: SHL 00001940: SUB 00001941: SWAP6 00001942: DUP7 00001943: AND 00001944: SWAP6 00001945: SWAP1 00001946: SWAP5 00001947: AND 00001948: SWAP4 00001949: PUSH1 0x60 0000194b: SWAP4 0000194c: PUSH1 0x00 0000194e: SWAP4 0000194f: SWAP2 00001950: SWAP3 00001951: SWAP1 00001952: SWAP2 00001953: SWAP1 00001954: DUP4 00001955: ADD 00001956: DUP3 00001957: DUP3 00001958: DUP1 00001959: ISZERO 0000195a: PUSH2 0x198c 0000195d: JUMPI 0000195e: PUSH1 0x20 00001960: MUL 00001961: DUP3 00001962: ADD 00001963: SWAP2 00001964: SWAP1 00001965: PUSH1 0x00 00001967: MSTORE 00001968: PUSH1 0x20 0000196a: PUSH1 0x00 0000196c: KECCAK256 0000196d: SWAP1 0000196e: JUMPDEST 0000196f: DUP2 00001970: SLOAD 00001971: PUSH1 0x01 00001973: PUSH1 0x01 00001975: PUSH1 0xa0 00001977: SHL 00001978: SUB 00001979: AND 0000197a: DUP2 0000197b: MSTORE 0000197c: PUSH1 0x01 0000197e: SWAP1 0000197f: SWAP2 00001980: ADD 00001981: SWAP1 00001982: PUSH1 0x20 00001984: ADD 00001985: DUP1 00001986: DUP4 00001987: GT 00001988: PUSH2 0x196e 0000198b: JUMPI 0000198c: JUMPDEST 0000198d: POP 0000198e: POP 0000198f: POP 00001990: POP 00001991: POP 00001992: SWAP2 00001993: POP 00001994: PUSH1 0x0d 00001996: PUSH1 0x03 00001998: ADD 00001999: SLOAD 0000199a: SWAP1 0000199b: POP 0000199c: SWAP1 0000199d: SWAP2 0000199e: SWAP3 0000199f: SWAP4 000019a0: JUMP 000019a1: JUMPDEST 000019a2: PUSH2 0x19aa 000019a5: CALLER 000019a6: PUSH2 0x1bf9 000019a9: JUMP 000019aa: JUMPDEST 000019ab: PUSH2 0x19c6 000019ae: JUMPI 000019af: PUSH1 0x40 000019b1: MLOAD 000019b2: PUSH3 0x461bcd 000019b6: PUSH1 0xe5 000019b8: SHL 000019b9: DUP2 000019ba: MSTORE 000019bb: PUSH1 0x04 000019bd: ADD 000019be: PUSH2 0x04a3 000019c1: SWAP1 000019c2: PUSH2 0x22ff 000019c5: JUMP 000019c6: JUMPDEST 000019c7: DUP2 000019c8: ISZERO 000019c9: DUP1 000019ca: PUSH2 0x19d3 000019cd: JUMPI 000019ce: POP 000019cf: PUSH1 0x01 000019d1: DUP3 000019d2: EQ 000019d3: JUMPDEST 000019d4: PUSH2 0x19ef 000019d7: JUMPI 000019d8: PUSH1 0x40 000019da: MLOAD 000019db: PUSH3 0x461bcd 000019df: PUSH1 0xe5 000019e1: SHL 000019e2: DUP2 000019e3: MSTORE 000019e4: PUSH1 0x04 000019e6: ADD 000019e7: PUSH2 0x04a3 000019ea: SWAP1 000019eb: PUSH2 0x2336 000019ee: JUMP 000019ef: JUMPDEST 000019f0: PUSH1 0x00 000019f2: DUP2 000019f3: GT 000019f4: PUSH2 0x1a0f 000019f7: JUMPI 000019f8: PUSH1 0x40 000019fa: MLOAD 000019fb: PUSH3 0x461bcd 000019ff: PUSH1 0xe5 00001a01: SHL 00001a02: DUP2 00001a03: MSTORE 00001a04: PUSH1 0x04 00001a06: ADD 00001a07: PUSH2 0x04a3 00001a0a: SWAP1 00001a0b: PUSH2 0x24a7 00001a0e: JUMP 00001a0f: JUMPDEST 00001a10: PUSH1 0x00 00001a12: PUSH2 0x1a1c 00001a15: PUSH1 0x01 00001a17: DUP5 00001a18: PUSH2 0x1c1b 00001a1b: JUMP 00001a1c: JUMPDEST 00001a1d: PUSH2 0x1a80 00001a20: PUSH1 0x09 00001a22: PUSH1 0x02 00001a24: ADD 00001a25: DUP1 00001a26: SLOAD 00001a27: DUP1 00001a28: PUSH1 0x20 00001a2a: MUL 00001a2b: PUSH1 0x20 00001a2d: ADD 00001a2e: PUSH1 0x40 00001a30: MLOAD 00001a31: SWAP1 00001a32: DUP2 00001a33: ADD 00001a34: PUSH1 0x40 00001a36: MSTORE 00001a37: DUP1 00001a38: SWAP3 00001a39: SWAP2 00001a3a: SWAP1 00001a3b: DUP2 00001a3c: DUP2 00001a3d: MSTORE 00001a3e: PUSH1 0x20 00001a40: ADD 00001a41: DUP3 00001a42: DUP1 00001a43: SLOAD 00001a44: DUP1 00001a45: ISZERO 00001a46: PUSH2 0x05ac 00001a49: JUMPI 00001a4a: PUSH1 0x20 00001a4c: MUL 00001a4d: DUP3 00001a4e: ADD 00001a4f: SWAP2 00001a50: SWAP1 00001a51: PUSH1 0x00 00001a53: MSTORE 00001a54: PUSH1 0x20 00001a56: PUSH1 0x00 00001a58: KECCAK256 00001a59: SWAP1 00001a5a: DUP2 00001a5b: SLOAD 00001a5c: PUSH1 0x01 00001a5e: PUSH1 0x01 00001a60: PUSH1 0xa0 00001a62: SHL 00001a63: SUB 00001a64: AND 00001a65: DUP2 00001a66: MSTORE 00001a67: PUSH1 0x01 00001a69: SWAP1 00001a6a: SWAP2 00001a6b: ADD 00001a6c: SWAP1 00001a6d: PUSH1 0x20 00001a6f: ADD 00001a70: DUP1 00001a71: DUP4 00001a72: GT 00001a73: PUSH2 0x058e 00001a76: JUMPI 00001a77: POP 00001a78: POP 00001a79: POP 00001a7a: POP 00001a7b: POP 00001a7c: PUSH2 0x1d46 00001a7f: JUMP 00001a80: JUMPDEST 00001a81: PUSH1 0x0b 00001a83: SLOAD 00001a84: PUSH2 0x1b0e 00001a87: JUMPI 00001a88: PUSH1 0x09 00001a8a: DUP4 00001a8b: SWAP1 00001a8c: SSTORE 00001a8d: PUSH1 0x0a 00001a8f: DUP3 00001a90: SWAP1 00001a91: SSTORE 00001a92: PUSH1 0x0b 00001a94: DUP1 00001a95: SLOAD 00001a96: PUSH1 0x01 00001a98: DUP2 00001a99: ADD 00001a9a: DUP3 00001a9b: SSTORE 00001a9c: PUSH1 0x00 00001a9e: SWAP2 00001a9f: SWAP1 00001aa0: SWAP2 00001aa1: MSTORE 00001aa2: PUSH32 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9 00001ac3: ADD 00001ac4: DUP1 00001ac5: SLOAD 00001ac6: PUSH1 0x01 00001ac8: PUSH1 0x01 00001aca: PUSH1 0xa0 00001acc: SHL 00001acd: SUB 00001ace: NOT 00001acf: AND 00001ad0: CALLER 00001ad1: SWAP1 00001ad2: DUP2 00001ad3: OR 00001ad4: SWAP1 00001ad5: SWAP2 00001ad6: SSTORE 00001ad7: TIMESTAMP 00001ad8: PUSH1 0x0c 00001ada: SSTORE 00001adb: PUSH1 0x40 00001add: MLOAD 00001ade: PUSH32 0x6692196c862e8fb6ee9b07e8efc6f64d1c5903ff560277952d7d19dad7aff7bf 00001aff: SWAP2 00001b00: PUSH2 0x1209 00001b03: SWAP2 00001b04: DUP7 00001b05: SWAP1 00001b06: DUP7 00001b07: SWAP1 00001b08: DUP7 00001b09: SWAP1 00001b0a: PUSH2 0x227c 00001b0d: JUMP 00001b0e: JUMPDEST 00001b0f: PUSH1 0x0b 00001b11: DUP1 00001b12: SLOAD 00001b13: PUSH1 0x01 00001b15: DUP2 00001b16: ADD 00001b17: DUP3 00001b18: SSTORE 00001b19: PUSH1 0x00 00001b1b: SWAP2 00001b1c: SWAP1 00001b1d: SWAP2 00001b1e: MSTORE 00001b1f: PUSH32 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9 00001b40: ADD 00001b41: DUP1 00001b42: SLOAD 00001b43: PUSH1 0x01 00001b45: PUSH1 0x01 00001b47: PUSH1 0xa0 00001b49: SHL 00001b4a: SUB 00001b4b: NOT 00001b4c: AND 00001b4d: CALLER 00001b4e: OR 00001b4f: SWAP1 00001b50: SSTORE 00001b51: PUSH1 0x09 00001b53: SLOAD 00001b54: DUP4 00001b55: EQ 00001b56: DUP1 00001b57: ISZERO 00001b58: PUSH2 0x1b62 00001b5b: JUMPI 00001b5c: POP 00001b5d: PUSH1 0x0a 00001b5f: SLOAD 00001b60: DUP3 00001b61: EQ 00001b62: JUMPDEST 00001b63: PUSH2 0x1b7e 00001b66: JUMPI 00001b67: PUSH1 0x40 00001b69: MLOAD 00001b6a: PUSH3 0x461bcd 00001b6e: PUSH1 0xe5 00001b70: SHL 00001b71: DUP2 00001b72: MSTORE 00001b73: PUSH1 0x04 00001b75: ADD 00001b76: PUSH2 0x04a3 00001b79: SWAP1 00001b7a: PUSH2 0x247a 00001b7d: JUMP 00001b7e: JUMPDEST 00001b7f: PUSH1 0x0b 00001b81: SLOAD 00001b82: PUSH1 0x03 00001b84: EQ 00001b85: ISZERO 00001b86: PUSH2 0x1bc4 00001b89: JUMPI 00001b8a: DUP3 00001b8b: PUSH2 0x1b98 00001b8e: JUMPI 00001b8f: PUSH1 0x00 00001b91: DUP3 00001b92: SWAP1 00001b93: SSTORE 00001b94: PUSH2 0x1b9e 00001b97: JUMP 00001b98: JUMPDEST 00001b99: PUSH1 0x01 00001b9b: DUP3 00001b9c: SWAP1 00001b9d: SSTORE 00001b9e: JUMPDEST 00001b9f: PUSH1 0x00 00001ba1: PUSH1 0x09 00001ba3: DUP2 00001ba4: DUP2 00001ba5: SSTORE 00001ba6: PUSH1 0x0a 00001ba8: DUP3 00001ba9: SWAP1 00001baa: SSTORE 00001bab: SWAP1 00001bac: PUSH2 0x1bb6 00001baf: PUSH1 0x0b 00001bb1: DUP3 00001bb2: PUSH2 0x1ed4 00001bb5: JUMP 00001bb6: JUMPDEST 00001bb7: POP 00001bb8: PUSH1 0x00 00001bba: PUSH1 0x03 00001bbc: SWAP2 00001bbd: SWAP1 00001bbe: SWAP2 00001bbf: ADD 00001bc0: SSTORE 00001bc1: POP 00001bc2: PUSH1 0x01 00001bc4: JUMPDEST 00001bc5: PUSH32 0x6692196c862e8fb6ee9b07e8efc6f64d1c5903ff560277952d7d19dad7aff7bf 00001be6: CALLER 00001be7: DUP5 00001be8: DUP5 00001be9: DUP5 00001bea: PUSH1 0x40 00001bec: MLOAD 00001bed: PUSH2 0x13f9 00001bf0: SWAP5 00001bf1: SWAP4 00001bf2: SWAP3 00001bf3: SWAP2 00001bf4: SWAP1 00001bf5: PUSH2 0x227c 00001bf8: JUMP 00001bf9: JUMPDEST 00001bfa: PUSH1 0x01 00001bfc: PUSH1 0x01 00001bfe: PUSH1 0xa0 00001c00: SHL 00001c01: SUB 00001c02: DUP2 00001c03: AND 00001c04: PUSH1 0x00 00001c06: SWAP1 00001c07: DUP2 00001c08: MSTORE 00001c09: PUSH1 0x08 00001c0b: PUSH1 0x20 00001c0d: MSTORE 00001c0e: PUSH1 0x40 00001c10: SWAP1 00001c11: KECCAK256 00001c12: SLOAD 00001c13: PUSH1 0xff 00001c15: AND 00001c16: JUMPDEST 00001c17: SWAP2 00001c18: SWAP1 00001c19: POP 00001c1a: JUMP 00001c1b: JUMPDEST 00001c1c: DUP2 00001c1d: PUSH2 0x1c90 00001c20: JUMPI 00001c21: PUSH1 0x00 00001c23: DUP2 00001c24: DUP2 00001c25: MSTORE 00001c26: PUSH1 0x05 00001c28: PUSH1 0x20 00001c2a: MSTORE 00001c2b: PUSH1 0x40 00001c2d: SWAP1 00001c2e: KECCAK256 00001c2f: PUSH1 0x04 00001c31: ADD 00001c32: SLOAD 00001c33: DUP1 00001c34: PUSH2 0x1c3d 00001c37: JUMPI 00001c38: POP 00001c39: PUSH2 0x1092 00001c3c: JUMP 00001c3d: JUMPDEST 00001c3e: PUSH2 0x0384 00001c41: PUSH2 0x1c4a 00001c44: DUP3 00001c45: TIMESTAMP 00001c46: PUSH2 0x256d 00001c49: JUMP 00001c4a: JUMPDEST 00001c4b: GT 00001c4c: ISZERO 00001c4d: PUSH2 0x1c8e 00001c50: JUMPI 00001c51: PUSH1 0x00 00001c53: DUP3 00001c54: DUP2 00001c55: MSTORE 00001c56: PUSH1 0x05 00001c58: PUSH1 0x20 00001c5a: MSTORE 00001c5b: PUSH1 0x40 00001c5d: DUP2 00001c5e: KECCAK256 00001c5f: DUP1 00001c60: SLOAD 00001c61: PUSH1 0x01 00001c63: PUSH1 0x01 00001c65: PUSH1 0xa0 00001c67: SHL 00001c68: SUB 00001c69: NOT 00001c6a: SWAP1 00001c6b: DUP2 00001c6c: AND 00001c6d: DUP3 00001c6e: SSTORE 00001c6f: PUSH1 0x01 00001c71: DUP3 00001c72: ADD 00001c73: DUP1 00001c74: SLOAD 00001c75: SWAP1 00001c76: SWAP2 00001c77: AND 00001c78: SWAP1 00001c79: SSTORE 00001c7a: PUSH1 0x02 00001c7c: DUP2 00001c7d: ADD 00001c7e: DUP3 00001c7f: SWAP1 00001c80: SSTORE 00001c81: SWAP1 00001c82: PUSH2 0x0cf4 00001c85: PUSH1 0x03 00001c87: DUP4 00001c88: ADD 00001c89: DUP3 00001c8a: PUSH2 0x1ed4 00001c8d: JUMP 00001c8e: JUMPDEST 00001c8f: POP 00001c90: JUMPDEST 00001c91: PUSH1 0x01 00001c93: DUP3 00001c94: EQ 00001c95: ISZERO 00001c96: PUSH2 0x1ce4 00001c99: JUMPI 00001c9a: PUSH1 0x0c 00001c9c: SLOAD 00001c9d: DUP1 00001c9e: PUSH2 0x1ca7 00001ca1: JUMPI 00001ca2: POP 00001ca3: PUSH2 0x1092 00001ca6: JUMP 00001ca7: JUMPDEST 00001ca8: PUSH2 0x0384 00001cab: PUSH2 0x1cb4 00001cae: DUP3 00001caf: TIMESTAMP 00001cb0: PUSH2 0x256d 00001cb3: JUMP 00001cb4: JUMPDEST 00001cb5: GT 00001cb6: ISZERO 00001cb7: PUSH2 0x1ce2 00001cba: JUMPI 00001cbb: PUSH1 0x00 00001cbd: PUSH1 0x09 00001cbf: DUP2 00001cc0: DUP2 00001cc1: SSTORE 00001cc2: PUSH1 0x0a 00001cc4: DUP3 00001cc5: SWAP1 00001cc6: SSTORE 00001cc7: SWAP1 00001cc8: PUSH2 0x1cd2 00001ccb: PUSH1 0x0b 00001ccd: DUP3 00001cce: PUSH2 0x1ed4 00001cd1: JUMP 00001cd2: JUMPDEST 00001cd3: PUSH1 0x03 00001cd5: DUP3 00001cd6: ADD 00001cd7: PUSH1 0x00 00001cd9: SWAP1 00001cda: SSTORE 00001cdb: POP 00001cdc: POP 00001cdd: POP 00001cde: PUSH2 0x1092 00001ce1: JUMP 00001ce2: JUMPDEST 00001ce3: POP 00001ce4: JUMPDEST 00001ce5: PUSH1 0x02 00001ce7: DUP3 00001ce8: EQ 00001ce9: ISZERO 00001cea: PUSH2 0x1092 00001ced: JUMPI 00001cee: PUSH1 0x10 00001cf0: SLOAD 00001cf1: DUP1 00001cf2: PUSH2 0x1cfb 00001cf5: JUMPI 00001cf6: POP 00001cf7: PUSH2 0x1092 00001cfa: JUMP 00001cfb: JUMPDEST 00001cfc: PUSH2 0x0384 00001cff: PUSH2 0x1d08 00001d02: DUP3 00001d03: TIMESTAMP 00001d04: PUSH2 0x256d 00001d07: JUMP 00001d08: JUMPDEST 00001d09: GT 00001d0a: ISZERO 00001d0b: PUSH2 0x1d41 00001d0e: JUMPI 00001d0f: PUSH1 0x0d 00001d11: DUP1 00001d12: SLOAD 00001d13: PUSH1 0x01 00001d15: PUSH1 0x01 00001d17: PUSH1 0xa0 00001d19: SHL 00001d1a: SUB 00001d1b: NOT 00001d1c: SWAP1 00001d1d: DUP2 00001d1e: AND 00001d1f: DUP3 00001d20: SSTORE 00001d21: PUSH1 0x0e 00001d23: DUP1 00001d24: SLOAD 00001d25: SWAP1 00001d26: SWAP2 00001d27: AND 00001d28: SWAP1 00001d29: SSTORE 00001d2a: PUSH1 0x00 00001d2c: PUSH2 0x1d36 00001d2f: PUSH1 0x0f 00001d31: DUP3 00001d32: PUSH2 0x1ed4 00001d35: JUMP 00001d36: JUMPDEST 00001d37: PUSH1 0x03 00001d39: DUP3 00001d3a: ADD 00001d3b: PUSH1 0x00 00001d3d: SWAP1 00001d3e: SSTORE 00001d3f: POP 00001d40: POP 00001d41: JUMPDEST 00001d42: POP 00001d43: POP 00001d44: POP 00001d45: JUMP 00001d46: JUMPDEST 00001d47: PUSH1 0x00 00001d49: JUMPDEST 00001d4a: DUP2 00001d4b: MLOAD 00001d4c: DUP2 00001d4d: LT 00001d4e: ISZERO 00001d4f: PUSH2 0x1092 00001d52: JUMPI 00001d53: CALLER 00001d54: PUSH1 0x01 00001d56: PUSH1 0x01 00001d58: PUSH1 0xa0 00001d5a: SHL 00001d5b: SUB 00001d5c: AND 00001d5d: DUP3 00001d5e: DUP3 00001d5f: DUP2 00001d60: MLOAD 00001d61: DUP2 00001d62: LT 00001d63: PUSH2 0x1d7c 00001d66: JUMPI 00001d67: PUSH4 0x4e487b71 00001d6c: PUSH1 0xe0 00001d6e: SHL 00001d6f: PUSH1 0x00 00001d71: MSTORE 00001d72: PUSH1 0x32 00001d74: PUSH1 0x04 00001d76: MSTORE 00001d77: PUSH1 0x24 00001d79: PUSH1 0x00 00001d7b: REVERT 00001d7c: JUMPDEST 00001d7d: PUSH1 0x20 00001d7f: MUL 00001d80: PUSH1 0x20 00001d82: ADD 00001d83: ADD 00001d84: MLOAD 00001d85: PUSH1 0x01 00001d87: PUSH1 0x01 00001d89: PUSH1 0xa0 00001d8b: SHL 00001d8c: SUB 00001d8d: AND 00001d8e: EQ 00001d8f: ISZERO 00001d90: PUSH2 0x1dab 00001d93: JUMPI 00001d94: PUSH1 0x40 00001d96: MLOAD 00001d97: PUSH3 0x461bcd 00001d9b: PUSH1 0xe5 00001d9d: SHL 00001d9e: DUP2 00001d9f: MSTORE 00001da0: PUSH1 0x04 00001da2: ADD 00001da3: PUSH2 0x04a3 00001da6: SWAP1 00001da7: PUSH2 0x242e 00001daa: JUMP 00001dab: JUMPDEST 00001dac: DUP1 00001dad: PUSH2 0x1db5 00001db0: DUP2 00001db1: PUSH2 0x2584 00001db4: JUMP 00001db5: JUMPDEST 00001db6: SWAP2 00001db7: POP 00001db8: POP 00001db9: PUSH2 0x1d49 00001dbc: JUMP 00001dbd: JUMPDEST 00001dbe: PUSH1 0x02 00001dc0: DUP3 00001dc1: EQ 00001dc2: ISZERO 00001dc3: PUSH2 0x1dcb 00001dc6: JUMPI 00001dc7: PUSH2 0x1092 00001dca: JUMP 00001dcb: JUMPDEST 00001dcc: PUSH1 0x00 00001dce: PUSH2 0x1dda 00001dd1: PUSH3 0x015180 00001dd5: TIMESTAMP 00001dd6: PUSH2 0x254d 00001dd9: JUMP 00001dda: JUMPDEST 00001ddb: PUSH1 0x00 00001ddd: DUP5 00001dde: DUP2 00001ddf: MSTORE 00001de0: PUSH1 0x07 00001de2: PUSH1 0x20 00001de4: SWAP1 00001de5: DUP2 00001de6: MSTORE 00001de7: PUSH1 0x40 00001de9: DUP1 00001dea: DUP4 00001deb: KECCAK256 00001dec: DUP5 00001ded: DUP5 00001dee: MSTORE 00001def: SWAP1 00001df0: SWAP2 00001df1: MSTORE 00001df2: DUP2 00001df3: KECCAK256 00001df4: SLOAD 00001df5: SWAP2 00001df6: SWAP3 00001df7: POP 00001df8: SWAP1 00001df9: PUSH2 0x1e03 00001dfc: SWAP1 00001dfd: DUP5 00001dfe: SWAP1 00001dff: PUSH2 0x2535 00001e02: JUMP 00001e03: JUMPDEST 00001e04: SWAP1 00001e05: POP 00001e06: DUP4 00001e07: PUSH2 0x1e2c 00001e0a: JUMPI 00001e0b: PUSH1 0x00 00001e0d: SLOAD 00001e0e: DUP2 00001e0f: GT 00001e10: ISZERO 00001e11: PUSH2 0x1e2c 00001e14: JUMPI 00001e15: PUSH1 0x40 00001e17: MLOAD 00001e18: PUSH3 0x461bcd 00001e1c: PUSH1 0xe5 00001e1e: SHL 00001e1f: DUP2 00001e20: MSTORE 00001e21: PUSH1 0x04 00001e23: ADD 00001e24: PUSH2 0x04a3 00001e27: SWAP1 00001e28: PUSH2 0x245b 00001e2b: JUMP 00001e2c: JUMPDEST 00001e2d: PUSH1 0x01 00001e2f: DUP5 00001e30: EQ 00001e31: ISZERO 00001e32: PUSH2 0x1e57 00001e35: JUMPI 00001e36: PUSH1 0x01 00001e38: SLOAD 00001e39: DUP2 00001e3a: GT 00001e3b: ISZERO 00001e3c: PUSH2 0x1e57 00001e3f: JUMPI 00001e40: PUSH1 0x40 00001e42: MLOAD 00001e43: PUSH3 0x461bcd 00001e47: PUSH1 0xe5 00001e49: SHL 00001e4a: DUP2 00001e4b: MSTORE 00001e4c: PUSH1 0x04 00001e4e: ADD 00001e4f: PUSH2 0x04a3 00001e52: SWAP1 00001e53: PUSH2 0x245b 00001e56: JUMP 00001e57: JUMPDEST 00001e58: PUSH1 0x00 00001e5a: DUP5 00001e5b: DUP2 00001e5c: MSTORE 00001e5d: PUSH1 0x07 00001e5f: PUSH1 0x20 00001e61: SWAP1 00001e62: DUP2 00001e63: MSTORE 00001e64: PUSH1 0x40 00001e66: DUP1 00001e67: DUP4 00001e68: KECCAK256 00001e69: SWAP5 00001e6a: DUP4 00001e6b: MSTORE 00001e6c: SWAP4 00001e6d: SWAP1 00001e6e: MSTORE 00001e6f: SWAP2 00001e70: SWAP1 00001e71: SWAP2 00001e72: KECCAK256 00001e73: SSTORE 00001e74: POP 00001e75: POP 00001e76: JUMP 00001e77: JUMPDEST 00001e78: PUSH1 0x01 00001e7a: PUSH1 0x01 00001e7c: PUSH1 0xa0 00001e7e: SHL 00001e7f: SUB 00001e80: DUP3 00001e81: AND 00001e82: PUSH1 0x00 00001e84: SWAP1 00001e85: DUP2 00001e86: MSTORE 00001e87: PUSH1 0x08 00001e89: PUSH1 0x20 00001e8b: MSTORE 00001e8c: PUSH1 0x40 00001e8e: SWAP1 00001e8f: KECCAK256 00001e90: SLOAD 00001e91: PUSH1 0xff 00001e93: AND 00001e94: DUP1 00001e95: ISZERO 00001e96: PUSH2 0x1eb8 00001e99: JUMPI 00001e9a: POP 00001e9b: PUSH1 0x01 00001e9d: PUSH1 0x01 00001e9f: PUSH1 0xa0 00001ea1: SHL 00001ea2: SUB 00001ea3: DUP2 00001ea4: AND 00001ea5: PUSH1 0x00 00001ea7: SWAP1 00001ea8: DUP2 00001ea9: MSTORE 00001eaa: PUSH1 0x08 00001eac: PUSH1 0x20 00001eae: MSTORE 00001eaf: PUSH1 0x40 00001eb1: SWAP1 00001eb2: KECCAK256 00001eb3: SLOAD 00001eb4: PUSH1 0xff 00001eb6: AND 00001eb7: ISZERO 00001eb8: JUMPDEST 00001eb9: PUSH2 0x1092 00001ebc: JUMPI 00001ebd: PUSH1 0x40 00001ebf: MLOAD 00001ec0: PUSH3 0x461bcd 00001ec4: PUSH1 0xe5 00001ec6: SHL 00001ec7: DUP2 00001ec8: MSTORE 00001ec9: PUSH1 0x04 00001ecb: ADD 00001ecc: PUSH2 0x04a3 00001ecf: SWAP1 00001ed0: PUSH2 0x235e 00001ed3: JUMP 00001ed4: JUMPDEST 00001ed5: POP 00001ed6: DUP1 00001ed7: SLOAD 00001ed8: PUSH1 0x00 00001eda: DUP3 00001edb: SSTORE 00001edc: SWAP1 00001edd: PUSH1 0x00 00001edf: MSTORE 00001ee0: PUSH1 0x20 00001ee2: PUSH1 0x00 00001ee4: KECCAK256 00001ee5: SWAP1 00001ee6: DUP2 00001ee7: ADD 00001ee8: SWAP1 00001ee9: PUSH2 0x1ef2 00001eec: SWAP2 00001eed: SWAP1 00001eee: PUSH2 0x1ef5 00001ef1: JUMP 00001ef2: JUMPDEST 00001ef3: POP 00001ef4: JUMP 00001ef5: JUMPDEST 00001ef6: JUMPDEST 00001ef7: DUP1 00001ef8: DUP3 00001ef9: GT 00001efa: ISZERO 00001efb: PUSH2 0x1f0a 00001efe: JUMPI 00001eff: PUSH1 0x00 00001f01: DUP2 00001f02: SSTORE 00001f03: PUSH1 0x01 00001f05: ADD 00001f06: PUSH2 0x1ef6 00001f09: JUMP 00001f0a: JUMPDEST 00001f0b: POP 00001f0c: SWAP1 00001f0d: JUMP 00001f0e: JUMPDEST 00001f0f: DUP1 00001f10: CALLDATALOAD 00001f11: PUSH1 0x01 00001f13: PUSH1 0x01 00001f15: PUSH1 0xa0 00001f17: SHL 00001f18: SUB 00001f19: DUP2 00001f1a: AND 00001f1b: DUP2 00001f1c: EQ 00001f1d: PUSH2 0x1c16 00001f20: JUMPI 00001f21: PUSH1 0x00 00001f23: DUP1 00001f24: REVERT 00001f25: JUMPDEST 00001f26: PUSH1 0x00 00001f28: PUSH1 0x20 00001f2a: DUP3 00001f2b: DUP5 00001f2c: SUB 00001f2d: SLT 00001f2e: ISZERO 00001f2f: PUSH2 0x1f36 00001f32: JUMPI 00001f33: DUP1 00001f34: DUP2 00001f35: REVERT 00001f36: JUMPDEST 00001f37: PUSH2 0x1f3f 00001f3a: DUP3 00001f3b: PUSH2 0x1f0e 00001f3e: JUMP 00001f3f: JUMPDEST 00001f40: SWAP4 00001f41: SWAP3 00001f42: POP 00001f43: POP 00001f44: POP 00001f45: JUMP 00001f46: JUMPDEST 00001f47: PUSH1 0x00 00001f49: DUP1 00001f4a: PUSH1 0x40 00001f4c: DUP4 00001f4d: DUP6 00001f4e: SUB 00001f4f: SLT 00001f50: ISZERO 00001f51: PUSH2 0x1f58 00001f54: JUMPI 00001f55: DUP1 00001f56: DUP2 00001f57: REVERT 00001f58: JUMPDEST 00001f59: PUSH2 0x1f61 00001f5c: DUP4 00001f5d: PUSH2 0x1f0e 00001f60: JUMP 00001f61: JUMPDEST 00001f62: SWAP2 00001f63: POP 00001f64: PUSH2 0x1f6f 00001f67: PUSH1 0x20 00001f69: DUP5 00001f6a: ADD 00001f6b: PUSH2 0x1f0e 00001f6e: JUMP 00001f6f: JUMPDEST 00001f70: SWAP1 00001f71: POP 00001f72: SWAP3 00001f73: POP 00001f74: SWAP3 00001f75: SWAP1 00001f76: POP 00001f77: JUMP 00001f78: JUMPDEST 00001f79: PUSH1 0x00 00001f7b: DUP1 00001f7c: PUSH1 0x00 00001f7e: DUP1 00001f7f: PUSH1 0x80 00001f81: DUP6 00001f82: DUP8 00001f83: SUB 00001f84: SLT 00001f85: ISZERO 00001f86: PUSH2 0x1f8d 00001f89: JUMPI 00001f8a: DUP2 00001f8b: DUP3 00001f8c: REVERT 00001f8d: JUMPDEST 00001f8e: PUSH2 0x1f96 00001f91: DUP6 00001f92: PUSH2 0x1f0e 00001f95: JUMP 00001f96: JUMPDEST 00001f97: SWAP4 00001f98: POP 00001f99: PUSH2 0x1fa4 00001f9c: PUSH1 0x20 00001f9e: DUP7 00001f9f: ADD 00001fa0: PUSH2 0x1f0e 00001fa3: JUMP 00001fa4: JUMPDEST 00001fa5: SWAP4 00001fa6: SWAP7 00001fa7: SWAP4 00001fa8: SWAP6 00001fa9: POP 00001faa: POP 00001fab: POP 00001fac: POP 00001fad: PUSH1 0x40 00001faf: DUP3 00001fb0: ADD 00001fb1: CALLDATALOAD 00001fb2: SWAP2 00001fb3: PUSH1 0x60 00001fb5: ADD 00001fb6: CALLDATALOAD 00001fb7: SWAP1 00001fb8: JUMP 00001fb9: JUMPDEST 00001fba: PUSH1 0x00 00001fbc: PUSH1 0x20 00001fbe: DUP3 00001fbf: DUP5 00001fc0: SUB 00001fc1: SLT 00001fc2: ISZERO 00001fc3: PUSH2 0x1fca 00001fc6: JUMPI 00001fc7: DUP1 00001fc8: DUP2 00001fc9: REVERT 00001fca: JUMPDEST 00001fcb: DUP2 00001fcc: MLOAD 00001fcd: DUP1 00001fce: ISZERO 00001fcf: ISZERO 00001fd0: DUP2 00001fd1: EQ 00001fd2: PUSH2 0x1f3f 00001fd5: JUMPI 00001fd6: DUP2 00001fd7: DUP3 00001fd8: REVERT 00001fd9: JUMPDEST 00001fda: PUSH1 0x00 00001fdc: PUSH1 0x20 00001fde: DUP3 00001fdf: DUP5 00001fe0: SUB 00001fe1: SLT 00001fe2: ISZERO 00001fe3: PUSH2 0x1fea 00001fe6: JUMPI 00001fe7: DUP1 00001fe8: DUP2 00001fe9: REVERT 00001fea: JUMPDEST 00001feb: POP 00001fec: CALLDATALOAD 00001fed: SWAP2 00001fee: SWAP1 00001fef: POP 00001ff0: JUMP 00001ff1: JUMPDEST 00001ff2: PUSH1 0x00 00001ff4: DUP1 00001ff5: PUSH1 0x00 00001ff7: DUP1 00001ff8: PUSH1 0x80 00001ffa: DUP6 00001ffb: DUP8 00001ffc: SUB 00001ffd: SLT 00001ffe: ISZERO 00001fff: PUSH2 0x2006 00002002: JUMPI 00002003: DUP4 00002004: DUP5 00002005: REVERT 00002006: JUMPDEST 00002007: DUP5 00002008: CALLDATALOAD 00002009: SWAP4 0000200a: POP 0000200b: PUSH2 0x2016 0000200e: PUSH1 0x20 00002010: DUP7 00002011: ADD 00002012: PUSH2 0x1f0e 00002015: JUMP 00002016: JUMPDEST 00002017: SWAP3 00002018: POP 00002019: PUSH2 0x2024 0000201c: PUSH1 0x40 0000201e: DUP7 0000201f: ADD 00002020: PUSH2 0x1f0e 00002023: JUMP 00002024: JUMPDEST 00002025: SWAP4 00002026: SWAP7 00002027: SWAP3 00002028: SWAP6 00002029: POP 0000202a: SWAP3 0000202b: SWAP4 0000202c: PUSH1 0x60 0000202e: ADD 0000202f: CALLDATALOAD 00002030: SWAP3 00002031: POP 00002032: POP 00002033: JUMP 00002034: JUMPDEST 00002035: PUSH1 0x00 00002037: DUP1 00002038: PUSH1 0x40 0000203a: DUP4 0000203b: DUP6 0000203c: SUB 0000203d: SLT 0000203e: ISZERO 0000203f: PUSH2 0x2046 00002042: JUMPI 00002043: DUP2 00002044: DUP3 00002045: REVERT 00002046: JUMPDEST 00002047: POP 00002048: POP 00002049: DUP1 0000204a: CALLDATALOAD 0000204b: SWAP3 0000204c: PUSH1 0x20 0000204e: SWAP1 0000204f: SWAP2 00002050: ADD 00002051: CALLDATALOAD 00002052: SWAP2 00002053: POP 00002054: JUMP 00002055: JUMPDEST 00002056: PUSH1 0x00 00002058: DUP2 00002059: MLOAD 0000205a: DUP1 0000205b: DUP5 0000205c: MSTORE 0000205d: PUSH1 0x20 0000205f: DUP1 00002060: DUP6 00002061: ADD 00002062: SWAP5 00002063: POP 00002064: DUP1 00002065: DUP5 00002066: ADD 00002067: DUP4 00002068: JUMPDEST 00002069: DUP4 0000206a: DUP2 0000206b: LT 0000206c: ISZERO 0000206d: PUSH2 0x208d 00002070: JUMPI 00002071: DUP2 00002072: MLOAD 00002073: PUSH1 0x01 00002075: PUSH1 0x01 00002077: PUSH1 0xa0 00002079: SHL 0000207a: SUB 0000207b: AND 0000207c: DUP8 0000207d: MSTORE 0000207e: SWAP6 0000207f: DUP3 00002080: ADD 00002081: SWAP6 00002082: SWAP1 00002083: DUP3 00002084: ADD 00002085: SWAP1 00002086: PUSH1 0x01 00002088: ADD 00002089: PUSH2 0x2068 0000208c: JUMP 0000208d: JUMPDEST 0000208e: POP 0000208f: SWAP5 00002090: SWAP6 00002091: SWAP5 00002092: POP 00002093: POP 00002094: POP 00002095: POP 00002096: POP 00002097: JUMP 00002098: JUMPDEST 00002099: PUSH1 0x01 0000209b: PUSH1 0x01 0000209d: PUSH1 0xa0 0000209f: SHL 000020a0: SUB 000020a1: SWAP2 000020a2: SWAP1 000020a3: SWAP2 000020a4: AND 000020a5: DUP2 000020a6: MSTORE 000020a7: PUSH1 0x20 000020a9: ADD 000020aa: SWAP1 000020ab: JUMP 000020ac: JUMPDEST 000020ad: PUSH1 0x01 000020af: PUSH1 0x01 000020b1: PUSH1 0xa0 000020b3: SHL 000020b4: SUB 000020b5: SWAP5 000020b6: DUP6 000020b7: AND 000020b8: DUP2 000020b9: MSTORE 000020ba: SWAP3 000020bb: DUP5 000020bc: AND 000020bd: PUSH1 0x20 000020bf: DUP5 000020c0: ADD 000020c1: MSTORE 000020c2: SWAP3 000020c3: AND 000020c4: PUSH1 0x40 000020c6: DUP3 000020c7: ADD 000020c8: MSTORE 000020c9: SWAP1 000020ca: ISZERO 000020cb: ISZERO 000020cc: PUSH1 0x60 000020ce: DUP3 000020cf: ADD 000020d0: MSTORE 000020d1: PUSH1 0x80 000020d3: ADD 000020d4: SWAP1 000020d5: JUMP 000020d6: JUMPDEST 000020d7: PUSH1 0x01 000020d9: PUSH1 0x01 000020db: PUSH1 0xa0 000020dd: SHL 000020de: SUB 000020df: SWAP6 000020e0: DUP7 000020e1: AND 000020e2: DUP2 000020e3: MSTORE 000020e4: SWAP4 000020e5: DUP6 000020e6: AND 000020e7: PUSH1 0x20 000020e9: DUP6 000020ea: ADD 000020eb: MSTORE 000020ec: SWAP2 000020ed: SWAP1 000020ee: SWAP4 000020ef: AND 000020f0: PUSH1 0x40 000020f2: DUP4 000020f3: ADD 000020f4: MSTORE 000020f5: PUSH1 0x60 000020f7: DUP3 000020f8: ADD 000020f9: SWAP3 000020fa: SWAP1 000020fb: SWAP3 000020fc: MSTORE 000020fd: SWAP1 000020fe: ISZERO 000020ff: ISZERO 00002100: PUSH1 0x80 00002102: DUP3 00002103: ADD 00002104: MSTORE 00002105: PUSH1 0xa0 00002107: ADD 00002108: SWAP1 00002109: JUMP 0000210a: JUMPDEST 0000210b: PUSH1 0x01 0000210d: PUSH1 0x01 0000210f: PUSH1 0xa0 00002111: SHL 00002112: SUB 00002113: DUP6 00002114: DUP2 00002115: AND 00002116: DUP3 00002117: MSTORE 00002118: DUP5 00002119: AND 0000211a: PUSH1 0x20 0000211c: DUP3 0000211d: ADD 0000211e: MSTORE 0000211f: PUSH1 0x80 00002121: PUSH1 0x40 00002123: DUP3 00002124: ADD 00002125: DUP2 00002126: SWAP1 00002127: MSTORE 00002128: PUSH1 0x00 0000212a: SWAP1 0000212b: PUSH2 0x2136 0000212e: SWAP1 0000212f: DUP4 00002130: ADD 00002131: DUP6 00002132: PUSH2 0x2055 00002135: JUMP 00002136: JUMPDEST 00002137: SWAP1 00002138: POP 00002139: DUP3 0000213a: PUSH1 0x60 0000213c: DUP4 0000213d: ADD 0000213e: MSTORE 0000213f: SWAP6 00002140: SWAP5 00002141: POP 00002142: POP 00002143: POP 00002144: POP 00002145: POP 00002146: JUMP 00002147: JUMPDEST 00002148: PUSH1 0x01 0000214a: PUSH1 0x01 0000214c: PUSH1 0xa0 0000214e: SHL 0000214f: SUB 00002150: SWAP4 00002151: DUP5 00002152: AND 00002153: DUP2 00002154: MSTORE 00002155: SWAP2 00002156: SWAP1 00002157: SWAP3 00002158: AND 00002159: PUSH1 0x20 0000215b: DUP3 0000215c: ADD 0000215d: MSTORE 0000215e: PUSH1 0x40 00002160: DUP2 00002161: ADD 00002162: SWAP2 00002163: SWAP1 00002164: SWAP2 00002165: MSTORE 00002166: PUSH1 0x60 00002168: ADD 00002169: SWAP1 0000216a: JUMP 0000216b: JUMPDEST 0000216c: PUSH1 0x01 0000216e: PUSH1 0x01 00002170: PUSH1 0xa0 00002172: SHL 00002173: SUB 00002174: DUP7 00002175: DUP2 00002176: AND 00002177: DUP3 00002178: MSTORE 00002179: DUP6 0000217a: AND 0000217b: PUSH1 0x20 0000217d: DUP3 0000217e: ADD 0000217f: MSTORE 00002180: PUSH1 0x40 00002182: DUP2 00002183: ADD 00002184: DUP5 00002185: SWAP1 00002186: MSTORE 00002187: PUSH1 0xa0 00002189: PUSH1 0x60 0000218b: DUP3 0000218c: ADD 0000218d: DUP2 0000218e: SWAP1 0000218f: MSTORE 00002190: PUSH1 0x00 00002192: SWAP1 00002193: PUSH2 0x219e 00002196: SWAP1 00002197: DUP4 00002198: ADD 00002199: DUP6 0000219a: PUSH2 0x2055 0000219d: JUMP 0000219e: JUMPDEST 0000219f: SWAP1 000021a0: POP 000021a1: DUP3 000021a2: PUSH1 0x80 000021a4: DUP4 000021a5: ADD 000021a6: MSTORE 000021a7: SWAP7 000021a8: SWAP6 000021a9: POP 000021aa: POP 000021ab: POP 000021ac: POP 000021ad: POP 000021ae: POP 000021af: JUMP 000021b0: JUMPDEST 000021b1: PUSH1 0x01 000021b3: PUSH1 0x01 000021b5: PUSH1 0xa0 000021b7: SHL 000021b8: SUB 000021b9: DUP8 000021ba: DUP2 000021bb: AND 000021bc: DUP3 000021bd: MSTORE 000021be: DUP7 000021bf: AND 000021c0: PUSH1 0x20 000021c2: DUP3 000021c3: ADD 000021c4: MSTORE 000021c5: PUSH1 0x40 000021c7: DUP2 000021c8: ADD 000021c9: DUP6 000021ca: SWAP1 000021cb: MSTORE 000021cc: PUSH1 0xc0 000021ce: PUSH1 0x60 000021d0: DUP3 000021d1: ADD 000021d2: DUP2 000021d3: SWAP1 000021d4: MSTORE 000021d5: PUSH1 0x00 000021d7: SWAP1 000021d8: PUSH2 0x21e3 000021db: SWAP1 000021dc: DUP4 000021dd: ADD 000021de: DUP7 000021df: PUSH2 0x2055 000021e2: JUMP 000021e3: JUMPDEST 000021e4: PUSH1 0x80 000021e6: DUP4 000021e7: ADD 000021e8: SWAP5 000021e9: SWAP1 000021ea: SWAP5 000021eb: MSTORE 000021ec: POP 000021ed: PUSH1 0xa0 000021ef: ADD 000021f0: MSTORE 000021f1: SWAP5 000021f2: SWAP4 000021f3: POP 000021f4: POP 000021f5: POP 000021f6: POP 000021f7: JUMP 000021f8: JUMPDEST 000021f9: PUSH1 0x01 000021fb: PUSH1 0x01 000021fd: PUSH1 0xa0 000021ff: SHL 00002200: SUB 00002201: SWAP6 00002202: DUP7 00002203: AND 00002204: DUP2 00002205: MSTORE 00002206: SWAP4 00002207: SWAP1 00002208: SWAP5 00002209: AND 0000220a: PUSH1 0x20 0000220c: DUP5 0000220d: ADD 0000220e: MSTORE 0000220f: PUSH1 0x40 00002211: DUP4 00002212: ADD 00002213: SWAP2 00002214: SWAP1 00002215: SWAP2 00002216: MSTORE 00002217: PUSH1 0x60 00002219: DUP3 0000221a: ADD 0000221b: MSTORE 0000221c: PUSH1 0x80 0000221e: DUP2 0000221f: ADD 00002220: SWAP2 00002221: SWAP1 00002222: SWAP2 00002223: MSTORE 00002224: PUSH1 0xa0 00002226: ADD 00002227: SWAP1 00002228: JUMP 00002229: JUMPDEST 0000222a: PUSH1 0x01 0000222c: PUSH1 0x01 0000222e: PUSH1 0xa0 00002230: SHL 00002231: SUB 00002232: SWAP3 00002233: SWAP1 00002234: SWAP3 00002235: AND 00002236: DUP3 00002237: MSTORE 00002238: PUSH1 0x20 0000223a: DUP3 0000223b: ADD 0000223c: MSTORE 0000223d: PUSH1 0x40 0000223f: ADD 00002240: SWAP1 00002241: JUMP 00002242: JUMPDEST 00002243: PUSH1 0x01 00002245: PUSH1 0x01 00002247: PUSH1 0xa0 00002249: SHL 0000224a: SUB 0000224b: SWAP7 0000224c: DUP8 0000224d: AND 0000224e: DUP2 0000224f: MSTORE 00002250: PUSH1 0x20 00002252: DUP2 00002253: ADD 00002254: SWAP6 00002255: SWAP1 00002256: SWAP6 00002257: MSTORE 00002258: SWAP3 00002259: DUP6 0000225a: AND 0000225b: PUSH1 0x40 0000225d: DUP6 0000225e: ADD 0000225f: MSTORE 00002260: SWAP4 00002261: AND 00002262: PUSH1 0x60 00002264: DUP4 00002265: ADD 00002266: MSTORE 00002267: PUSH1 0x80 00002269: DUP3 0000226a: ADD 0000226b: SWAP3 0000226c: SWAP1 0000226d: SWAP3 0000226e: MSTORE 0000226f: SWAP1 00002270: ISZERO 00002271: ISZERO 00002272: PUSH1 0xa0 00002274: DUP3 00002275: ADD 00002276: MSTORE 00002277: PUSH1 0xc0 00002279: ADD 0000227a: SWAP1 0000227b: JUMP 0000227c: JUMPDEST 0000227d: PUSH1 0x01 0000227f: PUSH1 0x01 00002281: PUSH1 0xa0 00002283: SHL 00002284: SUB 00002285: SWAP5 00002286: SWAP1 00002287: SWAP5 00002288: AND 00002289: DUP5 0000228a: MSTORE 0000228b: PUSH1 0x20 0000228d: DUP5 0000228e: ADD 0000228f: SWAP3 00002290: SWAP1 00002291: SWAP3 00002292: MSTORE 00002293: PUSH1 0x40 00002295: DUP4 00002296: ADD 00002297: MSTORE 00002298: ISZERO 00002299: ISZERO 0000229a: PUSH1 0x60 0000229c: DUP3 0000229d: ADD 0000229e: MSTORE 0000229f: PUSH1 0x80 000022a1: ADD 000022a2: SWAP1 000022a3: JUMP 000022a4: JUMPDEST 000022a5: SWAP1 000022a6: ISZERO 000022a7: ISZERO 000022a8: DUP2 000022a9: MSTORE 000022aa: PUSH1 0x20 000022ac: ADD 000022ad: SWAP1 000022ae: JUMP 000022af: JUMPDEST 000022b0: PUSH1 0x20 000022b2: DUP1 000022b3: DUP3 000022b4: MSTORE 000022b5: PUSH1 0x0e 000022b7: SWAP1 000022b8: DUP3 000022b9: ADD 000022ba: MSTORE 000022bb: PUSH14 0x20b13737b936b0b61037bbb732b9 000022ca: PUSH1 0x91 000022cc: SHL 000022cd: PUSH1 0x40 000022cf: DUP3 000022d0: ADD 000022d1: MSTORE 000022d2: PUSH1 0x60 000022d4: ADD 000022d5: SWAP1 000022d6: JUMP 000022d7: JUMPDEST 000022d8: PUSH1 0x20 000022da: DUP1 000022db: DUP3 000022dc: MSTORE 000022dd: PUSH1 0x0e 000022df: SWAP1 000022e0: DUP3 000022e1: ADD 000022e2: MSTORE 000022e3: PUSH14 0x20b13737b936b0b6103a37b5b2b7 000022f2: PUSH1 0x91 000022f4: SHL 000022f5: PUSH1 0x40 000022f7: DUP3 000022f8: ADD 000022f9: MSTORE 000022fa: PUSH1 0x60 000022fc: ADD 000022fd: SWAP1 000022fe: JUMP 000022ff: JUMPDEST 00002300: PUSH1 0x20 00002302: DUP1 00002303: DUP3 00002304: MSTORE 00002305: PUSH1 0x17 00002307: SWAP1 00002308: DUP3 00002309: ADD 0000230a: MSTORE 0000230b: PUSH32 0x43616c6c6572206973206e6f7420746865206f776e6572000000000000000000 0000232c: PUSH1 0x40 0000232e: DUP3 0000232f: ADD 00002330: MSTORE 00002331: PUSH1 0x60 00002333: ADD 00002334: SWAP1 00002335: JUMP 00002336: JUMPDEST 00002337: PUSH1 0x20 00002339: DUP1 0000233a: DUP3 0000233b: MSTORE 0000233c: PUSH1 0x0e 0000233e: SWAP1 0000233f: DUP3 00002340: ADD 00002341: MSTORE 00002342: PUSH14 0x41626e6f726d616c207374616765 00002351: PUSH1 0x90 00002353: SHL 00002354: PUSH1 0x40 00002356: DUP3 00002357: ADD 00002358: MSTORE 00002359: PUSH1 0x60 0000235b: ADD 0000235c: SWAP1 0000235d: JUMP 0000235e: JUMPDEST 0000235f: PUSH1 0x20 00002361: DUP1 00002362: DUP3 00002363: MSTORE 00002364: PUSH1 0x23 00002366: SWAP1 00002367: DUP3 00002368: ADD 00002369: MSTORE 0000236a: PUSH32 0x4f6c642061646472657373206f72204e657720616464726573732061626e6f72 0000238b: PUSH1 0x40 0000238d: DUP3 0000238e: ADD 0000238f: MSTORE 00002390: PUSH3 0x1b585b 00002394: PUSH1 0xea 00002396: SHL 00002397: PUSH1 0x60 00002399: DUP3 0000239a: ADD 0000239b: MSTORE 0000239c: PUSH1 0x80 0000239e: ADD 0000239f: SWAP1 000023a0: JUMP 000023a1: JUMPDEST 000023a2: PUSH1 0x20 000023a4: DUP1 000023a5: DUP3 000023a6: MSTORE 000023a7: PUSH1 0x14 000023a9: SWAP1 000023aa: DUP3 000023ab: ADD 000023ac: MSTORE 000023ad: PUSH20 0x20b13737b936b0b6103a3930b739b0b1ba34b7b7 000023c2: PUSH1 0x61 000023c4: SHL 000023c5: PUSH1 0x40 000023c7: DUP3 000023c8: ADD 000023c9: MSTORE 000023ca: PUSH1 0x60 000023cc: ADD 000023cd: SWAP1 000023ce: JUMP 000023cf: JUMPDEST 000023d0: PUSH1 0x20 000023d2: DUP1 000023d3: DUP3 000023d4: MSTORE 000023d5: PUSH1 0x16 000023d7: SWAP1 000023d8: DUP3 000023d9: ADD 000023da: MSTORE 000023db: PUSH22 0x546f2069732061626e6f726d616c2061646472657373 000023f2: PUSH1 0x50 000023f4: SHL 000023f5: PUSH1 0x40 000023f7: DUP3 000023f8: ADD 000023f9: MSTORE 000023fa: PUSH1 0x60 000023fc: ADD 000023fd: SWAP1 000023fe: JUMP 000023ff: JUMPDEST 00002400: PUSH1 0x20 00002402: DUP1 00002403: DUP3 00002404: MSTORE 00002405: PUSH1 0x15 00002407: SWAP1 00002408: DUP3 00002409: ADD 0000240a: MSTORE 0000240b: PUSH21 0x4f776e6572206973207a65726f2061646472657373 00002421: PUSH1 0x58 00002423: SHL 00002424: PUSH1 0x40 00002426: DUP3 00002427: ADD 00002428: MSTORE 00002429: PUSH1 0x60 0000242b: ADD 0000242c: SWAP1 0000242d: JUMP 0000242e: JUMPDEST 0000242f: PUSH1 0x20 00002431: DUP1 00002432: DUP3 00002433: MSTORE 00002434: PUSH1 0x13 00002436: SWAP1 00002437: DUP3 00002438: ADD 00002439: MSTORE 0000243a: PUSH19 0x4475706c6963617465207369676e6174757265 0000244e: PUSH1 0x68 00002450: SHL 00002451: PUSH1 0x40 00002453: DUP3 00002454: ADD 00002455: MSTORE 00002456: PUSH1 0x60 00002458: ADD 00002459: SWAP1 0000245a: JUMP 0000245b: JUMPDEST 0000245c: PUSH1 0x20 0000245e: DUP1 0000245f: DUP3 00002460: MSTORE 00002461: PUSH1 0x05 00002463: SWAP1 00002464: DUP3 00002465: ADD 00002466: MSTORE 00002467: PUSH5 0x51756f7461 0000246d: PUSH1 0xd8 0000246f: SHL 00002470: PUSH1 0x40 00002472: DUP3 00002473: ADD 00002474: MSTORE 00002475: PUSH1 0x60 00002477: ADD 00002478: SWAP1 00002479: JUMP 0000247a: JUMPDEST 0000247b: PUSH1 0x20 0000247d: DUP1 0000247e: DUP3 0000247f: MSTORE 00002480: PUSH1 0x13 00002482: SWAP1 00002483: DUP3 00002484: ADD 00002485: MSTORE 00002486: PUSH19 0x29b4b3b730ba3ab9329022bc31b2b83a34b7b7 0000249a: PUSH1 0x69 0000249c: SHL 0000249d: PUSH1 0x40 0000249f: DUP3 000024a0: ADD 000024a1: MSTORE 000024a2: PUSH1 0x60 000024a4: ADD 000024a5: SWAP1 000024a6: JUMP 000024a7: JUMPDEST 000024a8: PUSH1 0x20 000024aa: DUP1 000024ab: DUP3 000024ac: MSTORE 000024ad: PUSH1 0x0e 000024af: SWAP1 000024b0: DUP3 000024b1: ADD 000024b2: MSTORE 000024b3: PUSH14 0x41626e6f726d616c2071756f7461 000024c2: PUSH1 0x90 000024c4: SHL 000024c5: PUSH1 0x40 000024c7: DUP3 000024c8: ADD 000024c9: MSTORE 000024ca: PUSH1 0x60 000024cc: ADD 000024cd: SWAP1 000024ce: JUMP 000024cf: JUMPDEST 000024d0: PUSH1 0x20 000024d2: DUP1 000024d3: DUP3 000024d4: MSTORE 000024d5: PUSH1 0x0e 000024d7: SWAP1 000024d8: DUP3 000024d9: ADD 000024da: MSTORE 000024db: PUSH14 0x41626e6f726d616c207374617465 000024ea: PUSH1 0x90 000024ec: SHL 000024ed: PUSH1 0x40 000024ef: DUP3 000024f0: ADD 000024f1: MSTORE 000024f2: PUSH1 0x60 000024f4: ADD 000024f5: SWAP1 000024f6: JUMP 000024f7: JUMPDEST 000024f8: SWAP1 000024f9: DUP2 000024fa: MSTORE 000024fb: PUSH1 0x20 000024fd: ADD 000024fe: SWAP1 000024ff: JUMP 00002500: JUMPDEST 00002501: PUSH1 0x00 00002503: DUP6 00002504: DUP3 00002505: MSTORE 00002506: DUP5 00002507: PUSH1 0x20 00002509: DUP4 0000250a: ADD 0000250b: MSTORE 0000250c: PUSH1 0x80 0000250e: PUSH1 0x40 00002510: DUP4 00002511: ADD 00002512: MSTORE 00002513: PUSH2 0x2136 00002516: PUSH1 0x80 00002518: DUP4 00002519: ADD 0000251a: DUP6 0000251b: PUSH2 0x2055 0000251e: JUMP 0000251f: JUMPDEST 00002520: SWAP3 00002521: DUP4 00002522: MSTORE 00002523: PUSH1 0x20 00002525: DUP4 00002526: ADD 00002527: SWAP2 00002528: SWAP1 00002529: SWAP2 0000252a: MSTORE 0000252b: PUSH1 0x40 0000252d: DUP3 0000252e: ADD 0000252f: MSTORE 00002530: PUSH1 0x60 00002532: ADD 00002533: SWAP1 00002534: JUMP 00002535: JUMPDEST 00002536: PUSH1 0x00 00002538: DUP3 00002539: NOT 0000253a: DUP3 0000253b: GT 0000253c: ISZERO 0000253d: PUSH2 0x2548 00002540: JUMPI 00002541: PUSH2 0x2548 00002544: PUSH2 0x259f 00002547: JUMP 00002548: JUMPDEST 00002549: POP 0000254a: ADD 0000254b: SWAP1 0000254c: JUMP 0000254d: JUMPDEST 0000254e: PUSH1 0x00 00002550: DUP3 00002551: PUSH2 0x2568 00002554: JUMPI 00002555: PUSH4 0x4e487b71 0000255a: PUSH1 0xe0 0000255c: SHL 0000255d: DUP2 0000255e: MSTORE 0000255f: PUSH1 0x12 00002561: PUSH1 0x04 00002563: MSTORE 00002564: PUSH1 0x24 00002566: DUP2 00002567: REVERT 00002568: JUMPDEST 00002569: POP 0000256a: DIV 0000256b: SWAP1 0000256c: JUMP 0000256d: JUMPDEST 0000256e: PUSH1 0x00 00002570: DUP3 00002571: DUP3 00002572: LT 00002573: ISZERO 00002574: PUSH2 0x257f 00002577: JUMPI 00002578: PUSH2 0x257f 0000257b: PUSH2 0x259f 0000257e: JUMP 0000257f: JUMPDEST 00002580: POP 00002581: SUB 00002582: SWAP1 00002583: JUMP 00002584: JUMPDEST 00002585: PUSH1 0x00 00002587: PUSH1 0x00 00002589: NOT 0000258a: DUP3 0000258b: EQ 0000258c: ISZERO 0000258d: PUSH2 0x2598 00002590: JUMPI 00002591: PUSH2 0x2598 00002594: PUSH2 0x259f 00002597: JUMP 00002598: JUMPDEST 00002599: POP 0000259a: PUSH1 0x01 0000259c: ADD 0000259d: SWAP1 0000259e: JUMP 0000259f: JUMPDEST 000025a0: PUSH4 0x4e487b71 000025a5: PUSH1 0xe0 000025a7: SHL 000025a8: PUSH1 0x00 000025aa: MSTORE 000025ab: PUSH1 0x11 000025ad: PUSH1 0x04 000025af: MSTORE 000025b0: PUSH1 0x24 000025b2: PUSH1 0x00 000025b4: REVERT 000025b5: INVALID 000025b6: SLOAD 000025b7: UNKNOWN(0xCD) 000025b8: UNKNOWN(0xD3) 000025b9: PUSH10 0xe4e8a8515e52ca72ec81 000025c4: PUSH13 0x2101831ad1f18bf44102ed1714 000025d2: MSIZE 000025d3: UNKNOWN(0xC9) 000025d4: UNKNOWN(0xB4) 000025d5: UNKNOWN(0xF8) 000025d6: LOG2 000025d7: PUSH5 0x6970667358 000025dd: UNKNOWN(0x22) 000025de: SLT 000025df: KECCAK256 000025e0: UNKNOWN(0xC4) 000025e1: INVALID 000025e2: UNKNOWN(0x4C) 000025e3: UNKNOWN(0xFB) 000025e4: DUP6 000025e5: UNKNOWN(0xC7) 000025e6: PUSH30 0x63c740d75d33720e0e3caaed806fc05b150a003a5c9f5dce6d64736f6c63 00002605: NUMBER 00002606: STOP 00002607: ADDMOD 00002608: ADD 00002609: STOP 0000260a: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xe8af762810a967311e136b4a43a5f11190b65347f29b2e2defa9bbd6783672ef
call_targets:
0xe2ff0a931f92198233c36501780d08d55dd9432f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xe8af762810a967311e136b4a43a5f11190b65347f29b2e2defa9bbd6783672ef",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe2ff0a931f92198233c36501780d08d55dd9432f"
],
"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": "0xda58b966",
"selector": "0xda58b966",
"calldata_variants": [
"0xda58b966",
"0xda58b9660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe20056e6",
"selector": "0xe20056e6",
"calldata_variants": [
"0xe20056e6",
"0xe20056e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee949a03",
"selector": "0xee949a03",
"calldata_variants": [
"0xee949a03",
"0xee949a030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4fae995",
"selector": "0xf4fae995",
"calldata_variants": [
"0xf4fae995",
"0xf4fae9950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfacf8323",
"selector": "0xfacf8323",
"calldata_variants": [
"0xfacf8323",
"0xfacf83230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb48295d",
"selector": "0xfb48295d",
"calldata_variants": [
"0xfb48295d",
"0xfb48295d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a013413",
"selector": "0x9a013413",
"calldata_variants": [
"0x9a013413",
"0x9a0134130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa910657e",
"selector": "0xa910657e",
"calldata_variants": [
"0xa910657e",
"0xa910657e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1941,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6061,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xe8af762810a967311e136b4a43a5f11190b65347f29b2e2defa9bbd6783672ef
call_targets:
0xe2ff0a931f92198233c36501780d08d55dd9432f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xe8af762810a967311e136b4a43a5f11190b65347f29b2e2defa9bbd6783672ef",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe2ff0a931f92198233c36501780d08d55dd9432f"
],
"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": "0xda58b966",
"selector": "0xda58b966",
"calldata_variants": [
"0xda58b966",
"0xda58b9660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe20056e6",
"selector": "0xe20056e6",
"calldata_variants": [
"0xe20056e6",
"0xe20056e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee949a03",
"selector": "0xee949a03",
"calldata_variants": [
"0xee949a03",
"0xee949a030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4fae995",
"selector": "0xf4fae995",
"calldata_variants": [
"0xf4fae995",
"0xf4fae9950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfacf8323",
"selector": "0xfacf8323",
"calldata_variants": [
"0xfacf8323",
"0xfacf83230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb48295d",
"selector": "0xfb48295d",
"calldata_variants": [
"0xfb48295d",
"0xfb48295d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9a013413",
"selector": "0x9a013413",
"calldata_variants": [
"0x9a013413",
"0x9a0134130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa910657e",
"selector": "0xa910657e",
"calldata_variants": [
"0xa910657e",
"0xa910657e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1941,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6061,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| medium | reentrancy | codex | External token CALL before state updates (reentrancy window) | 75 | no | — |
viewevidence_json{
"evidence": "`...63a9059cbb...5af115...5b506000868152...8054...55...55...` shows a CALL (`f1`) to the token transfer selector followed by multiple `SSTORE` (`55`) operations after the call.",
"locations": [
"BYTECODE_BUNDLE.txt:5"
],
"recommendation": "Move all state updates (effects) before the external CALL, or add a reentrancy guard around the call path.",
"exploit_scenario": "A malicious or hook-enabled token contract called via `a9059cbb` can reenter this contract before the subsequent `SSTORE` updates complete, potentially repeating withdrawals/transfers or corrupting accounting if the function is reentrant."
}
|
| low | other | codex | ERC20 transfer return value decoded but not enforced | 65 | no | — |
viewevidence_json{
"evidence": "`...5af115...6107ca9190611fb9565b50...` shows a CALL followed by a jump to the return-data decoder at `0x1fb9`, then an immediate `POP` (`50`), indicating the boolean return value is discarded before state updates.",
"locations": [
"BYTECODE_BUNDLE.txt:5"
],
"recommendation": "Require the decoded boolean return value to be `true` (or use a SafeERC20-style helper that treats missing return data as success but rejects explicit `false`).",
"exploit_scenario": "If the token\u2019s `transfer` returns `false` without reverting, the low-level CALL still succeeds and the contract continues to update state, leading to accounting mismatches or loss of funds."
}
|