456aedfb-f9c9-40c2-be0f-870330eb14ca
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31431 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77212 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 77213 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 77214 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 77215 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 77216 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 77217 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:297888] OpenAI Codex v0.77.0 (research preview)
[codex:297888] --------
[codex:297888] workdir: /tmp/codex-multi-mnq3rdl_
[codex:297888] model: gpt-5.2-codex
[codex:297888] provider: openai
[codex:297888] approval: never
[codex:297888] sandbox: read-only
[codex:297888] reasoning effort: xhigh
[codex:297888] reasoning summaries: auto
[codex:297888] session id: 019b81ad-bec5-7ca2-812d-295e34f1e864
[codex:297888] --------
[codex:297888] user
[codex:297888] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:297888]
[codex:297888] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:297888]
[codex:297888] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:297888] - Gas inefficiency, code quality, or best practices
[codex:297888] - Theoretical vulnerabilities without a clear extraction path
[codex:297888] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:297888] - Issues requiring social engineering or off-chain coordination
[codex:297888]
[codex:297888] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:297888] - CALL/DELEGATECALL with controllable destination or calldata
[codex:297888] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:297888] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:297888] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:297888] - External calls before state updates (reentrancy)
[codex:297888] - SELFDESTRUCT with controllable beneficiary
[codex:297888] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:297888]
[codex:297888] For each finding, you MUST explain:
[codex:297888] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:297888] 2. The concrete sequence of transactions to extract value
[codex:297888] 3. Why you believe this is exploitable (not just suspicious)
[codex:297888]
[codex:297888] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:297888] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:297888]
[codex:297888] Output MUST be valid JSON matching the provided schema.
[codex:297888] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:297888] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:297888] mcp startup: no servers
[codex:297888]
[codex:297888] thinking
[codex:297888] **Reading BYTECODE_BUNDLE.txt**
[codex:297888] exec
[codex:297888] /bin/bash -lc ls in /tmp/codex-multi-mnq3rdl_ succeeded in 5ms:
[codex:297888] BYTECODE_BUNDLE.txt
[codex:297888] codex-output-schema.json
[codex:297888] exec
[codex:297888] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-mnq3rdl_ succeeded in 5ms:
[codex:297888] Runtime bytecode bundle for best-effort auditing.
[codex:297888] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:297888]
[codex:297888] FILE: runtime_bytecode.hex
[codex:297888] 0x60606040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663173825d9811461011e5780631d7662a51461013d57806336ebcd901461031a578063547415251461034e5780635798d0561461038857806363011a09146103a85780636edec7051461042b5780637065cb481461044b57806379c5dc0b1461046a57806385b4bb53146104e1578063a0e67e2b14610531578063b77bf60014610544578063c223f6fe14610557578063ce730b2414610577578063d74f8edd1461063c578063dc8452cd14610665578063e20056e614610678578063eeb7a5a81461069d578063faf4e58e146106bd578063fbbf93a0146106dd578063fe9abc7c14610766575b005b341561012957600080fd5b61011c600160a060020a036004351661077f565b341561014857600080fd5b61016d67ffffffffffffffff6004358116906024351660443515156064351515610917565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b838110156101c15780820151838201526020016101a9565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b838110156102005780820151838201526020016101e8565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b8381101561023f578082015183820152602001610227565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b8381101561027e578082015183820152602001610266565b50505050905001878103835289818151815260200191508051906020019060200280838360005b838110156102bd5780820151838201526020016102a5565b50505050905001878103825288818151815260200191508051906020019060200280838360005b838110156102fc5780820151838201526020016102e4565b505050509050019c5050505050505050505050505060405180910390f35b341561032557600080fd5b61033a67ffffffffffffffff60043516610d71565b604051901515815260200160405180910390f35b341561035957600080fd5b61036b60043515156024351515610e17565b60405167ffffffffffffffff909116815260200160405180910390f35b341561039357600080fd5b61011c67ffffffffffffffff60043516610eac565b34156103b357600080fd5b6103d867ffffffffffffffff6004358116906024351660443515156064351515610f8c565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156104175780820151838201526020016103ff565b505050509050019250505060405180910390f35b341561043657600080fd5b61011c67ffffffffffffffff60043516611151565b341561045657600080fd5b61011c600160a060020a0360043516611314565b341561047557600080fd5b61036b60048035600160a060020a031690602480356fffffffffffffffffffffffffffffffff16919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061145e95505050505050565b34156104ec57600080fd5b6104f46114c5565b60405167ffffffffffffffff909316835263ffffffff9091166020830152600160a060020a03166040808301919091526060909101905180910390f35b341561053c57600080fd5b6103d861150e565b341561054f57600080fd5b61036b611577565b341561056257600080fd5b6103d867ffffffffffffffff6004351661158c565b341561058257600080fd5b61059767ffffffffffffffff600435166116fb565b604051600160a060020a038616815260208101859052821515606082015263ffffffff8216608082015260a06040820181815290820185818151815260200191508051906020019080838360005b838110156105fd5780820151838201526020016105e5565b50505050905090810190601f16801561062a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561064757600080fd5b61064f611818565b60405160ff909116815260200160405180910390f35b341561067057600080fd5b61064f61181d565b341561068357600080fd5b61011c600160a060020a0360043581169060243516611826565b34156106a857600080fd5b61011c67ffffffffffffffff600435166119eb565b34156106c857600080fd5b61064f67ffffffffffffffff60043516611ae9565b34156106e857600080fd5b6106f0611b6d565b60405160ff8516815267ffffffffffffffff831660408201526060810182905260806020820181815290820185818151815260200191508051906020019060200280838360005b8381101561074f578082015183820152602001610737565b505050509050019550505050505060405180910390f35b341561077157600080fd5b61011c60ff60043516611c0e565b600030600160a060020a031633600160a060020a03161415156107a157600080fd5b600160a060020a038216600090815260026020526040902054829060ff1615156107ca57600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156108ad5782600160a060020a031660038381548110151561081457fe5b600091825260209091200154600160a060020a031614156108a25760038054600019810190811061084157fe5b60009182526020909120015460038054600160a060020a03909216918490811061086757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556108ad565b6001909101906107ed565b6003805460001901906108c09082611e69565b5060035460045460ff1611156108dc576003546108dc90611c0e565b82600160a060020a03167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b61091f611e92565b610927611e92565b61092f611e92565b610937611e92565b61093f611e92565b610947611e92565b61094f611e92565b60045460009081908190610100900467ffffffffffffffff166040518059106109755750595b9080825280602002602001820160405250935060009250600091505b60045467ffffffffffffffff61010090910481169083161015610a47578b80156109d8575067ffffffffffffffff821660009081526020819052604090206003015460ff16155b80610a0757508a8015610a07575067ffffffffffffffff821660009081526020819052604090206003015460ff165b15610a3c5781848460ff1681518110610a1c57fe5b67ffffffffffffffff909216602092830290910190910152600192909201915b600190910190610991565b8d8d0367ffffffffffffffff16604051805910610a615750595b908082528060200260200182016040525099508d8d0367ffffffffffffffff16604051805910610a8e5750595b908082528060200260200182016040525098508d8d0367ffffffffffffffff16604051805910610abb5750595b908082528060200260200182016040525097508d8d0367ffffffffffffffff16604051805910610ae85750595b908082528060200260200182016040525096508d8d0367ffffffffffffffff16604051805910610b155750595b908082528060200260200182016040525095508d8d0367ffffffffffffffff16604051805910610b425750595b908082528060200260200182016040525094508d91505b8c67ffffffffffffffff168267ffffffffffffffff161015610d6057600080858467ffffffffffffffff1681518110610b8e57fe5b9060200190602002015167ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209050818a8f840367ffffffffffffffff1681518110610bd557fe5b9060200190602002019067ffffffffffffffff16908167ffffffffffffffff16815250508060000160009054906101000a9004600160a060020a0316898f840367ffffffffffffffff1681518110610c2957fe5b90602001906020020190600160a060020a03169081600160a060020a0316815250508060010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16888f840367ffffffffffffffff1681518110610c9657fe5b90602001906020020181815250508060030160009054906101000a900460ff16878f840367ffffffffffffffff1681518110610cce57fe5b90602001906020020190151590811515815250508060030160019054906101000a900463ffffffff16868f840367ffffffffffffffff1681518110610d0f57fe5b63ffffffff909216602092830290910190910152610d2c82611ae9565b858f840367ffffffffffffffff1681518110610d4457fe5b60ff909216602092830290910190910152600190910190610b59565b505050509499939850945094509450565b600080805b60035460ff9081169082161015610e105767ffffffffffffffff841660009081526001602052604081206003805491929160ff8516908110610db457fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610de8576001820191505b60045460ff1667ffffffffffffffff83161415610e085760019250610e10565b600101610d76565b5050919050565b6000805b60045467ffffffffffffffff61010090910481169082161015610ea557838015610e62575067ffffffffffffffff811660009081526020819052604090206003015460ff16155b80610e915750828015610e91575067ffffffffffffffff811660009081526020819052604090206003015460ff165b15610e9d576001820191505b600101610e1b565b5092915050565b33600160a060020a03811660009081526002602052604090205460ff161515610ed457600080fd5b67ffffffffffffffff82166000908152602081905260409020548290600160a060020a03161515610f0457600080fd5b67ffffffffffffffff8316600090815260016020908152604080832033600160a060020a038116855292529091205484919060ff1615610f4357600080fd5b67ffffffffffffffff85166000908152600160208181526040808420600160a060020a0333168552909152909120805460ff19169091179055610f8585611151565b5050505050565b610f94611e92565b610f9c611e92565b60008067ffffffffffffffff8088169089161161114657600454610100900467ffffffffffffffff16604051805910610fd25750595b9080825280602002602001820160405250925060009150600090505b60045467ffffffffffffffff610100909104811690821610156110a157858015611035575067ffffffffffffffff811660009081526020819052604090206003015460ff16155b806110645750848015611064575067ffffffffffffffff811660009081526020819052604090206003015460ff165b156110995780838360ff168151811061107957fe5b67ffffffffffffffff909216602092830290910190910152600191909101905b600101610fee565b87870367ffffffffffffffff166040518059106110bb5750595b908082528060200260200182016040525093508790505b8667ffffffffffffffff168167ffffffffffffffff16101561114657828167ffffffffffffffff168151811061110457fe5b906020019060200201518489830367ffffffffffffffff168151811061112657fe5b67ffffffffffffffff9092166020928302909101909101526001016110d2565b505050949350505050565b32600160a060020a03811660009081526002602052604081205490919060ff16151561117c57600080fd5b67ffffffffffffffff8316600090815260208190526040902060030154839060ff16156111a857600080fd5b6111b184610d71565b1561130e5767ffffffffffffffff84166000908152602081905260409081902060038101805460ff19166001908117909155815490820154919550600160a060020a0316916fffffffffffffffffffffffffffffffff9091169060028601905180828054600181600116156101000203166002900480156112735780601f1061124857610100808354040283529160200191611273565b820191906000526020600020905b81548152906001019060200180831161125657829003601f168201915b505091505060006040518083038185875af192505050156112ca578367ffffffffffffffff167f5057c1fd5e00097a5e483c0e9c4a6ff7f96612119b00300cfd6db40c4efcc82a60405160405180910390a261130e565b8367ffffffffffffffff167fea9d24e605ebc30d1d38865cecfecf52a47457061190570d2662de4abfc98e2c60405160405180910390a260038301805460ff191690555b50505050565b30600160a060020a031633600160a060020a031614151561133457600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561135c57600080fd5b81600160a060020a038116151561137257600080fd5b60035460045460019091019060ff90811690601e9083161180159061139a57508160ff168111155b80156113a557508015155b80156113b3575060ff821615155b15156113be57600080fd5b600160a060020a0385166000908152600260205260409020805460ff1916600190811790915560038054909181016113f68382611e69565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387169081179091557ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600160a060020a03331660009081526002602052604081205460ff168061149d5750600160a060020a03321660009081526002602052604090205460ff165b15156114a857600080fd5b6114b3848484611cbc565b90506114be81610eac565b9392505050565b60045460055467ffffffffffffffff69010000000000000000008304169163ffffffff710100000000000000000000000000000000009091041690600160a060020a0316909192565b611516611e92565b600380548060200260200160405190810160405280929190818152602001828054801561156c57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161154e575b505050505090505b90565b600454610100900467ffffffffffffffff1681565b611594611e92565b61159c611e92565b60035460009081906040518059106115b15750595b9080825280602002602001820160405250925060009150600090505b6003548110156116845767ffffffffffffffff85166000908152600160205260408120600380549192918490811061160157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561167c57600380548290811061163c57fe5b600091825260209091200154600160a060020a031683838151811061165d57fe5b600160a060020a03909216602092830290910190910152600191909101905b6001016115cd565b816040518059106116925750595b90808252806020026020018201604052509350600090505b818110156116f3578281815181106116be57fe5b906020019060200201518482815181106116d457fe5b600160a060020a039092166020928302909101909101526001016116aa565b505050919050565b600080611706611e92565b67ffffffffffffffff841660009081526020818152604080832080546001808301546003840154600280860180548a999798600160a060020a03909716976fffffffffffffffffffffffffffffffff90951696919560ff8516956101009586900463ffffffff169588959284161502600019019092160491601f83018290048202909101905190810160405280929190818152602001828054600181600116156101000203166002900480156117fd5780601f106117d2576101008083540402835291602001916117fd565b820191906000526020600020905b8154815290600101906020018083116117e057829003601f168201915b50505050509250955095509550955095505091939590929450565b601e81565b60045460ff1681565b600030600160a060020a031633600160a060020a031614151561184857600080fd5b600160a060020a038316600090815260026020526040902054839060ff16151561187157600080fd5b82600160a060020a038116151561188757600080fd5b600160a060020a038416600090815260026020526040902054849060ff16156118af57600080fd5b600093505b6003548410156119485785600160a060020a03166003858154811015156118d757fe5b600091825260209091200154600160a060020a0316141561193d578460038581548110151561190257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055611948565b6001909301926118b4565b600160a060020a03808716600081815260026020526040808220805460ff199081169091559389168252908190208054909316600117909255907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90905160405180910390a284600160a060020a03167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a2505050505050565b33600160a060020a03811660009081526002602052604090205460ff161515611a1357600080fd5b67ffffffffffffffff8216600090815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515611a5357600080fd5b67ffffffffffffffff8416600090815260208190526040902060030154849060ff1615611a7f57600080fd5b67ffffffffffffffff85166000818152600160209081526040808320600160a060020a033316808552925291829020805460ff19169055907ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e9905160405180910390a35050505050565b6000805b60035460ff9081169082161015611b675767ffffffffffffffff831660009081526001602052604081206003805491929160ff8516908110611b2b57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615611b5f576001820191505b600101611aed565b50919050565b6000611b77611e92565b60045460038054600092839260ff8216929091610100900467ffffffffffffffff169030600160a060020a031631908390602080820201604051908101604052809291908181526020018280548015611bf957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611bdb575b50505050509250935093509350935090919293565b30600160a060020a031633600160a060020a0316141515611c2e57600080fd5b60035460ff80831690601e90831611801590611c4d57508160ff168111155b8015611c5857508015155b8015611c66575060ff821615155b1515611c7157600080fd5b6004805460ff191660ff85161790557ffedc5ab0347d8e56e133db39bc67f6287de7f42255d27732b7245bb98095abdb8360405160ff909116815260200160405180910390a1505050565b600083600160a060020a0381161515611cd457600080fd5b600454610100900467ffffffffffffffff16915060a06040519081016040908152600160a060020a03871682526fffffffffffffffffffffffffffffffff861660208084019190915281830186905260006060840181905263ffffffff4216608085015267ffffffffffffffff8616815290819052208151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff92909216919091179055604082015181600201908051611dc7929160200190611ea4565b50606082015160038201805460ff19169115159190911790556080820151600391909101805464ffffffff00191661010063ffffffff90931683021790556004805468ffffffffffffffff001981169083900467ffffffffffffffff9081166001018116909302179055831690507f4684b4b92a1820c1ed8fb269ebf40d1003f25684a11929df20e21bbb155b846260405160405180910390a2509392505050565b815481835581811511611e8d57600083815260209020611e8d918101908301611f22565b505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ee557805160ff1916838001178555611f12565b82800160010185558215611f12579182015b82811115611f12578251825591602001919060010190611ef7565b50611f1e929150611f22565b5090565b61157491905b80821115611f1e5760008155600101611f285600a165627a7a72305820460fe1970cab0def48e318facc7828c66b62e7f7828ca9e5f6a5d3e84c71776f0029
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing bytecode for vulnerabilities**
[codex:297888]
[codex:297888] I’m figuring out how to scan the runtime bytecode for key opcodes like DELEGATECALL, SELFDESTRUCT, and CALL to detect any obvious exploit paths. Since there’s no source and limited tooling, I’ll write a Python script to parse the hex and identify opcode occurrences, aiming to find concrete profit paths. If nothing clear shows, I’ll mark no_findings as true to stay honest.
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import sys
[codex:297888] hexstr = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1]
[codex:297888] # extract hex
[codex:297888] import re
[codex:297888] m = re.search(r'0x[0-9a-fA-F]+', hexstr)
[codex:297888] if not m:
[codex:297888] print('no hex')
[codex:297888] sys.exit()
[codex:297888] code = bytes.fromhex(m.group(0)[2:])
[codex:297888] # opcode map
[codex:297888] opcodes = {}
[codex:297888] # basic map
[codex:297888] for i in range(0x00,0x100):
[codex:297888] opcodes[i]=('OP_%02x'%i,0)
[codex:297888] # override
[codex:297888] # arithmetic etc
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888] for k,v in names.items():
[codex:297888] opcodes[k]=(v,0)
[codex:297888] # push
[codex:297888] for i in range(1,33):
[codex:297888] opcodes[0x5f+i]=(f'PUSH{i}',i)
[codex:297888] # dup
[codex:297888] for i in range(1,17):
[codex:297888] opcodes[0x7f+i]=(f'DUP{i}',0)
[codex:297888] # swap
[codex:297888] for i in range(1,17):
[codex:297888] opcodes[0x8f+i]=(f'SWAP{i}',0)
[codex:297888] # log
[codex:297888] for i in range(0,5):
[codex:297888] opcodes[0xa0+i]=(f'LOG{i}',0)
[codex:297888]
[codex:297888] critical = {'CALL','DELEGATECALL','CALLCODE','SELFDESTRUCT','CREATE','CREATE2'}
[codex:297888] # disassemble and collect offsets
[codex:297888] ops = []
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op = code[i]
[codex:297888] name, imm = opcodes.get(op, ('OP_%02x'%op,0))
[codex:297888] data = code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,op,name,data))
[codex:297888] i += 1+imm
[codex:297888]
[codex:297888] # print occurrences of critical ops
[codex:297888] for off,op,name,data in ops:
[codex:297888] if name in critical:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] # also show any SELFDESTRUCT
[codex:297888] # count
[codex:297888] print('counts', {c:sum(1 for _,_,n,_ in ops if n==c) for c in critical})
[codex:297888]
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 38ms:
[codex:297888] 001285: CALL
[codex:297888] counts {'CREATE2': 0, 'DELEGATECALL': 0, 'CALLCODE': 0, 'CALL': 1, 'SELFDESTRUCT': 0, 'CREATE': 0}
[codex:297888]
[codex:297888] thinking
[codex:297888] **Inspecting CALL instruction context**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] hexstr = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:])
[codex:297888] # disassemble
[codex:297888] opcodes = {}
[codex:297888] # map similar as before
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888] for i in range(0x100):
[codex:297888] opcodes[i]=('OP_%02x'%i,0)
[codex:297888] for k,v in names.items():
[codex:297888] opcodes[k]=(v,0)
[codex:297888] for i in range(1,33):
[codex:297888] opcodes[0x5f+i]=(f'PUSH{i}',i)
[codex:297888] for i in range(1,17):
[codex:297888] opcodes[0x7f+i]=(f'DUP{i}',0)
[codex:297888] for i in range(1,17):
[codex:297888] opcodes[0x8f+i]=(f'SWAP{i}',0)
[codex:297888] for i in range(0,5):
[codex:297888] opcodes[0xa0+i]=(f'LOG{i}',0)
[codex:297888]
[codex:297888] # build list of instructions
[codex:297888] ops = []
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op = code[i]
[codex:297888] name, imm = opcodes[op]
[codex:297888] data = code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i, name, data))
[codex:297888] i += 1+imm
[codex:297888]
[codex:297888] # find CALL offset
[codex:297888] call_offsets = [i for i, name, data in ops if name=='CALL']
[codex:297888] print('CALL offsets', call_offsets)
[codex:297888] # print window around each
[codex:297888] for off in call_offsets:
[codex:297888] # get index in ops list
[codex:297888] idx = next(i for i,(o,_,__) in enumerate(ops) if o==off)
[codex:297888] start = max(0, idx-20)
[codex:297888] end = min(len(ops), idx+20)
[codex:297888] print('--- window around', off)
[codex:297888] for o,name,data in ops[start:end]:
[codex:297888] if data:
[codex:297888] d = data.hex()
[codex:297888] print(f'{o:06x}: {name} 0x{d}')
[codex:297888] else:
[codex:297888] print(f'{o:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 30ms:
[codex:297888] CALL offsets [4741]
[codex:297888] --- window around 4741
[codex:297888] 00126f: AND
[codex:297888] 001270: DUP3
[codex:297888] 001271: ADD
[codex:297888] 001272: SWAP2
[codex:297888] 001273: JUMPDEST
[codex:297888] 001274: POP
[codex:297888] 001275: POP
[codex:297888] 001276: SWAP2
[codex:297888] 001277: POP
[codex:297888] 001278: POP
[codex:297888] 001279: PUSH1 0x00
[codex:297888] 00127b: PUSH1 0x40
[codex:297888] 00127d: MLOAD
[codex:297888] 00127e: DUP1
[codex:297888] 00127f: DUP4
[codex:297888] 001280: SUB
[codex:297888] 001281: DUP2
[codex:297888] 001282: DUP6
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing CALL instruction context**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] hexstr = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:])
[codex:297888] # disassemble with op sizes
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op = code[i]
[codex:297888] name, imm = op_info(op)
[codex:297888] data = code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data))
[codex:297888] i += 1+imm
[codex:297888]
[codex:297888] # print a section around 0x1200-0x1310
[codex:297888] start=0x1200; end=0x1310
[codex:297888] for off,name,data in ops:
[codex:297888] if start <= off <= end:
[codex:297888] if data:
[codex:297888] print(f'{off:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 34ms:
[codex:297888] 001208: SWAP1
[codex:297888] 001209: SWAP2
[codex:297888] 00120a: AND
[codex:297888] 00120b: SWAP1
[codex:297888] 00120c: PUSH1 0x02
[codex:297888] 00120e: DUP7
[codex:297888] 00120f: ADD
[codex:297888] 001210: SWAP1
[codex:297888] 001211: MLOAD
[codex:297888] 001212: DUP1
[codex:297888] 001213: DUP3
[codex:297888] 001214: DUP1
[codex:297888] 001215: SLOAD
[codex:297888] 001216: PUSH1 0x01
[codex:297888] 001218: DUP2
[codex:297888] 001219: PUSH1 0x01
[codex:297888] 00121b: AND
[codex:297888] 00121c: ISZERO
[codex:297888] 00121d: PUSH2 0x0100
[codex:297888] 001220: MUL
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing EVM CALL stack arguments**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] hexstr = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:])
[codex:297888] # disassemble as earlier
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op = code[i]
[codex:297888] name, imm = op_info(op)
[codex:297888] data = code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data))
[codex:297888] i += 1+imm
[codex:297888]
[codex:297888] start=0x1100; end=0x1210
[codex:297888] for off,name,data in ops:
[codex:297888] if start <= off <= end:
[codex:297888] if data:
[codex:297888] print(f'{off:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 36ms:
[codex:297888] 001102: JUMPI
[codex:297888] 001103: INVALID
[codex:297888] 001104: JUMPDEST
[codex:297888] 001105: SWAP1
[codex:297888] 001106: PUSH1 0x20
[codex:297888] 001108: ADD
[codex:297888] 001109: SWAP1
[codex:297888] 00110a: PUSH1 0x20
[codex:297888] 00110c: MUL
[codex:297888] 00110d: ADD
[codex:297888] 00110e: MLOAD
[codex:297888] 00110f: DUP5
[codex:297888] 001110: DUP10
[codex:297888] 001111: DUP4
[codex:297888] 001112: SUB
[codex:297888] 001113: PUSH8 0xffffffffffffffff
[codex:297888] 00111c: AND
[codex:297888] 00111d: DUP2
[codex:297888] 00111e: MLOAD
[codex:297888] 00111f: DUP2
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing access control and external calls**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] hexstr = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:])
[codex:297888] # disassemble
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op = code[i]
[codex:297888] name, imm = op_info(op)
[codex:297888] data = code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data))
[codex:297888] i += 1+imm
[codex:297888]
[codex:297888] sstore_offsets = [i for i,name,_ in ops if name=='SSTORE']
[codex:297888] print('SSTORE count', len(sstore_offsets))
[codex:297888] for off in sstore_offsets:
[codex:297888] # show small window around sstore
[codex:297888] idx = next(i for i,(o,_,__) in enumerate(ops) if o==off)
[codex:297888] start = max(0, idx-6)
[codex:297888] end = min(len(ops), idx+6)
[codex:297888] print('--- sstore at', hex(off))
[codex:297888] for o,name,data in ops[start:end]:
[codex:297888] if data:
[codex:297888] print(f'{o:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{o:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 48ms:
[codex:297888] SSTORE count 22
[codex:297888] --- sstore at 0x7ea
[codex:297888] 0007e3: DUP1
[codex:297888] 0007e4: SLOAD
[codex:297888] 0007e5: PUSH1 0xff
[codex:297888] 0007e7: NOT
[codex:297888] 0007e8: AND
[codex:297888] 0007e9: SWAP1
[codex:297888] 0007ea: SSTORE
[codex:297888] 0007eb: SWAP2
[codex:297888] 0007ec: POP
[codex:297888] 0007ed: JUMPDEST
[codex:297888] 0007ee: PUSH1 0x03
[codex:297888] 0007f0: SLOAD
[codex:297888] --- sstore at 0x89d
[codex:297888] 000897: AND
[codex:297888] 000898: SWAP2
[codex:297888] 000899: SWAP1
[codex:297888] 00089a: SWAP2
[codex:297888] 00089b: OR
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing function selectors for access control**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:297888] # extract runtime hex
[codex:297888] m = re.search(r'0x[0-9a-fA-F]+', code)
[codex:297888] hexstr = m.group(0)[2:]
[codex:297888] # simple parse for pattern 63<4bytes>14<2bytes>57 (PUSH4 selector, EQ, PUSH2 dest, JUMPI)
[codex:297888] # We'll scan bytes for 0x63, then read next4, then look ahead for 0x14,0x61,0x??,0x??,0x57
[codex:297888] b = bytes.fromhex(hexstr)
[codex:297888] selectors = []
[codex:297888] for i in range(len(b)-10):
[codex:297888] if b[i]==0x63 and b[i+5]==0x14 and b[i+6]==0x61 and b[i+9]==0x57:
[codex:297888] sel = b[i+1:i+5].hex()
[codex:297888] dest = int.from_bytes(b[i+7:i+9], 'big')
[codex:297888] selectors.append((sel, dest, i))
[codex:297888]
[codex:297888] # unique
[codex:297888] seen = set()
[codex:297888] for sel, dest, i in selectors:
[codex:297888] if sel in seen: continue
[codex:297888] seen.add(sel)
[codex:297888] print(sel, hex(dest), 'at', hex(i))
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 29ms:
[codex:297888] 1d7662a5 0x13d at 0x41
[codex:297888] 36ebcd90 0x31a at 0x4c
[codex:297888] 54741525 0x34e at 0x57
[codex:297888] 5798d056 0x388 at 0x62
[codex:297888] 63011a09 0x3a8 at 0x6d
[codex:297888] 6edec705 0x42b at 0x78
[codex:297888] 7065cb48 0x44b at 0x83
[codex:297888] 79c5dc0b 0x46a at 0x8e
[codex:297888] 85b4bb53 0x4e1 at 0x99
[codex:297888] a0e67e2b 0x531 at 0xa4
[codex:297888] b77bf600 0x544 at 0xaf
[codex:297888] c223f6fe 0x557 at 0xba
[codex:297888] ce730b24 0x577 at 0xc5
[codex:297888] d74f8edd 0x63c at 0xd0
[codex:297888] dc8452cd 0x665 at 0xdb
[codex:297888] e20056e6 0x678 at 0xe6
[codex:297888] eeb7a5a8 0x69d at 0xf1
[codex:297888] faf4e58e 0x6bd at 0xfc
[codex:297888] fbbf93a0 0x6dd at 0x107
[codex:297888] fe9abc7c 0x766 at 0x112
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing selectors and access checks**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] hexstr = re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:]
[codex:297888] code = bytes.fromhex(hexstr)
[codex:297888] # disassemble
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op = code[i]
[codex:297888] name, imm = op_info(op)
[codex:297888] data = code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data))
[codex:297888] i += 1+imm
[codex:297888]
[codex:297888] # build mapping from offset to index
[codex:297888] idx_by_off = {off:i for i,(off,_,__) in enumerate(ops)}
[codex:297888]
[codex:297888] # selectors list from manual parsing
[codex:297888] selectors = [
[codex:297888] ('173825d9', 0x11e),
[codex:297888] ('1d7662a5', 0x13d),
[codex:297888] ('36ebcd90', 0x31a),
[codex:297888] ('54741525', 0x34e),
[codex:297888] ('5798d056', 0x388),
[codex:297888] ('63011a09', 0x3a8),
[codex:297888] ('6edec705', 0x42b),
[codex:297888] ('7065cb48', 0x44b),
[codex:297888] ('79c5dc0b', 0x46a),
[codex:297888] ('85b4bb53', 0x4e1),
[codex:297888] ('a0e67e2b', 0x531),
[codex:297888] ('b77bf600', 0x544),
[codex:297888] ('c223f6fe', 0x557),
[codex:297888] ('ce730b24', 0x577),
[codex:297888] ('d74f8edd', 0x63c),
[codex:297888] ('dc8452cd', 0x665),
[codex:297888] ('e20056e6', 0x678),
[codex:297888] ('eeb7a5a8', 0x69d),
[codex:297888] ('faf4e58e', 0x6bd),
[codex:297888] ('fbbf93a0', 0x6dd),
[codex:297888] ('fe9abc7c', 0x766),
[codex:297888] ]
[codex:297888]
[codex:297888] for sel, dest in selectors:
[codex:297888] print('\\nselector', sel, 'dest', hex(dest))
[codex:297888] if dest not in idx_by_off:
[codex:297888] print(' dest not found')
[codex:297888] continue
[codex:297888] idx = idx_by_off[dest]
[codex:297888] for off,name,data in ops[idx:idx+25]:
[codex:297888] if data:
[codex:297888] print(f'{off:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 34ms:
[codex:297888]
[codex:297888] selector 173825d9 dest 0x11e
[codex:297888] 00011e: JUMPDEST
[codex:297888] 00011f: CALLVALUE
[codex:297888] 000120: ISZERO
[codex:297888] 000121: PUSH2 0x0129
[codex:297888] 000124: JUMPI
[codex:297888] 000125: PUSH1 0x00
[codex:297888] 000127: DUP1
[codex:297888] 000128: REVERT
[codex:297888] 000129: JUMPDEST
[codex:297888] 00012a: PUSH2 0x011c
[codex:297888] 00012d: PUSH1 0x01
[codex:297888] 00012f: PUSH1 0xa0
[codex:297888] 000131: PUSH1 0x02
[codex:297888] 000133: EXP
[codex:297888] 000134: SUB
[codex:297888] 000135: PUSH1 0x04
[codex:297888] 000137: CALLDATALOAD
[codex:297888] 000138: AND
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing internal function calls and access control**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:])
[codex:297888] # disassemble
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] # disassemble list
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op=code[i]; name,imm=op_info(op); data=code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data)); i+=1+imm
[codex:297888]
[codex:297888] start=0x1314; end=0x1460
[codex:297888] for off,name,data in ops:
[codex:297888] if start <= off <= end:
[codex:297888] if data:
[codex:297888] print(f'{off:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 33ms:
[codex:297888] 001314: JUMPDEST
[codex:297888] 001315: ADDRESS
[codex:297888] 001316: PUSH1 0x01
[codex:297888] 001318: PUSH1 0xa0
[codex:297888] 00131a: PUSH1 0x02
[codex:297888] 00131c: EXP
[codex:297888] 00131d: SUB
[codex:297888] 00131e: AND
[codex:297888] 00131f: CALLER
[codex:297888] 001320: PUSH1 0x01
[codex:297888] 001322: PUSH1 0xa0
[codex:297888] 001324: PUSH1 0x02
[codex:297888] 001326: EXP
[codex:297888] 001327: SUB
[codex:297888] 001328: AND
[codex:297888] 001329: EQ
[codex:297888] 00132a: ISZERO
[codex:297888] 00132b: ISZERO
[codex:297888] 00132c: PUSH2 0x1334
[codex:297888] 00132f: JUMPI
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing self-call access control**
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:])
[codex:297888] # disassemble
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op=code[i]; name,imm=op_info(op); data=code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data)); i+=1+imm
[codex:297888]
[codex:297888] start=0x0d71; end=0x0f00
[codex:297888] for off,name,data in ops:
[codex:297888] if start <= off <= end:
[codex:297888] if data:
[codex:297888] print(f'{off:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 40ms:
[codex:297888] 000d71: JUMPDEST
[codex:297888] 000d72: PUSH1 0x00
[codex:297888] 000d74: DUP1
[codex:297888] 000d75: DUP1
[codex:297888] 000d76: JUMPDEST
[codex:297888] 000d77: PUSH1 0x03
[codex:297888] 000d79: SLOAD
[codex:297888] 000d7a: PUSH1 0xff
[codex:297888] 000d7c: SWAP1
[codex:297888] 000d7d: DUP2
[codex:297888] 000d7e: AND
[codex:297888] 000d7f: SWAP1
[codex:297888] 000d80: DUP3
[codex:297888] 000d81: AND
[codex:297888] 000d82: LT
[codex:297888] 000d83: ISZERO
[codex:297888] 000d84: PUSH2 0x0e10
[codex:297888] 000d87: JUMPI
[codex:297888] 000d88: PUSH8 0xffffffffffffffff
[codex:297888] 000d91: DUP5
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing multisig call and confirmation logic**
[codex:297888]
[codex:297888] I'm piecing together how the multisig contract manages transactions and confirmations, looking for flaws in owner checks or confirmation logic that might let unauthorized users trigger calls or fake confirmations. I’m focusing on mappings of owners, transactions, and confirmations, and the call flow that checks if a transaction is confirmed before execution. There might be functions handling confirmations that need closer inspection to spot missing protections.
[codex:297888] exec
[codex:297888] /bin/bash -lc "python - <<'PY'
[codex:297888] from pathlib import Path
[codex:297888] import re
[codex:297888] code = bytes.fromhex(re.search(r'0x[0-9a-fA-F]+', Path('BYTECODE_BUNDLE.txt').read_text()).group(0)[2:])
[codex:297888] # disassemble
[codex:297888] names = {
[codex:297888] 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:297888] 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:297888] 0x20:'SHA3',
[codex:297888] 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:297888] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:297888] 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:297888] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:297888] }
[codex:297888]
[codex:297888] def op_info(op):
[codex:297888] if 0x60 <= op <= 0x7f:
[codex:297888] return (f'PUSH{op-0x5f}', op-0x5f)
[codex:297888] if 0x80 <= op <= 0x8f:
[codex:297888] return (f'DUP{op-0x7f}', 0)
[codex:297888] if 0x90 <= op <= 0x9f:
[codex:297888] return (f'SWAP{op-0x8f}',0)
[codex:297888] if 0xa0 <= op <= 0xa4:
[codex:297888] return (f'LOG{op-0x9f}',0)
[codex:297888] return (names.get(op, f'OP_{op:02x}'),0)
[codex:297888]
[codex:297888] ops=[]
[codex:297888] i=0
[codex:297888] while i < len(code):
[codex:297888] op=code[i]; name,imm=op_info(op); data=code[i+1:i+1+imm] if imm else b''
[codex:297888] ops.append((i,name,data)); i+=1+imm
[codex:297888]
[codex:297888] start=0x19e0; end=0x1b10
[codex:297888] for off,name,data in ops:
[codex:297888] if start <= off <= end:
[codex:297888] if data:
[codex:297888] print(f'{off:06x}: {name} 0x{data.hex()}')
[codex:297888] else:
[codex:297888] print(f'{off:06x}: {name}')
[codex:297888] PY" in /tmp/codex-multi-mnq3rdl_ succeeded in 35ms:
[codex:297888] 0019e0: SWAP2
[codex:297888] 0019e1: SUB
[codex:297888] 0019e2: SWAP1
[codex:297888] 0019e3: LOG3
[codex:297888] 0019e4: POP
[codex:297888] 0019e5: POP
[codex:297888] 0019e6: POP
[codex:297888] 0019e7: POP
[codex:297888] 0019e8: POP
[codex:297888] 0019e9: POP
[codex:297888] 0019ea: JUMP
[codex:297888] 0019eb: JUMPDEST
[codex:297888] 0019ec: CALLER
[codex:297888] 0019ed: PUSH1 0x01
[codex:297888] 0019ef: PUSH1 0xa0
[codex:297888] 0019f1: PUSH1 0x02
[codex:297888] 0019f3: EXP
[codex:297888] 0019f4: SUB
[codex:297888] 0019f5: DUP2
[codex:297888] 0019f6: AND
[codex:297888]
[codex:297888] thinking
[codex:297888] **Analyzing owner checks and exploit paths**
[codex:297888] codex
[codex:297888] {"no_findings":true,"summary":"No concrete, exploitable profit path found from bytecode-only analysis. Runtime contains a single CALL and no DELEGATECALL/SELFDESTRUCT, and the CALL appears within owner/confirmation-gated logic typical of a multisig. Without a clear access-control bypass or unguarded value transfer, no extraction path can be proven from the bytecode alone.","findings":[]}
[codex:297888] tokens used
[codex:297888] 65,359
[codex:297888] {"no_findings":true,"summary":"No concrete, exploitable profit path found from bytecode-only analysis. Runtime contains a single CALL and no DELEGATECALL/SELFDESTRUCT, and the CALL appears within owner/confirmation-gated logic typical of a multisig. Without a clear access-control bypass or unguarded value transfer, no extraction path can be proven from the bytecode alone.","findings":[]}
{
"codex": {
"ran_at": "2026-01-03T02:32:01.852555+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path found from bytecode-only analysis. Runtime contains a single CALL and no DELEGATECALL/SELFDESTRUCT, and the CALL appears within owner/confirmation-gated logic typical of a multisig. Without a clear access-control bypass or unguarded value transfer, no extraction path can be proven from the bytecode alone.",
"raw_final": {
"summary": "No concrete, exploitable profit path found from bytecode-only analysis. Runtime contains a single CALL and no DELEGATECALL/SELFDESTRUCT, and the CALL appears within owner/confirmation-gated logic typical of a multisig. Without a clear access-control bypass or unguarded value transfer, no extraction path can be proven from the bytecode alone.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x011c 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000030: PUSH1 0x00 00000032: CALLDATALOAD 00000033: DIV 00000034: AND 00000035: PUSH4 0x173825d9 0000003a: DUP2 0000003b: EQ 0000003c: PUSH2 0x011e 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x1d7662a5 00000046: EQ 00000047: PUSH2 0x013d 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x36ebcd90 00000051: EQ 00000052: PUSH2 0x031a 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x54741525 0000005c: EQ 0000005d: PUSH2 0x034e 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x5798d056 00000067: EQ 00000068: PUSH2 0x0388 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x63011a09 00000072: EQ 00000073: PUSH2 0x03a8 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x6edec705 0000007d: EQ 0000007e: PUSH2 0x042b 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x7065cb48 00000088: EQ 00000089: PUSH2 0x044b 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0x79c5dc0b 00000093: EQ 00000094: PUSH2 0x046a 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x85b4bb53 0000009e: EQ 0000009f: PUSH2 0x04e1 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xa0e67e2b 000000a9: EQ 000000aa: PUSH2 0x0531 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xb77bf600 000000b4: EQ 000000b5: PUSH2 0x0544 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xc223f6fe 000000bf: EQ 000000c0: PUSH2 0x0557 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0xce730b24 000000ca: EQ 000000cb: PUSH2 0x0577 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0xd74f8edd 000000d5: EQ 000000d6: PUSH2 0x063c 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0xdc8452cd 000000e0: EQ 000000e1: PUSH2 0x0665 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0xe20056e6 000000eb: EQ 000000ec: PUSH2 0x0678 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0xeeb7a5a8 000000f6: EQ 000000f7: PUSH2 0x069d 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0xfaf4e58e 00000101: EQ 00000102: PUSH2 0x06bd 00000105: JUMPI 00000106: DUP1 00000107: PUSH4 0xfbbf93a0 0000010c: EQ 0000010d: PUSH2 0x06dd 00000110: JUMPI 00000111: DUP1 00000112: PUSH4 0xfe9abc7c 00000117: EQ 00000118: PUSH2 0x0766 0000011b: JUMPI 0000011c: JUMPDEST 0000011d: STOP 0000011e: JUMPDEST 0000011f: CALLVALUE 00000120: ISZERO 00000121: PUSH2 0x0129 00000124: JUMPI 00000125: PUSH1 0x00 00000127: DUP1 00000128: REVERT 00000129: JUMPDEST 0000012a: PUSH2 0x011c 0000012d: PUSH1 0x01 0000012f: PUSH1 0xa0 00000131: PUSH1 0x02 00000133: EXP 00000134: SUB 00000135: PUSH1 0x04 00000137: CALLDATALOAD 00000138: AND 00000139: PUSH2 0x077f 0000013c: JUMP 0000013d: JUMPDEST 0000013e: CALLVALUE 0000013f: ISZERO 00000140: PUSH2 0x0148 00000143: JUMPI 00000144: PUSH1 0x00 00000146: DUP1 00000147: REVERT 00000148: JUMPDEST 00000149: PUSH2 0x016d 0000014c: PUSH8 0xffffffffffffffff 00000155: PUSH1 0x04 00000157: CALLDATALOAD 00000158: DUP2 00000159: AND 0000015a: SWAP1 0000015b: PUSH1 0x24 0000015d: CALLDATALOAD 0000015e: AND 0000015f: PUSH1 0x44 00000161: CALLDATALOAD 00000162: ISZERO 00000163: ISZERO 00000164: PUSH1 0x64 00000166: CALLDATALOAD 00000167: ISZERO 00000168: ISZERO 00000169: PUSH2 0x0917 0000016c: JUMP 0000016d: JUMPDEST 0000016e: PUSH1 0x40 00000170: MLOAD 00000171: DUP1 00000172: DUP1 00000173: PUSH1 0x20 00000175: ADD 00000176: DUP1 00000177: PUSH1 0x20 00000179: ADD 0000017a: DUP1 0000017b: PUSH1 0x20 0000017d: ADD 0000017e: DUP1 0000017f: PUSH1 0x20 00000181: ADD 00000182: DUP1 00000183: PUSH1 0x20 00000185: ADD 00000186: DUP1 00000187: PUSH1 0x20 00000189: ADD 0000018a: DUP8 0000018b: DUP2 0000018c: SUB 0000018d: DUP8 0000018e: MSTORE 0000018f: DUP14 00000190: DUP2 00000191: DUP2 00000192: MLOAD 00000193: DUP2 00000194: MSTORE 00000195: PUSH1 0x20 00000197: ADD 00000198: SWAP2 00000199: POP 0000019a: DUP1 0000019b: MLOAD 0000019c: SWAP1 0000019d: PUSH1 0x20 0000019f: ADD 000001a0: SWAP1 000001a1: PUSH1 0x20 000001a3: MUL 000001a4: DUP1 000001a5: DUP4 000001a6: DUP4 000001a7: PUSH1 0x00 000001a9: JUMPDEST 000001aa: DUP4 000001ab: DUP2 000001ac: LT 000001ad: ISZERO 000001ae: PUSH2 0x01c1 000001b1: JUMPI 000001b2: DUP1 000001b3: DUP3 000001b4: ADD 000001b5: MLOAD 000001b6: DUP4 000001b7: DUP3 000001b8: ADD 000001b9: MSTORE 000001ba: PUSH1 0x20 000001bc: ADD 000001bd: PUSH2 0x01a9 000001c0: JUMP 000001c1: JUMPDEST 000001c2: POP 000001c3: POP 000001c4: POP 000001c5: POP 000001c6: SWAP1 000001c7: POP 000001c8: ADD 000001c9: DUP8 000001ca: DUP2 000001cb: SUB 000001cc: DUP7 000001cd: MSTORE 000001ce: DUP13 000001cf: DUP2 000001d0: DUP2 000001d1: MLOAD 000001d2: DUP2 000001d3: MSTORE 000001d4: PUSH1 0x20 000001d6: ADD 000001d7: SWAP2 000001d8: POP 000001d9: DUP1 000001da: MLOAD 000001db: SWAP1 000001dc: PUSH1 0x20 000001de: ADD 000001df: SWAP1 000001e0: PUSH1 0x20 000001e2: MUL 000001e3: DUP1 000001e4: DUP4 000001e5: DUP4 000001e6: PUSH1 0x00 000001e8: JUMPDEST 000001e9: DUP4 000001ea: DUP2 000001eb: LT 000001ec: ISZERO 000001ed: PUSH2 0x0200 000001f0: JUMPI 000001f1: DUP1 000001f2: DUP3 000001f3: ADD 000001f4: MLOAD 000001f5: DUP4 000001f6: DUP3 000001f7: ADD 000001f8: MSTORE 000001f9: PUSH1 0x20 000001fb: ADD 000001fc: PUSH2 0x01e8 000001ff: JUMP 00000200: JUMPDEST 00000201: POP 00000202: POP 00000203: POP 00000204: POP 00000205: SWAP1 00000206: POP 00000207: ADD 00000208: DUP8 00000209: DUP2 0000020a: SUB 0000020b: DUP6 0000020c: MSTORE 0000020d: DUP12 0000020e: DUP2 0000020f: DUP2 00000210: MLOAD 00000211: DUP2 00000212: MSTORE 00000213: PUSH1 0x20 00000215: ADD 00000216: SWAP2 00000217: POP 00000218: DUP1 00000219: MLOAD 0000021a: SWAP1 0000021b: PUSH1 0x20 0000021d: ADD 0000021e: SWAP1 0000021f: PUSH1 0x20 00000221: MUL 00000222: DUP1 00000223: DUP4 00000224: DUP4 00000225: PUSH1 0x00 00000227: JUMPDEST 00000228: DUP4 00000229: DUP2 0000022a: LT 0000022b: ISZERO 0000022c: PUSH2 0x023f 0000022f: JUMPI 00000230: DUP1 00000231: DUP3 00000232: ADD 00000233: MLOAD 00000234: DUP4 00000235: DUP3 00000236: ADD 00000237: MSTORE 00000238: PUSH1 0x20 0000023a: ADD 0000023b: PUSH2 0x0227 0000023e: JUMP 0000023f: JUMPDEST 00000240: POP 00000241: POP 00000242: POP 00000243: POP 00000244: SWAP1 00000245: POP 00000246: ADD 00000247: DUP8 00000248: DUP2 00000249: SUB 0000024a: DUP5 0000024b: MSTORE 0000024c: DUP11 0000024d: DUP2 0000024e: DUP2 0000024f: MLOAD 00000250: DUP2 00000251: MSTORE 00000252: PUSH1 0x20 00000254: ADD 00000255: SWAP2 00000256: POP 00000257: DUP1 00000258: MLOAD 00000259: SWAP1 0000025a: PUSH1 0x20 0000025c: ADD 0000025d: SWAP1 0000025e: PUSH1 0x20 00000260: MUL 00000261: DUP1 00000262: DUP4 00000263: DUP4 00000264: PUSH1 0x00 00000266: JUMPDEST 00000267: DUP4 00000268: DUP2 00000269: LT 0000026a: ISZERO 0000026b: PUSH2 0x027e 0000026e: JUMPI 0000026f: DUP1 00000270: DUP3 00000271: ADD 00000272: MLOAD 00000273: DUP4 00000274: DUP3 00000275: ADD 00000276: MSTORE 00000277: PUSH1 0x20 00000279: ADD 0000027a: PUSH2 0x0266 0000027d: JUMP 0000027e: JUMPDEST 0000027f: POP 00000280: POP 00000281: POP 00000282: POP 00000283: SWAP1 00000284: POP 00000285: ADD 00000286: DUP8 00000287: DUP2 00000288: SUB 00000289: DUP4 0000028a: MSTORE 0000028b: DUP10 0000028c: DUP2 0000028d: DUP2 0000028e: MLOAD 0000028f: DUP2 00000290: MSTORE 00000291: PUSH1 0x20 00000293: ADD 00000294: SWAP2 00000295: POP 00000296: DUP1 00000297: MLOAD 00000298: SWAP1 00000299: PUSH1 0x20 0000029b: ADD 0000029c: SWAP1 0000029d: PUSH1 0x20 0000029f: MUL 000002a0: DUP1 000002a1: DUP4 000002a2: DUP4 000002a3: PUSH1 0x00 000002a5: JUMPDEST 000002a6: DUP4 000002a7: DUP2 000002a8: LT 000002a9: ISZERO 000002aa: PUSH2 0x02bd 000002ad: JUMPI 000002ae: DUP1 000002af: DUP3 000002b0: ADD 000002b1: MLOAD 000002b2: DUP4 000002b3: DUP3 000002b4: ADD 000002b5: MSTORE 000002b6: PUSH1 0x20 000002b8: ADD 000002b9: PUSH2 0x02a5 000002bc: JUMP 000002bd: JUMPDEST 000002be: POP 000002bf: POP 000002c0: POP 000002c1: POP 000002c2: SWAP1 000002c3: POP 000002c4: ADD 000002c5: DUP8 000002c6: DUP2 000002c7: SUB 000002c8: DUP3 000002c9: MSTORE 000002ca: DUP9 000002cb: DUP2 000002cc: DUP2 000002cd: MLOAD 000002ce: DUP2 000002cf: MSTORE 000002d0: PUSH1 0x20 000002d2: ADD 000002d3: SWAP2 000002d4: POP 000002d5: DUP1 000002d6: MLOAD 000002d7: SWAP1 000002d8: PUSH1 0x20 000002da: ADD 000002db: SWAP1 000002dc: PUSH1 0x20 000002de: MUL 000002df: DUP1 000002e0: DUP4 000002e1: DUP4 000002e2: PUSH1 0x00 000002e4: JUMPDEST 000002e5: DUP4 000002e6: DUP2 000002e7: LT 000002e8: ISZERO 000002e9: PUSH2 0x02fc 000002ec: JUMPI 000002ed: DUP1 000002ee: DUP3 000002ef: ADD 000002f0: MLOAD 000002f1: DUP4 000002f2: DUP3 000002f3: ADD 000002f4: MSTORE 000002f5: PUSH1 0x20 000002f7: ADD 000002f8: PUSH2 0x02e4 000002fb: JUMP 000002fc: JUMPDEST 000002fd: POP 000002fe: POP 000002ff: POP 00000300: POP 00000301: SWAP1 00000302: POP 00000303: ADD 00000304: SWAP13 00000305: POP 00000306: POP 00000307: POP 00000308: POP 00000309: POP 0000030a: POP 0000030b: POP 0000030c: POP 0000030d: POP 0000030e: POP 0000030f: POP 00000310: POP 00000311: POP 00000312: PUSH1 0x40 00000314: MLOAD 00000315: DUP1 00000316: SWAP2 00000317: SUB 00000318: SWAP1 00000319: RETURN 0000031a: JUMPDEST 0000031b: CALLVALUE 0000031c: ISZERO 0000031d: PUSH2 0x0325 00000320: JUMPI 00000321: PUSH1 0x00 00000323: DUP1 00000324: REVERT 00000325: JUMPDEST 00000326: PUSH2 0x033a 00000329: PUSH8 0xffffffffffffffff 00000332: PUSH1 0x04 00000334: CALLDATALOAD 00000335: AND 00000336: PUSH2 0x0d71 00000339: JUMP 0000033a: JUMPDEST 0000033b: PUSH1 0x40 0000033d: MLOAD 0000033e: SWAP1 0000033f: ISZERO 00000340: ISZERO 00000341: DUP2 00000342: MSTORE 00000343: PUSH1 0x20 00000345: ADD 00000346: PUSH1 0x40 00000348: MLOAD 00000349: DUP1 0000034a: SWAP2 0000034b: SUB 0000034c: SWAP1 0000034d: RETURN 0000034e: JUMPDEST 0000034f: CALLVALUE 00000350: ISZERO 00000351: PUSH2 0x0359 00000354: JUMPI 00000355: PUSH1 0x00 00000357: DUP1 00000358: REVERT 00000359: JUMPDEST 0000035a: PUSH2 0x036b 0000035d: PUSH1 0x04 0000035f: CALLDATALOAD 00000360: ISZERO 00000361: ISZERO 00000362: PUSH1 0x24 00000364: CALLDATALOAD 00000365: ISZERO 00000366: ISZERO 00000367: PUSH2 0x0e17 0000036a: JUMP 0000036b: JUMPDEST 0000036c: PUSH1 0x40 0000036e: MLOAD 0000036f: PUSH8 0xffffffffffffffff 00000378: SWAP1 00000379: SWAP2 0000037a: AND 0000037b: DUP2 0000037c: MSTORE 0000037d: PUSH1 0x20 0000037f: ADD 00000380: PUSH1 0x40 00000382: MLOAD 00000383: DUP1 00000384: SWAP2 00000385: SUB 00000386: SWAP1 00000387: RETURN 00000388: JUMPDEST 00000389: CALLVALUE 0000038a: ISZERO 0000038b: PUSH2 0x0393 0000038e: JUMPI 0000038f: PUSH1 0x00 00000391: DUP1 00000392: REVERT 00000393: JUMPDEST 00000394: PUSH2 0x011c 00000397: PUSH8 0xffffffffffffffff 000003a0: PUSH1 0x04 000003a2: CALLDATALOAD 000003a3: AND 000003a4: PUSH2 0x0eac 000003a7: JUMP 000003a8: JUMPDEST 000003a9: CALLVALUE 000003aa: ISZERO 000003ab: PUSH2 0x03b3 000003ae: JUMPI 000003af: PUSH1 0x00 000003b1: DUP1 000003b2: REVERT 000003b3: JUMPDEST 000003b4: PUSH2 0x03d8 000003b7: PUSH8 0xffffffffffffffff 000003c0: PUSH1 0x04 000003c2: CALLDATALOAD 000003c3: DUP2 000003c4: AND 000003c5: SWAP1 000003c6: PUSH1 0x24 000003c8: CALLDATALOAD 000003c9: AND 000003ca: PUSH1 0x44 000003cc: CALLDATALOAD 000003cd: ISZERO 000003ce: ISZERO 000003cf: PUSH1 0x64 000003d1: CALLDATALOAD 000003d2: ISZERO 000003d3: ISZERO 000003d4: PUSH2 0x0f8c 000003d7: JUMP 000003d8: JUMPDEST 000003d9: PUSH1 0x40 000003db: MLOAD 000003dc: PUSH1 0x20 000003de: DUP1 000003df: DUP3 000003e0: MSTORE 000003e1: DUP2 000003e2: SWAP1 000003e3: DUP2 000003e4: ADD 000003e5: DUP4 000003e6: DUP2 000003e7: DUP2 000003e8: MLOAD 000003e9: DUP2 000003ea: MSTORE 000003eb: PUSH1 0x20 000003ed: ADD 000003ee: SWAP2 000003ef: POP 000003f0: DUP1 000003f1: MLOAD 000003f2: SWAP1 000003f3: PUSH1 0x20 000003f5: ADD 000003f6: SWAP1 000003f7: PUSH1 0x20 000003f9: MUL 000003fa: DUP1 000003fb: DUP4 000003fc: DUP4 000003fd: PUSH1 0x00 000003ff: JUMPDEST 00000400: DUP4 00000401: DUP2 00000402: LT 00000403: ISZERO 00000404: PUSH2 0x0417 00000407: JUMPI 00000408: DUP1 00000409: DUP3 0000040a: ADD 0000040b: MLOAD 0000040c: DUP4 0000040d: DUP3 0000040e: ADD 0000040f: MSTORE 00000410: PUSH1 0x20 00000412: ADD 00000413: PUSH2 0x03ff 00000416: JUMP 00000417: JUMPDEST 00000418: POP 00000419: POP 0000041a: POP 0000041b: POP 0000041c: SWAP1 0000041d: POP 0000041e: ADD 0000041f: SWAP3 00000420: POP 00000421: POP 00000422: POP 00000423: PUSH1 0x40 00000425: MLOAD 00000426: DUP1 00000427: SWAP2 00000428: SUB 00000429: SWAP1 0000042a: RETURN 0000042b: JUMPDEST 0000042c: CALLVALUE 0000042d: ISZERO 0000042e: PUSH2 0x0436 00000431: JUMPI 00000432: PUSH1 0x00 00000434: DUP1 00000435: REVERT 00000436: JUMPDEST 00000437: PUSH2 0x011c 0000043a: PUSH8 0xffffffffffffffff 00000443: PUSH1 0x04 00000445: CALLDATALOAD 00000446: AND 00000447: PUSH2 0x1151 0000044a: JUMP 0000044b: JUMPDEST 0000044c: CALLVALUE 0000044d: ISZERO 0000044e: PUSH2 0x0456 00000451: JUMPI 00000452: PUSH1 0x00 00000454: DUP1 00000455: REVERT 00000456: JUMPDEST 00000457: PUSH2 0x011c 0000045a: PUSH1 0x01 0000045c: PUSH1 0xa0 0000045e: PUSH1 0x02 00000460: EXP 00000461: SUB 00000462: PUSH1 0x04 00000464: CALLDATALOAD 00000465: AND 00000466: PUSH2 0x1314 00000469: JUMP 0000046a: JUMPDEST 0000046b: CALLVALUE 0000046c: ISZERO 0000046d: PUSH2 0x0475 00000470: JUMPI 00000471: PUSH1 0x00 00000473: DUP1 00000474: REVERT 00000475: JUMPDEST 00000476: PUSH2 0x036b 00000479: PUSH1 0x04 0000047b: DUP1 0000047c: CALLDATALOAD 0000047d: PUSH1 0x01 0000047f: PUSH1 0xa0 00000481: PUSH1 0x02 00000483: EXP 00000484: SUB 00000485: AND 00000486: SWAP1 00000487: PUSH1 0x24 00000489: DUP1 0000048a: CALLDATALOAD 0000048b: PUSH16 0xffffffffffffffffffffffffffffffff 0000049c: AND 0000049d: SWAP2 0000049e: SWAP1 0000049f: PUSH1 0x64 000004a1: SWAP1 000004a2: PUSH1 0x44 000004a4: CALLDATALOAD 000004a5: SWAP1 000004a6: DUP2 000004a7: ADD 000004a8: SWAP1 000004a9: DUP4 000004aa: ADD 000004ab: CALLDATALOAD 000004ac: DUP1 000004ad: PUSH1 0x20 000004af: PUSH1 0x1f 000004b1: DUP3 000004b2: ADD 000004b3: DUP2 000004b4: SWAP1 000004b5: DIV 000004b6: DUP2 000004b7: MUL 000004b8: ADD 000004b9: PUSH1 0x40 000004bb: MLOAD 000004bc: SWAP1 000004bd: DUP2 000004be: ADD 000004bf: PUSH1 0x40 000004c1: MSTORE 000004c2: DUP2 000004c3: DUP2 000004c4: MSTORE 000004c5: SWAP3 000004c6: SWAP2 000004c7: SWAP1 000004c8: PUSH1 0x20 000004ca: DUP5 000004cb: ADD 000004cc: DUP4 000004cd: DUP4 000004ce: DUP1 000004cf: DUP3 000004d0: DUP5 000004d1: CALLDATACOPY 000004d2: POP 000004d3: SWAP5 000004d4: SWAP7 000004d5: POP 000004d6: PUSH2 0x145e 000004d9: SWAP6 000004da: POP 000004db: POP 000004dc: POP 000004dd: POP 000004de: POP 000004df: POP 000004e0: JUMP 000004e1: JUMPDEST 000004e2: CALLVALUE 000004e3: ISZERO 000004e4: PUSH2 0x04ec 000004e7: JUMPI 000004e8: PUSH1 0x00 000004ea: DUP1 000004eb: REVERT 000004ec: JUMPDEST 000004ed: PUSH2 0x04f4 000004f0: PUSH2 0x14c5 000004f3: JUMP 000004f4: JUMPDEST 000004f5: PUSH1 0x40 000004f7: MLOAD 000004f8: PUSH8 0xffffffffffffffff 00000501: SWAP1 00000502: SWAP4 00000503: AND 00000504: DUP4 00000505: MSTORE 00000506: PUSH4 0xffffffff 0000050b: SWAP1 0000050c: SWAP2 0000050d: AND 0000050e: PUSH1 0x20 00000510: DUP4 00000511: ADD 00000512: MSTORE 00000513: PUSH1 0x01 00000515: PUSH1 0xa0 00000517: PUSH1 0x02 00000519: EXP 0000051a: SUB 0000051b: AND 0000051c: PUSH1 0x40 0000051e: DUP1 0000051f: DUP4 00000520: ADD 00000521: SWAP2 00000522: SWAP1 00000523: SWAP2 00000524: MSTORE 00000525: PUSH1 0x60 00000527: SWAP1 00000528: SWAP2 00000529: ADD 0000052a: SWAP1 0000052b: MLOAD 0000052c: DUP1 0000052d: SWAP2 0000052e: SUB 0000052f: SWAP1 00000530: RETURN 00000531: JUMPDEST 00000532: CALLVALUE 00000533: ISZERO 00000534: PUSH2 0x053c 00000537: JUMPI 00000538: PUSH1 0x00 0000053a: DUP1 0000053b: REVERT 0000053c: JUMPDEST 0000053d: PUSH2 0x03d8 00000540: PUSH2 0x150e 00000543: JUMP 00000544: JUMPDEST 00000545: CALLVALUE 00000546: ISZERO 00000547: PUSH2 0x054f 0000054a: JUMPI 0000054b: PUSH1 0x00 0000054d: DUP1 0000054e: REVERT 0000054f: JUMPDEST 00000550: PUSH2 0x036b 00000553: PUSH2 0x1577 00000556: JUMP 00000557: JUMPDEST 00000558: CALLVALUE 00000559: ISZERO 0000055a: PUSH2 0x0562 0000055d: JUMPI 0000055e: PUSH1 0x00 00000560: DUP1 00000561: REVERT 00000562: JUMPDEST 00000563: PUSH2 0x03d8 00000566: PUSH8 0xffffffffffffffff 0000056f: PUSH1 0x04 00000571: CALLDATALOAD 00000572: AND 00000573: PUSH2 0x158c 00000576: JUMP 00000577: JUMPDEST 00000578: CALLVALUE 00000579: ISZERO 0000057a: PUSH2 0x0582 0000057d: JUMPI 0000057e: PUSH1 0x00 00000580: DUP1 00000581: REVERT 00000582: JUMPDEST 00000583: PUSH2 0x0597 00000586: PUSH8 0xffffffffffffffff 0000058f: PUSH1 0x04 00000591: CALLDATALOAD 00000592: AND 00000593: PUSH2 0x16fb 00000596: JUMP 00000597: JUMPDEST 00000598: PUSH1 0x40 0000059a: MLOAD 0000059b: PUSH1 0x01 0000059d: PUSH1 0xa0 0000059f: PUSH1 0x02 000005a1: EXP 000005a2: SUB 000005a3: DUP7 000005a4: AND 000005a5: DUP2 000005a6: MSTORE 000005a7: PUSH1 0x20 000005a9: DUP2 000005aa: ADD 000005ab: DUP6 000005ac: SWAP1 000005ad: MSTORE 000005ae: DUP3 000005af: ISZERO 000005b0: ISZERO 000005b1: PUSH1 0x60 000005b3: DUP3 000005b4: ADD 000005b5: MSTORE 000005b6: PUSH4 0xffffffff 000005bb: DUP3 000005bc: AND 000005bd: PUSH1 0x80 000005bf: DUP3 000005c0: ADD 000005c1: MSTORE 000005c2: PUSH1 0xa0 000005c4: PUSH1 0x40 000005c6: DUP3 000005c7: ADD 000005c8: DUP2 000005c9: DUP2 000005ca: MSTORE 000005cb: SWAP1 000005cc: DUP3 000005cd: ADD 000005ce: DUP6 000005cf: DUP2 000005d0: DUP2 000005d1: MLOAD 000005d2: DUP2 000005d3: MSTORE 000005d4: PUSH1 0x20 000005d6: ADD 000005d7: SWAP2 000005d8: POP 000005d9: DUP1 000005da: MLOAD 000005db: SWAP1 000005dc: PUSH1 0x20 000005de: ADD 000005df: SWAP1 000005e0: DUP1 000005e1: DUP4 000005e2: DUP4 000005e3: PUSH1 0x00 000005e5: JUMPDEST 000005e6: DUP4 000005e7: DUP2 000005e8: LT 000005e9: ISZERO 000005ea: PUSH2 0x05fd 000005ed: JUMPI 000005ee: DUP1 000005ef: DUP3 000005f0: ADD 000005f1: MLOAD 000005f2: DUP4 000005f3: DUP3 000005f4: ADD 000005f5: MSTORE 000005f6: PUSH1 0x20 000005f8: ADD 000005f9: PUSH2 0x05e5 000005fc: JUMP 000005fd: JUMPDEST 000005fe: POP 000005ff: POP 00000600: POP 00000601: POP 00000602: SWAP1 00000603: POP 00000604: SWAP1 00000605: DUP2 00000606: ADD 00000607: SWAP1 00000608: PUSH1 0x1f 0000060a: AND 0000060b: DUP1 0000060c: ISZERO 0000060d: PUSH2 0x062a 00000610: JUMPI 00000611: DUP1 00000612: DUP3 00000613: SUB 00000614: DUP1 00000615: MLOAD 00000616: PUSH1 0x01 00000618: DUP4 00000619: PUSH1 0x20 0000061b: SUB 0000061c: PUSH2 0x0100 0000061f: EXP 00000620: SUB 00000621: NOT 00000622: AND 00000623: DUP2 00000624: MSTORE 00000625: PUSH1 0x20 00000627: ADD 00000628: SWAP2 00000629: POP 0000062a: JUMPDEST 0000062b: POP 0000062c: SWAP7 0000062d: POP 0000062e: POP 0000062f: POP 00000630: POP 00000631: POP 00000632: POP 00000633: POP 00000634: PUSH1 0x40 00000636: MLOAD 00000637: DUP1 00000638: SWAP2 00000639: SUB 0000063a: SWAP1 0000063b: RETURN 0000063c: JUMPDEST 0000063d: CALLVALUE 0000063e: ISZERO 0000063f: PUSH2 0x0647 00000642: JUMPI 00000643: PUSH1 0x00 00000645: DUP1 00000646: REVERT 00000647: JUMPDEST 00000648: PUSH2 0x064f 0000064b: PUSH2 0x1818 0000064e: JUMP 0000064f: JUMPDEST 00000650: PUSH1 0x40 00000652: MLOAD 00000653: PUSH1 0xff 00000655: SWAP1 00000656: SWAP2 00000657: AND 00000658: DUP2 00000659: MSTORE 0000065a: PUSH1 0x20 0000065c: ADD 0000065d: PUSH1 0x40 0000065f: MLOAD 00000660: DUP1 00000661: SWAP2 00000662: SUB 00000663: SWAP1 00000664: RETURN 00000665: JUMPDEST 00000666: CALLVALUE 00000667: ISZERO 00000668: PUSH2 0x0670 0000066b: JUMPI 0000066c: PUSH1 0x00 0000066e: DUP1 0000066f: REVERT 00000670: JUMPDEST 00000671: PUSH2 0x064f 00000674: PUSH2 0x181d 00000677: JUMP 00000678: JUMPDEST 00000679: CALLVALUE 0000067a: ISZERO 0000067b: PUSH2 0x0683 0000067e: JUMPI 0000067f: PUSH1 0x00 00000681: DUP1 00000682: REVERT 00000683: JUMPDEST 00000684: PUSH2 0x011c 00000687: PUSH1 0x01 00000689: PUSH1 0xa0 0000068b: PUSH1 0x02 0000068d: EXP 0000068e: SUB 0000068f: PUSH1 0x04 00000691: CALLDATALOAD 00000692: DUP2 00000693: AND 00000694: SWAP1 00000695: PUSH1 0x24 00000697: CALLDATALOAD 00000698: AND 00000699: PUSH2 0x1826 0000069c: JUMP 0000069d: JUMPDEST 0000069e: CALLVALUE 0000069f: ISZERO 000006a0: PUSH2 0x06a8 000006a3: JUMPI 000006a4: PUSH1 0x00 000006a6: DUP1 000006a7: REVERT 000006a8: JUMPDEST 000006a9: PUSH2 0x011c 000006ac: PUSH8 0xffffffffffffffff 000006b5: PUSH1 0x04 000006b7: CALLDATALOAD 000006b8: AND 000006b9: PUSH2 0x19eb 000006bc: JUMP 000006bd: JUMPDEST 000006be: CALLVALUE 000006bf: ISZERO 000006c0: PUSH2 0x06c8 000006c3: JUMPI 000006c4: PUSH1 0x00 000006c6: DUP1 000006c7: REVERT 000006c8: JUMPDEST 000006c9: PUSH2 0x064f 000006cc: PUSH8 0xffffffffffffffff 000006d5: PUSH1 0x04 000006d7: CALLDATALOAD 000006d8: AND 000006d9: PUSH2 0x1ae9 000006dc: JUMP 000006dd: JUMPDEST 000006de: CALLVALUE 000006df: ISZERO 000006e0: PUSH2 0x06e8 000006e3: JUMPI 000006e4: PUSH1 0x00 000006e6: DUP1 000006e7: REVERT 000006e8: JUMPDEST 000006e9: PUSH2 0x06f0 000006ec: PUSH2 0x1b6d 000006ef: JUMP 000006f0: JUMPDEST 000006f1: PUSH1 0x40 000006f3: MLOAD 000006f4: PUSH1 0xff 000006f6: DUP6 000006f7: AND 000006f8: DUP2 000006f9: MSTORE 000006fa: PUSH8 0xffffffffffffffff 00000703: DUP4 00000704: AND 00000705: PUSH1 0x40 00000707: DUP3 00000708: ADD 00000709: MSTORE 0000070a: PUSH1 0x60 0000070c: DUP2 0000070d: ADD 0000070e: DUP3 0000070f: SWAP1 00000710: MSTORE 00000711: PUSH1 0x80 00000713: PUSH1 0x20 00000715: DUP3 00000716: ADD 00000717: DUP2 00000718: DUP2 00000719: MSTORE 0000071a: SWAP1 0000071b: DUP3 0000071c: ADD 0000071d: DUP6 0000071e: DUP2 0000071f: DUP2 00000720: MLOAD 00000721: DUP2 00000722: MSTORE 00000723: PUSH1 0x20 00000725: ADD 00000726: SWAP2 00000727: POP 00000728: DUP1 00000729: MLOAD 0000072a: SWAP1 0000072b: PUSH1 0x20 0000072d: ADD 0000072e: SWAP1 0000072f: PUSH1 0x20 00000731: MUL 00000732: DUP1 00000733: DUP4 00000734: DUP4 00000735: PUSH1 0x00 00000737: JUMPDEST 00000738: DUP4 00000739: DUP2 0000073a: LT 0000073b: ISZERO 0000073c: PUSH2 0x074f 0000073f: JUMPI 00000740: DUP1 00000741: DUP3 00000742: ADD 00000743: MLOAD 00000744: DUP4 00000745: DUP3 00000746: ADD 00000747: MSTORE 00000748: PUSH1 0x20 0000074a: ADD 0000074b: PUSH2 0x0737 0000074e: JUMP 0000074f: JUMPDEST 00000750: POP 00000751: POP 00000752: POP 00000753: POP 00000754: SWAP1 00000755: POP 00000756: ADD 00000757: SWAP6 00000758: POP 00000759: POP 0000075a: POP 0000075b: POP 0000075c: POP 0000075d: POP 0000075e: PUSH1 0x40 00000760: MLOAD 00000761: DUP1 00000762: SWAP2 00000763: SUB 00000764: SWAP1 00000765: RETURN 00000766: JUMPDEST 00000767: CALLVALUE 00000768: ISZERO 00000769: PUSH2 0x0771 0000076c: JUMPI 0000076d: PUSH1 0x00 0000076f: DUP1 00000770: REVERT 00000771: JUMPDEST 00000772: PUSH2 0x011c 00000775: PUSH1 0xff 00000777: PUSH1 0x04 00000779: CALLDATALOAD 0000077a: AND 0000077b: PUSH2 0x1c0e 0000077e: JUMP 0000077f: JUMPDEST 00000780: PUSH1 0x00 00000782: ADDRESS 00000783: PUSH1 0x01 00000785: PUSH1 0xa0 00000787: PUSH1 0x02 00000789: EXP 0000078a: SUB 0000078b: AND 0000078c: CALLER 0000078d: PUSH1 0x01 0000078f: PUSH1 0xa0 00000791: PUSH1 0x02 00000793: EXP 00000794: SUB 00000795: AND 00000796: EQ 00000797: ISZERO 00000798: ISZERO 00000799: PUSH2 0x07a1 0000079c: JUMPI 0000079d: PUSH1 0x00 0000079f: DUP1 000007a0: REVERT 000007a1: JUMPDEST 000007a2: PUSH1 0x01 000007a4: PUSH1 0xa0 000007a6: PUSH1 0x02 000007a8: EXP 000007a9: SUB 000007aa: DUP3 000007ab: AND 000007ac: PUSH1 0x00 000007ae: SWAP1 000007af: DUP2 000007b0: MSTORE 000007b1: PUSH1 0x02 000007b3: PUSH1 0x20 000007b5: MSTORE 000007b6: PUSH1 0x40 000007b8: SWAP1 000007b9: KECCAK256 000007ba: SLOAD 000007bb: DUP3 000007bc: SWAP1 000007bd: PUSH1 0xff 000007bf: AND 000007c0: ISZERO 000007c1: ISZERO 000007c2: PUSH2 0x07ca 000007c5: JUMPI 000007c6: PUSH1 0x00 000007c8: DUP1 000007c9: REVERT 000007ca: JUMPDEST 000007cb: PUSH1 0x01 000007cd: PUSH1 0xa0 000007cf: PUSH1 0x02 000007d1: EXP 000007d2: SUB 000007d3: DUP4 000007d4: AND 000007d5: PUSH1 0x00 000007d7: SWAP1 000007d8: DUP2 000007d9: MSTORE 000007da: PUSH1 0x02 000007dc: PUSH1 0x20 000007de: MSTORE 000007df: PUSH1 0x40 000007e1: DUP2 000007e2: KECCAK256 000007e3: DUP1 000007e4: SLOAD 000007e5: PUSH1 0xff 000007e7: NOT 000007e8: AND 000007e9: SWAP1 000007ea: SSTORE 000007eb: SWAP2 000007ec: POP 000007ed: JUMPDEST 000007ee: PUSH1 0x03 000007f0: SLOAD 000007f1: PUSH1 0x00 000007f3: NOT 000007f4: ADD 000007f5: DUP3 000007f6: LT 000007f7: ISZERO 000007f8: PUSH2 0x08ad 000007fb: JUMPI 000007fc: DUP3 000007fd: PUSH1 0x01 000007ff: PUSH1 0xa0 00000801: PUSH1 0x02 00000803: EXP 00000804: SUB 00000805: AND 00000806: PUSH1 0x03 00000808: DUP4 00000809: DUP2 0000080a: SLOAD 0000080b: DUP2 0000080c: LT 0000080d: ISZERO 0000080e: ISZERO 0000080f: PUSH2 0x0814 00000812: JUMPI 00000813: INVALID 00000814: JUMPDEST 00000815: PUSH1 0x00 00000817: SWAP2 00000818: DUP3 00000819: MSTORE 0000081a: PUSH1 0x20 0000081c: SWAP1 0000081d: SWAP2 0000081e: KECCAK256 0000081f: ADD 00000820: SLOAD 00000821: PUSH1 0x01 00000823: PUSH1 0xa0 00000825: PUSH1 0x02 00000827: EXP 00000828: SUB 00000829: AND 0000082a: EQ 0000082b: ISZERO 0000082c: PUSH2 0x08a2 0000082f: JUMPI 00000830: PUSH1 0x03 00000832: DUP1 00000833: SLOAD 00000834: PUSH1 0x00 00000836: NOT 00000837: DUP2 00000838: ADD 00000839: SWAP1 0000083a: DUP2 0000083b: LT 0000083c: PUSH2 0x0841 0000083f: JUMPI 00000840: INVALID 00000841: JUMPDEST 00000842: PUSH1 0x00 00000844: SWAP2 00000845: DUP3 00000846: MSTORE 00000847: PUSH1 0x20 00000849: SWAP1 0000084a: SWAP2 0000084b: KECCAK256 0000084c: ADD 0000084d: SLOAD 0000084e: PUSH1 0x03 00000850: DUP1 00000851: SLOAD 00000852: PUSH1 0x01 00000854: PUSH1 0xa0 00000856: PUSH1 0x02 00000858: EXP 00000859: SUB 0000085a: SWAP1 0000085b: SWAP3 0000085c: AND 0000085d: SWAP2 0000085e: DUP5 0000085f: SWAP1 00000860: DUP2 00000861: LT 00000862: PUSH2 0x0867 00000865: JUMPI 00000866: INVALID 00000867: JUMPDEST 00000868: PUSH1 0x00 0000086a: SWAP2 0000086b: DUP3 0000086c: MSTORE 0000086d: PUSH1 0x20 0000086f: SWAP1 00000870: SWAP2 00000871: KECCAK256 00000872: ADD 00000873: DUP1 00000874: SLOAD 00000875: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000088a: NOT 0000088b: AND 0000088c: PUSH1 0x01 0000088e: PUSH1 0xa0 00000890: PUSH1 0x02 00000892: EXP 00000893: SUB 00000894: SWAP3 00000895: SWAP1 00000896: SWAP3 00000897: AND 00000898: SWAP2 00000899: SWAP1 0000089a: SWAP2 0000089b: OR 0000089c: SWAP1 0000089d: SSTORE 0000089e: PUSH2 0x08ad 000008a1: JUMP 000008a2: JUMPDEST 000008a3: PUSH1 0x01 000008a5: SWAP1 000008a6: SWAP2 000008a7: ADD 000008a8: SWAP1 000008a9: PUSH2 0x07ed 000008ac: JUMP 000008ad: JUMPDEST 000008ae: PUSH1 0x03 000008b0: DUP1 000008b1: SLOAD 000008b2: PUSH1 0x00 000008b4: NOT 000008b5: ADD 000008b6: SWAP1 000008b7: PUSH2 0x08c0 000008ba: SWAP1 000008bb: DUP3 000008bc: PUSH2 0x1e69 000008bf: JUMP 000008c0: JUMPDEST 000008c1: POP 000008c2: PUSH1 0x03 000008c4: SLOAD 000008c5: PUSH1 0x04 000008c7: SLOAD 000008c8: PUSH1 0xff 000008ca: AND 000008cb: GT 000008cc: ISZERO 000008cd: PUSH2 0x08dc 000008d0: JUMPI 000008d1: PUSH1 0x03 000008d3: SLOAD 000008d4: PUSH2 0x08dc 000008d7: SWAP1 000008d8: PUSH2 0x1c0e 000008db: JUMP 000008dc: JUMPDEST 000008dd: DUP3 000008de: PUSH1 0x01 000008e0: PUSH1 0xa0 000008e2: PUSH1 0x02 000008e4: EXP 000008e5: SUB 000008e6: AND 000008e7: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 00000908: PUSH1 0x40 0000090a: MLOAD 0000090b: PUSH1 0x40 0000090d: MLOAD 0000090e: DUP1 0000090f: SWAP2 00000910: SUB 00000911: SWAP1 00000912: LOG2 00000913: POP 00000914: POP 00000915: POP 00000916: JUMP 00000917: JUMPDEST 00000918: PUSH2 0x091f 0000091b: PUSH2 0x1e92 0000091e: JUMP 0000091f: JUMPDEST 00000920: PUSH2 0x0927 00000923: PUSH2 0x1e92 00000926: JUMP 00000927: JUMPDEST 00000928: PUSH2 0x092f 0000092b: PUSH2 0x1e92 0000092e: JUMP 0000092f: JUMPDEST 00000930: PUSH2 0x0937 00000933: PUSH2 0x1e92 00000936: JUMP 00000937: JUMPDEST 00000938: PUSH2 0x093f 0000093b: PUSH2 0x1e92 0000093e: JUMP 0000093f: JUMPDEST 00000940: PUSH2 0x0947 00000943: PUSH2 0x1e92 00000946: JUMP 00000947: JUMPDEST 00000948: PUSH2 0x094f 0000094b: PUSH2 0x1e92 0000094e: JUMP 0000094f: JUMPDEST 00000950: PUSH1 0x04 00000952: SLOAD 00000953: PUSH1 0x00 00000955: SWAP1 00000956: DUP2 00000957: SWAP1 00000958: DUP2 00000959: SWAP1 0000095a: PUSH2 0x0100 0000095d: SWAP1 0000095e: DIV 0000095f: PUSH8 0xffffffffffffffff 00000968: AND 00000969: PUSH1 0x40 0000096b: MLOAD 0000096c: DUP1 0000096d: MSIZE 0000096e: LT 0000096f: PUSH2 0x0975 00000972: JUMPI 00000973: POP 00000974: MSIZE 00000975: JUMPDEST 00000976: SWAP1 00000977: DUP1 00000978: DUP3 00000979: MSTORE 0000097a: DUP1 0000097b: PUSH1 0x20 0000097d: MUL 0000097e: PUSH1 0x20 00000980: ADD 00000981: DUP3 00000982: ADD 00000983: PUSH1 0x40 00000985: MSTORE 00000986: POP 00000987: SWAP4 00000988: POP 00000989: PUSH1 0x00 0000098b: SWAP3 0000098c: POP 0000098d: PUSH1 0x00 0000098f: SWAP2 00000990: POP 00000991: JUMPDEST 00000992: PUSH1 0x04 00000994: SLOAD 00000995: PUSH8 0xffffffffffffffff 0000099e: PUSH2 0x0100 000009a1: SWAP1 000009a2: SWAP2 000009a3: DIV 000009a4: DUP2 000009a5: AND 000009a6: SWAP1 000009a7: DUP4 000009a8: AND 000009a9: LT 000009aa: ISZERO 000009ab: PUSH2 0x0a47 000009ae: JUMPI 000009af: DUP12 000009b0: DUP1 000009b1: ISZERO 000009b2: PUSH2 0x09d8 000009b5: JUMPI 000009b6: POP 000009b7: PUSH8 0xffffffffffffffff 000009c0: DUP3 000009c1: AND 000009c2: PUSH1 0x00 000009c4: SWAP1 000009c5: DUP2 000009c6: MSTORE 000009c7: PUSH1 0x20 000009c9: DUP2 000009ca: SWAP1 000009cb: MSTORE 000009cc: PUSH1 0x40 000009ce: SWAP1 000009cf: KECCAK256 000009d0: PUSH1 0x03 000009d2: ADD 000009d3: SLOAD 000009d4: PUSH1 0xff 000009d6: AND 000009d7: ISZERO 000009d8: JUMPDEST 000009d9: DUP1 000009da: PUSH2 0x0a07 000009dd: JUMPI 000009de: POP 000009df: DUP11 000009e0: DUP1 000009e1: ISZERO 000009e2: PUSH2 0x0a07 000009e5: JUMPI 000009e6: POP 000009e7: PUSH8 0xffffffffffffffff 000009f0: DUP3 000009f1: AND 000009f2: PUSH1 0x00 000009f4: SWAP1 000009f5: DUP2 000009f6: MSTORE 000009f7: PUSH1 0x20 000009f9: DUP2 000009fa: SWAP1 000009fb: MSTORE 000009fc: PUSH1 0x40 000009fe: SWAP1 000009ff: KECCAK256 00000a00: PUSH1 0x03 00000a02: ADD 00000a03: SLOAD 00000a04: PUSH1 0xff 00000a06: AND 00000a07: JUMPDEST 00000a08: ISZERO 00000a09: PUSH2 0x0a3c 00000a0c: JUMPI 00000a0d: DUP2 00000a0e: DUP5 00000a0f: DUP5 00000a10: PUSH1 0xff 00000a12: AND 00000a13: DUP2 00000a14: MLOAD 00000a15: DUP2 00000a16: LT 00000a17: PUSH2 0x0a1c 00000a1a: JUMPI 00000a1b: INVALID 00000a1c: JUMPDEST 00000a1d: PUSH8 0xffffffffffffffff 00000a26: SWAP1 00000a27: SWAP3 00000a28: AND 00000a29: PUSH1 0x20 00000a2b: SWAP3 00000a2c: DUP4 00000a2d: MUL 00000a2e: SWAP1 00000a2f: SWAP2 00000a30: ADD 00000a31: SWAP1 00000a32: SWAP2 00000a33: ADD 00000a34: MSTORE 00000a35: PUSH1 0x01 00000a37: SWAP3 00000a38: SWAP1 00000a39: SWAP3 00000a3a: ADD 00000a3b: SWAP2 00000a3c: JUMPDEST 00000a3d: PUSH1 0x01 00000a3f: SWAP1 00000a40: SWAP2 00000a41: ADD 00000a42: SWAP1 00000a43: PUSH2 0x0991 00000a46: JUMP 00000a47: JUMPDEST 00000a48: DUP14 00000a49: DUP14 00000a4a: SUB 00000a4b: PUSH8 0xffffffffffffffff 00000a54: AND 00000a55: PUSH1 0x40 00000a57: MLOAD 00000a58: DUP1 00000a59: MSIZE 00000a5a: LT 00000a5b: PUSH2 0x0a61 00000a5e: JUMPI 00000a5f: POP 00000a60: MSIZE 00000a61: JUMPDEST 00000a62: SWAP1 00000a63: DUP1 00000a64: DUP3 00000a65: MSTORE 00000a66: DUP1 00000a67: PUSH1 0x20 00000a69: MUL 00000a6a: PUSH1 0x20 00000a6c: ADD 00000a6d: DUP3 00000a6e: ADD 00000a6f: PUSH1 0x40 00000a71: MSTORE 00000a72: POP 00000a73: SWAP10 00000a74: POP 00000a75: DUP14 00000a76: DUP14 00000a77: SUB 00000a78: PUSH8 0xffffffffffffffff 00000a81: AND 00000a82: PUSH1 0x40 00000a84: MLOAD 00000a85: DUP1 00000a86: MSIZE 00000a87: LT 00000a88: PUSH2 0x0a8e 00000a8b: JUMPI 00000a8c: POP 00000a8d: MSIZE 00000a8e: JUMPDEST 00000a8f: SWAP1 00000a90: DUP1 00000a91: DUP3 00000a92: MSTORE 00000a93: DUP1 00000a94: PUSH1 0x20 00000a96: MUL 00000a97: PUSH1 0x20 00000a99: ADD 00000a9a: DUP3 00000a9b: ADD 00000a9c: PUSH1 0x40 00000a9e: MSTORE 00000a9f: POP 00000aa0: SWAP9 00000aa1: POP 00000aa2: DUP14 00000aa3: DUP14 00000aa4: SUB 00000aa5: PUSH8 0xffffffffffffffff 00000aae: AND 00000aaf: PUSH1 0x40 00000ab1: MLOAD 00000ab2: DUP1 00000ab3: MSIZE 00000ab4: LT 00000ab5: PUSH2 0x0abb 00000ab8: JUMPI 00000ab9: POP 00000aba: MSIZE 00000abb: JUMPDEST 00000abc: SWAP1 00000abd: DUP1 00000abe: DUP3 00000abf: MSTORE 00000ac0: DUP1 00000ac1: PUSH1 0x20 00000ac3: MUL 00000ac4: PUSH1 0x20 00000ac6: ADD 00000ac7: DUP3 00000ac8: ADD 00000ac9: PUSH1 0x40 00000acb: MSTORE 00000acc: POP 00000acd: SWAP8 00000ace: POP 00000acf: DUP14 00000ad0: DUP14 00000ad1: SUB 00000ad2: PUSH8 0xffffffffffffffff 00000adb: AND 00000adc: PUSH1 0x40 00000ade: MLOAD 00000adf: DUP1 00000ae0: MSIZE 00000ae1: LT 00000ae2: PUSH2 0x0ae8 00000ae5: JUMPI 00000ae6: POP 00000ae7: MSIZE 00000ae8: JUMPDEST 00000ae9: SWAP1 00000aea: DUP1 00000aeb: DUP3 00000aec: MSTORE 00000aed: DUP1 00000aee: PUSH1 0x20 00000af0: MUL 00000af1: PUSH1 0x20 00000af3: ADD 00000af4: DUP3 00000af5: ADD 00000af6: PUSH1 0x40 00000af8: MSTORE 00000af9: POP 00000afa: SWAP7 00000afb: POP 00000afc: DUP14 00000afd: DUP14 00000afe: SUB 00000aff: PUSH8 0xffffffffffffffff 00000b08: AND 00000b09: PUSH1 0x40 00000b0b: MLOAD 00000b0c: DUP1 00000b0d: MSIZE 00000b0e: LT 00000b0f: PUSH2 0x0b15 00000b12: JUMPI 00000b13: POP 00000b14: MSIZE 00000b15: JUMPDEST 00000b16: SWAP1 00000b17: DUP1 00000b18: DUP3 00000b19: MSTORE 00000b1a: DUP1 00000b1b: PUSH1 0x20 00000b1d: MUL 00000b1e: PUSH1 0x20 00000b20: ADD 00000b21: DUP3 00000b22: ADD 00000b23: PUSH1 0x40 00000b25: MSTORE 00000b26: POP 00000b27: SWAP6 00000b28: POP 00000b29: DUP14 00000b2a: DUP14 00000b2b: SUB 00000b2c: PUSH8 0xffffffffffffffff 00000b35: AND 00000b36: PUSH1 0x40 00000b38: MLOAD 00000b39: DUP1 00000b3a: MSIZE 00000b3b: LT 00000b3c: PUSH2 0x0b42 00000b3f: JUMPI 00000b40: POP 00000b41: MSIZE 00000b42: JUMPDEST 00000b43: SWAP1 00000b44: DUP1 00000b45: DUP3 00000b46: MSTORE 00000b47: DUP1 00000b48: PUSH1 0x20 00000b4a: MUL 00000b4b: PUSH1 0x20 00000b4d: ADD 00000b4e: DUP3 00000b4f: ADD 00000b50: PUSH1 0x40 00000b52: MSTORE 00000b53: POP 00000b54: SWAP5 00000b55: POP 00000b56: DUP14 00000b57: SWAP2 00000b58: POP 00000b59: JUMPDEST 00000b5a: DUP13 00000b5b: PUSH8 0xffffffffffffffff 00000b64: AND 00000b65: DUP3 00000b66: PUSH8 0xffffffffffffffff 00000b6f: AND 00000b70: LT 00000b71: ISZERO 00000b72: PUSH2 0x0d60 00000b75: JUMPI 00000b76: PUSH1 0x00 00000b78: DUP1 00000b79: DUP6 00000b7a: DUP5 00000b7b: PUSH8 0xffffffffffffffff 00000b84: AND 00000b85: DUP2 00000b86: MLOAD 00000b87: DUP2 00000b88: LT 00000b89: PUSH2 0x0b8e 00000b8c: JUMPI 00000b8d: INVALID 00000b8e: JUMPDEST 00000b8f: SWAP1 00000b90: PUSH1 0x20 00000b92: ADD 00000b93: SWAP1 00000b94: PUSH1 0x20 00000b96: MUL 00000b97: ADD 00000b98: MLOAD 00000b99: PUSH8 0xffffffffffffffff 00000ba2: AND 00000ba3: PUSH8 0xffffffffffffffff 00000bac: AND 00000bad: DUP2 00000bae: MSTORE 00000baf: PUSH1 0x20 00000bb1: ADD 00000bb2: SWAP1 00000bb3: DUP2 00000bb4: MSTORE 00000bb5: PUSH1 0x20 00000bb7: ADD 00000bb8: PUSH1 0x00 00000bba: KECCAK256 00000bbb: SWAP1 00000bbc: POP 00000bbd: DUP2 00000bbe: DUP11 00000bbf: DUP16 00000bc0: DUP5 00000bc1: SUB 00000bc2: PUSH8 0xffffffffffffffff 00000bcb: AND 00000bcc: DUP2 00000bcd: MLOAD 00000bce: DUP2 00000bcf: LT 00000bd0: PUSH2 0x0bd5 00000bd3: JUMPI 00000bd4: INVALID 00000bd5: JUMPDEST 00000bd6: SWAP1 00000bd7: PUSH1 0x20 00000bd9: ADD 00000bda: SWAP1 00000bdb: PUSH1 0x20 00000bdd: MUL 00000bde: ADD 00000bdf: SWAP1 00000be0: PUSH8 0xffffffffffffffff 00000be9: AND 00000bea: SWAP1 00000beb: DUP2 00000bec: PUSH8 0xffffffffffffffff 00000bf5: AND 00000bf6: DUP2 00000bf7: MSTORE 00000bf8: POP 00000bf9: POP 00000bfa: DUP1 00000bfb: PUSH1 0x00 00000bfd: ADD 00000bfe: PUSH1 0x00 00000c00: SWAP1 00000c01: SLOAD 00000c02: SWAP1 00000c03: PUSH2 0x0100 00000c06: EXP 00000c07: SWAP1 00000c08: DIV 00000c09: PUSH1 0x01 00000c0b: PUSH1 0xa0 00000c0d: PUSH1 0x02 00000c0f: EXP 00000c10: SUB 00000c11: AND 00000c12: DUP10 00000c13: DUP16 00000c14: DUP5 00000c15: SUB 00000c16: PUSH8 0xffffffffffffffff 00000c1f: AND 00000c20: DUP2 00000c21: MLOAD 00000c22: DUP2 00000c23: LT 00000c24: PUSH2 0x0c29 00000c27: JUMPI 00000c28: INVALID 00000c29: JUMPDEST 00000c2a: SWAP1 00000c2b: PUSH1 0x20 00000c2d: ADD 00000c2e: SWAP1 00000c2f: PUSH1 0x20 00000c31: MUL 00000c32: ADD 00000c33: SWAP1 00000c34: PUSH1 0x01 00000c36: PUSH1 0xa0 00000c38: PUSH1 0x02 00000c3a: EXP 00000c3b: SUB 00000c3c: AND 00000c3d: SWAP1 00000c3e: DUP2 00000c3f: PUSH1 0x01 00000c41: PUSH1 0xa0 00000c43: PUSH1 0x02 00000c45: EXP 00000c46: SUB 00000c47: AND 00000c48: DUP2 00000c49: MSTORE 00000c4a: POP 00000c4b: POP 00000c4c: DUP1 00000c4d: PUSH1 0x01 00000c4f: ADD 00000c50: PUSH1 0x00 00000c52: SWAP1 00000c53: SLOAD 00000c54: SWAP1 00000c55: PUSH2 0x0100 00000c58: EXP 00000c59: SWAP1 00000c5a: DIV 00000c5b: PUSH16 0xffffffffffffffffffffffffffffffff 00000c6c: AND 00000c6d: PUSH16 0xffffffffffffffffffffffffffffffff 00000c7e: AND 00000c7f: DUP9 00000c80: DUP16 00000c81: DUP5 00000c82: SUB 00000c83: PUSH8 0xffffffffffffffff 00000c8c: AND 00000c8d: DUP2 00000c8e: MLOAD 00000c8f: DUP2 00000c90: LT 00000c91: PUSH2 0x0c96 00000c94: JUMPI 00000c95: INVALID 00000c96: JUMPDEST 00000c97: SWAP1 00000c98: PUSH1 0x20 00000c9a: ADD 00000c9b: SWAP1 00000c9c: PUSH1 0x20 00000c9e: MUL 00000c9f: ADD 00000ca0: DUP2 00000ca1: DUP2 00000ca2: MSTORE 00000ca3: POP 00000ca4: POP 00000ca5: DUP1 00000ca6: PUSH1 0x03 00000ca8: ADD 00000ca9: PUSH1 0x00 00000cab: SWAP1 00000cac: SLOAD 00000cad: SWAP1 00000cae: PUSH2 0x0100 00000cb1: EXP 00000cb2: SWAP1 00000cb3: DIV 00000cb4: PUSH1 0xff 00000cb6: AND 00000cb7: DUP8 00000cb8: DUP16 00000cb9: DUP5 00000cba: SUB 00000cbb: PUSH8 0xffffffffffffffff 00000cc4: AND 00000cc5: DUP2 00000cc6: MLOAD 00000cc7: DUP2 00000cc8: LT 00000cc9: PUSH2 0x0cce 00000ccc: JUMPI 00000ccd: INVALID 00000cce: JUMPDEST 00000ccf: SWAP1 00000cd0: PUSH1 0x20 00000cd2: ADD 00000cd3: SWAP1 00000cd4: PUSH1 0x20 00000cd6: MUL 00000cd7: ADD 00000cd8: SWAP1 00000cd9: ISZERO 00000cda: ISZERO 00000cdb: SWAP1 00000cdc: DUP2 00000cdd: ISZERO 00000cde: ISZERO 00000cdf: DUP2 00000ce0: MSTORE 00000ce1: POP 00000ce2: POP 00000ce3: DUP1 00000ce4: PUSH1 0x03 00000ce6: ADD 00000ce7: PUSH1 0x01 00000ce9: SWAP1 00000cea: SLOAD 00000ceb: SWAP1 00000cec: PUSH2 0x0100 00000cef: EXP 00000cf0: SWAP1 00000cf1: DIV 00000cf2: PUSH4 0xffffffff 00000cf7: AND 00000cf8: DUP7 00000cf9: DUP16 00000cfa: DUP5 00000cfb: SUB 00000cfc: PUSH8 0xffffffffffffffff 00000d05: AND 00000d06: DUP2 00000d07: MLOAD 00000d08: DUP2 00000d09: LT 00000d0a: PUSH2 0x0d0f 00000d0d: JUMPI 00000d0e: INVALID 00000d0f: JUMPDEST 00000d10: PUSH4 0xffffffff 00000d15: SWAP1 00000d16: SWAP3 00000d17: AND 00000d18: PUSH1 0x20 00000d1a: SWAP3 00000d1b: DUP4 00000d1c: MUL 00000d1d: SWAP1 00000d1e: SWAP2 00000d1f: ADD 00000d20: SWAP1 00000d21: SWAP2 00000d22: ADD 00000d23: MSTORE 00000d24: PUSH2 0x0d2c 00000d27: DUP3 00000d28: PUSH2 0x1ae9 00000d2b: JUMP 00000d2c: JUMPDEST 00000d2d: DUP6 00000d2e: DUP16 00000d2f: DUP5 00000d30: SUB 00000d31: PUSH8 0xffffffffffffffff 00000d3a: AND 00000d3b: DUP2 00000d3c: MLOAD 00000d3d: DUP2 00000d3e: LT 00000d3f: PUSH2 0x0d44 00000d42: JUMPI 00000d43: INVALID 00000d44: JUMPDEST 00000d45: PUSH1 0xff 00000d47: SWAP1 00000d48: SWAP3 00000d49: AND 00000d4a: PUSH1 0x20 00000d4c: SWAP3 00000d4d: DUP4 00000d4e: MUL 00000d4f: SWAP1 00000d50: SWAP2 00000d51: ADD 00000d52: SWAP1 00000d53: SWAP2 00000d54: ADD 00000d55: MSTORE 00000d56: PUSH1 0x01 00000d58: SWAP1 00000d59: SWAP2 00000d5a: ADD 00000d5b: SWAP1 00000d5c: PUSH2 0x0b59 00000d5f: JUMP 00000d60: JUMPDEST 00000d61: POP 00000d62: POP 00000d63: POP 00000d64: POP 00000d65: SWAP5 00000d66: SWAP10 00000d67: SWAP4 00000d68: SWAP9 00000d69: POP 00000d6a: SWAP5 00000d6b: POP 00000d6c: SWAP5 00000d6d: POP 00000d6e: SWAP5 00000d6f: POP 00000d70: JUMP 00000d71: JUMPDEST 00000d72: PUSH1 0x00 00000d74: DUP1 00000d75: DUP1 00000d76: JUMPDEST 00000d77: PUSH1 0x03 00000d79: SLOAD 00000d7a: PUSH1 0xff 00000d7c: SWAP1 00000d7d: DUP2 00000d7e: AND 00000d7f: SWAP1 00000d80: DUP3 00000d81: AND 00000d82: LT 00000d83: ISZERO 00000d84: PUSH2 0x0e10 00000d87: JUMPI 00000d88: PUSH8 0xffffffffffffffff 00000d91: DUP5 00000d92: AND 00000d93: PUSH1 0x00 00000d95: SWAP1 00000d96: DUP2 00000d97: MSTORE 00000d98: PUSH1 0x01 00000d9a: PUSH1 0x20 00000d9c: MSTORE 00000d9d: PUSH1 0x40 00000d9f: DUP2 00000da0: KECCAK256 00000da1: PUSH1 0x03 00000da3: DUP1 00000da4: SLOAD 00000da5: SWAP2 00000da6: SWAP3 00000da7: SWAP2 00000da8: PUSH1 0xff 00000daa: DUP6 00000dab: AND 00000dac: SWAP1 00000dad: DUP2 00000dae: LT 00000daf: PUSH2 0x0db4 00000db2: JUMPI 00000db3: INVALID 00000db4: JUMPDEST 00000db5: PUSH1 0x00 00000db7: SWAP2 00000db8: DUP3 00000db9: MSTORE 00000dba: PUSH1 0x20 00000dbc: DUP1 00000dbd: DUP4 00000dbe: KECCAK256 00000dbf: SWAP1 00000dc0: SWAP2 00000dc1: ADD 00000dc2: SLOAD 00000dc3: PUSH1 0x01 00000dc5: PUSH1 0xa0 00000dc7: PUSH1 0x02 00000dc9: EXP 00000dca: SUB 00000dcb: AND 00000dcc: DUP4 00000dcd: MSTORE 00000dce: DUP3 00000dcf: ADD 00000dd0: SWAP3 00000dd1: SWAP1 00000dd2: SWAP3 00000dd3: MSTORE 00000dd4: PUSH1 0x40 00000dd6: ADD 00000dd7: SWAP1 00000dd8: KECCAK256 00000dd9: SLOAD 00000dda: PUSH1 0xff 00000ddc: AND 00000ddd: ISZERO 00000dde: PUSH2 0x0de8 00000de1: JUMPI 00000de2: PUSH1 0x01 00000de4: DUP3 00000de5: ADD 00000de6: SWAP2 00000de7: POP 00000de8: JUMPDEST 00000de9: PUSH1 0x04 00000deb: SLOAD 00000dec: PUSH1 0xff 00000dee: AND 00000def: PUSH8 0xffffffffffffffff 00000df8: DUP4 00000df9: AND 00000dfa: EQ 00000dfb: ISZERO 00000dfc: PUSH2 0x0e08 00000dff: JUMPI 00000e00: PUSH1 0x01 00000e02: SWAP3 00000e03: POP 00000e04: PUSH2 0x0e10 00000e07: JUMP 00000e08: JUMPDEST 00000e09: PUSH1 0x01 00000e0b: ADD 00000e0c: PUSH2 0x0d76 00000e0f: JUMP 00000e10: JUMPDEST 00000e11: POP 00000e12: POP 00000e13: SWAP2 00000e14: SWAP1 00000e15: POP 00000e16: JUMP 00000e17: JUMPDEST 00000e18: PUSH1 0x00 00000e1a: DUP1 00000e1b: JUMPDEST 00000e1c: PUSH1 0x04 00000e1e: SLOAD 00000e1f: PUSH8 0xffffffffffffffff 00000e28: PUSH2 0x0100 00000e2b: SWAP1 00000e2c: SWAP2 00000e2d: DIV 00000e2e: DUP2 00000e2f: AND 00000e30: SWAP1 00000e31: DUP3 00000e32: AND 00000e33: LT 00000e34: ISZERO 00000e35: PUSH2 0x0ea5 00000e38: JUMPI 00000e39: DUP4 00000e3a: DUP1 00000e3b: ISZERO 00000e3c: PUSH2 0x0e62 00000e3f: JUMPI 00000e40: POP 00000e41: PUSH8 0xffffffffffffffff 00000e4a: DUP2 00000e4b: AND 00000e4c: PUSH1 0x00 00000e4e: SWAP1 00000e4f: DUP2 00000e50: MSTORE 00000e51: PUSH1 0x20 00000e53: DUP2 00000e54: SWAP1 00000e55: MSTORE 00000e56: PUSH1 0x40 00000e58: SWAP1 00000e59: KECCAK256 00000e5a: PUSH1 0x03 00000e5c: ADD 00000e5d: SLOAD 00000e5e: PUSH1 0xff 00000e60: AND 00000e61: ISZERO 00000e62: JUMPDEST 00000e63: DUP1 00000e64: PUSH2 0x0e91 00000e67: JUMPI 00000e68: POP 00000e69: DUP3 00000e6a: DUP1 00000e6b: ISZERO 00000e6c: PUSH2 0x0e91 00000e6f: JUMPI 00000e70: POP 00000e71: PUSH8 0xffffffffffffffff 00000e7a: DUP2 00000e7b: AND 00000e7c: PUSH1 0x00 00000e7e: SWAP1 00000e7f: DUP2 00000e80: MSTORE 00000e81: PUSH1 0x20 00000e83: DUP2 00000e84: SWAP1 00000e85: MSTORE 00000e86: PUSH1 0x40 00000e88: SWAP1 00000e89: KECCAK256 00000e8a: PUSH1 0x03 00000e8c: ADD 00000e8d: SLOAD 00000e8e: PUSH1 0xff 00000e90: AND 00000e91: JUMPDEST 00000e92: ISZERO 00000e93: PUSH2 0x0e9d 00000e96: JUMPI 00000e97: PUSH1 0x01 00000e99: DUP3 00000e9a: ADD 00000e9b: SWAP2 00000e9c: POP 00000e9d: JUMPDEST 00000e9e: PUSH1 0x01 00000ea0: ADD 00000ea1: PUSH2 0x0e1b 00000ea4: JUMP 00000ea5: JUMPDEST 00000ea6: POP 00000ea7: SWAP3 00000ea8: SWAP2 00000ea9: POP 00000eaa: POP 00000eab: JUMP 00000eac: JUMPDEST 00000ead: CALLER 00000eae: PUSH1 0x01 00000eb0: PUSH1 0xa0 00000eb2: PUSH1 0x02 00000eb4: EXP 00000eb5: SUB 00000eb6: DUP2 00000eb7: AND 00000eb8: PUSH1 0x00 00000eba: SWAP1 00000ebb: DUP2 00000ebc: MSTORE 00000ebd: PUSH1 0x02 00000ebf: PUSH1 0x20 00000ec1: MSTORE 00000ec2: PUSH1 0x40 00000ec4: SWAP1 00000ec5: KECCAK256 00000ec6: SLOAD 00000ec7: PUSH1 0xff 00000ec9: AND 00000eca: ISZERO 00000ecb: ISZERO 00000ecc: PUSH2 0x0ed4 00000ecf: JUMPI 00000ed0: PUSH1 0x00 00000ed2: DUP1 00000ed3: REVERT 00000ed4: JUMPDEST 00000ed5: PUSH8 0xffffffffffffffff 00000ede: DUP3 00000edf: AND 00000ee0: PUSH1 0x00 00000ee2: SWAP1 00000ee3: DUP2 00000ee4: MSTORE 00000ee5: PUSH1 0x20 00000ee7: DUP2 00000ee8: SWAP1 00000ee9: MSTORE 00000eea: PUSH1 0x40 00000eec: SWAP1 00000eed: KECCAK256 00000eee: SLOAD 00000eef: DUP3 00000ef0: SWAP1 00000ef1: PUSH1 0x01 00000ef3: PUSH1 0xa0 00000ef5: PUSH1 0x02 00000ef7: EXP 00000ef8: SUB 00000ef9: AND 00000efa: ISZERO 00000efb: ISZERO 00000efc: PUSH2 0x0f04 00000eff: JUMPI 00000f00: PUSH1 0x00 00000f02: DUP1 00000f03: REVERT 00000f04: JUMPDEST 00000f05: PUSH8 0xffffffffffffffff 00000f0e: DUP4 00000f0f: AND 00000f10: PUSH1 0x00 00000f12: SWAP1 00000f13: DUP2 00000f14: MSTORE 00000f15: PUSH1 0x01 00000f17: PUSH1 0x20 00000f19: SWAP1 00000f1a: DUP2 00000f1b: MSTORE 00000f1c: PUSH1 0x40 00000f1e: DUP1 00000f1f: DUP4 00000f20: KECCAK256 00000f21: CALLER 00000f22: PUSH1 0x01 00000f24: PUSH1 0xa0 00000f26: PUSH1 0x02 00000f28: EXP 00000f29: SUB 00000f2a: DUP2 00000f2b: AND 00000f2c: DUP6 00000f2d: MSTORE 00000f2e: SWAP3 00000f2f: MSTORE 00000f30: SWAP1 00000f31: SWAP2 00000f32: KECCAK256 00000f33: SLOAD 00000f34: DUP5 00000f35: SWAP2 00000f36: SWAP1 00000f37: PUSH1 0xff 00000f39: AND 00000f3a: ISZERO 00000f3b: PUSH2 0x0f43 00000f3e: JUMPI 00000f3f: PUSH1 0x00 00000f41: DUP1 00000f42: REVERT 00000f43: JUMPDEST 00000f44: PUSH8 0xffffffffffffffff 00000f4d: DUP6 00000f4e: AND 00000f4f: PUSH1 0x00 00000f51: SWAP1 00000f52: DUP2 00000f53: MSTORE 00000f54: PUSH1 0x01 00000f56: PUSH1 0x20 00000f58: DUP2 00000f59: DUP2 00000f5a: MSTORE 00000f5b: PUSH1 0x40 00000f5d: DUP1 00000f5e: DUP5 00000f5f: KECCAK256 00000f60: PUSH1 0x01 00000f62: PUSH1 0xa0 00000f64: PUSH1 0x02 00000f66: EXP 00000f67: SUB 00000f68: CALLER 00000f69: AND 00000f6a: DUP6 00000f6b: MSTORE 00000f6c: SWAP1 00000f6d: SWAP2 00000f6e: MSTORE 00000f6f: SWAP1 00000f70: SWAP2 00000f71: KECCAK256 00000f72: DUP1 00000f73: SLOAD 00000f74: PUSH1 0xff 00000f76: NOT 00000f77: AND 00000f78: SWAP1 00000f79: SWAP2 00000f7a: OR 00000f7b: SWAP1 00000f7c: SSTORE 00000f7d: PUSH2 0x0f85 00000f80: DUP6 00000f81: PUSH2 0x1151 00000f84: JUMP 00000f85: JUMPDEST 00000f86: POP 00000f87: POP 00000f88: POP 00000f89: POP 00000f8a: POP 00000f8b: JUMP 00000f8c: JUMPDEST 00000f8d: PUSH2 0x0f94 00000f90: PUSH2 0x1e92 00000f93: JUMP 00000f94: JUMPDEST 00000f95: PUSH2 0x0f9c 00000f98: PUSH2 0x1e92 00000f9b: JUMP 00000f9c: JUMPDEST 00000f9d: PUSH1 0x00 00000f9f: DUP1 00000fa0: PUSH8 0xffffffffffffffff 00000fa9: DUP1 00000faa: DUP9 00000fab: AND 00000fac: SWAP1 00000fad: DUP10 00000fae: AND 00000faf: GT 00000fb0: PUSH2 0x1146 00000fb3: JUMPI 00000fb4: PUSH1 0x04 00000fb6: SLOAD 00000fb7: PUSH2 0x0100 00000fba: SWAP1 00000fbb: DIV 00000fbc: PUSH8 0xffffffffffffffff 00000fc5: AND 00000fc6: PUSH1 0x40 00000fc8: MLOAD 00000fc9: DUP1 00000fca: MSIZE 00000fcb: LT 00000fcc: PUSH2 0x0fd2 00000fcf: JUMPI 00000fd0: POP 00000fd1: MSIZE 00000fd2: JUMPDEST 00000fd3: SWAP1 00000fd4: DUP1 00000fd5: DUP3 00000fd6: MSTORE 00000fd7: DUP1 00000fd8: PUSH1 0x20 00000fda: MUL 00000fdb: PUSH1 0x20 00000fdd: ADD 00000fde: DUP3 00000fdf: ADD 00000fe0: PUSH1 0x40 00000fe2: MSTORE 00000fe3: POP 00000fe4: SWAP3 00000fe5: POP 00000fe6: PUSH1 0x00 00000fe8: SWAP2 00000fe9: POP 00000fea: PUSH1 0x00 00000fec: SWAP1 00000fed: POP 00000fee: JUMPDEST 00000fef: PUSH1 0x04 00000ff1: SLOAD 00000ff2: PUSH8 0xffffffffffffffff 00000ffb: PUSH2 0x0100 00000ffe: SWAP1 00000fff: SWAP2 00001000: DIV 00001001: DUP2 00001002: AND 00001003: SWAP1 00001004: DUP3 00001005: AND 00001006: LT 00001007: ISZERO 00001008: PUSH2 0x10a1 0000100b: JUMPI 0000100c: DUP6 0000100d: DUP1 0000100e: ISZERO 0000100f: PUSH2 0x1035 00001012: JUMPI 00001013: POP 00001014: PUSH8 0xffffffffffffffff 0000101d: DUP2 0000101e: AND 0000101f: PUSH1 0x00 00001021: SWAP1 00001022: DUP2 00001023: MSTORE 00001024: PUSH1 0x20 00001026: DUP2 00001027: SWAP1 00001028: MSTORE 00001029: PUSH1 0x40 0000102b: SWAP1 0000102c: KECCAK256 0000102d: PUSH1 0x03 0000102f: ADD 00001030: SLOAD 00001031: PUSH1 0xff 00001033: AND 00001034: ISZERO 00001035: JUMPDEST 00001036: DUP1 00001037: PUSH2 0x1064 0000103a: JUMPI 0000103b: POP 0000103c: DUP5 0000103d: DUP1 0000103e: ISZERO 0000103f: PUSH2 0x1064 00001042: JUMPI 00001043: POP 00001044: PUSH8 0xffffffffffffffff 0000104d: DUP2 0000104e: AND 0000104f: PUSH1 0x00 00001051: SWAP1 00001052: DUP2 00001053: MSTORE 00001054: PUSH1 0x20 00001056: DUP2 00001057: SWAP1 00001058: MSTORE 00001059: PUSH1 0x40 0000105b: SWAP1 0000105c: KECCAK256 0000105d: PUSH1 0x03 0000105f: ADD 00001060: SLOAD 00001061: PUSH1 0xff 00001063: AND 00001064: JUMPDEST 00001065: ISZERO 00001066: PUSH2 0x1099 00001069: JUMPI 0000106a: DUP1 0000106b: DUP4 0000106c: DUP4 0000106d: PUSH1 0xff 0000106f: AND 00001070: DUP2 00001071: MLOAD 00001072: DUP2 00001073: LT 00001074: PUSH2 0x1079 00001077: JUMPI 00001078: INVALID 00001079: JUMPDEST 0000107a: PUSH8 0xffffffffffffffff 00001083: SWAP1 00001084: SWAP3 00001085: AND 00001086: PUSH1 0x20 00001088: SWAP3 00001089: DUP4 0000108a: MUL 0000108b: SWAP1 0000108c: SWAP2 0000108d: ADD 0000108e: SWAP1 0000108f: SWAP2 00001090: ADD 00001091: MSTORE 00001092: PUSH1 0x01 00001094: SWAP2 00001095: SWAP1 00001096: SWAP2 00001097: ADD 00001098: SWAP1 00001099: JUMPDEST 0000109a: PUSH1 0x01 0000109c: ADD 0000109d: PUSH2 0x0fee 000010a0: JUMP 000010a1: JUMPDEST 000010a2: DUP8 000010a3: DUP8 000010a4: SUB 000010a5: PUSH8 0xffffffffffffffff 000010ae: AND 000010af: PUSH1 0x40 000010b1: MLOAD 000010b2: DUP1 000010b3: MSIZE 000010b4: LT 000010b5: PUSH2 0x10bb 000010b8: JUMPI 000010b9: POP 000010ba: MSIZE 000010bb: JUMPDEST 000010bc: SWAP1 000010bd: DUP1 000010be: DUP3 000010bf: MSTORE 000010c0: DUP1 000010c1: PUSH1 0x20 000010c3: MUL 000010c4: PUSH1 0x20 000010c6: ADD 000010c7: DUP3 000010c8: ADD 000010c9: PUSH1 0x40 000010cb: MSTORE 000010cc: POP 000010cd: SWAP4 000010ce: POP 000010cf: DUP8 000010d0: SWAP1 000010d1: POP 000010d2: JUMPDEST 000010d3: DUP7 000010d4: PUSH8 0xffffffffffffffff 000010dd: AND 000010de: DUP2 000010df: PUSH8 0xffffffffffffffff 000010e8: AND 000010e9: LT 000010ea: ISZERO 000010eb: PUSH2 0x1146 000010ee: JUMPI 000010ef: DUP3 000010f0: DUP2 000010f1: PUSH8 0xffffffffffffffff 000010fa: AND 000010fb: DUP2 000010fc: MLOAD 000010fd: DUP2 000010fe: LT 000010ff: PUSH2 0x1104 00001102: JUMPI 00001103: INVALID 00001104: JUMPDEST 00001105: SWAP1 00001106: PUSH1 0x20 00001108: ADD 00001109: SWAP1 0000110a: PUSH1 0x20 0000110c: MUL 0000110d: ADD 0000110e: MLOAD 0000110f: DUP5 00001110: DUP10 00001111: DUP4 00001112: SUB 00001113: PUSH8 0xffffffffffffffff 0000111c: AND 0000111d: DUP2 0000111e: MLOAD 0000111f: DUP2 00001120: LT 00001121: PUSH2 0x1126 00001124: JUMPI 00001125: INVALID 00001126: JUMPDEST 00001127: PUSH8 0xffffffffffffffff 00001130: SWAP1 00001131: SWAP3 00001132: AND 00001133: PUSH1 0x20 00001135: SWAP3 00001136: DUP4 00001137: MUL 00001138: SWAP1 00001139: SWAP2 0000113a: ADD 0000113b: SWAP1 0000113c: SWAP2 0000113d: ADD 0000113e: MSTORE 0000113f: PUSH1 0x01 00001141: ADD 00001142: PUSH2 0x10d2 00001145: JUMP 00001146: JUMPDEST 00001147: POP 00001148: POP 00001149: POP 0000114a: SWAP5 0000114b: SWAP4 0000114c: POP 0000114d: POP 0000114e: POP 0000114f: POP 00001150: JUMP 00001151: JUMPDEST 00001152: ORIGIN 00001153: PUSH1 0x01 00001155: PUSH1 0xa0 00001157: PUSH1 0x02 00001159: EXP 0000115a: SUB 0000115b: DUP2 0000115c: AND 0000115d: PUSH1 0x00 0000115f: SWAP1 00001160: DUP2 00001161: MSTORE 00001162: PUSH1 0x02 00001164: PUSH1 0x20 00001166: MSTORE 00001167: PUSH1 0x40 00001169: DUP2 0000116a: KECCAK256 0000116b: SLOAD 0000116c: SWAP1 0000116d: SWAP2 0000116e: SWAP1 0000116f: PUSH1 0xff 00001171: AND 00001172: ISZERO 00001173: ISZERO 00001174: PUSH2 0x117c 00001177: JUMPI 00001178: PUSH1 0x00 0000117a: DUP1 0000117b: REVERT 0000117c: JUMPDEST 0000117d: PUSH8 0xffffffffffffffff 00001186: DUP4 00001187: AND 00001188: PUSH1 0x00 0000118a: SWAP1 0000118b: DUP2 0000118c: MSTORE 0000118d: PUSH1 0x20 0000118f: DUP2 00001190: SWAP1 00001191: MSTORE 00001192: PUSH1 0x40 00001194: SWAP1 00001195: KECCAK256 00001196: PUSH1 0x03 00001198: ADD 00001199: SLOAD 0000119a: DUP4 0000119b: SWAP1 0000119c: PUSH1 0xff 0000119e: AND 0000119f: ISZERO 000011a0: PUSH2 0x11a8 000011a3: JUMPI 000011a4: PUSH1 0x00 000011a6: DUP1 000011a7: REVERT 000011a8: JUMPDEST 000011a9: PUSH2 0x11b1 000011ac: DUP5 000011ad: PUSH2 0x0d71 000011b0: JUMP 000011b1: JUMPDEST 000011b2: ISZERO 000011b3: PUSH2 0x130e 000011b6: JUMPI 000011b7: PUSH8 0xffffffffffffffff 000011c0: DUP5 000011c1: AND 000011c2: PUSH1 0x00 000011c4: SWAP1 000011c5: DUP2 000011c6: MSTORE 000011c7: PUSH1 0x20 000011c9: DUP2 000011ca: SWAP1 000011cb: MSTORE 000011cc: PUSH1 0x40 000011ce: SWAP1 000011cf: DUP2 000011d0: SWAP1 000011d1: KECCAK256 000011d2: PUSH1 0x03 000011d4: DUP2 000011d5: ADD 000011d6: DUP1 000011d7: SLOAD 000011d8: PUSH1 0xff 000011da: NOT 000011db: AND 000011dc: PUSH1 0x01 000011de: SWAP1 000011df: DUP2 000011e0: OR 000011e1: SWAP1 000011e2: SWAP2 000011e3: SSTORE 000011e4: DUP2 000011e5: SLOAD 000011e6: SWAP1 000011e7: DUP3 000011e8: ADD 000011e9: SLOAD 000011ea: SWAP2 000011eb: SWAP6 000011ec: POP 000011ed: PUSH1 0x01 000011ef: PUSH1 0xa0 000011f1: PUSH1 0x02 000011f3: EXP 000011f4: SUB 000011f5: AND 000011f6: SWAP2 000011f7: PUSH16 0xffffffffffffffffffffffffffffffff 00001208: SWAP1 00001209: SWAP2 0000120a: AND 0000120b: SWAP1 0000120c: PUSH1 0x02 0000120e: DUP7 0000120f: ADD 00001210: SWAP1 00001211: MLOAD 00001212: DUP1 00001213: DUP3 00001214: DUP1 00001215: SLOAD 00001216: PUSH1 0x01 00001218: DUP2 00001219: PUSH1 0x01 0000121b: AND 0000121c: ISZERO 0000121d: PUSH2 0x0100 00001220: MUL 00001221: SUB 00001222: AND 00001223: PUSH1 0x02 00001225: SWAP1 00001226: DIV 00001227: DUP1 00001228: ISZERO 00001229: PUSH2 0x1273 0000122c: JUMPI 0000122d: DUP1 0000122e: PUSH1 0x1f 00001230: LT 00001231: PUSH2 0x1248 00001234: JUMPI 00001235: PUSH2 0x0100 00001238: DUP1 00001239: DUP4 0000123a: SLOAD 0000123b: DIV 0000123c: MUL 0000123d: DUP4 0000123e: MSTORE 0000123f: SWAP2 00001240: PUSH1 0x20 00001242: ADD 00001243: SWAP2 00001244: PUSH2 0x1273 00001247: JUMP 00001248: JUMPDEST 00001249: DUP3 0000124a: ADD 0000124b: SWAP2 0000124c: SWAP1 0000124d: PUSH1 0x00 0000124f: MSTORE 00001250: PUSH1 0x20 00001252: PUSH1 0x00 00001254: KECCAK256 00001255: SWAP1 00001256: JUMPDEST 00001257: DUP2 00001258: SLOAD 00001259: DUP2 0000125a: MSTORE 0000125b: SWAP1 0000125c: PUSH1 0x01 0000125e: ADD 0000125f: SWAP1 00001260: PUSH1 0x20 00001262: ADD 00001263: DUP1 00001264: DUP4 00001265: GT 00001266: PUSH2 0x1256 00001269: JUMPI 0000126a: DUP3 0000126b: SWAP1 0000126c: SUB 0000126d: PUSH1 0x1f 0000126f: AND 00001270: DUP3 00001271: ADD 00001272: SWAP2 00001273: JUMPDEST 00001274: POP 00001275: POP 00001276: SWAP2 00001277: POP 00001278: POP 00001279: PUSH1 0x00 0000127b: PUSH1 0x40 0000127d: MLOAD 0000127e: DUP1 0000127f: DUP4 00001280: SUB 00001281: DUP2 00001282: DUP6 00001283: DUP8 00001284: GAS 00001285: CALL 00001286: SWAP3 00001287: POP 00001288: POP 00001289: POP 0000128a: ISZERO 0000128b: PUSH2 0x12ca 0000128e: JUMPI 0000128f: DUP4 00001290: PUSH8 0xffffffffffffffff 00001299: AND 0000129a: PUSH32 0x5057c1fd5e00097a5e483c0e9c4a6ff7f96612119b00300cfd6db40c4efcc82a 000012bb: PUSH1 0x40 000012bd: MLOAD 000012be: PUSH1 0x40 000012c0: MLOAD 000012c1: DUP1 000012c2: SWAP2 000012c3: SUB 000012c4: SWAP1 000012c5: LOG2 000012c6: PUSH2 0x130e 000012c9: JUMP 000012ca: JUMPDEST 000012cb: DUP4 000012cc: PUSH8 0xffffffffffffffff 000012d5: AND 000012d6: PUSH32 0xea9d24e605ebc30d1d38865cecfecf52a47457061190570d2662de4abfc98e2c 000012f7: PUSH1 0x40 000012f9: MLOAD 000012fa: PUSH1 0x40 000012fc: MLOAD 000012fd: DUP1 000012fe: SWAP2 000012ff: SUB 00001300: SWAP1 00001301: LOG2 00001302: PUSH1 0x03 00001304: DUP4 00001305: ADD 00001306: DUP1 00001307: SLOAD 00001308: PUSH1 0xff 0000130a: NOT 0000130b: AND 0000130c: SWAP1 0000130d: SSTORE 0000130e: JUMPDEST 0000130f: POP 00001310: POP 00001311: POP 00001312: POP 00001313: JUMP 00001314: JUMPDEST 00001315: ADDRESS 00001316: PUSH1 0x01 00001318: PUSH1 0xa0 0000131a: PUSH1 0x02 0000131c: EXP 0000131d: SUB 0000131e: AND 0000131f: CALLER 00001320: PUSH1 0x01 00001322: PUSH1 0xa0 00001324: PUSH1 0x02 00001326: EXP 00001327: SUB 00001328: AND 00001329: EQ 0000132a: ISZERO 0000132b: ISZERO 0000132c: PUSH2 0x1334 0000132f: JUMPI 00001330: PUSH1 0x00 00001332: DUP1 00001333: REVERT 00001334: JUMPDEST 00001335: PUSH1 0x01 00001337: PUSH1 0xa0 00001339: PUSH1 0x02 0000133b: EXP 0000133c: SUB 0000133d: DUP2 0000133e: AND 0000133f: PUSH1 0x00 00001341: SWAP1 00001342: DUP2 00001343: MSTORE 00001344: PUSH1 0x02 00001346: PUSH1 0x20 00001348: MSTORE 00001349: PUSH1 0x40 0000134b: SWAP1 0000134c: KECCAK256 0000134d: SLOAD 0000134e: DUP2 0000134f: SWAP1 00001350: PUSH1 0xff 00001352: AND 00001353: ISZERO 00001354: PUSH2 0x135c 00001357: JUMPI 00001358: PUSH1 0x00 0000135a: DUP1 0000135b: REVERT 0000135c: JUMPDEST 0000135d: DUP2 0000135e: PUSH1 0x01 00001360: PUSH1 0xa0 00001362: PUSH1 0x02 00001364: EXP 00001365: SUB 00001366: DUP2 00001367: AND 00001368: ISZERO 00001369: ISZERO 0000136a: PUSH2 0x1372 0000136d: JUMPI 0000136e: PUSH1 0x00 00001370: DUP1 00001371: REVERT 00001372: JUMPDEST 00001373: PUSH1 0x03 00001375: SLOAD 00001376: PUSH1 0x04 00001378: SLOAD 00001379: PUSH1 0x01 0000137b: SWAP1 0000137c: SWAP2 0000137d: ADD 0000137e: SWAP1 0000137f: PUSH1 0xff 00001381: SWAP1 00001382: DUP2 00001383: AND 00001384: SWAP1 00001385: PUSH1 0x1e 00001387: SWAP1 00001388: DUP4 00001389: AND 0000138a: GT 0000138b: DUP1 0000138c: ISZERO 0000138d: SWAP1 0000138e: PUSH2 0x139a 00001391: JUMPI 00001392: POP 00001393: DUP2 00001394: PUSH1 0xff 00001396: AND 00001397: DUP2 00001398: GT 00001399: ISZERO 0000139a: JUMPDEST 0000139b: DUP1 0000139c: ISZERO 0000139d: PUSH2 0x13a5 000013a0: JUMPI 000013a1: POP 000013a2: DUP1 000013a3: ISZERO 000013a4: ISZERO 000013a5: JUMPDEST 000013a6: DUP1 000013a7: ISZERO 000013a8: PUSH2 0x13b3 000013ab: JUMPI 000013ac: POP 000013ad: PUSH1 0xff 000013af: DUP3 000013b0: AND 000013b1: ISZERO 000013b2: ISZERO 000013b3: JUMPDEST 000013b4: ISZERO 000013b5: ISZERO 000013b6: PUSH2 0x13be 000013b9: JUMPI 000013ba: PUSH1 0x00 000013bc: DUP1 000013bd: REVERT 000013be: JUMPDEST 000013bf: PUSH1 0x01 000013c1: PUSH1 0xa0 000013c3: PUSH1 0x02 000013c5: EXP 000013c6: SUB 000013c7: DUP6 000013c8: AND 000013c9: PUSH1 0x00 000013cb: SWAP1 000013cc: DUP2 000013cd: MSTORE 000013ce: PUSH1 0x02 000013d0: PUSH1 0x20 000013d2: MSTORE 000013d3: PUSH1 0x40 000013d5: SWAP1 000013d6: KECCAK256 000013d7: DUP1 000013d8: SLOAD 000013d9: PUSH1 0xff 000013db: NOT 000013dc: AND 000013dd: PUSH1 0x01 000013df: SWAP1 000013e0: DUP2 000013e1: OR 000013e2: SWAP1 000013e3: SWAP2 000013e4: SSTORE 000013e5: PUSH1 0x03 000013e7: DUP1 000013e8: SLOAD 000013e9: SWAP1 000013ea: SWAP2 000013eb: DUP2 000013ec: ADD 000013ed: PUSH2 0x13f6 000013f0: DUP4 000013f1: DUP3 000013f2: PUSH2 0x1e69 000013f5: JUMP 000013f6: JUMPDEST 000013f7: POP 000013f8: PUSH1 0x00 000013fa: SWAP2 000013fb: DUP3 000013fc: MSTORE 000013fd: PUSH1 0x20 000013ff: SWAP1 00001400: SWAP2 00001401: KECCAK256 00001402: ADD 00001403: DUP1 00001404: SLOAD 00001405: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000141a: NOT 0000141b: AND 0000141c: PUSH1 0x01 0000141e: PUSH1 0xa0 00001420: PUSH1 0x02 00001422: EXP 00001423: SUB 00001424: DUP8 00001425: AND 00001426: SWAP1 00001427: DUP2 00001428: OR 00001429: SWAP1 0000142a: SWAP2 0000142b: SSTORE 0000142c: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 0000144d: PUSH1 0x40 0000144f: MLOAD 00001450: PUSH1 0x40 00001452: MLOAD 00001453: DUP1 00001454: SWAP2 00001455: SUB 00001456: SWAP1 00001457: LOG2 00001458: POP 00001459: POP 0000145a: POP 0000145b: POP 0000145c: POP 0000145d: JUMP 0000145e: JUMPDEST 0000145f: PUSH1 0x01 00001461: PUSH1 0xa0 00001463: PUSH1 0x02 00001465: EXP 00001466: SUB 00001467: CALLER 00001468: AND 00001469: PUSH1 0x00 0000146b: SWAP1 0000146c: DUP2 0000146d: MSTORE 0000146e: PUSH1 0x02 00001470: PUSH1 0x20 00001472: MSTORE 00001473: PUSH1 0x40 00001475: DUP2 00001476: KECCAK256 00001477: SLOAD 00001478: PUSH1 0xff 0000147a: AND 0000147b: DUP1 0000147c: PUSH2 0x149d 0000147f: JUMPI 00001480: POP 00001481: PUSH1 0x01 00001483: PUSH1 0xa0 00001485: PUSH1 0x02 00001487: EXP 00001488: SUB 00001489: ORIGIN 0000148a: AND 0000148b: PUSH1 0x00 0000148d: SWAP1 0000148e: DUP2 0000148f: MSTORE 00001490: PUSH1 0x02 00001492: PUSH1 0x20 00001494: MSTORE 00001495: PUSH1 0x40 00001497: SWAP1 00001498: KECCAK256 00001499: SLOAD 0000149a: PUSH1 0xff 0000149c: AND 0000149d: JUMPDEST 0000149e: ISZERO 0000149f: ISZERO 000014a0: PUSH2 0x14a8 000014a3: JUMPI 000014a4: PUSH1 0x00 000014a6: DUP1 000014a7: REVERT 000014a8: JUMPDEST 000014a9: PUSH2 0x14b3 000014ac: DUP5 000014ad: DUP5 000014ae: DUP5 000014af: PUSH2 0x1cbc 000014b2: JUMP 000014b3: JUMPDEST 000014b4: SWAP1 000014b5: POP 000014b6: PUSH2 0x14be 000014b9: DUP2 000014ba: PUSH2 0x0eac 000014bd: JUMP 000014be: JUMPDEST 000014bf: SWAP4 000014c0: SWAP3 000014c1: POP 000014c2: POP 000014c3: POP 000014c4: JUMP 000014c5: JUMPDEST 000014c6: PUSH1 0x04 000014c8: SLOAD 000014c9: PUSH1 0x05 000014cb: SLOAD 000014cc: PUSH8 0xffffffffffffffff 000014d5: PUSH10 0x01000000000000000000 000014e0: DUP4 000014e1: DIV 000014e2: AND 000014e3: SWAP2 000014e4: PUSH4 0xffffffff 000014e9: PUSH18 0x010000000000000000000000000000000000 000014fc: SWAP1 000014fd: SWAP2 000014fe: DIV 000014ff: AND 00001500: SWAP1 00001501: PUSH1 0x01 00001503: PUSH1 0xa0 00001505: PUSH1 0x02 00001507: EXP 00001508: SUB 00001509: AND 0000150a: SWAP1 0000150b: SWAP2 0000150c: SWAP3 0000150d: JUMP 0000150e: JUMPDEST 0000150f: PUSH2 0x1516 00001512: PUSH2 0x1e92 00001515: JUMP 00001516: JUMPDEST 00001517: PUSH1 0x03 00001519: DUP1 0000151a: SLOAD 0000151b: DUP1 0000151c: PUSH1 0x20 0000151e: MUL 0000151f: PUSH1 0x20 00001521: ADD 00001522: PUSH1 0x40 00001524: MLOAD 00001525: SWAP1 00001526: DUP2 00001527: ADD 00001528: PUSH1 0x40 0000152a: MSTORE 0000152b: DUP1 0000152c: SWAP3 0000152d: SWAP2 0000152e: SWAP1 0000152f: DUP2 00001530: DUP2 00001531: MSTORE 00001532: PUSH1 0x20 00001534: ADD 00001535: DUP3 00001536: DUP1 00001537: SLOAD 00001538: DUP1 00001539: ISZERO 0000153a: PUSH2 0x156c 0000153d: JUMPI 0000153e: PUSH1 0x20 00001540: MUL 00001541: DUP3 00001542: ADD 00001543: SWAP2 00001544: SWAP1 00001545: PUSH1 0x00 00001547: MSTORE 00001548: PUSH1 0x20 0000154a: PUSH1 0x00 0000154c: KECCAK256 0000154d: SWAP1 0000154e: JUMPDEST 0000154f: DUP2 00001550: SLOAD 00001551: PUSH1 0x01 00001553: PUSH1 0xa0 00001555: PUSH1 0x02 00001557: EXP 00001558: SUB 00001559: AND 0000155a: DUP2 0000155b: MSTORE 0000155c: PUSH1 0x01 0000155e: SWAP1 0000155f: SWAP2 00001560: ADD 00001561: SWAP1 00001562: PUSH1 0x20 00001564: ADD 00001565: DUP1 00001566: DUP4 00001567: GT 00001568: PUSH2 0x154e 0000156b: JUMPI 0000156c: JUMPDEST 0000156d: POP 0000156e: POP 0000156f: POP 00001570: POP 00001571: POP 00001572: SWAP1 00001573: POP 00001574: JUMPDEST 00001575: SWAP1 00001576: JUMP 00001577: JUMPDEST 00001578: PUSH1 0x04 0000157a: SLOAD 0000157b: PUSH2 0x0100 0000157e: SWAP1 0000157f: DIV 00001580: PUSH8 0xffffffffffffffff 00001589: AND 0000158a: DUP2 0000158b: JUMP 0000158c: JUMPDEST 0000158d: PUSH2 0x1594 00001590: PUSH2 0x1e92 00001593: JUMP 00001594: JUMPDEST 00001595: PUSH2 0x159c 00001598: PUSH2 0x1e92 0000159b: JUMP 0000159c: JUMPDEST 0000159d: PUSH1 0x03 0000159f: SLOAD 000015a0: PUSH1 0x00 000015a2: SWAP1 000015a3: DUP2 000015a4: SWAP1 000015a5: PUSH1 0x40 000015a7: MLOAD 000015a8: DUP1 000015a9: MSIZE 000015aa: LT 000015ab: PUSH2 0x15b1 000015ae: JUMPI 000015af: POP 000015b0: MSIZE 000015b1: JUMPDEST 000015b2: SWAP1 000015b3: DUP1 000015b4: DUP3 000015b5: MSTORE 000015b6: DUP1 000015b7: PUSH1 0x20 000015b9: MUL 000015ba: PUSH1 0x20 000015bc: ADD 000015bd: DUP3 000015be: ADD 000015bf: PUSH1 0x40 000015c1: MSTORE 000015c2: POP 000015c3: SWAP3 000015c4: POP 000015c5: PUSH1 0x00 000015c7: SWAP2 000015c8: POP 000015c9: PUSH1 0x00 000015cb: SWAP1 000015cc: POP 000015cd: JUMPDEST 000015ce: PUSH1 0x03 000015d0: SLOAD 000015d1: DUP2 000015d2: LT 000015d3: ISZERO 000015d4: PUSH2 0x1684 000015d7: JUMPI 000015d8: PUSH8 0xffffffffffffffff 000015e1: DUP6 000015e2: AND 000015e3: PUSH1 0x00 000015e5: SWAP1 000015e6: DUP2 000015e7: MSTORE 000015e8: PUSH1 0x01 000015ea: PUSH1 0x20 000015ec: MSTORE 000015ed: PUSH1 0x40 000015ef: DUP2 000015f0: KECCAK256 000015f1: PUSH1 0x03 000015f3: DUP1 000015f4: SLOAD 000015f5: SWAP2 000015f6: SWAP3 000015f7: SWAP2 000015f8: DUP5 000015f9: SWAP1 000015fa: DUP2 000015fb: LT 000015fc: PUSH2 0x1601 000015ff: JUMPI 00001600: INVALID 00001601: JUMPDEST 00001602: PUSH1 0x00 00001604: SWAP2 00001605: DUP3 00001606: MSTORE 00001607: PUSH1 0x20 00001609: DUP1 0000160a: DUP4 0000160b: KECCAK256 0000160c: SWAP1 0000160d: SWAP2 0000160e: ADD 0000160f: SLOAD 00001610: PUSH1 0x01 00001612: PUSH1 0xa0 00001614: PUSH1 0x02 00001616: EXP 00001617: SUB 00001618: AND 00001619: DUP4 0000161a: MSTORE 0000161b: DUP3 0000161c: ADD 0000161d: SWAP3 0000161e: SWAP1 0000161f: SWAP3 00001620: MSTORE 00001621: PUSH1 0x40 00001623: ADD 00001624: SWAP1 00001625: KECCAK256 00001626: SLOAD 00001627: PUSH1 0xff 00001629: AND 0000162a: ISZERO 0000162b: PUSH2 0x167c 0000162e: JUMPI 0000162f: PUSH1 0x03 00001631: DUP1 00001632: SLOAD 00001633: DUP3 00001634: SWAP1 00001635: DUP2 00001636: LT 00001637: PUSH2 0x163c 0000163a: JUMPI 0000163b: INVALID 0000163c: JUMPDEST 0000163d: PUSH1 0x00 0000163f: SWAP2 00001640: DUP3 00001641: MSTORE 00001642: PUSH1 0x20 00001644: SWAP1 00001645: SWAP2 00001646: KECCAK256 00001647: ADD 00001648: SLOAD 00001649: PUSH1 0x01 0000164b: PUSH1 0xa0 0000164d: PUSH1 0x02 0000164f: EXP 00001650: SUB 00001651: AND 00001652: DUP4 00001653: DUP4 00001654: DUP2 00001655: MLOAD 00001656: DUP2 00001657: LT 00001658: PUSH2 0x165d 0000165b: JUMPI 0000165c: INVALID 0000165d: JUMPDEST 0000165e: PUSH1 0x01 00001660: PUSH1 0xa0 00001662: PUSH1 0x02 00001664: EXP 00001665: SUB 00001666: SWAP1 00001667: SWAP3 00001668: AND 00001669: PUSH1 0x20 0000166b: SWAP3 0000166c: DUP4 0000166d: MUL 0000166e: SWAP1 0000166f: SWAP2 00001670: ADD 00001671: SWAP1 00001672: SWAP2 00001673: ADD 00001674: MSTORE 00001675: PUSH1 0x01 00001677: SWAP2 00001678: SWAP1 00001679: SWAP2 0000167a: ADD 0000167b: SWAP1 0000167c: JUMPDEST 0000167d: PUSH1 0x01 0000167f: ADD 00001680: PUSH2 0x15cd 00001683: JUMP 00001684: JUMPDEST 00001685: DUP2 00001686: PUSH1 0x40 00001688: MLOAD 00001689: DUP1 0000168a: MSIZE 0000168b: LT 0000168c: PUSH2 0x1692 0000168f: JUMPI 00001690: POP 00001691: MSIZE 00001692: JUMPDEST 00001693: SWAP1 00001694: DUP1 00001695: DUP3 00001696: MSTORE 00001697: DUP1 00001698: PUSH1 0x20 0000169a: MUL 0000169b: PUSH1 0x20 0000169d: ADD 0000169e: DUP3 0000169f: ADD 000016a0: PUSH1 0x40 000016a2: MSTORE 000016a3: POP 000016a4: SWAP4 000016a5: POP 000016a6: PUSH1 0x00 000016a8: SWAP1 000016a9: POP 000016aa: JUMPDEST 000016ab: DUP2 000016ac: DUP2 000016ad: LT 000016ae: ISZERO 000016af: PUSH2 0x16f3 000016b2: JUMPI 000016b3: DUP3 000016b4: DUP2 000016b5: DUP2 000016b6: MLOAD 000016b7: DUP2 000016b8: LT 000016b9: PUSH2 0x16be 000016bc: JUMPI 000016bd: INVALID 000016be: JUMPDEST 000016bf: SWAP1 000016c0: PUSH1 0x20 000016c2: ADD 000016c3: SWAP1 000016c4: PUSH1 0x20 000016c6: MUL 000016c7: ADD 000016c8: MLOAD 000016c9: DUP5 000016ca: DUP3 000016cb: DUP2 000016cc: MLOAD 000016cd: DUP2 000016ce: LT 000016cf: PUSH2 0x16d4 000016d2: JUMPI 000016d3: INVALID 000016d4: JUMPDEST 000016d5: PUSH1 0x01 000016d7: PUSH1 0xa0 000016d9: PUSH1 0x02 000016db: EXP 000016dc: SUB 000016dd: SWAP1 000016de: SWAP3 000016df: AND 000016e0: PUSH1 0x20 000016e2: SWAP3 000016e3: DUP4 000016e4: MUL 000016e5: SWAP1 000016e6: SWAP2 000016e7: ADD 000016e8: SWAP1 000016e9: SWAP2 000016ea: ADD 000016eb: MSTORE 000016ec: PUSH1 0x01 000016ee: ADD 000016ef: PUSH2 0x16aa 000016f2: JUMP 000016f3: JUMPDEST 000016f4: POP 000016f5: POP 000016f6: POP 000016f7: SWAP2 000016f8: SWAP1 000016f9: POP 000016fa: JUMP 000016fb: JUMPDEST 000016fc: PUSH1 0x00 000016fe: DUP1 000016ff: PUSH2 0x1706 00001702: PUSH2 0x1e92 00001705: JUMP 00001706: JUMPDEST 00001707: PUSH8 0xffffffffffffffff 00001710: DUP5 00001711: AND 00001712: PUSH1 0x00 00001714: SWAP1 00001715: DUP2 00001716: MSTORE 00001717: PUSH1 0x20 00001719: DUP2 0000171a: DUP2 0000171b: MSTORE 0000171c: PUSH1 0x40 0000171e: DUP1 0000171f: DUP4 00001720: KECCAK256 00001721: DUP1 00001722: SLOAD 00001723: PUSH1 0x01 00001725: DUP1 00001726: DUP4 00001727: ADD 00001728: SLOAD 00001729: PUSH1 0x03 0000172b: DUP5 0000172c: ADD 0000172d: SLOAD 0000172e: PUSH1 0x02 00001730: DUP1 00001731: DUP7 00001732: ADD 00001733: DUP1 00001734: SLOAD 00001735: DUP11 00001736: SWAP10 00001737: SWAP8 00001738: SWAP9 00001739: PUSH1 0x01 0000173b: PUSH1 0xa0 0000173d: PUSH1 0x02 0000173f: EXP 00001740: SUB 00001741: SWAP1 00001742: SWAP8 00001743: AND 00001744: SWAP8 00001745: PUSH16 0xffffffffffffffffffffffffffffffff 00001756: SWAP1 00001757: SWAP6 00001758: AND 00001759: SWAP7 0000175a: SWAP2 0000175b: SWAP6 0000175c: PUSH1 0xff 0000175e: DUP6 0000175f: AND 00001760: SWAP6 00001761: PUSH2 0x0100 00001764: SWAP6 00001765: DUP7 00001766: SWAP1 00001767: DIV 00001768: PUSH4 0xffffffff 0000176d: AND 0000176e: SWAP6 0000176f: DUP9 00001770: SWAP6 00001771: SWAP3 00001772: DUP5 00001773: AND 00001774: ISZERO 00001775: MUL 00001776: PUSH1 0x00 00001778: NOT 00001779: ADD 0000177a: SWAP1 0000177b: SWAP3 0000177c: AND 0000177d: DIV 0000177e: SWAP2 0000177f: PUSH1 0x1f 00001781: DUP4 00001782: ADD 00001783: DUP3 00001784: SWAP1 00001785: DIV 00001786: DUP3 00001787: MUL 00001788: SWAP1 00001789: SWAP2 0000178a: ADD 0000178b: SWAP1 0000178c: MLOAD 0000178d: SWAP1 0000178e: DUP2 0000178f: ADD 00001790: PUSH1 0x40 00001792: MSTORE 00001793: DUP1 00001794: SWAP3 00001795: SWAP2 00001796: SWAP1 00001797: DUP2 00001798: DUP2 00001799: MSTORE 0000179a: PUSH1 0x20 0000179c: ADD 0000179d: DUP3 0000179e: DUP1 0000179f: SLOAD 000017a0: PUSH1 0x01 000017a2: DUP2 000017a3: PUSH1 0x01 000017a5: AND 000017a6: ISZERO 000017a7: PUSH2 0x0100 000017aa: MUL 000017ab: SUB 000017ac: AND 000017ad: PUSH1 0x02 000017af: SWAP1 000017b0: DIV 000017b1: DUP1 000017b2: ISZERO 000017b3: PUSH2 0x17fd 000017b6: JUMPI 000017b7: DUP1 000017b8: PUSH1 0x1f 000017ba: LT 000017bb: PUSH2 0x17d2 000017be: JUMPI 000017bf: PUSH2 0x0100 000017c2: DUP1 000017c3: DUP4 000017c4: SLOAD 000017c5: DIV 000017c6: MUL 000017c7: DUP4 000017c8: MSTORE 000017c9: SWAP2 000017ca: PUSH1 0x20 000017cc: ADD 000017cd: SWAP2 000017ce: PUSH2 0x17fd 000017d1: JUMP 000017d2: JUMPDEST 000017d3: DUP3 000017d4: ADD 000017d5: SWAP2 000017d6: SWAP1 000017d7: PUSH1 0x00 000017d9: MSTORE 000017da: PUSH1 0x20 000017dc: PUSH1 0x00 000017de: KECCAK256 000017df: SWAP1 000017e0: JUMPDEST 000017e1: DUP2 000017e2: SLOAD 000017e3: DUP2 000017e4: MSTORE 000017e5: SWAP1 000017e6: PUSH1 0x01 000017e8: ADD 000017e9: SWAP1 000017ea: PUSH1 0x20 000017ec: ADD 000017ed: DUP1 000017ee: DUP4 000017ef: GT 000017f0: PUSH2 0x17e0 000017f3: JUMPI 000017f4: DUP3 000017f5: SWAP1 000017f6: SUB 000017f7: PUSH1 0x1f 000017f9: AND 000017fa: DUP3 000017fb: ADD 000017fc: SWAP2 000017fd: JUMPDEST 000017fe: POP 000017ff: POP 00001800: POP 00001801: POP 00001802: POP 00001803: SWAP3 00001804: POP 00001805: SWAP6 00001806: POP 00001807: SWAP6 00001808: POP 00001809: SWAP6 0000180a: POP 0000180b: SWAP6 0000180c: POP 0000180d: SWAP6 0000180e: POP 0000180f: POP 00001810: SWAP2 00001811: SWAP4 00001812: SWAP6 00001813: SWAP1 00001814: SWAP3 00001815: SWAP5 00001816: POP 00001817: JUMP 00001818: JUMPDEST 00001819: PUSH1 0x1e 0000181b: DUP2 0000181c: JUMP 0000181d: JUMPDEST 0000181e: PUSH1 0x04 00001820: SLOAD 00001821: PUSH1 0xff 00001823: AND 00001824: DUP2 00001825: JUMP 00001826: JUMPDEST 00001827: PUSH1 0x00 00001829: ADDRESS 0000182a: PUSH1 0x01 0000182c: PUSH1 0xa0 0000182e: PUSH1 0x02 00001830: EXP 00001831: SUB 00001832: AND 00001833: CALLER 00001834: PUSH1 0x01 00001836: PUSH1 0xa0 00001838: PUSH1 0x02 0000183a: EXP 0000183b: SUB 0000183c: AND 0000183d: EQ 0000183e: ISZERO 0000183f: ISZERO 00001840: PUSH2 0x1848 00001843: JUMPI 00001844: PUSH1 0x00 00001846: DUP1 00001847: REVERT 00001848: JUMPDEST 00001849: PUSH1 0x01 0000184b: PUSH1 0xa0 0000184d: PUSH1 0x02 0000184f: EXP 00001850: SUB 00001851: DUP4 00001852: AND 00001853: PUSH1 0x00 00001855: SWAP1 00001856: DUP2 00001857: MSTORE 00001858: PUSH1 0x02 0000185a: PUSH1 0x20 0000185c: MSTORE 0000185d: PUSH1 0x40 0000185f: SWAP1 00001860: KECCAK256 00001861: SLOAD 00001862: DUP4 00001863: SWAP1 00001864: PUSH1 0xff 00001866: AND 00001867: ISZERO 00001868: ISZERO 00001869: PUSH2 0x1871 0000186c: JUMPI 0000186d: PUSH1 0x00 0000186f: DUP1 00001870: REVERT 00001871: JUMPDEST 00001872: DUP3 00001873: PUSH1 0x01 00001875: PUSH1 0xa0 00001877: PUSH1 0x02 00001879: EXP 0000187a: SUB 0000187b: DUP2 0000187c: AND 0000187d: ISZERO 0000187e: ISZERO 0000187f: PUSH2 0x1887 00001882: JUMPI 00001883: PUSH1 0x00 00001885: DUP1 00001886: REVERT 00001887: JUMPDEST 00001888: PUSH1 0x01 0000188a: PUSH1 0xa0 0000188c: PUSH1 0x02 0000188e: EXP 0000188f: SUB 00001890: DUP5 00001891: AND 00001892: PUSH1 0x00 00001894: SWAP1 00001895: DUP2 00001896: MSTORE 00001897: PUSH1 0x02 00001899: PUSH1 0x20 0000189b: MSTORE 0000189c: PUSH1 0x40 0000189e: SWAP1 0000189f: KECCAK256 000018a0: SLOAD 000018a1: DUP5 000018a2: SWAP1 000018a3: PUSH1 0xff 000018a5: AND 000018a6: ISZERO 000018a7: PUSH2 0x18af 000018aa: JUMPI 000018ab: PUSH1 0x00 000018ad: DUP1 000018ae: REVERT 000018af: JUMPDEST 000018b0: PUSH1 0x00 000018b2: SWAP4 000018b3: POP 000018b4: JUMPDEST 000018b5: PUSH1 0x03 000018b7: SLOAD 000018b8: DUP5 000018b9: LT 000018ba: ISZERO 000018bb: PUSH2 0x1948 000018be: JUMPI 000018bf: DUP6 000018c0: PUSH1 0x01 000018c2: PUSH1 0xa0 000018c4: PUSH1 0x02 000018c6: EXP 000018c7: SUB 000018c8: AND 000018c9: PUSH1 0x03 000018cb: DUP6 000018cc: DUP2 000018cd: SLOAD 000018ce: DUP2 000018cf: LT 000018d0: ISZERO 000018d1: ISZERO 000018d2: PUSH2 0x18d7 000018d5: JUMPI 000018d6: INVALID 000018d7: JUMPDEST 000018d8: PUSH1 0x00 000018da: SWAP2 000018db: DUP3 000018dc: MSTORE 000018dd: PUSH1 0x20 000018df: SWAP1 000018e0: SWAP2 000018e1: KECCAK256 000018e2: ADD 000018e3: SLOAD 000018e4: PUSH1 0x01 000018e6: PUSH1 0xa0 000018e8: PUSH1 0x02 000018ea: EXP 000018eb: SUB 000018ec: AND 000018ed: EQ 000018ee: ISZERO 000018ef: PUSH2 0x193d 000018f2: JUMPI 000018f3: DUP5 000018f4: PUSH1 0x03 000018f6: DUP6 000018f7: DUP2 000018f8: SLOAD 000018f9: DUP2 000018fa: LT 000018fb: ISZERO 000018fc: ISZERO 000018fd: PUSH2 0x1902 00001900: JUMPI 00001901: INVALID 00001902: JUMPDEST 00001903: PUSH1 0x00 00001905: SWAP2 00001906: DUP3 00001907: MSTORE 00001908: PUSH1 0x20 0000190a: SWAP1 0000190b: SWAP2 0000190c: KECCAK256 0000190d: ADD 0000190e: DUP1 0000190f: SLOAD 00001910: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001925: NOT 00001926: AND 00001927: PUSH1 0x01 00001929: PUSH1 0xa0 0000192b: PUSH1 0x02 0000192d: EXP 0000192e: SUB 0000192f: SWAP3 00001930: SWAP1 00001931: SWAP3 00001932: AND 00001933: SWAP2 00001934: SWAP1 00001935: SWAP2 00001936: OR 00001937: SWAP1 00001938: SSTORE 00001939: PUSH2 0x1948 0000193c: JUMP 0000193d: JUMPDEST 0000193e: PUSH1 0x01 00001940: SWAP1 00001941: SWAP4 00001942: ADD 00001943: SWAP3 00001944: PUSH2 0x18b4 00001947: JUMP 00001948: JUMPDEST 00001949: PUSH1 0x01 0000194b: PUSH1 0xa0 0000194d: PUSH1 0x02 0000194f: EXP 00001950: SUB 00001951: DUP1 00001952: DUP8 00001953: AND 00001954: PUSH1 0x00 00001956: DUP2 00001957: DUP2 00001958: MSTORE 00001959: PUSH1 0x02 0000195b: PUSH1 0x20 0000195d: MSTORE 0000195e: PUSH1 0x40 00001960: DUP1 00001961: DUP3 00001962: KECCAK256 00001963: DUP1 00001964: SLOAD 00001965: PUSH1 0xff 00001967: NOT 00001968: SWAP1 00001969: DUP2 0000196a: AND 0000196b: SWAP1 0000196c: SWAP2 0000196d: SSTORE 0000196e: SWAP4 0000196f: DUP10 00001970: AND 00001971: DUP3 00001972: MSTORE 00001973: SWAP1 00001974: DUP2 00001975: SWAP1 00001976: KECCAK256 00001977: DUP1 00001978: SLOAD 00001979: SWAP1 0000197a: SWAP4 0000197b: AND 0000197c: PUSH1 0x01 0000197e: OR 0000197f: SWAP1 00001980: SWAP3 00001981: SSTORE 00001982: SWAP1 00001983: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 000019a4: SWAP1 000019a5: MLOAD 000019a6: PUSH1 0x40 000019a8: MLOAD 000019a9: DUP1 000019aa: SWAP2 000019ab: SUB 000019ac: SWAP1 000019ad: LOG2 000019ae: DUP5 000019af: PUSH1 0x01 000019b1: PUSH1 0xa0 000019b3: PUSH1 0x02 000019b5: EXP 000019b6: SUB 000019b7: AND 000019b8: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 000019d9: PUSH1 0x40 000019db: MLOAD 000019dc: PUSH1 0x40 000019de: MLOAD 000019df: DUP1 000019e0: SWAP2 000019e1: SUB 000019e2: SWAP1 000019e3: LOG2 000019e4: POP 000019e5: POP 000019e6: POP 000019e7: POP 000019e8: POP 000019e9: POP 000019ea: JUMP 000019eb: JUMPDEST 000019ec: CALLER 000019ed: PUSH1 0x01 000019ef: PUSH1 0xa0 000019f1: PUSH1 0x02 000019f3: EXP 000019f4: SUB 000019f5: DUP2 000019f6: AND 000019f7: PUSH1 0x00 000019f9: SWAP1 000019fa: DUP2 000019fb: MSTORE 000019fc: PUSH1 0x02 000019fe: PUSH1 0x20 00001a00: MSTORE 00001a01: PUSH1 0x40 00001a03: SWAP1 00001a04: KECCAK256 00001a05: SLOAD 00001a06: PUSH1 0xff 00001a08: AND 00001a09: ISZERO 00001a0a: ISZERO 00001a0b: PUSH2 0x1a13 00001a0e: JUMPI 00001a0f: PUSH1 0x00 00001a11: DUP1 00001a12: REVERT 00001a13: JUMPDEST 00001a14: PUSH8 0xffffffffffffffff 00001a1d: DUP3 00001a1e: AND 00001a1f: PUSH1 0x00 00001a21: SWAP1 00001a22: DUP2 00001a23: MSTORE 00001a24: PUSH1 0x01 00001a26: PUSH1 0x20 00001a28: SWAP1 00001a29: DUP2 00001a2a: MSTORE 00001a2b: PUSH1 0x40 00001a2d: DUP1 00001a2e: DUP4 00001a2f: KECCAK256 00001a30: CALLER 00001a31: PUSH1 0x01 00001a33: PUSH1 0xa0 00001a35: PUSH1 0x02 00001a37: EXP 00001a38: SUB 00001a39: DUP2 00001a3a: AND 00001a3b: DUP6 00001a3c: MSTORE 00001a3d: SWAP3 00001a3e: MSTORE 00001a3f: SWAP1 00001a40: SWAP2 00001a41: KECCAK256 00001a42: SLOAD 00001a43: DUP4 00001a44: SWAP2 00001a45: SWAP1 00001a46: PUSH1 0xff 00001a48: AND 00001a49: ISZERO 00001a4a: ISZERO 00001a4b: PUSH2 0x1a53 00001a4e: JUMPI 00001a4f: PUSH1 0x00 00001a51: DUP1 00001a52: REVERT 00001a53: JUMPDEST 00001a54: PUSH8 0xffffffffffffffff 00001a5d: DUP5 00001a5e: AND 00001a5f: PUSH1 0x00 00001a61: SWAP1 00001a62: DUP2 00001a63: MSTORE 00001a64: PUSH1 0x20 00001a66: DUP2 00001a67: SWAP1 00001a68: MSTORE 00001a69: PUSH1 0x40 00001a6b: SWAP1 00001a6c: KECCAK256 00001a6d: PUSH1 0x03 00001a6f: ADD 00001a70: SLOAD 00001a71: DUP5 00001a72: SWAP1 00001a73: PUSH1 0xff 00001a75: AND 00001a76: ISZERO 00001a77: PUSH2 0x1a7f 00001a7a: JUMPI 00001a7b: PUSH1 0x00 00001a7d: DUP1 00001a7e: REVERT 00001a7f: JUMPDEST 00001a80: PUSH8 0xffffffffffffffff 00001a89: DUP6 00001a8a: AND 00001a8b: PUSH1 0x00 00001a8d: DUP2 00001a8e: DUP2 00001a8f: MSTORE 00001a90: PUSH1 0x01 00001a92: PUSH1 0x20 00001a94: SWAP1 00001a95: DUP2 00001a96: MSTORE 00001a97: PUSH1 0x40 00001a99: DUP1 00001a9a: DUP4 00001a9b: KECCAK256 00001a9c: PUSH1 0x01 00001a9e: PUSH1 0xa0 00001aa0: PUSH1 0x02 00001aa2: EXP 00001aa3: SUB 00001aa4: CALLER 00001aa5: AND 00001aa6: DUP1 00001aa7: DUP6 00001aa8: MSTORE 00001aa9: SWAP3 00001aaa: MSTORE 00001aab: SWAP2 00001aac: DUP3 00001aad: SWAP1 00001aae: KECCAK256 00001aaf: DUP1 00001ab0: SLOAD 00001ab1: PUSH1 0xff 00001ab3: NOT 00001ab4: AND 00001ab5: SWAP1 00001ab6: SSTORE 00001ab7: SWAP1 00001ab8: PUSH32 0xf6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e9 00001ad9: SWAP1 00001ada: MLOAD 00001adb: PUSH1 0x40 00001add: MLOAD 00001ade: DUP1 00001adf: SWAP2 00001ae0: SUB 00001ae1: SWAP1 00001ae2: LOG3 00001ae3: POP 00001ae4: POP 00001ae5: POP 00001ae6: POP 00001ae7: POP 00001ae8: JUMP 00001ae9: JUMPDEST 00001aea: PUSH1 0x00 00001aec: DUP1 00001aed: JUMPDEST 00001aee: PUSH1 0x03 00001af0: SLOAD 00001af1: PUSH1 0xff 00001af3: SWAP1 00001af4: DUP2 00001af5: AND 00001af6: SWAP1 00001af7: DUP3 00001af8: AND 00001af9: LT 00001afa: ISZERO 00001afb: PUSH2 0x1b67 00001afe: JUMPI 00001aff: PUSH8 0xffffffffffffffff 00001b08: DUP4 00001b09: AND 00001b0a: PUSH1 0x00 00001b0c: SWAP1 00001b0d: DUP2 00001b0e: MSTORE 00001b0f: PUSH1 0x01 00001b11: PUSH1 0x20 00001b13: MSTORE 00001b14: PUSH1 0x40 00001b16: DUP2 00001b17: KECCAK256 00001b18: PUSH1 0x03 00001b1a: DUP1 00001b1b: SLOAD 00001b1c: SWAP2 00001b1d: SWAP3 00001b1e: SWAP2 00001b1f: PUSH1 0xff 00001b21: DUP6 00001b22: AND 00001b23: SWAP1 00001b24: DUP2 00001b25: LT 00001b26: PUSH2 0x1b2b 00001b29: JUMPI 00001b2a: INVALID 00001b2b: JUMPDEST 00001b2c: PUSH1 0x00 00001b2e: SWAP2 00001b2f: DUP3 00001b30: MSTORE 00001b31: PUSH1 0x20 00001b33: DUP1 00001b34: DUP4 00001b35: KECCAK256 00001b36: SWAP1 00001b37: SWAP2 00001b38: ADD 00001b39: SLOAD 00001b3a: PUSH1 0x01 00001b3c: PUSH1 0xa0 00001b3e: PUSH1 0x02 00001b40: EXP 00001b41: SUB 00001b42: AND 00001b43: DUP4 00001b44: MSTORE 00001b45: DUP3 00001b46: ADD 00001b47: SWAP3 00001b48: SWAP1 00001b49: SWAP3 00001b4a: MSTORE 00001b4b: PUSH1 0x40 00001b4d: ADD 00001b4e: SWAP1 00001b4f: KECCAK256 00001b50: SLOAD 00001b51: PUSH1 0xff 00001b53: AND 00001b54: ISZERO 00001b55: PUSH2 0x1b5f 00001b58: JUMPI 00001b59: PUSH1 0x01 00001b5b: DUP3 00001b5c: ADD 00001b5d: SWAP2 00001b5e: POP 00001b5f: JUMPDEST 00001b60: PUSH1 0x01 00001b62: ADD 00001b63: PUSH2 0x1aed 00001b66: JUMP 00001b67: JUMPDEST 00001b68: POP 00001b69: SWAP2 00001b6a: SWAP1 00001b6b: POP 00001b6c: JUMP 00001b6d: JUMPDEST 00001b6e: PUSH1 0x00 00001b70: PUSH2 0x1b77 00001b73: PUSH2 0x1e92 00001b76: JUMP 00001b77: JUMPDEST 00001b78: PUSH1 0x04 00001b7a: SLOAD 00001b7b: PUSH1 0x03 00001b7d: DUP1 00001b7e: SLOAD 00001b7f: PUSH1 0x00 00001b81: SWAP3 00001b82: DUP4 00001b83: SWAP3 00001b84: PUSH1 0xff 00001b86: DUP3 00001b87: AND 00001b88: SWAP3 00001b89: SWAP1 00001b8a: SWAP2 00001b8b: PUSH2 0x0100 00001b8e: SWAP1 00001b8f: DIV 00001b90: PUSH8 0xffffffffffffffff 00001b99: AND 00001b9a: SWAP1 00001b9b: ADDRESS 00001b9c: PUSH1 0x01 00001b9e: PUSH1 0xa0 00001ba0: PUSH1 0x02 00001ba2: EXP 00001ba3: SUB 00001ba4: AND 00001ba5: BALANCE 00001ba6: SWAP1 00001ba7: DUP4 00001ba8: SWAP1 00001ba9: PUSH1 0x20 00001bab: DUP1 00001bac: DUP3 00001bad: MUL 00001bae: ADD 00001baf: PUSH1 0x40 00001bb1: MLOAD 00001bb2: SWAP1 00001bb3: DUP2 00001bb4: ADD 00001bb5: PUSH1 0x40 00001bb7: MSTORE 00001bb8: DUP1 00001bb9: SWAP3 00001bba: SWAP2 00001bbb: SWAP1 00001bbc: DUP2 00001bbd: DUP2 00001bbe: MSTORE 00001bbf: PUSH1 0x20 00001bc1: ADD 00001bc2: DUP3 00001bc3: DUP1 00001bc4: SLOAD 00001bc5: DUP1 00001bc6: ISZERO 00001bc7: PUSH2 0x1bf9 00001bca: JUMPI 00001bcb: PUSH1 0x20 00001bcd: MUL 00001bce: DUP3 00001bcf: ADD 00001bd0: SWAP2 00001bd1: SWAP1 00001bd2: PUSH1 0x00 00001bd4: MSTORE 00001bd5: PUSH1 0x20 00001bd7: PUSH1 0x00 00001bd9: KECCAK256 00001bda: SWAP1 00001bdb: JUMPDEST 00001bdc: DUP2 00001bdd: SLOAD 00001bde: PUSH1 0x01 00001be0: PUSH1 0xa0 00001be2: PUSH1 0x02 00001be4: EXP 00001be5: SUB 00001be6: AND 00001be7: DUP2 00001be8: MSTORE 00001be9: PUSH1 0x01 00001beb: SWAP1 00001bec: SWAP2 00001bed: ADD 00001bee: SWAP1 00001bef: PUSH1 0x20 00001bf1: ADD 00001bf2: DUP1 00001bf3: DUP4 00001bf4: GT 00001bf5: PUSH2 0x1bdb 00001bf8: JUMPI 00001bf9: JUMPDEST 00001bfa: POP 00001bfb: POP 00001bfc: POP 00001bfd: POP 00001bfe: POP 00001bff: SWAP3 00001c00: POP 00001c01: SWAP4 00001c02: POP 00001c03: SWAP4 00001c04: POP 00001c05: SWAP4 00001c06: POP 00001c07: SWAP4 00001c08: POP 00001c09: SWAP1 00001c0a: SWAP2 00001c0b: SWAP3 00001c0c: SWAP4 00001c0d: JUMP 00001c0e: JUMPDEST 00001c0f: ADDRESS 00001c10: PUSH1 0x01 00001c12: PUSH1 0xa0 00001c14: PUSH1 0x02 00001c16: EXP 00001c17: SUB 00001c18: AND 00001c19: CALLER 00001c1a: PUSH1 0x01 00001c1c: PUSH1 0xa0 00001c1e: PUSH1 0x02 00001c20: EXP 00001c21: SUB 00001c22: AND 00001c23: EQ 00001c24: ISZERO 00001c25: ISZERO 00001c26: PUSH2 0x1c2e 00001c29: JUMPI 00001c2a: PUSH1 0x00 00001c2c: DUP1 00001c2d: REVERT 00001c2e: JUMPDEST 00001c2f: PUSH1 0x03 00001c31: SLOAD 00001c32: PUSH1 0xff 00001c34: DUP1 00001c35: DUP4 00001c36: AND 00001c37: SWAP1 00001c38: PUSH1 0x1e 00001c3a: SWAP1 00001c3b: DUP4 00001c3c: AND 00001c3d: GT 00001c3e: DUP1 00001c3f: ISZERO 00001c40: SWAP1 00001c41: PUSH2 0x1c4d 00001c44: JUMPI 00001c45: POP 00001c46: DUP2 00001c47: PUSH1 0xff 00001c49: AND 00001c4a: DUP2 00001c4b: GT 00001c4c: ISZERO 00001c4d: JUMPDEST 00001c4e: DUP1 00001c4f: ISZERO 00001c50: PUSH2 0x1c58 00001c53: JUMPI 00001c54: POP 00001c55: DUP1 00001c56: ISZERO 00001c57: ISZERO 00001c58: JUMPDEST 00001c59: DUP1 00001c5a: ISZERO 00001c5b: PUSH2 0x1c66 00001c5e: JUMPI 00001c5f: POP 00001c60: PUSH1 0xff 00001c62: DUP3 00001c63: AND 00001c64: ISZERO 00001c65: ISZERO 00001c66: JUMPDEST 00001c67: ISZERO 00001c68: ISZERO 00001c69: PUSH2 0x1c71 00001c6c: JUMPI 00001c6d: PUSH1 0x00 00001c6f: DUP1 00001c70: REVERT 00001c71: JUMPDEST 00001c72: PUSH1 0x04 00001c74: DUP1 00001c75: SLOAD 00001c76: PUSH1 0xff 00001c78: NOT 00001c79: AND 00001c7a: PUSH1 0xff 00001c7c: DUP6 00001c7d: AND 00001c7e: OR 00001c7f: SWAP1 00001c80: SSTORE 00001c81: PUSH32 0xfedc5ab0347d8e56e133db39bc67f6287de7f42255d27732b7245bb98095abdb 00001ca2: DUP4 00001ca3: PUSH1 0x40 00001ca5: MLOAD 00001ca6: PUSH1 0xff 00001ca8: SWAP1 00001ca9: SWAP2 00001caa: AND 00001cab: DUP2 00001cac: MSTORE 00001cad: PUSH1 0x20 00001caf: ADD 00001cb0: PUSH1 0x40 00001cb2: MLOAD 00001cb3: DUP1 00001cb4: SWAP2 00001cb5: SUB 00001cb6: SWAP1 00001cb7: LOG1 00001cb8: POP 00001cb9: POP 00001cba: POP 00001cbb: JUMP 00001cbc: JUMPDEST 00001cbd: PUSH1 0x00 00001cbf: DUP4 00001cc0: PUSH1 0x01 00001cc2: PUSH1 0xa0 00001cc4: PUSH1 0x02 00001cc6: EXP 00001cc7: SUB 00001cc8: DUP2 00001cc9: AND 00001cca: ISZERO 00001ccb: ISZERO 00001ccc: PUSH2 0x1cd4 00001ccf: JUMPI 00001cd0: PUSH1 0x00 00001cd2: DUP1 00001cd3: REVERT 00001cd4: JUMPDEST 00001cd5: PUSH1 0x04 00001cd7: SLOAD 00001cd8: PUSH2 0x0100 00001cdb: SWAP1 00001cdc: DIV 00001cdd: PUSH8 0xffffffffffffffff 00001ce6: AND 00001ce7: SWAP2 00001ce8: POP 00001ce9: PUSH1 0xa0 00001ceb: PUSH1 0x40 00001ced: MLOAD 00001cee: SWAP1 00001cef: DUP2 00001cf0: ADD 00001cf1: PUSH1 0x40 00001cf3: SWAP1 00001cf4: DUP2 00001cf5: MSTORE 00001cf6: PUSH1 0x01 00001cf8: PUSH1 0xa0 00001cfa: PUSH1 0x02 00001cfc: EXP 00001cfd: SUB 00001cfe: DUP8 00001cff: AND 00001d00: DUP3 00001d01: MSTORE 00001d02: PUSH16 0xffffffffffffffffffffffffffffffff 00001d13: DUP7 00001d14: AND 00001d15: PUSH1 0x20 00001d17: DUP1 00001d18: DUP5 00001d19: ADD 00001d1a: SWAP2 00001d1b: SWAP1 00001d1c: SWAP2 00001d1d: MSTORE 00001d1e: DUP2 00001d1f: DUP4 00001d20: ADD 00001d21: DUP7 00001d22: SWAP1 00001d23: MSTORE 00001d24: PUSH1 0x00 00001d26: PUSH1 0x60 00001d28: DUP5 00001d29: ADD 00001d2a: DUP2 00001d2b: SWAP1 00001d2c: MSTORE 00001d2d: PUSH4 0xffffffff 00001d32: TIMESTAMP 00001d33: AND 00001d34: PUSH1 0x80 00001d36: DUP6 00001d37: ADD 00001d38: MSTORE 00001d39: PUSH8 0xffffffffffffffff 00001d42: DUP7 00001d43: AND 00001d44: DUP2 00001d45: MSTORE 00001d46: SWAP1 00001d47: DUP2 00001d48: SWAP1 00001d49: MSTORE 00001d4a: KECCAK256 00001d4b: DUP2 00001d4c: MLOAD 00001d4d: DUP2 00001d4e: SLOAD 00001d4f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d64: NOT 00001d65: AND 00001d66: PUSH1 0x01 00001d68: PUSH1 0xa0 00001d6a: PUSH1 0x02 00001d6c: EXP 00001d6d: SUB 00001d6e: SWAP2 00001d6f: SWAP1 00001d70: SWAP2 00001d71: AND 00001d72: OR 00001d73: DUP2 00001d74: SSTORE 00001d75: PUSH1 0x20 00001d77: DUP3 00001d78: ADD 00001d79: MLOAD 00001d7a: PUSH1 0x01 00001d7c: DUP3 00001d7d: ADD 00001d7e: DUP1 00001d7f: SLOAD 00001d80: PUSH16 0xffffffffffffffffffffffffffffffff 00001d91: NOT 00001d92: AND 00001d93: PUSH16 0xffffffffffffffffffffffffffffffff 00001da4: SWAP3 00001da5: SWAP1 00001da6: SWAP3 00001da7: AND 00001da8: SWAP2 00001da9: SWAP1 00001daa: SWAP2 00001dab: OR 00001dac: SWAP1 00001dad: SSTORE 00001dae: PUSH1 0x40 00001db0: DUP3 00001db1: ADD 00001db2: MLOAD 00001db3: DUP2 00001db4: PUSH1 0x02 00001db6: ADD 00001db7: SWAP1 00001db8: DUP1 00001db9: MLOAD 00001dba: PUSH2 0x1dc7 00001dbd: SWAP3 00001dbe: SWAP2 00001dbf: PUSH1 0x20 00001dc1: ADD 00001dc2: SWAP1 00001dc3: PUSH2 0x1ea4 00001dc6: JUMP 00001dc7: JUMPDEST 00001dc8: POP 00001dc9: PUSH1 0x60 00001dcb: DUP3 00001dcc: ADD 00001dcd: MLOAD 00001dce: PUSH1 0x03 00001dd0: DUP3 00001dd1: ADD 00001dd2: DUP1 00001dd3: SLOAD 00001dd4: PUSH1 0xff 00001dd6: NOT 00001dd7: AND 00001dd8: SWAP2 00001dd9: ISZERO 00001dda: ISZERO 00001ddb: SWAP2 00001ddc: SWAP1 00001ddd: SWAP2 00001dde: OR 00001ddf: SWAP1 00001de0: SSTORE 00001de1: PUSH1 0x80 00001de3: DUP3 00001de4: ADD 00001de5: MLOAD 00001de6: PUSH1 0x03 00001de8: SWAP2 00001de9: SWAP1 00001dea: SWAP2 00001deb: ADD 00001dec: DUP1 00001ded: SLOAD 00001dee: PUSH5 0xffffffff00 00001df4: NOT 00001df5: AND 00001df6: PUSH2 0x0100 00001df9: PUSH4 0xffffffff 00001dfe: SWAP1 00001dff: SWAP4 00001e00: AND 00001e01: DUP4 00001e02: MUL 00001e03: OR 00001e04: SWAP1 00001e05: SSTORE 00001e06: PUSH1 0x04 00001e08: DUP1 00001e09: SLOAD 00001e0a: PUSH9 0xffffffffffffffff00 00001e14: NOT 00001e15: DUP2 00001e16: AND 00001e17: SWAP1 00001e18: DUP4 00001e19: SWAP1 00001e1a: DIV 00001e1b: PUSH8 0xffffffffffffffff 00001e24: SWAP1 00001e25: DUP2 00001e26: AND 00001e27: PUSH1 0x01 00001e29: ADD 00001e2a: DUP2 00001e2b: AND 00001e2c: SWAP1 00001e2d: SWAP4 00001e2e: MUL 00001e2f: OR 00001e30: SWAP1 00001e31: SSTORE 00001e32: DUP4 00001e33: AND 00001e34: SWAP1 00001e35: POP 00001e36: PUSH32 0x4684b4b92a1820c1ed8fb269ebf40d1003f25684a11929df20e21bbb155b8462 00001e57: PUSH1 0x40 00001e59: MLOAD 00001e5a: PUSH1 0x40 00001e5c: MLOAD 00001e5d: DUP1 00001e5e: SWAP2 00001e5f: SUB 00001e60: SWAP1 00001e61: LOG2 00001e62: POP 00001e63: SWAP4 00001e64: SWAP3 00001e65: POP 00001e66: POP 00001e67: POP 00001e68: JUMP 00001e69: JUMPDEST 00001e6a: DUP2 00001e6b: SLOAD 00001e6c: DUP2 00001e6d: DUP4 00001e6e: SSTORE 00001e6f: DUP2 00001e70: DUP2 00001e71: ISZERO 00001e72: GT 00001e73: PUSH2 0x1e8d 00001e76: JUMPI 00001e77: PUSH1 0x00 00001e79: DUP4 00001e7a: DUP2 00001e7b: MSTORE 00001e7c: PUSH1 0x20 00001e7e: SWAP1 00001e7f: KECCAK256 00001e80: PUSH2 0x1e8d 00001e83: SWAP2 00001e84: DUP2 00001e85: ADD 00001e86: SWAP1 00001e87: DUP4 00001e88: ADD 00001e89: PUSH2 0x1f22 00001e8c: JUMP 00001e8d: JUMPDEST 00001e8e: POP 00001e8f: POP 00001e90: POP 00001e91: JUMP 00001e92: JUMPDEST 00001e93: PUSH1 0x20 00001e95: PUSH1 0x40 00001e97: MLOAD 00001e98: SWAP1 00001e99: DUP2 00001e9a: ADD 00001e9b: PUSH1 0x40 00001e9d: MSTORE 00001e9e: PUSH1 0x00 00001ea0: DUP2 00001ea1: MSTORE 00001ea2: SWAP1 00001ea3: JUMP 00001ea4: JUMPDEST 00001ea5: DUP3 00001ea6: DUP1 00001ea7: SLOAD 00001ea8: PUSH1 0x01 00001eaa: DUP2 00001eab: PUSH1 0x01 00001ead: AND 00001eae: ISZERO 00001eaf: PUSH2 0x0100 00001eb2: MUL 00001eb3: SUB 00001eb4: AND 00001eb5: PUSH1 0x02 00001eb7: SWAP1 00001eb8: DIV 00001eb9: SWAP1 00001eba: PUSH1 0x00 00001ebc: MSTORE 00001ebd: PUSH1 0x20 00001ebf: PUSH1 0x00 00001ec1: KECCAK256 00001ec2: SWAP1 00001ec3: PUSH1 0x1f 00001ec5: ADD 00001ec6: PUSH1 0x20 00001ec8: SWAP1 00001ec9: DIV 00001eca: DUP2 00001ecb: ADD 00001ecc: SWAP3 00001ecd: DUP3 00001ece: PUSH1 0x1f 00001ed0: LT 00001ed1: PUSH2 0x1ee5 00001ed4: JUMPI 00001ed5: DUP1 00001ed6: MLOAD 00001ed7: PUSH1 0xff 00001ed9: NOT 00001eda: AND 00001edb: DUP4 00001edc: DUP1 00001edd: ADD 00001ede: OR 00001edf: DUP6 00001ee0: SSTORE 00001ee1: PUSH2 0x1f12 00001ee4: JUMP 00001ee5: JUMPDEST 00001ee6: DUP3 00001ee7: DUP1 00001ee8: ADD 00001ee9: PUSH1 0x01 00001eeb: ADD 00001eec: DUP6 00001eed: SSTORE 00001eee: DUP3 00001eef: ISZERO 00001ef0: PUSH2 0x1f12 00001ef3: JUMPI 00001ef4: SWAP2 00001ef5: DUP3 00001ef6: ADD 00001ef7: JUMPDEST 00001ef8: DUP3 00001ef9: DUP2 00001efa: GT 00001efb: ISZERO 00001efc: PUSH2 0x1f12 00001eff: JUMPI 00001f00: DUP3 00001f01: MLOAD 00001f02: DUP3 00001f03: SSTORE 00001f04: SWAP2 00001f05: PUSH1 0x20 00001f07: ADD 00001f08: SWAP2 00001f09: SWAP1 00001f0a: PUSH1 0x01 00001f0c: ADD 00001f0d: SWAP1 00001f0e: PUSH2 0x1ef7 00001f11: JUMP 00001f12: JUMPDEST 00001f13: POP 00001f14: PUSH2 0x1f1e 00001f17: SWAP3 00001f18: SWAP2 00001f19: POP 00001f1a: PUSH2 0x1f22 00001f1d: JUMP 00001f1e: JUMPDEST 00001f1f: POP 00001f20: SWAP1 00001f21: JUMP 00001f22: JUMPDEST 00001f23: PUSH2 0x1574 00001f26: SWAP2 00001f27: SWAP1 00001f28: JUMPDEST 00001f29: DUP1 00001f2a: DUP3 00001f2b: GT 00001f2c: ISZERO 00001f2d: PUSH2 0x1f1e 00001f30: JUMPI 00001f31: PUSH1 0x00 00001f33: DUP2 00001f34: SSTORE 00001f35: PUSH1 0x01 00001f37: ADD 00001f38: PUSH2 0x1f28 00001f3b: JUMP 00001f3c: STOP 00001f3d: LOG1 00001f3e: PUSH6 0x627a7a723058 00001f45: KECCAK256 00001f46: CHAINID 00001f47: UNKNOWN(0x0F) 00001f48: UNKNOWN(0xE1) 00001f49: SWAP8 00001f4a: UNKNOWN(0x0C) 00001f4b: UNKNOWN(0xAB) 00001f4c: UNKNOWN(0x0D) 00001f4d: UNKNOWN(0xEF) 00001f4e: BASEFEE 00001f4f: UNKNOWN(0xE3) 00001f50: XOR 00001f51: STATICCALL 00001f52: UNKNOWN(0xCC) 00001f53: PUSH25
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1d7662a5",
"selector": "0x1d7662a5",
"calldata_variants": [
"0x1d7662a5",
"0x1d7662a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36ebcd90",
"selector": "0x36ebcd90",
"calldata_variants": [
"0x36ebcd90",
"0x36ebcd900000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x54741525",
"selector": "0x54741525",
"calldata_variants": [
"0x54741525",
"0x547415250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5798d056",
"selector": "0x5798d056",
"calldata_variants": [
"0x5798d056",
"0x5798d0560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x63011a09",
"selector": "0x63011a09",
"calldata_variants": [
"0x63011a09",
"0x63011a090000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6edec705",
"selector": "0x6edec705",
"calldata_variants": [
"0x6edec705",
"0x6edec7050000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7065cb48",
"selector": "0x7065cb48",
"calldata_variants": [
"0x7065cb48",
"0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 4434,
"type": "tx_origin_used"
},
{
"pc": 5257,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xc130fa98f16eb3b703cf4189b5acd25e85db45cb4e9f02bb4badcd65c69d3dfb
call_targets:
0x766040000d000d735f67a8bfc7c84e9c24b1943b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xc130fa98f16eb3b703cf4189b5acd25e85db45cb4e9f02bb4badcd65c69d3dfb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x766040000d000d735f67a8bfc7c84e9c24b1943b"
],
"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": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1d7662a5",
"selector": "0x1d7662a5",
"calldata_variants": [
"0x1d7662a5",
"0x1d7662a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36ebcd90",
"selector": "0x36ebcd90",
"calldata_variants": [
"0x36ebcd90",
"0x36ebcd900000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x54741525",
"selector": "0x54741525",
"calldata_variants": [
"0x54741525",
"0x547415250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5798d056",
"selector": "0x5798d056",
"calldata_variants": [
"0x5798d056",
"0x5798d0560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x63011a09",
"selector": "0x63011a09",
"calldata_variants": [
"0x63011a09",
"0x63011a090000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6edec705",
"selector": "0x6edec705",
"calldata_variants": [
"0x6edec705",
"0x6edec7050000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7065cb48",
"selector": "0x7065cb48",
"calldata_variants": [
"0x7065cb48",
"0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4741,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 4434,
"type": "tx_origin_used"
},
{
"pc": 5257,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xc130fa98f16eb3b703cf4189b5acd25e85db45cb4e9f02bb4badcd65c69d3dfb
call_targets:
0x766040000d000d735f67a8bfc7c84e9c24b1943b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xc130fa98f16eb3b703cf4189b5acd25e85db45cb4e9f02bb4badcd65c69d3dfb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x766040000d000d735f67a8bfc7c84e9c24b1943b"
],
"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": "0x173825d9",
"selector": "0x173825d9",
"calldata_variants": [
"0x173825d9",
"0x173825d90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1d7662a5",
"selector": "0x1d7662a5",
"calldata_variants": [
"0x1d7662a5",
"0x1d7662a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36ebcd90",
"selector": "0x36ebcd90",
"calldata_variants": [
"0x36ebcd90",
"0x36ebcd900000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x54741525",
"selector": "0x54741525",
"calldata_variants": [
"0x54741525",
"0x547415250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5798d056",
"selector": "0x5798d056",
"calldata_variants": [
"0x5798d056",
"0x5798d0560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x63011a09",
"selector": "0x63011a09",
"calldata_variants": [
"0x63011a09",
"0x63011a090000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6edec705",
"selector": "0x6edec705",
"calldata_variants": [
"0x6edec705",
"0x6edec7050000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7065cb48",
"selector": "0x7065cb48",
"calldata_variants": [
"0x7065cb48",
"0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4741,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 4434,
"type": "tx_origin_used"
},
{
"pc": 5257,
"type": "tx_origin_used"
}
]
}
|