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

Analysis Run

456aedfb-f9c9-40c2-be0f-870330eb14ca

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 3, 2026 2:32 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

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

Opcode Heuristics

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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_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
view
trace_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
view
trace_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"
        }
    ]
}