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

Analysis Run

dc39f4dd-c3c3-4e8f-b144-c30baee7c884

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 1:50 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
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.
View stderr
[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"]}]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
2
Total opcodes
6355
Flags
No heuristic flags raised.
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 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
view
trace_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
view
evidence_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
view
evidence_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."
}