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

Analysis Run

111fc845-b194-436e-a7e9-7581cc8811d0

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 5, 2026 12:52 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Authorization based on tx.origin
crit 0 high 0 proxy context implementation known
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
31632 report.consolidate complete 1 / 1 3 months ago
111590 artifact.fetch complete 1 / 3 1 week ago
111591 tool.cast_disasm complete 1 / 3 1 week ago
111592 analysis.bundle complete 1 / 3 1 week ago
111593 capability.graph complete 1 / 3 1 week ago
111594 detector.run complete 1 / 3 1 week ago
111595 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one‑time flags, and any potential issues would depend on unknown deployment state.
View stderr
[codex:494146] OpenAI Codex v0.77.0 (research preview)
[codex:494146] --------
[codex:494146] workdir: /tmp/codex-multi-jqzcj7qn
[codex:494146] model: gpt-5.2-codex
[codex:494146] provider: openai
[codex:494146] approval: never
[codex:494146] sandbox: read-only
[codex:494146] reasoning effort: xhigh
[codex:494146] reasoning summaries: auto
[codex:494146] session id: 019b8b9a-6d07-7d91-b289-7cffd068032e
[codex:494146] --------
[codex:494146] user
[codex:494146] 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:494146] 
[codex:494146] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:494146] 
[codex:494146] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:494146] - Gas inefficiency, code quality, or best practices
[codex:494146] - Theoretical vulnerabilities without a clear extraction path
[codex:494146] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:494146] - Issues requiring social engineering or off-chain coordination
[codex:494146] 
[codex:494146] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:494146] - CALL/DELEGATECALL with controllable destination or calldata
[codex:494146] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:494146] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:494146] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:494146] - External calls before state updates (reentrancy)
[codex:494146] - SELFDESTRUCT with controllable beneficiary
[codex:494146] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:494146] 
[codex:494146] For each finding, you MUST explain:
[codex:494146] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:494146] 2. The concrete sequence of transactions to extract value
[codex:494146] 3. Why you believe this is exploitable (not just suspicious)
[codex:494146] 
[codex:494146] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:494146] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:494146] 
[codex:494146] Output MUST be valid JSON matching the provided schema.
[codex:494146] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:494146] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:494146] mcp startup: no servers
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Reading BYTECODE_BUNDLE.txt**
[codex:494146] exec
[codex:494146] /bin/bash -lc ls in /tmp/codex-multi-jqzcj7qn succeeded in 6ms:
[codex:494146] BYTECODE_BUNDLE.txt
[codex:494146] codex-output-schema.json
[codex:494146] exec
[codex:494146] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-jqzcj7qn succeeded in 6ms:
[codex:494146] Runtime bytecode bundle for best-effort auditing.
[codex:494146] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:494146] 
[codex:494146] FILE: runtime_bytecode.hex
[codex:494146] 0x6080604052600436106101855760003560e01c806372963c6c116100d1578063c4d66de81161008a578063df23efd911610064578063df23efd91461092e578063e2fdcc171461096f578063f83ecf99146109b0578063fe3fbca314610a015761018c565b8063c4d66de814610802578063d2e8756114610853578063dd62ed3e146108a95761018c565b806372963c6c146105f9578063735de9f71461062457806395d89b4114610665578063a457c2d7146106f5578063a9059cbb14610766578063b2dda6b5146107d75761018c565b80632ff2e9dc1161013e57806342966c681161011857806342966c681461048757806347a1671a146104c257806356fa05df1461055357806370a08231146105945761018c565b80632ff2e9dc146103bd578063313ce567146103e857806339509351146104165761018c565b806306fdde0314610191578063095ea7b31461022157806318160ddd1461029257806323b872dd146102bd5780632e0f26251461034e5780632e4bb77c1461037c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610a66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e65780820151818401526020810190506101cb565b50505050905090810190601f1680156102135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022d57600080fd5b5061027a6004803603604081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b08565b60405180821515815260200191505060405180910390f35b34801561029e57600080fd5b506102a7610b26565b6040518082815260200191505060405180910390f35b3480156102c957600080fd5b50610336600480360360608110156102e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b30565b60405180821515815260200191505060405180910390f35b34801561035a57600080fd5b50610363610c09565b604051808260ff16815260200191505060405180910390f35b34801561038857600080fd5b50610391610c0e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103c957600080fd5b506103d2610c34565b6040518082815260200191505060405180910390f35b3480156103f457600080fd5b506103fd610c44565b604051808260ff16815260200191505060405180910390f35b34801561042257600080fd5b5061046f6004803603604081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c5b565b60405180821515815260200191505060405180910390f35b34801561049357600080fd5b506104c0600480360360208110156104aa57600080fd5b8101908080359060200190929190505050610d0e565b005b3480156104ce57600080fd5b50610551600480360360608110156104e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611320565b005b34801561055f57600080fd5b50610568611850565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105a057600080fd5b506105e3600480360360208110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611876565b6040518082815260200191505060405180910390f35b34801561060557600080fd5b5061060e6118bf565b6040518082815260200191505060405180910390f35b34801561063057600080fd5b506106396118c5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067157600080fd5b5061067a6118eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106ba57808201518184015260208101905061069f565b50505050905090810190601f1680156106e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561070157600080fd5b5061074e6004803603604081101561071857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061198d565b60405180821515815260200191505060405180910390f35b34801561077257600080fd5b506107bf6004803603604081101561078957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a5a565b60405180821515815260200191505060405180910390f35b3480156107e357600080fd5b506107ec611a78565b6040518082815260200191505060405180910390f35b34801561080e57600080fd5b506108516004803603602081101561082557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a7e565b005b34801561085f57600080fd5b5061088c6004803603602081101561087657600080fd5b8101908080359060200190929190505050611c7c565b604051808381526020018281526020019250505060405180910390f35b3480156108b557600080fd5b50610918600480360360408110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6e565b6040518082815260200191505060405180910390f35b34801561093a57600080fd5b50610943611ff5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097b57600080fd5b5061098461201b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109bc57600080fd5b506109ff600480360360208110156109d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612041565b005b348015610a0d57600080fd5b50610a3a60048036036020811015610a2457600080fd5b81019080803590602001909291905050506121d0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060688054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610afe5780601f10610ad357610100808354040283529160200191610afe565b820191906000526020600020905b815481529060010190602001808311610ae157829003601f168201915b5050505050905090565b6000610b1c610b1561220c565b8484612214565b6001905092915050565b6000606754905090565b6000610b3d84848461240b565b610bfe84610b4961220c565b610bf985604051806060016040528060288152602001613f7160289139606660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610baf61220c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b612214565b600190509392505050565b600881565b609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860ff16600a0a629896800281565b6000606a60009054906101000a900460ff16905090565b6000610d04610c6861220c565b84610cff8560666000610c7961220c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279090919063ffffffff16565b612214565b6001905092915050565b609760019054906101000a900460ff16610d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f574158473a207265656e7472616e742063616c6c00000000000000000000000081525060200191505060405180910390fd5b6000609760016101000a81548160ff021916908315150217905550610dbb610db661220c565b611876565b811115610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f574158473a20696e73756666696369656e742062616c616e636500000000000081525060200191505060405180910390fd5b6000610e76610e60609760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611876565b610e68610b26565b61281890919063ffffffff16565b905081811015610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180613ee86042913960600191505060405180910390fd5b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f5c57600080fd5b505afa158015610f70573d6000803e3d6000fd5b505050506040513d6020811015610f8657600080fd5b810190808051906020019092919050505090506000610fc083610fb2848761286290919063ffffffff16565b6128e890919063ffffffff16565b905060003073ffffffffffffffffffffffffffffffffffffffff16319050600061100585610ff7848961286290919063ffffffff16565b6128e890919063ffffffff16565b90506000609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561109257600080fd5b505afa1580156110a6573d6000803e3d6000fd5b505050506040513d60208110156110bc57600080fd5b8101908080519060200190929190505050905060006110f6876110e8848b61286290919063ffffffff16565b6128e890919063ffffffff16565b905061110961110361220c565b89612932565b60008311156111615761111a61220c565b73ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561115f573d6000803e3d6000fd5b505b60008511156111805761117b61117561220c565b86612af8565b830192505b600081111561127b57609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6111cf61220c565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561122357600080fd5b505af1158015611237573d6000803e3d6000fd5b505050506040513d602081101561124d57600080fd5b81019080805190602001909291905050505061127481609e5461279090919063ffffffff16565b609e819055505b61129083609c5461279090919063ffffffff16565b609c8190555061129e61220c565b73ffffffffffffffffffffffffffffffffffffffff167f4c60206a5c1de41f3376d1d60f0949d96cb682033c90b1c2d9d9a62d4c4120c089858460405180848152602001838152602001828152602001935050505060405180910390a2505050505050506001609760016101000a81548160ff02191690831515021790555050565b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611468576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561150c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b609760009054906101000a900460ff161561158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f574158473a20616c72656164792075706772616465640000000000000000000081525060200191505060405180910390fd5b6001609760006101000a81548160ff0219169083151502179055506001609760016101000a81548160ff02191690831515021790555085609760026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083609a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000609c819055506060600267ffffffffffffffff811180156116aa57600080fd5b506040519080825280602002602001820160405280156116d95781602001602082028036833780820191505090505b509050609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061170c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ae57600080fd5b505afa1580156117c2573d6000803e3d6000fd5b505050506040513d60208110156117d857600080fd5b8101908080519060200190929190505050816001815181106117f657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080609b9080519060200190611846929190613d1e565b5050505050505050565b609960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b609e5481565b609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060698054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119835780601f1061195857610100808354040283529160200191611983565b820191906000526020600020905b81548152906001019060200180831161196657829003601f168201915b5050505050905090565b6000611a5061199a61220c565b84611a4b856040518060600160405280602581526020016140b860259139606660006119c461220c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b612214565b6001905092915050565b6000611a6e611a6761220c565b848461240b565b6001905092915050565b609c5481565b600060019054906101000a900460ff1680611a9d5750611a9c612d94565b5b80611ab3575060008054906101000a900460ff16155b611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015611b58576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611bcc6040518060400160405280601481526020017f57415820476f7665726e616e636520546f6b656e0000000000000000000000008152506040518060400160405280600481526020017f5741584700000000000000000000000000000000000000000000000000000000815250612dab565b611bd66008612ebd565b611bec82600860ff16600a0a6298968002612edb565b600860ff16600a0a6298968002611c01610b26565b14611c57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806140316027913960400191505060405180910390fd5b8015611c785760008060016101000a81548160ff0219169083151502179055505b5050565b6000806000611cc5611caf609760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611876565b611cb7610b26565b61281890919063ffffffff16565b905083811015611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180613ee86042913960600191505060405180910390fd5b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dab57600080fd5b505afa158015611dbf573d6000803e3d6000fd5b505050506040513d6020811015611dd557600080fd5b810190808051906020019092919050505090506000611e0f83611e01848961286290919063ffffffff16565b6128e890919063ffffffff16565b905060003073ffffffffffffffffffffffffffffffffffffffff16319050611e5284611e44838a61286290919063ffffffff16565b6128e890919063ffffffff16565b95506000821115611e6b57611e66826130a4565b860195505b6000609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ef657600080fd5b505afa158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611f2057600080fd5b810190808051906020019092919050505090506000811115611f6457611f6185611f53838b61286290919063ffffffff16565b6128e890919063ffffffff16565b95505b5050505050915091565b6000606660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b609760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b609d60009054906101000a900460ff1615612168576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f574158473a20616c72656164792075706772616465643200000000000000000081525060200191505060405180910390fd5b6001609d60006101000a81548160ff02191690831515021790555081609d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000609e819055505050565b609b81815481106121dd57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061400d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613ec66022913960400191505060405180910390fd5b80606660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613fe86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612517576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613e816023913960400191505060405180910390fd5b6125228383836135b0565b61258e81604051806060016040528060268152602001613f2a60269139606560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262381606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279090919063ffffffff16565b606560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061277d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612742578082015181840152602081019050612727565b50505050905090810190601f16801561276f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061285a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126d0565b905092915050565b60008083141561287557600090506128e2565b600082840290508284828161288657fe5b04146128dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f506021913960400191505060405180910390fd5b809150505b92915050565b600061292a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135b5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613fc76021913960400191505060405180910390fd5b6129c4826000836135b0565b612a3081604051806060016040528060228152602001613ea460229139606560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b606560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a888160675461281890919063ffffffff16565b606781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612b69609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661367b9092919063ffffffff16565b6060609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5846000609b88426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252858181548152602001915080548015612c6857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612c1e575b50509650505050505050600060405180830381600087803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612cca57600080fd5b8101908080516040519392919084640100000000821115612cea57600080fd5b83820191506020820185811115612d0057600080fd5b8251866020820283011164010000000082111715612d1d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612d54578082015181840152602081019050612d39565b50505050905001604052505050905080612d796001835161281890919063ffffffff16565b81518110612d8357fe5b602002602001015191505092915050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff1680612dca5750612dc9612d94565b5b80612de0575060008054906101000a900460ff16155b612e35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612e85576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612e8d613840565b612e97838361393e565b8015612eb85760008060016101000a81548160ff0219169083151502179055505b505050565b80606a60006101000a81548160ff021916908360ff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b612f8a600083836135b0565b612f9f8160675461279090919063ffffffff16565b606781905550612ff781606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279090919063ffffffff16565b606560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561310f57600080fd5b505afa158015613123573d6000803e3d6000fd5b505050506040513d602081101561313957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a43905609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131f057600080fd5b505afa158015613204573d6000803e3d6000fd5b505050506040513d602081101561321a57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561329257600080fd5b505afa1580156132a6573d6000803e3d6000fd5b505050506040513d60208110156132bc57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f574158473a3a5061697220646f6573206e6f742065786973742100000000000081525060200191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156133bb57600080fd5b505afa1580156133cf573d6000803e3d6000fd5b505050506040513d60608110156133e557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060008290506000829050609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a157600080fd5b505afa1580156134b5573d6000803e3d6000fd5b505050506040513d60208110156134cb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161061356c57613567613546888361279090919063ffffffff16565b613559848a61286290919063ffffffff16565b6128e890919063ffffffff16565b6135a4565b6135a3613582888461279090919063ffffffff16565b613595838a61286290919063ffffffff16565b6128e890919063ffffffff16565b5b95505050505050919050565b505050565b60008083118290613661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561362657808201518184015260208101905061360b565b50505050905090810190601f1680156136535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161366d57fe5b049050809150509392505050565b6000811480613749575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561370c57600080fd5b505afa158015613720573d6000803e3d6000fd5b505050506040513d602081101561373657600080fd5b8101908080519060200190929190505050145b61379e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140826036913960400191505060405180910390fd5b61383b8363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613a88565b505050565b600060019054906101000a900460ff168061385f575061385e612d94565b5b80613875575060008054906101000a900460ff16155b6138ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561391a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561393b5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061395d575061395c612d94565b5b80613973575060008054906101000a900460ff16155b6139c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015613a18576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260689080519060200190613a2e929190613da8565b508160699080519060200190613a45929190613da8565b506012606a60006101000a81548160ff021916908360ff1602179055508015613a835760008060016101000a81548160ff0219169083151502179055505b505050565b613aa78273ffffffffffffffffffffffffffffffffffffffff16613cd3565b613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613b685780518252602082019150602081019050602083039250613b45565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613bca576040519150601f19603f3d011682016040523d82523d6000602084013e613bcf565b606091505b509150915081613c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115613ccd57808060200190516020811015613c6657600080fd5b8101908080519060200190929190505050613ccc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614058602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613d1557506000801b8214155b92505050919050565b828054828255906000526020600020908101928215613d97579160200282015b82811115613d965782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613d3e565b5b509050613da49190613e28565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613de957805160ff1916838001178555613e17565b82800160010185558215613e17579182015b82811115613e16578251825591602001919060010190613dfb565b5b509050613e249190613e63565b5090565b5b80821115613e5f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613e29565b5090565b5b80821115613e7c576000816000905550600101613e64565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f2061646472657373574158473a20696e70757420616d6f756e74206d75737420626520657175616c206f72206c6f776572207468616e2063697263756c6174696e6720737570706c792e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373574158473a20746f74616c537570706c79206d75737420657175616c203130206d696c6c696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209807adf4b0aff78ac26aab1d7c5e9190cc10d64ef380238625e39c862364dd7464736f6c634300060c0033
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing bytecode for exploitability**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re, binascii
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] # extract runtime bytecode hex after 'FILE: runtime_bytecode.hex'
[codex:494146] # Find 0x followed by hex
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] if not m:
[codex:494146]     print('not found')
[codex:494146]     raise SystemExit
[codex:494146] h=m.group(1)[2:]
[codex:494146] code=bytes.fromhex(h)
[codex:494146] 
[codex:494146] # Simple disassembler
[codex:494146] opcodes={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfA:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] # disassemble and find call-like opcodes
[codex:494146] call_ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i < len(code):
[codex:494146]     op=code[i]
[codex:494146]     name=opcodes.get(op, f'OP{op:02x}')
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,name,data.hex()))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,name,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] # print call sites with some context (prev few ops)
[codex:494146] for idx,(off,name,data) in enumerate(ops):
[codex:494146]     if name in ('CALL','CALLCODE','DELEGATECALL','STATICCALL','SELFDESTRUCT'):
[codex:494146]         start=max(0,idx-6)
[codex:494146]         ctx=ops[start:idx+1]
[codex:494146]         print('---',off,name)
[codex:494146]         for o in ctx:
[codex:494146]             print(o)
[codex:494146] 
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 42ms:
[codex:494146] --- 3935 STATICCALL
[codex:494146] (3928, 'PUSH1', '00')
[codex:494146] (3930, 'DUP1', None)
[codex:494146] (3931, 'REVERT', None)
[codex:494146] (3932, 'JUMPDEST', None)
[codex:494146] (3933, 'POP', None)
[codex:494146] (3934, 'GAS', None)
[codex:494146] (3935, 'STATICCALL', None)
[codex:494146] --- 4245 STATICCALL
[codex:494146] (4238, 'PUSH1', '00')
[codex:494146] (4240, 'DUP1', None)
[codex:494146] (4241, 'REVERT', None)
[codex:494146] (4242, 'JUMPDEST', None)
[codex:494146] (4243, 'POP', None)
[codex:494146] (4244, 'GAS', None)
[codex:494146] (4245, 'STATICCALL', None)
[codex:494146] --- 4425 CALL
[codex:494146] (4419, 'DUP4', None)
[codex:494146] (4420, 'SUB', None)
[codex:494146] (4421, 'DUP2', None)
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing CALL instructions in bytecode**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] # Build op list
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,name,data.hex()))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,name,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] call_offsets=[(idx,off,name) for idx,(off,name,_) in enumerate(ops) if name in ('CALL','DELEGATECALL','CALLCODE','SELFDESTRUCT')]
[codex:494146] 
[codex:494146] for idx,off,name in call_offsets:
[codex:494146]     print('\\n===',name,'at',off,'===')
[codex:494146]     start=max(0,idx-30)
[codex:494146]     end=min(len(ops),idx+1)
[codex:494146]     for o in ops[start:end]:
[codex:494146]         print(o)
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 63ms:
[codex:494146] 
[codex:494146] === CALL at 4425 ===
[codex:494146] (4364, 'DUP4', None)
[codex:494146] (4365, 'GT', None)
[codex:494146] (4366, 'ISZERO', None)
[codex:494146] (4367, 'PUSH2', '1161')
[codex:494146] (4370, 'JUMPI', None)
[codex:494146] (4371, 'PUSH2', '111a')
[codex:494146] (4374, 'PUSH2', '220c')
[codex:494146] (4377, 'JUMP', None)
[codex:494146] (4378, 'JUMPDEST', None)
[codex:494146] (4379, 'PUSH20', 'ffffffffffffffffffffffffffffffffffffffff')
[codex:494146] (4400, 'AND', None)
[codex:494146] (4401, 'PUSH2', '08fc')
[codex:494146] (4404, 'DUP5', None)
[codex:494146] (4405, 'SWAP1', None)
[codex:494146] (4406, 'DUP2', None)
[codex:494146] (4407, 'ISZERO', None)
[codex:494146] (4408, 'MUL', None)
[codex:494146] (4409, 'SWAP1', None)
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Examining critical CALL instructions**
[codex:494146] 
[codex:494146] I'm focusing on specific CALLs at key offsets, suspecting they involve SafeERC20 token calls with code size checks to prevent issues. I'll consider possible reentrancy risks, especially if external calls go out before state changes, but I see reentrancy guards indicated in the bytecode. I want to decode functions and storage slots to clarify upgradeability and admin control checks, and I'll check if I can use an EVM disassembler tool to help map the contract’s functions.
[codex:494146] exec
[codex:494146] /bin/bash -lc 'which evm || which hevm || which ethereumjs-asm || which disasm' in /tmp/codex-multi-jqzcj7qn exited 1 in 11ms:
[codex:494146] 
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Planning function selector parsing**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] # Simple pattern search for PUSH4 selector, EQ, PUSH2 dest, JUMPI
[codex:494146] # We'll disassemble sequentially and track patterns.
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 0x14:'EQ',0x57:'JUMPI',0x63:'PUSH4',0x61:'PUSH2'
[codex:494146] }
[codex:494146] 
[codex:494146] # decode op list with push data
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] selectors={}
[codex:494146] for idx in range(len(ops)-3):
[codex:494146]     off,op,data = ops[idx]
[codex:494146]     if op==0x63: # PUSH4
[codex:494146]         sel=int.from_bytes(data,'big')
[codex:494146]         # look ahead for EQ, PUSH2, JUMPI
[codex:494146]         if idx+3 < len(ops):
[codex:494146]             o1=ops[idx+1][1]; o2=ops[idx+2]; o3=ops[idx+3][1]
[codex:494146]             if o1==0x14 and o2[1]==0x61 and o3==0x57:
[codex:494146]                 dest=int.from_bytes(o2[2],'big')
[codex:494146]                 selectors[sel]=dest
[codex:494146] 
[codex:494146] # print selectors sorted by dest
[codex:494146] for sel,dest in sorted(selectors.items(), key=lambda x:x[1]):
[codex:494146]     print(f\"0x{sel:08x} -> 0x{dest:04x}\")
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 34ms:
[codex:494146] 0x06fdde03 -> 0x0191
[codex:494146] 0x095ea7b3 -> 0x0221
[codex:494146] 0x18160ddd -> 0x0292
[codex:494146] 0x23b872dd -> 0x02bd
[codex:494146] 0x2e0f2625 -> 0x034e
[codex:494146] 0x2e4bb77c -> 0x037c
[codex:494146] 0x2ff2e9dc -> 0x03bd
[codex:494146] 0x313ce567 -> 0x03e8
[codex:494146] 0x39509351 -> 0x0416
[codex:494146] 0x42966c68 -> 0x0487
[codex:494146] 0x47a1671a -> 0x04c2
[codex:494146] 0x56fa05df -> 0x0553
[codex:494146] 0x70a08231 -> 0x0594
[codex:494146] 0x72963c6c -> 0x05f9
[codex:494146] 0x735de9f7 -> 0x0624
[codex:494146] 0x95d89b41 -> 0x0665
[codex:494146] 0xa457c2d7 -> 0x06f5
[codex:494146] 0xa9059cbb -> 0x0766
[codex:494146] 0xb2dda6b5 -> 0x07d7
[codex:494146] 0xc4d66de8 -> 0x0802
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Planning function identification strategy**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] # Disassemble
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] # mapping selectors to dest from previous script
[codex:494146] selectors={
[codex:494146] 0x06fdde03:0x0191,0x095ea7b3:0x0221,0x18160ddd:0x0292,0x23b872dd:0x02bd,0x2e0f2625:0x034e,0x2e4bb77c:0x037c,0x2ff2e9dc:0x03bd,0x313ce567:0x03e8,0x39509351:0x0416,0x42966c68:0x0487,0x47a1671a:0x04c2,0x56fa05df:0x0553,0x70a08231:0x0594,0x72963c6c:0x05f9,0x735de9f7:0x0624,0x95d89b41:0x0665,0xa457c2d7:0x06f5,0xa9059cbb:0x0766,0xb2dda6b5:0x07d7,0xc4d66de8:0x0802,0xd2e87561:0x0853,0xdd62ed3e:0x08a9,0xdf23efd9:0x092e,0xe2fdcc17:0x096f,0xf83ecf99:0x09b0,0xfe3fbca3:0x0a01
[codex:494146] }
[codex:494146] 
[codex:494146] # build index from offset to ops index
[codex:494146] index_by_off={off:idx for idx,(off,_,_) in enumerate(ops)}
[codex:494146] 
[codex:494146] # function to print first N ops from dest
[codex:494146] 
[codex:494146] def print_ops(dest, count=80):
[codex:494146]     idx=index_by_off.get(dest)
[codex:494146]     if idx is None:
[codex:494146]         print('no dest',dest)
[codex:494146]         return
[codex:494146]     print(f'-- func at 0x{dest:04x} --')
[codex:494146]     for o in ops[idx:idx+count]:
[codex:494146]         off,op,data=o
[codex:494146]         name=opnames.get(op,f'OP{op:02x}')
[codex:494146]         if data is not None:
[codex:494146]             print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]         else:
[codex:494146]             print(f'{off:04x}: {name}')
[codex:494146]     print()
[codex:494146] 
[codex:494146] for sel,dest in selectors.items():
[codex:494146]     print(f'selector 0x{sel:08x} -> 0x{dest:04x}')
[codex:494146]     print_ops(dest,60)
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 39ms:
[codex:494146] selector 0x06fdde03 -> 0x0191
[codex:494146] -- func at 0x0191 --
[codex:494146] 0191: JUMPDEST
[codex:494146] 0192: CALLVALUE
[codex:494146] 0193: DUP1
[codex:494146] 0194: ISZERO
[codex:494146] 0195: PUSH2 019d
[codex:494146] 0198: JUMPI
[codex:494146] 0199: PUSH1 00
[codex:494146] 019b: DUP1
[codex:494146] 019c: REVERT
[codex:494146] 019d: JUMPDEST
[codex:494146] 019e: POP
[codex:494146] 019f: PUSH2 01a6
[codex:494146] 01a2: PUSH2 0a66
[codex:494146] 01a5: JUMP
[codex:494146] 01a6: JUMPDEST
[codex:494146] 01a7: PUSH1 40
[codex:494146] 01a9: MLOAD
[codex:494146] 01aa: DUP1
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing internal functions and storage writes**
[codex:494146] 
[codex:494146] I’m focusing on internal function addresses to map key logic segments and identify exploit paths. Since automated tools aren’t available, I’ll manually scan for SSTORE instructions to pinpoint storage writes, then cross-reference these with caller checks to see if any public functions allow unauthorized token transfers or ownership changes. Let’s explore these low-level operations carefully!
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] # disassemble
[codex:494146] opnames={
[codex:494146] 0x55:'SSTORE',0x54:'SLOAD',0x33:'CALLER',0x32:'ORIGIN',0x14:'EQ',0x15:'ISZERO',0x57:'JUMPI',0x56:'JUMP',0x5b:'JUMPDEST',0x63:'PUSH4',0x61:'PUSH2',0x60:'PUSH1',0x73:'PUSH20',0x52:'MSTORE',0x51:'MLOAD',0x80:'DUP1',0x90:'SWAP1',0xf1:'CALL',0xf4:'DELEGATECALL'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] # collect SSTORE occurrences
[codex:494146] sstore_indices=[idx for idx,(off,op,_) in enumerate(ops) if op==0x55]
[codex:494146] 
[codex:494146] for idx in sstore_indices:
[codex:494146]     off,op,_=ops[idx]
[codex:494146]     print('\\n=== SSTORE at',hex(off),'===')
[codex:494146]     start=max(0,idx-20)
[codex:494146]     end=min(len(ops),idx+6)
[codex:494146]     for o in ops[start:end]:
[codex:494146]         off2,op2,data2=o
[codex:494146]         name=opnames.get(op2,None)
[codex:494146]         if name is None:
[codex:494146]             # decode generic
[codex:494146]             if 0x60<=op2<=0x7f:
[codex:494146]                 name=f'PUSH{op2-0x5f}'
[codex:494146]             else:
[codex:494146]                 name=f'OP{op2:02x}'
[codex:494146]         if data2 is not None:
[codex:494146]             print(f'{off2:04x}: {name} {data2.hex()}')
[codex:494146]         else:
[codex:494146]             print(f'{off2:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 35ms:
[codex:494146] 
[codex:494146] === SSTORE at 0xdaa ===
[codex:494146] 0d90: JUMPDEST
[codex:494146] 0d91: PUSH1 00
[codex:494146] 0d93: PUSH1 97
[codex:494146] 0d95: PUSH1 01
[codex:494146] 0d97: PUSH2 0100
[codex:494146] 0d9a: OP0a
[codex:494146] 0d9b: OP81
[codex:494146] 0d9c: SLOAD
[codex:494146] 0d9d: OP81
[codex:494146] 0d9e: PUSH1 ff
[codex:494146] 0da0: OP02
[codex:494146] 0da1: OP19
[codex:494146] 0da2: OP16
[codex:494146] 0da3: SWAP1
[codex:494146] 0da4: OP83
[codex:494146] 0da5: ISZERO
[codex:494146] 0da6: ISZERO
[codex:494146] 0da7: OP02
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing internal function addresses and opcodes**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] index_by_off={off:idx for idx,(off,_,_) in enumerate(ops)}
[codex:494146] 
[codex:494146] funcs=[0x0a66,0x0b08,0x0b26,0x0b30,0x0c09,0x0c0e,0x0c34,0x0c44,0x0c5b,0x0d0e,0x1320,0x1850,0x1876,0x18bf,0x18c5,0x18eb,0x198d,0x1a5a,0x1a78,0x1a7e,0x1c7c,0x1f6e,0x1ff5,0x201b,0x2041,0x21d0]
[codex:494146] 
[codex:494146] for dest in funcs:
[codex:494146]     idx=index_by_off.get(dest)
[codex:494146]     if idx is None:
[codex:494146]         print('missing',hex(dest))
[codex:494146]         continue
[codex:494146]     print(f'\\n-- internal at 0x{dest:04x} --')
[codex:494146]     for o in ops[idx:idx+120]:
[codex:494146]         off,op,data=o
[codex:494146]         name=opnames.get(op,f'OP{op:02x}')
[codex:494146]         if data is not None:
[codex:494146]             print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]         else:
[codex:494146]             print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 37ms:
[codex:494146] 
[codex:494146] -- internal at 0x0a66 --
[codex:494146] 0a66: JUMPDEST
[codex:494146] 0a67: PUSH1 60
[codex:494146] 0a69: PUSH1 68
[codex:494146] 0a6b: DUP1
[codex:494146] 0a6c: SLOAD
[codex:494146] 0a6d: PUSH1 01
[codex:494146] 0a6f: DUP2
[codex:494146] 0a70: PUSH1 01
[codex:494146] 0a72: AND
[codex:494146] 0a73: ISZERO
[codex:494146] 0a74: PUSH2 0100
[codex:494146] 0a77: MUL
[codex:494146] 0a78: SUB
[codex:494146] 0a79: AND
[codex:494146] 0a7a: PUSH1 02
[codex:494146] 0a7c: SWAP1
[codex:494146] 0a7d: DIV
[codex:494146] 0a7e: DUP1
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing reentrancy-guarded function logic**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x0d0e
[codex:494146] end=0x1320
[codex:494146] # print opcodes between
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 40ms:
[codex:494146] 0d0e: JUMPDEST
[codex:494146] 0d0f: PUSH1 97
[codex:494146] 0d11: PUSH1 01
[codex:494146] 0d13: SWAP1
[codex:494146] 0d14: SLOAD
[codex:494146] 0d15: SWAP1
[codex:494146] 0d16: PUSH2 0100
[codex:494146] 0d19: EXP
[codex:494146] 0d1a: SWAP1
[codex:494146] 0d1b: DIV
[codex:494146] 0d1c: PUSH1 ff
[codex:494146] 0d1e: AND
[codex:494146] 0d1f: PUSH2 0d90
[codex:494146] 0d22: JUMPI
[codex:494146] 0d23: PUSH1 40
[codex:494146] 0d25: MLOAD
[codex:494146] 0d26: PUSH32 08c379a000000000000000000000000000000000000000000000000000000000
[codex:494146] 0d47: DUP2
[codex:494146] 0d48: MSTORE
[codex:494146] 0d49: PUSH1 04
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing complex functions and access controls**
[codex:494146] 
[codex:494146] I'm examining the complex function at 0x0d0e, focusing on its reentrancy guard, balance checks, external token interactions, and potential ETH transfers. I'm also investigating whether key functions like the initializer or upgrader have proper access controls or if unprotected calls could lead to exploitable token or ETH drains. This involves tracing storage slots, internal calls, and checking for owner or initialization flags within the bytecode.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x1320
[codex:494146] end=0x1760
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 33ms:
[codex:494146] 1320: JUMPDEST
[codex:494146] 1321: DUP3
[codex:494146] 1322: PUSH1 00
[codex:494146] 1324: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1339: AND
[codex:494146] 133a: DUP2
[codex:494146] 133b: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1350: AND
[codex:494146] 1351: EQ
[codex:494146] 1352: ISZERO
[codex:494146] 1353: PUSH2 13c4
[codex:494146] 1356: JUMPI
[codex:494146] 1357: PUSH1 40
[codex:494146] 1359: MLOAD
[codex:494146] 135a: PUSH32 08c379a000000000000000000000000000000000000000000000000000000000
[codex:494146] 137b: DUP2
[codex:494146] 137c: MSTORE
[codex:494146] 137d: PUSH1 04
[codex:494146] 137f: ADD
[codex:494146] 1380: DUP1
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Continuing to explore further**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x1750
[codex:494146] end=0x1860
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 32ms:
[codex:494146] 1751: EXP
[codex:494146] 1752: SWAP1
[codex:494146] 1753: DIV
[codex:494146] 1754: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1769: AND
[codex:494146] 176a: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 177f: AND
[codex:494146] 1780: PUSH4 ad5c4648
[codex:494146] 1785: PUSH1 40
[codex:494146] 1787: MLOAD
[codex:494146] 1788: DUP2
[codex:494146] 1789: PUSH4 ffffffff
[codex:494146] 178e: AND
[codex:494146] 178f: PUSH1 e0
[codex:494146] 1791: SHL
[codex:494146] 1792: DUP2
[codex:494146] 1793: MSTORE
[codex:494146] 1794: PUSH1 04
[codex:494146] 1796: ADD
[codex:494146] 1797: PUSH1 20
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing initialization and upgrade vulnerabilities**
[codex:494146] 
[codex:494146] I'm mapping out how the initialization function sets contract addresses and arrays in storage, likely related to swap paths or router setup, noting it allows anyone to call it once if uninitialized. Then I examine upgrade-related functions that set upgrade addresses without access control, which could let an attacker replace upgrade targets with malicious contracts. I explore how these slots are used in token transfer calls that might let attackers drain tokens by manipulating upgrade addresses, digging into the detailed EVM call and storage usage patterns. There's a lot here about potential misuses of upgrade mechanisms and token transfers tied to those storage slots.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x1c7c
[codex:494146] end=0x1f6e
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 40ms:
[codex:494146] 1c7c: JUMPDEST
[codex:494146] 1c7d: PUSH1 00
[codex:494146] 1c7f: DUP1
[codex:494146] 1c80: PUSH1 00
[codex:494146] 1c82: PUSH2 1cc5
[codex:494146] 1c85: PUSH2 1caf
[codex:494146] 1c88: PUSH1 97
[codex:494146] 1c8a: PUSH1 02
[codex:494146] 1c8c: SWAP1
[codex:494146] 1c8d: SLOAD
[codex:494146] 1c8e: SWAP1
[codex:494146] 1c8f: PUSH2 0100
[codex:494146] 1c92: EXP
[codex:494146] 1c93: SWAP1
[codex:494146] 1c94: DIV
[codex:494146] 1c95: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1caa: AND
[codex:494146] 1cab: PUSH2 1876
[codex:494146] 1cae: JUMP
[codex:494146] 1caf: JUMPDEST
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing contract function behaviors**
[codex:494146] 
[codex:494146] I'm carefully examining several contract functions, focusing on their storage slot uses, conditions, and operations. It seems one function calculates token upgrade amounts with no token transfers, likely a view, while another looks like an initialization setup for an ERC20 token, setting name, symbol, decimals, and flags. I’m trying to understand if initialization can be called by anyone, any safeguards, and whether token minting occurs during it. Next, I'll look inside related helper functions to clarify token minting and state setups.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x1a7e
[codex:494146] end=0x1c80
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 32ms:
[codex:494146] 1a7e: JUMPDEST
[codex:494146] 1a7f: PUSH1 00
[codex:494146] 1a81: PUSH1 01
[codex:494146] 1a83: SWAP1
[codex:494146] 1a84: SLOAD
[codex:494146] 1a85: SWAP1
[codex:494146] 1a86: PUSH2 0100
[codex:494146] 1a89: EXP
[codex:494146] 1a8a: SWAP1
[codex:494146] 1a8b: DIV
[codex:494146] 1a8c: PUSH1 ff
[codex:494146] 1a8e: AND
[codex:494146] 1a8f: DUP1
[codex:494146] 1a90: PUSH2 1a9d
[codex:494146] 1a93: JUMPI
[codex:494146] 1a94: POP
[codex:494146] 1a95: PUSH2 1a9c
[codex:494146] 1a98: PUSH2 2d94
[codex:494146] 1a9b: JUMP
[codex:494146] 1a9c: JUMPDEST
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing contract initializers**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] for start,end in [(0x2dab,0x2f50),(0x2ebd,0x2f10),(0x2edb,0x2f10)]:
[codex:494146]     print(f'\\n-- {hex(start)} to {hex(end)} --')
[codex:494146]     for off,op,data in ops:
[codex:494146]         if off<start: continue
[codex:494146]         if off>=end: break
[codex:494146]         name=opnames.get(op,f'OP{op:02x}')
[codex:494146]         if data is not None:
[codex:494146]             print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]         else:
[codex:494146]             print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 35ms:
[codex:494146] 
[codex:494146] -- 0x2dab to 0x2f50 --
[codex:494146] 2dab: JUMPDEST
[codex:494146] 2dac: PUSH1 00
[codex:494146] 2dae: PUSH1 01
[codex:494146] 2db0: SWAP1
[codex:494146] 2db1: SLOAD
[codex:494146] 2db2: SWAP1
[codex:494146] 2db3: PUSH2 0100
[codex:494146] 2db6: EXP
[codex:494146] 2db7: SWAP1
[codex:494146] 2db8: DIV
[codex:494146] 2db9: PUSH1 ff
[codex:494146] 2dbb: AND
[codex:494146] 2dbc: DUP1
[codex:494146] 2dbd: PUSH2 2dca
[codex:494146] 2dc0: JUMPI
[codex:494146] 2dc1: POP
[codex:494146] 2dc2: PUSH2 2dc9
[codex:494146] 2dc5: PUSH2 2d94
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing initialization and upgrade functions**
[codex:494146] 
[codex:494146] I'm carefully tracing the initializer and minting logic, noting how an uninitialized contract could let anyone mint the full supply. I’m also scrutinizing upgrade-setting functions that might let an attacker hijack token upgrade addresses if not properly restricted, though the actual exploitability depends heavily on contract state and token balances.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x2b00
[codex:494146] end=0x2d90
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 33ms:
[codex:494146] 2b00: PUSH1 00
[codex:494146] 2b02: SWAP1
[codex:494146] 2b03: SLOAD
[codex:494146] 2b04: SWAP1
[codex:494146] 2b05: PUSH2 0100
[codex:494146] 2b08: EXP
[codex:494146] 2b09: SWAP1
[codex:494146] 2b0a: DIV
[codex:494146] 2b0b: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 2b20: AND
[codex:494146] 2b21: DUP4
[codex:494146] 2b22: PUSH1 98
[codex:494146] 2b24: PUSH1 00
[codex:494146] 2b26: SWAP1
[codex:494146] 2b27: SLOAD
[codex:494146] 2b28: SWAP1
[codex:494146] 2b29: PUSH2 0100
[codex:494146] 2b2c: EXP
[codex:494146] 2b2d: SWAP1
[codex:494146] 2b2e: DIV
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing function selectors and access control**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] 
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146]     op=code[i]
[codex:494146]     if 0x60 <= op <= 0x7f:
[codex:494146]         n=op-0x5f
[codex:494146]         data=code[i+1:i+1+n]
[codex:494146]         ops.append((i,op,data))
[codex:494146]         i+=1+n
[codex:494146]     else:
[codex:494146]         ops.append((i,op,None))
[codex:494146]         i+=1
[codex:494146] 
[codex:494146] start=0x18bf
[codex:494146] end=0x18eb
[codex:494146] for off,op,data in ops:
[codex:494146]     if off<start: continue
[codex:494146]     if off>=end: break
[codex:494146]     name=opnames.get(op,f'OP{op:02x}')
[codex:494146]     if data is not None:
[codex:494146]         print(f'{off:04x}: {name} {data.hex()}')
[codex:494146]     else:
[codex:494146]         print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 34ms:
[codex:494146] 18bf: JUMPDEST
[codex:494146] 18c0: PUSH1 9e
[codex:494146] 18c2: SLOAD
[codex:494146] 18c3: DUP2
[codex:494146] 18c4: JUMP
[codex:494146] 18c5: JUMPDEST
[codex:494146] 18c6: PUSH1 9a
[codex:494146] 18c8: PUSH1 00
[codex:494146] 18ca: SWAP1
[codex:494146] 18cb: SLOAD
[codex:494146] 18cc: SWAP1
[codex:494146] 18cd: PUSH2 0100
[codex:494146] 18d0: EXP
[codex:494146] 18d1: SWAP1
[codex:494146] 18d2: DIV
[codex:494146] 18d3: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 18e8: AND
[codex:494146] 18e9: DUP2
[codex:494146] 18ea: JUMP
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing potential upgrade-related exploits**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] # find occurrences of push2 2b69
[codex:494146] pattern=bytes.fromhex('61 2b69')
[codex:494146] for i in range(len(code)-3):
[codex:494146]     if code[i:i+3]==pattern:
[codex:494146]         print(hex(i))
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 31ms:
[codex:494146] 0x2afb
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Tracing function calls**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] # disassemble around 0x2af0
[codex:494146] opnames={
[codex:494146] 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:494146] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:494146] 0x20:'SHA3',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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:494146] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:494146] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146] 
[codex:494146] # disassemble around 0x2ae0-0x2b10
[codex:494146] 
[codex:494146] def disasm(start,end):
[codex:494146]     i=start
[codex:494146]     while i<end:
[codex:494146]         op=code[i]
[codex:494146]         name=opnames.get(op,f'OP{op:02x}')
[codex:494146]         if 0x60 <= op <= 0x7f:
[codex:494146]             n=op-0x5f
[codex:494146]             data=code[i+1:i+1+n]
[codex:494146]             print(f'{i:04x}: {name} {data.hex()}')
[codex:494146]             i+=1+n
[codex:494146]         else:
[codex:494146]             print(f'{i:04x}: {name}')
[codex:494146]             i+=1
[codex:494146] 
[codex:494146] disasm(0x2ae0,0x2b20)
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 39ms:
[codex:494146] 2ae0: PUSH1 40
[codex:494146] 2ae2: MLOAD
[codex:494146] 2ae3: DUP1
[codex:494146] 2ae4: DUP3
[codex:494146] 2ae5: DUP2
[codex:494146] 2ae6: MSTORE
[codex:494146] 2ae7: PUSH1 20
[codex:494146] 2ae9: ADD
[codex:494146] 2aea: SWAP2
[codex:494146] 2aeb: POP
[codex:494146] 2aec: POP
[codex:494146] 2aed: PUSH1 40
[codex:494146] 2aef: MLOAD
[codex:494146] 2af0: DUP1
[codex:494146] 2af1: SWAP2
[codex:494146] 2af2: SUB
[codex:494146] 2af3: SWAP1
[codex:494146] 2af4: LOG3
[codex:494146] 2af5: POP
[codex:494146] 2af6: POP
[codex:494146] 
[codex:494146] thinking
[codex:494146] **Analyzing bytecode for vulnerabilities**
[codex:494146] 
[codex:494146] I'm confirming that the function at 0x2af8 is internal and called only during upgrades, not externally accessible. I checked for direct storage writes to ownership slots using caller data and found none. Since no exploitable paths emerged from static bytecode analysis, I'll prepare a JSON response indicating no findings, while noting the limits of bytecode-only assessment as instructed.
[codex:494146] codex
[codex:494146] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one‑time flags, and any potential issues would depend on unknown deployment state.","findings":[]}
[codex:494146] tokens used
[codex:494146] 345,542
[codex:494146] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one‑time flags, and any potential issues would depend on unknown deployment state.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-05T00:52:51.231466+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one\u2011time flags, and any potential issues would depend on unknown deployment state.",
    "raw_final": {
        "summary": "No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one\u2011time flags, and any potential issues would depend on unknown deployment state.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
15
EXT*/BALANCE
18
Total opcodes
8466
Flags
delegatecall_present heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0185
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x72963c6c
00000019: GT
0000001a: PUSH2 0x00d1
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xc4d66de8
00000024: GT
00000025: PUSH2 0x008a
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xdf23efd9
0000002f: GT
00000030: PUSH2 0x0064
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xdf23efd9
0000003a: EQ
0000003b: PUSH2 0x092e
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe2fdcc17
00000045: EQ
00000046: PUSH2 0x096f
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf83ecf99
00000050: EQ
00000051: PUSH2 0x09b0
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfe3fbca3
0000005b: EQ
0000005c: PUSH2 0x0a01
0000005f: JUMPI
00000060: PUSH2 0x018c
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xc4d66de8
0000006b: EQ
0000006c: PUSH2 0x0802
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xd2e87561
00000076: EQ
00000077: PUSH2 0x0853
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xdd62ed3e
00000081: EQ
00000082: PUSH2 0x08a9
00000085: JUMPI
00000086: PUSH2 0x018c
00000089: JUMP
0000008a: JUMPDEST
0000008b: DUP1
0000008c: PUSH4 0x72963c6c
00000091: EQ
00000092: PUSH2 0x05f9
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0x735de9f7
0000009c: EQ
0000009d: PUSH2 0x0624
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x95d89b41
000000a7: EQ
000000a8: PUSH2 0x0665
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0xa457c2d7
000000b2: EQ
000000b3: PUSH2 0x06f5
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0xa9059cbb
000000bd: EQ
000000be: PUSH2 0x0766
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0xb2dda6b5
000000c8: EQ
000000c9: PUSH2 0x07d7
000000cc: JUMPI
000000cd: PUSH2 0x018c
000000d0: JUMP
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x2ff2e9dc
000000d8: GT
000000d9: PUSH2 0x013e
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x42966c68
000000e3: GT
000000e4: PUSH2 0x0118
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x42966c68
000000ee: EQ
000000ef: PUSH2 0x0487
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x47a1671a
000000f9: EQ
000000fa: PUSH2 0x04c2
000000fd: JUMPI
000000fe: DUP1
000000ff: PUSH4 0x56fa05df
00000104: EQ
00000105: PUSH2 0x0553
00000108: JUMPI
00000109: DUP1
0000010a: PUSH4 0x70a08231
0000010f: EQ
00000110: PUSH2 0x0594
00000113: JUMPI
00000114: PUSH2 0x018c
00000117: JUMP
00000118: JUMPDEST
00000119: DUP1
0000011a: PUSH4 0x2ff2e9dc
0000011f: EQ
00000120: PUSH2 0x03bd
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x313ce567
0000012a: EQ
0000012b: PUSH2 0x03e8
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x39509351
00000135: EQ
00000136: PUSH2 0x0416
00000139: JUMPI
0000013a: PUSH2 0x018c
0000013d: JUMP
0000013e: JUMPDEST
0000013f: DUP1
00000140: PUSH4 0x06fdde03
00000145: EQ
00000146: PUSH2 0x0191
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH4 0x095ea7b3
00000150: EQ
00000151: PUSH2 0x0221
00000154: JUMPI
00000155: DUP1
00000156: PUSH4 0x18160ddd
0000015b: EQ
0000015c: PUSH2 0x0292
0000015f: JUMPI
00000160: DUP1
00000161: PUSH4 0x23b872dd
00000166: EQ
00000167: PUSH2 0x02bd
0000016a: JUMPI
0000016b: DUP1
0000016c: PUSH4 0x2e0f2625
00000171: EQ
00000172: PUSH2 0x034e
00000175: JUMPI
00000176: DUP1
00000177: PUSH4 0x2e4bb77c
0000017c: EQ
0000017d: PUSH2 0x037c
00000180: JUMPI
00000181: PUSH2 0x018c
00000184: JUMP
00000185: JUMPDEST
00000186: CALLDATASIZE
00000187: PUSH2 0x018c
0000018a: JUMPI
0000018b: STOP
0000018c: JUMPDEST
0000018d: PUSH1 0x00
0000018f: DUP1
00000190: REVERT
00000191: JUMPDEST
00000192: CALLVALUE
00000193: DUP1
00000194: ISZERO
00000195: PUSH2 0x019d
00000198: JUMPI
00000199: PUSH1 0x00
0000019b: DUP1
0000019c: REVERT
0000019d: JUMPDEST
0000019e: POP
0000019f: PUSH2 0x01a6
000001a2: PUSH2 0x0a66
000001a5: JUMP
000001a6: JUMPDEST
000001a7: PUSH1 0x40
000001a9: MLOAD
000001aa: DUP1
000001ab: DUP1
000001ac: PUSH1 0x20
000001ae: ADD
000001af: DUP3
000001b0: DUP2
000001b1: SUB
000001b2: DUP3
000001b3: MSTORE
000001b4: DUP4
000001b5: DUP2
000001b6: DUP2
000001b7: MLOAD
000001b8: DUP2
000001b9: MSTORE
000001ba: PUSH1 0x20
000001bc: ADD
000001bd: SWAP2
000001be: POP
000001bf: DUP1
000001c0: MLOAD
000001c1: SWAP1
000001c2: PUSH1 0x20
000001c4: ADD
000001c5: SWAP1
000001c6: DUP1
000001c7: DUP4
000001c8: DUP4
000001c9: PUSH1 0x00
000001cb: JUMPDEST
000001cc: DUP4
000001cd: DUP2
000001ce: LT
000001cf: ISZERO
000001d0: PUSH2 0x01e6
000001d3: JUMPI
000001d4: DUP1
000001d5: DUP3
000001d6: ADD
000001d7: MLOAD
000001d8: DUP2
000001d9: DUP5
000001da: ADD
000001db: MSTORE
000001dc: PUSH1 0x20
000001de: DUP2
000001df: ADD
000001e0: SWAP1
000001e1: POP
000001e2: PUSH2 0x01cb
000001e5: JUMP
000001e6: JUMPDEST
000001e7: POP
000001e8: POP
000001e9: POP
000001ea: POP
000001eb: SWAP1
000001ec: POP
000001ed: SWAP1
000001ee: DUP2
000001ef: ADD
000001f0: SWAP1
000001f1: PUSH1 0x1f
000001f3: AND
000001f4: DUP1
000001f5: ISZERO
000001f6: PUSH2 0x0213
000001f9: JUMPI
000001fa: DUP1
000001fb: DUP3
000001fc: SUB
000001fd: DUP1
000001fe: MLOAD
000001ff: PUSH1 0x01
00000201: DUP4
00000202: PUSH1 0x20
00000204: SUB
00000205: PUSH2 0x0100
00000208: EXP
00000209: SUB
0000020a: NOT
0000020b: AND
0000020c: DUP2
0000020d: MSTORE
0000020e: PUSH1 0x20
00000210: ADD
00000211: SWAP2
00000212: POP
00000213: JUMPDEST
00000214: POP
00000215: SWAP3
00000216: POP
00000217: POP
00000218: POP
00000219: PUSH1 0x40
0000021b: MLOAD
0000021c: DUP1
0000021d: SWAP2
0000021e: SUB
0000021f: SWAP1
00000220: RETURN
00000221: JUMPDEST
00000222: CALLVALUE
00000223: DUP1
00000224: ISZERO
00000225: PUSH2 0x022d
00000228: JUMPI
00000229: PUSH1 0x00
0000022b: DUP1
0000022c: REVERT
0000022d: JUMPDEST
0000022e: POP
0000022f: PUSH2 0x027a
00000232: PUSH1 0x04
00000234: DUP1
00000235: CALLDATASIZE
00000236: SUB
00000237: PUSH1 0x40
00000239: DUP2
0000023a: LT
0000023b: ISZERO
0000023c: PUSH2 0x0244
0000023f: JUMPI
00000240: PUSH1 0x00
00000242: DUP1
00000243: REVERT
00000244: JUMPDEST
00000245: DUP2
00000246: ADD
00000247: SWAP1
00000248: DUP1
00000249: DUP1
0000024a: CALLDATALOAD
0000024b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000260: AND
00000261: SWAP1
00000262: PUSH1 0x20
00000264: ADD
00000265: SWAP1
00000266: SWAP3
00000267: SWAP2
00000268: SWAP1
00000269: DUP1
0000026a: CALLDATALOAD
0000026b: SWAP1
0000026c: PUSH1 0x20
0000026e: ADD
0000026f: SWAP1
00000270: SWAP3
00000271: SWAP2
00000272: SWAP1
00000273: POP
00000274: POP
00000275: POP
00000276: PUSH2 0x0b08
00000279: JUMP
0000027a: JUMPDEST
0000027b: PUSH1 0x40
0000027d: MLOAD
0000027e: DUP1
0000027f: DUP3
00000280: ISZERO
00000281: ISZERO
00000282: DUP2
00000283: MSTORE
00000284: PUSH1 0x20
00000286: ADD
00000287: SWAP2
00000288: POP
00000289: POP
0000028a: PUSH1 0x40
0000028c: MLOAD
0000028d: DUP1
0000028e: SWAP2
0000028f: SUB
00000290: SWAP1
00000291: RETURN
00000292: JUMPDEST
00000293: CALLVALUE
00000294: DUP1
00000295: ISZERO
00000296: PUSH2 0x029e
00000299: JUMPI
0000029a: PUSH1 0x00
0000029c: DUP1
0000029d: REVERT
0000029e: JUMPDEST
0000029f: POP
000002a0: PUSH2 0x02a7
000002a3: PUSH2 0x0b26
000002a6: JUMP
000002a7: JUMPDEST
000002a8: PUSH1 0x40
000002aa: MLOAD
000002ab: DUP1
000002ac: DUP3
000002ad: DUP2
000002ae: MSTORE
000002af: PUSH1 0x20
000002b1: ADD
000002b2: SWAP2
000002b3: POP
000002b4: POP
000002b5: PUSH1 0x40
000002b7: MLOAD
000002b8: DUP1
000002b9: SWAP2
000002ba: SUB
000002bb: SWAP1
000002bc: RETURN
000002bd: JUMPDEST
000002be: CALLVALUE
000002bf: DUP1
000002c0: ISZERO
000002c1: PUSH2 0x02c9
000002c4: JUMPI
000002c5: PUSH1 0x00
000002c7: DUP1
000002c8: REVERT
000002c9: JUMPDEST
000002ca: POP
000002cb: PUSH2 0x0336
000002ce: PUSH1 0x04
000002d0: DUP1
000002d1: CALLDATASIZE
000002d2: SUB
000002d3: PUSH1 0x60
000002d5: DUP2
000002d6: LT
000002d7: ISZERO
000002d8: PUSH2 0x02e0
000002db: JUMPI
000002dc: PUSH1 0x00
000002de: DUP1
000002df: REVERT
000002e0: JUMPDEST
000002e1: DUP2
000002e2: ADD
000002e3: SWAP1
000002e4: DUP1
000002e5: DUP1
000002e6: CALLDATALOAD
000002e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002fc: AND
000002fd: SWAP1
000002fe: PUSH1 0x20
00000300: ADD
00000301: SWAP1
00000302: SWAP3
00000303: SWAP2
00000304: SWAP1
00000305: DUP1
00000306: CALLDATALOAD
00000307: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000031c: AND
0000031d: SWAP1
0000031e: PUSH1 0x20
00000320: ADD
00000321: SWAP1
00000322: SWAP3
00000323: SWAP2
00000324: SWAP1
00000325: DUP1
00000326: CALLDATALOAD
00000327: SWAP1
00000328: PUSH1 0x20
0000032a: ADD
0000032b: SWAP1
0000032c: SWAP3
0000032d: SWAP2
0000032e: SWAP1
0000032f: POP
00000330: POP
00000331: POP
00000332: PUSH2 0x0b30
00000335: JUMP
00000336: JUMPDEST
00000337: PUSH1 0x40
00000339: MLOAD
0000033a: DUP1
0000033b: DUP3
0000033c: ISZERO
0000033d: ISZERO
0000033e: DUP2
0000033f: MSTORE
00000340: PUSH1 0x20
00000342: ADD
00000343: SWAP2
00000344: POP
00000345: POP
00000346: PUSH1 0x40
00000348: MLOAD
00000349: DUP1
0000034a: SWAP2
0000034b: SUB
0000034c: SWAP1
0000034d: RETURN
0000034e: JUMPDEST
0000034f: CALLVALUE
00000350: DUP1
00000351: ISZERO
00000352: PUSH2 0x035a
00000355: JUMPI
00000356: PUSH1 0x00
00000358: DUP1
00000359: REVERT
0000035a: JUMPDEST
0000035b: POP
0000035c: PUSH2 0x0363
0000035f: PUSH2 0x0c09
00000362: JUMP
00000363: JUMPDEST
00000364: PUSH1 0x40
00000366: MLOAD
00000367: DUP1
00000368: DUP3
00000369: PUSH1 0xff
0000036b: AND
0000036c: DUP2
0000036d: MSTORE
0000036e: PUSH1 0x20
00000370: ADD
00000371: SWAP2
00000372: POP
00000373: POP
00000374: PUSH1 0x40
00000376: MLOAD
00000377: DUP1
00000378: SWAP2
00000379: SUB
0000037a: SWAP1
0000037b: RETURN
0000037c: JUMPDEST
0000037d: CALLVALUE
0000037e: DUP1
0000037f: ISZERO
00000380: PUSH2 0x0388
00000383: JUMPI
00000384: PUSH1 0x00
00000386: DUP1
00000387: REVERT
00000388: JUMPDEST
00000389: POP
0000038a: PUSH2 0x0391
0000038d: PUSH2 0x0c0e
00000390: JUMP
00000391: JUMPDEST
00000392: PUSH1 0x40
00000394: MLOAD
00000395: DUP1
00000396: DUP3
00000397: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003ac: AND
000003ad: DUP2
000003ae: MSTORE
000003af: PUSH1 0x20
000003b1: ADD
000003b2: SWAP2
000003b3: POP
000003b4: POP
000003b5: PUSH1 0x40
000003b7: MLOAD
000003b8: DUP1
000003b9: SWAP2
000003ba: SUB
000003bb: SWAP1
000003bc: RETURN
000003bd: JUMPDEST
000003be: CALLVALUE
000003bf: DUP1
000003c0: ISZERO
000003c1: PUSH2 0x03c9
000003c4: JUMPI
000003c5: PUSH1 0x00
000003c7: DUP1
000003c8: REVERT
000003c9: JUMPDEST
000003ca: POP
000003cb: PUSH2 0x03d2
000003ce: PUSH2 0x0c34
000003d1: JUMP
000003d2: JUMPDEST
000003d3: PUSH1 0x40
000003d5: MLOAD
000003d6: DUP1
000003d7: DUP3
000003d8: DUP2
000003d9: MSTORE
000003da: PUSH1 0x20
000003dc: ADD
000003dd: SWAP2
000003de: POP
000003df: POP
000003e0: PUSH1 0x40
000003e2: MLOAD
000003e3: DUP1
000003e4: SWAP2
000003e5: SUB
000003e6: SWAP1
000003e7: RETURN
000003e8: JUMPDEST
000003e9: CALLVALUE
000003ea: DUP1
000003eb: ISZERO
000003ec: PUSH2 0x03f4
000003ef: JUMPI
000003f0: PUSH1 0x00
000003f2: DUP1
000003f3: REVERT
000003f4: JUMPDEST
000003f5: POP
000003f6: PUSH2 0x03fd
000003f9: PUSH2 0x0c44
000003fc: JUMP
000003fd: JUMPDEST
000003fe: PUSH1 0x40
00000400: MLOAD
00000401: DUP1
00000402: DUP3
00000403: PUSH1 0xff
00000405: AND
00000406: DUP2
00000407: MSTORE
00000408: PUSH1 0x20
0000040a: ADD
0000040b: SWAP2
0000040c: POP
0000040d: POP
0000040e: PUSH1 0x40
00000410: MLOAD
00000411: DUP1
00000412: SWAP2
00000413: SUB
00000414: SWAP1
00000415: RETURN
00000416: JUMPDEST
00000417: CALLVALUE
00000418: DUP1
00000419: ISZERO
0000041a: PUSH2 0x0422
0000041d: JUMPI
0000041e: PUSH1 0x00
00000420: DUP1
00000421: REVERT
00000422: JUMPDEST
00000423: POP
00000424: PUSH2 0x046f
00000427: PUSH1 0x04
00000429: DUP1
0000042a: CALLDATASIZE
0000042b: SUB
0000042c: PUSH1 0x40
0000042e: DUP2
0000042f: LT
00000430: ISZERO
00000431: PUSH2 0x0439
00000434: JUMPI
00000435: PUSH1 0x00
00000437: DUP1
00000438: REVERT
00000439: JUMPDEST
0000043a: DUP2
0000043b: ADD
0000043c: SWAP1
0000043d: DUP1
0000043e: DUP1
0000043f: CALLDATALOAD
00000440: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000455: AND
00000456: SWAP1
00000457: PUSH1 0x20
00000459: ADD
0000045a: SWAP1
0000045b: SWAP3
0000045c: SWAP2
0000045d: SWAP1
0000045e: DUP1
0000045f: CALLDATALOAD
00000460: SWAP1
00000461: PUSH1 0x20
00000463: ADD
00000464: SWAP1
00000465: SWAP3
00000466: SWAP2
00000467: SWAP1
00000468: POP
00000469: POP
0000046a: POP
0000046b: PUSH2 0x0c5b
0000046e: JUMP
0000046f: JUMPDEST
00000470: PUSH1 0x40
00000472: MLOAD
00000473: DUP1
00000474: DUP3
00000475: ISZERO
00000476: ISZERO
00000477: DUP2
00000478: MSTORE
00000479: PUSH1 0x20
0000047b: ADD
0000047c: SWAP2
0000047d: POP
0000047e: POP
0000047f: PUSH1 0x40
00000481: MLOAD
00000482: DUP1
00000483: SWAP2
00000484: SUB
00000485: SWAP1
00000486: RETURN
00000487: JUMPDEST
00000488: CALLVALUE
00000489: DUP1
0000048a: ISZERO
0000048b: PUSH2 0x0493
0000048e: JUMPI
0000048f: PUSH1 0x00
00000491: DUP1
00000492: REVERT
00000493: JUMPDEST
00000494: POP
00000495: PUSH2 0x04c0
00000498: PUSH1 0x04
0000049a: DUP1
0000049b: CALLDATASIZE
0000049c: SUB
0000049d: PUSH1 0x20
0000049f: DUP2
000004a0: LT
000004a1: ISZERO
000004a2: PUSH2 0x04aa
000004a5: JUMPI
000004a6: PUSH1 0x00
000004a8: DUP1
000004a9: REVERT
000004aa: JUMPDEST
000004ab: DUP2
000004ac: ADD
000004ad: SWAP1
000004ae: DUP1
000004af: DUP1
000004b0: CALLDATALOAD
000004b1: SWAP1
000004b2: PUSH1 0x20
000004b4: ADD
000004b5: SWAP1
000004b6: SWAP3
000004b7: SWAP2
000004b8: SWAP1
000004b9: POP
000004ba: POP
000004bb: POP
000004bc: PUSH2 0x0d0e
000004bf: JUMP
000004c0: JUMPDEST
000004c1: STOP
000004c2: JUMPDEST
000004c3: CALLVALUE
000004c4: DUP1
000004c5: ISZERO
000004c6: PUSH2 0x04ce
000004c9: JUMPI
000004ca: PUSH1 0x00
000004cc: DUP1
000004cd: REVERT
000004ce: JUMPDEST
000004cf: POP
000004d0: PUSH2 0x0551
000004d3: PUSH1 0x04
000004d5: DUP1
000004d6: CALLDATASIZE
000004d7: SUB
000004d8: PUSH1 0x60
000004da: DUP2
000004db: LT
000004dc: ISZERO
000004dd: PUSH2 0x04e5
000004e0: JUMPI
000004e1: PUSH1 0x00
000004e3: DUP1
000004e4: REVERT
000004e5: JUMPDEST
000004e6: DUP2
000004e7: ADD
000004e8: SWAP1
000004e9: DUP1
000004ea: DUP1
000004eb: CALLDATALOAD
000004ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000501: AND
00000502: SWAP1
00000503: PUSH1 0x20
00000505: ADD
00000506: SWAP1
00000507: SWAP3
00000508: SWAP2
00000509: SWAP1
0000050a: DUP1
0000050b: CALLDATALOAD
0000050c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000521: AND
00000522: SWAP1
00000523: PUSH1 0x20
00000525: ADD
00000526: SWAP1
00000527: SWAP3
00000528: SWAP2
00000529: SWAP1
0000052a: DUP1
0000052b: CALLDATALOAD
0000052c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000541: AND
00000542: SWAP1
00000543: PUSH1 0x20
00000545: ADD
00000546: SWAP1
00000547: SWAP3
00000548: SWAP2
00000549: SWAP1
0000054a: POP
0000054b: POP
0000054c: POP
0000054d: PUSH2 0x1320
00000550: JUMP
00000551: JUMPDEST
00000552: STOP
00000553: JUMPDEST
00000554: CALLVALUE
00000555: DUP1
00000556: ISZERO
00000557: PUSH2 0x055f
0000055a: JUMPI
0000055b: PUSH1 0x00
0000055d: DUP1
0000055e: REVERT
0000055f: JUMPDEST
00000560: POP
00000561: PUSH2 0x0568
00000564: PUSH2 0x1850
00000567: JUMP
00000568: JUMPDEST
00000569: PUSH1 0x40
0000056b: MLOAD
0000056c: DUP1
0000056d: DUP3
0000056e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000583: AND
00000584: DUP2
00000585: MSTORE
00000586: PUSH1 0x20
00000588: ADD
00000589: SWAP2
0000058a: POP
0000058b: POP
0000058c: PUSH1 0x40
0000058e: MLOAD
0000058f: DUP1
00000590: SWAP2
00000591: SUB
00000592: SWAP1
00000593: RETURN
00000594: JUMPDEST
00000595: CALLVALUE
00000596: DUP1
00000597: ISZERO
00000598: PUSH2 0x05a0
0000059b: JUMPI
0000059c: PUSH1 0x00
0000059e: DUP1
0000059f: REVERT
000005a0: JUMPDEST
000005a1: POP
000005a2: PUSH2 0x05e3
000005a5: PUSH1 0x04
000005a7: DUP1
000005a8: CALLDATASIZE
000005a9: SUB
000005aa: PUSH1 0x20
000005ac: DUP2
000005ad: LT
000005ae: ISZERO
000005af: PUSH2 0x05b7
000005b2: JUMPI
000005b3: PUSH1 0x00
000005b5: DUP1
000005b6: REVERT
000005b7: JUMPDEST
000005b8: DUP2
000005b9: ADD
000005ba: SWAP1
000005bb: DUP1
000005bc: DUP1
000005bd: CALLDATALOAD
000005be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005d3: AND
000005d4: SWAP1
000005d5: PUSH1 0x20
000005d7: ADD
000005d8: SWAP1
000005d9: SWAP3
000005da: SWAP2
000005db: SWAP1
000005dc: POP
000005dd: POP
000005de: POP
000005df: PUSH2 0x1876
000005e2: JUMP
000005e3: JUMPDEST
000005e4: PUSH1 0x40
000005e6: MLOAD
000005e7: DUP1
000005e8: DUP3
000005e9: DUP2
000005ea: MSTORE
000005eb: PUSH1 0x20
000005ed: ADD
000005ee: SWAP2
000005ef: POP
000005f0: POP
000005f1: PUSH1 0x40
000005f3: MLOAD
000005f4: DUP1
000005f5: SWAP2
000005f6: SUB
000005f7: SWAP1
000005f8: RETURN
000005f9: JUMPDEST
000005fa: CALLVALUE
000005fb: DUP1
000005fc: ISZERO
000005fd: PUSH2 0x0605
00000600: JUMPI
00000601: PUSH1 0x00
00000603: DUP1
00000604: REVERT
00000605: JUMPDEST
00000606: POP
00000607: PUSH2 0x060e
0000060a: PUSH2 0x18bf
0000060d: JUMP
0000060e: JUMPDEST
0000060f: PUSH1 0x40
00000611: MLOAD
00000612: DUP1
00000613: DUP3
00000614: DUP2
00000615: MSTORE
00000616: PUSH1 0x20
00000618: ADD
00000619: SWAP2
0000061a: POP
0000061b: POP
0000061c: PUSH1 0x40
0000061e: MLOAD
0000061f: DUP1
00000620: SWAP2
00000621: SUB
00000622: SWAP1
00000623: RETURN
00000624: JUMPDEST
00000625: CALLVALUE
00000626: DUP1
00000627: ISZERO
00000628: PUSH2 0x0630
0000062b: JUMPI
0000062c: PUSH1 0x00
0000062e: DUP1
0000062f: REVERT
00000630: JUMPDEST
00000631: POP
00000632: PUSH2 0x0639
00000635: PUSH2 0x18c5
00000638: JUMP
00000639: JUMPDEST
0000063a: PUSH1 0x40
0000063c: MLOAD
0000063d: DUP1
0000063e: DUP3
0000063f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000654: AND
00000655: DUP2
00000656: MSTORE
00000657: PUSH1 0x20
00000659: ADD
0000065a: SWAP2
0000065b: POP
0000065c: POP
0000065d: PUSH1 0x40
0000065f: MLOAD
00000660: DUP1
00000661: SWAP2
00000662: SUB
00000663: SWAP1
00000664: RETURN
00000665: JUMPDEST
00000666: CALLVALUE
00000667: DUP1
00000668: ISZERO
00000669: PUSH2 0x0671
0000066c: JUMPI
0000066d: PUSH1 0x00
0000066f: DUP1
00000670: REVERT
00000671: JUMPDEST
00000672: POP
00000673: PUSH2 0x067a
00000676: PUSH2 0x18eb
00000679: JUMP
0000067a: JUMPDEST
0000067b: PUSH1 0x40
0000067d: MLOAD
0000067e: DUP1
0000067f: DUP1
00000680: PUSH1 0x20
00000682: ADD
00000683: DUP3
00000684: DUP2
00000685: SUB
00000686: DUP3
00000687: MSTORE
00000688: DUP4
00000689: DUP2
0000068a: DUP2
0000068b: MLOAD
0000068c: DUP2
0000068d: MSTORE
0000068e: PUSH1 0x20
00000690: ADD
00000691: SWAP2
00000692: POP
00000693: DUP1
00000694: MLOAD
00000695: SWAP1
00000696: PUSH1 0x20
00000698: ADD
00000699: SWAP1
0000069a: DUP1
0000069b: DUP4
0000069c: DUP4
0000069d: PUSH1 0x00
0000069f: JUMPDEST
000006a0: DUP4
000006a1: DUP2
000006a2: LT
000006a3: ISZERO
000006a4: PUSH2 0x06ba
000006a7: JUMPI
000006a8: DUP1
000006a9: DUP3
000006aa: ADD
000006ab: MLOAD
000006ac: DUP2
000006ad: DUP5
000006ae: ADD
000006af: MSTORE
000006b0: PUSH1 0x20
000006b2: DUP2
000006b3: ADD
000006b4: SWAP1
000006b5: POP
000006b6: PUSH2 0x069f
000006b9: JUMP
000006ba: JUMPDEST
000006bb: POP
000006bc: POP
000006bd: POP
000006be: POP
000006bf: SWAP1
000006c0: POP
000006c1: SWAP1
000006c2: DUP2
000006c3: ADD
000006c4: SWAP1
000006c5: PUSH1 0x1f
000006c7: AND
000006c8: DUP1
000006c9: ISZERO
000006ca: PUSH2 0x06e7
000006cd: JUMPI
000006ce: DUP1
000006cf: DUP3
000006d0: SUB
000006d1: DUP1
000006d2: MLOAD
000006d3: PUSH1 0x01
000006d5: DUP4
000006d6: PUSH1 0x20
000006d8: SUB
000006d9: PUSH2 0x0100
000006dc: EXP
000006dd: SUB
000006de: NOT
000006df: AND
000006e0: DUP2
000006e1: MSTORE
000006e2: PUSH1 0x20
000006e4: ADD
000006e5: SWAP2
000006e6: POP
000006e7: JUMPDEST
000006e8: POP
000006e9: SWAP3
000006ea: POP
000006eb: POP
000006ec: POP
000006ed: PUSH1 0x40
000006ef: MLOAD
000006f0: DUP1
000006f1: SWAP2
000006f2: SUB
000006f3: SWAP1
000006f4: RETURN
000006f5: JUMPDEST
000006f6: CALLVALUE
000006f7: DUP1
000006f8: ISZERO
000006f9: PUSH2 0x0701
000006fc: JUMPI
000006fd: PUSH1 0x00
000006ff: DUP1
00000700: REVERT
00000701: JUMPDEST
00000702: POP
00000703: PUSH2 0x074e
00000706: PUSH1 0x04
00000708: DUP1
00000709: CALLDATASIZE
0000070a: SUB
0000070b: PUSH1 0x40
0000070d: DUP2
0000070e: LT
0000070f: ISZERO
00000710: PUSH2 0x0718
00000713: JUMPI
00000714: PUSH1 0x00
00000716: DUP1
00000717: REVERT
00000718: JUMPDEST
00000719: DUP2
0000071a: ADD
0000071b: SWAP1
0000071c: DUP1
0000071d: DUP1
0000071e: CALLDATALOAD
0000071f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000734: AND
00000735: SWAP1
00000736: PUSH1 0x20
00000738: ADD
00000739: SWAP1
0000073a: SWAP3
0000073b: SWAP2
0000073c: SWAP1
0000073d: DUP1
0000073e: CALLDATALOAD
0000073f: SWAP1
00000740: PUSH1 0x20
00000742: ADD
00000743: SWAP1
00000744: SWAP3
00000745: SWAP2
00000746: SWAP1
00000747: POP
00000748: POP
00000749: POP
0000074a: PUSH2 0x198d
0000074d: JUMP
0000074e: JUMPDEST
0000074f: PUSH1 0x40
00000751: MLOAD
00000752: DUP1
00000753: DUP3
00000754: ISZERO
00000755: ISZERO
00000756: DUP2
00000757: MSTORE
00000758: PUSH1 0x20
0000075a: ADD
0000075b: SWAP2
0000075c: POP
0000075d: POP
0000075e: PUSH1 0x40
00000760: MLOAD
00000761: DUP1
00000762: SWAP2
00000763: SUB
00000764: SWAP1
00000765: RETURN
00000766: JUMPDEST
00000767: CALLVALUE
00000768: DUP1
00000769: ISZERO
0000076a: PUSH2 0x0772
0000076d: JUMPI
0000076e: PUSH1 0x00
00000770: DUP1
00000771: REVERT
00000772: JUMPDEST
00000773: POP
00000774: PUSH2 0x07bf
00000777: PUSH1 0x04
00000779: DUP1
0000077a: CALLDATASIZE
0000077b: SUB
0000077c: PUSH1 0x40
0000077e: DUP2
0000077f: LT
00000780: ISZERO
00000781: PUSH2 0x0789
00000784: JUMPI
00000785: PUSH1 0x00
00000787: DUP1
00000788: REVERT
00000789: JUMPDEST
0000078a: DUP2
0000078b: ADD
0000078c: SWAP1
0000078d: DUP1
0000078e: DUP1
0000078f: CALLDATALOAD
00000790: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007a5: AND
000007a6: SWAP1
000007a7: PUSH1 0x20
000007a9: ADD
000007aa: SWAP1
000007ab: SWAP3
000007ac: SWAP2
000007ad: SWAP1
000007ae: DUP1
000007af: CALLDATALOAD
000007b0: SWAP1
000007b1: PUSH1 0x20
000007b3: ADD
000007b4: SWAP1
000007b5: SWAP3
000007b6: SWAP2
000007b7: SWAP1
000007b8: POP
000007b9: POP
000007ba: POP
000007bb: PUSH2 0x1a5a
000007be: JUMP
000007bf: JUMPDEST
000007c0: PUSH1 0x40
000007c2: MLOAD
000007c3: DUP1
000007c4: DUP3
000007c5: ISZERO
000007c6: ISZERO
000007c7: DUP2
000007c8: MSTORE
000007c9: PUSH1 0x20
000007cb: ADD
000007cc: SWAP2
000007cd: POP
000007ce: POP
000007cf: PUSH1 0x40
000007d1: MLOAD
000007d2: DUP1
000007d3: SWAP2
000007d4: SUB
000007d5: SWAP1
000007d6: RETURN
000007d7: JUMPDEST
000007d8: CALLVALUE
000007d9: DUP1
000007da: ISZERO
000007db: PUSH2 0x07e3
000007de: JUMPI
000007df: PUSH1 0x00
000007e1: DUP1
000007e2: REVERT
000007e3: JUMPDEST
000007e4: POP
000007e5: PUSH2 0x07ec
000007e8: PUSH2 0x1a78
000007eb: JUMP
000007ec: JUMPDEST
000007ed: PUSH1 0x40
000007ef: MLOAD
000007f0: DUP1
000007f1: DUP3
000007f2: DUP2
000007f3: MSTORE
000007f4: PUSH1 0x20
000007f6: ADD
000007f7: SWAP2
000007f8: POP
000007f9: POP
000007fa: PUSH1 0x40
000007fc: MLOAD
000007fd: DUP1
000007fe: SWAP2
000007ff: SUB
00000800: SWAP1
00000801: RETURN
00000802: JUMPDEST
00000803: CALLVALUE
00000804: DUP1
00000805: ISZERO
00000806: PUSH2 0x080e
00000809: JUMPI
0000080a: PUSH1 0x00
0000080c: DUP1
0000080d: REVERT
0000080e: JUMPDEST
0000080f: POP
00000810: PUSH2 0x0851
00000813: PUSH1 0x04
00000815: DUP1
00000816: CALLDATASIZE
00000817: SUB
00000818: PUSH1 0x20
0000081a: DUP2
0000081b: LT
0000081c: ISZERO
0000081d: PUSH2 0x0825
00000820: JUMPI
00000821: PUSH1 0x00
00000823: DUP1
00000824: REVERT
00000825: JUMPDEST
00000826: DUP2
00000827: ADD
00000828: SWAP1
00000829: DUP1
0000082a: DUP1
0000082b: CALLDATALOAD
0000082c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000841: AND
00000842: SWAP1
00000843: PUSH1 0x20
00000845: ADD
00000846: SWAP1
00000847: SWAP3
00000848: SWAP2
00000849: SWAP1
0000084a: POP
0000084b: POP
0000084c: POP
0000084d: PUSH2 0x1a7e
00000850: JUMP
00000851: JUMPDEST
00000852: STOP
00000853: JUMPDEST
00000854: CALLVALUE
00000855: DUP1
00000856: ISZERO
00000857: PUSH2 0x085f
0000085a: JUMPI
0000085b: PUSH1 0x00
0000085d: DUP1
0000085e: REVERT
0000085f: JUMPDEST
00000860: POP
00000861: PUSH2 0x088c
00000864: PUSH1 0x04
00000866: DUP1
00000867: CALLDATASIZE
00000868: SUB
00000869: PUSH1 0x20
0000086b: DUP2
0000086c: LT
0000086d: ISZERO
0000086e: PUSH2 0x0876
00000871: JUMPI
00000872: PUSH1 0x00
00000874: DUP1
00000875: REVERT
00000876: JUMPDEST
00000877: DUP2
00000878: ADD
00000879: SWAP1
0000087a: DUP1
0000087b: DUP1
0000087c: CALLDATALOAD
0000087d: SWAP1
0000087e: PUSH1 0x20
00000880: ADD
00000881: SWAP1
00000882: SWAP3
00000883: SWAP2
00000884: SWAP1
00000885: POP
00000886: POP
00000887: POP
00000888: PUSH2 0x1c7c
0000088b: JUMP
0000088c: JUMPDEST
0000088d: PUSH1 0x40
0000088f: MLOAD
00000890: DUP1
00000891: DUP4
00000892: DUP2
00000893: MSTORE
00000894: PUSH1 0x20
00000896: ADD
00000897: DUP3
00000898: DUP2
00000899: MSTORE
0000089a: PUSH1 0x20
0000089c: ADD
0000089d: SWAP3
0000089e: POP
0000089f: POP
000008a0: POP
000008a1: PUSH1 0x40
000008a3: MLOAD
000008a4: DUP1
000008a5: SWAP2
000008a6: SUB
000008a7: SWAP1
000008a8: RETURN
000008a9: JUMPDEST
000008aa: CALLVALUE
000008ab: DUP1
000008ac: ISZERO
000008ad: PUSH2 0x08b5
000008b0: JUMPI
000008b1: PUSH1 0x00
000008b3: DUP1
000008b4: REVERT
000008b5: JUMPDEST
000008b6: POP
000008b7: PUSH2 0x0918
000008ba: PUSH1 0x04
000008bc: DUP1
000008bd: CALLDATASIZE
000008be: SUB
000008bf: PUSH1 0x40
000008c1: DUP2
000008c2: LT
000008c3: ISZERO
000008c4: PUSH2 0x08cc
000008c7: JUMPI
000008c8: PUSH1 0x00
000008ca: DUP1
000008cb: REVERT
000008cc: JUMPDEST
000008cd: DUP2
000008ce: ADD
000008cf: SWAP1
000008d0: DUP1
000008d1: DUP1
000008d2: CALLDATALOAD
000008d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008e8: AND
000008e9: SWAP1
000008ea: PUSH1 0x20
000008ec: ADD
000008ed: SWAP1
000008ee: SWAP3
000008ef: SWAP2
000008f0: SWAP1
000008f1: DUP1
000008f2: CALLDATALOAD
000008f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000908: AND
00000909: SWAP1
0000090a: PUSH1 0x20
0000090c: ADD
0000090d: SWAP1
0000090e: SWAP3
0000090f: SWAP2
00000910: SWAP1
00000911: POP
00000912: POP
00000913: POP
00000914: PUSH2 0x1f6e
00000917: JUMP
00000918: JUMPDEST
00000919: PUSH1 0x40
0000091b: MLOAD
0000091c: DUP1
0000091d: DUP3
0000091e: DUP2
0000091f: MSTORE
00000920: PUSH1 0x20
00000922: ADD
00000923: SWAP2
00000924: POP
00000925: POP
00000926: PUSH1 0x40
00000928: MLOAD
00000929: DUP1
0000092a: SWAP2
0000092b: SUB
0000092c: SWAP1
0000092d: RETURN
0000092e: JUMPDEST
0000092f: CALLVALUE
00000930: DUP1
00000931: ISZERO
00000932: PUSH2 0x093a
00000935: JUMPI
00000936: PUSH1 0x00
00000938: DUP1
00000939: REVERT
0000093a: JUMPDEST
0000093b: POP
0000093c: PUSH2 0x0943
0000093f: PUSH2 0x1ff5
00000942: JUMP
00000943: JUMPDEST
00000944: PUSH1 0x40
00000946: MLOAD
00000947: DUP1
00000948: DUP3
00000949: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000095e: AND
0000095f: DUP2
00000960: MSTORE
00000961: PUSH1 0x20
00000963: ADD
00000964: SWAP2
00000965: POP
00000966: POP
00000967: PUSH1 0x40
00000969: MLOAD
0000096a: DUP1
0000096b: SWAP2
0000096c: SUB
0000096d: SWAP1
0000096e: RETURN
0000096f: JUMPDEST
00000970: CALLVALUE
00000971: DUP1
00000972: ISZERO
00000973: PUSH2 0x097b
00000976: JUMPI
00000977: PUSH1 0x00
00000979: DUP1
0000097a: REVERT
0000097b: JUMPDEST
0000097c: POP
0000097d: PUSH2 0x0984
00000980: PUSH2 0x201b
00000983: JUMP
00000984: JUMPDEST
00000985: PUSH1 0x40
00000987: MLOAD
00000988: DUP1
00000989: DUP3
0000098a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000099f: AND
000009a0: DUP2
000009a1: MSTORE
000009a2: PUSH1 0x20
000009a4: ADD
000009a5: SWAP2
000009a6: POP
000009a7: POP
000009a8: PUSH1 0x40
000009aa: MLOAD
000009ab: DUP1
000009ac: SWAP2
000009ad: SUB
000009ae: SWAP1
000009af: RETURN
000009b0: JUMPDEST
000009b1: CALLVALUE
000009b2: DUP1
000009b3: ISZERO
000009b4: PUSH2 0x09bc
000009b7: JUMPI
000009b8: PUSH1 0x00
000009ba: DUP1
000009bb: REVERT
000009bc: JUMPDEST
000009bd: POP
000009be: PUSH2 0x09ff
000009c1: PUSH1 0x04
000009c3: DUP1
000009c4: CALLDATASIZE
000009c5: SUB
000009c6: PUSH1 0x20
000009c8: DUP2
000009c9: LT
000009ca: ISZERO
000009cb: PUSH2 0x09d3
000009ce: JUMPI
000009cf: PUSH1 0x00
000009d1: DUP1
000009d2: REVERT
000009d3: JUMPDEST
000009d4: DUP2
000009d5: ADD
000009d6: SWAP1
000009d7: DUP1
000009d8: DUP1
000009d9: CALLDATALOAD
000009da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ef: AND
000009f0: SWAP1
000009f1: PUSH1 0x20
000009f3: ADD
000009f4: SWAP1
000009f5: SWAP3
000009f6: SWAP2
000009f7: SWAP1
000009f8: POP
000009f9: POP
000009fa: POP
000009fb: PUSH2 0x2041
000009fe: JUMP
000009ff: JUMPDEST
00000a00: STOP
00000a01: JUMPDEST
00000a02: CALLVALUE
00000a03: DUP1
00000a04: ISZERO
00000a05: PUSH2 0x0a0d
00000a08: JUMPI
00000a09: PUSH1 0x00
00000a0b: DUP1
00000a0c: REVERT
00000a0d: JUMPDEST
00000a0e: POP
00000a0f: PUSH2 0x0a3a
00000a12: PUSH1 0x04
00000a14: DUP1
00000a15: CALLDATASIZE
00000a16: SUB
00000a17: PUSH1 0x20
00000a19: DUP2
00000a1a: LT
00000a1b: ISZERO
00000a1c: PUSH2 0x0a24
00000a1f: JUMPI
00000a20: PUSH1 0x00
00000a22: DUP1
00000a23: REVERT
00000a24: JUMPDEST
00000a25: DUP2
00000a26: ADD
00000a27: SWAP1
00000a28: DUP1
00000a29: DUP1
00000a2a: CALLDATALOAD
00000a2b: SWAP1
00000a2c: PUSH1 0x20
00000a2e: ADD
00000a2f: SWAP1
00000a30: SWAP3
00000a31: SWAP2
00000a32: SWAP1
00000a33: POP
00000a34: POP
00000a35: POP
00000a36: PUSH2 0x21d0
00000a39: JUMP
00000a3a: JUMPDEST
00000a3b: PUSH1 0x40
00000a3d: MLOAD
00000a3e: DUP1
00000a3f: DUP3
00000a40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a55: AND
00000a56: DUP2
00000a57: MSTORE
00000a58: PUSH1 0x20
00000a5a: ADD
00000a5b: SWAP2
00000a5c: POP
00000a5d: POP
00000a5e: PUSH1 0x40
00000a60: MLOAD
00000a61: DUP1
00000a62: SWAP2
00000a63: SUB
00000a64: SWAP1
00000a65: RETURN
00000a66: JUMPDEST
00000a67: PUSH1 0x60
00000a69: PUSH1 0x68
00000a6b: DUP1
00000a6c: SLOAD
00000a6d: PUSH1 0x01
00000a6f: DUP2
00000a70: PUSH1 0x01
00000a72: AND
00000a73: ISZERO
00000a74: PUSH2 0x0100
00000a77: MUL
00000a78: SUB
00000a79: AND
00000a7a: PUSH1 0x02
00000a7c: SWAP1
00000a7d: DIV
00000a7e: DUP1
00000a7f: PUSH1 0x1f
00000a81: ADD
00000a82: PUSH1 0x20
00000a84: DUP1
00000a85: SWAP2
00000a86: DIV
00000a87: MUL
00000a88: PUSH1 0x20
00000a8a: ADD
00000a8b: PUSH1 0x40
00000a8d: MLOAD
00000a8e: SWAP1
00000a8f: DUP2
00000a90: ADD
00000a91: PUSH1 0x40
00000a93: MSTORE
00000a94: DUP1
00000a95: SWAP3
00000a96: SWAP2
00000a97: SWAP1
00000a98: DUP2
00000a99: DUP2
00000a9a: MSTORE
00000a9b: PUSH1 0x20
00000a9d: ADD
00000a9e: DUP3
00000a9f: DUP1
00000aa0: SLOAD
00000aa1: PUSH1 0x01
00000aa3: DUP2
00000aa4: PUSH1 0x01
00000aa6: AND
00000aa7: ISZERO
00000aa8: PUSH2 0x0100
00000aab: MUL
00000aac: SUB
00000aad: AND
00000aae: PUSH1 0x02
00000ab0: SWAP1
00000ab1: DIV
00000ab2: DUP1
00000ab3: ISZERO
00000ab4: PUSH2 0x0afe
00000ab7: JUMPI
00000ab8: DUP1
00000ab9: PUSH1 0x1f
00000abb: LT
00000abc: PUSH2 0x0ad3
00000abf: JUMPI
00000ac0: PUSH2 0x0100
00000ac3: DUP1
00000ac4: DUP4
00000ac5: SLOAD
00000ac6: DIV
00000ac7: MUL
00000ac8: DUP4
00000ac9: MSTORE
00000aca: SWAP2
00000acb: PUSH1 0x20
00000acd: ADD
00000ace: SWAP2
00000acf: PUSH2 0x0afe
00000ad2: JUMP
00000ad3: JUMPDEST
00000ad4: DUP3
00000ad5: ADD
00000ad6: SWAP2
00000ad7: SWAP1
00000ad8: PUSH1 0x00
00000ada: MSTORE
00000adb: PUSH1 0x20
00000add: PUSH1 0x00
00000adf: KECCAK256
00000ae0: SWAP1
00000ae1: JUMPDEST
00000ae2: DUP2
00000ae3: SLOAD
00000ae4: DUP2
00000ae5: MSTORE
00000ae6: SWAP1
00000ae7: PUSH1 0x01
00000ae9: ADD
00000aea: SWAP1
00000aeb: PUSH1 0x20
00000aed: ADD
00000aee: DUP1
00000aef: DUP4
00000af0: GT
00000af1: PUSH2 0x0ae1
00000af4: JUMPI
00000af5: DUP3
00000af6: SWAP1
00000af7: SUB
00000af8: PUSH1 0x1f
00000afa: AND
00000afb: DUP3
00000afc: ADD
00000afd: SWAP2
00000afe: JUMPDEST
00000aff: POP
00000b00: POP
00000b01: POP
00000b02: POP
00000b03: POP
00000b04: SWAP1
00000b05: POP
00000b06: SWAP1
00000b07: JUMP
00000b08: JUMPDEST
00000b09: PUSH1 0x00
00000b0b: PUSH2 0x0b1c
00000b0e: PUSH2 0x0b15
00000b11: PUSH2 0x220c
00000b14: JUMP
00000b15: JUMPDEST
00000b16: DUP5
00000b17: DUP5
00000b18: PUSH2 0x2214
00000b1b: JUMP
00000b1c: JUMPDEST
00000b1d: PUSH1 0x01
00000b1f: SWAP1
00000b20: POP
00000b21: SWAP3
00000b22: SWAP2
00000b23: POP
00000b24: POP
00000b25: JUMP
00000b26: JUMPDEST
00000b27: PUSH1 0x00
00000b29: PUSH1 0x67
00000b2b: SLOAD
00000b2c: SWAP1
00000b2d: POP
00000b2e: SWAP1
00000b2f: JUMP
00000b30: JUMPDEST
00000b31: PUSH1 0x00
00000b33: PUSH2 0x0b3d
00000b36: DUP5
00000b37: DUP5
00000b38: DUP5
00000b39: PUSH2 0x240b
00000b3c: JUMP
00000b3d: JUMPDEST
00000b3e: PUSH2 0x0bfe
00000b41: DUP5
00000b42: PUSH2 0x0b49
00000b45: PUSH2 0x220c
00000b48: JUMP
00000b49: JUMPDEST
00000b4a: PUSH2 0x0bf9
00000b4d: DUP6
00000b4e: PUSH1 0x40
00000b50: MLOAD
00000b51: DUP1
00000b52: PUSH1 0x60
00000b54: ADD
00000b55: PUSH1 0x40
00000b57: MSTORE
00000b58: DUP1
00000b59: PUSH1 0x28
00000b5b: DUP2
00000b5c: MSTORE
00000b5d: PUSH1 0x20
00000b5f: ADD
00000b60: PUSH2 0x3f71
00000b63: PUSH1 0x28
00000b65: SWAP2
00000b66: CODECOPY
00000b67: PUSH1 0x66
00000b69: PUSH1 0x00
00000b6b: DUP12
00000b6c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b81: AND
00000b82: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b97: AND
00000b98: DUP2
00000b99: MSTORE
00000b9a: PUSH1 0x20
00000b9c: ADD
00000b9d: SWAP1
00000b9e: DUP2
00000b9f: MSTORE
00000ba0: PUSH1 0x20
00000ba2: ADD
00000ba3: PUSH1 0x00
00000ba5: KECCAK256
00000ba6: PUSH1 0x00
00000ba8: PUSH2 0x0baf
00000bab: PUSH2 0x220c
00000bae: JUMP
00000baf: JUMPDEST
00000bb0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bc5: AND
00000bc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bdb: AND
00000bdc: DUP2
00000bdd: MSTORE
00000bde: PUSH1 0x20
00000be0: ADD
00000be1: SWAP1
00000be2: DUP2
00000be3: MSTORE
00000be4: PUSH1 0x20
00000be6: ADD
00000be7: PUSH1 0x00
00000be9: KECCAK256
00000bea: SLOAD
00000beb: PUSH2 0x26d0
00000bee: SWAP1
00000bef: SWAP3
00000bf0: SWAP2
00000bf1: SWAP1
00000bf2: PUSH4 0xffffffff
00000bf7: AND
00000bf8: JUMP
00000bf9: JUMPDEST
00000bfa: PUSH2 0x2214
00000bfd: JUMP
00000bfe: JUMPDEST
00000bff: PUSH1 0x01
00000c01: SWAP1
00000c02: POP
00000c03: SWAP4
00000c04: SWAP3
00000c05: POP
00000c06: POP
00000c07: POP
00000c08: JUMP
00000c09: JUMPDEST
00000c0a: PUSH1 0x08
00000c0c: DUP2
00000c0d: JUMP
00000c0e: JUMPDEST
00000c0f: PUSH1 0x9d
00000c11: PUSH1 0x01
00000c13: SWAP1
00000c14: SLOAD
00000c15: SWAP1
00000c16: PUSH2 0x0100
00000c19: EXP
00000c1a: SWAP1
00000c1b: DIV
00000c1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c31: AND
00000c32: DUP2
00000c33: JUMP
00000c34: JUMPDEST
00000c35: PUSH1 0x08
00000c37: PUSH1 0xff
00000c39: AND
00000c3a: PUSH1 0x0a
00000c3c: EXP
00000c3d: PUSH3 0x989680
00000c41: MUL
00000c42: DUP2
00000c43: JUMP
00000c44: JUMPDEST
00000c45: PUSH1 0x00
00000c47: PUSH1 0x6a
00000c49: PUSH1 0x00
00000c4b: SWAP1
00000c4c: SLOAD
00000c4d: SWAP1
00000c4e: PUSH2 0x0100
00000c51: EXP
00000c52: SWAP1
00000c53: DIV
00000c54: PUSH1 0xff
00000c56: AND
00000c57: SWAP1
00000c58: POP
00000c59: SWAP1
00000c5a: JUMP
00000c5b: JUMPDEST
00000c5c: PUSH1 0x00
00000c5e: PUSH2 0x0d04
00000c61: PUSH2 0x0c68
00000c64: PUSH2 0x220c
00000c67: JUMP
00000c68: JUMPDEST
00000c69: DUP5
00000c6a: PUSH2 0x0cff
00000c6d: DUP6
00000c6e: PUSH1 0x66
00000c70: PUSH1 0x00
00000c72: PUSH2 0x0c79
00000c75: PUSH2 0x220c
00000c78: JUMP
00000c79: JUMPDEST
00000c7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c8f: AND
00000c90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ca5: AND
00000ca6: DUP2
00000ca7: MSTORE
00000ca8: PUSH1 0x20
00000caa: ADD
00000cab: SWAP1
00000cac: DUP2
00000cad: MSTORE
00000cae: PUSH1 0x20
00000cb0: ADD
00000cb1: PUSH1 0x00
00000cb3: KECCAK256
00000cb4: PUSH1 0x00
00000cb6: DUP10
00000cb7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ccc: AND
00000ccd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ce2: AND
00000ce3: DUP2
00000ce4: MSTORE
00000ce5: PUSH1 0x20
00000ce7: ADD
00000ce8: SWAP1
00000ce9: DUP2
00000cea: MSTORE
00000ceb: PUSH1 0x20
00000ced: ADD
00000cee: PUSH1 0x00
00000cf0: KECCAK256
00000cf1: SLOAD
00000cf2: PUSH2 0x2790
00000cf5: SWAP1
00000cf6: SWAP2
00000cf7: SWAP1
00000cf8: PUSH4 0xffffffff
00000cfd: AND
00000cfe: JUMP
00000cff: JUMPDEST
00000d00: PUSH2 0x2214
00000d03: JUMP
00000d04: JUMPDEST
00000d05: PUSH1 0x01
00000d07: SWAP1
00000d08: POP
00000d09: SWAP3
00000d0a: SWAP2
00000d0b: POP
00000d0c: POP
00000d0d: JUMP
00000d0e: JUMPDEST
00000d0f: PUSH1 0x97
00000d11: PUSH1 0x01
00000d13: SWAP1
00000d14: SLOAD
00000d15: SWAP1
00000d16: PUSH2 0x0100
00000d19: EXP
00000d1a: SWAP1
00000d1b: DIV
00000d1c: PUSH1 0xff
00000d1e: AND
00000d1f: PUSH2 0x0d90
00000d22: JUMPI
00000d23: PUSH1 0x40
00000d25: MLOAD
00000d26: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000d47: DUP2
00000d48: MSTORE
00000d49: PUSH1 0x04
00000d4b: ADD
00000d4c: DUP1
00000d4d: DUP1
00000d4e: PUSH1 0x20
00000d50: ADD
00000d51: DUP3
00000d52: DUP2
00000d53: SUB
00000d54: DUP3
00000d55: MSTORE
00000d56: PUSH1 0x14
00000d58: DUP2
00000d59: MSTORE
00000d5a: PUSH1 0x20
00000d5c: ADD
00000d5d: DUP1
00000d5e: PUSH32 0x574158473a207265656e7472616e742063616c6c000000000000000000000000
00000d7f: DUP2
00000d80: MSTORE
00000d81: POP
00000d82: PUSH1 0x20
00000d84: ADD
00000d85: SWAP2
00000d86: POP
00000d87: POP
00000d88: PUSH1 0x40
00000d8a: MLOAD
00000d8b: DUP1
00000d8c: SWAP2
00000d8d: SUB
00000d8e: SWAP1
00000d8f: REVERT
00000d90: JUMPDEST
00000d91: PUSH1 0x00
00000d93: PUSH1 0x97
00000d95: PUSH1 0x01
00000d97: PUSH2 0x0100
00000d9a: EXP
00000d9b: DUP2
00000d9c: SLOAD
00000d9d: DUP2
00000d9e: PUSH1 0xff
00000da0: MUL
00000da1: NOT
00000da2: AND
00000da3: SWAP1
00000da4: DUP4
00000da5: ISZERO
00000da6: ISZERO
00000da7: MUL
00000da8: OR
00000da9: SWAP1
00000daa: SSTORE
00000dab: POP
00000dac: PUSH2 0x0dbb
00000daf: PUSH2 0x0db6
00000db2: PUSH2 0x220c
00000db5: JUMP
00000db6: JUMPDEST
00000db7: PUSH2 0x1876
00000dba: JUMP
00000dbb: JUMPDEST
00000dbc: DUP2
00000dbd: GT
00000dbe: ISZERO
00000dbf: PUSH2 0x0e30
00000dc2: JUMPI
00000dc3: PUSH1 0x40
00000dc5: MLOAD
00000dc6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000de7: DUP2
00000de8: MSTORE
00000de9: PUSH1 0x04
00000deb: ADD
00000dec: DUP1
00000ded: DUP1
00000dee: PUSH1 0x20
00000df0: ADD
00000df1: DUP3
00000df2: DUP2
00000df3: SUB
00000df4: DUP3
00000df5: MSTORE
00000df6: PUSH1 0x1a
00000df8: DUP2
00000df9: MSTORE
00000dfa: PUSH1 0x20
00000dfc: ADD
00000dfd: DUP1
00000dfe: PUSH32 0x574158473a20696e73756666696369656e742062616c616e6365000000000000
00000e1f: DUP2
00000e20: MSTORE
00000e21: POP
00000e22: PUSH1 0x20
00000e24: ADD
00000e25: SWAP2
00000e26: POP
00000e27: POP
00000e28: PUSH1 0x40
00000e2a: MLOAD
00000e2b: DUP1
00000e2c: SWAP2
00000e2d: SUB
00000e2e: SWAP1
00000e2f: REVERT
00000e30: JUMPDEST
00000e31: PUSH1 0x00
00000e33: PUSH2 0x0e76
00000e36: PUSH2 0x0e60
00000e39: PUSH1 0x97
00000e3b: PUSH1 0x02
00000e3d: SWAP1
00000e3e: SLOAD
00000e3f: SWAP1
00000e40: PUSH2 0x0100
00000e43: EXP
00000e44: SWAP1
00000e45: DIV
00000e46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e5b: AND
00000e5c: PUSH2 0x1876
00000e5f: JUMP
00000e60: JUMPDEST
00000e61: PUSH2 0x0e68
00000e64: PUSH2 0x0b26
00000e67: JUMP
00000e68: JUMPDEST
00000e69: PUSH2 0x2818
00000e6c: SWAP1
00000e6d: SWAP2
00000e6e: SWAP1
00000e6f: PUSH4 0xffffffff
00000e74: AND
00000e75: JUMP
00000e76: JUMPDEST
00000e77: SWAP1
00000e78: POP
00000e79: DUP2
00000e7a: DUP2
00000e7b: LT
00000e7c: ISZERO
00000e7d: PUSH2 0x0ed1
00000e80: JUMPI
00000e81: PUSH1 0x40
00000e83: MLOAD
00000e84: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000ea5: DUP2
00000ea6: MSTORE
00000ea7: PUSH1 0x04
00000ea9: ADD
00000eaa: DUP1
00000eab: DUP1
00000eac: PUSH1 0x20
00000eae: ADD
00000eaf: DUP3
00000eb0: DUP2
00000eb1: SUB
00000eb2: DUP3
00000eb3: MSTORE
00000eb4: PUSH1 0x42
00000eb6: DUP2
00000eb7: MSTORE
00000eb8: PUSH1 0x20
00000eba: ADD
00000ebb: DUP1
00000ebc: PUSH2 0x3ee8
00000ebf: PUSH1 0x42
00000ec1: SWAP2
00000ec2: CODECOPY
00000ec3: PUSH1 0x60
00000ec5: ADD
00000ec6: SWAP2
00000ec7: POP
00000ec8: POP
00000ec9: PUSH1 0x40
00000ecb: MLOAD
00000ecc: DUP1
00000ecd: SWAP2
00000ece: SUB
00000ecf: SWAP1
00000ed0: REVERT
00000ed1: JUMPDEST
00000ed2: PUSH1 0x00
00000ed4: PUSH1 0x98
00000ed6: PUSH1 0x00
00000ed8: SWAP1
00000ed9: SLOAD
00000eda: SWAP1
00000edb: PUSH2 0x0100
00000ede: EXP
00000edf: SWAP1
00000ee0: DIV
00000ee1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ef6: AND
00000ef7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f0c: AND
00000f0d: PUSH4 0x70a08231
00000f12: ADDRESS
00000f13: PUSH1 0x40
00000f15: MLOAD
00000f16: DUP3
00000f17: PUSH4 0xffffffff
00000f1c: AND
00000f1d: PUSH1 0xe0
00000f1f: SHL
00000f20: DUP2
00000f21: MSTORE
00000f22: PUSH1 0x04
00000f24: ADD
00000f25: DUP1
00000f26: DUP3
00000f27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f3c: AND
00000f3d: DUP2
00000f3e: MSTORE
00000f3f: PUSH1 0x20
00000f41: ADD
00000f42: SWAP2
00000f43: POP
00000f44: POP
00000f45: PUSH1 0x20
00000f47: PUSH1 0x40
00000f49: MLOAD
00000f4a: DUP1
00000f4b: DUP4
00000f4c: SUB
00000f4d: DUP2
00000f4e: DUP7
00000f4f: DUP1
00000f50: EXTCODESIZE
00000f51: ISZERO
00000f52: DUP1
00000f53: ISZERO
00000f54: PUSH2 0x0f5c
00000f57: JUMPI
00000f58: PUSH1 0x00
00000f5a: DUP1
00000f5b: REVERT
00000f5c: JUMPDEST
00000f5d: POP
00000f5e: GAS
00000f5f: STATICCALL
00000f60: ISZERO
00000f61: DUP1
00000f62: ISZERO
00000f63: PUSH2 0x0f70
00000f66: JUMPI
00000f67: RETURNDATASIZE
00000f68: PUSH1 0x00
00000f6a: DUP1
00000f6b: RETURNDATACOPY
00000f6c: RETURNDATASIZE
00000f6d: PUSH1 0x00
00000f6f: REVERT
00000f70: JUMPDEST
00000f71: POP
00000f72: POP
00000f73: POP
00000f74: POP
00000f75: PUSH1 0x40
00000f77: MLOAD
00000f78: RETURNDATASIZE
00000f79: PUSH1 0x20
00000f7b: DUP2
00000f7c: LT
00000f7d: ISZERO
00000f7e: PUSH2 0x0f86
00000f81: JUMPI
00000f82: PUSH1 0x00
00000f84: DUP1
00000f85: REVERT
00000f86: JUMPDEST
00000f87: DUP2
00000f88: ADD
00000f89: SWAP1
00000f8a: DUP1
00000f8b: DUP1
00000f8c: MLOAD
00000f8d: SWAP1
00000f8e: PUSH1 0x20
00000f90: ADD
00000f91: SWAP1
00000f92: SWAP3
00000f93: SWAP2
00000f94: SWAP1
00000f95: POP
00000f96: POP
00000f97: POP
00000f98: SWAP1
00000f99: POP
00000f9a: PUSH1 0x00
00000f9c: PUSH2 0x0fc0
00000f9f: DUP4
00000fa0: PUSH2 0x0fb2
00000fa3: DUP5
00000fa4: DUP8
00000fa5: PUSH2 0x2862
00000fa8: SWAP1
00000fa9: SWAP2
00000faa: SWAP1
00000fab: PUSH4 0xffffffff
00000fb0: AND
00000fb1: JUMP
00000fb2: JUMPDEST
00000fb3: PUSH2 0x28e8
00000fb6: SWAP1
00000fb7: SWAP2
00000fb8: SWAP1
00000fb9: PUSH4 0xffffffff
00000fbe: AND
00000fbf: JUMP
00000fc0: JUMPDEST
00000fc1: SWAP1
00000fc2: POP
00000fc3: PUSH1 0x00
00000fc5: ADDRESS
00000fc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fdb: AND
00000fdc: BALANCE
00000fdd: SWAP1
00000fde: POP
00000fdf: PUSH1 0x00
00000fe1: PUSH2 0x1005
00000fe4: DUP6
00000fe5: PUSH2 0x0ff7
00000fe8: DUP5
00000fe9: DUP10
00000fea: PUSH2 0x2862
00000fed: SWAP1
00000fee: SWAP2
00000fef: SWAP1
00000ff0: PUSH4 0xffffffff
00000ff5: AND
00000ff6: JUMP
00000ff7: JUMPDEST
00000ff8: PUSH2 0x28e8
00000ffb: SWAP1
00000ffc: SWAP2
00000ffd: SWAP1
00000ffe: PUSH4 0xffffffff
00001003: AND
00001004: JUMP
00001005: JUMPDEST
00001006: SWAP1
00001007: POP
00001008: PUSH1 0x00
0000100a: PUSH1 0x9d
0000100c: PUSH1 0x01
0000100e: SWAP1
0000100f: SLOAD
00001010: SWAP1
00001011: PUSH2 0x0100
00001014: EXP
00001015: SWAP1
00001016: DIV
00001017: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000102c: AND
0000102d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001042: AND
00001043: PUSH4 0x70a08231
00001048: ADDRESS
00001049: PUSH1 0x40
0000104b: MLOAD
0000104c: DUP3
0000104d: PUSH4 0xffffffff
00001052: AND
00001053: PUSH1 0xe0
00001055: SHL
00001056: DUP2
00001057: MSTORE
00001058: PUSH1 0x04
0000105a: ADD
0000105b: DUP1
0000105c: DUP3
0000105d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001072: AND
00001073: DUP2
00001074: MSTORE
00001075: PUSH1 0x20
00001077: ADD
00001078: SWAP2
00001079: POP
0000107a: POP
0000107b: PUSH1 0x20
0000107d: PUSH1 0x40
0000107f: MLOAD
00001080: DUP1
00001081: DUP4
00001082: SUB
00001083: DUP2
00001084: DUP7
00001085: DUP1
00001086: EXTCODESIZE
00001087: ISZERO
00001088: DUP1
00001089: ISZERO
0000108a: PUSH2 0x1092
0000108d: JUMPI
0000108e: PUSH1 0x00
00001090: DUP1
00001091: REVERT
00001092: JUMPDEST
00001093: POP
00001094: GAS
00001095: STATICCALL
00001096: ISZERO
00001097: DUP1
00001098: ISZERO
00001099: PUSH2 0x10a6
0000109c: JUMPI
0000109d: RETURNDATASIZE
0000109e: PUSH1 0x00
000010a0: DUP1
000010a1: RETURNDATACOPY
000010a2: RETURNDATASIZE
000010a3: PUSH1 0x00
000010a5: REVERT
000010a6: JUMPDEST
000010a7: POP
000010a8: POP
000010a9: POP
000010aa: POP
000010ab: PUSH1 0x40
000010ad: MLOAD
000010ae: RETURNDATASIZE
000010af: PUSH1 0x20
000010b1: DUP2
000010b2: LT
000010b3: ISZERO
000010b4: PUSH2 0x10bc
000010b7: JUMPI
000010b8: PUSH1 0x00
000010ba: DUP1
000010bb: REVERT
000010bc: JUMPDEST
000010bd: DUP2
000010be: ADD
000010bf: SWAP1
000010c0: DUP1
000010c1: DUP1
000010c2: MLOAD
000010c3: SWAP1
000010c4: PUSH1 0x20
000010c6: ADD
000010c7: SWAP1
000010c8: SWAP3
000010c9: SWAP2
000010ca: SWAP1
000010cb: POP
000010cc: POP
000010cd: POP
000010ce: SWAP1
000010cf: POP
000010d0: PUSH1 0x00
000010d2: PUSH2 0x10f6
000010d5: DUP8
000010d6: PUSH2 0x10e8
000010d9: DUP5
000010da: DUP12
000010db: PUSH2 0x2862
000010de: SWAP1
000010df: SWAP2
000010e0: SWAP1
000010e1: PUSH4 0xffffffff
000010e6: AND
000010e7: JUMP
000010e8: JUMPDEST
000010e9: PUSH2 0x28e8
000010ec: SWAP1
000010ed: SWAP2
000010ee: SWAP1
000010ef: PUSH4 0xffffffff
000010f4: AND
000010f5: JUMP
000010f6: JUMPDEST
000010f7: SWAP1
000010f8: POP
000010f9: PUSH2 0x1109
000010fc: PUSH2 0x1103
000010ff: PUSH2 0x220c
00001102: JUMP
00001103: JUMPDEST
00001104: DUP10
00001105: PUSH2 0x2932
00001108: JUMP
00001109: JUMPDEST
0000110a: PUSH1 0x00
0000110c: DUP4
0000110d: GT
0000110e: ISZERO
0000110f: PUSH2 0x1161
00001112: JUMPI
00001113: PUSH2 0x111a
00001116: PUSH2 0x220c
00001119: JUMP
0000111a: JUMPDEST
0000111b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001130: AND
00001131: PUSH2 0x08fc
00001134: DUP5
00001135: SWAP1
00001136: DUP2
00001137: ISZERO
00001138: MUL
00001139: SWAP1
0000113a: PUSH1 0x40
0000113c: MLOAD
0000113d: PUSH1 0x00
0000113f: PUSH1 0x40
00001141: MLOAD
00001142: DUP1
00001143: DUP4
00001144: SUB
00001145: DUP2
00001146: DUP6
00001147: DUP9
00001148: DUP9
00001149: CALL
0000114a: SWAP4
0000114b: POP
0000114c: POP
0000114d: POP
0000114e: POP
0000114f: ISZERO
00001150: DUP1
00001151: ISZERO
00001152: PUSH2 0x115f
00001155: JUMPI
00001156: RETURNDATASIZE
00001157: PUSH1 0x00
00001159: DUP1
0000115a: RETURNDATACOPY
0000115b: RETURNDATASIZE
0000115c: PUSH1 0x00
0000115e: REVERT
0000115f: JUMPDEST
00001160: POP
00001161: JUMPDEST
00001162: PUSH1 0x00
00001164: DUP6
00001165: GT
00001166: ISZERO
00001167: PUSH2 0x1180
0000116a: JUMPI
0000116b: PUSH2 0x117b
0000116e: PUSH2 0x1175
00001171: PUSH2 0x220c
00001174: JUMP
00001175: JUMPDEST
00001176: DUP7
00001177: PUSH2 0x2af8
0000117a: JUMP
0000117b: JUMPDEST
0000117c: DUP4
0000117d: ADD
0000117e: SWAP3
0000117f: POP
00001180: JUMPDEST
00001181: PUSH1 0x00
00001183: DUP2
00001184: GT
00001185: ISZERO
00001186: PUSH2 0x127b
00001189: JUMPI
0000118a: PUSH1 0x9d
0000118c: PUSH1 0x01
0000118e: SWAP1
0000118f: SLOAD
00001190: SWAP1
00001191: PUSH2 0x0100
00001194: EXP
00001195: SWAP1
00001196: DIV
00001197: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011ac: AND
000011ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011c2: AND
000011c3: PUSH4 0xa9059cbb
000011c8: PUSH2 0x11cf
000011cb: PUSH2 0x220c
000011ce: JUMP
000011cf: JUMPDEST
000011d0: DUP4
000011d1: PUSH1 0x40
000011d3: MLOAD
000011d4: DUP4
000011d5: PUSH4 0xffffffff
000011da: AND
000011db: PUSH1 0xe0
000011dd: SHL
000011de: DUP2
000011df: MSTORE
000011e0: PUSH1 0x04
000011e2: ADD
000011e3: DUP1
000011e4: DUP4
000011e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011fa: AND
000011fb: DUP2
000011fc: MSTORE
000011fd: PUSH1 0x20
000011ff: ADD
00001200: DUP3
00001201: DUP2
00001202: MSTORE
00001203: PUSH1 0x20
00001205: ADD
00001206: SWAP3
00001207: POP
00001208: POP
00001209: POP
0000120a: PUSH1 0x20
0000120c: PUSH1 0x40
0000120e: MLOAD
0000120f: DUP1
00001210: DUP4
00001211: SUB
00001212: DUP2
00001213: PUSH1 0x00
00001215: DUP8
00001216: DUP1
00001217: EXTCODESIZE
00001218: ISZERO
00001219: DUP1
0000121a: ISZERO
0000121b: PUSH2 0x1223
0000121e: JUMPI
0000121f: PUSH1 0x00
00001221: DUP1
00001222: REVERT
00001223: JUMPDEST
00001224: POP
00001225: GAS
00001226: CALL
00001227: ISZERO
00001228: DUP1
00001229: ISZERO
0000122a: PUSH2 0x1237
0000122d: JUMPI
0000122e: RETURNDATASIZE
0000122f: PUSH1 0x00
00001231: DUP1
00001232: RETURNDATACOPY
00001233: RETURNDATASIZE
00001234: PUSH1 0x00
00001236: REVERT
00001237: JUMPDEST
00001238: POP
00001239: POP
0000123a: POP
0000123b: POP
0000123c: PUSH1 0x40
0000123e: MLOAD
0000123f: RETURNDATASIZE
00001240: PUSH1 0x20
00001242: DUP2
00001243: LT
00001244: ISZERO
00001245: PUSH2 0x124d
00001248: JUMPI
00001249: PUSH1 0x00
0000124b: DUP1
0000124c: REVERT
0000124d: JUMPDEST
0000124e: DUP2
0000124f: ADD
00001250: SWAP1
00001251: DUP1
00001252: DUP1
00001253: MLOAD
00001254: SWAP1
00001255: PUSH1 0x20
00001257: ADD
00001258: SWAP1
00001259: SWAP3
0000125a: SWAP2
0000125b: SWAP1
0000125c: POP
0000125d: POP
0000125e: POP
0000125f: POP
00001260: PUSH2 0x1274
00001263: DUP2
00001264: PUSH1 0x9e
00001266: SLOAD
00001267: PUSH2 0x2790
0000126a: SWAP1
0000126b: SWAP2
0000126c: SWAP1
0000126d: PUSH4 0xffffffff
00001272: AND
00001273: JUMP
00001274: JUMPDEST
00001275: PUSH1 0x9e
00001277: DUP2
00001278: SWAP1
00001279: SSTORE
0000127a: POP
0000127b: JUMPDEST
0000127c: PUSH2 0x1290
0000127f: DUP4
00001280: PUSH1 0x9c
00001282: SLOAD
00001283: PUSH2 0x2790
00001286: SWAP1
00001287: SWAP2
00001288: SWAP1
00001289: PUSH4 0xffffffff
0000128e: AND
0000128f: JUMP
00001290: JUMPDEST
00001291: PUSH1 0x9c
00001293: DUP2
00001294: SWAP1
00001295: SSTORE
00001296: POP
00001297: PUSH2 0x129e
0000129a: PUSH2 0x220c
0000129d: JUMP
0000129e: JUMPDEST
0000129f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012b4: AND
000012b5: PUSH32 0x4c60206a5c1de41f3376d1d60f0949d96cb682033c90b1c2d9d9a62d4c4120c0
000012d6: DUP10
000012d7: DUP6
000012d8: DUP5
000012d9: PUSH1 0x40
000012db: MLOAD
000012dc: DUP1
000012dd: DUP5
000012de: DUP2
000012df: MSTORE
000012e0: PUSH1 0x20
000012e2: ADD
000012e3: DUP4
000012e4: DUP2
000012e5: MSTORE
000012e6: PUSH1 0x20
000012e8: ADD
000012e9: DUP3
000012ea: DUP2
000012eb: MSTORE
000012ec: PUSH1 0x20
000012ee: ADD
000012ef: SWAP4
000012f0: POP
000012f1: POP
000012f2: POP
000012f3: POP
000012f4: PUSH1 0x40
000012f6: MLOAD
000012f7: DUP1
000012f8: SWAP2
000012f9: SUB
000012fa: SWAP1
000012fb: LOG2
000012fc: POP
000012fd: POP
000012fe: POP
000012ff: POP
00001300: POP
00001301: POP
00001302: POP
00001303: PUSH1 0x01
00001305: PUSH1 0x97
00001307: PUSH1 0x01
00001309: PUSH2 0x0100
0000130c: EXP
0000130d: DUP2
0000130e: SLOAD
0000130f: DUP2
00001310: PUSH1 0xff
00001312: MUL
00001313: NOT
00001314: AND
00001315: SWAP1
00001316: DUP4
00001317: ISZERO
00001318: ISZERO
00001319: MUL
0000131a: OR
0000131b: SWAP1
0000131c: SSTORE
0000131d: POP
0000131e: POP
0000131f: JUMP
00001320: JUMPDEST
00001321: DUP3
00001322: PUSH1 0x00
00001324: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001339: AND
0000133a: DUP2
0000133b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001350: AND
00001351: EQ
00001352: ISZERO
00001353: PUSH2 0x13c4
00001356: JUMPI
00001357: PUSH1 0x40
00001359: MLOAD
0000135a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000137b: DUP2
0000137c: MSTORE
0000137d: PUSH1 0x04
0000137f: ADD
00001380: DUP1
00001381: DUP1
00001382: PUSH1 0x20
00001384: ADD
00001385: DUP3
00001386: DUP2
00001387: SUB
00001388: DUP3
00001389: MSTORE
0000138a: PUSH1 0x14
0000138c: DUP2
0000138d: MSTORE
0000138e: PUSH1 0x20
00001390: ADD
00001391: DUP1
00001392: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000
000013b3: DUP2
000013b4: MSTORE
000013b5: POP
000013b6: PUSH1 0x20
000013b8: ADD
000013b9: SWAP2
000013ba: POP
000013bb: POP
000013bc: PUSH1 0x40
000013be: MLOAD
000013bf: DUP1
000013c0: SWAP2
000013c1: SUB
000013c2: SWAP1
000013c3: REVERT
000013c4: JUMPDEST
000013c5: DUP3
000013c6: PUSH1 0x00
000013c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013dd: AND
000013de: DUP2
000013df: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013f4: AND
000013f5: EQ
000013f6: ISZERO
000013f7: PUSH2 0x1468
000013fa: JUMPI
000013fb: PUSH1 0x40
000013fd: MLOAD
000013fe: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000141f: DUP2
00001420: MSTORE
00001421: PUSH1 0x04
00001423: ADD
00001424: DUP1
00001425: DUP1
00001426: PUSH1 0x20
00001428: ADD
00001429: DUP3
0000142a: DUP2
0000142b: SUB
0000142c: DUP3
0000142d: MSTORE
0000142e: PUSH1 0x14
00001430: DUP2
00001431: MSTORE
00001432: PUSH1 0x20
00001434: ADD
00001435: DUP1
00001436: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000
00001457: DUP2
00001458: MSTORE
00001459: POP
0000145a: PUSH1 0x20
0000145c: ADD
0000145d: SWAP2
0000145e: POP
0000145f: POP
00001460: PUSH1 0x40
00001462: MLOAD
00001463: DUP1
00001464: SWAP2
00001465: SUB
00001466: SWAP1
00001467: REVERT
00001468: JUMPDEST
00001469: DUP3
0000146a: PUSH1 0x00
0000146c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001481: AND
00001482: DUP2
00001483: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001498: AND
00001499: EQ
0000149a: ISZERO
0000149b: PUSH2 0x150c
0000149e: JUMPI
0000149f: PUSH1 0x40
000014a1: MLOAD
000014a2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000014c3: DUP2
000014c4: MSTORE
000014c5: PUSH1 0x04
000014c7: ADD
000014c8: DUP1
000014c9: DUP1
000014ca: PUSH1 0x20
000014cc: ADD
000014cd: DUP3
000014ce: DUP2
000014cf: SUB
000014d0: DUP3
000014d1: MSTORE
000014d2: PUSH1 0x14
000014d4: DUP2
000014d5: MSTORE
000014d6: PUSH1 0x20
000014d8: ADD
000014d9: DUP1
000014da: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000
000014fb: DUP2
000014fc: MSTORE
000014fd: POP
000014fe: PUSH1 0x20
00001500: ADD
00001501: SWAP2
00001502: POP
00001503: POP
00001504: PUSH1 0x40
00001506: MLOAD
00001507: DUP1
00001508: SWAP2
00001509: SUB
0000150a: SWAP1
0000150b: REVERT
0000150c: JUMPDEST
0000150d: PUSH1 0x97
0000150f: PUSH1 0x00
00001511: SWAP1
00001512: SLOAD
00001513: SWAP1
00001514: PUSH2 0x0100
00001517: EXP
00001518: SWAP1
00001519: DIV
0000151a: PUSH1 0xff
0000151c: AND
0000151d: ISZERO
0000151e: PUSH2 0x158f
00001521: JUMPI
00001522: PUSH1 0x40
00001524: MLOAD
00001525: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001546: DUP2
00001547: MSTORE
00001548: PUSH1 0x04
0000154a: ADD
0000154b: DUP1
0000154c: DUP1
0000154d: PUSH1 0x20
0000154f: ADD
00001550: DUP3
00001551: DUP2
00001552: SUB
00001553: DUP3
00001554: MSTORE
00001555: PUSH1 0x16
00001557: DUP2
00001558: MSTORE
00001559: PUSH1 0x20
0000155b: ADD
0000155c: DUP1
0000155d: PUSH32 0x574158473a20616c726561647920757067726164656400000000000000000000
0000157e: DUP2
0000157f: MSTORE
00001580: POP
00001581: PUSH1 0x20
00001583: ADD
00001584: SWAP2
00001585: POP
00001586: POP
00001587: PUSH1 0x40
00001589: MLOAD
0000158a: DUP1
0000158b: SWAP2
0000158c: SUB
0000158d: SWAP1
0000158e: REVERT
0000158f: JUMPDEST
00001590: PUSH1 0x01
00001592: PUSH1 0x97
00001594: PUSH1 0x00
00001596: PUSH2 0x0100
00001599: EXP
0000159a: DUP2
0000159b: SLOAD
0000159c: DUP2
0000159d: PUSH1 0xff
0000159f: MUL
000015a0: NOT
000015a1: AND
000015a2: SWAP1
000015a3: DUP4
000015a4: ISZERO
000015a5: ISZERO
000015a6: MUL
000015a7: OR
000015a8: SWAP1
000015a9: SSTORE
000015aa: POP
000015ab: PUSH1 0x01
000015ad: PUSH1 0x97
000015af: PUSH1 0x01
000015b1: PUSH2 0x0100
000015b4: EXP
000015b5: DUP2
000015b6: SLOAD
000015b7: DUP2
000015b8: PUSH1 0xff
000015ba: MUL
000015bb: NOT
000015bc: AND
000015bd: SWAP1
000015be: DUP4
000015bf: ISZERO
000015c0: ISZERO
000015c1: MUL
000015c2: OR
000015c3: SWAP1
000015c4: SSTORE
000015c5: POP
000015c6: DUP6
000015c7: PUSH1 0x97
000015c9: PUSH1 0x02
000015cb: PUSH2 0x0100
000015ce: EXP
000015cf: DUP2
000015d0: SLOAD
000015d1: DUP2
000015d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015e7: MUL
000015e8: NOT
000015e9: AND
000015ea: SWAP1
000015eb: DUP4
000015ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001601: AND
00001602: MUL
00001603: OR
00001604: SWAP1
00001605: SSTORE
00001606: POP
00001607: DUP5
00001608: PUSH1 0x98
0000160a: PUSH1 0x00
0000160c: PUSH2 0x0100
0000160f: EXP
00001610: DUP2
00001611: SLOAD
00001612: DUP2
00001613: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001628: MUL
00001629: NOT
0000162a: AND
0000162b: SWAP1
0000162c: DUP4
0000162d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001642: AND
00001643: MUL
00001644: OR
00001645: SWAP1
00001646: SSTORE
00001647: POP
00001648: DUP4
00001649: PUSH1 0x9a
0000164b: PUSH1 0x00
0000164d: PUSH2 0x0100
00001650: EXP
00001651: DUP2
00001652: SLOAD
00001653: DUP2
00001654: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001669: MUL
0000166a: NOT
0000166b: AND
0000166c: SWAP1
0000166d: DUP4
0000166e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001683: AND
00001684: MUL
00001685: OR
00001686: SWAP1
00001687: SSTORE
00001688: POP
00001689: PUSH1 0x00
0000168b: PUSH1 0x9c
0000168d: DUP2
0000168e: SWAP1
0000168f: SSTORE
00001690: POP
00001691: PUSH1 0x60
00001693: PUSH1 0x02
00001695: PUSH8 0xffffffffffffffff
0000169e: DUP2
0000169f: GT
000016a0: DUP1
000016a1: ISZERO
000016a2: PUSH2 0x16aa
000016a5: JUMPI
000016a6: PUSH1 0x00
000016a8: DUP1
000016a9: REVERT
000016aa: JUMPDEST
000016ab: POP
000016ac: PUSH1 0x40
000016ae: MLOAD
000016af: SWAP1
000016b0: DUP1
000016b1: DUP3
000016b2: MSTORE
000016b3: DUP1
000016b4: PUSH1 0x20
000016b6: MUL
000016b7: PUSH1 0x20
000016b9: ADD
000016ba: DUP3
000016bb: ADD
000016bc: PUSH1 0x40
000016be: MSTORE
000016bf: DUP1
000016c0: ISZERO
000016c1: PUSH2 0x16d9
000016c4: JUMPI
000016c5: DUP2
000016c6: PUSH1 0x20
000016c8: ADD
000016c9: PUSH1 0x20
000016cb: DUP3
000016cc: MUL
000016cd: DUP1
000016ce: CALLDATASIZE
000016cf: DUP4
000016d0: CALLDATACOPY
000016d1: DUP1
000016d2: DUP3
000016d3: ADD
000016d4: SWAP2
000016d5: POP
000016d6: POP
000016d7: SWAP1
000016d8: POP
000016d9: JUMPDEST
000016da: POP
000016db: SWAP1
000016dc: POP
000016dd: PUSH1 0x98
000016df: PUSH1 0x00
000016e1: SWAP1
000016e2: SLOAD
000016e3: SWAP1
000016e4: PUSH2 0x0100
000016e7: EXP
000016e8: SWAP1
000016e9: DIV
000016ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016ff: AND
00001700: DUP2
00001701: PUSH1 0x00
00001703: DUP2
00001704: MLOAD
00001705: DUP2
00001706: LT
00001707: PUSH2 0x170c
0000170a: JUMPI
0000170b: INVALID
0000170c: JUMPDEST
0000170d: PUSH1 0x20
0000170f: MUL
00001710: PUSH1 0x20
00001712: ADD
00001713: ADD
00001714: SWAP1
00001715: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000172a: AND
0000172b: SWAP1
0000172c: DUP2
0000172d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001742: AND
00001743: DUP2
00001744: MSTORE
00001745: POP
00001746: POP
00001747: PUSH1 0x9a
00001749: PUSH1 0x00
0000174b: SWAP1
0000174c: SLOAD
0000174d: SWAP1
0000174e: PUSH2 0x0100
00001751: EXP
00001752: SWAP1
00001753: DIV
00001754: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001769: AND
0000176a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000177f: AND
00001780: PUSH4 0xad5c4648
00001785: PUSH1 0x40
00001787: MLOAD
00001788: DUP2
00001789: PUSH4 0xffffffff
0000178e: AND
0000178f: PUSH1 0xe0
00001791: SHL
00001792: DUP2
00001793: MSTORE
00001794: PUSH1 0x04
00001796: ADD
00001797: PUSH1 0x20
00001799: PUSH1 0x40
0000179b: MLOAD
0000179c: DUP1
0000179d: DUP4
0000179e: SUB
0000179f: DUP2
000017a0: DUP7
000017a1: DUP1
000017a2: EXTCODESIZE
000017a3: ISZERO
000017a4: DUP1
000017a5: ISZERO
000017a6: PUSH2 0x17ae
000017a9: JUMPI
000017aa: PUSH1 0x00
000017ac: DUP1
000017ad: REVERT
000017ae: JUMPDEST
000017af: POP
000017b0: GAS
000017b1: STATICCALL
000017b2: ISZERO
000017b3: DUP1
000017b4: ISZERO
000017b5: PUSH2 0x17c2
000017b8: JUMPI
000017b9: RETURNDATASIZE
000017ba: PUSH1 0x00
000017bc: DUP1
000017bd: RETURNDATACOPY
000017be: RETURNDATASIZE
000017bf: PUSH1 0x00
000017c1: REVERT
000017c2: JUMPDEST
000017c3: POP
000017c4: POP
000017c5: POP
000017c6: POP
000017c7: PUSH1 0x40
000017c9: MLOAD
000017ca: RETURNDATASIZE
000017cb: PUSH1 0x20
000017cd: DUP2
000017ce: LT
000017cf: ISZERO
000017d0: PUSH2 0x17d8
000017d3: JUMPI
000017d4: PUSH1 0x00
000017d6: DUP1
000017d7: REVERT
000017d8: JUMPDEST
000017d9: DUP2
000017da: ADD
000017db: SWAP1
000017dc: DUP1
000017dd: DUP1
000017de: MLOAD
000017df: SWAP1
000017e0: PUSH1 0x20
000017e2: ADD
000017e3: SWAP1
000017e4: SWAP3
000017e5: SWAP2
000017e6: SWAP1
000017e7: POP
000017e8: POP
000017e9: POP
000017ea: DUP2
000017eb: PUSH1 0x01
000017ed: DUP2
000017ee: MLOAD
000017ef: DUP2
000017f0: LT
000017f1: PUSH2 0x17f6
000017f4: JUMPI
000017f5: INVALID
000017f6: JUMPDEST
000017f7: PUSH1 0x20
000017f9: MUL
000017fa: PUSH1 0x20
000017fc: ADD
000017fd: ADD
000017fe: SWAP1
000017ff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001814: AND
00001815: SWAP1
00001816: DUP2
00001817: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000182c: AND
0000182d: DUP2
0000182e: MSTORE
0000182f: POP
00001830: POP
00001831: DUP1
00001832: PUSH1 0x9b
00001834: SWAP1
00001835: DUP1
00001836: MLOAD
00001837: SWAP1
00001838: PUSH1 0x20
0000183a: ADD
0000183b: SWAP1
0000183c: PUSH2 0x1846
0000183f: SWAP3
00001840: SWAP2
00001841: SWAP1
00001842: PUSH2 0x3d1e
00001845: JUMP
00001846: JUMPDEST
00001847: POP
00001848: POP
00001849: POP
0000184a: POP
0000184b: POP
0000184c: POP
0000184d: POP
0000184e: POP
0000184f: JUMP
00001850: JUMPDEST
00001851: PUSH1 0x99
00001853: PUSH1 0x00
00001855: SWAP1
00001856: SLOAD
00001857: SWAP1
00001858: PUSH2 0x0100
0000185b: EXP
0000185c: SWAP1
0000185d: DIV
0000185e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001873: AND
00001874: DUP2
00001875: JUMP
00001876: JUMPDEST
00001877: PUSH1 0x00
00001879: PUSH1 0x65
0000187b: PUSH1 0x00
0000187d: DUP4
0000187e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001893: AND
00001894: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018a9: AND
000018aa: DUP2
000018ab: MSTORE
000018ac: PUSH1 0x20
000018ae: ADD
000018af: SWAP1
000018b0: DUP2
000018b1: MSTORE
000018b2: PUSH1 0x20
000018b4: ADD
000018b5: PUSH1 0x00
000018b7: KECCAK256
000018b8: SLOAD
000018b9: SWAP1
000018ba: POP
000018bb: SWAP2
000018bc: SWAP1
000018bd: POP
000018be: JUMP
000018bf: JUMPDEST
000018c0: PUSH1 0x9e
000018c2: SLOAD
000018c3: DUP2
000018c4: JUMP
000018c5: JUMPDEST
000018c6: PUSH1 0x9a
000018c8: PUSH1 0x00
000018ca: SWAP1
000018cb: SLOAD
000018cc: SWAP1
000018cd: PUSH2 0x0100
000018d0: EXP
000018d1: SWAP1
000018d2: DIV
000018d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018e8: AND
000018e9: DUP2
000018ea: JUMP
000018eb: JUMPDEST
000018ec: PUSH1 0x60
000018ee: PUSH1 0x69
000018f0: DUP1
000018f1: SLOAD
000018f2: PUSH1 0x01
000018f4: DUP2
000018f5: PUSH1 0x01
000018f7: AND
000018f8: ISZERO
000018f9: PUSH2 0x0100
000018fc: MUL
000018fd: SUB
000018fe: AND
000018ff: PUSH1 0x02
00001901: SWAP1
00001902: DIV
00001903: DUP1
00001904: PUSH1 0x1f
00001906: ADD
00001907: PUSH1 0x20
00001909: DUP1
0000190a: SWAP2
0000190b: DIV
0000190c: MUL
0000190d: PUSH1 0x20
0000190f: ADD
00001910: PUSH1 0x40
00001912: MLOAD
00001913: SWAP1
00001914: DUP2
00001915: ADD
00001916: PUSH1 0x40
00001918: MSTORE
00001919: DUP1
0000191a: SWAP3
0000191b: SWAP2
0000191c: SWAP1
0000191d: DUP2
0000191e: DUP2
0000191f: MSTORE
00001920: PUSH1 0x20
00001922: ADD
00001923: DUP3
00001924: DUP1
00001925: SLOAD
00001926: PUSH1 0x01
00001928: DUP2
00001929: PUSH1 0x01
0000192b: AND
0000192c: ISZERO
0000192d: PUSH2 0x0100
00001930: MUL
00001931: SUB
00001932: AND
00001933: PUSH1 0x02
00001935: SWAP1
00001936: DIV
00001937: DUP1
00001938: ISZERO
00001939: PUSH2 0x1983
0000193c: JUMPI
0000193d: DUP1
0000193e: PUSH1 0x1f
00001940: LT
00001941: PUSH2 0x1958
00001944: JUMPI
00001945: PUSH2 0x0100
00001948: DUP1
00001949: DUP4
0000194a: SLOAD
0000194b: DIV
0000194c: MUL
0000194d: DUP4
0000194e: MSTORE
0000194f: SWAP2
00001950: PUSH1 0x20
00001952: ADD
00001953: SWAP2
00001954: PUSH2 0x1983
00001957: JUMP
00001958: JUMPDEST
00001959: DUP3
0000195a: ADD
0000195b: SWAP2
0000195c: SWAP1
0000195d: PUSH1 0x00
0000195f: MSTORE
00001960: PUSH1 0x20
00001962: PUSH1 0x00
00001964: KECCAK256
00001965: SWAP1
00001966: JUMPDEST
00001967: DUP2
00001968: SLOAD
00001969: DUP2
0000196a: MSTORE
0000196b: SWAP1
0000196c: PUSH1 0x01
0000196e: ADD
0000196f: SWAP1
00001970: PUSH1 0x20
00001972: ADD
00001973: DUP1
00001974: DUP4
00001975: GT
00001976: PUSH2 0x1966
00001979: JUMPI
0000197a: DUP3
0000197b: SWAP1
0000197c: SUB
0000197d: PUSH1 0x1f
0000197f: AND
00001980: DUP3
00001981: ADD
00001982: SWAP2
00001983: JUMPDEST
00001984: POP
00001985: POP
00001986: POP
00001987: POP
00001988: POP
00001989: SWAP1
0000198a: POP
0000198b: SWAP1
0000198c: JUMP
0000198d: JUMPDEST
0000198e: PUSH1 0x00
00001990: PUSH2 0x1a50
00001993: PUSH2 0x199a
00001996: PUSH2 0x220c
00001999: JUMP
0000199a: JUMPDEST
0000199b: DUP5
0000199c: PUSH2 0x1a4b
0000199f: DUP6
000019a0: PUSH1 0x40
000019a2: MLOAD
000019a3: DUP1
000019a4: PUSH1 0x60
000019a6: ADD
000019a7: PUSH1 0x40
000019a9: MSTORE
000019aa: DUP1
000019ab: PUSH1 0x25
000019ad: DUP2
000019ae: MSTORE
000019af: PUSH1 0x20
000019b1: ADD
000019b2: PUSH2 0x40b8
000019b5: PUSH1 0x25
000019b7: SWAP2
000019b8: CODECOPY
000019b9: PUSH1 0x66
000019bb: PUSH1 0x00
000019bd: PUSH2 0x19c4
000019c0: PUSH2 0x220c
000019c3: JUMP
000019c4: JUMPDEST
000019c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019da: AND
000019db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019f0: AND
000019f1: DUP2
000019f2: MSTORE
000019f3: PUSH1 0x20
000019f5: ADD
000019f6: SWAP1
000019f7: DUP2
000019f8: MSTORE
000019f9: PUSH1 0x20
000019fb: ADD
000019fc: PUSH1 0x00
000019fe: KECCAK256
000019ff: PUSH1 0x00
00001a01: DUP11
00001a02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a17: AND
00001a18: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a2d: AND
00001a2e: DUP2
00001a2f: MSTORE
00001a30: PUSH1 0x20
00001a32: ADD
00001a33: SWAP1
00001a34: DUP2
00001a35: MSTORE
00001a36: PUSH1 0x20
00001a38: ADD
00001a39: PUSH1 0x00
00001a3b: KECCAK256
00001a3c: SLOAD
00001a3d: PUSH2 0x26d0
00001a40: SWAP1
00001a41: SWAP3
00001a42: SWAP2
00001a43: SWAP1
00001a44: PUSH4 0xffffffff
00001a49: AND
00001a4a: JUMP
00001a4b: JUMPDEST
00001a4c: PUSH2 0x2214
00001a4f: JUMP
00001a50: JUMPDEST
00001a51: PUSH1 0x01
00001a53: SWAP1
00001a54: POP
00001a55: SWAP3
00001a56: SWAP2
00001a57: POP
00001a58: POP
00001a59: JUMP
00001a5a: JUMPDEST
00001a5b: PUSH1 0x00
00001a5d: PUSH2 0x1a6e
00001a60: PUSH2 0x1a67
00001a63: PUSH2 0x220c
00001a66: JUMP
00001a67: JUMPDEST
00001a68: DUP5
00001a69: DUP5
00001a6a: PUSH2 0x240b
00001a6d: JUMP
00001a6e: JUMPDEST
00001a6f: PUSH1 0x01
00001a71: SWAP1
00001a72: POP
00001a73: SWAP3
00001a74: SWAP2
00001a75: POP
00001a76: POP
00001a77: JUMP
00001a78: JUMPDEST
00001a79: PUSH1 0x9c
00001a7b: SLOAD
00001a7c: DUP2
00001a7d: JUMP
00001a7e: JUMPDEST
00001a7f: PUSH1 0x00
00001a81: PUSH1 0x01
00001a83: SWAP1
00001a84: SLOAD
00001a85: SWAP1
00001a86: PUSH2 0x0100
00001a89: EXP
00001a8a: SWAP1
00001a8b: DIV
00001a8c: PUSH1 0xff
00001a8e: AND
00001a8f: DUP1
00001a90: PUSH2 0x1a9d
00001a93: JUMPI
00001a94: POP
00001a95: PUSH2 0x1a9c
00001a98: PUSH2 0x2d94
00001a9b: JUMP
00001a9c: JUMPDEST
00001a9d: JUMPDEST
00001a9e: DUP1
00001a9f: PUSH2 0x1ab3
00001aa2: JUMPI
00001aa3: POP
00001aa4: PUSH1 0x00
00001aa6: DUP1
00001aa7: SLOAD
00001aa8: SWAP1
00001aa9: PUSH2 0x0100
00001aac: EXP
00001aad: SWAP1
00001aae: DIV
00001aaf: PUSH1 0xff
00001ab1: AND
00001ab2: ISZERO
00001ab3: JUMPDEST
00001ab4: PUSH2 0x1b08
00001ab7: JUMPI
00001ab8: PUSH1 0x40
00001aba: MLOAD
00001abb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001adc: DUP2
00001add: MSTORE
00001ade: PUSH1 0x04
00001ae0: ADD
00001ae1: DUP1
00001ae2: DUP1
00001ae3: PUSH1 0x20
00001ae5: ADD
00001ae6: DUP3
00001ae7: DUP2
00001ae8: SUB
00001ae9: DUP3
00001aea: MSTORE
00001aeb: PUSH1 0x2e
00001aed: DUP2
00001aee: MSTORE
00001aef: PUSH1 0x20
00001af1: ADD
00001af2: DUP1
00001af3: PUSH2 0x3f99
00001af6: PUSH1 0x2e
00001af8: SWAP2
00001af9: CODECOPY
00001afa: PUSH1 0x40
00001afc: ADD
00001afd: SWAP2
00001afe: POP
00001aff: POP
00001b00: PUSH1 0x40
00001b02: MLOAD
00001b03: DUP1
00001b04: SWAP2
00001b05: SUB
00001b06: SWAP1
00001b07: REVERT
00001b08: JUMPDEST
00001b09: PUSH1 0x00
00001b0b: DUP1
00001b0c: PUSH1 0x01
00001b0e: SWAP1
00001b0f: SLOAD
00001b10: SWAP1
00001b11: PUSH2 0x0100
00001b14: EXP
00001b15: SWAP1
00001b16: DIV
00001b17: PUSH1 0xff
00001b19: AND
00001b1a: ISZERO
00001b1b: SWAP1
00001b1c: POP
00001b1d: DUP1
00001b1e: ISZERO
00001b1f: PUSH2 0x1b58
00001b22: JUMPI
00001b23: PUSH1 0x01
00001b25: PUSH1 0x00
00001b27: PUSH1 0x01
00001b29: PUSH2 0x0100
00001b2c: EXP
00001b2d: DUP2
00001b2e: SLOAD
00001b2f: DUP2
00001b30: PUSH1 0xff
00001b32: MUL
00001b33: NOT
00001b34: AND
00001b35: SWAP1
00001b36: DUP4
00001b37: ISZERO
00001b38: ISZERO
00001b39: MUL
00001b3a: OR
00001b3b: SWAP1
00001b3c: SSTORE
00001b3d: POP
00001b3e: PUSH1 0x01
00001b40: PUSH1 0x00
00001b42: DUP1
00001b43: PUSH2 0x0100
00001b46: EXP
00001b47: DUP2
00001b48: SLOAD
00001b49: DUP2
00001b4a: PUSH1 0xff
00001b4c: MUL
00001b4d: NOT
00001b4e: AND
00001b4f: SWAP1
00001b50: DUP4
00001b51: ISZERO
00001b52: ISZERO
00001b53: MUL
00001b54: OR
00001b55: SWAP1
00001b56: SSTORE
00001b57: POP
00001b58: JUMPDEST
00001b59: PUSH2 0x1bcc
00001b5c: PUSH1 0x40
00001b5e: MLOAD
00001b5f: DUP1
00001b60: PUSH1 0x40
00001b62: ADD
00001b63: PUSH1 0x40
00001b65: MSTORE
00001b66: DUP1
00001b67: PUSH1 0x14
00001b69: DUP2
00001b6a: MSTORE
00001b6b: PUSH1 0x20
00001b6d: ADD
00001b6e: PUSH32 0x57415820476f7665726e616e636520546f6b656e000000000000000000000000
00001b8f: DUP2
00001b90: MSTORE
00001b91: POP
00001b92: PUSH1 0x40
00001b94: MLOAD
00001b95: DUP1
00001b96: PUSH1 0x40
00001b98: ADD
00001b99: PUSH1 0x40
00001b9b: MSTORE
00001b9c: DUP1
00001b9d: PUSH1 0x04
00001b9f: DUP2
00001ba0: MSTORE
00001ba1: PUSH1 0x20
00001ba3: ADD
00001ba4: PUSH32 0x5741584700000000000000000000000000000000000000000000000000000000
00001bc5: DUP2
00001bc6: MSTORE
00001bc7: POP
00001bc8: PUSH2 0x2dab
00001bcb: JUMP
00001bcc: JUMPDEST
00001bcd: PUSH2 0x1bd6
00001bd0: PUSH1 0x08
00001bd2: PUSH2 0x2ebd
00001bd5: JUMP
00001bd6: JUMPDEST
00001bd7: PUSH2 0x1bec
00001bda: DUP3
00001bdb: PUSH1 0x08
00001bdd: PUSH1 0xff
00001bdf: AND
00001be0: PUSH1 0x0a
00001be2: EXP
00001be3: PUSH3 0x989680
00001be7: MUL
00001be8: PUSH2 0x2edb
00001beb: JUMP
00001bec: JUMPDEST
00001bed: PUSH1 0x08
00001bef: PUSH1 0xff
00001bf1: AND
00001bf2: PUSH1 0x0a
00001bf4: EXP
00001bf5: PUSH3 0x989680
00001bf9: MUL
00001bfa: PUSH2 0x1c01
00001bfd: PUSH2 0x0b26
00001c00: JUMP
00001c01: JUMPDEST
00001c02: EQ
00001c03: PUSH2 0x1c57
00001c06: JUMPI
00001c07: PUSH1 0x40
00001c09: MLOAD
00001c0a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001c2b: DUP2
00001c2c: MSTORE
00001c2d: PUSH1 0x04
00001c2f: ADD
00001c30: DUP1
00001c31: DUP1
00001c32: PUSH1 0x20
00001c34: ADD
00001c35: DUP3
00001c36: DUP2
00001c37: SUB
00001c38: DUP3
00001c39: MSTORE
00001c3a: PUSH1 0x27
00001c3c: DUP2
00001c3d: MSTORE
00001c3e: PUSH1 0x20
00001c40: ADD
00001c41: DUP1
00001c42: PUSH2 0x4031
00001c45: PUSH1 0x27
00001c47: SWAP2
00001c48: CODECOPY
00001c49: PUSH1 0x40
00001c4b: ADD
00001c4c: SWAP2
00001c4d: POP
00001c4e: POP
00001c4f: PUSH1 0x40
00001c51: MLOAD
00001c52: DUP1
00001c53: SWAP2
00001c54: SUB
00001c55: SWAP1
00001c56: REVERT
00001c57: JUMPDEST
00001c58: DUP1
00001c59: ISZERO
00001c5a: PUSH2 0x1c78
00001c5d: JUMPI
00001c5e: PUSH1 0x00
00001c60: DUP1
00001c61: PUSH1 0x01
00001c63: PUSH2 0x0100
00001c66: EXP
00001c67: DUP2
00001c68: SLOAD
00001c69: DUP2
00001c6a: PUSH1 0xff
00001c6c: MUL
00001c6d: NOT
00001c6e: AND
00001c6f: SWAP1
00001c70: DUP4
00001c71: ISZERO
00001c72: ISZERO
00001c73: MUL
00001c74: OR
00001c75: SWAP1
00001c76: SSTORE
00001c77: POP
00001c78: JUMPDEST
00001c79: POP
00001c7a: POP
00001c7b: JUMP
00001c7c: JUMPDEST
00001c7d: PUSH1 0x00
00001c7f: DUP1
00001c80: PUSH1 0x00
00001c82: PUSH2 0x1cc5
00001c85: PUSH2 0x1caf
00001c88: PUSH1 0x97
00001c8a: PUSH1 0x02
00001c8c: SWAP1
00001c8d: SLOAD
00001c8e: SWAP1
00001c8f: PUSH2 0x0100
00001c92: EXP
00001c93: SWAP1
00001c94: DIV
00001c95: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001caa: AND
00001cab: PUSH2 0x1876
00001cae: JUMP
00001caf: JUMPDEST
00001cb0: PUSH2 0x1cb7
00001cb3: PUSH2 0x0b26
00001cb6: JUMP
00001cb7: JUMPDEST
00001cb8: PUSH2 0x2818
00001cbb: SWAP1
00001cbc: SWAP2
00001cbd: SWAP1
00001cbe: PUSH4 0xffffffff
00001cc3: AND
00001cc4: JUMP
00001cc5: JUMPDEST
00001cc6: SWAP1
00001cc7: POP
00001cc8: DUP4
00001cc9: DUP2
00001cca: LT
00001ccb: ISZERO
00001ccc: PUSH2 0x1d20
00001ccf: JUMPI
00001cd0: PUSH1 0x40
00001cd2: MLOAD
00001cd3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001cf4: DUP2
00001cf5: MSTORE
00001cf6: PUSH1 0x04
00001cf8: ADD
00001cf9: DUP1
00001cfa: DUP1
00001cfb: PUSH1 0x20
00001cfd: ADD
00001cfe: DUP3
00001cff: DUP2
00001d00: SUB
00001d01: DUP3
00001d02: MSTORE
00001d03: PUSH1 0x42
00001d05: DUP2
00001d06: MSTORE
00001d07: PUSH1 0x20
00001d09: ADD
00001d0a: DUP1
00001d0b: PUSH2 0x3ee8
00001d0e: PUSH1 0x42
00001d10: SWAP2
00001d11: CODECOPY
00001d12: PUSH1 0x60
00001d14: ADD
00001d15: SWAP2
00001d16: POP
00001d17: POP
00001d18: PUSH1 0x40
00001d1a: MLOAD
00001d1b: DUP1
00001d1c: SWAP2
00001d1d: SUB
00001d1e: SWAP1
00001d1f: REVERT
00001d20: JUMPDEST
00001d21: PUSH1 0x00
00001d23: PUSH1 0x98
00001d25: PUSH1 0x00
00001d27: SWAP1
00001d28: SLOAD
00001d29: SWAP1
00001d2a: PUSH2 0x0100
00001d2d: EXP
00001d2e: SWAP1
00001d2f: DIV
00001d30: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d45: AND
00001d46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d5b: AND
00001d5c: PUSH4 0x70a08231
00001d61: ADDRESS
00001d62: PUSH1 0x40
00001d64: MLOAD
00001d65: DUP3
00001d66: PUSH4 0xffffffff
00001d6b: AND
00001d6c: PUSH1 0xe0
00001d6e: SHL
00001d6f: DUP2
00001d70: MSTORE
00001d71: PUSH1 0x04
00001d73: ADD
00001d74: DUP1
00001d75: DUP3
00001d76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d8b: AND
00001d8c: DUP2
00001d8d: MSTORE
00001d8e: PUSH1 0x20
00001d90: ADD
00001d91: SWAP2
00001d92: POP
00001d93: POP
00001d94: PUSH1 0x20
00001d96: PUSH1 0x40
00001d98: MLOAD
00001d99: DUP1
00001d9a: DUP4
00001d9b: SUB
00001d9c: DUP2
00001d9d: DUP7
00001d9e: DUP1
00001d9f: EXTCODESIZE
00001da0: ISZERO
00001da1: DUP1
00001da2: ISZERO
00001da3: PUSH2 0x1dab
00001da6: JUMPI
00001da7: PUSH1 0x00
00001da9: DUP1
00001daa: REVERT
00001dab: JUMPDEST
00001dac: POP
00001dad: GAS
00001dae: STATICCALL
00001daf: ISZERO
00001db0: DUP1
00001db1: ISZERO
00001db2: PUSH2 0x1dbf
00001db5: JUMPI
00001db6: RETURNDATASIZE
00001db7: PUSH1 0x00
00001db9: DUP1
00001dba: RETURNDATACOPY
00001dbb: RETURNDATASIZE
00001dbc: PUSH1 0x00
00001dbe: REVERT
00001dbf: JUMPDEST
00001dc0: POP
00001dc1: POP
00001dc2: POP
00001dc3: POP
00001dc4: PUSH1 0x40
00001dc6: MLOAD
00001dc7: RETURNDATASIZE
00001dc8: PUSH1 0x20
00001dca: DUP2
00001dcb: LT
00001dcc: ISZERO
00001dcd: PUSH2 0x1dd5
00001dd0: JUMPI
00001dd1: PUSH1 0x00
00001dd3: DUP1
00001dd4: REVERT
00001dd5: JUMPDEST
00001dd6: DUP2
00001dd7: ADD
00001dd8: SWAP1
00001dd9: DUP1
00001dda: DUP1
00001ddb: MLOAD
00001ddc: SWAP1
00001ddd: PUSH1 0x20
00001ddf: ADD
00001de0: SWAP1
00001de1: SWAP3
00001de2: SWAP2
00001de3: SWAP1
00001de4: POP
00001de5: POP
00001de6: POP
00001de7: SWAP1
00001de8: POP
00001de9: PUSH1 0x00
00001deb: PUSH2 0x1e0f
00001dee: DUP4
00001def: PUSH2 0x1e01
00001df2: DUP5
00001df3: DUP10
00001df4: PUSH2 0x2862
00001df7: SWAP1
00001df8: SWAP2
00001df9: SWAP1
00001dfa: PUSH4 0xffffffff
00001dff: AND
00001e00: JUMP
00001e01: JUMPDEST
00001e02: PUSH2 0x28e8
00001e05: SWAP1
00001e06: SWAP2
00001e07: SWAP1
00001e08: PUSH4 0xffffffff
00001e0d: AND
00001e0e: JUMP
00001e0f: JUMPDEST
00001e10: SWAP1
00001e11: POP
00001e12: PUSH1 0x00
00001e14: ADDRESS
00001e15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e2a: AND
00001e2b: BALANCE
00001e2c: SWAP1
00001e2d: POP
00001e2e: PUSH2 0x1e52
00001e31: DUP5
00001e32: PUSH2 0x1e44
00001e35: DUP4
00001e36: DUP11
00001e37: PUSH2 0x2862
00001e3a: SWAP1
00001e3b: SWAP2
00001e3c: SWAP1
00001e3d: PUSH4 0xffffffff
00001e42: AND
00001e43: JUMP
00001e44: JUMPDEST
00001e45: PUSH2 0x28e8
00001e48: SWAP1
00001e49: SWAP2
00001e4a: SWAP1
00001e4b: PUSH4 0xffffffff
00001e50: AND
00001e51: JUMP
00001e52: JUMPDEST
00001e53: SWAP6
00001e54: POP
00001e55: PUSH1 0x00
00001e57: DUP3
00001e58: GT
00001e59: ISZERO
00001e5a: PUSH2 0x1e6b
00001e5d: JUMPI
00001e5e: PUSH2 0x1e66
00001e61: DUP3
00001e62: PUSH2 0x30a4
00001e65: JUMP
00001e66: JUMPDEST
00001e67: DUP7
00001e68: ADD
00001e69: SWAP6
00001e6a: POP
00001e6b: JUMPDEST
00001e6c: PUSH1 0x00
00001e6e: PUSH1 0x9d
00001e70: PUSH1 0x01
00001e72: SWAP1
00001e73: SLOAD
00001e74: SWAP1
00001e75: PUSH2 0x0100
00001e78: EXP
00001e79: SWAP1
00001e7a: DIV
00001e7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e90: AND
00001e91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ea6: AND
00001ea7: PUSH4 0x70a08231
00001eac: ADDRESS
00001ead: PUSH1 0x40
00001eaf: MLOAD
00001eb0: DUP3
00001eb1: PUSH4 0xffffffff
00001eb6: AND
00001eb7: PUSH1 0xe0
00001eb9: SHL
00001eba: DUP2
00001ebb: MSTORE
00001ebc: PUSH1 0x04
00001ebe: ADD
00001ebf: DUP1
00001ec0: DUP3
00001ec1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ed6: AND
00001ed7: DUP2
00001ed8: MSTORE
00001ed9: PUSH1 0x20
00001edb: ADD
00001edc: SWAP2
00001edd: POP
00001ede: POP
00001edf: PUSH1 0x20
00001ee1: PUSH1 0x40
00001ee3: MLOAD
00001ee4: DUP1
00001ee5: DUP4
00001ee6: SUB
00001ee7: DUP2
00001ee8: DUP7
00001ee9: DUP1
00001eea: EXTCODESIZE
00001eeb: ISZERO
00001eec: DUP1
00001eed: ISZERO
00001eee: PUSH2 0x1ef6
00001ef1: JUMPI
00001ef2: PUSH1 0x00
00001ef4: DUP1
00001ef5: REVERT
00001ef6: JUMPDEST
00001ef7: POP
00001ef8: GAS
00001ef9: STATICCALL
00001efa: ISZERO
00001efb: DUP1
00001efc: ISZERO
00001efd: PUSH2 0x1f0a
00001f00: JUMPI
00001f01: RETURNDATASIZE
00001f02: PUSH1 0x00
00001f04: DUP1
00001f05: RETURNDATACOPY
00001f06: RETURNDATASIZE
00001f07: PUSH1 0x00
00001f09: REVERT
00001f0a: JUMPDEST
00001f0b: POP
00001f0c: POP
00001f0d: POP
00001f0e: POP
00001f0f: PUSH1 0x40
00001f11: MLOAD
00001f12: RETURNDATASIZE
00001f13: PUSH1 0x20
00001f15: DUP2
00001f16: LT
00001f17: ISZERO
00001f18: PUSH2 0x1f20
00001f1b: JUMPI
00001f1c: PUSH1 0x00
00001f1e: DUP1
00001f1f: REVERT
00001f20: JUMPDEST
00001f21: DUP2
00001f22: ADD
00001f23: SWAP1
00001f24: DUP1
00001f25: DUP1
00001f26: MLOAD
00001f27: SWAP1
00001f28: PUSH1 0x20
00001f2a: ADD
00001f2b: SWAP1
00001f2c: SWAP3
00001f2d: SWAP2
00001f2e: SWAP1
00001f2f: POP
00001f30: POP
00001f31: POP
00001f32: SWAP1
00001f33: POP
00001f34: PUSH1 0x00
00001f36: DUP2
00001f37: GT
00001f38: ISZERO
00001f39: PUSH2 0x1f64
00001f3c: JUMPI
00001f3d: PUSH2 0x1f61
00001f40: DUP6
00001f41: PUSH2 0x1f53
00001f44: DUP4
00001f45: DUP12
00001f46: PUSH2 0x2862
00001f49: SWAP1
00001f4a: SWAP2
00001f4b: SWAP1
00001f4c: PUSH4 0xffffffff
00001f51: AND
00001f52: JUMP
00001f53: JUMPDEST
00001f54: PUSH2 0x28e8
00001f57: SWAP1
00001f58: SWAP2
00001f59: SWAP1
00001f5a: PUSH4 0xffffffff
00001f5f: AND
00001f60: JUMP
00001f61: JUMPDEST
00001f62: SWAP6
00001f63: POP
00001f64: JUMPDEST
00001f65: POP
00001f66: POP
00001f67: POP
00001f68: POP
00001f69: POP
00001f6a: SWAP2
00001f6b: POP
00001f6c: SWAP2
00001f6d: JUMP
00001f6e: JUMPDEST
00001f6f: PUSH1 0x00
00001f71: PUSH1 0x66
00001f73: PUSH1 0x00
00001f75: DUP5
00001f76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f8b: AND
00001f8c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fa1: AND
00001fa2: DUP2
00001fa3: MSTORE
00001fa4: PUSH1 0x20
00001fa6: ADD
00001fa7: SWAP1
00001fa8: DUP2
00001fa9: MSTORE
00001faa: PUSH1 0x20
00001fac: ADD
00001fad: PUSH1 0x00
00001faf: KECCAK256
00001fb0: PUSH1 0x00
00001fb2: DUP4
00001fb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fc8: AND
00001fc9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fde: AND
00001fdf: DUP2
00001fe0: MSTORE
00001fe1: PUSH1 0x20
00001fe3: ADD
00001fe4: SWAP1
00001fe5: DUP2
00001fe6: MSTORE
00001fe7: PUSH1 0x20
00001fe9: ADD
00001fea: PUSH1 0x00
00001fec: KECCAK256
00001fed: SLOAD
00001fee: SWAP1
00001fef: POP
00001ff0: SWAP3
00001ff1: SWAP2
00001ff2: POP
00001ff3: POP
00001ff4: JUMP
00001ff5: JUMPDEST
00001ff6: PUSH1 0x98
00001ff8: PUSH1 0x00
00001ffa: SWAP1
00001ffb: SLOAD
00001ffc: SWAP1
00001ffd: PUSH2 0x0100
00002000: EXP
00002001: SWAP1
00002002: DIV
00002003: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002018: AND
00002019: DUP2
0000201a: JUMP
0000201b: JUMPDEST
0000201c: PUSH1 0x97
0000201e: PUSH1 0x02
00002020: SWAP1
00002021: SLOAD
00002022: SWAP1
00002023: PUSH2 0x0100
00002026: EXP
00002027: SWAP1
00002028: DIV
00002029: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000203e: AND
0000203f: DUP2
00002040: JUMP
00002041: JUMPDEST
00002042: DUP1
00002043: PUSH1 0x00
00002045: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000205a: AND
0000205b: DUP2
0000205c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002071: AND
00002072: EQ
00002073: ISZERO
00002074: PUSH2 0x20e5
00002077: JUMPI
00002078: PUSH1 0x40
0000207a: MLOAD
0000207b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000209c: DUP2
0000209d: MSTORE
0000209e: PUSH1 0x04
000020a0: ADD
000020a1: DUP1
000020a2: DUP1
000020a3: PUSH1 0x20
000020a5: ADD
000020a6: DUP3
000020a7: DUP2
000020a8: SUB
000020a9: DUP3
000020aa: MSTORE
000020ab: PUSH1 0x14
000020ad: DUP2
000020ae: MSTORE
000020af: PUSH1 0x20
000020b1: ADD
000020b2: DUP1
000020b3: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000
000020d4: DUP2
000020d5: MSTORE
000020d6: POP
000020d7: PUSH1 0x20
000020d9: ADD
000020da: SWAP2
000020db: POP
000020dc: POP
000020dd: PUSH1 0x40
000020df: MLOAD
000020e0: DUP1
000020e1: SWAP2
000020e2: SUB
000020e3: SWAP1
000020e4: REVERT
000020e5: JUMPDEST
000020e6: PUSH1 0x9d
000020e8: PUSH1 0x00
000020ea: SWAP1
000020eb: SLOAD
000020ec: SWAP1
000020ed: PUSH2 0x0100
000020f0: EXP
000020f1: SWAP1
000020f2: DIV
000020f3: PUSH1 0xff
000020f5: AND
000020f6: ISZERO
000020f7: PUSH2 0x2168
000020fa: JUMPI
000020fb: PUSH1 0x40
000020fd: MLOAD
000020fe: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000211f: DUP2
00002120: MSTORE
00002121: PUSH1 0x04
00002123: ADD
00002124: DUP1
00002125: DUP1
00002126: PUSH1 0x20
00002128: ADD
00002129: DUP3
0000212a: DUP2
0000212b: SUB
0000212c: DUP3
0000212d: MSTORE
0000212e: PUSH1 0x17
00002130: DUP2
00002131: MSTORE
00002132: PUSH1 0x20
00002134: ADD
00002135: DUP1
00002136: PUSH32 0x574158473a20616c726561647920757067726164656432000000000000000000
00002157: DUP2
00002158: MSTORE
00002159: POP
0000215a: PUSH1 0x20
0000215c: ADD
0000215d: SWAP2
0000215e: POP
0000215f: POP
00002160: PUSH1 0x40
00002162: MLOAD
00002163: DUP1
00002164: SWAP2
00002165: SUB
00002166: SWAP1
00002167: REVERT
00002168: JUMPDEST
00002169: PUSH1 0x01
0000216b: PUSH1 0x9d
0000216d: PUSH1 0x00
0000216f: PUSH2 0x0100
00002172: EXP
00002173: DUP2
00002174: SLOAD
00002175: DUP2
00002176: PUSH1 0xff
00002178: MUL
00002179: NOT
0000217a: AND
0000217b: SWAP1
0000217c: DUP4
0000217d: ISZERO
0000217e: ISZERO
0000217f: MUL
00002180: OR
00002181: SWAP1
00002182: SSTORE
00002183: POP
00002184: DUP2
00002185: PUSH1 0x9d
00002187: PUSH1 0x01
00002189: PUSH2 0x0100
0000218c: EXP
0000218d: DUP2
0000218e: SLOAD
0000218f: DUP2
00002190: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021a5: MUL
000021a6: NOT
000021a7: AND
000021a8: SWAP1
000021a9: DUP4
000021aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021bf: AND
000021c0: MUL
000021c1: OR
000021c2: SWAP1
000021c3: SSTORE
000021c4: POP
000021c5: PUSH1 0x00
000021c7: PUSH1 0x9e
000021c9: DUP2
000021ca: SWAP1
000021cb: SSTORE
000021cc: POP
000021cd: POP
000021ce: POP
000021cf: JUMP
000021d0: JUMPDEST
000021d1: PUSH1 0x9b
000021d3: DUP2
000021d4: DUP2
000021d5: SLOAD
000021d6: DUP2
000021d7: LT
000021d8: PUSH2 0x21dd
000021db: JUMPI
000021dc: INVALID
000021dd: JUMPDEST
000021de: SWAP1
000021df: PUSH1 0x00
000021e1: MSTORE
000021e2: PUSH1 0x20
000021e4: PUSH1 0x00
000021e6: KECCAK256
000021e7: ADD
000021e8: PUSH1 0x00
000021ea: SWAP2
000021eb: POP
000021ec: SLOAD
000021ed: SWAP1
000021ee: PUSH2 0x0100
000021f1: EXP
000021f2: SWAP1
000021f3: DIV
000021f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002209: AND
0000220a: DUP2
0000220b: JUMP
0000220c: JUMPDEST
0000220d: PUSH1 0x00
0000220f: CALLER
00002210: SWAP1
00002211: POP
00002212: SWAP1
00002213: JUMP
00002214: JUMPDEST
00002215: PUSH1 0x00
00002217: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000222c: AND
0000222d: DUP4
0000222e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002243: AND
00002244: EQ
00002245: ISZERO
00002246: PUSH2 0x229a
00002249: JUMPI
0000224a: PUSH1 0x40
0000224c: MLOAD
0000224d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000226e: DUP2
0000226f: MSTORE
00002270: PUSH1 0x04
00002272: ADD
00002273: DUP1
00002274: DUP1
00002275: PUSH1 0x20
00002277: ADD
00002278: DUP3
00002279: DUP2
0000227a: SUB
0000227b: DUP3
0000227c: MSTORE
0000227d: PUSH1 0x24
0000227f: DUP2
00002280: MSTORE
00002281: PUSH1 0x20
00002283: ADD
00002284: DUP1
00002285: PUSH2 0x400d
00002288: PUSH1 0x24
0000228a: SWAP2
0000228b: CODECOPY
0000228c: PUSH1 0x40
0000228e: ADD
0000228f: SWAP2
00002290: POP
00002291: POP
00002292: PUSH1 0x40
00002294: MLOAD
00002295: DUP1
00002296: SWAP2
00002297: SUB
00002298: SWAP1
00002299: REVERT
0000229a: JUMPDEST
0000229b: PUSH1 0x00
0000229d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022b2: AND
000022b3: DUP3
000022b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022c9: AND
000022ca: EQ
000022cb: ISZERO
000022cc: PUSH2 0x2320
000022cf: JUMPI
000022d0: PUSH1 0x40
000022d2: MLOAD
000022d3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000022f4: DUP2
000022f5: MSTORE
000022f6: PUSH1 0x04
000022f8: ADD
000022f9: DUP1
000022fa: DUP1
000022fb: PUSH1 0x20
000022fd: ADD
000022fe: DUP3
000022ff: DUP2
00002300: SUB
00002301: DUP3
00002302: MSTORE
00002303: PUSH1 0x22
00002305: DUP2
00002306: MSTORE
00002307: PUSH1 0x20
00002309: ADD
0000230a: DUP1
0000230b: PUSH2 0x3ec6
0000230e: PUSH1 0x22
00002310: SWAP2
00002311: CODECOPY
00002312: PUSH1 0x40
00002314: ADD
00002315: SWAP2
00002316: POP
00002317: POP
00002318: PUSH1 0x40
0000231a: MLOAD
0000231b: DUP1
0000231c: SWAP2
0000231d: SUB
0000231e: SWAP1
0000231f: REVERT
00002320: JUMPDEST
00002321: DUP1
00002322: PUSH1 0x66
00002324: PUSH1 0x00
00002326: DUP6
00002327: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000233c: AND
0000233d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002352: AND
00002353: DUP2
00002354: MSTORE
00002355: PUSH1 0x20
00002357: ADD
00002358: SWAP1
00002359: DUP2
0000235a: MSTORE
0000235b: PUSH1 0x20
0000235d: ADD
0000235e: PUSH1 0x00
00002360: KECCAK256
00002361: PUSH1 0x00
00002363: DUP5
00002364: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002379: AND
0000237a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000238f: AND
00002390: DUP2
00002391: MSTORE
00002392: PUSH1 0x20
00002394: ADD
00002395: SWAP1
00002396: DUP2
00002397: MSTORE
00002398: PUSH1 0x20
0000239a: ADD
0000239b: PUSH1 0x00
0000239d: KECCAK256
0000239e: DUP2
0000239f: SWAP1
000023a0: SSTORE
000023a1: POP
000023a2: DUP2
000023a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023b8: AND
000023b9: DUP4
000023ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023cf: AND
000023d0: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
000023f1: DUP4
000023f2: PUSH1 0x40
000023f4: MLOAD
000023f5: DUP1
000023f6: DUP3
000023f7: DUP2
000023f8: MSTORE
000023f9: PUSH1 0x20
000023fb: ADD
000023fc: SWAP2
000023fd: POP
000023fe: POP
000023ff: PUSH1 0x40
00002401: MLOAD
00002402: DUP1
00002403: SWAP2
00002404: SUB
00002405: SWAP1
00002406: LOG3
00002407: POP
00002408: POP
00002409: POP
0000240a: JUMP
0000240b: JUMPDEST
0000240c: PUSH1 0x00
0000240e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002423: AND
00002424: DUP4
00002425: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000243a: AND
0000243b: EQ
0000243c: ISZERO
0000243d: PUSH2 0x2491
00002440: JUMPI
00002441: PUSH1 0x40
00002443: MLOAD
00002444: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002465: DUP2
00002466: MSTORE
00002467: PUSH1 0x04
00002469: ADD
0000246a: DUP1
0000246b: DUP1
0000246c: PUSH1 0x20
0000246e: ADD
0000246f: DUP3
00002470: DUP2
00002471: SUB
00002472: DUP3
00002473: MSTORE
00002474: PUSH1 0x25
00002476: DUP2
00002477: MSTORE
00002478: PUSH1 0x20
0000247a: ADD
0000247b: DUP1
0000247c: PUSH2 0x3fe8
0000247f: PUSH1 0x25
00002481: SWAP2
00002482: CODECOPY
00002483: PUSH1 0x40
00002485: ADD
00002486: SWAP2
00002487: POP
00002488: POP
00002489: PUSH1 0x40
0000248b: MLOAD
0000248c: DUP1
0000248d: SWAP2
0000248e: SUB
0000248f: SWAP1
00002490: REVERT
00002491: JUMPDEST
00002492: PUSH1 0x00
00002494: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024a9: AND
000024aa: DUP3
000024ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024c0: AND
000024c1: EQ
000024c2: ISZERO
000024c3: PUSH2 0x2517
000024c6: JUMPI
000024c7: PUSH1 0x40
000024c9: MLOAD
000024ca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000024eb: DUP2
000024ec: MSTORE
000024ed: PUSH1 0x04
000024ef: ADD
000024f0: DUP1
000024f1: DUP1
000024f2: PUSH1 0x20
000024f4: ADD
000024f5: DUP3
000024f6: DUP2
000024f7: SUB
000024f8: DUP3
000024f9: MSTORE
000024fa: PUSH1 0x23
000024fc: DUP2
000024fd: MSTORE
000024fe: PUSH1 0x20
00002500: ADD
00002501: DUP1
00002502: PUSH2 0x3e81
00002505: PUSH1 0x23
00002507: SWAP2
00002508: CODECOPY
00002509: PUSH1 0x40
0000250b: ADD
0000250c: SWAP2
0000250d: POP
0000250e: POP
0000250f: PUSH1 0x40
00002511: MLOAD
00002512: DUP1
00002513: SWAP2
00002514: SUB
00002515: SWAP1
00002516: REVERT
00002517: JUMPDEST
00002518: PUSH2 0x2522
0000251b: DUP4
0000251c: DUP4
0000251d: DUP4
0000251e: PUSH2 0x35b0
00002521: JUMP
00002522: JUMPDEST
00002523: PUSH2 0x258e
00002526: DUP2
00002527: PUSH1 0x40
00002529: MLOAD
0000252a: DUP1
0000252b: PUSH1 0x60
0000252d: ADD
0000252e: PUSH1 0x40
00002530: MSTORE
00002531: DUP1
00002532: PUSH1 0x26
00002534: DUP2
00002535: MSTORE
00002536: PUSH1 0x20
00002538: ADD
00002539: PUSH2 0x3f2a
0000253c: PUSH1 0x26
0000253e: SWAP2
0000253f: CODECOPY
00002540: PUSH1 0x65
00002542: PUSH1 0x00
00002544: DUP8
00002545: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000255a: AND
0000255b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002570: AND
00002571: DUP2
00002572: MSTORE
00002573: PUSH1 0x20
00002575: ADD
00002576: SWAP1
00002577: DUP2
00002578: MSTORE
00002579: PUSH1 0x20
0000257b: ADD
0000257c: PUSH1 0x00
0000257e: KECCAK256
0000257f: SLOAD
00002580: PUSH2 0x26d0
00002583: SWAP1
00002584: SWAP3
00002585: SWAP2
00002586: SWAP1
00002587: PUSH4 0xffffffff
0000258c: AND
0000258d: JUMP
0000258e: JUMPDEST
0000258f: PUSH1 0x65
00002591: PUSH1 0x00
00002593: DUP6
00002594: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025a9: AND
000025aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025bf: AND
000025c0: DUP2
000025c1: MSTORE
000025c2: PUSH1 0x20
000025c4: ADD
000025c5: SWAP1
000025c6: DUP2
000025c7: MSTORE
000025c8: PUSH1 0x20
000025ca: ADD
000025cb: PUSH1 0x00
000025cd: KECCAK256
000025ce: DUP2
000025cf: SWAP1
000025d0: SSTORE
000025d1: POP
000025d2: PUSH2 0x2623
000025d5: DUP2
000025d6: PUSH1 0x65
000025d8: PUSH1 0x00
000025da: DUP6
000025db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025f0: AND
000025f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002606: AND
00002607: DUP2
00002608: MSTORE
00002609: PUSH1 0x20
0000260b: ADD
0000260c: SWAP1
0000260d: DUP2
0000260e: MSTORE
0000260f: PUSH1 0x20
00002611: ADD
00002612: PUSH1 0x00
00002614: KECCAK256
00002615: SLOAD
00002616: PUSH2 0x2790
00002619: SWAP1
0000261a: SWAP2
0000261b: SWAP1
0000261c: PUSH4 0xffffffff
00002621: AND
00002622: JUMP
00002623: JUMPDEST
00002624: PUSH1 0x65
00002626: PUSH1 0x00
00002628: DUP5
00002629: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000263e: AND
0000263f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002654: AND
00002655: DUP2
00002656: MSTORE
00002657: PUSH1 0x20
00002659: ADD
0000265a: SWAP1
0000265b: DUP2
0000265c: MSTORE
0000265d: PUSH1 0x20
0000265f: ADD
00002660: PUSH1 0x00
00002662: KECCAK256
00002663: DUP2
00002664: SWAP1
00002665: SSTORE
00002666: POP
00002667: DUP2
00002668: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000267d: AND
0000267e: DUP4
0000267f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002694: AND
00002695: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
000026b6: DUP4
000026b7: PUSH1 0x40
000026b9: MLOAD
000026ba: DUP1
000026bb: DUP3
000026bc: DUP2
000026bd: MSTORE
000026be: PUSH1 0x20
000026c0: ADD
000026c1: SWAP2
000026c2: POP
000026c3: POP
000026c4: PUSH1 0x40
000026c6: MLOAD
000026c7: DUP1
000026c8: SWAP2
000026c9: SUB
000026ca: SWAP1
000026cb: LOG3
000026cc: POP
000026cd: POP
000026ce: POP
000026cf: JUMP
000026d0: JUMPDEST
000026d1: PUSH1 0x00
000026d3: DUP4
000026d4: DUP4
000026d5: GT
000026d6: ISZERO
000026d7: DUP3
000026d8: SWAP1
000026d9: PUSH2 0x277d
000026dc: JUMPI
000026dd: PUSH1 0x40
000026df: MLOAD
000026e0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002701: DUP2
00002702: MSTORE
00002703: PUSH1 0x04
00002705: ADD
00002706: DUP1
00002707: DUP1
00002708: PUSH1 0x20
0000270a: ADD
0000270b: DUP3
0000270c: DUP2
0000270d: SUB
0000270e: DUP3
0000270f: MSTORE
00002710: DUP4
00002711: DUP2
00002712: DUP2
00002713: MLOAD
00002714: DUP2
00002715: MSTORE
00002716: PUSH1 0x20
00002718: ADD
00002719: SWAP2
0000271a: POP
0000271b: DUP1
0000271c: MLOAD
0000271d: SWAP1
0000271e: PUSH1 0x20
00002720: ADD
00002721: SWAP1
00002722: DUP1
00002723: DUP4
00002724: DUP4
00002725: PUSH1 0x00
00002727: JUMPDEST
00002728: DUP4
00002729: DUP2
0000272a: LT
0000272b: ISZERO
0000272c: PUSH2 0x2742
0000272f: JUMPI
00002730: DUP1
00002731: DUP3
00002732: ADD
00002733: MLOAD
00002734: DUP2
00002735: DUP5
00002736: ADD
00002737: MSTORE
00002738: PUSH1 0x20
0000273a: DUP2
0000273b: ADD
0000273c: SWAP1
0000273d: POP
0000273e: PUSH2 0x2727
00002741: JUMP
00002742: JUMPDEST
00002743: POP
00002744: POP
00002745: POP
00002746: POP
00002747: SWAP1
00002748: POP
00002749: SWAP1
0000274a: DUP2
0000274b: ADD
0000274c: SWAP1
0000274d: PUSH1 0x1f
0000274f: AND
00002750: DUP1
00002751: ISZERO
00002752: PUSH2 0x276f
00002755: JUMPI
00002756: DUP1
00002757: DUP3
00002758: SUB
00002759: DUP1
0000275a: MLOAD
0000275b: PUSH1 0x01
0000275d: DUP4
0000275e: PUSH1 0x20
00002760: SUB
00002761: PUSH2 0x0100
00002764: EXP
00002765: SUB
00002766: NOT
00002767: AND
00002768: DUP2
00002769: MSTORE
0000276a: PUSH1 0x20
0000276c: ADD
0000276d: SWAP2
0000276e: POP
0000276f: JUMPDEST
00002770: POP
00002771: SWAP3
00002772: POP
00002773: POP
00002774: POP
00002775: PUSH1 0x40
00002777: MLOAD
00002778: DUP1
00002779: SWAP2
0000277a: SUB
0000277b: SWAP1
0000277c: REVERT
0000277d: JUMPDEST
0000277e: POP
0000277f: PUSH1 0x00
00002781: DUP4
00002782: DUP6
00002783: SUB
00002784: SWAP1
00002785: POP
00002786: DUP1
00002787: SWAP2
00002788: POP
00002789: POP
0000278a: SWAP4
0000278b: SWAP3
0000278c: POP
0000278d: POP
0000278e: POP
0000278f: JUMP
00002790: JUMPDEST
00002791: PUSH1 0x00
00002793: DUP1
00002794: DUP3
00002795: DUP5
00002796: ADD
00002797: SWAP1
00002798: POP
00002799: DUP4
0000279a: DUP2
0000279b: LT
0000279c: ISZERO
0000279d: PUSH2 0x280e
000027a0: JUMPI
000027a1: PUSH1 0x40
000027a3: MLOAD
000027a4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000027c5: DUP2
000027c6: MSTORE
000027c7: PUSH1 0x04
000027c9: ADD
000027ca: DUP1
000027cb: DUP1
000027cc: PUSH1 0x20
000027ce: ADD
000027cf: DUP3
000027d0: DUP2
000027d1: SUB
000027d2: DUP3
000027d3: MSTORE
000027d4: PUSH1 0x1b
000027d6: DUP2
000027d7: MSTORE
000027d8: PUSH1 0x20
000027da: ADD
000027db: DUP1
000027dc: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
000027fd: DUP2
000027fe: MSTORE
000027ff: POP
00002800: PUSH1 0x20
00002802: ADD
00002803: SWAP2
00002804: POP
00002805: POP
00002806: PUSH1 0x40
00002808: MLOAD
00002809: DUP1
0000280a: SWAP2
0000280b: SUB
0000280c: SWAP1
0000280d: REVERT
0000280e: JUMPDEST
0000280f: DUP1
00002810: SWAP2
00002811: POP
00002812: POP
00002813: SWAP3
00002814: SWAP2
00002815: POP
00002816: POP
00002817: JUMP
00002818: JUMPDEST
00002819: PUSH1 0x00
0000281b: PUSH2 0x285a
0000281e: DUP4
0000281f: DUP4
00002820: PUSH1 0x40
00002822: MLOAD
00002823: DUP1
00002824: PUSH1 0x40
00002826: ADD
00002827: PUSH1 0x40
00002829: MSTORE
0000282a: DUP1
0000282b: PUSH1 0x1e
0000282d: DUP2
0000282e: MSTORE
0000282f: PUSH1 0x20
00002831: ADD
00002832: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00002853: DUP2
00002854: MSTORE
00002855: POP
00002856: PUSH2 0x26d0
00002859: JUMP
0000285a: JUMPDEST
0000285b: SWAP1
0000285c: POP
0000285d: SWAP3
0000285e: SWAP2
0000285f: POP
00002860: POP
00002861: JUMP
00002862: JUMPDEST
00002863: PUSH1 0x00
00002865: DUP1
00002866: DUP4
00002867: EQ
00002868: ISZERO
00002869: PUSH2 0x2875
0000286c: JUMPI
0000286d: PUSH1 0x00
0000286f: SWAP1
00002870: POP
00002871: PUSH2 0x28e2
00002874: JUMP
00002875: JUMPDEST
00002876: PUSH1 0x00
00002878: DUP3
00002879: DUP5
0000287a: MUL
0000287b: SWAP1
0000287c: POP
0000287d: DUP3
0000287e: DUP5
0000287f: DUP3
00002880: DUP2
00002881: PUSH2 0x2886
00002884: JUMPI
00002885: INVALID
00002886: JUMPDEST
00002887: DIV
00002888: EQ
00002889: PUSH2 0x28dd
0000288c: JUMPI
0000288d: PUSH1 0x40
0000288f: MLOAD
00002890: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000028b1: DUP2
000028b2: MSTORE
000028b3: PUSH1 0x04
000028b5: ADD
000028b6: DUP1
000028b7: DUP1
000028b8: PUSH1 0x20
000028ba: ADD
000028bb: DUP3
000028bc: DUP2
000028bd: SUB
000028be: DUP3
000028bf: MSTORE
000028c0: PUSH1 0x21
000028c2: DUP2
000028c3: MSTORE
000028c4: PUSH1 0x20
000028c6: ADD
000028c7: DUP1
000028c8: PUSH2 0x3f50
000028cb: PUSH1 0x21
000028cd: SWAP2
000028ce: CODECOPY
000028cf: PUSH1 0x40
000028d1: ADD
000028d2: SWAP2
000028d3: POP
000028d4: POP
000028d5: PUSH1 0x40
000028d7: MLOAD
000028d8: DUP1
000028d9: SWAP2
000028da: SUB
000028db: SWAP1
000028dc: REVERT
000028dd: JUMPDEST
000028de: DUP1
000028df: SWAP2
000028e0: POP
000028e1: POP
000028e2: JUMPDEST
000028e3: SWAP3
000028e4: SWAP2
000028e5: POP
000028e6: POP
000028e7: JUMP
000028e8: JUMPDEST
000028e9: PUSH1 0x00
000028eb: PUSH2 0x292a
000028ee: DUP4
000028ef: DUP4
000028f0: PUSH1 0x40
000028f2: MLOAD
000028f3: DUP1
000028f4: PUSH1 0x40
000028f6: ADD
000028f7: PUSH1 0x40
000028f9: MSTORE
000028fa: DUP1
000028fb: PUSH1 0x1a
000028fd: DUP2
000028fe: MSTORE
000028ff: PUSH1 0x20
00002901: ADD
00002902: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00002923: DUP2
00002924: MSTORE
00002925: POP
00002926: PUSH2 0x35b5
00002929: JUMP
0000292a: JUMPDEST
0000292b: SWAP1
0000292c: POP
0000292d: SWAP3
0000292e: SWAP2
0000292f: POP
00002930: POP
00002931: JUMP
00002932: JUMPDEST
00002933: PUSH1 0x00
00002935: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000294a: AND
0000294b: DUP3
0000294c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002961: AND
00002962: EQ
00002963: ISZERO
00002964: PUSH2 0x29b8
00002967: JUMPI
00002968: PUSH1 0x40
0000296a: MLOAD
0000296b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000298c: DUP2
0000298d: MSTORE
0000298e: PUSH1 0x04
00002990: ADD
00002991: DUP1
00002992: DUP1
00002993: PUSH1 0x20
00002995: ADD
00002996: DUP3
00002997: DUP2
00002998: SUB
00002999: DUP3
0000299a: MSTORE
0000299b: PUSH1 0x21
0000299d: DUP2
0000299e: MSTORE
0000299f: PUSH1 0x20
000029a1: ADD
000029a2: DUP1
000029a3: PUSH2 0x3fc7
000029a6: PUSH1 0x21
000029a8: SWAP2
000029a9: CODECOPY
000029aa: PUSH1 0x40
000029ac: ADD
000029ad: SWAP2
000029ae: POP
000029af: POP
000029b0: PUSH1 0x40
000029b2: MLOAD
000029b3: DUP1
000029b4: SWAP2
000029b5: SUB
000029b6: SWAP1
000029b7: REVERT
000029b8: JUMPDEST
000029b9: PUSH2 0x29c4
000029bc: DUP3
000029bd: PUSH1 0x00
000029bf: DUP4
000029c0: PUSH2 0x35b0
000029c3: JUMP
000029c4: JUMPDEST
000029c5: PUSH2 0x2a30
000029c8: DUP2
000029c9: PUSH1 0x40
000029cb: MLOAD
000029cc: DUP1
000029cd: PUSH1 0x60
000029cf: ADD
000029d0: PUSH1 0x40
000029d2: MSTORE
000029d3: DUP1
000029d4: PUSH1 0x22
000029d6: DUP2
000029d7: MSTORE
000029d8: PUSH1 0x20
000029da: ADD
000029db: PUSH2 0x3ea4
000029de: PUSH1 0x22
000029e0: SWAP2
000029e1: CODECOPY
000029e2: PUSH1 0x65
000029e4: PUSH1 0x00
000029e6: DUP7
000029e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029fc: AND
000029fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a12: AND
00002a13: DUP2
00002a14: MSTORE
00002a15: PUSH1 0x20
00002a17: ADD
00002a18: SWAP1
00002a19: DUP2
00002a1a: MSTORE
00002a1b: PUSH1 0x20
00002a1d: ADD
00002a1e: PUSH1 0x00
00002a20: KECCAK256
00002a21: SLOAD
00002a22: PUSH2 0x26d0
00002a25: SWAP1
00002a26: SWAP3
00002a27: SWAP2
00002a28: SWAP1
00002a29: PUSH4 0xffffffff
00002a2e: AND
00002a2f: JUMP
00002a30: JUMPDEST
00002a31: PUSH1 0x65
00002a33: PUSH1 0x00
00002a35: DUP5
00002a36: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a4b: AND
00002a4c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a61: AND
00002a62: DUP2
00002a63: MSTORE
00002a64: PUSH1 0x20
00002a66: ADD
00002a67: SWAP1
00002a68: DUP2
00002a69: MSTORE
00002a6a: PUSH1 0x20
00002a6c: ADD
00002a6d: PUSH1 0x00
00002a6f: KECCAK256
00002a70: DUP2
00002a71: SWAP1
00002a72: SSTORE
00002a73: POP
00002a74: PUSH2 0x2a88
00002a77: DUP2
00002a78: PUSH1 0x67
00002a7a: SLOAD
00002a7b: PUSH2 0x2818
00002a7e: SWAP1
00002a7f: SWAP2
00002a80: SWAP1
00002a81: PUSH4 0xffffffff
00002a86: AND
00002a87: JUMP
00002a88: JUMPDEST
00002a89: PUSH1 0x67
00002a8b: DUP2
00002a8c: SWAP1
00002a8d: SSTORE
00002a8e: POP
00002a8f: PUSH1 0x00
00002a91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002aa6: AND
00002aa7: DUP3
00002aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002abd: AND
00002abe: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00002adf: DUP4
00002ae0: PUSH1 0x40
00002ae2: MLOAD
00002ae3: DUP1
00002ae4: DUP3
00002ae5: DUP2
00002ae6: MSTORE
00002ae7: PUSH1 0x20
00002ae9: ADD
00002aea: SWAP2
00002aeb: POP
00002aec: POP
00002aed: PUSH1 0x40
00002aef: MLOAD
00002af0: DUP1
00002af1: SWAP2
00002af2: SUB
00002af3: SWAP1
00002af4: LOG3
00002af5: POP
00002af6: POP
00002af7: JUMP
00002af8: JUMPDEST
00002af9: PUSH1 0x00
00002afb: PUSH2 0x2b69
00002afe: PUSH1 0x9a
00002b00: PUSH1 0x00
00002b02: SWAP1
00002b03: SLOAD
00002b04: SWAP1
00002b05: PUSH2 0x0100
00002b08: EXP
00002b09: SWAP1
00002b0a: DIV
00002b0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b20: AND
00002b21: DUP4
00002b22: PUSH1 0x98
00002b24: PUSH1 0x00
00002b26: SWAP1
00002b27: SLOAD
00002b28: SWAP1
00002b29: PUSH2 0x0100
00002b2c: EXP
00002b2d: SWAP1
00002b2e: DIV
00002b2f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b44: AND
00002b45: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b5a: AND
00002b5b: PUSH2 0x367b
00002b5e: SWAP1
00002b5f: SWAP3
00002b60: SWAP2
00002b61: SWAP1
00002b62: PUSH4 0xffffffff
00002b67: AND
00002b68: JUMP
00002b69: JUMPDEST
00002b6a: PUSH1 0x60
00002b6c: PUSH1 0x9a
00002b6e: PUSH1 0x00
00002b70: SWAP1
00002b71: SLOAD
00002b72: SWAP1
00002b73: PUSH2 0x0100
00002b76: EXP
00002b77: SWAP1
00002b78: DIV
00002b79: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b8e: AND
00002b8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ba4: AND
00002ba5: PUSH4 0x18cbafe5
00002baa: DUP5
00002bab: PUSH1 0x00
00002bad: PUSH1 0x9b
00002baf: DUP9
00002bb0: TIMESTAMP
00002bb1: PUSH1 0x40
00002bb3: MLOAD
00002bb4: DUP7
00002bb5: PUSH4 0xffffffff
00002bba: AND
00002bbb: PUSH1 0xe0
00002bbd: SHL
00002bbe: DUP2
00002bbf: MSTORE
00002bc0: PUSH1 0x04
00002bc2: ADD
00002bc3: DUP1
00002bc4: DUP7
00002bc5: DUP2
00002bc6: MSTORE
00002bc7: PUSH1 0x20
00002bc9: ADD
00002bca: DUP6
00002bcb: DUP2
00002bcc: MSTORE
00002bcd: PUSH1 0x20
00002bcf: ADD
00002bd0: DUP1
00002bd1: PUSH1 0x20
00002bd3: ADD
00002bd4: DUP5
00002bd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bea: AND
00002beb: DUP2
00002bec: MSTORE
00002bed: PUSH1 0x20
00002bef: ADD
00002bf0: DUP4
00002bf1: DUP2
00002bf2: MSTORE
00002bf3: PUSH1 0x20
00002bf5: ADD
00002bf6: DUP3
00002bf7: DUP2
00002bf8: SUB
00002bf9: DUP3
00002bfa: MSTORE
00002bfb: DUP6
00002bfc: DUP2
00002bfd: DUP2
00002bfe: SLOAD
00002bff: DUP2
00002c00: MSTORE
00002c01: PUSH1 0x20
00002c03: ADD
00002c04: SWAP2
00002c05: POP
00002c06: DUP1
00002c07: SLOAD
00002c08: DUP1
00002c09: ISZERO
00002c0a: PUSH2 0x2c68
00002c0d: JUMPI
00002c0e: PUSH1 0x20
00002c10: MUL
00002c11: DUP3
00002c12: ADD
00002c13: SWAP2
00002c14: SWAP1
00002c15: PUSH1 0x00
00002c17: MSTORE
00002c18: PUSH1 0x20
00002c1a: PUSH1 0x00
00002c1c: KECCAK256
00002c1d: SWAP1
00002c1e: JUMPDEST
00002c1f: DUP2
00002c20: PUSH1 0x00
00002c22: SWAP1
00002c23: SLOAD
00002c24: SWAP1
00002c25: PUSH2 0x0100
00002c28: EXP
00002c29: SWAP1
00002c2a: DIV
00002c2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c40: AND
00002c41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c56: AND
00002c57: DUP2
00002c58: MSTORE
00002c59: PUSH1 0x20
00002c5b: ADD
00002c5c: SWAP1
00002c5d: PUSH1 0x01
00002c5f: ADD
00002c60: SWAP1
00002c61: DUP1
00002c62: DUP4
00002c63: GT
00002c64: PUSH2 0x2c1e
00002c67: JUMPI
00002c68: JUMPDEST
00002c69: POP
00002c6a: POP
00002c6b: SWAP7
00002c6c: POP
00002c6d: POP
00002c6e: POP
00002c6f: POP
00002c70: POP
00002c71: POP
00002c72: POP
00002c73: PUSH1 0x00
00002c75: PUSH1 0x40
00002c77: MLOAD
00002c78: DUP1
00002c79: DUP4
00002c7a: SUB
00002c7b: DUP2
00002c7c: PUSH1 0x00
00002c7e: DUP8
00002c7f: DUP1
00002c80: EXTCODESIZE
00002c81: ISZERO
00002c82: DUP1
00002c83: ISZERO
00002c84: PUSH2 0x2c8c
00002c87: JUMPI
00002c88: PUSH1 0x00
00002c8a: DUP1
00002c8b: REVERT
00002c8c: JUMPDEST
00002c8d: POP
00002c8e: GAS
00002c8f: CALL
00002c90: ISZERO
00002c91: DUP1
00002c92: ISZERO
00002c93: PUSH2 0x2ca0
00002c96: JUMPI
00002c97: RETURNDATASIZE
00002c98: PUSH1 0x00
00002c9a: DUP1
00002c9b: RETURNDATACOPY
00002c9c: RETURNDATASIZE
00002c9d: PUSH1 0x00
00002c9f: REVERT
00002ca0: JUMPDEST
00002ca1: POP
00002ca2: POP
00002ca3: POP
00002ca4: POP
00002ca5: PUSH1 0x40
00002ca7: MLOAD
00002ca8: RETURNDATASIZE
00002ca9: PUSH1 0x00
00002cab: DUP3
00002cac: RETURNDATACOPY
00002cad: RETURNDATASIZE
00002cae: PUSH1 0x1f
00002cb0: NOT
00002cb1: PUSH1 0x1f
00002cb3: DUP3
00002cb4: ADD
00002cb5: AND
00002cb6: DUP3
00002cb7: ADD
00002cb8: DUP1
00002cb9: PUSH1 0x40
00002cbb: MSTORE
00002cbc: POP
00002cbd: PUSH1 0x20
00002cbf: DUP2
00002cc0: LT
00002cc1: ISZERO
00002cc2: PUSH2 0x2cca
00002cc5: JUMPI
00002cc6: PUSH1 0x00
00002cc8: DUP1
00002cc9: REVERT
00002cca: JUMPDEST
00002ccb: DUP2
00002ccc: ADD
00002ccd: SWAP1
00002cce: DUP1
00002ccf: DUP1
00002cd0: MLOAD
00002cd1: PUSH1 0x40
00002cd3: MLOAD
00002cd4: SWAP4
00002cd5: SWAP3
00002cd6: SWAP2
00002cd7: SWAP1
00002cd8: DUP5
00002cd9: PUSH5 0x0100000000
00002cdf: DUP3
00002ce0: GT
00002ce1: ISZERO
00002ce2: PUSH2 0x2cea
00002ce5: JUMPI
00002ce6: PUSH1 0x00
00002ce8: DUP1
00002ce9: REVERT
00002cea: JUMPDEST
00002ceb: DUP4
00002cec: DUP3
00002ced: ADD
00002cee: SWAP2
00002cef: POP
00002cf0: PUSH1 0x20
00002cf2: DUP3
00002cf3: ADD
00002cf4: DUP6
00002cf5: DUP2
00002cf6: GT
00002cf7: ISZERO
00002cf8: PUSH2 0x2d00
00002cfb: JUMPI
00002cfc: PUSH1 0x00
00002cfe: DUP1
00002cff: REVERT
00002d00: JUMPDEST
00002d01: DUP3
00002d02: MLOAD
00002d03: DUP7
00002d04: PUSH1 0x20
00002d06: DUP3
00002d07: MUL
00002d08: DUP4
00002d09: ADD
00002d0a: GT
00002d0b: PUSH5 0x0100000000
00002d11: DUP3
00002d12: GT
00002d13: OR
00002d14: ISZERO
00002d15: PUSH2 0x2d1d
00002d18: JUMPI
00002d19: PUSH1 0x00
00002d1b: DUP1
00002d1c: REVERT
00002d1d: JUMPDEST
00002d1e: DUP1
00002d1f: DUP4
00002d20: MSTORE
00002d21: PUSH1 0x20
00002d23: DUP4
00002d24: ADD
00002d25: SWAP3
00002d26: POP
00002d27: POP
00002d28: POP
00002d29: SWAP1
00002d2a: DUP1
00002d2b: MLOAD
00002d2c: SWAP1
00002d2d: PUSH1 0x20
00002d2f: ADD
00002d30: SWAP1
00002d31: PUSH1 0x20
00002d33: MUL
00002d34: DUP1
00002d35: DUP4
00002d36: DUP4
00002d37: PUSH1 0x00
00002d39: JUMPDEST
00002d3a: DUP4
00002d3b: DUP2
00002d3c: LT
00002d3d: ISZERO
00002d3e: PUSH2 0x2d54
00002d41: JUMPI
00002d42: DUP1
00002d43: DUP3
00002d44: ADD
00002d45: MLOAD
00002d46: DUP2
00002d47: DUP5
00002d48: ADD
00002d49: MSTORE
00002d4a: PUSH1 0x20
00002d4c: DUP2
00002d4d: ADD
00002d4e: SWAP1
00002d4f: POP
00002d50: PUSH2 0x2d39
00002d53: JUMP
00002d54: JUMPDEST
00002d55: POP
00002d56: POP
00002d57: POP
00002d58: POP
00002d59: SWAP1
00002d5a: POP
00002d5b: ADD
00002d5c: PUSH1 0x40
00002d5e: MSTORE
00002d5f: POP
00002d60: POP
00002d61: POP
00002d62: SWAP1
00002d63: POP
00002d64: DUP1
00002d65: PUSH2 0x2d79
00002d68: PUSH1 0x01
00002d6a: DUP4
00002d6b: MLOAD
00002d6c: PUSH2 0x2818
00002d6f: SWAP1
00002d70: SWAP2
00002d71: SWAP1
00002d72: PUSH4 0xffffffff
00002d77: AND
00002d78: JUMP
00002d79: JUMPDEST
00002d7a: DUP2
00002d7b: MLOAD
00002d7c: DUP2
00002d7d: LT
00002d7e: PUSH2 0x2d83
00002d81: JUMPI
00002d82: INVALID
00002d83: JUMPDEST
00002d84: PUSH1 0x20
00002d86: MUL
00002d87: PUSH1 0x20
00002d89: ADD
00002d8a: ADD
00002d8b: MLOAD
00002d8c: SWAP2
00002d8d: POP
00002d8e: POP
00002d8f: SWAP3
00002d90: SWAP2
00002d91: POP
00002d92: POP
00002d93: JUMP
00002d94: JUMPDEST
00002d95: PUSH1 0x00
00002d97: DUP1
00002d98: ADDRESS
00002d99: SWAP1
00002d9a: POP
00002d9b: PUSH1 0x00
00002d9d: DUP2
00002d9e: EXTCODESIZE
00002d9f: SWAP1
00002da0: POP
00002da1: PUSH1 0x00
00002da3: DUP2
00002da4: EQ
00002da5: SWAP3
00002da6: POP
00002da7: POP
00002da8: POP
00002da9: SWAP1
00002daa: JUMP
00002dab: JUMPDEST
00002dac: PUSH1 0x00
00002dae: PUSH1 0x01
00002db0: SWAP1
00002db1: SLOAD
00002db2: SWAP1
00002db3: PUSH2 0x0100
00002db6: EXP
00002db7: SWAP1
00002db8: DIV
00002db9: PUSH1 0xff
00002dbb: AND
00002dbc: DUP1
00002dbd: PUSH2 0x2dca
00002dc0: JUMPI
00002dc1: POP
00002dc2: PUSH2 0x2dc9
00002dc5: PUSH2 0x2d94
00002dc8: JUMP
00002dc9: JUMPDEST
00002dca: JUMPDEST
00002dcb: DUP1
00002dcc: PUSH2 0x2de0
00002dcf: JUMPI
00002dd0: POP
00002dd1: PUSH1 0x00
00002dd3: DUP1
00002dd4: SLOAD
00002dd5: SWAP1
00002dd6: PUSH2 0x0100
00002dd9: EXP
00002dda: SWAP1
00002ddb: DIV
00002ddc: PUSH1 0xff
00002dde: AND
00002ddf: ISZERO
00002de0: JUMPDEST
00002de1: PUSH2 0x2e35
00002de4: JUMPI
00002de5: PUSH1 0x40
00002de7: MLOAD
00002de8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002e09: DUP2
00002e0a: MSTORE
00002e0b: PUSH1 0x04
00002e0d: ADD
00002e0e: DUP1
00002e0f: DUP1
00002e10: PUSH1 0x20
00002e12: ADD
00002e13: DUP3
00002e14: DUP2
00002e15: SUB
00002e16: DUP3
00002e17: MSTORE
00002e18: PUSH1 0x2e
00002e1a: DUP2
00002e1b: MSTORE
00002e1c: PUSH1 0x20
00002e1e: ADD
00002e1f: DUP1
00002e20: PUSH2 0x3f99
00002e23: PUSH1 0x2e
00002e25: SWAP2
00002e26: CODECOPY
00002e27: PUSH1 0x40
00002e29: ADD
00002e2a: SWAP2
00002e2b: POP
00002e2c: POP
00002e2d: PUSH1 0x40
00002e2f: MLOAD
00002e30: DUP1
00002e31: SWAP2
00002e32: SUB
00002e33: SWAP1
00002e34: REVERT
00002e35: JUMPDEST
00002e36: PUSH1 0x00
00002e38: DUP1
00002e39: PUSH1 0x01
00002e3b: SWAP1
00002e3c: SLOAD
00002e3d: SWAP1
00002e3e: PUSH2 0x0100
00002e41: EXP
00002e42: SWAP1
00002e43: DIV
00002e44: PUSH1 0xff
00002e46: AND
00002e47: ISZERO
00002e48: SWAP1
00002e49: POP
00002e4a: DUP1
00002e4b: ISZERO
00002e4c: PUSH2 0x2e85
00002e4f: JUMPI
00002e50: PUSH1 0x01
00002e52: PUSH1 0x00
00002e54: PUSH1 0x01
00002e56: PUSH2 0x0100
00002e59: EXP
00002e5a: DUP2
00002e5b: SLOAD
00002e5c: DUP2
00002e5d: PUSH1 0xff
00002e5f: MUL
00002e60: NOT
00002e61: AND
00002e62: SWAP1
00002e63: DUP4
00002e64: ISZERO
00002e65: ISZERO
00002e66: MUL
00002e67: OR
00002e68: SWAP1
00002e69: SSTORE
00002e6a: POP
00002e6b: PUSH1 0x01
00002e6d: PUSH1 0x00
00002e6f: DUP1
00002e70: PUSH2 0x0100
00002e73: EXP
00002e74: DUP2
00002e75: SLOAD
00002e76: DUP2
00002e77: PUSH1 0xff
00002e79: MUL
00002e7a: NOT
00002e7b: AND
00002e7c: SWAP1
00002e7d: DUP4
00002e7e: ISZERO
00002e7f: ISZERO
00002e80: MUL
00002e81: OR
00002e82: SWAP1
00002e83: SSTORE
00002e84: POP
00002e85: JUMPDEST
00002e86: PUSH2 0x2e8d
00002e89: PUSH2 0x3840
00002e8c: JUMP
00002e8d: JUMPDEST
00002e8e: PUSH2 0x2e97
00002e91: DUP4
00002e92: DUP4
00002e93: PUSH2 0x393e
00002e96: JUMP
00002e97: JUMPDEST
00002e98: DUP1
00002e99: ISZERO
00002e9a: PUSH2 0x2eb8
00002e9d: JUMPI
00002e9e: PUSH1 0x00
00002ea0: DUP1
00002ea1: PUSH1 0x01
00002ea3: PUSH2 0x0100
00002ea6: EXP
00002ea7: DUP2
00002ea8: SLOAD
00002ea9: DUP2
00002eaa: PUSH1 0xff
00002eac: MUL
00002ead: NOT
00002eae: AND
00002eaf: SWAP1
00002eb0: DUP4
00002eb1: ISZERO
00002eb2: ISZERO
00002eb3: MUL
00002eb4: OR
00002eb5: SWAP1
00002eb6: SSTORE
00002eb7: POP
00002eb8: JUMPDEST
00002eb9: POP
00002eba: POP
00002ebb: POP
00002ebc: JUMP
00002ebd: JUMPDEST
00002ebe: DUP1
00002ebf: PUSH1 0x6a
00002ec1: PUSH1 0x00
00002ec3: PUSH2 0x0100
00002ec6: EXP
00002ec7: DUP2
00002ec8: SLOAD
00002ec9: DUP2
00002eca: PUSH1 0xff
00002ecc: MUL
00002ecd: NOT
00002ece: AND
00002ecf: SWAP1
00002ed0: DUP4
00002ed1: PUSH1 0xff
00002ed3: AND
00002ed4: MUL
00002ed5: OR
00002ed6: SWAP1
00002ed7: SSTORE
00002ed8: POP
00002ed9: POP
00002eda: JUMP
00002edb: JUMPDEST
00002edc: PUSH1 0x00
00002ede: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ef3: AND
00002ef4: DUP3
00002ef5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f0a: AND
00002f0b: EQ
00002f0c: ISZERO
00002f0d: PUSH2 0x2f7e
00002f10: JUMPI
00002f11: PUSH1 0x40
00002f13: MLOAD
00002f14: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002f35: DUP2
00002f36: MSTORE
00002f37: PUSH1 0x04
00002f39: ADD
00002f3a: DUP1
00002f3b: DUP1
00002f3c: PUSH1 0x20
00002f3e: ADD
00002f3f: DUP3
00002f40: DUP2
00002f41: SUB
00002f42: DUP3
00002f43: MSTORE
00002f44: PUSH1 0x1f
00002f46: DUP2
00002f47: MSTORE
00002f48: PUSH1 0x20
00002f4a: ADD
00002f4b: DUP1
00002f4c: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300
00002f6d: DUP2
00002f6e: MSTORE
00002f6f: POP
00002f70: PUSH1 0x20
00002f72: ADD
00002f73: SWAP2
00002f74: POP
00002f75: POP
00002f76: PUSH1 0x40
00002f78: MLOAD
00002f79: DUP1
00002f7a: SWAP2
00002f7b: SUB
00002f7c: SWAP1
00002f7d: REVERT
00002f7e: JUMPDEST
00002f7f: PUSH2 0x2f8a
00002f82: PUSH1 0x00
00002f84: DUP4
00002f85: DUP4
00002f86: PUSH2 0x35b0
00002f89: JUMP
00002f8a: JUMPDEST
00002f8b: PUSH2 0x2f9f
00002f8e: DUP2
00002f8f: PUSH1 0x67
00002f91: SLOAD
00002f92: PUSH2 0x2790
00002f95: SWAP1
00002f96: SWAP2
00002f97: SWAP1
00002f98: PUSH4 0xffffffff
00002f9d: AND
00002f9e: JUMP
00002f9f: JUMPDEST
00002fa0: PUSH1 0x67
00002fa2: DUP2
00002fa3: SWAP1
00002fa4: SSTORE
00002fa5: POP
00002fa6: PUSH2 0x2ff7
00002fa9: DUP2
00002faa: PUSH1 0x65
00002fac: PUSH1 0x00
00002fae: DUP6
00002faf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002fc4: AND
00002fc5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002fda: AND
00002fdb: DUP2
00002fdc: MSTORE
00002fdd: PUSH1 0x20
00002fdf: ADD
00002fe0: SWAP1
00002fe1: DUP2
00002fe2: MSTORE
00002fe3: PUSH1 0x20
00002fe5: ADD
00002fe6: PUSH1 0x00
00002fe8: KECCAK256
00002fe9: SLOAD
00002fea: PUSH2 0x2790
00002fed: SWAP1
00002fee: SWAP2
00002fef: SWAP1
00002ff0: PUSH4 0xffffffff
00002ff5: AND
00002ff6: JUMP
00002ff7: JUMPDEST
00002ff8: PUSH1 0x65
00002ffa: PUSH1 0x00
00002ffc: DUP5
00002ffd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003012: AND
00003013: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003028: AND
00003029: DUP2
0000302a: MSTORE
0000302b: PUSH1 0x20
0000302d: ADD
0000302e: SWAP1
0000302f: DUP2
00003030: MSTORE
00003031: PUSH1 0x20
00003033: ADD
00003034: PUSH1 0x00
00003036: KECCAK256
00003037: DUP2
00003038: SWAP1
00003039: SSTORE
0000303a: POP
0000303b: DUP2
0000303c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003051: AND
00003052: PUSH1 0x00
00003054: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003069: AND
0000306a: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000308b: DUP4
0000308c: PUSH1 0x40
0000308e: MLOAD
0000308f: DUP1
00003090: DUP3
00003091: DUP2
00003092: MSTORE
00003093: PUSH1 0x20
00003095: ADD
00003096: SWAP2
00003097: POP
00003098: POP
00003099: PUSH1 0x40
0000309b: MLOAD
0000309c: DUP1
0000309d: SWAP2
0000309e: SUB
0000309f: SWAP1
000030a0: LOG3
000030a1: POP
000030a2: POP
000030a3: JUMP
000030a4: JUMPDEST
000030a5: PUSH1 0x00
000030a7: DUP1
000030a8: PUSH1 0x9a
000030aa: PUSH1 0x00
000030ac: SWAP1
000030ad: SLOAD
000030ae: SWAP1
000030af: PUSH2 0x0100
000030b2: EXP
000030b3: SWAP1
000030b4: DIV
000030b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030ca: AND
000030cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030e0: AND
000030e1: PUSH4 0xc45a0155
000030e6: PUSH1 0x40
000030e8: MLOAD
000030e9: DUP2
000030ea: PUSH4 0xffffffff
000030ef: AND
000030f0: PUSH1 0xe0
000030f2: SHL
000030f3: DUP2
000030f4: MSTORE
000030f5: PUSH1 0x04
000030f7: ADD
000030f8: PUSH1 0x20
000030fa: PUSH1 0x40
000030fc: MLOAD
000030fd: DUP1
000030fe: DUP4
000030ff: SUB
00003100: DUP2
00003101: DUP7
00003102: DUP1
00003103: EXTCODESIZE
00003104: ISZERO
00003105: DUP1
00003106: ISZERO
00003107: PUSH2 0x310f
0000310a: JUMPI
0000310b: PUSH1 0x00
0000310d: DUP1
0000310e: REVERT
0000310f: JUMPDEST
00003110: POP
00003111: GAS
00003112: STATICCALL
00003113: ISZERO
00003114: DUP1
00003115: ISZERO
00003116: PUSH2 0x3123
00003119: JUMPI
0000311a: RETURNDATASIZE
0000311b: PUSH1 0x00
0000311d: DUP1
0000311e: RETURNDATACOPY
0000311f: RETURNDATASIZE
00003120: PUSH1 0x00
00003122: REVERT
00003123: JUMPDEST
00003124: POP
00003125: POP
00003126: POP
00003127: POP
00003128: PUSH1 0x40
0000312a: MLOAD
0000312b: RETURNDATASIZE
0000312c: PUSH1 0x20
0000312e: DUP2
0000312f: LT
00003130: ISZERO
00003131: PUSH2 0x3139
00003134: JUMPI
00003135: PUSH1 0x00
00003137: DUP1
00003138: REVERT
00003139: JUMPDEST
0000313a: DUP2
0000313b: ADD
0000313c: SWAP1
0000313d: DUP1
0000313e: DUP1
0000313f: MLOAD
00003140: SWAP1
00003141: PUSH1 0x20
00003143: ADD
00003144: SWAP1
00003145: SWAP3
00003146: SWAP2
00003147: SWAP1
00003148: POP
00003149: POP
0000314a: POP
0000314b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003160: AND
00003161: PUSH4 0xe6a43905
00003166: PUSH1 0x98
00003168: PUSH1 0x00
0000316a: SWAP1
0000316b: SLOAD
0000316c: SWAP1
0000316d: PUSH2 0x0100
00003170: EXP
00003171: SWAP1
00003172: DIV
00003173: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003188: AND
00003189: PUSH1 0x9a
0000318b: PUSH1 0x00
0000318d: SWAP1
0000318e: SLOAD
0000318f: SWAP1
00003190: PUSH2 0x0100
00003193: EXP
00003194: SWAP1
00003195: DIV
00003196: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031ab: AND
000031ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031c1: AND
000031c2: PUSH4 0xad5c4648
000031c7: PUSH1 0x40
000031c9: MLOAD
000031ca: DUP2
000031cb: PUSH4 0xffffffff
000031d0: AND
000031d1: PUSH1 0xe0
000031d3: SHL
000031d4: DUP2
000031d5: MSTORE
000031d6: PUSH1 0x04
000031d8: ADD
000031d9: PUSH1 0x20
000031db: PUSH1 0x40
000031dd: MLOAD
000031de: DUP1
000031df: DUP4
000031e0: SUB
000031e1: DUP2
000031e2: DUP7
000031e3: DUP1
000031e4: EXTCODESIZE
000031e5: ISZERO
000031e6: DUP1
000031e7: ISZERO
000031e8: PUSH2 0x31f0
000031eb: JUMPI
000031ec: PUSH1 0x00
000031ee: DUP1
000031ef: REVERT
000031f0: JUMPDEST
000031f1: POP
000031f2: GAS
000031f3: STATICCALL
000031f4: ISZERO
000031f5: DUP1
000031f6: ISZERO
000031f7: PUSH2 0x3204
000031fa: JUMPI
000031fb: RETURNDATASIZE
000031fc: PUSH1 0x00
000031fe: DUP1
000031ff: RETURNDATACOPY
00003200: RETURNDATASIZE
00003201: PUSH1 0x00
00003203: REVERT
00003204: JUMPDEST
00003205: POP
00003206: POP
00003207: POP
00003208: POP
00003209: PUSH1 0x40
0000320b: MLOAD
0000320c: RETURNDATASIZE
0000320d: PUSH1 0x20
0000320f: DUP2
00003210: LT
00003211: ISZERO
00003212: PUSH2 0x321a
00003215: JUMPI
00003216: PUSH1 0x00
00003218: DUP1
00003219: REVERT
0000321a: JUMPDEST
0000321b: DUP2
0000321c: ADD
0000321d: SWAP1
0000321e: DUP1
0000321f: DUP1
00003220: MLOAD
00003221: SWAP1
00003222: PUSH1 0x20
00003224: ADD
00003225: SWAP1
00003226: SWAP3
00003227: SWAP2
00003228: SWAP1
00003229: POP
0000322a: POP
0000322b: POP
0000322c: PUSH1 0x40
0000322e: MLOAD
0000322f: DUP4
00003230: PUSH4 0xffffffff
00003235: AND
00003236: PUSH1 0xe0
00003238: SHL
00003239: DUP2
0000323a: MSTORE
0000323b: PUSH1 0x04
0000323d: ADD
0000323e: DUP1
0000323f: DUP4
00003240: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003255: AND
00003256: DUP2
00003257: MSTORE
00003258: PUSH1 0x20
0000325a: ADD
0000325b: DUP3
0000325c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003271: AND
00003272: DUP2
00003273: MSTORE
00003274: PUSH1 0x20
00003276: ADD
00003277: SWAP3
00003278: POP
00003279: POP
0000327a: POP
0000327b: PUSH1 0x20
0000327d: PUSH1 0x40
0000327f: MLOAD
00003280: DUP1
00003281: DUP4
00003282: SUB
00003283: DUP2
00003284: DUP7
00003285: DUP1
00003286: EXTCODESIZE
00003287: ISZERO
00003288: DUP1
00003289: ISZERO
0000328a: PUSH2 0x3292
0000328d: JUMPI
0000328e: PUSH1 0x00
00003290: DUP1
00003291: REVERT
00003292: JUMPDEST
00003293: POP
00003294: GAS
00003295: STATICCALL
00003296: ISZERO
00003297: DUP1
00003298: ISZERO
00003299: PUSH2 0x32a6
0000329c: JUMPI
0000329d: RETURNDATASIZE
0000329e: PUSH1 0x00
000032a0: DUP1
000032a1: RETURNDATACOPY
000032a2: RETURNDATASIZE
000032a3: PUSH1 0x00
000032a5: REVERT
000032a6: JUMPDEST
000032a7: POP
000032a8: POP
000032a9: POP
000032aa: POP
000032ab: PUSH1 0x40
000032ad: MLOAD
000032ae: RETURNDATASIZE
000032af: PUSH1 0x20
000032b1: DUP2
000032b2: LT
000032b3: ISZERO
000032b4: PUSH2 0x32bc
000032b7: JUMPI
000032b8: PUSH1 0x00
000032ba: DUP1
000032bb: REVERT
000032bc: JUMPDEST
000032bd: DUP2
000032be: ADD
000032bf: SWAP1
000032c0: DUP1
000032c1: DUP1
000032c2: MLOAD
000032c3: SWAP1
000032c4: PUSH1 0x20
000032c6: ADD
000032c7: SWAP1
000032c8: SWAP3
000032c9: SWAP2
000032ca: SWAP1
000032cb: POP
000032cc: POP
000032cd: POP
000032ce: SWAP1
000032cf: POP
000032d0: PUSH1 0x00
000032d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000032e7: AND
000032e8: DUP2
000032e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000032fe: AND
000032ff: EQ
00003300: ISZERO
00003301: PUSH2 0x3372
00003304: JUMPI
00003305: PUSH1 0x40
00003307: MLOAD
00003308: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00003329: DUP2
0000332a: MSTORE
0000332b: PUSH1 0x04
0000332d: ADD
0000332e: DUP1
0000332f: DUP1
00003330: PUSH1 0x20
00003332: ADD
00003333: DUP3
00003334: DUP2
00003335: SUB
00003336: DUP3
00003337: MSTORE
00003338: PUSH1 0x1a
0000333a: DUP2
0000333b: MSTORE
0000333c: PUSH1 0x20
0000333e: ADD
0000333f: DUP1
00003340: PUSH32 0x574158473a3a5061697220646f6573206e6f7420657869737421000000000000
00003361: DUP2
00003362: MSTORE
00003363: POP
00003364: PUSH1 0x20
00003366: ADD
00003367: SWAP2
00003368: POP
00003369: POP
0000336a: PUSH1 0x40
0000336c: MLOAD
0000336d: DUP1
0000336e: SWAP2
0000336f: SUB
00003370: SWAP1
00003371: REVERT
00003372: JUMPDEST
00003373: PUSH1 0x00
00003375: DUP1
00003376: DUP3
00003377: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000338c: AND
0000338d: PUSH4 0x0902f1ac
00003392: PUSH1 0x40
00003394: MLOAD
00003395: DUP2
00003396: PUSH4 0xffffffff
0000339b: AND
0000339c: PUSH1 0xe0
0000339e: SHL
0000339f: DUP2
000033a0: MSTORE
000033a1: PUSH1 0x04
000033a3: ADD
000033a4: PUSH1 0x60
000033a6: PUSH1 0x40
000033a8: MLOAD
000033a9: DUP1
000033aa: DUP4
000033ab: SUB
000033ac: DUP2
000033ad: DUP7
000033ae: DUP1
000033af: EXTCODESIZE
000033b0: ISZERO
000033b1: DUP1
000033b2: ISZERO
000033b3: PUSH2 0x33bb
000033b6: JUMPI
000033b7: PUSH1 0x00
000033b9: DUP1
000033ba: REVERT
000033bb: JUMPDEST
000033bc: POP
000033bd: GAS
000033be: STATICCALL
000033bf: ISZERO
000033c0: DUP1
000033c1: ISZERO
000033c2: PUSH2 0x33cf
000033c5: JUMPI
000033c6: RETURNDATASIZE
000033c7: PUSH1 0x00
000033c9: DUP1
000033ca: RETURNDATACOPY
000033cb: RETURNDATASIZE
000033cc: PUSH1 0x00
000033ce: REVERT
000033cf: JUMPDEST
000033d0: POP
000033d1: POP
000033d2: POP
000033d3: POP
000033d4: PUSH1 0x40
000033d6: MLOAD
000033d7: RETURNDATASIZE
000033d8: PUSH1 0x60
000033da: DUP2
000033db: LT
000033dc: ISZERO
000033dd: PUSH2 0x33e5
000033e0: JUMPI
000033e1: PUSH1 0x00
000033e3: DUP1
000033e4: REVERT
000033e5: JUMPDEST
000033e6: DUP2
000033e7: ADD
000033e8: SWAP1
000033e9: DUP1
000033ea: DUP1
000033eb: MLOAD
000033ec: SWAP1
000033ed: PUSH1 0x20
000033ef: ADD
000033f0: SWAP1
000033f1: SWAP3
000033f2: SWAP2
000033f3: SWAP1
000033f4: DUP1
000033f5: MLOAD
000033f6: SWAP1
000033f7: PUSH1 0x20
000033f9: ADD
000033fa: SWAP1
000033fb: SWAP3
000033fc: SWAP2
000033fd: SWAP1
000033fe: DUP1
000033ff: MLOAD
00003400: SWAP1
00003401: PUSH1 0x20
00003403: ADD
00003404: SWAP1
00003405: SWAP3
00003406: SWAP2
00003407: SWAP1
00003408: POP
00003409: POP
0000340a: POP
0000340b: POP
0000340c: PUSH14 0xffffffffffffffffffffffffffff
0000341b: AND
0000341c: SWAP2
0000341d: POP
0000341e: PUSH14 0xffffffffffffffffffffffffffff
0000342d: AND
0000342e: SWAP2
0000342f: POP
00003430: PUSH1 0x00
00003432: DUP3
00003433: SWAP1
00003434: POP
00003435: PUSH1 0x00
00003437: DUP3
00003438: SWAP1
00003439: POP
0000343a: PUSH1 0x9a
0000343c: PUSH1 0x00
0000343e: SWAP1
0000343f: SLOAD
00003440: SWAP1
00003441: PUSH2 0x0100
00003444: EXP
00003445: SWAP1
00003446: DIV
00003447: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000345c: AND
0000345d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003472: AND
00003473: PUSH4 0xad5c4648
00003478: PUSH1 0x40
0000347a: MLOAD
0000347b: DUP2
0000347c: PUSH4 0xffffffff
00003481: AND
00003482: PUSH1 0xe0
00003484: SHL
00003485: DUP2
00003486: MSTORE
00003487: PUSH1 0x04
00003489: ADD
0000348a: PUSH1 0x20
0000348c: PUSH1 0x40
0000348e: MLOAD
0000348f: DUP1
00003490: DUP4
00003491: SUB
00003492: DUP2
00003493: DUP7
00003494: DUP1
00003495: EXTCODESIZE
00003496: ISZERO
00003497: DUP1
00003498: ISZERO
00003499: PUSH2 0x34a1
0000349c: JUMPI
0000349d: PUSH1 0x00
0000349f: DUP1
000034a0: REVERT
000034a1: JUMPDEST
000034a2: POP
000034a3: GAS
000034a4: STATICCALL
000034a5: ISZERO
000034a6: DUP1
000034a7: ISZERO
000034a8: PUSH2 0x34b5
000034ab: JUMPI
000034ac: RETURNDATASIZE
000034ad: PUSH1 0x00
000034af: DUP1
000034b0: RETURNDATACOPY
000034b1: RETURNDATASIZE
000034b2: PUSH1 0x00
000034b4: REVERT
000034b5: JUMPDEST
000034b6: POP
000034b7: POP
000034b8: POP
000034b9: POP
000034ba: PUSH1 0x40
000034bc: MLOAD
000034bd: RETURNDATASIZE
000034be: PUSH1 0x20
000034c0: DUP2
000034c1: LT
000034c2: ISZERO
000034c3: PUSH2 0x34cb
000034c6: JUMPI
000034c7: PUSH1 0x00
000034c9: DUP1
000034ca: REVERT
000034cb: JUMPDEST
000034cc: DUP2
000034cd: ADD
000034ce: SWAP1
000034cf: DUP1
000034d0: DUP1
000034d1: MLOAD
000034d2: SWAP1
000034d3: PUSH1 0x20
000034d5: ADD
000034d6: SWAP1
000034d7: SWAP3
000034d8: SWAP2
000034d9: SWAP1
000034da: POP
000034db: POP
000034dc: POP
000034dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000034f2: AND
000034f3: PUSH1 0x98
000034f5: PUSH1 0x00
000034f7: SWAP1
000034f8: SLOAD
000034f9: SWAP1
000034fa: PUSH2 0x0100
000034fd: EXP
000034fe: SWAP1
000034ff: DIV
00003500: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003515: AND
00003516: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000352b: AND
0000352c: LT
0000352d: PUSH2 0x356c
00003530: JUMPI
00003531: PUSH2 0x3567
00003534: PUSH2 0x3546
00003537: DUP9
00003538: DUP4
00003539: PUSH2 0x2790
0000353c: SWAP1
0000353d: SWAP2
0000353e: SWAP1
0000353f: PUSH4 0xffffffff
00003544: AND
00003545: JUMP
00003546: JUMPDEST
00003547: PUSH2 0x3559
0000354a: DUP5
0000354b: DUP11
0000354c: PUSH2 0x2862
0000354f: SWAP1
00003550: SWAP2
00003551: SWAP1
00003552: PUSH4 0xffffffff
00003557: AND
00003558: JUMP
00003559: JUMPDEST
0000355a: PUSH2 0x28e8
0000355d: SWAP1
0000355e: SWAP2
0000355f: SWAP1
00003560: PUSH4 0xffffffff
00003565: AND
00003566: JUMP
00003567: JUMPDEST
00003568: PUSH2 0x35a4
0000356b: JUMP
0000356c: JUMPDEST
0000356d: PUSH2 0x35a3
00003570: PUSH2 0x3582
00003573: DUP9
00003574: DUP5
00003575: PUSH2 0x2790
00003578: SWAP1
00003579: SWAP2
0000357a: SWAP1
0000357b: PUSH4 0xffffffff
00003580: AND
00003581: JUMP
00003582: JUMPDEST
00003583: PUSH2 0x3595
00003586: DUP4
00003587: DUP11
00003588: PUSH2 0x2862
0000358b: SWAP1
0000358c: SWAP2
0000358d: SWAP1
0000358e: PUSH4 0xffffffff
00003593: AND
00003594: JUMP
00003595: JUMPDEST
00003596: PUSH2 0x28e8
00003599: SWAP1
0000359a: SWAP2
0000359b: SWAP1
0000359c: PUSH4 0xffffffff
000035a1: AND
000035a2: JUMP
000035a3: JUMPDEST
000035a4: JUMPDEST
000035a5: SWAP6
000035a6: POP
000035a7: POP
000035a8: POP
000035a9: POP
000035aa: POP
000035ab: POP
000035ac: SWAP2
000035ad: SWAP1
000035ae: POP
000035af: JUMP
000035b0: JUMPDEST
000035b1: POP
000035b2: POP
000035b3: POP
000035b4: JUMP
000035b5: JUMPDEST
000035b6: PUSH1 0x00
000035b8: DUP1
000035b9: DUP4
000035ba: GT
000035bb: DUP3
000035bc: SWAP1
000035bd: PUSH2 0x3661
000035c0: JUMPI
000035c1: PUSH1 0x40
000035c3: MLOAD
000035c4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000035e5: DUP2
000035e6: MSTORE
000035e7: PUSH1 0x04
000035e9: ADD
000035ea: DUP1
000035eb: DUP1
000035ec: PUSH1 0x20
000035ee: ADD
000035ef: DUP3
000035f0: DUP2
000035f1: SUB
000035f2: DUP3
000035f3: MSTORE
000035f4: DUP4
000035f5: DUP2
000035f6: DUP2
000035f7: MLOAD
000035f8: DUP2
000035f9: MSTORE
000035fa: PUSH1 0x20
000035fc: ADD
000035fd: SWAP2
000035fe: POP
000035ff: DUP1
00003600: MLOAD
00003601: SWAP1
00003602: PUSH1 0x20
00003604: ADD
00003605: SWAP1
00003606: DUP1
00003607: DUP4
00003608: DUP4
00003609: PUSH1 0x00
0000360b: JUMPDEST
0000360c: DUP4
0000360d: DUP2
0000360e: LT
0000360f: ISZERO
00003610: PUSH2 0x3626
00003613: JUMPI
00003614: DUP1
00003615: DUP3
00003616: ADD
00003617: MLOAD
00003618: DUP2
00003619: DUP5
0000361a: ADD
0000361b: MSTORE
0000361c: PUSH1 0x20
0000361e: DUP2
0000361f: ADD
00003620: SWAP1
00003621: POP
00003622: PUSH2 0x360b
00003625: JUMP
00003626: JUMPDEST
00003627: POP
00003628: POP
00003629: POP
0000362a: POP
0000362b: SWAP1
0000362c: POP
0000362d: SWAP1
0000362e: DUP2
0000362f: ADD
00003630: SWAP1
00003631: PUSH1 0x1f
00003633: AND
00003634: DUP1
00003635: ISZERO
00003636: PUSH2 0x3653
00003639: JUMPI
0000363a: DUP1
0000363b: DUP3
0000363c: SUB
0000363d: DUP1
0000363e: MLOAD
0000363f: PUSH1 0x01
00003641: DUP4
00003642: PUSH1 0x20
00003644: SUB
00003645: PUSH2 0x0100
00003648: EXP
00003649: SUB
0000364a: NOT
0000364b: AND
0000364c: DUP2
0000364d: MSTORE
0000364e: PUSH1 0x20
00003650: ADD
00003651: SWAP2
00003652: POP
00003653: JUMPDEST
00003654: POP
00003655: SWAP3
00003656: POP
00003657: POP
00003658: POP
00003659: PUSH1 0x40
0000365b: MLOAD
0000365c: DUP1
0000365d: SWAP2
0000365e: SUB
0000365f: SWAP1
00003660: REVERT
00003661: JUMPDEST
00003662: POP
00003663: PUSH1 0x00
00003665: DUP4
00003666: DUP6
00003667: DUP2
00003668: PUSH2 0x366d
0000366b: JUMPI
0000366c: INVALID
0000366d: JUMPDEST
0000366e: DIV
0000366f: SWAP1
00003670: POP
00003671: DUP1
00003672: SWAP2
00003673: POP
00003674: POP
00003675: SWAP4
00003676: SWAP3
00003677: POP
00003678: POP
00003679: POP
0000367a: JUMP
0000367b: JUMPDEST
0000367c: PUSH1 0x00
0000367e: DUP2
0000367f: EQ
00003680: DUP1
00003681: PUSH2 0x3749
00003684: JUMPI
00003685: POP
00003686: PUSH1 0x00
00003688: DUP4
00003689: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000369e: AND
0000369f: PUSH4 0xdd62ed3e
000036a4: ADDRESS
000036a5: DUP6
000036a6: PUSH1 0x40
000036a8: MLOAD
000036a9: DUP4
000036aa: PUSH4 0xffffffff
000036af: AND
000036b0: PUSH1 0xe0
000036b2: SHL
000036b3: DUP2
000036b4: MSTORE
000036b5: PUSH1 0x04
000036b7: ADD
000036b8: DUP1
000036b9: DUP4
000036ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000036cf: AND
000036d0: DUP2
000036d1: MSTORE
000036d2: PUSH1 0x20
000036d4: ADD
000036d5: DUP3
000036d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000036eb: AND
000036ec: DUP2
000036ed: MSTORE
000036ee: PUSH1 0x20
000036f0: ADD
000036f1: SWAP3
000036f2: POP
000036f3: POP
000036f4: POP
000036f5: PUSH1 0x20
000036f7: PUSH1 0x40
000036f9: MLOAD
000036fa: DUP1
000036fb: DUP4
000036fc: SUB
000036fd: DUP2
000036fe: DUP7
000036ff: DUP1
00003700: EXTCODESIZE
00003701: ISZERO
00003702: DUP1
00003703: ISZERO
00003704: PUSH2 0x370c
00003707: JUMPI
00003708: PUSH1 0x00
0000370a: DUP1
0000370b: REVERT
0000370c: JUMPDEST
0000370d: POP
0000370e: GAS
0000370f: STATICCALL
00003710: ISZERO
00003711: DUP1
00003712: ISZERO
00003713: PUSH2 0x3720
00003716: JUMPI
00003717: RETURNDATASIZE
00003718: PUSH1 0x00
0000371a: DUP1
0000371b: RETURNDATACOPY
0000371c: RETURNDATASIZE
0000371d: PUSH1 0x00
0000371f: REVERT
00003720: JUMPDEST
00003721: POP
00003722: POP
00003723: POP
00003724: POP
00003725: PUSH1 0x40
00003727: MLOAD
00003728: RETURNDATASIZE
00003729: PUSH1 0x20
0000372b: DUP2
0000372c: LT
0000372d: ISZERO
0000372e: PUSH2 0x3736
00003731: JUMPI
00003732: PUSH1 0x00
00003734: DUP1
00003735: REVERT
00003736: JUMPDEST
00003737: DUP2
00003738: ADD
00003739: SWAP1
0000373a: DUP1
0000373b: DUP1
0000373c: MLOAD
0000373d: SWAP1
0000373e: PUSH1 0x20
00003740: ADD
00003741: SWAP1
00003742: SWAP3
00003743: SWAP2
00003744: SWAP1
00003745: POP
00003746: POP
00003747: POP
00003748: EQ
00003749: JUMPDEST
0000374a: PUSH2 0x379e
0000374d: JUMPI
0000374e: PUSH1 0x40
00003750: MLOAD
00003751: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00003772: DUP2
00003773: MSTORE
00003774: PUSH1 0x04
00003776: ADD
00003777: DUP1
00003778: DUP1
00003779: PUSH1 0x20
0000377b: ADD
0000377c: DUP3
0000377d: DUP2
0000377e: SUB
0000377f: DUP3
00003780: MSTORE
00003781: PUSH1 0x36
00003783: DUP2
00003784: MSTORE
00003785: PUSH1 0x20
00003787: ADD
00003788: DUP1
00003789: PUSH2 0x4082
0000378c: PUSH1 0x36
0000378e: SWAP2
0000378f: CODECOPY
00003790: PUSH1 0x40
00003792: ADD
00003793: SWAP2
00003794: POP
00003795: POP
00003796: PUSH1 0x40
00003798: MLOAD
00003799: DUP1
0000379a: SWAP2
0000379b: SUB
0000379c: SWAP1
0000379d: REVERT
0000379e: JUMPDEST
0000379f: PUSH2 0x383b
000037a2: DUP4
000037a3: PUSH4 0x095ea7b3
000037a8: PUSH1 0xe0
000037aa: SHL
000037ab: DUP5
000037ac: DUP5
000037ad: PUSH1 0x40
000037af: MLOAD
000037b0: PUSH1 0x24
000037b2: ADD
000037b3: DUP1
000037b4: DUP4
000037b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000037ca: AND
000037cb: DUP2
000037cc: MSTORE
000037cd: PUSH1 0x20
000037cf: ADD
000037d0: DUP3
000037d1: DUP2
000037d2: MSTORE
000037d3: PUSH1 0x20
000037d5: ADD
000037d6: SWAP3
000037d7: POP
000037d8: POP
000037d9: POP
000037da: PUSH1 0x40
000037dc: MLOAD
000037dd: PUSH1 0x20
000037df: DUP2
000037e0: DUP4
000037e1: SUB
000037e2: SUB
000037e3: DUP2
000037e4: MSTORE
000037e5: SWAP1
000037e6: PUSH1 0x40
000037e8: MSTORE
000037e9: SWAP1
000037ea: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00003807: NOT
00003808: AND
00003809: PUSH1 0x20
0000380b: DUP3
0000380c: ADD
0000380d: DUP1
0000380e: MLOAD
0000380f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000382c: DUP4
0000382d: DUP2
0000382e: DUP4
0000382f: AND
00003830: OR
00003831: DUP4
00003832: MSTORE
00003833: POP
00003834: POP
00003835: POP
00003836: POP
00003837: PUSH2 0x3a88
0000383a: JUMP
0000383b: JUMPDEST
0000383c: POP
0000383d: POP
0000383e: POP
0000383f: JUMP
00003840: JUMPDEST
00003841: PUSH1 0x00
00003843: PUSH1 0x01
00003845: SWAP1
00003846: SLOAD
00003847: SWAP1
00003848: PUSH2 0x0100
0000384b: EXP
0000384c: SWAP1
0000384d: DIV
0000384e: PUSH1 0xff
00003850: AND
00003851: DUP1
00003852: PUSH2 0x385f
00003855: JUMPI
00003856: POP
00003857: PUSH2 0x385e
0000385a: PUSH2 0x2d94
0000385d: JUMP
0000385e: JUMPDEST
0000385f: JUMPDEST
00003860: DUP1
00003861: PUSH2 0x3875
00003864: JUMPI
00003865: POP
00003866: PUSH1 0x00
00003868: DUP1
00003869: SLOAD
0000386a: SWAP1
0000386b: PUSH2 0x0100
0000386e: EXP
0000386f: SWAP1
00003870: DIV
00003871: PUSH1 0xff
00003873: AND
00003874: ISZERO
00003875: JUMPDEST
00003876: PUSH2 0x38ca
00003879: JUMPI
0000387a: PUSH1 0x40
0000387c: MLOAD
0000387d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000389e: DUP2
0000389f: MSTORE
000038a0: PUSH1 0x04
000038a2: ADD
000038a3: DUP1
000038a4: DUP1
000038a5: PUSH1 0x20
000038a7: ADD
000038a8: DUP3
000038a9: DUP2
000038aa: SUB
000038ab: DUP3
000038ac: MSTORE
000038ad: PUSH1 0x2e
000038af: DUP2
000038b0: MSTORE
000038b1: PUSH1 0x20
000038b3: ADD
000038b4: DUP1
000038b5: PUSH2 0x3f99
000038b8: PUSH1 0x2e
000038ba: SWAP2
000038bb: CODECOPY
000038bc: PUSH1 0x40
000038be: ADD
000038bf: SWAP2
000038c0: POP
000038c1: POP
000038c2: PUSH1 0x40
000038c4: MLOAD
000038c5: DUP1
000038c6: SWAP2
000038c7: SUB
000038c8: SWAP1
000038c9: REVERT
000038ca: JUMPDEST
000038cb: PUSH1 0x00
000038cd: DUP1
000038ce: PUSH1 0x01
000038d0: SWAP1
000038d1: SLOAD
000038d2: SWAP1
000038d3: PUSH2 0x0100
000038d6: EXP
000038d7: SWAP1
000038d8: DIV
000038d9: PUSH1 0xff
000038db: AND
000038dc: ISZERO
000038dd: SWAP1
000038de: POP
000038df: DUP1
000038e0: ISZERO
000038e1: PUSH2 0x391a
000038e4: JUMPI
000038e5: PUSH1 0x01
000038e7: PUSH1 0x00
000038e9: PUSH1 0x01
000038eb: PUSH2 0x0100
000038ee: EXP
000038ef: DUP2
000038f0: SLOAD
000038f1: DUP2
000038f2: PUSH1 0xff
000038f4: MUL
000038f5: NOT
000038f6: AND
000038f7: SWAP1
000038f8: DUP4
000038f9: ISZERO
000038fa: ISZERO
000038fb: MUL
000038fc: OR
000038fd: SWAP1
000038fe: SSTORE
000038ff: POP
00003900: PUSH1 0x01
00003902: PUSH1 0x00
00003904: DUP1
00003905: PUSH2 0x0100
00003908: EXP
00003909: DUP2
0000390a: SLOAD
0000390b: DUP2
0000390c: PUSH1 0xff
0000390e: MUL
0000390f: NOT
00003910: AND
00003911: SWAP1
00003912: DUP4
00003913: ISZERO
00003914: ISZERO
00003915: MUL
00003916: OR
00003917: SWAP1
00003918: SSTORE
00003919: POP
0000391a: JUMPDEST
0000391b: DUP1
0000391c: ISZERO
0000391d: PUSH2 0x393b
00003920: JUMPI
00003921: PUSH1 0x00
00003923: DUP1
00003924: PUSH1 0x01
00003926: PUSH2 0x0100
00003929: EXP
0000392a: DUP2
0000392b: SLOAD
0000392c: DUP2
0000392d: PUSH1 0xff
0000392f: MUL
00003930: NOT
00003931: AND
00003932: SWAP1
00003933: DUP4
00003934: ISZERO
00003935: ISZERO
00003936: MUL
00003937: OR
00003938: SWAP1
00003939: SSTORE
0000393a: POP
0000393b: JUMPDEST
0000393c: POP
0000393d: JUMP
0000393e: JUMPDEST
0000393f: PUSH1 0x00
00003941: PUSH1 0x01
00003943: SWAP1
00003944: SLOAD
00003945: SWAP1
00003946: PUSH2 0x0100
00003949: EXP
0000394a: SWAP1
0000394b: DIV
0000394c: PUSH1 0xff
0000394e: AND
0000394f: DUP1
00003950: PUSH2 0x395d
00003953: JUMPI
00003954: POP
00003955: PUSH2 0x395c
00003958: PUSH2 0x2d94
0000395b: JUMP
0000395c: JUMPDEST
0000395d: JUMPDEST
0000395e: DUP1
0000395f: PUSH2 0x3973
00003962: JUMPI
00003963: POP
00003964: PUSH1 0x00
00003966: DUP1
00003967: SLOAD
00003968: SWAP1
00003969: PUSH2 0x0100
0000396c: EXP
0000396d: SWAP1
0000396e: DIV
0000396f: PUSH1 0xff
00003971: AND
00003972: ISZERO
00003973: JUMPDEST
00003974: PUSH2 0x39c8
00003977: JUMPI
00003978: PUSH1 0x40
0000397a: MLOAD
0000397b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000399c: DUP2
0000399d: MSTORE
0000399e: PUSH1 0x04
000039a0: ADD
000039a1: DUP1
000039a2: DUP1
000039a3: PUSH1 0x20
000039a5: ADD
000039a6: DUP3
000039a7: DUP2
000039a8: SUB
000039a9: DUP3
000039aa: MSTORE
000039ab: PUSH1 0x2e
000039ad: DUP2
000039ae: MSTORE
000039af: PUSH1 0x20
000039b1: ADD
000039b2: DUP1
000039b3: PUSH2 0x3f99
000039b6: PUSH1 0x2e
000039b8: SWAP2
000039b9: CODECOPY
000039ba: PUSH1 0x40
000039bc: ADD
000039bd: SWAP2
000039be: POP
000039bf: POP
000039c0: PUSH1 0x40
000039c2: MLOAD
000039c3: DUP1
000039c4: SWAP2
000039c5: SUB
000039c6: SWAP1
000039c7: REVERT
000039c8: JUMPDEST
000039c9: PUSH1 0x00
000039cb: DUP1
000039cc: PUSH1 0x01
000039ce: SWAP1
000039cf: SLOAD
000039d0: SWAP1
000039d1: PUSH2 0x0100
000039d4: EXP
000039d5: SWAP1
000039d6: DIV
000039d7: PUSH1 0xff
000039d9: AND
000039da: ISZERO
000039db: SWAP1
000039dc: POP
000039dd: DUP1
000039de: ISZERO
000039df: PUSH2 0x3a18
000039e2: JUMPI
000039e3: PUSH1 0x01
000039e5: PUSH1 0x00
000039e7: PUSH1 0x01
000039e9: PUSH2 0x0100
000039ec: EXP
000039ed: DUP2
000039ee: SLOAD
000039ef: DUP2
000039f0: PUSH1 0xff
000039f2: MUL
000039f3: NOT
000039f4: AND
000039f5: SWAP1
000039f6: DUP4
000039f7: ISZERO
000039f8: ISZERO
000039f9: MUL
000039fa: OR
000039fb: SWAP1
000039fc: SSTORE
000039fd: POP
000039fe: PUSH1 0x01
00003a00: PUSH1 0x00
00003a02: DUP1
00003a03: PUSH2 0x0100
00003a06: EXP
00003a07: DUP2
00003a08: SLOAD
00003a09: DUP2
00003a0a: PUSH1 0xff
00003a0c: MUL
00003a0d: NOT
00003a0e: AND
00003a0f: SWAP1
00003a10: DUP4
00003a11: ISZERO
00003a12: ISZERO
00003a13: MUL
00003a14: OR
00003a15: SWAP1
00003a16: SSTORE
00003a17: POP
00003a18: JUMPDEST
00003a19: DUP3
00003a1a: PUSH1 0x68
00003a1c: SWAP1
00003a1d: DUP1
00003a1e: MLOAD
00003a1f: SWAP1
00003a20: PUSH1 0x20
00003a22: ADD
00003a23: SWAP1
00003a24: PUSH2 0x3a2e
00003a27: SWAP3
00003a28: SWAP2
00003a29: SWAP1
00003a2a: PUSH2 0x3da8
00003a2d: JUMP
00003a2e: JUMPDEST
00003a2f: POP
00003a30: DUP2
00003a31: PUSH1 0x69
00003a33: SWAP1
00003a34: DUP1
00003a35: MLOAD
00003a36: SWAP1
00003a37: PUSH1 0x20
00003a39: ADD
00003a3a: SWAP1
00003a3b: PUSH2 0x3a45
00003a3e: SWAP3
00003a3f: SWAP2
00003a40: SWAP1
00003a41: PUSH2 0x3da8
00003a44: JUMP
00003a45: JUMPDEST
00003a46: POP
00003a47: PUSH1 0x12
00003a49: PUSH1 0x6a
00003a4b: PUSH1 0x00
00003a4d: PUSH2 0x0100
00003a50: EXP
00003a51: DUP2
00003a52: SLOAD
00003a53: DUP2
00003a54: PUSH1 0xff
00003a56: MUL
00003a57: NOT
00003a58: AND
00003a59: SWAP1
00003a5a: DUP4
00003a5b: PUSH1 0xff
00003a5d: AND
00003a5e: MUL
00003a5f: OR
00003a60: SWAP1
00003a61: SSTORE
00003a62: POP
00003a63: DUP1
00003a64: ISZERO
00003a65: PUSH2 0x3a83
00003a68: JUMPI
00003a69: PUSH1 0x00
00003a6b: DUP1
00003a6c: PUSH1 0x01
00003a6e: PUSH2 0x0100
00003a71: EXP
00003a72: DUP2
00003a73: SLOAD
00003a74: DUP2
00003a75: PUSH1 0xff
00003a77: MUL
00003a78: NOT
00003a79: AND
00003a7a: SWAP1
00003a7b: DUP4
00003a7c: ISZERO
00003a7d: ISZERO
00003a7e: MUL
00003a7f: OR
00003a80: SWAP1
00003a81: SSTORE
00003a82: POP
00003a83: JUMPDEST
00003a84: POP
00003a85: POP
00003a86: POP
00003a87: JUMP
00003a88: JUMPDEST
00003a89: PUSH2 0x3aa7
00003a8c: DUP3
00003a8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003aa2: AND
00003aa3: PUSH2 0x3cd3
00003aa6: JUMP
00003aa7: JUMPDEST
00003aa8: PUSH2 0x3b19
00003aab: JUMPI
00003aac: PUSH1 0x40
00003aae: MLOAD
00003aaf: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00003ad0: DUP2
00003ad1: MSTORE
00003ad2: PUSH1 0x04
00003ad4: ADD
00003ad5: DUP1
00003ad6: DUP1
00003ad7: PUSH1 0x20
00003ad9: ADD
00003ada: DUP3
00003adb: DUP2
00003adc: SUB
00003add: DUP3
00003ade: MSTORE
00003adf: PUSH1 0x1f
00003ae1: DUP2
00003ae2: MSTORE
00003ae3: PUSH1 0x20
00003ae5: ADD
00003ae6: DUP1
00003ae7: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400
00003b08: DUP2
00003b09: MSTORE
00003b0a: POP
00003b0b: PUSH1 0x20
00003b0d: ADD
00003b0e: SWAP2
00003b0f: POP
00003b10: POP
00003b11: PUSH1 0x40
00003b13: MLOAD
00003b14: DUP1
00003b15: SWAP2
00003b16: SUB
00003b17: SWAP1
00003b18: REVERT
00003b19: JUMPDEST
00003b1a: PUSH1 0x00
00003b1c: PUSH1 0x60
00003b1e: DUP4
00003b1f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003b34: AND
00003b35: DUP4
00003b36: PUSH1 0x40
00003b38: MLOAD
00003b39: DUP1
00003b3a: DUP3
00003b3b: DUP1
00003b3c: MLOAD
00003b3d: SWAP1
00003b3e: PUSH1 0x20
00003b40: ADD
00003b41: SWAP1
00003b42: DUP1
00003b43: DUP4
00003b44: DUP4
00003b45: JUMPDEST
00003b46: PUSH1 0x20
00003b48: DUP4
00003b49: LT
00003b4a: PUSH2 0x3b68
00003b4d: JUMPI
00003b4e: DUP1
00003b4f: MLOAD
00003b50: DUP3
00003b51: MSTORE
00003b52: PUSH1 0x20
00003b54: DUP3
00003b55: ADD
00003b56: SWAP2
00003b57: POP
00003b58: PUSH1 0x20
00003b5a: DUP2
00003b5b: ADD
00003b5c: SWAP1
00003b5d: POP
00003b5e: PUSH1 0x20
00003b60: DUP4
00003b61: SUB
00003b62: SWAP3
00003b63: POP
00003b64: PUSH2 0x3b45
00003b67: JUMP
00003b68: JUMPDEST
00003b69: PUSH1 0x01
00003b6b: DUP4
00003b6c: PUSH1 0x20
00003b6e: SUB
00003b6f: PUSH2 0x0100
00003b72: EXP
00003b73: SUB
00003b74: DUP1
00003b75: NOT
00003b76: DUP3
00003b77: MLOAD
00003b78: AND
00003b79: DUP2
00003b7a: DUP5
00003b7b: MLOAD
00003b7c: AND
00003b7d: DUP1
00003b7e: DUP3
00003b7f: OR
00003b80: DUP6
00003b81: MSTORE
00003b82: POP
00003b83: POP
00003b84: POP
00003b85: POP
00003b86: POP
00003b87: POP
00003b88: SWAP1
00003b89: POP
00003b8a: ADD
00003b8b: SWAP2
00003b8c: POP
00003b8d: POP
00003b8e: PUSH1 0x00
00003b90: PUSH1 0x40
00003b92: MLOAD
00003b93: DUP1
00003b94: DUP4
00003b95: SUB
00003b96: DUP2
00003b97: PUSH1 0x00
00003b99: DUP7
00003b9a: GAS
00003b9b: CALL
00003b9c: SWAP2
00003b9d: POP
00003b9e: POP
00003b9f: RETURNDATASIZE
00003ba0: DUP1
00003ba1: PUSH1 0x00
00003ba3: DUP2
00003ba4: EQ
00003ba5: PUSH2 0x3bca
00003ba8: JUMPI
00003ba9: PUSH1 0x40
00003bab: MLOAD
00003bac: SWAP2
00003bad: POP
00003bae: PUSH1 0x1f
00003bb0: NOT
00003bb1: PUSH1 0x3f
00003bb3: RETURNDATASIZE
00003bb4: ADD
00003bb5: AND
00003bb6: DUP3
00003bb7: ADD
00003bb8: PUSH1 0x40
00003bba: MSTORE
00003bbb: RETURNDATASIZE
00003bbc: DUP3
00003bbd: MSTORE
00003bbe: RETURNDATASIZE
00003bbf: PUSH1 0x00
00003bc1: PUSH1 0x20
00003bc3: DUP5
00003bc4: ADD
00003bc5: RETURNDATACOPY
00003bc6: PUSH2 0x3bcf
00003bc9: JUMP
00003bca: JUMPDEST
00003bcb: PUSH1 0x60
00003bcd: SWAP2
00003bce: POP
00003bcf: JUMPDEST
00003bd0: POP
00003bd1: SWAP2
00003bd2: POP
00003bd3: SWAP2
00003bd4: POP
00003bd5: DUP2
00003bd6: PUSH2 0x3c47
00003bd9: JUMPI
00003bda: PUSH1 0x40
00003bdc: MLOAD
00003bdd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00003bfe: DUP2
00003bff: MSTORE
00003c00: PUSH1 0x04
00003c02: ADD
00003c03: DUP1
00003c04: DUP1
00003c05: PUSH1 0x20
00003c07: ADD
00003c08: DUP3
00003c09: DUP2
00003c0a: SUB
00003c0b: DUP3
00003c0c: MSTORE
00003c0d: PUSH1 0x20
00003c0f: DUP2
00003c10: MSTORE
00003c11: PUSH1 0x20
00003c13: ADD
00003c14: DUP1
00003c15: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00003c36: DUP2
00003c37: MSTORE
00003c38: POP
00003c39: PUSH1 0x20
00003c3b: ADD
00003c3c: SWAP2
00003c3d: POP
00003c3e: POP
00003c3f: PUSH1 0x40
00003c41: MLOAD
00003c42: DUP1
00003c43: SWAP2
00003c44: SUB
00003c45: SWAP1
00003c46: REVERT
00003c47: JUMPDEST
00003c48: PUSH1 0x00
00003c4a: DUP2
00003c4b: MLOAD
00003c4c: GT
00003c4d: ISZERO
00003c4e: PUSH2 0x3ccd
00003c51: JUMPI
00003c52: DUP1
00003c53: DUP1
00003c54: PUSH1 0x20
00003c56: ADD
00003c57: SWAP1
00003c58: MLOAD
00003c59: PUSH1 0x20
00003c5b: DUP2
00003c5c: LT
00003c5d: ISZERO
00003c5e: PUSH2 0x3c66
00003c61: JUMPI
00003c62: PUSH1 0x00
00003c64: DUP1
00003c65: REVERT
00003c66: JUMPDEST
00003c67: DUP2
00003c68: ADD
00003c69: SWAP1
00003c6a: DUP1
00003c6b: DUP1
00003c6c: MLOAD
00003c6d: SWAP1
00003c6e: PUSH1 0x20
00003c70: ADD
00003c71: SWAP1
00003c72: SWAP3
00003c73: SWAP2
00003c74: SWAP1
00003c75: POP
00003c76: POP
00003c77: POP
00003c78: PUSH2 0x3ccc
00003c7b: JUMPI
00003c7c: PUSH1 0x40
00003c7e: MLOAD
00003c7f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00003ca0: DUP2
00003ca1: MSTORE
00003ca2: PUSH1 0x04
00003ca4: ADD
00003ca5: DUP1
00003ca6: DUP1
00003ca7: PUSH1 0x20
00003ca9: ADD
00003caa: DUP3
00003cab: DUP2
00003cac: SUB
00003cad: DUP3
00003cae: MSTORE
00003caf: PUSH1 0x2a
00003cb1: DUP2
00003cb2: MSTORE
00003cb3: PUSH1 0x20
00003cb5: ADD
00003cb6: DUP1
00003cb7: PUSH2 0x4058
00003cba: PUSH1 0x2a
00003cbc: SWAP2
00003cbd: CODECOPY
00003cbe: PUSH1 0x40
00003cc0: ADD
00003cc1: SWAP2
00003cc2: POP
00003cc3: POP
00003cc4: PUSH1 0x40
00003cc6: MLOAD
00003cc7: DUP1
00003cc8: SWAP2
00003cc9: SUB
00003cca: SWAP1
00003ccb: REVERT
00003ccc: JUMPDEST
00003ccd: JUMPDEST
00003cce: POP
00003ccf: POP
00003cd0: POP
00003cd1: POP
00003cd2: JUMP
00003cd3: JUMPDEST
00003cd4: PUSH1 0x00
00003cd6: DUP1
00003cd7: PUSH1 0x00
00003cd9: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
00003cfa: PUSH1 0x00
00003cfc: SHL
00003cfd: SWAP1
00003cfe: POP
00003cff: DUP4
00003d00: EXTCODEHASH
00003d01: SWAP2
00003d02: POP
00003d03: DUP1
00003d04: DUP3
00003d05: EQ
00003d06: ISZERO
00003d07: DUP1
00003d08: ISZERO
00003d09: PUSH2 0x3d15
00003d0c: JUMPI
00003d0d: POP
00003d0e: PUSH1 0x00
00003d10: DUP1
00003d11: SHL
00003d12: DUP3
00003d13: EQ
00003d14: ISZERO
00003d15: JUMPDEST
00003d16: SWAP3
00003d17: POP
00003d18: POP
00003d19: POP
00003d1a: SWAP2
00003d1b: SWAP1
00003d1c: POP
00003d1d: JUMP
00003d1e: JUMPDEST
00003d1f: DUP3
00003d20: DUP1
00003d21: SLOAD
00003d22: DUP3
00003d23: DUP3
00003d24: SSTORE
00003d25: SWAP1
00003d26: PUSH1 0x00
00003d28: MSTORE
00003d29: PUSH1 0x20
00003d2b: PUSH1 0x00
00003d2d: KECCAK256
00003d2e: SWAP1
00003d2f: DUP2
00003d30: ADD
00003d31: SWAP3
00003d32: DUP3
00003d33: ISZERO
00003d34: PUSH2 0x3d97
00003d37: JUMPI
00003d38: SWAP2
00003d39: PUSH1 0x20
00003d3b: MUL
00003d3c: DUP3
00003d3d: ADD
00003d3e: JUMPDEST
00003d3f: DUP3
00003d40: DUP2
00003d41: GT
00003d42: ISZERO
00003d43: PUSH2 0x3d96
00003d46: JUMPI
00003d47: DUP3
00003d48: MLOAD
00003d49: DUP3
00003d4a: PUSH1 0x00
00003d4c: PUSH2 0x0100
00003d4f: EXP
00003d50: DUP2
00003d51: SLOAD
00003d52: DUP2
00003d53: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d68: MUL
00003d69: NOT
00003d6a: AND
00003d6b: SWAP1
00003d6c: DUP4
00003d6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d82: AND
00003d83: MUL
00003d84: OR
00003d85: SWAP1
00003d86: SSTORE
00003d87: POP
00003d88: SWAP2
00003d89: PUSH1 0x20
00003d8b: ADD
00003d8c: SWAP2
00003d8d: SWAP1
00003d8e: PUSH1 0x01
00003d90: ADD
00003d91: SWAP1
00003d92: PUSH2 0x3d3e
00003d95: JUMP
00003d96: JUMPDEST
00003d97: JUMPDEST
00003d98: POP
00003d99: SWAP1
00003d9a: POP
00003d9b: PUSH2 0x3da4
00003d9e: SWAP2
00003d9f: SWAP1
00003da0: PUSH2 0x3e28
00003da3: JUMP
00003da4: JUMPDEST
00003da5: POP
00003da6: SWAP1
00003da7: JUMP
00003da8: JUMPDEST
00003da9: DUP3
00003daa: DUP1
00003dab: SLOAD
00003dac: PUSH1 0x01
00003dae: DUP2
00003daf: PUSH1 0x01
00003db1: AND
00003db2: ISZERO
00003db3: PUSH2 0x0100
00003db6: MUL
00003db7: SUB
00003db8: AND
00003db9: PUSH1 0x02
00003dbb: SWAP1
00003dbc: DIV
00003dbd: SWAP1
00003dbe: PUSH1 0x00
00003dc0: MSTORE
00003dc1: PUSH1 0x20
00003dc3: PUSH1 0x00
00003dc5: KECCAK256
00003dc6: SWAP1
00003dc7: PUSH1 0x1f
00003dc9: ADD
00003dca: PUSH1 0x20
00003dcc: SWAP1
00003dcd: DIV
00003dce: DUP2
00003dcf: ADD
00003dd0: SWAP3
00003dd1: DUP3
00003dd2: PUSH1 0x1f
00003dd4: LT
00003dd5: PUSH2 0x3de9
00003dd8: JUMPI
00003dd9: DUP1
00003dda: MLOAD
00003ddb: PUSH1 0xff
00003ddd: NOT
00003dde: AND
00003ddf: DUP4
00003de0: DUP1
00003de1: ADD
00003de2: OR
00003de3: DUP6
00003de4: SSTORE
00003de5: PUSH2 0x3e17
00003de8: JUMP
00003de9: JUMPDEST
00003dea: DUP3
00003deb: DUP1
00003dec: ADD
00003ded: PUSH1 0x01
00003def: ADD
00003df0: DUP6
00003df1: SSTORE
00003df2: DUP3
00003df3: ISZERO
00003df4: PUSH2 0x3e17
00003df7: JUMPI
00003df8: SWAP2
00003df9: DUP3
00003dfa: ADD
00003dfb: JUMPDEST
00003dfc: DUP3
00003dfd: DUP2
00003dfe: GT
00003dff: ISZERO
00003e00: PUSH2 0x3e16
00003e03: JUMPI
00003e04: DUP3
00003e05: MLOAD
00003e06: DUP3
00003e07: SSTORE
00003e08: SWAP2
00003e09: PUSH1 0x20
00003e0b: ADD
00003e0c: SWAP2
00003e0d: SWAP1
00003e0e: PUSH1 0x01
00003e10: ADD
00003e11: SWAP1
00003e12: PUSH2 0x3dfb
00003e15: JUMP
00003e16: JUMPDEST
00003e17: JUMPDEST
00003e18: POP
00003e19: SWAP1
00003e1a: POP
00003e1b: PUSH2 0x3e24
00003e1e: SWAP2
00003e1f: SWAP1
00003e20: PUSH2 0x3e63
00003e23: JUMP
00003e24: JUMPDEST
00003e25: POP
00003e26: SWAP1
00003e27: JUMP
00003e28: JUMPDEST
00003e29: JUMPDEST
00003e2a: DUP1
00003e2b: DUP3
00003e2c: GT
00003e2d: ISZERO
00003e2e: PUSH2 0x3e5f
00003e31: JUMPI
00003e32: PUSH1 0x00
00003e34: DUP2
00003e35: DUP2
00003e36: PUSH2 0x0100
00003e39: EXP
00003e3a: DUP2
00003e3b: SLOAD
00003e3c: SWAP1
00003e3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003e52: MUL
00003e53: NOT
00003e54: AND
00003e55: SWAP1
00003e56: SSTORE
00003e57: POP
00003e58: PUSH1 0x01
00003e5a: ADD
00003e5b: PUSH2 0x3e29
00003e5e: JUMP
00003e5f: JUMPDEST
00003e60: POP
00003e61: SWAP1
00003e62: JUMP
00003e63: JUMPDEST
00003e64: JUMPDEST
00003e65: DUP1
00003e66: DUP3
00003e67: GT
00003e68: ISZERO
00003e69: PUSH2 0x3e7c
00003e6c: JUMPI
00003e6d: PUSH1 0x00
00003e6f: DUP2
00003e70: PUSH1 0x00
00003e72: SWAP1
00003e73: SSTORE
00003e74: POP
00003e75: PUSH1 0x01
00003e77: ADD
00003e78: PUSH2 0x3e64
00003e7b: JUMP
00003e7c: JUMPDEST
00003e7d: POP
00003e7e: SWAP1
00003e7f: JUMP
00003e80: INVALID
00003e81: GASLIMIT
00003e82: MSTORE
00003e83: NUMBER
00003e84: ORIGIN
00003e85: ADDRESS
00003e86: GASPRICE
00003e87: KECCAK256
00003e88: PUSH21 0x72616e7366657220746f20746865207a65726f2061
00003e9e: PUSH5 0x6472657373
00003ea4: GASLIMIT
00003ea5: MSTORE
00003ea6: NUMBER
00003ea7: ORIGIN
00003ea8: ADDRESS
00003ea9: GASPRICE
00003eaa: KECCAK256
00003eab: PUSH3 0x75726e
00003eaf: KECCAK256
00003eb0: PUSH2 0x6d6f
00003eb3: PUSH22 0x6e7420657863656564732062616c616e636545524332
00003eca: ADDRESS
00003ecb: GASPRICE
00003ecc: KECCAK256
00003ecd: PUSH2 0x7070
00003ed0: PUSH19 0x6f766520746f20746865207a65726f20616464
00003ee4: PUSH19 0x657373574158473a20696e70757420616d6f75
00003ef8: PUSH15 0x74206d75737420626520657175616c
00003f08: KECCAK256
00003f09: PUSH16 0x72206c6f776572207468616e20636972
00003f1a: PUSH4 0x756c6174
00003f1f: PUSH10 0x6e6720737570706c792e
00003f2a: GASLIMIT
00003f2b: MSTORE
00003f2c: NUMBER
00003f2d: ORIGIN
00003f2e: ADDRESS
00003f2f: GASPRICE
00003f30: KECCAK256
00003f31: PUSH21 0x72616e7366657220616d6f756e7420657863656564
00003f47: PUSH20 0x2062616c616e6365536166654d6174683a206d75
00003f5c: PUSH13 0x7469706c69636174696f6e206f
00003f6a: PUSH23 0x6572666c6f7745524332303a207472616e736665722061
00003f82: PUSH14 0x6f756e7420657863656564732061
00003f91: PUSH13 0x6c6f77616e6365436f6e747261
00003f9f: PUSH4 0x7420696e
00003fa4: PUSH20 0x74616e63652068617320616c7265616479206265
00003fb9: PUSH6 0x6e20696e6974
00003fc0: PUSH10 0x616c697a656445524332
00003fcb: ADDRESS
00003fcc: GASPRICE
00003fcd: KECCAK256
00003fce: PUSH3 0x75726e
00003fd2: KECCAK256
00003fd3: PUSH7 0x726f6d20746865
00003fdb: KECCAK256
00003fdc: PUSH27 0x65726f206164647265737345524332303a207472616e7366657220
00003ff8: PUSH7 0x726f6d20746865
00004000: KECCAK256
00004001: PUSH27 0x65726f206164647265737345524332303a20617070726f76652066
0000401d: PUSH19 0x6f6d20746865207a65726f2061646472657373
00004031: JUMPI
00004032: COINBASE
00004033: PC
00004034: SELFBALANCE
00004035: GASPRICE
00004036: KECCAK256
00004037: PUSH21 0x6f74616c537570706c79206d75737420657175616c
0000404d: KECCAK256
0000404e: BALANCE
0000404f: ADDRESS
00004050: KECCAK256
00004051: PUSH14 0x696c6c696f6e5361666545524332
00004060: ADDRESS
00004061: GASPRICE
00004062: KECCAK256
00004063: GASLIMIT
00004064: MSTORE
00004065: NUMBER
00004066: ORIGIN
00004067: ADDRESS
00004068: KECCAK256
00004069: PUSH16 0x7065726174696f6e20646964206e6f74
0000407a: KECCAK256
0000407b: PUSH20 0x7563636565645361666545524332303a20617070
00004090: PUSH19 0x6f76652066726f6d206e6f6e2d7a65726f2074
000040a4: PUSH16 0x206e6f6e2d7a65726f20616c6c6f7761
000040b5: PUSH15 0x636545524332303a20646563726561
000040c5: PUSH20 0x656420616c6c6f77616e63652062656c6f77207a
000040da: PUSH6 0x726fa2646970
000040e1: PUSH7 0x73582212209807
000040e9: UNKNOWN(0xAD)
000040ea: DELEGATECALL
000040eb: UNKNOWN(0xB0)
000040ec: UNKNOWN(0xAF)
000040ed: UNKNOWN(0xF7)
000040ee: DUP11
000040ef: UNKNOWN(0xC2)
000040f0: PUSH11 0xab1d7c5e9190cc10d64ef3
000040fc: DUP1
000040fd: UNKNOWN(0x23)
000040fe: DUP7
000040ff: UNKNOWN(0x25)
00004100: UNKNOWN(0xE3)
00004101: SWAP13
00004102: DUP7
00004103: UNKNOWN(0x23)
00004104: PUSH5 0xdd7464736f
0000410a: PUSH13

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xdf23efd9",
            "selector": "0xdf23efd9",
            "calldata_variants": [
                "0xdf23efd9",
                "0xdf23efd90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2fdcc17",
            "selector": "0xe2fdcc17",
            "calldata_variants": [
                "0xe2fdcc17",
                "0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf83ecf99",
            "selector": "0xf83ecf99",
            "calldata_variants": [
                "0xf83ecf99",
                "0xf83ecf990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfe3fbca3",
            "selector": "0xfe3fbca3",
            "calldata_variants": [
                "0xfe3fbca3",
                "0xfe3fbca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2e87561",
            "selector": "0xd2e87561",
            "calldata_variants": [
                "0xd2e87561",
                "0xd2e875610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x72963c6c",
            "selector": "0x72963c6c",
            "calldata_variants": [
                "0x72963c6c",
                "0x72963c6c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 16004,
            "type": "tx_origin_used"
        },
        {
            "pc": 16039,
            "type": "tx_origin_used"
        },
        {
            "pc": 16173,
            "type": "tx_origin_used"
        },
        {
            "pc": 16486,
            "type": "tx_origin_used"
        }
    ]
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c
call_targets: 0xaa76bccaa98d8598992b2ddfc833577af6a672e5
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xaa76bccaa98d8598992b2ddfc833577af6a672e5"
    ],
    "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": "0xdf23efd9",
            "selector": "0xdf23efd9",
            "calldata_variants": [
                "0xdf23efd9",
                "0xdf23efd90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2fdcc17",
            "selector": "0xe2fdcc17",
            "calldata_variants": [
                "0xe2fdcc17",
                "0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf83ecf99",
            "selector": "0xf83ecf99",
            "calldata_variants": [
                "0xf83ecf99",
                "0xf83ecf990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfe3fbca3",
            "selector": "0xfe3fbca3",
            "calldata_variants": [
                "0xfe3fbca3",
                "0xfe3fbca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2e87561",
            "selector": "0xd2e87561",
            "calldata_variants": [
                "0xd2e87561",
                "0xd2e875610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x72963c6c",
            "selector": "0x72963c6c",
            "calldata_variants": [
                "0x72963c6c",
                "0x72963c6c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4425,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4646,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 11407,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [
        {
            "pc": 16004,
            "type": "tx_origin_used"
        },
        {
            "pc": 16039,
            "type": "tx_origin_used"
        },
        {
            "pc": 16173,
            "type": "tx_origin_used"
        },
        {
            "pc": 16486,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 4
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c
call_targets: 0xaa76bccaa98d8598992b2ddfc833577af6a672e5
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xaa76bccaa98d8598992b2ddfc833577af6a672e5"
    ],
    "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": "0xdf23efd9",
            "selector": "0xdf23efd9",
            "calldata_variants": [
                "0xdf23efd9",
                "0xdf23efd90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2fdcc17",
            "selector": "0xe2fdcc17",
            "calldata_variants": [
                "0xe2fdcc17",
                "0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf83ecf99",
            "selector": "0xf83ecf99",
            "calldata_variants": [
                "0xf83ecf99",
                "0xf83ecf990000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfe3fbca3",
            "selector": "0xfe3fbca3",
            "calldata_variants": [
                "0xfe3fbca3",
                "0xfe3fbca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd2e87561",
            "selector": "0xd2e87561",
            "calldata_variants": [
                "0xd2e87561",
                "0xd2e875610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdd62ed3e",
            "selector": "0xdd62ed3e",
            "calldata_variants": [
                "0xdd62ed3e",
                "0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x72963c6c",
            "selector": "0x72963c6c",
            "calldata_variants": [
                "0x72963c6c",
                "0x72963c6c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4425,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4646,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 11407,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": [
        {
            "pc": 16004,
            "type": "tx_origin_used"
        },
        {
            "pc": 16039,
            "type": "tx_origin_used"
        },
        {
            "pc": 16173,
            "type": "tx_origin_used"
        },
        {
            "pc": 16486,
            "type": "tx_origin_used"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 18
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 15
}