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

Analysis Run

05eda14a-2e2e-44e6-9372-5f5cb3960690

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 3, 2026 3:26 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
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31446 report.consolidate complete 1 / 1 3 months ago
77302 artifact.fetch complete 1 / 3 2 weeks ago
77303 tool.cast_disasm complete 1 / 3 2 weeks ago
77304 analysis.bundle complete 1 / 3 2 weeks ago
77305 capability.graph complete 1 / 3 2 weeks ago
77306 detector.run complete 1 / 3 2 weeks ago
77307 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 value-extraction paths identified from the provided bytecode bundle.
View stderr
[codex:341744] OpenAI Codex v0.77.0 (research preview)
[codex:341744] --------
[codex:341744] workdir: /tmp/codex-multi-gjepc61z
[codex:341744] model: gpt-5.2-codex
[codex:341744] provider: openai
[codex:341744] approval: never
[codex:341744] sandbox: read-only
[codex:341744] reasoning effort: xhigh
[codex:341744] reasoning summaries: auto
[codex:341744] session id: 019b81d9-b032-73e1-baa4-565438ce5e55
[codex:341744] --------
[codex:341744] user
[codex:341744] 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:341744] 
[codex:341744] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:341744] 
[codex:341744] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:341744] - Gas inefficiency, code quality, or best practices
[codex:341744] - Theoretical vulnerabilities without a clear extraction path
[codex:341744] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:341744] - Issues requiring social engineering or off-chain coordination
[codex:341744] 
[codex:341744] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:341744] - CALL/DELEGATECALL with controllable destination or calldata
[codex:341744] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:341744] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:341744] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:341744] - External calls before state updates (reentrancy)
[codex:341744] - SELFDESTRUCT with controllable beneficiary
[codex:341744] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:341744] 
[codex:341744] For each finding, you MUST explain:
[codex:341744] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:341744] 2. The concrete sequence of transactions to extract value
[codex:341744] 3. Why you believe this is exploitable (not just suspicious)
[codex:341744] 
[codex:341744] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:341744] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:341744] 
[codex:341744] Output MUST be valid JSON matching the provided schema.
[codex:341744] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:341744] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:341744] mcp startup: no servers
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Searching for BYTECODE_BUNDLE.txt**
[codex:341744] exec
[codex:341744] /bin/bash -lc ls in /tmp/codex-multi-gjepc61z succeeded in 9ms:
[codex:341744] BYTECODE_BUNDLE.txt
[codex:341744] codex-output-schema.json
[codex:341744] exec
[codex:341744] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-gjepc61z succeeded in 6ms:
[codex:341744] Runtime bytecode bundle for best-effort auditing.
[codex:341744] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:341744] 
[codex:341744] FILE: runtime_bytecode.hex
[codex:341744] 0x60606040523615610152576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a19b14a146101675780630b9276661461022e57806314577c55146102a757806319774d43146102f5578063278b8c0e1461034c5780632e1a7d4d146103eb578063338b5dea1461040b57806346be96c31461044a578063508493bc1461051c57806354d03b5c1461058557806357786394146105a55780635e1d7ae4146105cb57806365e17c9d146105eb5780636c86888b1461063d57806371ffcb161461073b578063731c2f81146107715780638823a9c0146107975780638f283970146107b75780639e281a98146107ed578063bb5f46291461082c578063c281309e14610887578063d0e30db0146108ad578063d9d412e6146108b7578063f7888aec146108ed578063f851a44014610956578063fb6e155f146109a8575b341561015a57fe5b6101655b610000565b565b005b341561016f57fe5b61022c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091908035906020019091905050610a7a565b005b341561023657fe5b6102a5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050610f7a565b005b34156102af57fe5b6102db600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611201565b604051808215151515815260200191505060405180910390f35b34156102fd57fe5b610336600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050611221565b6040518082815260200191505060405180910390f35b341561035457fe5b6103e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611246565b005b34156103f357fe5b6104096004808035906020019091905050611659565b005b341561041357fe5b610448600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118e4565b005b341561045257fe5b610506600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611c34565b6040518082815260200191505060405180910390f35b341561052457fe5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611dc2565b6040518082815260200191505060405180910390f35b341561058d57fe5b6105a36004808035906020019091905050611de7565b005b34156105ad57fe5b6105b5611e5d565b6040518082815260200191505060405180910390f35b34156105d357fe5b6105e96004808035906020019091905050611e63565b005b34156105f357fe5b6105fb611ee5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561064557fe5b610721600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f0b565b604051808215151515815260200191505060405180910390f35b341561074357fe5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fce565b005b341561077957fe5b61078161206f565b6040518082815260200191505060405180910390f35b341561079f57fe5b6107b56004808035906020019091905050612075565b005b34156107bf57fe5b6107eb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120f7565b005b34156107f557fe5b61082a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612198565b005b341561083457fe5b61086d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061253d565b604051808215151515815260200191505060405180910390f35b341561088f57fe5b61089761256c565b6040518082815260200191505060405180910390f35b6108b5612572565b005b34156108bf57fe5b6108eb600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061274a565b005b34156108f557fe5b610940600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612802565b6040518082815260200191505060405180910390f35b341561095e57fe5b61096661288a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109b057fe5b610a64600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506128b0565b6040518082815260200191505060405180910390f35b60006002308d8d8d8d8d8d600060405160200152604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f11515610b9057fe5b5050604051805190509050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680610cff57508573ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020878787604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11515610cde57fe5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015610d0b5750874311155b8015610d7857508a610d75600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084600019166000191681526020019081526020016000205484612c72565b11155b1515610d8357610000565b610d918c8c8c8c8a87612c9e565b610df3600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000205483612c72565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d8c838c8e868e02811515610e8057fe5b048a33604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a15b505050505050505050505050565b6000600230888888888888600060405160200152604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f1151561109057fe5b50506040518051905090506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8587878787878733604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a15b50505050505050565b60086020528060005260406000206000915054906101000a900460ff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60006002308b8b8b8b8b8b600060405160200152604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f1151561135c57fe5b5050604051805190509050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806114cb57503373ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020868686604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f115156114aa57fe5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b15156114d657610000565b88600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b08a8a8a8a8a8a338b8b8b604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019a505050505050505050505060405180910390a15b50505050505050505050565b8060056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116cd57610000565b61173e60056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261330b565b60056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168160405180905060006040518083038185876185025a03f19250505015156117e757610000565b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5676000338360056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15b50565b60008273ffffffffffffffffffffffffffffffffffffffff16141561190857610000565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156119e457fe5b60325a03f115156119f157fe5b505050604051805190501515611a0657610000565b611a8c600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612c72565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7823383600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15b5050565b600060006002308d8d8d8d8d8d600060405160200152604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f11515611d4c57fe5b5050604051805190509050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082600019166000191681526020019081526020016000205491505b509a9950505050505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e4357610000565b600254811115611e5257610000565b806002819055505b50565b60025481565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ebf57610000565b600454811080611ed0575060035481115b15611eda57610000565b806004819055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611faa575082611fa78e8e8e8e8e8e8e8e8e8e6128b0565b10155b1515611fb95760009050611fbe565b600190505b9c9b505050505050505050505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202a57610000565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60045481565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120d157610000565b6003548111806120e2575060045481105b156120ec57610000565b806003819055505b50565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561215357610000565b80600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008273ffffffffffffffffffffffffffffffffffffffff1614156121bc57610000565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561224557610000565b6122cb600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261330b565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156123f357fe5b60325a03f1151561240057fe5b50505060405180519050151561241557610000565b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567823383600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15b5050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60035481565b6125e360056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612c72565b60056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d76000333460056000600073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127a657610000565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006000600060006002308f8f8f8f8f8f600060405160200152604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000866161da5a03f115156129cc57fe5b5050604051805190509250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff1680612b3b57508773ffffffffffffffffffffffffffffffffffffffff1660018460405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11515612b1a57fe5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015612b475750894311155b1515612b565760009350612c61565b612bb88d600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086600019166000191681526020019081526020016000205461330b565b91508a612c41600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f613325565b811515612c4a57fe5b04905080821015612c5d57819350612c61565b8093505b5050509a9950505050505050505050565b600060008284019050612c93848210158015612c8e5750838210155b61335a565b8091505b5092915050565b600060006000670de0b6b3a7640000612cb985600254613325565b811515612cc257fe5b049250670de0b6b3a7640000612cda85600354613325565b811515612ce357fe5b0491506000905060011515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612d4857600091505b612dd7600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd28685612c72565b61330b565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eef600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eea612ee48785612c72565b8661330b565b612c72565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613029600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302461301e8686612c72565b8461330b565b612c72565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613165600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054896131568988613325565b81151561315f57fe5b0461330b565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061327f600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054896132708988613325565b81151561327957fe5b04612c72565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505050505050565b60006133198383111561335a565b81830390505b92915050565b60006000828402905061334f600085148061334a575083858381151561334757fe5b04145b61335a565b8091505b5092915050565b80151561336657610000565b5b505600a165627a7a723058200e003830e030a591457b2152c4fc36832bdf244d42205f1ccb14bbf5a0c6e19c0029
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Interpreting contract bytecode for vulnerabilities**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import hashlib
[codex:341744] from eth_utils import keccak
[codex:341744] 
[codex:341744] sigs=[
[codex:341744] \"deposit()\",
[codex:341744] \"withdraw(uint256)\",
[codex:341744] \"depositToken(address,uint256)\",
[codex:341744] \"withdrawToken(address,uint256)\",
[codex:341744] \"balanceOf(address,address)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"availableVolume(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"amountFilled(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"adminWithdraw(address,uint256)\",
[codex:341744] \"setAdmin(address)\",
[codex:341744] \"setFeeAccount(address)\",
[codex:341744] \"setFeeMake(uint256)\",
[codex:341744] \"setFeeTake(uint256)\",
[codex:341744] \"setFeeRebate(uint256)\",
[codex:341744] \"setTradingFee(uint256)\",
[codex:341744] \"setEtherDelta(address)\" # not
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     h=keccak(text=sig).hex()[:8]
[codex:341744]     print(sig,h)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 250ms:
[codex:341744] deposit() d0e30db0
[codex:341744] withdraw(uint256) 2e1a7d4d
[codex:341744] depositToken(address,uint256) 338b5dea
[codex:341744] withdrawToken(address,uint256) 9e281a98
[codex:341744] balanceOf(address,address) f7888aec
[codex:341744] trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256) 0a19b14a
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 7c2d0695
[codex:341744] cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 74e60a48
[codex:341744] availableVolume(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) fb6e155f
[codex:341744] amountFilled(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 46be96c3
[codex:341744] adminWithdraw(address,uint256) 401d4482
[codex:341744] setAdmin(address) 704b6c02
[codex:341744] setFeeAccount(address) 4b023cf8
[codex:341744] setFeeMake(uint256) e913d376
[codex:341744] setFeeTake(uint256) 90f098bb
[codex:341744] setFeeRebate(uint256) f5a63266
[codex:341744] setTradingFee(uint256) b0d54bcf
[codex:341744] setEtherDelta(address) 5093cb38
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Mapping function selectors to contract roles**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"admin()\",
[codex:341744] \"getAdmin()\",
[codex:341744] \"feeAccount()\",
[codex:341744] \"feeMake()\",
[codex:341744] \"feeTake()\",
[codex:341744] \"feeRebate()\",
[codex:341744] \"tradingFee()\",
[codex:341744] \"setAdmin(address)\",
[codex:341744] \"setFeeAccount(address)\",
[codex:341744] \"setFeeMake(uint256)\",
[codex:341744] \"setFeeTake(uint256)\",
[codex:341744] \"setFeeRebate(uint256)\",
[codex:341744] \"setTradingFee(uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"withdraw(address,uint256)\",
[codex:341744] \"withdrawToken(address,uint256)\",
[codex:341744] \"depositToken(address,uint256)\",
[codex:341744] \"withdraw(uint256)\",
[codex:341744] \"deposit()\",
[codex:341744] \"availableVolume(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"amountFilled(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"testTrade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"tradeV2(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 194ms:
[codex:341744] admin() f851a440
[codex:341744] getAdmin() 6e9960c3
[codex:341744] feeAccount() 65e17c9d
[codex:341744] feeMake() 57786394
[codex:341744] feeTake() c281309e
[codex:341744] feeRebate() 731c2f81
[codex:341744] tradingFee() 56f43352
[codex:341744] setAdmin(address) 704b6c02
[codex:341744] setFeeAccount(address) 4b023cf8
[codex:341744] setFeeMake(uint256) e913d376
[codex:341744] setFeeTake(uint256) 90f098bb
[codex:341744] setFeeRebate(uint256) f5a63266
[codex:341744] setTradingFee(uint256) b0d54bcf
[codex:341744] cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 74e60a48
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 7c2d0695
[codex:341744] withdraw(address,uint256) f3fef3a3
[codex:341744] withdrawToken(address,uint256) 9e281a98
[codex:341744] depositToken(address,uint256) 338b5dea
[codex:341744] withdraw(uint256) 2e1a7d4d
[codex:341744] deposit() d0e30db0
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing function selectors and names**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] names=[\"setAdmin(address)\",\"changeAdmin(address)\",\"updateAdmin(address)\",\"setFeeAccount(address)\",\"changeFeeAccount(address)\",\"updateFeeAccount(address)\",\"setFeeMake(uint256)\",\"changeFeeMake(uint256)\",\"setFeeTake(uint256)\",\"setFeeRebate(uint256)\",\"setTradingFee(uint256)\",\"setFeeAccount(address)\",\"setFeeMake(uint256)\",\"setFeeTake(uint256)\",\"setFeeRebate(uint256)\",\"setFeeRate(uint256)\",\"setFees(uint256,uint256,uint256)\",\"setFees(uint256,uint256,uint256,address)\",\"setFee(uint256)\",\"setFeeRebate(uint256)\"]
[codex:341744] for sig in names:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 207ms:
[codex:341744] setAdmin(address) 704b6c02
[codex:341744] changeAdmin(address) 8f283970
[codex:341744] updateAdmin(address) e2f273bd
[codex:341744] setFeeAccount(address) 4b023cf8
[codex:341744] changeFeeAccount(address) 71ffcb16
[codex:341744] updateFeeAccount(address) fff13ee7
[codex:341744] setFeeMake(uint256) e913d376
[codex:341744] changeFeeMake(uint256) 54d03b5c
[codex:341744] setFeeTake(uint256) 90f098bb
[codex:341744] setFeeRebate(uint256) f5a63266
[codex:341744] setTradingFee(uint256) b0d54bcf
[codex:341744] setFeeAccount(address) 4b023cf8
[codex:341744] setFeeMake(uint256) e913d376
[codex:341744] setFeeTake(uint256) 90f098bb
[codex:341744] setFeeRebate(uint256) f5a63266
[codex:341744] setFeeRate(uint256) 45596e2e
[codex:341744] setFees(uint256,uint256,uint256) cec10c11
[codex:341744] setFees(uint256,uint256,uint256,address) b1c46c9f
[codex:341744] setFee(uint256) 69fe0e2d
[codex:341744] setFeeRebate(uint256) f5a63266
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Identifying additional function selectors**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"changeFeeTake(uint256)\",
[codex:341744] \"changeFeeRebate(uint256)\",
[codex:341744] \"changeTradingFee(uint256)\",
[codex:341744] \"changeFee(uint256)\",
[codex:341744] \"changeFee(uint256,uint256)\",
[codex:341744] \"changeFees(uint256,uint256,uint256)\",
[codex:341744] \"setFeeTake(uint256)\",
[codex:341744] \"setFeeRebate(uint256)\",
[codex:341744] \"setTradingFee(uint256)\",
[codex:341744] \"changeFeeAccount(address)\",
[codex:341744] \"changeFeeMake(uint256)\",
[codex:341744] \"changeFeeTake(uint256)\",
[codex:341744] \"changeFeeRebate(uint256)\",
[codex:341744] \"changeFee(uint256)\",
[codex:341744] \"changeFee(uint256,uint256,uint256)\",
[codex:341744] \"setFee(uint256,uint256,uint256)\",
[codex:341744] \"setFee(address,uint256,uint256,uint256)\",
[codex:341744] \"setFee(address,uint256,uint256)\",
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 225ms:
[codex:341744] changeFeeTake(uint256) 8823a9c0
[codex:341744] changeFeeRebate(uint256) 5e1d7ae4
[codex:341744] changeTradingFee(uint256) aabff62b
[codex:341744] changeFee(uint256) 6a1db1bf
[codex:341744] changeFee(uint256,uint256) e3ca2d65
[codex:341744] changeFees(uint256,uint256,uint256) 7a319590
[codex:341744] setFeeTake(uint256) 90f098bb
[codex:341744] setFeeRebate(uint256) f5a63266
[codex:341744] setTradingFee(uint256) b0d54bcf
[codex:341744] changeFeeAccount(address) 71ffcb16
[codex:341744] changeFeeMake(uint256) 54d03b5c
[codex:341744] changeFeeTake(uint256) 8823a9c0
[codex:341744] changeFeeRebate(uint256) 5e1d7ae4
[codex:341744] changeFee(uint256) 6a1db1bf
[codex:341744] changeFee(uint256,uint256,uint256) e5eec444
[codex:341744] setFee(uint256,uint256,uint256) 5b65b9ab
[codex:341744] setFee(address,uint256,uint256,uint256) f06410f8
[codex:341744] setFee(address,uint256,uint256) c1b1660e
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Verifying function selectors**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"setOwner(address)\",\"changeOwner(address)\",\"transferOwnership(address)\",\"renounceOwnership()\",\"setOperator(address)\",\"setAdmin(address)\",\"setAccount(address)\",\"changeAccount(address)\",\"changeFeeAccount(address)\",\"changeFeeAddress(address)\",\"setFeeAddress(address)\",\"setFeeCollector(address)\",\"setFeeWallet(address)\",\"setCollector(address)\",\"setExecutor(address)\",\"setDelegate(address)\",\"setRelayer(address)\",\"setFeeRecipient(address)\",\"setRelayer(address)\",\"setMatch(address)\",\"setCoordinator(address)\"
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 223ms:
[codex:341744] setOwner(address) 13af4035
[codex:341744] changeOwner(address) a6f9dae1
[codex:341744] transferOwnership(address) f2fde38b
[codex:341744] renounceOwnership() 715018a6
[codex:341744] setOperator(address) b3ab15fb
[codex:341744] setAdmin(address) 704b6c02
[codex:341744] setAccount(address) 29f6d57c
[codex:341744] changeAccount(address) aa049691
[codex:341744] changeFeeAccount(address) 71ffcb16
[codex:341744] changeFeeAddress(address) 285e1406
[codex:341744] setFeeAddress(address) 8705fcd4
[codex:341744] setFeeCollector(address) a42dce80
[codex:341744] setFeeWallet(address) 90d49b9d
[codex:341744] setCollector(address) fb5b82d0
[codex:341744] setExecutor(address) 1c3c0ea8
[codex:341744] setDelegate(address) ca5eb5e1
[codex:341744] setRelayer(address) 6548e9bc
[codex:341744] setFeeRecipient(address) e74b981b
[codex:341744] setRelayer(address) 6548e9bc
[codex:341744] setMatch(address) f1664146
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Verifying commit reference**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"changeFeeRate(uint256)\",\"changeFeePercent(uint256)\",\"changeFee(uint256)\",\"changeTradingFee(uint256)\",\"changeFee(uint256,uint256,uint256)\",\"changeFees(uint256,uint256,uint256)\",\"changeFees(uint256,uint256,uint256,uint256)\",\"setFees(uint256,uint256,uint256,uint256)\",\"setFee(uint256,uint256,uint256,uint256)\",\"setFeeRates(uint256,uint256,uint256)\"
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 211ms:
[codex:341744] changeFeeRate(uint256) affca932
[codex:341744] changeFeePercent(uint256) 34eddf3e
[codex:341744] changeFee(uint256) 6a1db1bf
[codex:341744] changeTradingFee(uint256) aabff62b
[codex:341744] changeFee(uint256,uint256,uint256) e5eec444
[codex:341744] changeFees(uint256,uint256,uint256) 7a319590
[codex:341744] changeFees(uint256,uint256,uint256,uint256) 650c4226
[codex:341744] setFees(uint256,uint256,uint256,uint256) 6fcba377
[codex:341744] setFee(uint256,uint256,uint256,uint256) a2a957bb
[codex:341744] setFeeRates(uint256,uint256,uint256) e538b280
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Mapping functions and storage slots**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,uint256)\"
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 249ms:
[codex:341744] cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256) a7d66375
[codex:341744] cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address) 0bd28cd3
[codex:341744] cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256) b881bbc7
[codex:341744] cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 3216b2ce
[codex:341744] cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address) 9d81e132
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256) 50197b10
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address) f102007d
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32) 7c2d0695
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address) 3822a7c1
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,uint256) 23f8f990
[codex:341744] cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,uint256) 31b30206
[codex:341744] 
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing contract for withdrawal and order vulnerabilities**
[codex:341744] thinking
[codex:341744] **Verifying order function parameters and user restrictions**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,uint256,uint256,address)\",
[codex:341744] ]
[codex:341744] for sig in sigs:
[codex:341744]     print(sig, keccak(text=sig).hex()[:8])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 224ms:
[codex:341744] order(address,uint256,address,uint256,uint256,uint256) 0b927666
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,address) 8582c5aa
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,uint256) eec9d501
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,uint256,uint256) a751ac44
[codex:341744] order(address,uint256,address,uint256,uint256,uint256,uint256,uint256,address) 0c2c491d
[codex:341744] 
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing order hash and user binding**
[codex:341744] 
[codex:341744] I’m carefully dissecting whether the order hash includes the user or msg.sender and how the contract maps orders per user, verifying if that prevents vulnerabilities allowing orders to be misattributed or exploited across users. It looks like the orders mapping keys by user address and order hash, which should shield against cross-user order reuse despite the hash itself excluding user explicitly. This detailed bytecode inspection helps me confirm the contract’s approach to order uniqueness and security.
[codex:341744] thinking
[codex:341744] **Investigating potential arithmetic and access issues**
[codex:341744] 
[codex:341744] I'm examining if any arithmetic overflows or unchecked admin settings could cause problems, and scanning for token transfers without proper access control. The single ERC20 transfer call seems guarded by checks, and safe math is used to prevent overflows. To be thorough, I’m considering analyzing bytecode around hash inputs and storage to confirm if any exploitable gaps exist, especially in how order hashing and user parameters interplay.
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import binascii, textwrap
[codex:341744] 
[codex:341744] # Load bytecode
[codex:341744] with open('BYTECODE_BUNDLE.txt','r') as f:
[codex:341744]     data = f.read()
[codex:341744] # extract runtime_bytecode.hex content
[codex:341744] import re
[codex:341744] m = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', data)
[codex:341744] code_hex = m.group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] 
[codex:341744] # EVM opcode table
[codex:341744] opcodes = {}
[codex:341744] # populate 0x00-0x0f basic
[codex:341744] names = [
[codex:341744]     'STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND',
[codex:341744]     'LT','GT','SLT','SGT','EQ','ISZERO','AND','OR','XOR','NOT','BYTE','SHL','SHR','SAR',
[codex:341744]     'SHA3'
[codex:341744] ]
[codex:341744] for i,name in enumerate(names):
[codex:341744]     opcodes[i]=name
[codex:341744] # environmental etc
[codex:341744] more = {
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] opcodes.update(more)
[codex:341744] # DUP, SWAP, PUSH
[codex:341744] for i in range(1,33):
[codex:341744]     opcodes[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17):
[codex:341744]     opcodes[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17):
[codex:341744]     opcodes[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5):
[codex:341744]     opcodes[0x90+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] # simple disassembler
[codex:341744] 
[codex:341744] def disasm(start, end):
[codex:341744]     i=start
[codex:341744]     out=[]
[codex:341744]     while i < end:
[codex:341744]         op = code_bytes[i]
[codex:341744]         name = opcodes.get(op, f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n = int(name[4:])
[codex:341744]             data = code_bytes[i+1:i+1+n]
[codex:341744]             out.append((i,name, data.hex()))
[codex:341744]             i += 1+n
[codex:341744]         else:
[codex:341744]             out.append((i,name,''))
[codex:341744]             i += 1
[codex:341744]     return out
[codex:341744] 
[codex:341744] # Let's disassemble around trade function start (0x0a7a maybe?)
[codex:341744] # we need code offset; but bytecode addresses maybe in decimal? The functions in bytecode are at offsets like 0x0a7a etc.
[codex:341744] # We'll disassemble around 0x0a50-0x0b50
[codex:341744] for start,end in [(0x0a60,0x0b80),(0x0f40,0x10d0)]:
[codex:341744]     print('--- disasm',hex(start),hex(end))
[codex:341744]     for off,name,arg in disasm(start,end):
[codex:341744]         if arg:
[codex:341744]             print(f'{off:04x} {name} {arg}')
[codex:341744]         else:
[codex:341744]             print(f'{off:04x} {name}')
[codex:341744]     print()
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 27ms:
[codex:341744] --- disasm 0xa60 0xb80
[codex:341744] 0a60 PUSH2 28b0
[codex:341744] 0a63 JUMP
[codex:341744] 0a64 JUMPDEST
[codex:341744] 0a65 PUSH1 40
[codex:341744] 0a67 MLOAD
[codex:341744] 0a68 DUP1
[codex:341744] 0a69 DUP3
[codex:341744] 0a6a DUP2
[codex:341744] 0a6b MSTORE
[codex:341744] 0a6c PUSH1 20
[codex:341744] 0a6e ADD
[codex:341744] 0a6f LOG1
[codex:341744] 0a70 POP
[codex:341744] 0a71 POP
[codex:341744] 0a72 PUSH1 40
[codex:341744] 0a74 MLOAD
[codex:341744] 0a75 DUP1
[codex:341744] 0a76 LOG1
[codex:341744] 0a77 SUB
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Correcting opcode mapping errors**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] from pathlib import Path
[codex:341744] 
[codex:341744] with open('BYTECODE_BUNDLE.txt','r') as f:
[codex:341744]     data = f.read()
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', data).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] 
[codex:341744] # correct opcode table
[codex:341744] opcodes = {}
[codex:341744] # 0x00-0x0b
[codex:341744] names = {
[codex:341744] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',
[codex:341744] 0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:341744] 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',0x20:'SHA3',
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] opcodes.update(names)
[codex:341744] for i in range(1,33):
[codex:341744]     opcodes[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17):
[codex:341744]     opcodes[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17):
[codex:341744]     opcodes[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5):
[codex:341744]     opcodes[0xa0+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] 
[codex:341744] def disasm(start,end):
[codex:341744]     i=start
[codex:341744]     out=[]
[codex:341744]     while i<end:
[codex:341744]         op=code_bytes[i]
[codex:341744]         name=opcodes.get(op,f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n=int(name[4:])
[codex:341744]             data=code_bytes[i+1:i+1+n]
[codex:341744]             out.append((i,name,data.hex()))
[codex:341744]             i+=1+n
[codex:341744]         else:
[codex:341744]             out.append((i,name,''))
[codex:341744]             i+=1
[codex:341744]     return out
[codex:341744] 
[codex:341744] for start,end in [(0x0a70,0x0b90),(0x0f70,0x10c0)]:
[codex:341744]     print('---',hex(start),hex(end))
[codex:341744]     for off,name,arg in disasm(start,end):
[codex:341744]         if arg:
[codex:341744]             print(f'{off:04x} {name} {arg}')
[codex:341744]         else:
[codex:341744]             print(f'{off:04x} {name}')
[codex:341744]     print()
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 28ms:
[codex:341744] --- 0xa70 0xb90
[codex:341744] 0a70 POP
[codex:341744] 0a71 POP
[codex:341744] 0a72 PUSH1 40
[codex:341744] 0a74 MLOAD
[codex:341744] 0a75 DUP1
[codex:341744] 0a76 SWAP2
[codex:341744] 0a77 SUB
[codex:341744] 0a78 SWAP1
[codex:341744] 0a79 RETURN
[codex:341744] 0a7a JUMPDEST
[codex:341744] 0a7b PUSH1 00
[codex:341744] 0a7d PUSH1 02
[codex:341744] 0a7f ADDRESS
[codex:341744] 0a80 DUP14
[codex:341744] 0a81 DUP14
[codex:341744] 0a82 DUP14
[codex:341744] 0a83 DUP14
[codex:341744] 0a84 DUP14
[codex:341744] 0a85 DUP14
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing call stack and calldata setup**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] # load bytecode
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] # opcode table (as above)
[codex:341744] ops={
[codex:341744] 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:341744] 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',0x20:'SHA3',
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] def disasm(start,end):
[codex:341744]     i=start
[codex:341744]     out=[]
[codex:341744]     while i<end:
[codex:341744]         op=code_bytes[i]
[codex:341744]         name=ops.get(op,f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n=int(name[4:])
[codex:341744]             data=code_bytes[i+1:i+1+n]
[codex:341744]             out.append((i,name,data.hex()))
[codex:341744]             i+=1+n
[codex:341744]         else:
[codex:341744]             out.append((i,name,''))
[codex:341744]             i+=1
[codex:341744]     return out
[codex:341744] 
[codex:341744] # Disassemble around 0x0c00-0x0d20 (trade checks)
[codex:341744] for off,name,arg in disasm(0x0c00,0x0d50):
[codex:341744]     if arg:
[codex:341744]         print(f'{off:04x} {name} {arg}')
[codex:341744]     else:
[codex:341744]         print(f'{off:04x} {name}')
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 24ms:
[codex:341744] 0c00 SELFDESTRUCT
[codex:341744] 0c01 AND
[codex:341744] 0c02 DUP1
[codex:341744] 0c03 PUSH2 0cff
[codex:341744] 0c06 JUMPI
[codex:341744] 0c07 POP
[codex:341744] 0c08 DUP6
[codex:341744] 0c09 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341744] 0c1e AND
[codex:341744] 0c1f PUSH1 01
[codex:341744] 0c21 DUP3
[codex:341744] 0c22 PUSH1 40
[codex:341744] 0c24 MLOAD
[codex:341744] 0c25 DUP1
[codex:341744] 0c26 DUP1
[codex:341744] 0c27 PUSH32 19457468657265756d205369676e6564204d6573736167653a0a333200000000
[codex:341744] 0c48 DUP2
[codex:341744] 0c49 MSTORE
[codex:341744] 0c4a POP
[codex:341744] 0c4b PUSH1 1c
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Adjusting disassembly start point**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] # opcode table
[codex:341744] ops={
[codex:341744] 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:341744] 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',0x20:'SHA3',
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] def disasm(start,end):
[codex:341744]     i=start
[codex:341744]     while i<end:
[codex:341744]         op=code_bytes[i]
[codex:341744]         name=ops.get(op,f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n=int(name[4:])
[codex:341744]             data=code_bytes[i+1:i+1+n]
[codex:341744]             print(f'{i:04x} {name} {data.hex()}')
[codex:341744]             i+=1+n
[codex:341744]         else:
[codex:341744]             print(f'{i:04x} {name}')
[codex:341744]             i+=1
[codex:341744] 
[codex:341744] print('--- 0xb80-0xc80')
[codex:341744] disasm(0xb80,0xc80)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 26ms:
[codex:341744] --- 0xb80-0xc80
[codex:341744] 0b80 PUSH1 00
[codex:341744] 0b82 DUP7
[codex:341744] 0b83 PUSH2 61da
[codex:341744] 0b86 GAS
[codex:341744] 0b87 SUB
[codex:341744] 0b88 CALL
[codex:341744] 0b89 ISZERO
[codex:341744] 0b8a ISZERO
[codex:341744] 0b8b PUSH2 0b90
[codex:341744] 0b8e JUMPI
[codex:341744] 0b8f INVALID
[codex:341744] 0b90 JUMPDEST
[codex:341744] 0b91 POP
[codex:341744] 0b92 POP
[codex:341744] 0b93 PUSH1 40
[codex:341744] 0b95 MLOAD
[codex:341744] 0b96 DUP1
[codex:341744] 0b97 MLOAD
[codex:341744] 0b98 SWAP1
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing mapping and potential vulnerabilities**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] # try guess functions for selectors present
[codex:341744] sel_list = {
[codex:341744] '0b927666','14577c55','19774d43','278b8c0e','508493bc','6c86888b','bb5f4629','d9d412e6'}
[codex:341744] 
[codex:341744] # Some candidate signatures
[codex:341744] cands=[
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"testTrade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"availableVolume(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"amountFilled(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"tokenBalance(address,address)\",
[codex:341744] \"balanceOf(address,address)\",
[codex:341744] \"balanceOf(address)\",
[codex:341744] \"balanceOf(address,address,address)\",
[codex:341744] \"testTrade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"trade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"withdraw(address,uint256)\",
[codex:341744] \"withdrawToken(address,uint256)\",
[codex:341744] \"depositToken(address,uint256)\",
[codex:341744] \"withdraw(uint256)\",
[codex:341744] \"deposit()\",
[codex:341744] ]
[codex:341744] 
[codex:341744] for sig in cands:
[codex:341744]     sel=keccak(text=sig).hex()[:8]
[codex:341744]     if sel in sel_list:
[codex:341744]         print(sig, sel)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 202ms:
[codex:341744] order(address,uint256,address,uint256,uint256,uint256) 0b927666
[codex:341744] testTrade(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address) 6c86888b
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing function selectors against EtherDelta**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] from eth_utils import keccak
[codex:341744] sigs=[
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address)\",
[codex:341744] \"order(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256,address)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address,uint256)\",
[codex:341744] \"cancelOrder(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address,address)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,uint256)\",
[codex:341744] \"cancel(address,uint256,address,uint256,uint256,uint256,address,uint8,bytes32,bytes32,address)\",
[codex:341744] ]
[codex:341744] 
[codex:341744] sels={}
[codex:341744] for sig in sigs:
[codex:341744]     sels[sig]=keccak(text=sig).hex()[:8]
[codex:341744] 
[codex:341744] for sig,sel in sels.items():
[codex:341744]     if sel in ['14577c55','19774d43','278b8c0e','508493bc','bb5f4629','d9d412e6']:
[codex:341744]         print(sig, sel)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 199ms:
[codex:341744] 
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing function signatures and safety checks**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] # opcodes as before
[codex:341744] ops={
[codex:341744] 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:341744] 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',0x20:'SHA3',
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] def disasm(start,end):
[codex:341744]     i=start
[codex:341744]     while i<end:
[codex:341744]         op=code_bytes[i]
[codex:341744]         name=ops.get(op,f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n=int(name[4:])
[codex:341744]             data=code_bytes[i+1:i+1+n]
[codex:341744]             print(f'{i:04x} {name} {data.hex()}')
[codex:341744]             i+=1+n
[codex:341744]         else:
[codex:341744]             print(f'{i:04x} {name}')
[codex:341744]             i+=1
[codex:341744] 
[codex:341744] print('--- disasm 0x1f0b-0x1fbf')
[codex:341744] disasm(0x1f0b,0x1fbf)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 24ms:
[codex:341744] --- disasm 0x1f0b-0x1fbf
[codex:341744] 1f0b JUMPDEST
[codex:341744] 1f0c PUSH1 00
[codex:341744] 1f0e DUP3
[codex:341744] 1f0f PUSH1 05
[codex:341744] 1f11 PUSH1 00
[codex:341744] 1f13 DUP16
[codex:341744] 1f14 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341744] 1f29 AND
[codex:341744] 1f2a PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341744] 1f3f AND
[codex:341744] 1f40 DUP2
[codex:341744] 1f41 MSTORE
[codex:341744] 1f42 PUSH1 20
[codex:341744] 1f44 ADD
[codex:341744] 1f45 SWAP1
[codex:341744] 1f46 DUP2
[codex:341744] 1f47 MSTORE
[codex:341744] 1f48 PUSH1 20
[codex:341744] 1f4a ADD
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Analyzing potential vulnerabilities**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] 
[codex:341744] # search for delegatecall opcode 0xf4 and selfdestruct 0xff
[codex:341744] ops = {0xf4:'DELEGATECALL',0xff:'SELFDESTRUCT',0xf2:'CALLCODE'}
[codex:341744] for op,name in ops.items():
[codex:341744]     offs=[i for i,b in enumerate(code_bytes) if b==op]
[codex:341744]     print(name, len(offs), 'occurrences', offs[:10])
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 26ms:
[codex:341744] DELEGATECALL 2 occurrences [6954, 9836]
[codex:341744] SELFDESTRUCT 5338 occurrences [47, 48, 49, 50, 209, 377, 378, 379, 380, 381]
[codex:341744] CALLCODE 0 occurrences []
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Investigating 0xf4 opcode usage**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] # disassemble around offsets 6954 (0x1b2a) and 9836 (0x266c)
[codex:341744] # use opcode table from before
[codex:341744] ops={
[codex:341744] 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:341744] 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',0x20:'SHA3',
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] def disasm(start,end):
[codex:341744]     i=start
[codex:341744]     while i<end:
[codex:341744]         op=code_bytes[i]
[codex:341744]         name=ops.get(op,f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n=int(name[4:])
[codex:341744]             data=code_bytes[i+1:i+1+n]
[codex:341744]             print(f'{i:04x} {name} {data.hex()}')
[codex:341744]             i+=1+n
[codex:341744]         else:
[codex:341744]             print(f'{i:04x} {name}')
[codex:341744]             i+=1
[codex:341744] 
[codex:341744] print('--- around 0x1b2a')
[codex:341744] disasm(0x1b10,0x1b60)
[codex:341744] print('--- around 0x266c')
[codex:341744] disasm(0x2650,0x26b0)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 26ms:
[codex:341744] --- around 0x1b2a
[codex:341744] 1b10 SHR
[codex:341744] 1b11 SDIV
[codex:341744] 1b12 OP24
[codex:341744] 1b13 OP0f
[codex:341744] 1b14 BALANCE
[codex:341744] 1b15 SELFDESTRUCT
[codex:341744] 1b16 GASPRICE
[codex:341744] 1b17 OPd0
[codex:341744] 1b18 PUSH8 ef1ee35ce4997762
[codex:341744] 1b21 PUSH22 2e3a095284754544f4c709d7823383600560008773ff
[codex:341744] 1b38 SELFDESTRUCT
[codex:341744] 1b39 SELFDESTRUCT
[codex:341744] 1b3a SELFDESTRUCT
[codex:341744] 1b3b SELFDESTRUCT
[codex:341744] 1b3c SELFDESTRUCT
[codex:341744] 1b3d SELFDESTRUCT
[codex:341744] 1b3e SELFDESTRUCT
[codex:341744] 1b3f SELFDESTRUCT
[codex:341744] 1b40 SELFDESTRUCT
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Verifying potential delegatecall and access control**
[codex:341744] exec
[codex:341744] /bin/bash -lc "python - <<'PY'
[codex:341744] import re
[codex:341744] code_hex = re.search(r'FILE: runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)[2:]
[codex:341744] code_bytes = bytes.fromhex(code_hex)
[codex:341744] # opcodes
[codex:341744] ops={
[codex:341744] 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:341744] 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',0x20:'SHA3',
[codex:341744] 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:341744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341744] 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:341744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341744] }
[codex:341744] for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
[codex:341744] for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
[codex:341744] for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
[codex:341744] for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
[codex:341744] 
[codex:341744] def disasm(start,end):
[codex:341744]     i=start
[codex:341744]     while i<end:
[codex:341744]         op=code_bytes[i]
[codex:341744]         name=ops.get(op,f'OP{op:02x}')
[codex:341744]         if name.startswith('PUSH'):
[codex:341744]             n=int(name[4:])
[codex:341744]             data=code_bytes[i+1:i+1+n]
[codex:341744]             print(f'{i:04x} {name} {data.hex()}')
[codex:341744]             i+=1+n
[codex:341744]         else:
[codex:341744]             print(f'{i:04x} {name}')
[codex:341744]             i+=1
[codex:341744] 
[codex:341744] print('--- changeAdmin around 0x20f7')
[codex:341744] disasm(0x20f7,0x2155)
[codex:341744] PY" in /tmp/codex-multi-gjepc61z succeeded in 24ms:
[codex:341744] --- changeAdmin around 0x20f7
[codex:341744] 20f7 JUMPDEST
[codex:341744] 20f8 PUSH1 00
[codex:341744] 20fa PUSH1 00
[codex:341744] 20fc SWAP1
[codex:341744] 20fd SLOAD
[codex:341744] 20fe SWAP1
[codex:341744] 20ff PUSH2 0100
[codex:341744] 2102 EXP
[codex:341744] 2103 SWAP1
[codex:341744] 2104 DIV
[codex:341744] 2105 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341744] 211a AND
[codex:341744] 211b PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341744] 2130 AND
[codex:341744] 2131 CALLER
[codex:341744] 2132 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341744] 2147 AND
[codex:341744] 2148 EQ
[codex:341744] 2149 ISZERO
[codex:341744] 
[codex:341744] thinking
[codex:341744] **Preparing final JSON output**
[codex:341744] codex
[codex:341744] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths identified from the provided bytecode bundle.","findings":[]}
[codex:341744] tokens used
[codex:341744] 121,800
[codex:341744] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths identified from the provided bytecode bundle.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-03T03:26:41.575431+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction paths identified from the provided bytecode bundle.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction paths identified from the provided bytecode bundle.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
11
EXT*/BALANCE
2
Total opcodes
5692
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0152
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: PUSH4 0xffffffff
00000033: AND
00000034: DUP1
00000035: PUSH4 0x0a19b14a
0000003a: EQ
0000003b: PUSH2 0x0167
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x0b927666
00000045: EQ
00000046: PUSH2 0x022e
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0x14577c55
00000050: EQ
00000051: PUSH2 0x02a7
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0x19774d43
0000005b: EQ
0000005c: PUSH2 0x02f5
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0x278b8c0e
00000066: EQ
00000067: PUSH2 0x034c
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0x2e1a7d4d
00000071: EQ
00000072: PUSH2 0x03eb
00000075: JUMPI
00000076: DUP1
00000077: PUSH4 0x338b5dea
0000007c: EQ
0000007d: PUSH2 0x040b
00000080: JUMPI
00000081: DUP1
00000082: PUSH4 0x46be96c3
00000087: EQ
00000088: PUSH2 0x044a
0000008b: JUMPI
0000008c: DUP1
0000008d: PUSH4 0x508493bc
00000092: EQ
00000093: PUSH2 0x051c
00000096: JUMPI
00000097: DUP1
00000098: PUSH4 0x54d03b5c
0000009d: EQ
0000009e: PUSH2 0x0585
000000a1: JUMPI
000000a2: DUP1
000000a3: PUSH4 0x57786394
000000a8: EQ
000000a9: PUSH2 0x05a5
000000ac: JUMPI
000000ad: DUP1
000000ae: PUSH4 0x5e1d7ae4
000000b3: EQ
000000b4: PUSH2 0x05cb
000000b7: JUMPI
000000b8: DUP1
000000b9: PUSH4 0x65e17c9d
000000be: EQ
000000bf: PUSH2 0x05eb
000000c2: JUMPI
000000c3: DUP1
000000c4: PUSH4 0x6c86888b
000000c9: EQ
000000ca: PUSH2 0x063d
000000cd: JUMPI
000000ce: DUP1
000000cf: PUSH4 0x71ffcb16
000000d4: EQ
000000d5: PUSH2 0x073b
000000d8: JUMPI
000000d9: DUP1
000000da: PUSH4 0x731c2f81
000000df: EQ
000000e0: PUSH2 0x0771
000000e3: JUMPI
000000e4: DUP1
000000e5: PUSH4 0x8823a9c0
000000ea: EQ
000000eb: PUSH2 0x0797
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x8f283970
000000f5: EQ
000000f6: PUSH2 0x07b7
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0x9e281a98
00000100: EQ
00000101: PUSH2 0x07ed
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0xbb5f4629
0000010b: EQ
0000010c: PUSH2 0x082c
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0xc281309e
00000116: EQ
00000117: PUSH2 0x0887
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0xd0e30db0
00000121: EQ
00000122: PUSH2 0x08ad
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0xd9d412e6
0000012c: EQ
0000012d: PUSH2 0x08b7
00000130: JUMPI
00000131: DUP1
00000132: PUSH4 0xf7888aec
00000137: EQ
00000138: PUSH2 0x08ed
0000013b: JUMPI
0000013c: DUP1
0000013d: PUSH4 0xf851a440
00000142: EQ
00000143: PUSH2 0x0956
00000146: JUMPI
00000147: DUP1
00000148: PUSH4 0xfb6e155f
0000014d: EQ
0000014e: PUSH2 0x09a8
00000151: JUMPI
00000152: JUMPDEST
00000153: CALLVALUE
00000154: ISZERO
00000155: PUSH2 0x015a
00000158: JUMPI
00000159: INVALID
0000015a: JUMPDEST
0000015b: PUSH2 0x0165
0000015e: JUMPDEST
0000015f: PUSH2 0x0000
00000162: JUMP
00000163: JUMPDEST
00000164: JUMP
00000165: JUMPDEST
00000166: STOP
00000167: JUMPDEST
00000168: CALLVALUE
00000169: ISZERO
0000016a: PUSH2 0x016f
0000016d: JUMPI
0000016e: INVALID
0000016f: JUMPDEST
00000170: PUSH2 0x022c
00000173: PUSH1 0x04
00000175: DUP1
00000176: DUP1
00000177: CALLDATALOAD
00000178: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000018d: AND
0000018e: SWAP1
0000018f: PUSH1 0x20
00000191: ADD
00000192: SWAP1
00000193: SWAP2
00000194: SWAP1
00000195: DUP1
00000196: CALLDATALOAD
00000197: SWAP1
00000198: PUSH1 0x20
0000019a: ADD
0000019b: SWAP1
0000019c: SWAP2
0000019d: SWAP1
0000019e: DUP1
0000019f: CALLDATALOAD
000001a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001b5: AND
000001b6: SWAP1
000001b7: PUSH1 0x20
000001b9: ADD
000001ba: SWAP1
000001bb: SWAP2
000001bc: SWAP1
000001bd: DUP1
000001be: CALLDATALOAD
000001bf: SWAP1
000001c0: PUSH1 0x20
000001c2: ADD
000001c3: SWAP1
000001c4: SWAP2
000001c5: SWAP1
000001c6: DUP1
000001c7: CALLDATALOAD
000001c8: SWAP1
000001c9: PUSH1 0x20
000001cb: ADD
000001cc: SWAP1
000001cd: SWAP2
000001ce: SWAP1
000001cf: DUP1
000001d0: CALLDATALOAD
000001d1: SWAP1
000001d2: PUSH1 0x20
000001d4: ADD
000001d5: SWAP1
000001d6: SWAP2
000001d7: SWAP1
000001d8: DUP1
000001d9: CALLDATALOAD
000001da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001ef: AND
000001f0: SWAP1
000001f1: PUSH1 0x20
000001f3: ADD
000001f4: SWAP1
000001f5: SWAP2
000001f6: SWAP1
000001f7: DUP1
000001f8: CALLDATALOAD
000001f9: PUSH1 0xff
000001fb: AND
000001fc: SWAP1
000001fd: PUSH1 0x20
000001ff: ADD
00000200: SWAP1
00000201: SWAP2
00000202: SWAP1
00000203: DUP1
00000204: CALLDATALOAD
00000205: PUSH1 0x00
00000207: NOT
00000208: AND
00000209: SWAP1
0000020a: PUSH1 0x20
0000020c: ADD
0000020d: SWAP1
0000020e: SWAP2
0000020f: SWAP1
00000210: DUP1
00000211: CALLDATALOAD
00000212: PUSH1 0x00
00000214: NOT
00000215: AND
00000216: SWAP1
00000217: PUSH1 0x20
00000219: ADD
0000021a: SWAP1
0000021b: SWAP2
0000021c: SWAP1
0000021d: DUP1
0000021e: CALLDATALOAD
0000021f: SWAP1
00000220: PUSH1 0x20
00000222: ADD
00000223: SWAP1
00000224: SWAP2
00000225: SWAP1
00000226: POP
00000227: POP
00000228: PUSH2 0x0a7a
0000022b: JUMP
0000022c: JUMPDEST
0000022d: STOP
0000022e: JUMPDEST
0000022f: CALLVALUE
00000230: ISZERO
00000231: PUSH2 0x0236
00000234: JUMPI
00000235: INVALID
00000236: JUMPDEST
00000237: PUSH2 0x02a5
0000023a: PUSH1 0x04
0000023c: DUP1
0000023d: DUP1
0000023e: CALLDATALOAD
0000023f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000254: AND
00000255: SWAP1
00000256: PUSH1 0x20
00000258: ADD
00000259: SWAP1
0000025a: SWAP2
0000025b: SWAP1
0000025c: DUP1
0000025d: CALLDATALOAD
0000025e: SWAP1
0000025f: PUSH1 0x20
00000261: ADD
00000262: SWAP1
00000263: SWAP2
00000264: SWAP1
00000265: DUP1
00000266: CALLDATALOAD
00000267: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000027c: AND
0000027d: SWAP1
0000027e: PUSH1 0x20
00000280: ADD
00000281: SWAP1
00000282: SWAP2
00000283: SWAP1
00000284: DUP1
00000285: CALLDATALOAD
00000286: SWAP1
00000287: PUSH1 0x20
00000289: ADD
0000028a: SWAP1
0000028b: SWAP2
0000028c: SWAP1
0000028d: DUP1
0000028e: CALLDATALOAD
0000028f: SWAP1
00000290: PUSH1 0x20
00000292: ADD
00000293: SWAP1
00000294: SWAP2
00000295: SWAP1
00000296: DUP1
00000297: CALLDATALOAD
00000298: SWAP1
00000299: PUSH1 0x20
0000029b: ADD
0000029c: SWAP1
0000029d: SWAP2
0000029e: SWAP1
0000029f: POP
000002a0: POP
000002a1: PUSH2 0x0f7a
000002a4: JUMP
000002a5: JUMPDEST
000002a6: STOP
000002a7: JUMPDEST
000002a8: CALLVALUE
000002a9: ISZERO
000002aa: PUSH2 0x02af
000002ad: JUMPI
000002ae: INVALID
000002af: JUMPDEST
000002b0: PUSH2 0x02db
000002b3: PUSH1 0x04
000002b5: DUP1
000002b6: DUP1
000002b7: CALLDATALOAD
000002b8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002cd: AND
000002ce: SWAP1
000002cf: PUSH1 0x20
000002d1: ADD
000002d2: SWAP1
000002d3: SWAP2
000002d4: SWAP1
000002d5: POP
000002d6: POP
000002d7: PUSH2 0x1201
000002da: JUMP
000002db: JUMPDEST
000002dc: PUSH1 0x40
000002de: MLOAD
000002df: DUP1
000002e0: DUP3
000002e1: ISZERO
000002e2: ISZERO
000002e3: ISZERO
000002e4: ISZERO
000002e5: DUP2
000002e6: MSTORE
000002e7: PUSH1 0x20
000002e9: ADD
000002ea: SWAP2
000002eb: POP
000002ec: POP
000002ed: PUSH1 0x40
000002ef: MLOAD
000002f0: DUP1
000002f1: SWAP2
000002f2: SUB
000002f3: SWAP1
000002f4: RETURN
000002f5: JUMPDEST
000002f6: CALLVALUE
000002f7: ISZERO
000002f8: PUSH2 0x02fd
000002fb: JUMPI
000002fc: INVALID
000002fd: JUMPDEST
000002fe: PUSH2 0x0336
00000301: PUSH1 0x04
00000303: DUP1
00000304: DUP1
00000305: CALLDATALOAD
00000306: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000031b: AND
0000031c: SWAP1
0000031d: PUSH1 0x20
0000031f: ADD
00000320: SWAP1
00000321: SWAP2
00000322: SWAP1
00000323: DUP1
00000324: CALLDATALOAD
00000325: PUSH1 0x00
00000327: NOT
00000328: AND
00000329: SWAP1
0000032a: PUSH1 0x20
0000032c: ADD
0000032d: SWAP1
0000032e: SWAP2
0000032f: SWAP1
00000330: POP
00000331: POP
00000332: PUSH2 0x1221
00000335: JUMP
00000336: JUMPDEST
00000337: PUSH1 0x40
00000339: MLOAD
0000033a: DUP1
0000033b: DUP3
0000033c: DUP2
0000033d: MSTORE
0000033e: PUSH1 0x20
00000340: ADD
00000341: SWAP2
00000342: POP
00000343: POP
00000344: PUSH1 0x40
00000346: MLOAD
00000347: DUP1
00000348: SWAP2
00000349: SUB
0000034a: SWAP1
0000034b: RETURN
0000034c: JUMPDEST
0000034d: CALLVALUE
0000034e: ISZERO
0000034f: PUSH2 0x0354
00000352: JUMPI
00000353: INVALID
00000354: JUMPDEST
00000355: PUSH2 0x03e9
00000358: PUSH1 0x04
0000035a: DUP1
0000035b: DUP1
0000035c: CALLDATALOAD
0000035d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000372: AND
00000373: SWAP1
00000374: PUSH1 0x20
00000376: ADD
00000377: SWAP1
00000378: SWAP2
00000379: SWAP1
0000037a: DUP1
0000037b: CALLDATALOAD
0000037c: SWAP1
0000037d: PUSH1 0x20
0000037f: ADD
00000380: SWAP1
00000381: SWAP2
00000382: SWAP1
00000383: DUP1
00000384: CALLDATALOAD
00000385: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000039a: AND
0000039b: SWAP1
0000039c: PUSH1 0x20
0000039e: ADD
0000039f: SWAP1
000003a0: SWAP2
000003a1: SWAP1
000003a2: DUP1
000003a3: CALLDATALOAD
000003a4: SWAP1
000003a5: PUSH1 0x20
000003a7: ADD
000003a8: SWAP1
000003a9: SWAP2
000003aa: SWAP1
000003ab: DUP1
000003ac: CALLDATALOAD
000003ad: SWAP1
000003ae: PUSH1 0x20
000003b0: ADD
000003b1: SWAP1
000003b2: SWAP2
000003b3: SWAP1
000003b4: DUP1
000003b5: CALLDATALOAD
000003b6: SWAP1
000003b7: PUSH1 0x20
000003b9: ADD
000003ba: SWAP1
000003bb: SWAP2
000003bc: SWAP1
000003bd: DUP1
000003be: CALLDATALOAD
000003bf: PUSH1 0xff
000003c1: AND
000003c2: SWAP1
000003c3: PUSH1 0x20
000003c5: ADD
000003c6: SWAP1
000003c7: SWAP2
000003c8: SWAP1
000003c9: DUP1
000003ca: CALLDATALOAD
000003cb: PUSH1 0x00
000003cd: NOT
000003ce: AND
000003cf: SWAP1
000003d0: PUSH1 0x20
000003d2: ADD
000003d3: SWAP1
000003d4: SWAP2
000003d5: SWAP1
000003d6: DUP1
000003d7: CALLDATALOAD
000003d8: PUSH1 0x00
000003da: NOT
000003db: AND
000003dc: SWAP1
000003dd: PUSH1 0x20
000003df: ADD
000003e0: SWAP1
000003e1: SWAP2
000003e2: SWAP1
000003e3: POP
000003e4: POP
000003e5: PUSH2 0x1246
000003e8: JUMP
000003e9: JUMPDEST
000003ea: STOP
000003eb: JUMPDEST
000003ec: CALLVALUE
000003ed: ISZERO
000003ee: PUSH2 0x03f3
000003f1: JUMPI
000003f2: INVALID
000003f3: JUMPDEST
000003f4: PUSH2 0x0409
000003f7: PUSH1 0x04
000003f9: DUP1
000003fa: DUP1
000003fb: CALLDATALOAD
000003fc: SWAP1
000003fd: PUSH1 0x20
000003ff: ADD
00000400: SWAP1
00000401: SWAP2
00000402: SWAP1
00000403: POP
00000404: POP
00000405: PUSH2 0x1659
00000408: JUMP
00000409: JUMPDEST
0000040a: STOP
0000040b: JUMPDEST
0000040c: CALLVALUE
0000040d: ISZERO
0000040e: PUSH2 0x0413
00000411: JUMPI
00000412: INVALID
00000413: JUMPDEST
00000414: PUSH2 0x0448
00000417: PUSH1 0x04
00000419: DUP1
0000041a: DUP1
0000041b: CALLDATALOAD
0000041c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000431: AND
00000432: SWAP1
00000433: PUSH1 0x20
00000435: ADD
00000436: SWAP1
00000437: SWAP2
00000438: SWAP1
00000439: DUP1
0000043a: CALLDATALOAD
0000043b: SWAP1
0000043c: PUSH1 0x20
0000043e: ADD
0000043f: SWAP1
00000440: SWAP2
00000441: SWAP1
00000442: POP
00000443: POP
00000444: PUSH2 0x18e4
00000447: JUMP
00000448: JUMPDEST
00000449: STOP
0000044a: JUMPDEST
0000044b: CALLVALUE
0000044c: ISZERO
0000044d: PUSH2 0x0452
00000450: JUMPI
00000451: INVALID
00000452: JUMPDEST
00000453: PUSH2 0x0506
00000456: PUSH1 0x04
00000458: DUP1
00000459: DUP1
0000045a: CALLDATALOAD
0000045b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000470: AND
00000471: SWAP1
00000472: PUSH1 0x20
00000474: ADD
00000475: SWAP1
00000476: SWAP2
00000477: SWAP1
00000478: DUP1
00000479: CALLDATALOAD
0000047a: SWAP1
0000047b: PUSH1 0x20
0000047d: ADD
0000047e: SWAP1
0000047f: SWAP2
00000480: SWAP1
00000481: DUP1
00000482: CALLDATALOAD
00000483: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000498: AND
00000499: SWAP1
0000049a: PUSH1 0x20
0000049c: ADD
0000049d: SWAP1
0000049e: SWAP2
0000049f: SWAP1
000004a0: DUP1
000004a1: CALLDATALOAD
000004a2: SWAP1
000004a3: PUSH1 0x20
000004a5: ADD
000004a6: SWAP1
000004a7: SWAP2
000004a8: SWAP1
000004a9: DUP1
000004aa: CALLDATALOAD
000004ab: SWAP1
000004ac: PUSH1 0x20
000004ae: ADD
000004af: SWAP1
000004b0: SWAP2
000004b1: SWAP1
000004b2: DUP1
000004b3: CALLDATALOAD
000004b4: SWAP1
000004b5: PUSH1 0x20
000004b7: ADD
000004b8: SWAP1
000004b9: SWAP2
000004ba: SWAP1
000004bb: DUP1
000004bc: CALLDATALOAD
000004bd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004d2: AND
000004d3: SWAP1
000004d4: PUSH1 0x20
000004d6: ADD
000004d7: SWAP1
000004d8: SWAP2
000004d9: SWAP1
000004da: DUP1
000004db: CALLDATALOAD
000004dc: PUSH1 0xff
000004de: AND
000004df: SWAP1
000004e0: PUSH1 0x20
000004e2: ADD
000004e3: SWAP1
000004e4: SWAP2
000004e5: SWAP1
000004e6: DUP1
000004e7: CALLDATALOAD
000004e8: PUSH1 0x00
000004ea: NOT
000004eb: AND
000004ec: SWAP1
000004ed: PUSH1 0x20
000004ef: ADD
000004f0: SWAP1
000004f1: SWAP2
000004f2: SWAP1
000004f3: DUP1
000004f4: CALLDATALOAD
000004f5: PUSH1 0x00
000004f7: NOT
000004f8: AND
000004f9: SWAP1
000004fa: PUSH1 0x20
000004fc: ADD
000004fd: SWAP1
000004fe: SWAP2
000004ff: SWAP1
00000500: POP
00000501: POP
00000502: PUSH2 0x1c34
00000505: JUMP
00000506: JUMPDEST
00000507: PUSH1 0x40
00000509: MLOAD
0000050a: DUP1
0000050b: DUP3
0000050c: DUP2
0000050d: MSTORE
0000050e: PUSH1 0x20
00000510: ADD
00000511: SWAP2
00000512: POP
00000513: POP
00000514: PUSH1 0x40
00000516: MLOAD
00000517: DUP1
00000518: SWAP2
00000519: SUB
0000051a: SWAP1
0000051b: RETURN
0000051c: JUMPDEST
0000051d: CALLVALUE
0000051e: ISZERO
0000051f: PUSH2 0x0524
00000522: JUMPI
00000523: INVALID
00000524: JUMPDEST
00000525: PUSH2 0x056f
00000528: PUSH1 0x04
0000052a: DUP1
0000052b: DUP1
0000052c: CALLDATALOAD
0000052d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000542: AND
00000543: SWAP1
00000544: PUSH1 0x20
00000546: ADD
00000547: SWAP1
00000548: SWAP2
00000549: SWAP1
0000054a: DUP1
0000054b: CALLDATALOAD
0000054c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000561: AND
00000562: SWAP1
00000563: PUSH1 0x20
00000565: ADD
00000566: SWAP1
00000567: SWAP2
00000568: SWAP1
00000569: POP
0000056a: POP
0000056b: PUSH2 0x1dc2
0000056e: JUMP
0000056f: JUMPDEST
00000570: PUSH1 0x40
00000572: MLOAD
00000573: DUP1
00000574: DUP3
00000575: DUP2
00000576: MSTORE
00000577: PUSH1 0x20
00000579: ADD
0000057a: SWAP2
0000057b: POP
0000057c: POP
0000057d: PUSH1 0x40
0000057f: MLOAD
00000580: DUP1
00000581: SWAP2
00000582: SUB
00000583: SWAP1
00000584: RETURN
00000585: JUMPDEST
00000586: CALLVALUE
00000587: ISZERO
00000588: PUSH2 0x058d
0000058b: JUMPI
0000058c: INVALID
0000058d: JUMPDEST
0000058e: PUSH2 0x05a3
00000591: PUSH1 0x04
00000593: DUP1
00000594: DUP1
00000595: CALLDATALOAD
00000596: SWAP1
00000597: PUSH1 0x20
00000599: ADD
0000059a: SWAP1
0000059b: SWAP2
0000059c: SWAP1
0000059d: POP
0000059e: POP
0000059f: PUSH2 0x1de7
000005a2: JUMP
000005a3: JUMPDEST
000005a4: STOP
000005a5: JUMPDEST
000005a6: CALLVALUE
000005a7: ISZERO
000005a8: PUSH2 0x05ad
000005ab: JUMPI
000005ac: INVALID
000005ad: JUMPDEST
000005ae: PUSH2 0x05b5
000005b1: PUSH2 0x1e5d
000005b4: JUMP
000005b5: JUMPDEST
000005b6: PUSH1 0x40
000005b8: MLOAD
000005b9: DUP1
000005ba: DUP3
000005bb: DUP2
000005bc: MSTORE
000005bd: PUSH1 0x20
000005bf: ADD
000005c0: SWAP2
000005c1: POP
000005c2: POP
000005c3: PUSH1 0x40
000005c5: MLOAD
000005c6: DUP1
000005c7: SWAP2
000005c8: SUB
000005c9: SWAP1
000005ca: RETURN
000005cb: JUMPDEST
000005cc: CALLVALUE
000005cd: ISZERO
000005ce: PUSH2 0x05d3
000005d1: JUMPI
000005d2: INVALID
000005d3: JUMPDEST
000005d4: PUSH2 0x05e9
000005d7: PUSH1 0x04
000005d9: DUP1
000005da: DUP1
000005db: CALLDATALOAD
000005dc: SWAP1
000005dd: PUSH1 0x20
000005df: ADD
000005e0: SWAP1
000005e1: SWAP2
000005e2: SWAP1
000005e3: POP
000005e4: POP
000005e5: PUSH2 0x1e63
000005e8: JUMP
000005e9: JUMPDEST
000005ea: STOP
000005eb: JUMPDEST
000005ec: CALLVALUE
000005ed: ISZERO
000005ee: PUSH2 0x05f3
000005f1: JUMPI
000005f2: INVALID
000005f3: JUMPDEST
000005f4: PUSH2 0x05fb
000005f7: PUSH2 0x1ee5
000005fa: JUMP
000005fb: JUMPDEST
000005fc: PUSH1 0x40
000005fe: MLOAD
000005ff: DUP1
00000600: DUP3
00000601: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000616: AND
00000617: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000062c: AND
0000062d: DUP2
0000062e: MSTORE
0000062f: PUSH1 0x20
00000631: ADD
00000632: SWAP2
00000633: POP
00000634: POP
00000635: PUSH1 0x40
00000637: MLOAD
00000638: DUP1
00000639: SWAP2
0000063a: SUB
0000063b: SWAP1
0000063c: RETURN
0000063d: JUMPDEST
0000063e: CALLVALUE
0000063f: ISZERO
00000640: PUSH2 0x0645
00000643: JUMPI
00000644: INVALID
00000645: JUMPDEST
00000646: PUSH2 0x0721
00000649: PUSH1 0x04
0000064b: DUP1
0000064c: DUP1
0000064d: CALLDATALOAD
0000064e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000663: AND
00000664: SWAP1
00000665: PUSH1 0x20
00000667: ADD
00000668: SWAP1
00000669: SWAP2
0000066a: SWAP1
0000066b: DUP1
0000066c: CALLDATALOAD
0000066d: SWAP1
0000066e: PUSH1 0x20
00000670: ADD
00000671: SWAP1
00000672: SWAP2
00000673: SWAP1
00000674: DUP1
00000675: CALLDATALOAD
00000676: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000068b: AND
0000068c: SWAP1
0000068d: PUSH1 0x20
0000068f: ADD
00000690: SWAP1
00000691: SWAP2
00000692: SWAP1
00000693: DUP1
00000694: CALLDATALOAD
00000695: SWAP1
00000696: PUSH1 0x20
00000698: ADD
00000699: SWAP1
0000069a: SWAP2
0000069b: SWAP1
0000069c: DUP1
0000069d: CALLDATALOAD
0000069e: SWAP1
0000069f: PUSH1 0x20
000006a1: ADD
000006a2: SWAP1
000006a3: SWAP2
000006a4: SWAP1
000006a5: DUP1
000006a6: CALLDATALOAD
000006a7: SWAP1
000006a8: PUSH1 0x20
000006aa: ADD
000006ab: SWAP1
000006ac: SWAP2
000006ad: SWAP1
000006ae: DUP1
000006af: CALLDATALOAD
000006b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006c5: AND
000006c6: SWAP1
000006c7: PUSH1 0x20
000006c9: ADD
000006ca: SWAP1
000006cb: SWAP2
000006cc: SWAP1
000006cd: DUP1
000006ce: CALLDATALOAD
000006cf: PUSH1 0xff
000006d1: AND
000006d2: SWAP1
000006d3: PUSH1 0x20
000006d5: ADD
000006d6: SWAP1
000006d7: SWAP2
000006d8: SWAP1
000006d9: DUP1
000006da: CALLDATALOAD
000006db: PUSH1 0x00
000006dd: NOT
000006de: AND
000006df: SWAP1
000006e0: PUSH1 0x20
000006e2: ADD
000006e3: SWAP1
000006e4: SWAP2
000006e5: SWAP1
000006e6: DUP1
000006e7: CALLDATALOAD
000006e8: PUSH1 0x00
000006ea: NOT
000006eb: AND
000006ec: SWAP1
000006ed: PUSH1 0x20
000006ef: ADD
000006f0: SWAP1
000006f1: SWAP2
000006f2: SWAP1
000006f3: DUP1
000006f4: CALLDATALOAD
000006f5: SWAP1
000006f6: PUSH1 0x20
000006f8: ADD
000006f9: SWAP1
000006fa: SWAP2
000006fb: SWAP1
000006fc: DUP1
000006fd: CALLDATALOAD
000006fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000713: AND
00000714: SWAP1
00000715: PUSH1 0x20
00000717: ADD
00000718: SWAP1
00000719: SWAP2
0000071a: SWAP1
0000071b: POP
0000071c: POP
0000071d: PUSH2 0x1f0b
00000720: JUMP
00000721: JUMPDEST
00000722: PUSH1 0x40
00000724: MLOAD
00000725: DUP1
00000726: DUP3
00000727: ISZERO
00000728: ISZERO
00000729: ISZERO
0000072a: ISZERO
0000072b: DUP2
0000072c: MSTORE
0000072d: PUSH1 0x20
0000072f: ADD
00000730: SWAP2
00000731: POP
00000732: POP
00000733: PUSH1 0x40
00000735: MLOAD
00000736: DUP1
00000737: SWAP2
00000738: SUB
00000739: SWAP1
0000073a: RETURN
0000073b: JUMPDEST
0000073c: CALLVALUE
0000073d: ISZERO
0000073e: PUSH2 0x0743
00000741: JUMPI
00000742: INVALID
00000743: JUMPDEST
00000744: PUSH2 0x076f
00000747: PUSH1 0x04
00000749: DUP1
0000074a: DUP1
0000074b: CALLDATALOAD
0000074c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000761: AND
00000762: SWAP1
00000763: PUSH1 0x20
00000765: ADD
00000766: SWAP1
00000767: SWAP2
00000768: SWAP1
00000769: POP
0000076a: POP
0000076b: PUSH2 0x1fce
0000076e: JUMP
0000076f: JUMPDEST
00000770: STOP
00000771: JUMPDEST
00000772: CALLVALUE
00000773: ISZERO
00000774: PUSH2 0x0779
00000777: JUMPI
00000778: INVALID
00000779: JUMPDEST
0000077a: PUSH2 0x0781
0000077d: PUSH2 0x206f
00000780: JUMP
00000781: JUMPDEST
00000782: PUSH1 0x40
00000784: MLOAD
00000785: DUP1
00000786: DUP3
00000787: DUP2
00000788: MSTORE
00000789: PUSH1 0x20
0000078b: ADD
0000078c: SWAP2
0000078d: POP
0000078e: POP
0000078f: PUSH1 0x40
00000791: MLOAD
00000792: DUP1
00000793: SWAP2
00000794: SUB
00000795: SWAP1
00000796: RETURN
00000797: JUMPDEST
00000798: CALLVALUE
00000799: ISZERO
0000079a: PUSH2 0x079f
0000079d: JUMPI
0000079e: INVALID
0000079f: JUMPDEST
000007a0: PUSH2 0x07b5
000007a3: PUSH1 0x04
000007a5: DUP1
000007a6: DUP1
000007a7: CALLDATALOAD
000007a8: SWAP1
000007a9: PUSH1 0x20
000007ab: ADD
000007ac: SWAP1
000007ad: SWAP2
000007ae: SWAP1
000007af: POP
000007b0: POP
000007b1: PUSH2 0x2075
000007b4: JUMP
000007b5: JUMPDEST
000007b6: STOP
000007b7: JUMPDEST
000007b8: CALLVALUE
000007b9: ISZERO
000007ba: PUSH2 0x07bf
000007bd: JUMPI
000007be: INVALID
000007bf: JUMPDEST
000007c0: PUSH2 0x07eb
000007c3: PUSH1 0x04
000007c5: DUP1
000007c6: DUP1
000007c7: CALLDATALOAD
000007c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007dd: AND
000007de: SWAP1
000007df: PUSH1 0x20
000007e1: ADD
000007e2: SWAP1
000007e3: SWAP2
000007e4: SWAP1
000007e5: POP
000007e6: POP
000007e7: PUSH2 0x20f7
000007ea: JUMP
000007eb: JUMPDEST
000007ec: STOP
000007ed: JUMPDEST
000007ee: CALLVALUE
000007ef: ISZERO
000007f0: PUSH2 0x07f5
000007f3: JUMPI
000007f4: INVALID
000007f5: JUMPDEST
000007f6: PUSH2 0x082a
000007f9: PUSH1 0x04
000007fb: DUP1
000007fc: DUP1
000007fd: CALLDATALOAD
000007fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000813: AND
00000814: SWAP1
00000815: PUSH1 0x20
00000817: ADD
00000818: SWAP1
00000819: SWAP2
0000081a: SWAP1
0000081b: DUP1
0000081c: CALLDATALOAD
0000081d: SWAP1
0000081e: PUSH1 0x20
00000820: ADD
00000821: SWAP1
00000822: SWAP2
00000823: SWAP1
00000824: POP
00000825: POP
00000826: PUSH2 0x2198
00000829: JUMP
0000082a: JUMPDEST
0000082b: STOP
0000082c: JUMPDEST
0000082d: CALLVALUE
0000082e: ISZERO
0000082f: PUSH2 0x0834
00000832: JUMPI
00000833: INVALID
00000834: JUMPDEST
00000835: PUSH2 0x086d
00000838: PUSH1 0x04
0000083a: DUP1
0000083b: DUP1
0000083c: CALLDATALOAD
0000083d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000852: AND
00000853: SWAP1
00000854: PUSH1 0x20
00000856: ADD
00000857: SWAP1
00000858: SWAP2
00000859: SWAP1
0000085a: DUP1
0000085b: CALLDATALOAD
0000085c: PUSH1 0x00
0000085e: NOT
0000085f: AND
00000860: SWAP1
00000861: PUSH1 0x20
00000863: ADD
00000864: SWAP1
00000865: SWAP2
00000866: SWAP1
00000867: POP
00000868: POP
00000869: PUSH2 0x253d
0000086c: JUMP
0000086d: JUMPDEST
0000086e: PUSH1 0x40
00000870: MLOAD
00000871: DUP1
00000872: DUP3
00000873: ISZERO
00000874: ISZERO
00000875: ISZERO
00000876: ISZERO
00000877: DUP2
00000878: MSTORE
00000879: PUSH1 0x20
0000087b: ADD
0000087c: SWAP2
0000087d: POP
0000087e: POP
0000087f: PUSH1 0x40
00000881: MLOAD
00000882: DUP1
00000883: SWAP2
00000884: SUB
00000885: SWAP1
00000886: RETURN
00000887: JUMPDEST
00000888: CALLVALUE
00000889: ISZERO
0000088a: PUSH2 0x088f
0000088d: JUMPI
0000088e: INVALID
0000088f: JUMPDEST
00000890: PUSH2 0x0897
00000893: PUSH2 0x256c
00000896: JUMP
00000897: JUMPDEST
00000898: PUSH1 0x40
0000089a: MLOAD
0000089b: DUP1
0000089c: DUP3
0000089d: DUP2
0000089e: MSTORE
0000089f: PUSH1 0x20
000008a1: ADD
000008a2: SWAP2
000008a3: POP
000008a4: POP
000008a5: PUSH1 0x40
000008a7: MLOAD
000008a8: DUP1
000008a9: SWAP2
000008aa: SUB
000008ab: SWAP1
000008ac: RETURN
000008ad: JUMPDEST
000008ae: PUSH2 0x08b5
000008b1: PUSH2 0x2572
000008b4: JUMP
000008b5: JUMPDEST
000008b6: STOP
000008b7: JUMPDEST
000008b8: CALLVALUE
000008b9: ISZERO
000008ba: PUSH2 0x08bf
000008bd: JUMPI
000008be: INVALID
000008bf: JUMPDEST
000008c0: PUSH2 0x08eb
000008c3: PUSH1 0x04
000008c5: DUP1
000008c6: DUP1
000008c7: CALLDATALOAD
000008c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008dd: AND
000008de: SWAP1
000008df: PUSH1 0x20
000008e1: ADD
000008e2: SWAP1
000008e3: SWAP2
000008e4: SWAP1
000008e5: POP
000008e6: POP
000008e7: PUSH2 0x274a
000008ea: JUMP
000008eb: JUMPDEST
000008ec: STOP
000008ed: JUMPDEST
000008ee: CALLVALUE
000008ef: ISZERO
000008f0: PUSH2 0x08f5
000008f3: JUMPI
000008f4: INVALID
000008f5: JUMPDEST
000008f6: PUSH2 0x0940
000008f9: PUSH1 0x04
000008fb: DUP1
000008fc: DUP1
000008fd: CALLDATALOAD
000008fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000913: AND
00000914: SWAP1
00000915: PUSH1 0x20
00000917: ADD
00000918: SWAP1
00000919: SWAP2
0000091a: SWAP1
0000091b: DUP1
0000091c: CALLDATALOAD
0000091d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000932: AND
00000933: SWAP1
00000934: PUSH1 0x20
00000936: ADD
00000937: SWAP1
00000938: SWAP2
00000939: SWAP1
0000093a: POP
0000093b: POP
0000093c: PUSH2 0x2802
0000093f: JUMP
00000940: JUMPDEST
00000941: PUSH1 0x40
00000943: MLOAD
00000944: DUP1
00000945: DUP3
00000946: DUP2
00000947: MSTORE
00000948: PUSH1 0x20
0000094a: ADD
0000094b: SWAP2
0000094c: POP
0000094d: POP
0000094e: PUSH1 0x40
00000950: MLOAD
00000951: DUP1
00000952: SWAP2
00000953: SUB
00000954: SWAP1
00000955: RETURN
00000956: JUMPDEST
00000957: CALLVALUE
00000958: ISZERO
00000959: PUSH2 0x095e
0000095c: JUMPI
0000095d: INVALID
0000095e: JUMPDEST
0000095f: PUSH2 0x0966
00000962: PUSH2 0x288a
00000965: JUMP
00000966: JUMPDEST
00000967: PUSH1 0x40
00000969: MLOAD
0000096a: DUP1
0000096b: DUP3
0000096c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000981: AND
00000982: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000997: AND
00000998: DUP2
00000999: MSTORE
0000099a: PUSH1 0x20
0000099c: ADD
0000099d: SWAP2
0000099e: POP
0000099f: POP
000009a0: PUSH1 0x40
000009a2: MLOAD
000009a3: DUP1
000009a4: SWAP2
000009a5: SUB
000009a6: SWAP1
000009a7: RETURN
000009a8: JUMPDEST
000009a9: CALLVALUE
000009aa: ISZERO
000009ab: PUSH2 0x09b0
000009ae: JUMPI
000009af: INVALID
000009b0: JUMPDEST
000009b1: PUSH2 0x0a64
000009b4: PUSH1 0x04
000009b6: DUP1
000009b7: DUP1
000009b8: CALLDATALOAD
000009b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ce: AND
000009cf: SWAP1
000009d0: PUSH1 0x20
000009d2: ADD
000009d3: SWAP1
000009d4: SWAP2
000009d5: SWAP1
000009d6: DUP1
000009d7: CALLDATALOAD
000009d8: SWAP1
000009d9: PUSH1 0x20
000009db: ADD
000009dc: SWAP1
000009dd: SWAP2
000009de: SWAP1
000009df: DUP1
000009e0: CALLDATALOAD
000009e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009f6: AND
000009f7: SWAP1
000009f8: PUSH1 0x20
000009fa: ADD
000009fb: SWAP1
000009fc: SWAP2
000009fd: SWAP1
000009fe: DUP1
000009ff: CALLDATALOAD
00000a00: SWAP1
00000a01: PUSH1 0x20
00000a03: ADD
00000a04: SWAP1
00000a05: SWAP2
00000a06: SWAP1
00000a07: DUP1
00000a08: CALLDATALOAD
00000a09: SWAP1
00000a0a: PUSH1 0x20
00000a0c: ADD
00000a0d: SWAP1
00000a0e: SWAP2
00000a0f: SWAP1
00000a10: DUP1
00000a11: CALLDATALOAD
00000a12: SWAP1
00000a13: PUSH1 0x20
00000a15: ADD
00000a16: SWAP1
00000a17: SWAP2
00000a18: SWAP1
00000a19: DUP1
00000a1a: CALLDATALOAD
00000a1b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a30: AND
00000a31: SWAP1
00000a32: PUSH1 0x20
00000a34: ADD
00000a35: SWAP1
00000a36: SWAP2
00000a37: SWAP1
00000a38: DUP1
00000a39: CALLDATALOAD
00000a3a: PUSH1 0xff
00000a3c: AND
00000a3d: SWAP1
00000a3e: PUSH1 0x20
00000a40: ADD
00000a41: SWAP1
00000a42: SWAP2
00000a43: SWAP1
00000a44: DUP1
00000a45: CALLDATALOAD
00000a46: PUSH1 0x00
00000a48: NOT
00000a49: AND
00000a4a: SWAP1
00000a4b: PUSH1 0x20
00000a4d: ADD
00000a4e: SWAP1
00000a4f: SWAP2
00000a50: SWAP1
00000a51: DUP1
00000a52: CALLDATALOAD
00000a53: PUSH1 0x00
00000a55: NOT
00000a56: AND
00000a57: SWAP1
00000a58: PUSH1 0x20
00000a5a: ADD
00000a5b: SWAP1
00000a5c: SWAP2
00000a5d: SWAP1
00000a5e: POP
00000a5f: POP
00000a60: PUSH2 0x28b0
00000a63: JUMP
00000a64: JUMPDEST
00000a65: PUSH1 0x40
00000a67: MLOAD
00000a68: DUP1
00000a69: DUP3
00000a6a: DUP2
00000a6b: MSTORE
00000a6c: PUSH1 0x20
00000a6e: ADD
00000a6f: SWAP2
00000a70: POP
00000a71: POP
00000a72: PUSH1 0x40
00000a74: MLOAD
00000a75: DUP1
00000a76: SWAP2
00000a77: SUB
00000a78: SWAP1
00000a79: RETURN
00000a7a: JUMPDEST
00000a7b: PUSH1 0x00
00000a7d: PUSH1 0x02
00000a7f: ADDRESS
00000a80: DUP14
00000a81: DUP14
00000a82: DUP14
00000a83: DUP14
00000a84: DUP14
00000a85: DUP14
00000a86: PUSH1 0x00
00000a88: PUSH1 0x40
00000a8a: MLOAD
00000a8b: PUSH1 0x20
00000a8d: ADD
00000a8e: MSTORE
00000a8f: PUSH1 0x40
00000a91: MLOAD
00000a92: DUP1
00000a93: DUP9
00000a94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aa9: AND
00000aaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000abf: AND
00000ac0: PUSH13 0x01000000000000000000000000
00000ace: MUL
00000acf: DUP2
00000ad0: MSTORE
00000ad1: PUSH1 0x14
00000ad3: ADD
00000ad4: DUP8
00000ad5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aea: AND
00000aeb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b00: AND
00000b01: PUSH13 0x01000000000000000000000000
00000b0f: MUL
00000b10: DUP2
00000b11: MSTORE
00000b12: PUSH1 0x14
00000b14: ADD
00000b15: DUP7
00000b16: DUP2
00000b17: MSTORE
00000b18: PUSH1 0x20
00000b1a: ADD
00000b1b: DUP6
00000b1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b31: AND
00000b32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b47: AND
00000b48: PUSH13 0x01000000000000000000000000
00000b56: MUL
00000b57: DUP2
00000b58: MSTORE
00000b59: PUSH1 0x14
00000b5b: ADD
00000b5c: DUP5
00000b5d: DUP2
00000b5e: MSTORE
00000b5f: PUSH1 0x20
00000b61: ADD
00000b62: DUP4
00000b63: DUP2
00000b64: MSTORE
00000b65: PUSH1 0x20
00000b67: ADD
00000b68: DUP3
00000b69: DUP2
00000b6a: MSTORE
00000b6b: PUSH1 0x20
00000b6d: ADD
00000b6e: SWAP8
00000b6f: POP
00000b70: POP
00000b71: POP
00000b72: POP
00000b73: POP
00000b74: POP
00000b75: POP
00000b76: POP
00000b77: PUSH1 0x20
00000b79: PUSH1 0x40
00000b7b: MLOAD
00000b7c: DUP1
00000b7d: DUP4
00000b7e: SUB
00000b7f: DUP2
00000b80: PUSH1 0x00
00000b82: DUP7
00000b83: PUSH2 0x61da
00000b86: GAS
00000b87: SUB
00000b88: CALL
00000b89: ISZERO
00000b8a: ISZERO
00000b8b: PUSH2 0x0b90
00000b8e: JUMPI
00000b8f: INVALID
00000b90: JUMPDEST
00000b91: POP
00000b92: POP
00000b93: PUSH1 0x40
00000b95: MLOAD
00000b96: DUP1
00000b97: MLOAD
00000b98: SWAP1
00000b99: POP
00000b9a: SWAP1
00000b9b: POP
00000b9c: PUSH1 0x06
00000b9e: PUSH1 0x00
00000ba0: DUP8
00000ba1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bb6: AND
00000bb7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bcc: AND
00000bcd: DUP2
00000bce: MSTORE
00000bcf: PUSH1 0x20
00000bd1: ADD
00000bd2: SWAP1
00000bd3: DUP2
00000bd4: MSTORE
00000bd5: PUSH1 0x20
00000bd7: ADD
00000bd8: PUSH1 0x00
00000bda: KECCAK256
00000bdb: PUSH1 0x00
00000bdd: DUP3
00000bde: PUSH1 0x00
00000be0: NOT
00000be1: AND
00000be2: PUSH1 0x00
00000be4: NOT
00000be5: AND
00000be6: DUP2
00000be7: MSTORE
00000be8: PUSH1 0x20
00000bea: ADD
00000beb: SWAP1
00000bec: DUP2
00000bed: MSTORE
00000bee: PUSH1 0x20
00000bf0: ADD
00000bf1: PUSH1 0x00
00000bf3: KECCAK256
00000bf4: PUSH1 0x00
00000bf6: SWAP1
00000bf7: SLOAD
00000bf8: SWAP1
00000bf9: PUSH2 0x0100
00000bfc: EXP
00000bfd: SWAP1
00000bfe: DIV
00000bff: PUSH1 0xff
00000c01: AND
00000c02: DUP1
00000c03: PUSH2 0x0cff
00000c06: JUMPI
00000c07: POP
00000c08: DUP6
00000c09: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c1e: AND
00000c1f: PUSH1 0x01
00000c21: DUP3
00000c22: PUSH1 0x40
00000c24: MLOAD
00000c25: DUP1
00000c26: DUP1
00000c27: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000
00000c48: DUP2
00000c49: MSTORE
00000c4a: POP
00000c4b: PUSH1 0x1c
00000c4d: ADD
00000c4e: DUP3
00000c4f: PUSH1 0x00
00000c51: NOT
00000c52: AND
00000c53: PUSH1 0x00
00000c55: NOT
00000c56: AND
00000c57: DUP2
00000c58: MSTORE
00000c59: PUSH1 0x20
00000c5b: ADD
00000c5c: SWAP2
00000c5d: POP
00000c5e: POP
00000c5f: PUSH1 0x40
00000c61: MLOAD
00000c62: DUP1
00000c63: SWAP2
00000c64: SUB
00000c65: SWAP1
00000c66: KECCAK256
00000c67: DUP8
00000c68: DUP8
00000c69: DUP8
00000c6a: PUSH1 0x40
00000c6c: MLOAD
00000c6d: DUP1
00000c6e: PUSH1 0x00
00000c70: MSTORE
00000c71: PUSH1 0x20
00000c73: ADD
00000c74: PUSH1 0x40
00000c76: MSTORE
00000c77: PUSH1 0x00
00000c79: PUSH1 0x40
00000c7b: MLOAD
00000c7c: PUSH1 0x20
00000c7e: ADD
00000c7f: MSTORE
00000c80: PUSH1 0x40
00000c82: MLOAD
00000c83: DUP1
00000c84: DUP6
00000c85: PUSH1 0x00
00000c87: NOT
00000c88: AND
00000c89: PUSH1 0x00
00000c8b: NOT
00000c8c: AND
00000c8d: DUP2
00000c8e: MSTORE
00000c8f: PUSH1 0x20
00000c91: ADD
00000c92: DUP5
00000c93: PUSH1 0xff
00000c95: AND
00000c96: PUSH1 0xff
00000c98: AND
00000c99: DUP2
00000c9a: MSTORE
00000c9b: PUSH1 0x20
00000c9d: ADD
00000c9e: DUP4
00000c9f: PUSH1 0x00
00000ca1: NOT
00000ca2: AND
00000ca3: PUSH1 0x00
00000ca5: NOT
00000ca6: AND
00000ca7: DUP2
00000ca8: MSTORE
00000ca9: PUSH1 0x20
00000cab: ADD
00000cac: DUP3
00000cad: PUSH1 0x00
00000caf: NOT
00000cb0: AND
00000cb1: PUSH1 0x00
00000cb3: NOT
00000cb4: AND
00000cb5: DUP2
00000cb6: MSTORE
00000cb7: PUSH1 0x20
00000cb9: ADD
00000cba: SWAP5
00000cbb: POP
00000cbc: POP
00000cbd: POP
00000cbe: POP
00000cbf: POP
00000cc0: PUSH1 0x20
00000cc2: PUSH1 0x40
00000cc4: MLOAD
00000cc5: PUSH1 0x20
00000cc7: DUP2
00000cc8: SUB
00000cc9: SWAP1
00000cca: DUP1
00000ccb: DUP5
00000ccc: SUB
00000ccd: SWAP1
00000cce: PUSH1 0x00
00000cd0: DUP7
00000cd1: PUSH2 0x61da
00000cd4: GAS
00000cd5: SUB
00000cd6: CALL
00000cd7: ISZERO
00000cd8: ISZERO
00000cd9: PUSH2 0x0cde
00000cdc: JUMPI
00000cdd: INVALID
00000cde: JUMPDEST
00000cdf: POP
00000ce0: POP
00000ce1: PUSH1 0x20
00000ce3: PUSH1 0x40
00000ce5: MLOAD
00000ce6: SUB
00000ce7: MLOAD
00000ce8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cfd: AND
00000cfe: EQ
00000cff: JUMPDEST
00000d00: DUP1
00000d01: ISZERO
00000d02: PUSH2 0x0d0b
00000d05: JUMPI
00000d06: POP
00000d07: DUP8
00000d08: NUMBER
00000d09: GT
00000d0a: ISZERO
00000d0b: JUMPDEST
00000d0c: DUP1
00000d0d: ISZERO
00000d0e: PUSH2 0x0d78
00000d11: JUMPI
00000d12: POP
00000d13: DUP11
00000d14: PUSH2 0x0d75
00000d17: PUSH1 0x07
00000d19: PUSH1 0x00
00000d1b: DUP10
00000d1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d31: AND
00000d32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d47: AND
00000d48: DUP2
00000d49: MSTORE
00000d4a: PUSH1 0x20
00000d4c: ADD
00000d4d: SWAP1
00000d4e: DUP2
00000d4f: MSTORE
00000d50: PUSH1 0x20
00000d52: ADD
00000d53: PUSH1 0x00
00000d55: KECCAK256
00000d56: PUSH1 0x00
00000d58: DUP5
00000d59: PUSH1 0x00
00000d5b: NOT
00000d5c: AND
00000d5d: PUSH1 0x00
00000d5f: NOT
00000d60: AND
00000d61: DUP2
00000d62: MSTORE
00000d63: PUSH1 0x20
00000d65: ADD
00000d66: SWAP1
00000d67: DUP2
00000d68: MSTORE
00000d69: PUSH1 0x20
00000d6b: ADD
00000d6c: PUSH1 0x00
00000d6e: KECCAK256
00000d6f: SLOAD
00000d70: DUP5
00000d71: PUSH2 0x2c72
00000d74: JUMP
00000d75: JUMPDEST
00000d76: GT
00000d77: ISZERO
00000d78: JUMPDEST
00000d79: ISZERO
00000d7a: ISZERO
00000d7b: PUSH2 0x0d83
00000d7e: JUMPI
00000d7f: PUSH2 0x0000
00000d82: JUMP
00000d83: JUMPDEST
00000d84: PUSH2 0x0d91
00000d87: DUP13
00000d88: DUP13
00000d89: DUP13
00000d8a: DUP13
00000d8b: DUP11
00000d8c: DUP8
00000d8d: PUSH2 0x2c9e
00000d90: JUMP
00000d91: JUMPDEST
00000d92: PUSH2 0x0df3
00000d95: PUSH1 0x07
00000d97: PUSH1 0x00
00000d99: DUP9
00000d9a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000daf: AND
00000db0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dc5: AND
00000dc6: DUP2
00000dc7: MSTORE
00000dc8: PUSH1 0x20
00000dca: ADD
00000dcb: SWAP1
00000dcc: DUP2
00000dcd: MSTORE
00000dce: PUSH1 0x20
00000dd0: ADD
00000dd1: PUSH1 0x00
00000dd3: KECCAK256
00000dd4: PUSH1 0x00
00000dd6: DUP4
00000dd7: PUSH1 0x00
00000dd9: NOT
00000dda: AND
00000ddb: PUSH1 0x00
00000ddd: NOT
00000dde: AND
00000ddf: DUP2
00000de0: MSTORE
00000de1: PUSH1 0x20
00000de3: ADD
00000de4: SWAP1
00000de5: DUP2
00000de6: MSTORE
00000de7: PUSH1 0x20
00000de9: ADD
00000dea: PUSH1 0x00
00000dec: KECCAK256
00000ded: SLOAD
00000dee: DUP4
00000def: PUSH2 0x2c72
00000df2: JUMP
00000df3: JUMPDEST
00000df4: PUSH1 0x07
00000df6: PUSH1 0x00
00000df8: DUP9
00000df9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e0e: AND
00000e0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e24: AND
00000e25: DUP2
00000e26: MSTORE
00000e27: PUSH1 0x20
00000e29: ADD
00000e2a: SWAP1
00000e2b: DUP2
00000e2c: MSTORE
00000e2d: PUSH1 0x20
00000e2f: ADD
00000e30: PUSH1 0x00
00000e32: KECCAK256
00000e33: PUSH1 0x00
00000e35: DUP4
00000e36: PUSH1 0x00
00000e38: NOT
00000e39: AND
00000e3a: PUSH1 0x00
00000e3c: NOT
00000e3d: AND
00000e3e: DUP2
00000e3f: MSTORE
00000e40: PUSH1 0x20
00000e42: ADD
00000e43: SWAP1
00000e44: DUP2
00000e45: MSTORE
00000e46: PUSH1 0x20
00000e48: ADD
00000e49: PUSH1 0x00
00000e4b: KECCAK256
00000e4c: DUP2
00000e4d: SWAP1
00000e4e: SSTORE
00000e4f: POP
00000e50: PUSH32 0x6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d
00000e71: DUP13
00000e72: DUP4
00000e73: DUP13
00000e74: DUP15
00000e75: DUP7
00000e76: DUP15
00000e77: MUL
00000e78: DUP2
00000e79: ISZERO
00000e7a: ISZERO
00000e7b: PUSH2 0x0e80
00000e7e: JUMPI
00000e7f: INVALID
00000e80: JUMPDEST
00000e81: DIV
00000e82: DUP11
00000e83: CALLER
00000e84: PUSH1 0x40
00000e86: MLOAD
00000e87: DUP1
00000e88: DUP8
00000e89: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e9e: AND
00000e9f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eb4: AND
00000eb5: DUP2
00000eb6: MSTORE
00000eb7: PUSH1 0x20
00000eb9: ADD
00000eba: DUP7
00000ebb: DUP2
00000ebc: MSTORE
00000ebd: PUSH1 0x20
00000ebf: ADD
00000ec0: DUP6
00000ec1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ed6: AND
00000ed7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eec: AND
00000eed: DUP2
00000eee: MSTORE
00000eef: PUSH1 0x20
00000ef1: ADD
00000ef2: DUP5
00000ef3: DUP2
00000ef4: MSTORE
00000ef5: PUSH1 0x20
00000ef7: ADD
00000ef8: DUP4
00000ef9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f0e: AND
00000f0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f24: AND
00000f25: DUP2
00000f26: MSTORE
00000f27: PUSH1 0x20
00000f29: ADD
00000f2a: DUP3
00000f2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f40: AND
00000f41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f56: AND
00000f57: DUP2
00000f58: MSTORE
00000f59: PUSH1 0x20
00000f5b: ADD
00000f5c: SWAP7
00000f5d: POP
00000f5e: POP
00000f5f: POP
00000f60: POP
00000f61: POP
00000f62: POP
00000f63: POP
00000f64: PUSH1 0x40
00000f66: MLOAD
00000f67: DUP1
00000f68: SWAP2
00000f69: SUB
00000f6a: SWAP1
00000f6b: LOG1
00000f6c: JUMPDEST
00000f6d: POP
00000f6e: POP
00000f6f: POP
00000f70: POP
00000f71: POP
00000f72: POP
00000f73: POP
00000f74: POP
00000f75: POP
00000f76: POP
00000f77: POP
00000f78: POP
00000f79: JUMP
00000f7a: JUMPDEST
00000f7b: PUSH1 0x00
00000f7d: PUSH1 0x02
00000f7f: ADDRESS
00000f80: DUP9
00000f81: DUP9
00000f82: DUP9
00000f83: DUP9
00000f84: DUP9
00000f85: DUP9
00000f86: PUSH1 0x00
00000f88: PUSH1 0x40
00000f8a: MLOAD
00000f8b: PUSH1 0x20
00000f8d: ADD
00000f8e: MSTORE
00000f8f: PUSH1 0x40
00000f91: MLOAD
00000f92: DUP1
00000f93: DUP9
00000f94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fa9: AND
00000faa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fbf: AND
00000fc0: PUSH13 0x01000000000000000000000000
00000fce: MUL
00000fcf: DUP2
00000fd0: MSTORE
00000fd1: PUSH1 0x14
00000fd3: ADD
00000fd4: DUP8
00000fd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fea: AND
00000feb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001000: AND
00001001: PUSH13 0x01000000000000000000000000
0000100f: MUL
00001010: DUP2
00001011: MSTORE
00001012: PUSH1 0x14
00001014: ADD
00001015: DUP7
00001016: DUP2
00001017: MSTORE
00001018: PUSH1 0x20
0000101a: ADD
0000101b: DUP6
0000101c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001031: AND
00001032: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001047: AND
00001048: PUSH13 0x01000000000000000000000000
00001056: MUL
00001057: DUP2
00001058: MSTORE
00001059: PUSH1 0x14
0000105b: ADD
0000105c: DUP5
0000105d: DUP2
0000105e: MSTORE
0000105f: PUSH1 0x20
00001061: ADD
00001062: DUP4
00001063: DUP2
00001064: MSTORE
00001065: PUSH1 0x20
00001067: ADD
00001068: DUP3
00001069: DUP2
0000106a: MSTORE
0000106b: PUSH1 0x20
0000106d: ADD
0000106e: SWAP8
0000106f: POP
00001070: POP
00001071: POP
00001072: POP
00001073: POP
00001074: POP
00001075: POP
00001076: POP
00001077: PUSH1 0x20
00001079: PUSH1 0x40
0000107b: MLOAD
0000107c: DUP1
0000107d: DUP4
0000107e: SUB
0000107f: DUP2
00001080: PUSH1 0x00
00001082: DUP7
00001083: PUSH2 0x61da
00001086: GAS
00001087: SUB
00001088: CALL
00001089: ISZERO
0000108a: ISZERO
0000108b: PUSH2 0x1090
0000108e: JUMPI
0000108f: INVALID
00001090: JUMPDEST
00001091: POP
00001092: POP
00001093: PUSH1 0x40
00001095: MLOAD
00001096: DUP1
00001097: MLOAD
00001098: SWAP1
00001099: POP
0000109a: SWAP1
0000109b: POP
0000109c: PUSH1 0x01
0000109e: PUSH1 0x06
000010a0: PUSH1 0x00
000010a2: CALLER
000010a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010b8: AND
000010b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010ce: AND
000010cf: DUP2
000010d0: MSTORE
000010d1: PUSH1 0x20
000010d3: ADD
000010d4: SWAP1
000010d5: DUP2
000010d6: MSTORE
000010d7: PUSH1 0x20
000010d9: ADD
000010da: PUSH1 0x00
000010dc: KECCAK256
000010dd: PUSH1 0x00
000010df: DUP4
000010e0: PUSH1 0x00
000010e2: NOT
000010e3: AND
000010e4: PUSH1 0x00
000010e6: NOT
000010e7: AND
000010e8: DUP2
000010e9: MSTORE
000010ea: PUSH1 0x20
000010ec: ADD
000010ed: SWAP1
000010ee: DUP2
000010ef: MSTORE
000010f0: PUSH1 0x20
000010f2: ADD
000010f3: PUSH1 0x00
000010f5: KECCAK256
000010f6: PUSH1 0x00
000010f8: PUSH2 0x0100
000010fb: EXP
000010fc: DUP2
000010fd: SLOAD
000010fe: DUP2
000010ff: PUSH1 0xff
00001101: MUL
00001102: NOT
00001103: AND
00001104: SWAP1
00001105: DUP4
00001106: ISZERO
00001107: ISZERO
00001108: MUL
00001109: OR
0000110a: SWAP1
0000110b: SSTORE
0000110c: POP
0000110d: PUSH32 0x3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e85
0000112e: DUP8
0000112f: DUP8
00001130: DUP8
00001131: DUP8
00001132: DUP8
00001133: DUP8
00001134: CALLER
00001135: PUSH1 0x40
00001137: MLOAD
00001138: DUP1
00001139: DUP9
0000113a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000114f: AND
00001150: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001165: AND
00001166: DUP2
00001167: MSTORE
00001168: PUSH1 0x20
0000116a: ADD
0000116b: DUP8
0000116c: DUP2
0000116d: MSTORE
0000116e: PUSH1 0x20
00001170: ADD
00001171: DUP7
00001172: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001187: AND
00001188: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000119d: AND
0000119e: DUP2
0000119f: MSTORE
000011a0: PUSH1 0x20
000011a2: ADD
000011a3: DUP6
000011a4: DUP2
000011a5: MSTORE
000011a6: PUSH1 0x20
000011a8: ADD
000011a9: DUP5
000011aa: DUP2
000011ab: MSTORE
000011ac: PUSH1 0x20
000011ae: ADD
000011af: DUP4
000011b0: DUP2
000011b1: MSTORE
000011b2: PUSH1 0x20
000011b4: ADD
000011b5: DUP3
000011b6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011cb: AND
000011cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011e1: AND
000011e2: DUP2
000011e3: MSTORE
000011e4: PUSH1 0x20
000011e6: ADD
000011e7: SWAP8
000011e8: POP
000011e9: POP
000011ea: POP
000011eb: POP
000011ec: POP
000011ed: POP
000011ee: POP
000011ef: POP
000011f0: PUSH1 0x40
000011f2: MLOAD
000011f3: DUP1
000011f4: SWAP2
000011f5: SUB
000011f6: SWAP1
000011f7: LOG1
000011f8: JUMPDEST
000011f9: POP
000011fa: POP
000011fb: POP
000011fc: POP
000011fd: POP
000011fe: POP
000011ff: POP
00001200: JUMP
00001201: JUMPDEST
00001202: PUSH1 0x08
00001204: PUSH1 0x20
00001206: MSTORE
00001207: DUP1
00001208: PUSH1 0x00
0000120a: MSTORE
0000120b: PUSH1 0x40
0000120d: PUSH1 0x00
0000120f: KECCAK256
00001210: PUSH1 0x00
00001212: SWAP2
00001213: POP
00001214: SLOAD
00001215: SWAP1
00001216: PUSH2 0x0100
00001219: EXP
0000121a: SWAP1
0000121b: DIV
0000121c: PUSH1 0xff
0000121e: AND
0000121f: DUP2
00001220: JUMP
00001221: JUMPDEST
00001222: PUSH1 0x07
00001224: PUSH1 0x20
00001226: MSTORE
00001227: DUP2
00001228: PUSH1 0x00
0000122a: MSTORE
0000122b: PUSH1 0x40
0000122d: PUSH1 0x00
0000122f: KECCAK256
00001230: PUSH1 0x20
00001232: MSTORE
00001233: DUP1
00001234: PUSH1 0x00
00001236: MSTORE
00001237: PUSH1 0x40
00001239: PUSH1 0x00
0000123b: KECCAK256
0000123c: PUSH1 0x00
0000123e: SWAP2
0000123f: POP
00001240: SWAP2
00001241: POP
00001242: POP
00001243: SLOAD
00001244: DUP2
00001245: JUMP
00001246: JUMPDEST
00001247: PUSH1 0x00
00001249: PUSH1 0x02
0000124b: ADDRESS
0000124c: DUP12
0000124d: DUP12
0000124e: DUP12
0000124f: DUP12
00001250: DUP12
00001251: DUP12
00001252: PUSH1 0x00
00001254: PUSH1 0x40
00001256: MLOAD
00001257: PUSH1 0x20
00001259: ADD
0000125a: MSTORE
0000125b: PUSH1 0x40
0000125d: MLOAD
0000125e: DUP1
0000125f: DUP9
00001260: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001275: AND
00001276: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000128b: AND
0000128c: PUSH13 0x01000000000000000000000000
0000129a: MUL
0000129b: DUP2
0000129c: MSTORE
0000129d: PUSH1 0x14
0000129f: ADD
000012a0: DUP8
000012a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012b6: AND
000012b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012cc: AND
000012cd: PUSH13 0x01000000000000000000000000
000012db: MUL
000012dc: DUP2
000012dd: MSTORE
000012de: PUSH1 0x14
000012e0: ADD
000012e1: DUP7
000012e2: DUP2
000012e3: MSTORE
000012e4: PUSH1 0x20
000012e6: ADD
000012e7: DUP6
000012e8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012fd: AND
000012fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001313: AND
00001314: PUSH13 0x01000000000000000000000000
00001322: MUL
00001323: DUP2
00001324: MSTORE
00001325: PUSH1 0x14
00001327: ADD
00001328: DUP5
00001329: DUP2
0000132a: MSTORE
0000132b: PUSH1 0x20
0000132d: ADD
0000132e: DUP4
0000132f: DUP2
00001330: MSTORE
00001331: PUSH1 0x20
00001333: ADD
00001334: DUP3
00001335: DUP2
00001336: MSTORE
00001337: PUSH1 0x20
00001339: ADD
0000133a: SWAP8
0000133b: POP
0000133c: POP
0000133d: POP
0000133e: POP
0000133f: POP
00001340: POP
00001341: POP
00001342: POP
00001343: PUSH1 0x20
00001345: PUSH1 0x40
00001347: MLOAD
00001348: DUP1
00001349: DUP4
0000134a: SUB
0000134b: DUP2
0000134c: PUSH1 0x00
0000134e: DUP7
0000134f: PUSH2 0x61da
00001352: GAS
00001353: SUB
00001354: CALL
00001355: ISZERO
00001356: ISZERO
00001357: PUSH2 0x135c
0000135a: JUMPI
0000135b: INVALID
0000135c: JUMPDEST
0000135d: POP
0000135e: POP
0000135f: PUSH1 0x40
00001361: MLOAD
00001362: DUP1
00001363: MLOAD
00001364: SWAP1
00001365: POP
00001366: SWAP1
00001367: POP
00001368: PUSH1 0x06
0000136a: PUSH1 0x00
0000136c: CALLER
0000136d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001382: AND
00001383: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001398: AND
00001399: DUP2
0000139a: MSTORE
0000139b: PUSH1 0x20
0000139d: ADD
0000139e: SWAP1
0000139f: DUP2
000013a0: MSTORE
000013a1: PUSH1 0x20
000013a3: ADD
000013a4: PUSH1 0x00
000013a6: KECCAK256
000013a7: PUSH1 0x00
000013a9: DUP3
000013aa: PUSH1 0x00
000013ac: NOT
000013ad: AND
000013ae: PUSH1 0x00
000013b0: NOT
000013b1: AND
000013b2: DUP2
000013b3: MSTORE
000013b4: PUSH1 0x20
000013b6: ADD
000013b7: SWAP1
000013b8: DUP2
000013b9: MSTORE
000013ba: PUSH1 0x20
000013bc: ADD
000013bd: PUSH1 0x00
000013bf: KECCAK256
000013c0: PUSH1 0x00
000013c2: SWAP1
000013c3: SLOAD
000013c4: SWAP1
000013c5: PUSH2 0x0100
000013c8: EXP
000013c9: SWAP1
000013ca: DIV
000013cb: PUSH1 0xff
000013cd: AND
000013ce: DUP1
000013cf: PUSH2 0x14cb
000013d2: JUMPI
000013d3: POP
000013d4: CALLER
000013d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013ea: AND
000013eb: PUSH1 0x01
000013ed: DUP3
000013ee: PUSH1 0x40
000013f0: MLOAD
000013f1: DUP1
000013f2: DUP1
000013f3: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000
00001414: DUP2
00001415: MSTORE
00001416: POP
00001417: PUSH1 0x1c
00001419: ADD
0000141a: DUP3
0000141b: PUSH1 0x00
0000141d: NOT
0000141e: AND
0000141f: PUSH1 0x00
00001421: NOT
00001422: AND
00001423: DUP2
00001424: MSTORE
00001425: PUSH1 0x20
00001427: ADD
00001428: SWAP2
00001429: POP
0000142a: POP
0000142b: PUSH1 0x40
0000142d: MLOAD
0000142e: DUP1
0000142f: SWAP2
00001430: SUB
00001431: SWAP1
00001432: KECCAK256
00001433: DUP7
00001434: DUP7
00001435: DUP7
00001436: PUSH1 0x40
00001438: MLOAD
00001439: DUP1
0000143a: PUSH1 0x00
0000143c: MSTORE
0000143d: PUSH1 0x20
0000143f: ADD
00001440: PUSH1 0x40
00001442: MSTORE
00001443: PUSH1 0x00
00001445: PUSH1 0x40
00001447: MLOAD
00001448: PUSH1 0x20
0000144a: ADD
0000144b: MSTORE
0000144c: PUSH1 0x40
0000144e: MLOAD
0000144f: DUP1
00001450: DUP6
00001451: PUSH1 0x00
00001453: NOT
00001454: AND
00001455: PUSH1 0x00
00001457: NOT
00001458: AND
00001459: DUP2
0000145a: MSTORE
0000145b: PUSH1 0x20
0000145d: ADD
0000145e: DUP5
0000145f: PUSH1 0xff
00001461: AND
00001462: PUSH1 0xff
00001464: AND
00001465: DUP2
00001466: MSTORE
00001467: PUSH1 0x20
00001469: ADD
0000146a: DUP4
0000146b: PUSH1 0x00
0000146d: NOT
0000146e: AND
0000146f: PUSH1 0x00
00001471: NOT
00001472: AND
00001473: DUP2
00001474: MSTORE
00001475: PUSH1 0x20
00001477: ADD
00001478: DUP3
00001479: PUSH1 0x00
0000147b: NOT
0000147c: AND
0000147d: PUSH1 0x00
0000147f: NOT
00001480: AND
00001481: DUP2
00001482: MSTORE
00001483: PUSH1 0x20
00001485: ADD
00001486: SWAP5
00001487: POP
00001488: POP
00001489: POP
0000148a: POP
0000148b: POP
0000148c: PUSH1 0x20
0000148e: PUSH1 0x40
00001490: MLOAD
00001491: PUSH1 0x20
00001493: DUP2
00001494: SUB
00001495: SWAP1
00001496: DUP1
00001497: DUP5
00001498: SUB
00001499: SWAP1
0000149a: PUSH1 0x00
0000149c: DUP7
0000149d: PUSH2 0x61da
000014a0: GAS
000014a1: SUB
000014a2: CALL
000014a3: ISZERO
000014a4: ISZERO
000014a5: PUSH2 0x14aa
000014a8: JUMPI
000014a9: INVALID
000014aa: JUMPDEST
000014ab: POP
000014ac: POP
000014ad: PUSH1 0x20
000014af: PUSH1 0x40
000014b1: MLOAD
000014b2: SUB
000014b3: MLOAD
000014b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014c9: AND
000014ca: EQ
000014cb: JUMPDEST
000014cc: ISZERO
000014cd: ISZERO
000014ce: PUSH2 0x14d6
000014d1: JUMPI
000014d2: PUSH2 0x0000
000014d5: JUMP
000014d6: JUMPDEST
000014d7: DUP9
000014d8: PUSH1 0x07
000014da: PUSH1 0x00
000014dc: CALLER
000014dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014f2: AND
000014f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001508: AND
00001509: DUP2
0000150a: MSTORE
0000150b: PUSH1 0x20
0000150d: ADD
0000150e: SWAP1
0000150f: DUP2
00001510: MSTORE
00001511: PUSH1 0x20
00001513: ADD
00001514: PUSH1 0x00
00001516: KECCAK256
00001517: PUSH1 0x00
00001519: DUP4
0000151a: PUSH1 0x00
0000151c: NOT
0000151d: AND
0000151e: PUSH1 0x00
00001520: NOT
00001521: AND
00001522: DUP2
00001523: MSTORE
00001524: PUSH1 0x20
00001526: ADD
00001527: SWAP1
00001528: DUP2
00001529: MSTORE
0000152a: PUSH1 0x20
0000152c: ADD
0000152d: PUSH1 0x00
0000152f: KECCAK256
00001530: DUP2
00001531: SWAP1
00001532: SSTORE
00001533: POP
00001534: PUSH32 0x1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b0
00001555: DUP11
00001556: DUP11
00001557: DUP11
00001558: DUP11
00001559: DUP11
0000155a: DUP11
0000155b: CALLER
0000155c: DUP12
0000155d: DUP12
0000155e: DUP12
0000155f: PUSH1 0x40
00001561: MLOAD
00001562: DUP1
00001563: DUP12
00001564: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001579: AND
0000157a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000158f: AND
00001590: DUP2
00001591: MSTORE
00001592: PUSH1 0x20
00001594: ADD
00001595: DUP11
00001596: DUP2
00001597: MSTORE
00001598: PUSH1 0x20
0000159a: ADD
0000159b: DUP10
0000159c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015b1: AND
000015b2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015c7: AND
000015c8: DUP2
000015c9: MSTORE
000015ca: PUSH1 0x20
000015cc: ADD
000015cd: DUP9
000015ce: DUP2
000015cf: MSTORE
000015d0: PUSH1 0x20
000015d2: ADD
000015d3: DUP8
000015d4: DUP2
000015d5: MSTORE
000015d6: PUSH1 0x20
000015d8: ADD
000015d9: DUP7
000015da: DUP2
000015db: MSTORE
000015dc: PUSH1 0x20
000015de: ADD
000015df: DUP6
000015e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015f5: AND
000015f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000160b: AND
0000160c: DUP2
0000160d: MSTORE
0000160e: PUSH1 0x20
00001610: ADD
00001611: DUP5
00001612: PUSH1 0xff
00001614: AND
00001615: PUSH1 0xff
00001617: AND
00001618: DUP2
00001619: MSTORE
0000161a: PUSH1 0x20
0000161c: ADD
0000161d: DUP4
0000161e: PUSH1 0x00
00001620: NOT
00001621: AND
00001622: PUSH1 0x00
00001624: NOT
00001625: AND
00001626: DUP2
00001627: MSTORE
00001628: PUSH1 0x20
0000162a: ADD
0000162b: DUP3
0000162c: PUSH1 0x00
0000162e: NOT
0000162f: AND
00001630: PUSH1 0x00
00001632: NOT
00001633: AND
00001634: DUP2
00001635: MSTORE
00001636: PUSH1 0x20
00001638: ADD
00001639: SWAP11
0000163a: POP
0000163b: POP
0000163c: POP
0000163d: POP
0000163e: POP
0000163f: POP
00001640: POP
00001641: POP
00001642: POP
00001643: POP
00001644: POP
00001645: PUSH1 0x40
00001647: MLOAD
00001648: DUP1
00001649: SWAP2
0000164a: SUB
0000164b: SWAP1
0000164c: LOG1
0000164d: JUMPDEST
0000164e: POP
0000164f: POP
00001650: POP
00001651: POP
00001652: POP
00001653: POP
00001654: POP
00001655: POP
00001656: POP
00001657: POP
00001658: JUMP
00001659: JUMPDEST
0000165a: DUP1
0000165b: PUSH1 0x05
0000165d: PUSH1 0x00
0000165f: PUSH1 0x00
00001661: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001676: AND
00001677: DUP2
00001678: MSTORE
00001679: PUSH1 0x20
0000167b: ADD
0000167c: SWAP1
0000167d: DUP2
0000167e: MSTORE
0000167f: PUSH1 0x20
00001681: ADD
00001682: PUSH1 0x00
00001684: KECCAK256
00001685: PUSH1 0x00
00001687: CALLER
00001688: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000169d: AND
0000169e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016b3: AND
000016b4: DUP2
000016b5: MSTORE
000016b6: PUSH1 0x20
000016b8: ADD
000016b9: SWAP1
000016ba: DUP2
000016bb: MSTORE
000016bc: PUSH1 0x20
000016be: ADD
000016bf: PUSH1 0x00
000016c1: KECCAK256
000016c2: SLOAD
000016c3: LT
000016c4: ISZERO
000016c5: PUSH2 0x16cd
000016c8: JUMPI
000016c9: PUSH2 0x0000
000016cc: JUMP
000016cd: JUMPDEST
000016ce: PUSH2 0x173e
000016d1: PUSH1 0x05
000016d3: PUSH1 0x00
000016d5: PUSH1 0x00
000016d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016ec: AND
000016ed: DUP2
000016ee: MSTORE
000016ef: PUSH1 0x20
000016f1: ADD
000016f2: SWAP1
000016f3: DUP2
000016f4: MSTORE
000016f5: PUSH1 0x20
000016f7: ADD
000016f8: PUSH1 0x00
000016fa: KECCAK256
000016fb: PUSH1 0x00
000016fd: CALLER
000016fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001713: AND
00001714: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001729: AND
0000172a: DUP2
0000172b: MSTORE
0000172c: PUSH1 0x20
0000172e: ADD
0000172f: SWAP1
00001730: DUP2
00001731: MSTORE
00001732: PUSH1 0x20
00001734: ADD
00001735: PUSH1 0x00
00001737: KECCAK256
00001738: SLOAD
00001739: DUP3
0000173a: PUSH2 0x330b
0000173d: JUMP
0000173e: JUMPDEST
0000173f: PUSH1 0x05
00001741: PUSH1 0x00
00001743: PUSH1 0x00
00001745: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000175a: AND
0000175b: DUP2
0000175c: MSTORE
0000175d: PUSH1 0x20
0000175f: ADD
00001760: SWAP1
00001761: DUP2
00001762: MSTORE
00001763: PUSH1 0x20
00001765: ADD
00001766: PUSH1 0x00
00001768: KECCAK256
00001769: PUSH1 0x00
0000176b: CALLER
0000176c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001781: AND
00001782: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001797: AND
00001798: DUP2
00001799: MSTORE
0000179a: PUSH1 0x20
0000179c: ADD
0000179d: SWAP1
0000179e: DUP2
0000179f: MSTORE
000017a0: PUSH1 0x20
000017a2: ADD
000017a3: PUSH1 0x00
000017a5: KECCAK256
000017a6: DUP2
000017a7: SWAP1
000017a8: SSTORE
000017a9: POP
000017aa: CALLER
000017ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017c0: AND
000017c1: DUP2
000017c2: PUSH1 0x40
000017c4: MLOAD
000017c5: DUP1
000017c6: SWAP1
000017c7: POP
000017c8: PUSH1 0x00
000017ca: PUSH1 0x40
000017cc: MLOAD
000017cd: DUP1
000017ce: DUP4
000017cf: SUB
000017d0: DUP2
000017d1: DUP6
000017d2: DUP8
000017d3: PUSH2 0x8502
000017d6: GAS
000017d7: SUB
000017d8: CALL
000017d9: SWAP3
000017da: POP
000017db: POP
000017dc: POP
000017dd: ISZERO
000017de: ISZERO
000017df: PUSH2 0x17e7
000017e2: JUMPI
000017e3: PUSH2 0x0000
000017e6: JUMP
000017e7: JUMPDEST
000017e8: PUSH32 0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567
00001809: PUSH1 0x00
0000180b: CALLER
0000180c: DUP4
0000180d: PUSH1 0x05
0000180f: PUSH1 0x00
00001811: PUSH1 0x00
00001813: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001828: AND
00001829: DUP2
0000182a: MSTORE
0000182b: PUSH1 0x20
0000182d: ADD
0000182e: SWAP1
0000182f: DUP2
00001830: MSTORE
00001831: PUSH1 0x20
00001833: ADD
00001834: PUSH1 0x00
00001836: KECCAK256
00001837: PUSH1 0x00
00001839: CALLER
0000183a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000184f: AND
00001850: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001865: AND
00001866: DUP2
00001867: MSTORE
00001868: PUSH1 0x20
0000186a: ADD
0000186b: SWAP1
0000186c: DUP2
0000186d: MSTORE
0000186e: PUSH1 0x20
00001870: ADD
00001871: PUSH1 0x00
00001873: KECCAK256
00001874: SLOAD
00001875: PUSH1 0x40
00001877: MLOAD
00001878: DUP1
00001879: DUP6
0000187a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000188f: AND
00001890: DUP2
00001891: MSTORE
00001892: PUSH1 0x20
00001894: ADD
00001895: DUP5
00001896: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018ab: AND
000018ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018c1: AND
000018c2: DUP2
000018c3: MSTORE
000018c4: PUSH1 0x20
000018c6: ADD
000018c7: DUP4
000018c8: DUP2
000018c9: MSTORE
000018ca: PUSH1 0x20
000018cc: ADD
000018cd: DUP3
000018ce: DUP2
000018cf: MSTORE
000018d0: PUSH1 0x20
000018d2: ADD
000018d3: SWAP5
000018d4: POP
000018d5: POP
000018d6: POP
000018d7: POP
000018d8: POP
000018d9: PUSH1 0x40
000018db: MLOAD
000018dc: DUP1
000018dd: SWAP2
000018de: SUB
000018df: SWAP1
000018e0: LOG1
000018e1: JUMPDEST
000018e2: POP
000018e3: JUMP
000018e4: JUMPDEST
000018e5: PUSH1 0x00
000018e7: DUP3
000018e8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018fd: AND
000018fe: EQ
000018ff: ISZERO
00001900: PUSH2 0x1908
00001903: JUMPI
00001904: PUSH2 0x0000
00001907: JUMP
00001908: JUMPDEST
00001909: DUP2
0000190a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000191f: AND
00001920: PUSH4 0x23b872dd
00001925: CALLER
00001926: ADDRESS
00001927: DUP5
00001928: PUSH1 0x00
0000192a: PUSH1 0x40
0000192c: MLOAD
0000192d: PUSH1 0x20
0000192f: ADD
00001930: MSTORE
00001931: PUSH1 0x40
00001933: MLOAD
00001934: DUP5
00001935: PUSH4 0xffffffff
0000193a: AND
0000193b: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001959: MUL
0000195a: DUP2
0000195b: MSTORE
0000195c: PUSH1 0x04
0000195e: ADD
0000195f: DUP1
00001960: DUP5
00001961: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001976: AND
00001977: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000198c: AND
0000198d: DUP2
0000198e: MSTORE
0000198f: PUSH1 0x20
00001991: ADD
00001992: DUP4
00001993: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019a8: AND
000019a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019be: AND
000019bf: DUP2
000019c0: MSTORE
000019c1: PUSH1 0x20
000019c3: ADD
000019c4: DUP3
000019c5: DUP2
000019c6: MSTORE
000019c7: PUSH1 0x20
000019c9: ADD
000019ca: SWAP4
000019cb: POP
000019cc: POP
000019cd: POP
000019ce: POP
000019cf: PUSH1 0x20
000019d1: PUSH1 0x40
000019d3: MLOAD
000019d4: DUP1
000019d5: DUP4
000019d6: SUB
000019d7: DUP2
000019d8: PUSH1 0x00
000019da: DUP8
000019db: DUP1
000019dc: EXTCODESIZE
000019dd: ISZERO
000019de: ISZERO
000019df: PUSH2 0x19e4
000019e2: JUMPI
000019e3: INVALID
000019e4: JUMPDEST
000019e5: PUSH1 0x32
000019e7: GAS
000019e8: SUB
000019e9: CALL
000019ea: ISZERO
000019eb: ISZERO
000019ec: PUSH2 0x19f1
000019ef: JUMPI
000019f0: INVALID
000019f1: JUMPDEST
000019f2: POP
000019f3: POP
000019f4: POP
000019f5: PUSH1 0x40
000019f7: MLOAD
000019f8: DUP1
000019f9: MLOAD
000019fa: SWAP1
000019fb: POP
000019fc: ISZERO
000019fd: ISZERO
000019fe: PUSH2 0x1a06
00001a01: JUMPI
00001a02: PUSH2 0x0000
00001a05: JUMP
00001a06: JUMPDEST
00001a07: PUSH2 0x1a8c
00001a0a: PUSH1 0x05
00001a0c: PUSH1 0x00
00001a0e: DUP5
00001a0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a24: AND
00001a25: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a3a: AND
00001a3b: DUP2
00001a3c: MSTORE
00001a3d: PUSH1 0x20
00001a3f: ADD
00001a40: SWAP1
00001a41: DUP2
00001a42: MSTORE
00001a43: PUSH1 0x20
00001a45: ADD
00001a46: PUSH1 0x00
00001a48: KECCAK256
00001a49: PUSH1 0x00
00001a4b: CALLER
00001a4c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a61: AND
00001a62: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a77: AND
00001a78: DUP2
00001a79: MSTORE
00001a7a: PUSH1 0x20
00001a7c: ADD
00001a7d: SWAP1
00001a7e: DUP2
00001a7f: MSTORE
00001a80: PUSH1 0x20
00001a82: ADD
00001a83: PUSH1 0x00
00001a85: KECCAK256
00001a86: SLOAD
00001a87: DUP3
00001a88: PUSH2 0x2c72
00001a8b: JUMP
00001a8c: JUMPDEST
00001a8d: PUSH1 0x05
00001a8f: PUSH1 0x00
00001a91: DUP5
00001a92: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001aa7: AND
00001aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001abd: AND
00001abe: DUP2
00001abf: MSTORE
00001ac0: PUSH1 0x20
00001ac2: ADD
00001ac3: SWAP1
00001ac4: DUP2
00001ac5: MSTORE
00001ac6: PUSH1 0x20
00001ac8: ADD
00001ac9: PUSH1 0x00
00001acb: KECCAK256
00001acc: PUSH1 0x00
00001ace: CALLER
00001acf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ae4: AND
00001ae5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001afa: AND
00001afb: DUP2
00001afc: MSTORE
00001afd: PUSH1 0x20
00001aff: ADD
00001b00: SWAP1
00001b01: DUP2
00001b02: MSTORE
00001b03: PUSH1 0x20
00001b05: ADD
00001b06: PUSH1 0x00
00001b08: KECCAK256
00001b09: DUP2
00001b0a: SWAP1
00001b0b: SSTORE
00001b0c: POP
00001b0d: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7
00001b2e: DUP3
00001b2f: CALLER
00001b30: DUP4
00001b31: PUSH1 0x05
00001b33: PUSH1 0x00
00001b35: DUP8
00001b36: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b4b: AND
00001b4c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b61: AND
00001b62: DUP2
00001b63: MSTORE
00001b64: PUSH1 0x20
00001b66: ADD
00001b67: SWAP1
00001b68: DUP2
00001b69: MSTORE
00001b6a: PUSH1 0x20
00001b6c: ADD
00001b6d: PUSH1 0x00
00001b6f: KECCAK256
00001b70: PUSH1 0x00
00001b72: CALLER
00001b73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b88: AND
00001b89: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b9e: AND
00001b9f: DUP2
00001ba0: MSTORE
00001ba1: PUSH1 0x20
00001ba3: ADD
00001ba4: SWAP1
00001ba5: DUP2
00001ba6: MSTORE
00001ba7: PUSH1 0x20
00001ba9: ADD
00001baa: PUSH1 0x00
00001bac: KECCAK256
00001bad: SLOAD
00001bae: PUSH1 0x40
00001bb0: MLOAD
00001bb1: DUP1
00001bb2: DUP6
00001bb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bc8: AND
00001bc9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bde: AND
00001bdf: DUP2
00001be0: MSTORE
00001be1: PUSH1 0x20
00001be3: ADD
00001be4: DUP5
00001be5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bfa: AND
00001bfb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c10: AND
00001c11: DUP2
00001c12: MSTORE
00001c13: PUSH1 0x20
00001c15: ADD
00001c16: DUP4
00001c17: DUP2
00001c18: MSTORE
00001c19: PUSH1 0x20
00001c1b: ADD
00001c1c: DUP3
00001c1d: DUP2
00001c1e: MSTORE
00001c1f: PUSH1 0x20
00001c21: ADD
00001c22: SWAP5
00001c23: POP
00001c24: POP
00001c25: POP
00001c26: POP
00001c27: POP
00001c28: PUSH1 0x40
00001c2a: MLOAD
00001c2b: DUP1
00001c2c: SWAP2
00001c2d: SUB
00001c2e: SWAP1
00001c2f: LOG1
00001c30: JUMPDEST
00001c31: POP
00001c32: POP
00001c33: JUMP
00001c34: JUMPDEST
00001c35: PUSH1 0x00
00001c37: PUSH1 0x00
00001c39: PUSH1 0x02
00001c3b: ADDRESS
00001c3c: DUP14
00001c3d: DUP14
00001c3e: DUP14
00001c3f: DUP14
00001c40: DUP14
00001c41: DUP14
00001c42: PUSH1 0x00
00001c44: PUSH1 0x40
00001c46: MLOAD
00001c47: PUSH1 0x20
00001c49: ADD
00001c4a: MSTORE
00001c4b: PUSH1 0x40
00001c4d: MLOAD
00001c4e: DUP1
00001c4f: DUP9
00001c50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c65: AND
00001c66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c7b: AND
00001c7c: PUSH13 0x01000000000000000000000000
00001c8a: MUL
00001c8b: DUP2
00001c8c: MSTORE
00001c8d: PUSH1 0x14
00001c8f: ADD
00001c90: DUP8
00001c91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ca6: AND
00001ca7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001cbc: AND
00001cbd: PUSH13 0x01000000000000000000000000
00001ccb: MUL
00001ccc: DUP2
00001ccd: MSTORE
00001cce: PUSH1 0x14
00001cd0: ADD
00001cd1: DUP7
00001cd2: DUP2
00001cd3: MSTORE
00001cd4: PUSH1 0x20
00001cd6: ADD
00001cd7: DUP6
00001cd8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ced: AND
00001cee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d03: AND
00001d04: PUSH13 0x01000000000000000000000000
00001d12: MUL
00001d13: DUP2
00001d14: MSTORE
00001d15: PUSH1 0x14
00001d17: ADD
00001d18: DUP5
00001d19: DUP2
00001d1a: MSTORE
00001d1b: PUSH1 0x20
00001d1d: ADD
00001d1e: DUP4
00001d1f: DUP2
00001d20: MSTORE
00001d21: PUSH1 0x20
00001d23: ADD
00001d24: DUP3
00001d25: DUP2
00001d26: MSTORE
00001d27: PUSH1 0x20
00001d29: ADD
00001d2a: SWAP8
00001d2b: POP
00001d2c: POP
00001d2d: POP
00001d2e: POP
00001d2f: POP
00001d30: POP
00001d31: POP
00001d32: POP
00001d33: PUSH1 0x20
00001d35: PUSH1 0x40
00001d37: MLOAD
00001d38: DUP1
00001d39: DUP4
00001d3a: SUB
00001d3b: DUP2
00001d3c: PUSH1 0x00
00001d3e: DUP7
00001d3f: PUSH2 0x61da
00001d42: GAS
00001d43: SUB
00001d44: CALL
00001d45: ISZERO
00001d46: ISZERO
00001d47: PUSH2 0x1d4c
00001d4a: JUMPI
00001d4b: INVALID
00001d4c: JUMPDEST
00001d4d: POP
00001d4e: POP
00001d4f: PUSH1 0x40
00001d51: MLOAD
00001d52: DUP1
00001d53: MLOAD
00001d54: SWAP1
00001d55: POP
00001d56: SWAP1
00001d57: POP
00001d58: PUSH1 0x07
00001d5a: PUSH1 0x00
00001d5c: DUP8
00001d5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d72: AND
00001d73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d88: AND
00001d89: DUP2
00001d8a: MSTORE
00001d8b: PUSH1 0x20
00001d8d: ADD
00001d8e: SWAP1
00001d8f: DUP2
00001d90: MSTORE
00001d91: PUSH1 0x20
00001d93: ADD
00001d94: PUSH1 0x00
00001d96: KECCAK256
00001d97: PUSH1 0x00
00001d99: DUP3
00001d9a: PUSH1 0x00
00001d9c: NOT
00001d9d: AND
00001d9e: PUSH1 0x00
00001da0: NOT
00001da1: AND
00001da2: DUP2
00001da3: MSTORE
00001da4: PUSH1 0x20
00001da6: ADD
00001da7: SWAP1
00001da8: DUP2
00001da9: MSTORE
00001daa: PUSH1 0x20
00001dac: ADD
00001dad: PUSH1 0x00
00001daf: KECCAK256
00001db0: SLOAD
00001db1: SWAP2
00001db2: POP
00001db3: JUMPDEST
00001db4: POP
00001db5: SWAP11
00001db6: SWAP10
00001db7: POP
00001db8: POP
00001db9: POP
00001dba: POP
00001dbb: POP
00001dbc: POP
00001dbd: POP
00001dbe: POP
00001dbf: POP
00001dc0: POP
00001dc1: JUMP
00001dc2: JUMPDEST
00001dc3: PUSH1 0x05
00001dc5: PUSH1 0x20
00001dc7: MSTORE
00001dc8: DUP2
00001dc9: PUSH1 0x00
00001dcb: MSTORE
00001dcc: PUSH1 0x40
00001dce: PUSH1 0x00
00001dd0: KECCAK256
00001dd1: PUSH1 0x20
00001dd3: MSTORE
00001dd4: DUP1
00001dd5: PUSH1 0x00
00001dd7: MSTORE
00001dd8: PUSH1 0x40
00001dda: PUSH1 0x00
00001ddc: KECCAK256
00001ddd: PUSH1 0x00
00001ddf: SWAP2
00001de0: POP
00001de1: SWAP2
00001de2: POP
00001de3: POP
00001de4: SLOAD
00001de5: DUP2
00001de6: JUMP
00001de7: JUMPDEST
00001de8: PUSH1 0x00
00001dea: PUSH1 0x00
00001dec: SWAP1
00001ded: SLOAD
00001dee: SWAP1
00001def: PUSH2 0x0100
00001df2: EXP
00001df3: SWAP1
00001df4: DIV
00001df5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e0a: AND
00001e0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e20: AND
00001e21: CALLER
00001e22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e37: AND
00001e38: EQ
00001e39: ISZERO
00001e3a: ISZERO
00001e3b: PUSH2 0x1e43
00001e3e: JUMPI
00001e3f: PUSH2 0x0000
00001e42: JUMP
00001e43: JUMPDEST
00001e44: PUSH1 0x02
00001e46: SLOAD
00001e47: DUP2
00001e48: GT
00001e49: ISZERO
00001e4a: PUSH2 0x1e52
00001e4d: JUMPI
00001e4e: PUSH2 0x0000
00001e51: JUMP
00001e52: JUMPDEST
00001e53: DUP1
00001e54: PUSH1 0x02
00001e56: DUP2
00001e57: SWAP1
00001e58: SSTORE
00001e59: POP
00001e5a: JUMPDEST
00001e5b: POP
00001e5c: JUMP
00001e5d: JUMPDEST
00001e5e: PUSH1 0x02
00001e60: SLOAD
00001e61: DUP2
00001e62: JUMP
00001e63: JUMPDEST
00001e64: PUSH1 0x00
00001e66: PUSH1 0x00
00001e68: SWAP1
00001e69: SLOAD
00001e6a: SWAP1
00001e6b: PUSH2 0x0100
00001e6e: EXP
00001e6f: SWAP1
00001e70: DIV
00001e71: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e86: AND
00001e87: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e9c: AND
00001e9d: CALLER
00001e9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001eb3: AND
00001eb4: EQ
00001eb5: ISZERO
00001eb6: ISZERO
00001eb7: PUSH2 0x1ebf
00001eba: JUMPI
00001ebb: PUSH2 0x0000
00001ebe: JUMP
00001ebf: JUMPDEST
00001ec0: PUSH1 0x04
00001ec2: SLOAD
00001ec3: DUP2
00001ec4: LT
00001ec5: DUP1
00001ec6: PUSH2 0x1ed0
00001ec9: JUMPI
00001eca: POP
00001ecb: PUSH1 0x03
00001ecd: SLOAD
00001ece: DUP2
00001ecf: GT
00001ed0: JUMPDEST
00001ed1: ISZERO
00001ed2: PUSH2 0x1eda
00001ed5: JUMPI
00001ed6: PUSH2 0x0000
00001ed9: JUMP
00001eda: JUMPDEST
00001edb: DUP1
00001edc: PUSH1 0x04
00001ede: DUP2
00001edf: SWAP1
00001ee0: SSTORE
00001ee1: POP
00001ee2: JUMPDEST
00001ee3: POP
00001ee4: JUMP
00001ee5: JUMPDEST
00001ee6: PUSH1 0x01
00001ee8: PUSH1 0x00
00001eea: SWAP1
00001eeb: SLOAD
00001eec: SWAP1
00001eed: PUSH2 0x0100
00001ef0: EXP
00001ef1: SWAP1
00001ef2: DIV
00001ef3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f08: AND
00001f09: DUP2
00001f0a: JUMP
00001f0b: JUMPDEST
00001f0c: PUSH1 0x00
00001f0e: DUP3
00001f0f: PUSH1 0x05
00001f11: PUSH1 0x00
00001f13: DUP16
00001f14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f29: AND
00001f2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f3f: AND
00001f40: DUP2
00001f41: MSTORE
00001f42: PUSH1 0x20
00001f44: ADD
00001f45: SWAP1
00001f46: DUP2
00001f47: MSTORE
00001f48: PUSH1 0x20
00001f4a: ADD
00001f4b: PUSH1 0x00
00001f4d: KECCAK256
00001f4e: PUSH1 0x00
00001f50: DUP5
00001f51: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f66: AND
00001f67: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f7c: AND
00001f7d: DUP2
00001f7e: MSTORE
00001f7f: PUSH1 0x20
00001f81: ADD
00001f82: SWAP1
00001f83: DUP2
00001f84: MSTORE
00001f85: PUSH1 0x20
00001f87: ADD
00001f88: PUSH1 0x00
00001f8a: KECCAK256
00001f8b: SLOAD
00001f8c: LT
00001f8d: ISZERO
00001f8e: DUP1
00001f8f: ISZERO
00001f90: PUSH2 0x1faa
00001f93: JUMPI
00001f94: POP
00001f95: DUP3
00001f96: PUSH2 0x1fa7
00001f99: DUP15
00001f9a: DUP15
00001f9b: DUP15
00001f9c: DUP15
00001f9d: DUP15
00001f9e: DUP15
00001f9f: DUP15
00001fa0: DUP15
00001fa1: DUP15
00001fa2: DUP15
00001fa3: PUSH2 0x28b0
00001fa6: JUMP
00001fa7: JUMPDEST
00001fa8: LT
00001fa9: ISZERO
00001faa: JUMPDEST
00001fab: ISZERO
00001fac: ISZERO
00001fad: PUSH2 0x1fb9
00001fb0: JUMPI
00001fb1: PUSH1 0x00
00001fb3: SWAP1
00001fb4: POP
00001fb5: PUSH2 0x1fbe
00001fb8: JUMP
00001fb9: JUMPDEST
00001fba: PUSH1 0x01
00001fbc: SWAP1
00001fbd: POP
00001fbe: JUMPDEST
00001fbf: SWAP13
00001fc0: SWAP12
00001fc1: POP
00001fc2: POP
00001fc3: POP
00001fc4: POP
00001fc5: POP
00001fc6: POP
00001fc7: POP
00001fc8: POP
00001fc9: POP
00001fca: POP
00001fcb: POP
00001fcc: POP
00001fcd: JUMP
00001fce: JUMPDEST
00001fcf: PUSH1 0x00
00001fd1: PUSH1 0x00
00001fd3: SWAP1
00001fd4: SLOAD
00001fd5: SWAP1
00001fd6: PUSH2 0x0100
00001fd9: EXP
00001fda: SWAP1
00001fdb: DIV
00001fdc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ff1: AND
00001ff2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002007: AND
00002008: CALLER
00002009: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000201e: AND
0000201f: EQ
00002020: ISZERO
00002021: ISZERO
00002022: PUSH2 0x202a
00002025: JUMPI
00002026: PUSH2 0x0000
00002029: JUMP
0000202a: JUMPDEST
0000202b: DUP1
0000202c: PUSH1 0x01
0000202e: PUSH1 0x00
00002030: PUSH2 0x0100
00002033: EXP
00002034: DUP2
00002035: SLOAD
00002036: DUP2
00002037: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000204c: MUL
0000204d: NOT
0000204e: AND
0000204f: SWAP1
00002050: DUP4
00002051: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002066: AND
00002067: MUL
00002068: OR
00002069: SWAP1
0000206a: SSTORE
0000206b: POP
0000206c: JUMPDEST
0000206d: POP
0000206e: JUMP
0000206f: JUMPDEST
00002070: PUSH1 0x04
00002072: SLOAD
00002073: DUP2
00002074: JUMP
00002075: JUMPDEST
00002076: PUSH1 0x00
00002078: PUSH1 0x00
0000207a: SWAP1
0000207b: SLOAD
0000207c: SWAP1
0000207d: PUSH2 0x0100
00002080: EXP
00002081: SWAP1
00002082: DIV
00002083: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002098: AND
00002099: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020ae: AND
000020af: CALLER
000020b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020c5: AND
000020c6: EQ
000020c7: ISZERO
000020c8: ISZERO
000020c9: PUSH2 0x20d1
000020cc: JUMPI
000020cd: PUSH2 0x0000
000020d0: JUMP
000020d1: JUMPDEST
000020d2: PUSH1 0x03
000020d4: SLOAD
000020d5: DUP2
000020d6: GT
000020d7: DUP1
000020d8: PUSH2 0x20e2
000020db: JUMPI
000020dc: POP
000020dd: PUSH1 0x04
000020df: SLOAD
000020e0: DUP2
000020e1: LT
000020e2: JUMPDEST
000020e3: ISZERO
000020e4: PUSH2 0x20ec
000020e7: JUMPI
000020e8: PUSH2 0x0000
000020eb: JUMP
000020ec: JUMPDEST
000020ed: DUP1
000020ee: PUSH1 0x03
000020f0: DUP2
000020f1: SWAP1
000020f2: SSTORE
000020f3: POP
000020f4: JUMPDEST
000020f5: POP
000020f6: JUMP
000020f7: JUMPDEST
000020f8: PUSH1 0x00
000020fa: PUSH1 0x00
000020fc: SWAP1
000020fd: SLOAD
000020fe: SWAP1
000020ff: PUSH2 0x0100
00002102: EXP
00002103: SWAP1
00002104: DIV
00002105: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000211a: AND
0000211b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002130: AND
00002131: CALLER
00002132: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002147: AND
00002148: EQ
00002149: ISZERO
0000214a: ISZERO
0000214b: PUSH2 0x2153
0000214e: JUMPI
0000214f: PUSH2 0x0000
00002152: JUMP
00002153: JUMPDEST
00002154: DUP1
00002155: PUSH1 0x00
00002157: PUSH1 0x00
00002159: PUSH2 0x0100
0000215c: EXP
0000215d: DUP2
0000215e: SLOAD
0000215f: DUP2
00002160: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002175: MUL
00002176: NOT
00002177: AND
00002178: SWAP1
00002179: DUP4
0000217a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000218f: AND
00002190: MUL
00002191: OR
00002192: SWAP1
00002193: SSTORE
00002194: POP
00002195: JUMPDEST
00002196: POP
00002197: JUMP
00002198: JUMPDEST
00002199: PUSH1 0x00
0000219b: DUP3
0000219c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021b1: AND
000021b2: EQ
000021b3: ISZERO
000021b4: PUSH2 0x21bc
000021b7: JUMPI
000021b8: PUSH2 0x0000
000021bb: JUMP
000021bc: JUMPDEST
000021bd: DUP1
000021be: PUSH1 0x05
000021c0: PUSH1 0x00
000021c2: DUP5
000021c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021d8: AND
000021d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021ee: AND
000021ef: DUP2
000021f0: MSTORE
000021f1: PUSH1 0x20
000021f3: ADD
000021f4: SWAP1
000021f5: DUP2
000021f6: MSTORE
000021f7: PUSH1 0x20
000021f9: ADD
000021fa: PUSH1 0x00
000021fc: KECCAK256
000021fd: PUSH1 0x00
000021ff: CALLER
00002200: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002215: AND
00002216: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000222b: AND
0000222c: DUP2
0000222d: MSTORE
0000222e: PUSH1 0x20
00002230: ADD
00002231: SWAP1
00002232: DUP2
00002233: MSTORE
00002234: PUSH1 0x20
00002236: ADD
00002237: PUSH1 0x00
00002239: KECCAK256
0000223a: SLOAD
0000223b: LT
0000223c: ISZERO
0000223d: PUSH2 0x2245
00002240: JUMPI
00002241: PUSH2 0x0000
00002244: JUMP
00002245: JUMPDEST
00002246: PUSH2 0x22cb
00002249: PUSH1 0x05
0000224b: PUSH1 0x00
0000224d: DUP5
0000224e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002263: AND
00002264: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002279: AND
0000227a: DUP2
0000227b: MSTORE
0000227c: PUSH1 0x20
0000227e: ADD
0000227f: SWAP1
00002280: DUP2
00002281: MSTORE
00002282: PUSH1 0x20
00002284: ADD
00002285: PUSH1 0x00
00002287: KECCAK256
00002288: PUSH1 0x00
0000228a: CALLER
0000228b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022a0: AND
000022a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022b6: AND
000022b7: DUP2
000022b8: MSTORE
000022b9: PUSH1 0x20
000022bb: ADD
000022bc: SWAP1
000022bd: DUP2
000022be: MSTORE
000022bf: PUSH1 0x20
000022c1: ADD
000022c2: PUSH1 0x00
000022c4: KECCAK256
000022c5: SLOAD
000022c6: DUP3
000022c7: PUSH2 0x330b
000022ca: JUMP
000022cb: JUMPDEST
000022cc: PUSH1 0x05
000022ce: PUSH1 0x00
000022d0: DUP5
000022d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022e6: AND
000022e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022fc: AND
000022fd: DUP2
000022fe: MSTORE
000022ff: PUSH1 0x20
00002301: ADD
00002302: SWAP1
00002303: DUP2
00002304: MSTORE
00002305: PUSH1 0x20
00002307: ADD
00002308: PUSH1 0x00
0000230a: KECCAK256
0000230b: PUSH1 0x00
0000230d: CALLER
0000230e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002323: AND
00002324: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002339: AND
0000233a: DUP2
0000233b: MSTORE
0000233c: PUSH1 0x20
0000233e: ADD
0000233f: SWAP1
00002340: DUP2
00002341: MSTORE
00002342: PUSH1 0x20
00002344: ADD
00002345: PUSH1 0x00
00002347: KECCAK256
00002348: DUP2
00002349: SWAP1
0000234a: SSTORE
0000234b: POP
0000234c: DUP2
0000234d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002362: AND
00002363: PUSH4 0xa9059cbb
00002368: CALLER
00002369: DUP4
0000236a: PUSH1 0x00
0000236c: PUSH1 0x40
0000236e: MLOAD
0000236f: PUSH1 0x20
00002371: ADD
00002372: MSTORE
00002373: PUSH1 0x40
00002375: MLOAD
00002376: DUP4
00002377: PUSH4 0xffffffff
0000237c: AND
0000237d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000239b: MUL
0000239c: DUP2
0000239d: MSTORE
0000239e: PUSH1 0x04
000023a0: ADD
000023a1: DUP1
000023a2: DUP4
000023a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023b8: AND
000023b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023ce: AND
000023cf: DUP2
000023d0: MSTORE
000023d1: PUSH1 0x20
000023d3: ADD
000023d4: DUP3
000023d5: DUP2
000023d6: MSTORE
000023d7: PUSH1 0x20
000023d9: ADD
000023da: SWAP3
000023db: POP
000023dc: POP
000023dd: POP
000023de: PUSH1 0x20
000023e0: PUSH1 0x40
000023e2: MLOAD
000023e3: DUP1
000023e4: DUP4
000023e5: SUB
000023e6: DUP2
000023e7: PUSH1 0x00
000023e9: DUP8
000023ea: DUP1
000023eb: EXTCODESIZE
000023ec: ISZERO
000023ed: ISZERO
000023ee: PUSH2 0x23f3
000023f1: JUMPI
000023f2: INVALID
000023f3: JUMPDEST
000023f4: PUSH1 0x32
000023f6: GAS
000023f7: SUB
000023f8: CALL
000023f9: ISZERO
000023fa: ISZERO
000023fb: PUSH2 0x2400
000023fe: JUMPI
000023ff: INVALID
00002400: JUMPDEST
00002401: POP
00002402: POP
00002403: POP
00002404: PUSH1 0x40
00002406: MLOAD
00002407: DUP1
00002408: MLOAD
00002409: SWAP1
0000240a: POP
0000240b: ISZERO
0000240c: ISZERO
0000240d: PUSH2 0x2415
00002410: JUMPI
00002411: PUSH2 0x0000
00002414: JUMP
00002415: JUMPDEST
00002416: PUSH32 0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567
00002437: DUP3
00002438: CALLER
00002439: DUP4
0000243a: PUSH1 0x05
0000243c: PUSH1 0x00
0000243e: DUP8
0000243f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002454: AND
00002455: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000246a: AND
0000246b: DUP2
0000246c: MSTORE
0000246d: PUSH1 0x20
0000246f: ADD
00002470: SWAP1
00002471: DUP2
00002472: MSTORE
00002473: PUSH1 0x20
00002475: ADD
00002476: PUSH1 0x00
00002478: KECCAK256
00002479: PUSH1 0x00
0000247b: CALLER
0000247c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002491: AND
00002492: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024a7: AND
000024a8: DUP2
000024a9: MSTORE
000024aa: PUSH1 0x20
000024ac: ADD
000024ad: SWAP1
000024ae: DUP2
000024af: MSTORE
000024b0: PUSH1 0x20
000024b2: ADD
000024b3: PUSH1 0x00
000024b5: KECCAK256
000024b6: SLOAD
000024b7: PUSH1 0x40
000024b9: MLOAD
000024ba: DUP1
000024bb: DUP6
000024bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024d1: AND
000024d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024e7: AND
000024e8: DUP2
000024e9: MSTORE
000024ea: PUSH1 0x20
000024ec: ADD
000024ed: DUP5
000024ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002503: AND
00002504: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002519: AND
0000251a: DUP2
0000251b: MSTORE
0000251c: PUSH1 0x20
0000251e: ADD
0000251f: DUP4
00002520: DUP2
00002521: MSTORE
00002522: PUSH1 0x20
00002524: ADD
00002525: DUP3
00002526: DUP2
00002527: MSTORE
00002528: PUSH1 0x20
0000252a: ADD
0000252b: SWAP5
0000252c: POP
0000252d: POP
0000252e: POP
0000252f: POP
00002530: POP
00002531: PUSH1 0x40
00002533: MLOAD
00002534: DUP1
00002535: SWAP2
00002536: SUB
00002537: SWAP1
00002538: LOG1
00002539: JUMPDEST
0000253a: POP
0000253b: POP
0000253c: JUMP
0000253d: JUMPDEST
0000253e: PUSH1 0x06
00002540: PUSH1 0x20
00002542: MSTORE
00002543: DUP2
00002544: PUSH1 0x00
00002546: MSTORE
00002547: PUSH1 0x40
00002549: PUSH1 0x00
0000254b: KECCAK256
0000254c: PUSH1 0x20
0000254e: MSTORE
0000254f: DUP1
00002550: PUSH1 0x00
00002552: MSTORE
00002553: PUSH1 0x40
00002555: PUSH1 0x00
00002557: KECCAK256
00002558: PUSH1 0x00
0000255a: SWAP2
0000255b: POP
0000255c: SWAP2
0000255d: POP
0000255e: SWAP1
0000255f: SLOAD
00002560: SWAP1
00002561: PUSH2 0x0100
00002564: EXP
00002565: SWAP1
00002566: DIV
00002567: PUSH1 0xff
00002569: AND
0000256a: DUP2
0000256b: JUMP
0000256c: JUMPDEST
0000256d: PUSH1 0x03
0000256f: SLOAD
00002570: DUP2
00002571: JUMP
00002572: JUMPDEST
00002573: PUSH2 0x25e3
00002576: PUSH1 0x05
00002578: PUSH1 0x00
0000257a: PUSH1 0x00
0000257c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002591: AND
00002592: DUP2
00002593: MSTORE
00002594: PUSH1 0x20
00002596: ADD
00002597: SWAP1
00002598: DUP2
00002599: MSTORE
0000259a: PUSH1 0x20
0000259c: ADD
0000259d: PUSH1 0x00
0000259f: KECCAK256
000025a0: PUSH1 0x00
000025a2: CALLER
000025a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025b8: AND
000025b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025ce: AND
000025cf: DUP2
000025d0: MSTORE
000025d1: PUSH1 0x20
000025d3: ADD
000025d4: SWAP1
000025d5: DUP2
000025d6: MSTORE
000025d7: PUSH1 0x20
000025d9: ADD
000025da: PUSH1 0x00
000025dc: KECCAK256
000025dd: SLOAD
000025de: CALLVALUE
000025df: PUSH2 0x2c72
000025e2: JUMP
000025e3: JUMPDEST
000025e4: PUSH1 0x05
000025e6: PUSH1 0x00
000025e8: PUSH1 0x00
000025ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025ff: AND
00002600: DUP2
00002601: MSTORE
00002602: PUSH1 0x20
00002604: ADD
00002605: SWAP1
00002606: DUP2
00002607: MSTORE
00002608: PUSH1 0x20
0000260a: ADD
0000260b: PUSH1 0x00
0000260d: KECCAK256
0000260e: PUSH1 0x00
00002610: CALLER
00002611: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002626: AND
00002627: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000263c: AND
0000263d: DUP2
0000263e: MSTORE
0000263f: PUSH1 0x20
00002641: ADD
00002642: SWAP1
00002643: DUP2
00002644: MSTORE
00002645: PUSH1 0x20
00002647: ADD
00002648: PUSH1 0x00
0000264a: KECCAK256
0000264b: DUP2
0000264c: SWAP1
0000264d: SSTORE
0000264e: POP
0000264f: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7
00002670: PUSH1 0x00
00002672: CALLER
00002673: CALLVALUE
00002674: PUSH1 0x05
00002676: PUSH1 0x00
00002678: PUSH1 0x00
0000267a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000268f: AND
00002690: DUP2
00002691: MSTORE
00002692: PUSH1 0x20
00002694: ADD
00002695: SWAP1
00002696: DUP2
00002697: MSTORE
00002698: PUSH1 0x20
0000269a: ADD
0000269b: PUSH1 0x00
0000269d: KECCAK256
0000269e: PUSH1 0x00
000026a0: CALLER
000026a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026b6: AND
000026b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026cc: AND
000026cd: DUP2
000026ce: MSTORE
000026cf: PUSH1 0x20
000026d1: ADD
000026d2: SWAP1
000026d3: DUP2
000026d4: MSTORE
000026d5: PUSH1 0x20
000026d7: ADD
000026d8: PUSH1 0x00
000026da: KECCAK256
000026db: SLOAD
000026dc: PUSH1 0x40
000026de: MLOAD
000026df: DUP1
000026e0: DUP6
000026e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026f6: AND
000026f7: DUP2
000026f8: MSTORE
000026f9: PUSH1 0x20
000026fb: ADD
000026fc: DUP5
000026fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002712: AND
00002713: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002728: AND
00002729: DUP2
0000272a: MSTORE
0000272b: PUSH1 0x20
0000272d: ADD
0000272e: DUP4
0000272f: DUP2
00002730: MSTORE
00002731: PUSH1 0x20
00002733: ADD
00002734: DUP3
00002735: DUP2
00002736: MSTORE
00002737: PUSH1 0x20
00002739: ADD
0000273a: SWAP5
0000273b: POP
0000273c: POP
0000273d: POP
0000273e: POP
0000273f: POP
00002740: PUSH1 0x40
00002742: MLOAD
00002743: DUP1
00002744: SWAP2
00002745: SUB
00002746: SWAP1
00002747: LOG1
00002748: JUMPDEST
00002749: JUMP
0000274a: JUMPDEST
0000274b: PUSH1 0x00
0000274d: PUSH1 0x00
0000274f: SWAP1
00002750: SLOAD
00002751: SWAP1
00002752: PUSH2 0x0100
00002755: EXP
00002756: SWAP1
00002757: DIV
00002758: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000276d: AND
0000276e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002783: AND
00002784: CALLER
00002785: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000279a: AND
0000279b: EQ
0000279c: ISZERO
0000279d: ISZERO
0000279e: PUSH2 0x27a6
000027a1: JUMPI
000027a2: PUSH2 0x0000
000027a5: JUMP
000027a6: JUMPDEST
000027a7: PUSH1 0x01
000027a9: PUSH1 0x08
000027ab: PUSH1 0x00
000027ad: DUP4
000027ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027c3: AND
000027c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027d9: AND
000027da: DUP2
000027db: MSTORE
000027dc: PUSH1 0x20
000027de: ADD
000027df: SWAP1
000027e0: DUP2
000027e1: MSTORE
000027e2: PUSH1 0x20
000027e4: ADD
000027e5: PUSH1 0x00
000027e7: KECCAK256
000027e8: PUSH1 0x00
000027ea: PUSH2 0x0100
000027ed: EXP
000027ee: DUP2
000027ef: SLOAD
000027f0: DUP2
000027f1: PUSH1 0xff
000027f3: MUL
000027f4: NOT
000027f5: AND
000027f6: SWAP1
000027f7: DUP4
000027f8: ISZERO
000027f9: ISZERO
000027fa: MUL
000027fb: OR
000027fc: SWAP1
000027fd: SSTORE
000027fe: POP
000027ff: JUMPDEST
00002800: POP
00002801: JUMP
00002802: JUMPDEST
00002803: PUSH1 0x00
00002805: PUSH1 0x05
00002807: PUSH1 0x00
00002809: DUP5
0000280a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000281f: AND
00002820: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002835: AND
00002836: DUP2
00002837: MSTORE
00002838: PUSH1 0x20
0000283a: ADD
0000283b: SWAP1
0000283c: DUP2
0000283d: MSTORE
0000283e: PUSH1 0x20
00002840: ADD
00002841: PUSH1 0x00
00002843: KECCAK256
00002844: PUSH1 0x00
00002846: DUP4
00002847: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000285c: AND
0000285d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002872: AND
00002873: DUP2
00002874: MSTORE
00002875: PUSH1 0x20
00002877: ADD
00002878: SWAP1
00002879: DUP2
0000287a: MSTORE
0000287b: PUSH1 0x20
0000287d: ADD
0000287e: PUSH1 0x00
00002880: KECCAK256
00002881: SLOAD
00002882: SWAP1
00002883: POP
00002884: JUMPDEST
00002885: SWAP3
00002886: SWAP2
00002887: POP
00002888: POP
00002889: JUMP
0000288a: JUMPDEST
0000288b: PUSH1 0x00
0000288d: PUSH1 0x00
0000288f: SWAP1
00002890: SLOAD
00002891: SWAP1
00002892: PUSH2 0x0100
00002895: EXP
00002896: SWAP1
00002897: DIV
00002898: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028ad: AND
000028ae: DUP2
000028af: JUMP
000028b0: JUMPDEST
000028b1: PUSH1 0x00
000028b3: PUSH1 0x00
000028b5: PUSH1 0x00
000028b7: PUSH1 0x00
000028b9: PUSH1 0x02
000028bb: ADDRESS
000028bc: DUP16
000028bd: DUP16
000028be: DUP16
000028bf: DUP16
000028c0: DUP16
000028c1: DUP16
000028c2: PUSH1 0x00
000028c4: PUSH1 0x40
000028c6: MLOAD
000028c7: PUSH1 0x20
000028c9: ADD
000028ca: MSTORE
000028cb: PUSH1 0x40
000028cd: MLOAD
000028ce: DUP1
000028cf: DUP9
000028d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028e5: AND
000028e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028fb: AND
000028fc: PUSH13 0x01000000000000000000000000
0000290a: MUL
0000290b: DUP2
0000290c: MSTORE
0000290d: PUSH1 0x14
0000290f: ADD
00002910: DUP8
00002911: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002926: AND
00002927: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000293c: AND
0000293d: PUSH13 0x01000000000000000000000000
0000294b: MUL
0000294c: DUP2
0000294d: MSTORE
0000294e: PUSH1 0x14
00002950: ADD
00002951: DUP7
00002952: DUP2
00002953: MSTORE
00002954: PUSH1 0x20
00002956: ADD
00002957: DUP6
00002958: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000296d: AND
0000296e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002983: AND
00002984: PUSH13 0x01000000000000000000000000
00002992: MUL
00002993: DUP2
00002994: MSTORE
00002995: PUSH1 0x14
00002997: ADD
00002998: DUP5
00002999: DUP2
0000299a: MSTORE
0000299b: PUSH1 0x20
0000299d: ADD
0000299e: DUP4
0000299f: DUP2
000029a0: MSTORE
000029a1: PUSH1 0x20
000029a3: ADD
000029a4: DUP3
000029a5: DUP2
000029a6: MSTORE
000029a7: PUSH1 0x20
000029a9: ADD
000029aa: SWAP8
000029ab: POP
000029ac: POP
000029ad: POP
000029ae: POP
000029af: POP
000029b0: POP
000029b1: POP
000029b2: POP
000029b3: PUSH1 0x20
000029b5: PUSH1 0x40
000029b7: MLOAD
000029b8: DUP1
000029b9: DUP4
000029ba: SUB
000029bb: DUP2
000029bc: PUSH1 0x00
000029be: DUP7
000029bf: PUSH2 0x61da
000029c2: GAS
000029c3: SUB
000029c4: CALL
000029c5: ISZERO
000029c6: ISZERO
000029c7: PUSH2 0x29cc
000029ca: JUMPI
000029cb: INVALID
000029cc: JUMPDEST
000029cd: POP
000029ce: POP
000029cf: PUSH1 0x40
000029d1: MLOAD
000029d2: DUP1
000029d3: MLOAD
000029d4: SWAP1
000029d5: POP
000029d6: SWAP3
000029d7: POP
000029d8: PUSH1 0x06
000029da: PUSH1 0x00
000029dc: DUP10
000029dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029f2: AND
000029f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a08: AND
00002a09: DUP2
00002a0a: MSTORE
00002a0b: PUSH1 0x20
00002a0d: ADD
00002a0e: SWAP1
00002a0f: DUP2
00002a10: MSTORE
00002a11: PUSH1 0x20
00002a13: ADD
00002a14: PUSH1 0x00
00002a16: KECCAK256
00002a17: PUSH1 0x00
00002a19: DUP5
00002a1a: PUSH1 0x00
00002a1c: NOT
00002a1d: AND
00002a1e: PUSH1 0x00
00002a20: NOT
00002a21: AND
00002a22: DUP2
00002a23: MSTORE
00002a24: PUSH1 0x20
00002a26: ADD
00002a27: SWAP1
00002a28: DUP2
00002a29: MSTORE
00002a2a: PUSH1 0x20
00002a2c: ADD
00002a2d: PUSH1 0x00
00002a2f: KECCAK256
00002a30: PUSH1 0x00
00002a32: SWAP1
00002a33: SLOAD
00002a34: SWAP1
00002a35: PUSH2 0x0100
00002a38: EXP
00002a39: SWAP1
00002a3a: DIV
00002a3b: PUSH1 0xff
00002a3d: AND
00002a3e: DUP1
00002a3f: PUSH2 0x2b3b
00002a42: JUMPI
00002a43: POP
00002a44: DUP8
00002a45: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a5a: AND
00002a5b: PUSH1 0x01
00002a5d: DUP5
00002a5e: PUSH1 0x40
00002a60: MLOAD
00002a61: DUP1
00002a62: DUP1
00002a63: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000
00002a84: DUP2
00002a85: MSTORE
00002a86: POP
00002a87: PUSH1 0x1c
00002a89: ADD
00002a8a: DUP3
00002a8b: PUSH1 0x00
00002a8d: NOT
00002a8e: AND
00002a8f: PUSH1 0x00
00002a91: NOT
00002a92: AND
00002a93: DUP2
00002a94: MSTORE
00002a95: PUSH1 0x20
00002a97: ADD
00002a98: SWAP2
00002a99: POP
00002a9a: POP
00002a9b: PUSH1 0x40
00002a9d: MLOAD
00002a9e: DUP1
00002a9f: SWAP2
00002aa0: SUB
00002aa1: SWAP1
00002aa2: KECCAK256
00002aa3: DUP10
00002aa4: DUP10
00002aa5: DUP10
00002aa6: PUSH1 0x40
00002aa8: MLOAD
00002aa9: DUP1
00002aaa: PUSH1 0x00
00002aac: MSTORE
00002aad: PUSH1 0x20
00002aaf: ADD
00002ab0: PUSH1 0x40
00002ab2: MSTORE
00002ab3: PUSH1 0x00
00002ab5: PUSH1 0x40
00002ab7: MLOAD
00002ab8: PUSH1 0x20
00002aba: ADD
00002abb: MSTORE
00002abc: PUSH1 0x40
00002abe: MLOAD
00002abf: DUP1
00002ac0: DUP6
00002ac1: PUSH1 0x00
00002ac3: NOT
00002ac4: AND
00002ac5: PUSH1 0x00
00002ac7: NOT
00002ac8: AND
00002ac9: DUP2
00002aca: MSTORE
00002acb: PUSH1 0x20
00002acd: ADD
00002ace: DUP5
00002acf: PUSH1 0xff
00002ad1: AND
00002ad2: PUSH1 0xff
00002ad4: AND
00002ad5: DUP2
00002ad6: MSTORE
00002ad7: PUSH1 0x20
00002ad9: ADD
00002ada: DUP4
00002adb: PUSH1 0x00
00002add: NOT
00002ade: AND
00002adf: PUSH1 0x00
00002ae1: NOT
00002ae2: AND
00002ae3: DUP2
00002ae4: MSTORE
00002ae5: PUSH1 0x20
00002ae7: ADD
00002ae8: DUP3
00002ae9: PUSH1 0x00
00002aeb: NOT
00002aec: AND
00002aed: PUSH1 0x00
00002aef: NOT
00002af0: AND
00002af1: DUP2
00002af2: MSTORE
00002af3: PUSH1 0x20
00002af5: ADD
00002af6: SWAP5
00002af7: POP
00002af8: POP
00002af9: POP
00002afa: POP
00002afb: POP
00002afc: PUSH1 0x20
00002afe: PUSH1 0x40
00002b00: MLOAD
00002b01: PUSH1 0x20
00002b03: DUP2
00002b04: SUB
00002b05: SWAP1
00002b06: DUP1
00002b07: DUP5
00002b08: SUB
00002b09: SWAP1
00002b0a: PUSH1 0x00
00002b0c: DUP7
00002b0d: PUSH2 0x61da
00002b10: GAS
00002b11: SUB
00002b12: CALL
00002b13: ISZERO
00002b14: ISZERO
00002b15: PUSH2 0x2b1a
00002b18: JUMPI
00002b19: INVALID
00002b1a: JUMPDEST
00002b1b: POP
00002b1c: POP
00002b1d: PUSH1 0x20
00002b1f: PUSH1 0x40
00002b21: MLOAD
00002b22: SUB
00002b23: MLOAD
00002b24: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b39: AND
00002b3a: EQ
00002b3b: JUMPDEST
00002b3c: DUP1
00002b3d: ISZERO
00002b3e: PUSH2 0x2b47
00002b41: JUMPI
00002b42: POP
00002b43: DUP10
00002b44: NUMBER
00002b45: GT
00002b46: ISZERO
00002b47: JUMPDEST
00002b48: ISZERO
00002b49: ISZERO
00002b4a: PUSH2 0x2b56
00002b4d: JUMPI
00002b4e: PUSH1 0x00
00002b50: SWAP4
00002b51: POP
00002b52: PUSH2 0x2c61
00002b55: JUMP
00002b56: JUMPDEST
00002b57: PUSH2 0x2bb8
00002b5a: DUP14
00002b5b: PUSH1 0x07
00002b5d: PUSH1 0x00
00002b5f: DUP12
00002b60: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b75: AND
00002b76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b8b: AND
00002b8c: DUP2
00002b8d: MSTORE
00002b8e: PUSH1 0x20
00002b90: ADD
00002b91: SWAP1
00002b92: DUP2
00002b93: MSTORE
00002b94: PUSH1 0x20
00002b96: ADD
00002b97: PUSH1 0x00
00002b99: KECCAK256
00002b9a: PUSH1 0x00
00002b9c: DUP7
00002b9d: PUSH1 0x00
00002b9f: NOT
00002ba0: AND
00002ba1: PUSH1 0x00
00002ba3: NOT
00002ba4: AND
00002ba5: DUP2
00002ba6: MSTORE
00002ba7: PUSH1 0x20
00002ba9: ADD
00002baa: SWAP1
00002bab: DUP2
00002bac: MSTORE
00002bad: PUSH1 0x20
00002baf: ADD
00002bb0: PUSH1 0x00
00002bb2: KECCAK256
00002bb3: SLOAD
00002bb4: PUSH2 0x330b
00002bb7: JUMP
00002bb8: JUMPDEST
00002bb9: SWAP2
00002bba: POP
00002bbb: DUP11
00002bbc: PUSH2 0x2c41
00002bbf: PUSH1 0x05
00002bc1: PUSH1 0x00
00002bc3: DUP16
00002bc4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bd9: AND
00002bda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bef: AND
00002bf0: DUP2
00002bf1: MSTORE
00002bf2: PUSH1 0x20
00002bf4: ADD
00002bf5: SWAP1
00002bf6: DUP2
00002bf7: MSTORE
00002bf8: PUSH1 0x20
00002bfa: ADD
00002bfb: PUSH1 0x00
00002bfd: KECCAK256
00002bfe: PUSH1 0x00
00002c00: DUP12
00002c01: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c16: AND
00002c17: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c2c: AND
00002c2d: DUP2
00002c2e: MSTORE
00002c2f: PUSH1 0x20
00002c31: ADD
00002c32: SWAP1
00002c33: DUP2
00002c34: MSTORE
00002c35: PUSH1 0x20
00002c37: ADD
00002c38: PUSH1 0x00
00002c3a: KECCAK256
00002c3b: SLOAD
00002c3c: DUP16
00002c3d: PUSH2 0x3325
00002c40: JUMP
00002c41: JUMPDEST
00002c42: DUP2
00002c43: ISZERO
00002c44: ISZERO
00002c45: PUSH2 0x2c4a
00002c48: JUMPI
00002c49: INVALID
00002c4a: JUMPDEST
00002c4b: DIV
00002c4c: SWAP1
00002c4d: POP
00002c4e: DUP1
00002c4f: DUP3
00002c50: LT
00002c51: ISZERO
00002c52: PUSH2 0x2c5d
00002c55: JUMPI
00002c56: DUP2
00002c57: SWAP4
00002c58: POP
00002c59: PUSH2 0x2c61
00002c5c: JUMP
00002c5d: JUMPDEST
00002c5e: DUP1
00002c5f: SWAP4
00002c60: POP
00002c61: JUMPDEST
00002c62: POP
00002c63: POP
00002c64: POP
00002c65: SWAP11
00002c66: SWAP10
00002c67: POP
00002c68: POP
00002c69: POP
00002c6a: POP
00002c6b: POP
00002c6c: POP
00002c6d: POP
00002c6e: POP
00002c6f: POP
00002c70: POP
00002c71: JUMP
00002c72: JUMPDEST
00002c73: PUSH1 0x00
00002c75: PUSH1 0x00
00002c77: DUP3
00002c78: DUP5
00002c79: ADD
00002c7a: SWAP1
00002c7b: POP
00002c7c: PUSH2 0x2c93
00002c7f: DUP5
00002c80: DUP3
00002c81: LT
00002c82: ISZERO
00002c83: DUP1
00002c84: ISZERO
00002c85: PUSH2 0x2c8e
00002c88: JUMPI
00002c89: POP
00002c8a: DUP4
00002c8b: DUP3
00002c8c: LT
00002c8d: ISZERO
00002c8e: JUMPDEST
00002c8f: PUSH2 0x335a
00002c92: JUMP
00002c93: JUMPDEST
00002c94: DUP1
00002c95: SWAP2
00002c96: POP
00002c97: JUMPDEST
00002c98: POP
00002c99: SWAP3
00002c9a: SWAP2
00002c9b: POP
00002c9c: POP
00002c9d: JUMP
00002c9e: JUMPDEST
00002c9f: PUSH1 0x00
00002ca1: PUSH1 0x00
00002ca3: PUSH1 0x00
00002ca5: PUSH8 0x0de0b6b3a7640000
00002cae: PUSH2 0x2cb9
00002cb1: DUP6
00002cb2: PUSH1 0x02
00002cb4: SLOAD
00002cb5: PUSH2 0x3325
00002cb8: JUMP
00002cb9: JUMPDEST
00002cba: DUP2
00002cbb: ISZERO
00002cbc: ISZERO
00002cbd: PUSH2 0x2cc2
00002cc0: JUMPI
00002cc1: INVALID
00002cc2: JUMPDEST
00002cc3: DIV
00002cc4: SWAP3
00002cc5: POP
00002cc6: PUSH8 0x0de0b6b3a7640000
00002ccf: PUSH2 0x2cda
00002cd2: DUP6
00002cd3: PUSH1 0x03
00002cd5: SLOAD
00002cd6: PUSH2 0x3325
00002cd9: JUMP
00002cda: JUMPDEST
00002cdb: DUP2
00002cdc: ISZERO
00002cdd: ISZERO
00002cde: PUSH2 0x2ce3
00002ce1: JUMPI
00002ce2: INVALID
00002ce3: JUMPDEST
00002ce4: DIV
00002ce5: SWAP2
00002ce6: POP
00002ce7: PUSH1 0x00
00002ce9: SWAP1
00002cea: POP
00002ceb: PUSH1 0x01
00002ced: ISZERO
00002cee: ISZERO
00002cef: PUSH1 0x08
00002cf1: PUSH1 0x00
00002cf3: CALLER
00002cf4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d09: AND
00002d0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d1f: AND
00002d20: DUP2
00002d21: MSTORE
00002d22: PUSH1 0x20
00002d24: ADD
00002d25: SWAP1
00002d26: DUP2
00002d27: MSTORE
00002d28: PUSH1 0x20
00002d2a: ADD
00002d2b: PUSH1 0x00
00002d2d: KECCAK256
00002d2e: PUSH1 0x00
00002d30: SWAP1
00002d31: SLOAD
00002d32: SWAP1
00002d33: PUSH2 0x0100
00002d36: EXP
00002d37: SWAP1
00002d38: DIV
00002d39: PUSH1 0xff
00002d3b: AND
00002d3c: ISZERO
00002d3d: ISZERO
00002d3e: EQ
00002d3f: ISZERO
00002d40: PUSH2 0x2d48
00002d43: JUMPI
00002d44: PUSH1 0x00
00002d46: SWAP2
00002d47: POP
00002d48: JUMPDEST
00002d49: PUSH2 0x2dd7
00002d4c: PUSH1 0x05
00002d4e: PUSH1 0x00
00002d50: DUP12
00002d51: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d66: AND
00002d67: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d7c: AND
00002d7d: DUP2
00002d7e: MSTORE
00002d7f: PUSH1 0x20
00002d81: ADD
00002d82: SWAP1
00002d83: DUP2
00002d84: MSTORE
00002d85: PUSH1 0x20
00002d87: ADD
00002d88: PUSH1 0x00
00002d8a: KECCAK256
00002d8b: PUSH1 0x00
00002d8d: CALLER
00002d8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002da3: AND
00002da4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002db9: AND
00002dba: DUP2
00002dbb: MSTORE
00002dbc: PUSH1 0x20
00002dbe: ADD
00002dbf: SWAP1
00002dc0: DUP2
00002dc1: MSTORE
00002dc2: PUSH1 0x20
00002dc4: ADD
00002dc5: PUSH1 0x00
00002dc7: KECCAK256
00002dc8: SLOAD
00002dc9: PUSH2 0x2dd2
00002dcc: DUP7
00002dcd: DUP6
00002dce: PUSH2 0x2c72
00002dd1: JUMP
00002dd2: JUMPDEST
00002dd3: PUSH2 0x330b
00002dd6: JUMP
00002dd7: JUMPDEST
00002dd8: PUSH1 0x05
00002dda: PUSH1 0x00
00002ddc: DUP12
00002ddd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002df2: AND
00002df3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e08: AND
00002e09: DUP2
00002e0a: MSTORE
00002e0b: PUSH1 0x20
00002e0d: ADD
00002e0e: SWAP1
00002e0f: DUP2
00002e10: MSTORE
00002e11: PUSH1 0x20
00002e13: ADD
00002e14: PUSH1 0x00
00002e16: KECCAK256
00002e17: PUSH1 0x00
00002e19: CALLER
00002e1a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e2f: AND
00002e30: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e45: AND
00002e46: DUP2
00002e47: MSTORE
00002e48: PUSH1 0x20
00002e4a: ADD
00002e4b: SWAP1
00002e4c: DUP2
00002e4d: MSTORE
00002e4e: PUSH1 0x20
00002e50: ADD
00002e51: PUSH1 0x00
00002e53: KECCAK256
00002e54: DUP2
00002e55: SWAP1
00002e56: SSTORE
00002e57: POP
00002e58: PUSH2 0x2eef
00002e5b: PUSH1 0x05
00002e5d: PUSH1 0x00
00002e5f: DUP12
00002e60: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e75: AND
00002e76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e8b: AND
00002e8c: DUP2
00002e8d: MSTORE
00002e8e: PUSH1 0x20
00002e90: ADD
00002e91: SWAP1
00002e92: DUP2
00002e93: MSTORE
00002e94: PUSH1 0x20
00002e96: ADD
00002e97: PUSH1 0x00
00002e99: KECCAK256
00002e9a: PUSH1 0x00
00002e9c: DUP8
00002e9d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002eb2: AND
00002eb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ec8: AND
00002ec9: DUP2
00002eca: MSTORE
00002ecb: PUSH1 0x20
00002ecd: ADD
00002ece: SWAP1
00002ecf: DUP2
00002ed0: MSTORE
00002ed1: PUSH1 0x20
00002ed3: ADD
00002ed4: PUSH1 0x00
00002ed6: KECCAK256
00002ed7: SLOAD
00002ed8: PUSH2 0x2eea
00002edb: PUSH2 0x2ee4
00002ede: DUP8
00002edf: DUP6
00002ee0: PUSH2 0x2c72
00002ee3: JUMP
00002ee4: JUMPDEST
00002ee5: DUP7
00002ee6: PUSH2 0x330b
00002ee9: JUMP
00002eea: JUMPDEST
00002eeb: PUSH2 0x2c72
00002eee: JUMP
00002eef: JUMPDEST
00002ef0: PUSH1 0x05
00002ef2: PUSH1 0x00
00002ef4: DUP12
00002ef5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f0a: AND
00002f0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f20: AND
00002f21: DUP2
00002f22: MSTORE
00002f23: PUSH1 0x20
00002f25: ADD
00002f26: SWAP1
00002f27: DUP2
00002f28: MSTORE
00002f29: PUSH1 0x20
00002f2b: ADD
00002f2c: PUSH1 0x00
00002f2e: KECCAK256
00002f2f: PUSH1 0x00
00002f31: DUP8
00002f32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f47: AND
00002f48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f5d: AND
00002f5e: DUP2
00002f5f: MSTORE
00002f60: PUSH1 0x20
00002f62: ADD
00002f63: SWAP1
00002f64: DUP2
00002f65: MSTORE
00002f66: PUSH1 0x20
00002f68: ADD
00002f69: PUSH1 0x00
00002f6b: KECCAK256
00002f6c: DUP2
00002f6d: SWAP1
00002f6e: SSTORE
00002f6f: POP
00002f70: PUSH2 0x3029
00002f73: PUSH1 0x05
00002f75: PUSH1 0x00
00002f77: DUP12
00002f78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f8d: AND
00002f8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002fa3: AND
00002fa4: DUP2
00002fa5: MSTORE
00002fa6: PUSH1 0x20
00002fa8: ADD
00002fa9: SWAP1
00002faa: DUP2
00002fab: MSTORE
00002fac: PUSH1 0x20
00002fae: ADD
00002faf: PUSH1 0x00
00002fb1: KECCAK256
00002fb2: PUSH1 0x00
00002fb4: PUSH1 0x01
00002fb6: PUSH1 0x00
00002fb8: SWAP1
00002fb9: SLOAD
00002fba: SWAP1
00002fbb: PUSH2 0x0100
00002fbe: EXP
00002fbf: SWAP1
00002fc0: DIV
00002fc1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002fd6: AND
00002fd7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002fec: AND
00002fed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003002: AND
00003003: DUP2
00003004: MSTORE
00003005: PUSH1 0x20
00003007: ADD
00003008: SWAP1
00003009: DUP2
0000300a: MSTORE
0000300b: PUSH1 0x20
0000300d: ADD
0000300e: PUSH1 0x00
00003010: KECCAK256
00003011: SLOAD
00003012: PUSH2 0x3024
00003015: PUSH2 0x301e
00003018: DUP7
00003019: DUP7
0000301a: PUSH2 0x2c72
0000301d: JUMP
0000301e: JUMPDEST
0000301f: DUP5
00003020: PUSH2 0x330b
00003023: JUMP
00003024: JUMPDEST
00003025: PUSH2 0x2c72
00003028: JUMP
00003029: JUMPDEST
0000302a: PUSH1 0x05
0000302c: PUSH1 0x00
0000302e: DUP12
0000302f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003044: AND
00003045: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000305a: AND
0000305b: DUP2
0000305c: MSTORE
0000305d: PUSH1 0x20
0000305f: ADD
00003060: SWAP1
00003061: DUP2
00003062: MSTORE
00003063: PUSH1 0x20
00003065: ADD
00003066: PUSH1 0x00
00003068: KECCAK256
00003069: PUSH1 0x00
0000306b: PUSH1 0x01
0000306d: PUSH1 0x00
0000306f: SWAP1
00003070: SLOAD
00003071: SWAP1
00003072: PUSH2 0x0100
00003075: EXP
00003076: SWAP1
00003077: DIV
00003078: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000308d: AND
0000308e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030a3: AND
000030a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030b9: AND
000030ba: DUP2
000030bb: MSTORE
000030bc: PUSH1 0x20
000030be: ADD
000030bf: SWAP1
000030c0: DUP2
000030c1: MSTORE
000030c2: PUSH1 0x20
000030c4: ADD
000030c5: PUSH1 0x00
000030c7: KECCAK256
000030c8: DUP2
000030c9: SWAP1
000030ca: SSTORE
000030cb: POP
000030cc: PUSH2 0x3165
000030cf: PUSH1 0x05
000030d1: PUSH1 0x00
000030d3: DUP10
000030d4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030e9: AND
000030ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030ff: AND
00003100: DUP2
00003101: MSTORE
00003102: PUSH1 0x20
00003104: ADD
00003105: SWAP1
00003106: DUP2
00003107: MSTORE
00003108: PUSH1 0x20
0000310a: ADD
0000310b: PUSH1 0x00
0000310d: KECCAK256
0000310e: PUSH1 0x00
00003110: DUP8
00003111: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003126: AND
00003127: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000313c: AND
0000313d: DUP2
0000313e: MSTORE
0000313f: PUSH1 0x20
00003141: ADD
00003142: SWAP1
00003143: DUP2
00003144: MSTORE
00003145: PUSH1 0x20
00003147: ADD
00003148: PUSH1 0x00
0000314a: KECCAK256
0000314b: SLOAD
0000314c: DUP10
0000314d: PUSH2 0x3156
00003150: DUP10
00003151: DUP9
00003152: PUSH2 0x3325
00003155: JUMP
00003156: JUMPDEST
00003157: DUP2
00003158: ISZERO
00003159: ISZERO
0000315a: PUSH2 0x315f
0000315d: JUMPI
0000315e: INVALID
0000315f: JUMPDEST
00003160: DIV
00003161: PUSH2 0x330b
00003164: JUMP
00003165: JUMPDEST
00003166: PUSH1 0x05
00003168: PUSH1 0x00
0000316a: DUP10
0000316b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003180: AND
00003181: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003196: AND
00003197: DUP2
00003198: MSTORE
00003199: PUSH1 0x20
0000319b: ADD
0000319c: SWAP1
0000319d: DUP2
0000319e: MSTORE
0000319f: PUSH1 0x20
000031a1: ADD
000031a2: PUSH1 0x00
000031a4: KECCAK256
000031a5: PUSH1 0x00
000031a7: DUP8
000031a8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031bd: AND
000031be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031d3: AND
000031d4: DUP2
000031d5: MSTORE
000031d6: PUSH1 0x20
000031d8: ADD
000031d9: SWAP1
000031da: DUP2
000031db: MSTORE
000031dc: PUSH1 0x20
000031de: ADD
000031df: PUSH1 0x00
000031e1: KECCAK256
000031e2: DUP2
000031e3: SWAP1
000031e4: SSTORE
000031e5: POP
000031e6: PUSH2 0x327f
000031e9: PUSH1 0x05
000031eb: PUSH1 0x00
000031ed: DUP10
000031ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003203: AND
00003204: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003219: AND
0000321a: DUP2
0000321b: MSTORE
0000321c: PUSH1 0x20
0000321e: ADD
0000321f: SWAP1
00003220: DUP2
00003221: MSTORE
00003222: PUSH1 0x20
00003224: ADD
00003225: PUSH1 0x00
00003227: KECCAK256
00003228: PUSH1 0x00
0000322a: CALLER
0000322b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003240: AND
00003241: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003256: AND
00003257: DUP2
00003258: MSTORE
00003259: PUSH1 0x20
0000325b: ADD
0000325c: SWAP1
0000325d: DUP2
0000325e: MSTORE
0000325f: PUSH1 0x20
00003261: ADD
00003262: PUSH1 0x00
00003264: KECCAK256
00003265: SLOAD
00003266: DUP10
00003267: PUSH2 0x3270
0000326a: DUP10
0000326b: DUP9
0000326c: PUSH2 0x3325
0000326f: JUMP
00003270: JUMPDEST
00003271: DUP2
00003272: ISZERO
00003273: ISZERO
00003274: PUSH2 0x3279
00003277: JUMPI
00003278: INVALID
00003279: JUMPDEST
0000327a: DIV
0000327b: PUSH2 0x2c72
0000327e: JUMP
0000327f: JUMPDEST
00003280: PUSH1 0x05
00003282: PUSH1 0x00
00003284: DUP10
00003285: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000329a: AND
0000329b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000032b0: AND
000032b1: DUP2
000032b2: MSTORE
000032b3: PUSH1 0x20
000032b5: ADD
000032b6: SWAP1
000032b7: DUP2
000032b8: MSTORE
000032b9: PUSH1 0x20
000032bb: ADD
000032bc: PUSH1 0x00
000032be: KECCAK256
000032bf: PUSH1 0x00
000032c1: CALLER
000032c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000032d7: AND
000032d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000032ed: AND
000032ee: DUP2
000032ef: MSTORE
000032f0: PUSH1 0x20
000032f2: ADD
000032f3: SWAP1
000032f4: DUP2
000032f5: MSTORE
000032f6: PUSH1 0x20
000032f8: ADD
000032f9: PUSH1 0x00
000032fb: KECCAK256
000032fc: DUP2
000032fd: SWAP1
000032fe: SSTORE
000032ff: POP
00003300: JUMPDEST
00003301: POP
00003302: POP
00003303: POP
00003304: POP
00003305: POP
00003306: POP
00003307: POP
00003308: POP
00003309: POP
0000330a: JUMP
0000330b: JUMPDEST
0000330c: PUSH1 0x00
0000330e: PUSH2 0x3319
00003311: DUP4
00003312: DUP4
00003313: GT
00003314: ISZERO
00003315: PUSH2 0x335a
00003318: JUMP
00003319: JUMPDEST
0000331a: DUP2
0000331b: DUP4
0000331c: SUB
0000331d: SWAP1
0000331e: POP
0000331f: JUMPDEST
00003320: SWAP3
00003321: SWAP2
00003322: POP
00003323: POP
00003324: JUMP
00003325: JUMPDEST
00003326: PUSH1 0x00
00003328: PUSH1 0x00
0000332a: DUP3
0000332b: DUP5
0000332c: MUL
0000332d: SWAP1
0000332e: POP
0000332f: PUSH2 0x334f
00003332: PUSH1 0x00
00003334: DUP6
00003335: EQ
00003336: DUP1
00003337: PUSH2 0x334a
0000333a: JUMPI
0000333b: POP
0000333c: DUP4
0000333d: DUP6
0000333e: DUP4
0000333f: DUP2
00003340: ISZERO
00003341: ISZERO
00003342: PUSH2 0x3347
00003345: JUMPI
00003346: INVALID
00003347: JUMPDEST
00003348: DIV
00003349: EQ
0000334a: JUMPDEST
0000334b: PUSH2 0x335a
0000334e: JUMP
0000334f: JUMPDEST
00003350: DUP1
00003351: SWAP2
00003352: POP
00003353: JUMPDEST
00003354: POP
00003355: SWAP3
00003356: SWAP2
00003357: POP
00003358: POP
00003359: JUMP
0000335a: JUMPDEST
0000335b: DUP1
0000335c: ISZERO
0000335d: ISZERO
0000335e: PUSH2 0x3366
00003361: JUMPI
00003362: PUSH2 0x0000
00003365: JUMP
00003366: JUMPDEST
00003367: JUMPDEST
00003368: POP
00003369: JUMP
0000336a: STOP
0000336b: LOG1
0000336c: PUSH6 0x627a7a723058
00003373: KECCAK256
00003374: UNKNOWN(0x0E)
00003375: STOP
00003376: CODESIZE
00003377: ADDRESS
00003378: UNKNOWN(0xE0)
00003379: ADDRESS
0000337a: UNKNOWN(0xA5)
0000337b: SWAP2
0000337c: GASLIMIT
0000337d: PUSH28

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xc556b38486aa080b41e0408b504536df71c1382089aa8183a4b928a26fb78fac
call_targets: 0xc3c12a9e63e466a3ba99e07f3ef1f38b8b81ae1b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc556b38486aa080b41e0408b504536df71c1382089aa8183a4b928a26fb78fac",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc3c12a9e63e466a3ba99e07f3ef1f38b8b81ae1b"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a19b14a",
            "selector": "0x0a19b14a",
            "calldata_variants": [
                "0x0a19b14a",
                "0x0a19b14a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b927666",
            "selector": "0x0b927666",
            "calldata_variants": [
                "0x0b927666",
                "0x0b9276660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x14577c55",
            "selector": "0x14577c55",
            "calldata_variants": [
                "0x14577c55",
                "0x14577c550000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x19774d43",
            "selector": "0x19774d43",
            "calldata_variants": [
                "0x19774d43",
                "0x19774d430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x278b8c0e",
            "selector": "0x278b8c0e",
            "calldata_variants": [
                "0x278b8c0e",
                "0x278b8c0e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x338b5dea",
            "selector": "0x338b5dea",
            "calldata_variants": [
                "0x338b5dea",
                "0x338b5dea0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2952,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3286,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4232,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 11,
    "guards_detected": [
        {
            "pc": 7713,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7837,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8200,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8367,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8497,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10116,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 11
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xc556b38486aa080b41e0408b504536df71c1382089aa8183a4b928a26fb78fac
call_targets: 0xc3c12a9e63e466a3ba99e07f3ef1f38b8b81ae1b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc556b38486aa080b41e0408b504536df71c1382089aa8183a4b928a26fb78fac",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc3c12a9e63e466a3ba99e07f3ef1f38b8b81ae1b"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a19b14a",
            "selector": "0x0a19b14a",
            "calldata_variants": [
                "0x0a19b14a",
                "0x0a19b14a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b927666",
            "selector": "0x0b927666",
            "calldata_variants": [
                "0x0b927666",
                "0x0b9276660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x14577c55",
            "selector": "0x14577c55",
            "calldata_variants": [
                "0x14577c55",
                "0x14577c550000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x19774d43",
            "selector": "0x19774d43",
            "calldata_variants": [
                "0x19774d43",
                "0x19774d430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x278b8c0e",
            "selector": "0x278b8c0e",
            "calldata_variants": [
                "0x278b8c0e",
                "0x278b8c0e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x338b5dea",
            "selector": "0x338b5dea",
            "calldata_variants": [
                "0x338b5dea",
                "0x338b5dea0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2952,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3286,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4232,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 11,
    "guards_detected": [
        {
            "pc": 7713,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7837,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8200,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8367,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8497,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10116,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}