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

Analysis Run

019bb377-698f-73e1-ada8-09688a3a56e6

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 12, 2026 6:28 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
39797 artifact.fetch complete 1 / 3 3 months ago
39798 proxy.resolve complete 1 / 3 3 months ago
39799 tool.cast_disasm complete 1 / 3 3 months ago
39800 analysis.bundle complete 1 / 3 3 months ago
39801 capability.graph complete 1 / 3 3 months ago
39802 detector.run complete 1 / 3 3 months ago
39803 validation.fork complete 1 / 3 3 months ago
39952 report.consolidate complete 1 / 6 3 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: no
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
1
No findings?
no
Summary
Bytecode shows low-level CALLs with computed targets/values and no explicit guard metadata; confidence is limited without source, so findings focus on potential unsafe external calls.
View stdout
{"no_findings":false,"summary":"Bytecode shows low-level CALLs with computed targets/values and no explicit guard metadata; confidence is limited without source, so findings focus on potential unsafe external calls.","findings":[{"severity":"low","category":"other","title":"Low-level CALL with computed target/value may allow unintended external calls or ETH transfers","exploit_scenario":"If any public/external function can influence the CALL target or value (e.g., via calldata or mutable storage without strict access control), an attacker could trigger the CALL to an arbitrary address and/or send ETH out of the contract. This could be abused to drain ETH or execute unexpected external logic. Bytecode evidence is incomplete; the target might be a fixed token/known address and value might be zero in practice.","recommendation":"Confirm the CALL target is immutable or tightly validated, and ensure any setters are access-controlled. If ETH transfers are intended, use checks-effects-interactions (and/or a reentrancy guard) and validate return data where applicable.","evidence":"Detector flagged untrusted CALL target/value and possible ETH value transfer; callsites at pc 0x07b2 and 0x147c show computed target usage with CALL. No guards detected in heuristics for these sinks.","locations":["pc:0x7b2","pc:0x147c"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-r1gek8w5
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb387-242c-7fa0-81af-d21b6ae3d1b2
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers

thinking
**Reading bytecode bundle**
exec
/bin/bash -lc ls in /tmp/codex-r1gek8w5 succeeded in 6ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-r1gek8w5 succeeded in 7ms:
{
  "analysis_artifact": {
    "address": "0xf9742810d596769d6cb54799eb1e2ccda03aeb9c",
    "artifact_hash": "0xaa706da4e87d6cfc921774b2ed79f220a547b2b2b9335eabda19222d8b315ded",
    "artifact_json": {
      "auth": {
        "guards": []
      },
      "basic_blocks": [
        {
          "end_pc": 12,
          "hash": "0x9f8ccb418e8de572c2da548432a224657d4d8e5cac17c1c1aa7b9dc44f28f5a6",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "PUSH1",
            "CALLDATASIZE",
            "LT",
            "PUSH2",

thinking
**Analyzing bytecode callsites and access control**

I'm planning to investigate suspicious CALL instructions at specific program counters by parsing large JSON artifacts with Python scripts to understand call targets, check for self-calls versus untrusted external calls, and assess potential reentrancy and access control risks indicated by presence or absence of ownership selectors in the bytecode.
exec
/bin/bash -lc "python - <<'PY'
import json
import bisect
from pathlib import Path
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
art=j['analysis_artifact']['artifact_json']
# find basic block containing pc 1970
bbs=art.get('basic_blocks',[])
# Some entries are not full? But there are full opcodes maybe for early blocks. We only need start/end
for bb in bbs:
    if isinstance(bb,dict) and bb.get('start_pc') is not None and bb.get('end_pc') is not None:
        if bb['start_pc']<=1970<=bb['end_pc']:
            print('bb', bb.get('start_pc'), bb.get('end_pc'))
            print(bb.get('opcodes')[:50])
            break
else:
    print('not found')
# also for 5244
for bb in bbs:
    if isinstance(bb,dict) and bb.get('start_pc') is not None and bb.get('end_pc') is not None:
        if bb['start_pc']<=5244<=bb['end_pc']:
            print('bb5244', bb.get('start_pc'), bb.get('end_pc'))
            print(bb.get('opcodes')[:80])
            break
PY" in /tmp/codex-r1gek8w5 succeeded in 82ms:
bb 1914 1983
['JUMPDEST', 'OP_90', 'OP_91', 'SSTORE', 'POP', 'POP', 'CALLER', 'PUSH0', 'OP_81', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'OP_80', 'OP_83', 'SHA3', 'OP_89', 'OP_84', 'MSTORE', 'OP_90', 'OP_91', 'MSTORE', 'OP_80', 'OP_82', 'SHA3', 'OP_80', 'SLOAD', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'OR', 'OP_90', 'SSTORE', 'MLOAD', 'OP_90', 'OP_91', 'OP_90', 'OP_85', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87']
bb5244 5229 5249
['JUMPDEST', 'PUSH0', 'PUSH0', 'PUSH1', 'PUSH0', 'OP_84', 'MLOAD', 'PUSH1', 'OP_86', 'ADD', 'PUSH0', 'OP_88', 'GAS', 'CALL', 'OP_80', 'PUSH2', 'JUMPI']

thinking
**Investigating bytecode presence**
exec
/bin/bash -lc 'rg -n "bytecode" BYTECODE_BUNDLE.json' in /tmp/codex-r1gek8w5 succeeded in 8ms:
10469:    "runtime_bytecode": {
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
rb=j['analysis_artifact']['artifact_json'].get('runtime_bytecode')
print(type(rb))
print(rb.keys())
print('length', len(rb.get('bytecode','')))
PY" in /tmp/codex-r1gek8w5 exited 1 in 41ms:
<class 'NoneType'>
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
AttributeError: 'NoneType' object has no attribute 'keys'

thinking
**Inspecting runtime_bytecode**
exec
/bin/bash -lc "python - <<'PY'
import json, itertools
p='/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'
# read limited
with open(p) as f:
    for i,line in zip(range(10460,10480), f):
        pass
# Actually, use sed
PY" in /tmp/codex-r1gek8w5 succeeded in 81ms:


thinking
**Choosing text-processing tool**
exec
/bin/bash -lc "sed -n '10460,10490p' BYTECODE_BUNDLE.json" in /tmp/codex-r1gek8w5 succeeded in 6ms:
      },
      "optimizer_enabled": false,
      "optimizer_runs": 0,
      "proxy_evidence": {
        "status": "not_proxy"
      }
    },
    "implementation_address": null,
    "is_proxy": false,
    "runtime_bytecode": {
      "full": "0x6080604052600436106100fa575f3560e01c80638252097d11610092578063b293109611610062578063b2931096146102c8578063b5d5b5fa14610311578063b62e1efc1461035f578063dc8d31b61461038a578063f2fde38b1461039f575f5ffd5b80638252097d14610218578063842e29811461026d5780638bdf67f2146102995780638da5cb5b146102ac575f5ffd5b8063715018a6116100cd578063715018a61461018557806371b63aae146101995780637b0472f0146101e4578063817b1cd214610203575f5ffd5b80630962ef79146100fe5780630cc2b37e1461011f5780632e17de78146101475780633c7d0d9614610166575b5f5ffd5b348015610109575f5ffd5b5061011d6101183660046114d9565b6103be565b005b34801561012a575f5ffd5b5061013460065481565b6040519081526020015b60405180910390f35b348015610152575f5ffd5b5061011d6101613660046114d9565b610878565b348015610171575f5ffd5b5061011d6101803660046114d9565b610ac1565b348015610190575f5ffd5b5061011d610b60565b3480156101a4575f5ffd5b506101cc7f000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc81565b6040516001600160a01b03909116815260200161013e565b3480156101ef575f5ffd5b5061011d6101fe3660046114f0565b610b73565b34801561020e575f5ffd5b5061013460075481565b348015610223575f5ffd5b506102526102323660046114d9565b60036020525f908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161013e565b348015610278575f5ffd5b5061028c610287366004611526565b610da9565b60405161013e919061153f565b61011d6102a73660046114d9565b610e57565b3480156102b7575f5ffd5b505f546001600160a01b03166101cc565b3480156102d3575f5ffd5b506103016102e23660046115bd565b600560209081525f928352604080842090915290825290205460ff1681565b604051901515815260200161013e565b34801561031c575f5ffd5b5061033061032b3660046115bd565b610f49565b6040805196875260208701959095529385019290925260608401521515608083015260a082015260c00161013e565b34801561036a575f5ffd5b506101346103793660046114d9565b60046020525f908152604090205481565b348015610395575f5ffd5b5061013460085481565b3480156103aa575f5ffd5b5061011d6103b9366004611526565b610f9f565b6103c6610fd9565b6103ce611003565b60065481111561041d5760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081c995dd85c99081c195c9a5bd9605a1b60448201526064015b60405180910390fd5b5f8181526003602052604090206002015442101561047d5760405162461bcd60e51b815260206004820152601760248201527f52657761726420706572696f64206e6f7420656e6465640000000000000000006044820152606401610414565b335f90815260056020908152604080832084845290915290205460ff16156104e75760405162461bcd60e51b815260206004820152601f60248201527f5265776172647320636c61696d656420666f72207468697320706572696f64006044820152606401610414565b335f908152600260205260408120548190815b8181101561062457335f908152600260205260408120805483908110610522576105226115e5565b5f9182526020909120600690910201600481015490915060ff16158015610570575060035f8781526020019081526020015f20600201548160030154826002015461056d919061160d565b11155b80156105b1575060035f8781526020019081526020015f20600201548160030154826001015483600201546105a5919061160d565b6105af919061160d565b115b1561061b575f62278d008260010154146105f6576276a7008260010154146105ef5762ed4e008260010154146105e85760046105f9565b60036105f9565b60026105f9565b60015b60ff16905080825f015461060d9190611626565b610617908761160d565b9550505b506001016104fa565b505f83116106745760405162461bcd60e51b815260206004820152601e60248201527f4e6f20656c696769626c65207374616b657320666f72207265776172647300006044820152606401610414565b5f84815260046020526040902054806106cf5760405162461bcd60e51b815260206004820152601f60248201527f52657761726420646973747269627574696f6e206e6f742073746172746564006044820152606401610414565b5f8581526003602052604090205481906106ea908690611626565b6106f4919061163d565b92505f831161073b5760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b6044820152606401610414565b5f858152600360205260408120805485929061075890849061165c565b90915550505f858152600460205260408120805486929061077a90849061165c565b9091555050335f818152600560209081526040808320898452909152808220805460ff191660011790555190919085908381818185875af1925050503d805f81146107e0576040519150601f19603f3d011682016040523d82523d5f602084013e6107e5565b606091505b505090508061082c5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610414565b604080518781526020810186905233917ff01da32686223933d8a18a391060918c7f11a3648639edd87ae013e2e2731743910160405180910390a2505050505061087560018055565b50565b610880610fd9565b335f9081526002602052604090205481106108d35760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e6e8c2d6ca40d2dcc8caf606b1b6044820152606401610414565b335f9081526002602052604081208054839081106108f3576108f36115e5565b5f9182526020909120600690910201600481015490915060ff161561094e5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903bb4ba34323930bbb760791b6044820152606401610414565b610958815f611124565b8054600182015460028301545f92916109709161160d565b4210156109d75762278d008360010154146109b6576276a7008360010154146109af5762ed4e008360010154146109a857600a6109b9565b600c6109b9565b600d6109b9565b600f5b60ff16915060646109ca8383611626565b6109d4919061163d565b91505b5f6109e2838361165c565b90508160075f8282546109f5919061165c565b909155505060048401805460ff191660011790558215610a4557610a456001600160a01b037f000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc1661dead856112e3565b610a796001600160a01b037f000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc1633836112e3565b604080518381526020810185905233917f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e910160405180910390a25050505061087560018055565b610ac9611347565b620697808110158015610adf5750621a5e008111155b610b245760405162461bcd60e51b81526020600482015260166024820152755468726573686f6c64206f7574206f662072616e676560501b6044820152606401610414565b60088190556040518181527fadebce7a5ac7f8970d9f38c5d050b091f0210351f4dcf86301867a4214abfb92906020015b60405180910390a150565b610b68611347565b610b715f611373565b565b610b7b610fd9565b62278d00811480610b8e57506276a70081145b80610b9b575062ed4e0081145b80610ba957506301da9c0081145b610bee5760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081b1bd8dacb5a5b881c195c9a5bd960521b6044820152606401610414565b5f8211610c355760405162461bcd60e51b815260206004820152601560248201527410d85b9b9bdd081cdd185ad9480c08185b5bdd5b9d605a1b6044820152606401610414565b610c6a6001600160a01b037f000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc163330856113c2565b610c72611003565b335f908152600260208181526040808420815160c0810183528781528084018781524293820193845260085460608301908152608083018881526006805460a08601908152865460018082018955978c52988b209551989091029094019687559151938601939093559251948401949094555160038301555160048201805460ff1916911515919091179055905160059091015560078054849290610d1890849061160d565b9091555050335f9081526002602052604090208054610d619190610d3e9060019061165c565b81548110610d4e57610d4e6115e5565b905f5260205f2090600602016001611124565b604080518381526020810183905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a2610da560018055565b5050565b6001600160a01b0381165f908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610e4c575f8481526020908190206040805160c08101825260068602909201805483526001808201548486015260028201549284019290925260038101546060840152600481015460ff16151560808401526005015460a08301529083529092019101610de0565b505050509050919050565b610e5f611347565b610e67611003565b5f3411610ea95760405162461bcd60e51b815260206004820152601060248201526f139bc81155120819195c1bdcda5d195960821b6044820152606401610414565b6006548114610ef25760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081c995dd85c99081c195c9a5bd9605a1b6044820152606401610414565b5f8181526003602052604081208054349290610f0f90849061160d565b9091555050604080518281523460208201527fbf2ebcc991369bcf488ef5738352a5d8998bd7a2c138128ca91ec96afe123fd69101610b55565b6002602052815f5260405f208181548110610f62575f80fd5b5f91825260209091206006909102018054600182015460028301546003840154600485015460059095015493965091945092909160ff9091169086565b610fa7611347565b6001600160a01b038116610fd057604051631e4fbdf760e01b81525f6004820152602401610414565b61087581611373565b600260015403610ffc57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6006545f908152600360205260409020600201544210610b7157600680549081905f61102e8361166f565b919050555060405180606001604052805f815260200160035f6001600654611056919061165c565b81526020019081526020015f2060020154815260200162278d0060035f6001600654611082919061165c565b81526020019081526020015f206002015461109d919061160d565b9052600680545f9081526003602090815260408083208551815591850151600180840191909155948101516002928301559254808352918390209384015493015491517f629c7b02d1ce7802556d2aa33f6af027bafe0d096664562d0ecf40b6bdc33c8f93610b559386939293845260208401929092526040830152606082015260800190565b5f62278d00836001015414611164576276a70083600101541461115d5762ed4e00836001015414611156576004611167565b6003611167565b6002611167565b60015b60ff1690505f81845f015461117c9190611626565b90505f62278d008560010154611192919061163d565b90505f8186600501546111a5919061160d565b6111b090600161160d565b60058701549091505b8181116112da575f6111ca82611401565b9050861580156111da5750804210155b156111e557506112c8565b80886003015489600201546111fa919061160d565b11158015611229575080886003015489600101548a6002015461121d919061160d565b611227919061160d565b115b156112c657861561125c575f828152600460205260408120805487929061125190849061160d565b9091555061127f9050565b5f828152600460205260408120805487929061127990849061165c565b90915550505b5f82815260046020908152604091829020548251858152918201527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a15b505b806112d28161166f565b9150506111b9565b50505050505050565b6040516001600160a01b0383811660248301526044820183905261134291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061146d565b505050565b5f546001600160a01b03163314610b715760405163118cdaa760e01b8152336004820152602401610414565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0384811660248301528381166044830152606482018390526113fb9186918216906323b872dd90608401611310565b50505050565b5f600654821161142057505f9081526003602052604090206002015490565b5f805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92f015461145762278d0084611626565b611461908261160d565b9392505050565b919050565b5f5f60205f8451602086015f885af18061148c576040513d5f823e3d81fd5b50505f513d915081156114a35780600114156114b0565b6001600160a01b0384163b155b156113fb57604051635274afe760e01b81526001600160a01b0385166004820152602401610414565b5f602082840312156114e9575f5ffd5b5035919050565b5f5f60408385031215611501575f5ffd5b50508035926020909101359150565b80356001600160a01b0381168114611468575f5ffd5b5f60208284031215611536575f5ffd5b61146182611510565b602080825282518282018190525f918401906040840190835b818110156115b25783518051845260208101516020850152604081015160408501526060810151606085015260808101511515608085015260a081015160a08501525060c083019250602084019350600181019050611558565b509095945050505050565b5f5f604083850312156115ce575f5ffd5b6115d783611510565b946020939093013593505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611620576116206115f9565b92915050565b8082028115828204841417611620576116206115f9565b5f8261165757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611620576116206115f9565b5f60018201611680576116806115f9565b506001019056fea26469706673582212208557c59427298dd0366d43c7b670b8ba75c1ef4f64e06f789d1f01b6661ba40b64736f6c634300081c0033",
      "head": null,
      "length": 11644,
      "tail": null,
      "truncated": false
    },
    "verified_source": false
  },
  "capability_graph": {
    "address": "0xf9742810d596769d6cb54799eb1e2ccda03aeb9c",

thinking
**Analyzing runtime bytecode calls**
exec
/bin/bash -lc "python - <<'PY'
import json
from binascii import unhexlify
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['analysis_artifact']['artifact_json']['runtime_bytecode']['full']
if code.startswith('0x'): code=code[2:]
bytecode=bytes.fromhex(code)
# opcode table
opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
opnames.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
opnames.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
opnames.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
# base
base = {
0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
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',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}
opnames.update(base)

# disassemble around pc range

def disasm(start,end):
    pc=0
    out=[]
    while pc < len(bytecode):
        op=bytecode[pc]
        name=opnames.get(op, f'OP_{op:02x}')
        if pc>=start and pc<=end:
            if 0x60<=op<=0x7f:
                n=op-0x5f
                data=bytecode[pc+1:pc+1+n]
                out.append((pc,name,data.hex()))
                pc+=1+n
            else:
                out.append((pc,name,''))
                pc+=1
        else:
            if 0x60<=op<=0x7f:
                pc+=1+(op-0x5f)
            else:
                pc+=1
        if pc> end and pc>start:
            # but continue to ensure we don't miss mid push
            pass
    return out

for rng in [(1930,1985),(5230,5255)]:
    print('---',rng)
    for pc,name,data in disasm(*rng):
        if pc<rng[0] or pc>rng[1]:
            continue
        if data:
            print(f'{pc:04x} {name} 0x{data}')
        else:
            print(f'{pc:04x} {name}')
PY" in /tmp/codex-r1gek8w5 exited 1 in 32ms:
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
KeyError: 'runtime_bytecode'

thinking
**Inspecting JSON structure for keys**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
print(j.keys())
PY" in /tmp/codex-r1gek8w5 succeeded in 29ms:
dict_keys(['analysis_artifact', 'analysis_run', 'artifact', 'capability_graph', 'detector_findings', 'heuristics_summary'])

thinking
**Exploring runtime_bytecode location**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
print(j['analysis_run'].keys())
print(j['analysis_run'].get('runtime_bytecode', None) is not None)
print(j['analysis_run'].get('runtime_bytecode', {}).keys() if isinstance(j['analysis_run'].get('runtime_bytecode'), dict) else None)
PY" in /tmp/codex-r1gek8w5 succeeded in 29ms:
dict_keys(['address', 'block_number', 'chain_id', 'child_links', 'created_at', 'id', 'parent_links', 'status', 'updated_at'])
False
None

thinking
**Checking artifact keys for runtime_bytecode**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
print(j['artifact'].keys())
print(j['artifact'].get('runtime_bytecode') is not None)
print(j['artifact'].get('runtime_bytecode', {}).keys() if isinstance(j['artifact'].get('runtime_bytecode'), dict) else None)
PY" in /tmp/codex-r1gek8w5 succeeded in 27ms:
dict_keys(['codehash', 'compiler_json', 'implementation_address', 'is_proxy', 'runtime_bytecode', 'verified_source'])
True
dict_keys(['full', 'head', 'length', 'tail', 'truncated'])

thinking
**Locating runtime bytecode**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full']
if code.startswith('0x'): code=code[2:]
bytecode=bytes.fromhex(code)
# opcode table
opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
opnames.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
opnames.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
opnames.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base = {
0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
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',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}
opnames.update(base)

def disasm(start,end):
    pc=0
    out=[]
    while pc < len(bytecode):
        op=bytecode[pc]
        name=opnames.get(op, f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f
            data=bytecode[pc+1:pc+1+n]
            if start<=pc<=end:
                out.append((pc,name,data.hex()))
            pc+=1+n
        else:
            if start<=pc<=end:
                out.append((pc,name,''))
            pc+=1
    return out

for rng in [(1930,1985),(5230,5255)]:
    print('---',rng)
    for pc,name,data in disasm(*rng):
        if data:
            print(f'{pc:04x} {name} 0x{data}')
        else:
            print(f'{pc:04x} {name}')
PY" in /tmp/codex-r1gek8w5 succeeded in 36ms:
--- (1930, 1985)
078a DUP2
078b MSTORE
078c PUSH1 0x40
078e DUP1
078f DUP4
0790 SHA3
0791 DUP10
0792 DUP5
0793 MSTORE
0794 SWAP1
0795 SWAP2
0796 MSTORE
0797 DUP1
0798 DUP3
0799 SHA3
079a DUP1
079b SLOAD
079c PUSH1 0xff
079e NOT

thinking
**Analyzing CALL instruction context**

I’m examining the call instructions at two program counters to understand their targets and parameters. Since calls rely on the stack without explicit symbolic analysis, I’m inferring possible token contract calls by inspecting surrounding opcodes, constants, and memory operations. I’m planning to expand disassembly ranges around these calls and look for PUSH20 constants nearby to identify token addresses or contract calls related to transfers. This should help clarify if these low-level calls correspond to safe ERC20 transfers or other operations.
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full'][2:]
bytecode=bytes.fromhex(code)
# opcode table
opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
opnames.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
opnames.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
opnames.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base = {
0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
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',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}
opnames.update(base)

def disasm(start,end):
    pc=0
    out=[]
    while pc < len(bytecode):
        op=bytecode[pc]
        name=opnames.get(op, f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f
            data=bytecode[pc+1:pc+1+n]
            if start<=pc<=end:
                out.append((pc,name,data.hex()))
            pc+=1+n
        else:
            if start<=pc<=end:
                out.append((pc,name,''))
            pc+=1
    return out

start=0x740; end=0x820
for pc,name,data in disasm(start,end):
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-r1gek8w5 succeeded in 43ms:
0740 PUSH1 0x03
0742 PUSH1 0x20
0744 MSTORE
0745 PUSH1 0x40
0747 DUP2
0748 SHA3
0749 DUP1
074a SLOAD
074b DUP6
074c SWAP3
074d SWAP1
074e PUSH2 0x0758
0751 SWAP1
0752 DUP5
0753 SWAP1
0754 PUSH2 0x165c
0757 JUMP
0758 JUMPDEST
0759 SWAP1
075a SWAP2

thinking
**Analyzing low-level call safety in reward claim**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full'][2:]
bytecode=bytes.fromhex(code)
# opcode table
def opnames():
    opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
    opnames.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
    opnames.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
    opnames.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
    base = {
    0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
    0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
    0x20:'SHA3',
    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',
    0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
    0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
    0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
    }
    opnames.update(base)
    return opnames
ops=opnames()

def disasm(start,end):
    pc=0
    out=[]
    while pc < len(bytecode):
        op=bytecode[pc]
        name=ops.get(op, f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f
            data=bytecode[pc+1:pc+1+n]
            if start<=pc<=end:
                out.append((pc,name,data.hex()))
            pc+=1+n
        else:
            if start<=pc<=end:
                out.append((pc,name,''))
            pc+=1
    return out

start=0x680; end=0x740
for pc,name,data in disasm(start,end):
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-r1gek8w5 succeeded in 55ms:
0680 SWAP1
0681 SHA3
0682 SLOAD
0683 DUP1
0684 PUSH2 0x06cf
0687 JUMPI
0688 PUSH1 0x40
068a MLOAD
068b PUSH3 0x461bcd
068f PUSH1 0xe5
0691 SHL
0692 DUP2
0693 MSTORE
0694 PUSH1 0x20
0696 PUSH1 0x04
0698 DUP3
0699 ADD
069a MSTORE
069b PUSH1 0x1f
069d PUSH1 0x24

thinking
**Analyzing potential external call targets**

I'm piecing together whether the call targets are constant addresses or user-controlled, focusing on evidence from storage slots and call patterns. It looks like calls might target a constant reward token address, with some low-level calls resembling SafeERC20 transfers that handle return data checks, but I'll verify the return value handling in subsequent disassembly to be sure.
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full'][2:]
bytecode=bytes.fromhex(code)
# build op table
opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
opnames.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
opnames.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
opnames.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
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',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
opnames.update(base)

def disasm(start,end):
    pc=0
    out=[]
    while pc < len(bytecode):
        op=bytecode[pc]
        name=opnames.get(op, f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f
            data=bytecode[pc+1:pc+1+n]
            if start<=pc<=end:
                out.append((pc,name,data.hex()))
            pc+=1+n
        else:
            if start<=pc<=end:
                out.append((pc,name,''))
            pc+=1
    return out

start=0x7e0; end=0x84a
for pc,name,data in disasm(start,end):
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-r1gek8w5 succeeded in 37ms:
07e0 JUMPDEST
07e1 PUSH1 0x60
07e3 SWAP2
07e4 POP
07e5 JUMPDEST
07e6 POP
07e7 POP
07e8 SWAP1
07e9 POP
07ea DUP1
07eb PUSH2 0x082c
07ee JUMPI
07ef PUSH1 0x40
07f1 MLOAD
07f2 PUSH3 0x461bcd
07f6 PUSH1 0xe5
07f8 SHL
07f9 DUP2
07fa MSTORE
07fb PUSH1 0x20

thinking
**Analyzing call success and revert logic**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full'][2:]
bytecode=bytes.fromhex(code)
# opnames
opnames = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
opnames.update({i: f'DUP{i-0x7f}' for i in range(0x80,0x90)})
opnames.update({i: f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
opnames.update({i: f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',
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',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
opnames.update(base)

def disasm(start,end):
    pc=0
    out=[]
    while pc < len(bytecode):
        op=bytecode[pc]
        name=opnames.get(op, f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f
            data=bytecode[pc+1:pc+1+n]
            if start<=pc<=end:
                out.append((pc,name,data.hex()))
            pc+=1+n
        else:
            if start<=pc<=end:
                out.append((pc,name,''))
            pc+=1
    return out

for pc,name,data in disasm(0x1440,0x14b0):
    if data:
        print(f'{pc:04x} {name} 0x{data}')
    else:
        print(f'{pc:04x} {name}')
PY" in /tmp/codex-r1gek8w5 succeeded in 30ms:
144a SLOAD
144b PUSH2 0x1457
144e PUSH3 0x278d00
1452 DUP5
1453 PUSH2 0x1626
1456 JUMP
1457 JUMPDEST
1458 PUSH2 0x1461
145b SWAP1
145c DUP3
145d PUSH2 0x160d
1460 JUMP
1461 JUMPDEST
1462 SWAP4
1463 SWAP3
1464 POP
1465 POP
1466 POP
1467 JUMP
1468 JUMPDEST

thinking
**Analyzing CALL instructions and ETH value transfers**

I'm examining the safe token transfer helper using low-level CALL and extcodesize checks, trying to determine if and where ETH might be transferred via calls with nonzero value—especially around bytecode offset 0x7b2. Since the contract mostly rejects nonzero CALLVALUE, ETH may come from forced transfers or selfdestruct. To clarify if the CALL sends value or just token calls, I'm considering implementing symbolic stack tracking from function entry to CALL to see if the call value is truly zero or computed dynamically. This could reveal whether some calls send ETH out despite non-payable function constraints. I'll look for JUMPDEST markers near call to isolate the function for stack analysis.
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full'][2:]
bytecode=bytes.fromhex(code)
# find JUMPDESTs around 0x600-0x7b2
for pc,b in enumerate(bytecode):
    if b==0x5b and 0x600<=pc<=0x7b2:
        print(hex(pc))
PY" in /tmp/codex-r1gek8w5 succeeded in 39ms:
0x60d
0x617
0x61b
0x624
0x674
0x6cf
0x6ea
0x6f4
0x73b
0x758
0x77a

thinking
**Analyzing external calls and reentrancy risks**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full']
print('a9059cbb' in code)
print('23b872dd' in code)
# find offsets of a9059cbb in bytecode
code_hex=code[2:]
idx=code_hex.find('a9059cbb')
print('idx', idx)
# convert hex index to pc (each byte 2 hex chars)
if idx"'!=-1:
    pc=idx//2
    print('"'pc', hex(pc))
# find other occurrences
start=0
while True:
    idx=code_hex.find('a9059cbb', start)
    if idx==-1: break
    print('pc', hex(idx//2))
    start=idx+1
PY" in /tmp/codex-r1gek8w5 succeeded in 29ms:
True
True
idx 9744
pc 0x1308
pc 0x1308

thinking
**Analyzing call locations for method selectors**
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code_hex=j['artifact']['runtime_bytecode']['full'][2:]
idx=code_hex.find('23b872dd')
print('idx', idx, 'pc', hex(idx//2))
PY" in /tmp/codex-r1gek8w5 succeeded in 31ms:
idx 10206 pc 0x13ef

thinking
**Analyzing suspicious CALL instruction**

I'm exploring the call at 0x7b2 that lacks a typical function selector, suspecting it might be transferring ETH directly rather than calling a token transfer function. To understand if the call targets the caller and to assess reentrancy risks, I'm planning a symbolic stack simulation from 0x73b to 0x7b2 to track stack contents like CALLER and call parameters, aiming to clarify the call's behavior despite complex control flow.
exec
/bin/bash -lc "python - <<'PY'
import json
j=json.load(open('/tmp/codex-r1gek8w5/BYTECODE_BUNDLE.json'))
code=j['artifact']['runtime_bytecode']['full'][2:]
bytecode=bytes.fromhex(code)
# decode opcodes between start and end
start=0x73b; end=0x7b2
# create disasm with pc
ops={}
# op length
pc=0
ops_list=[]
while pc < len(bytecode):
    op=bytecode[pc]
    name=None
    if 0x60<=op<=0x7f:
        n=op-0x5f
        data=bytecode[pc+1:pc+1+n]
        name=f'PUSH{n}'
        if start<=pc<=end:
            ops_list.append((pc,name,data))
        pc+=1+n
    else:
        name=op
        if start<=pc<=end:
            ops_list.append((pc,op,None))
        pc+=1

# map opcodes to names and stack effects
opname_map={
0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',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',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf1:'CALL'}

# Stack effect for subset
stack_effect={
'STOP':(0,0), 'ADD':(2,1), 'SUB':(2,1), 'MUL':(2,1), 'DIV':(2,1), 'MOD':(2,1),
'LT':(2,1), 'GT':(2,1), 'EQ':(2,1), 'ISZERO':(1,1), 'AND':(2,1), 'OR':(2,1), 'NOT':(1,1),
'SHL':(2,1), 'SHR':(2,1), 'SHA3':(2,1),
'POP':(1,0), 'MLOAD':(1,1), 'MSTORE':(2,0), 'SLOAD':(1,1), 'SSTORE':(2,0),
'JUMP':(1,0), 'JUMPI':(2,0), 'CALLER':(0,1), 'CALLVALUE':(0,1), 'CALLDATASIZE':(0,1), 'CALLDATALOAD':(1,1),
'GAS':(0,1), 'RETURNDATASIZE':(0,1), 'CALL':(7,1),
}
# DUP/SWAP effects
def is_dup(name):
    return name.startswith('DUP')
def is_swap(name):
    return name.startswith('SWAP')

# start with stack of unknowns size 12
stack=[f'unk{i}' for i in range(12)]  # bottom to top

# function to pop

def popn(n):
    global stack
    if n>len(stack):
        # extend with unknowns at bottom
        stack=[f'unkX{len(stack)+i}' for i in range(n-len(stack))]+stack
    vals=[stack.pop() for _ in range(n)]
    return vals

def push(v):
    stack.append(v)

# simulate
for pc,op,data in ops_list:
    if isinstance(op,str) and op.startswith('PUSH'):
        # push constant
        val=int.from_bytes(data,'big') if data else 0
        push(f'const({val})')
        continue
    name=opname_map.get(op, f'OP_{op:02x}')
    if name=='JUMPDEST':
        continue
    if is_dup(name):
        n=int(name[3:])
        if n>len(stack):
            stack=[f'unkX{len(stack)+i}' for i in range(n-len(stack))]+stack
        push(stack[-n])
        continue
    if is_swap(name):
        n=int(name[4:])
        if n>=len(stack):
            stack=[f'unkX{len(stack)+i}' for i in range(n-len(stack)+1)]+stack
        # swap top with nth element
        stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
        continue
    if name=='CALLER':
        push('CALLER')
        continue
    # default stack effect
    popc,pushc=stack_effect.get(name,(0,0))
    if popc:
        vals=popn(popc)
    else:
        vals=[]
    # for some ops, output may depend; we mark unknown
    if pushc:
        if name in ('CALL','SLOAD','MLOAD','CALLDATALOAD'):
            push(f'{name}_ret')
        elif name=='GAS':
            push('GAS')
        elif name=='RETURNDATASIZE':
            push('RETURNDATASIZE')
        else:
            push(f'{name}_ret')
    # print at CALL
    if name=='CALL':
        # stack after call has success on top, but we care about inputs that were popped
        # vals contains popped items in order top-first (due to popn)
        # CALL pops: gas, to, value, in_offset, in_size, out_offset, out_size (top-first)
        labels=['gas','to','value','in_offset','in_size','out_offset','out_size']
        popped=list(vals)
        print('CALL at',hex(pc),'popped(top->bottom):',popped)
        # show mapping
        for lab,val in zip(labels,popped):
            print(' ',lab,':',val)
PY" in /tmp/codex-r1gek8w5 succeeded in 31ms:
CALL at 0x7b2 popped(top->bottom): ['GAS', 'MLOAD_ret', 'unkX6', 'unkX5', 'unkX4', 'unkX3', 'unkX2']
  gas : GAS
  to : MLOAD_ret
  value : unkX6
  in_offset : unkX5
  in_size : unkX4
  out_offset : unkX3
  out_size : unkX2

thinking
**Analyzing low-level CALL usage and risks**
codex
{"no_findings":false,"summary":"Bytecode shows low-level CALLs with computed targets/values and no explicit guard metadata; confidence is limited without source, so findings focus on potential unsafe external calls.","findings":[{"severity":"low","category":"other","title":"Low-level CALL with computed target/value may allow unintended external calls or ETH transfers","exploit_scenario":"If any public/external function can influence the CALL target or value (e.g., via calldata or mutable storage without strict access control), an attacker could trigger the CALL to an arbitrary address and/or send ETH out of the contract. This could be abused to drain ETH or execute unexpected external logic. Bytecode evidence is incomplete; the target might be a fixed token/known address and value might be zero in practice.","recommendation":"Confirm the CALL target is immutable or tightly validated, and ensure any setters are access-controlled. If ETH transfers are intended, use checks-effects-interactions (and/or a reentrancy guard) and validate return data where applicable.","evidence":"Detector flagged untrusted CALL target/value and possible ETH value transfer; callsites at pc 0x07b2 and 0x147c show computed target usage with CALL. No guards detected in heuristics for these sinks.","locations":["pc:0x7b2","pc:0x147c"]}]}
tokens used
87,186
Metadata
{
    "codex": {
        "ran_at": "2026-01-12T18:51:48.577098+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 11644,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode shows low-level CALLs with computed targets/values and no explicit guard metadata; confidence is limited without source, so findings focus on potential unsafe external calls.",
    "raw_final": {
        "summary": "Bytecode shows low-level CALLs with computed targets/values and no explicit guard metadata; confidence is limited without source, so findings focus on potential unsafe external calls.",
        "findings": [
            {
                "title": "Low-level CALL with computed target/value may allow unintended external calls or ETH transfers",
                "category": "other",
                "evidence": "Detector flagged untrusted CALL target/value and possible ETH value transfer; callsites at pc 0x07b2 and 0x147c show computed target usage with CALL. No guards detected in heuristics for these sinks.",
                "severity": "low",
                "locations": [
                    "pc:0x7b2",
                    "pc:0x147c"
                ],
                "recommendation": "Confirm the CALL target is immutable or tightly validated, and ensure any setters are access-controlled. If ETH transfers are intended, use checks-effects-interactions (and/or a reentrancy guard) and validate return data where applicable.",
                "exploit_scenario": "If any public/external function can influence the CALL target or value (e.g., via calldata or mutable storage without strict access control), an attacker could trigger the CALL to an arbitrary address and/or send ETH out of the contract. This could be abused to drain ETH or execute unexpected external logic. Bytecode evidence is incomplete; the target might be a fixed token/known address and value might be zero in practice."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
1
Total opcodes
3681
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00fa
0000000c: JUMPI
0000000d: PUSH0
0000000e: CALLDATALOAD
0000000f: PUSH1 0xe0
00000011: SHR
00000012: DUP1
00000013: PUSH4 0x8252097d
00000018: GT
00000019: PUSH2 0x0092
0000001c: JUMPI
0000001d: DUP1
0000001e: PUSH4 0xb2931096
00000023: GT
00000024: PUSH2 0x0062
00000027: JUMPI
00000028: DUP1
00000029: PUSH4 0xb2931096
0000002e: EQ
0000002f: PUSH2 0x02c8
00000032: JUMPI
00000033: DUP1
00000034: PUSH4 0xb5d5b5fa
00000039: EQ
0000003a: PUSH2 0x0311
0000003d: JUMPI
0000003e: DUP1
0000003f: PUSH4 0xb62e1efc
00000044: EQ
00000045: PUSH2 0x035f
00000048: JUMPI
00000049: DUP1
0000004a: PUSH4 0xdc8d31b6
0000004f: EQ
00000050: PUSH2 0x038a
00000053: JUMPI
00000054: DUP1
00000055: PUSH4 0xf2fde38b
0000005a: EQ
0000005b: PUSH2 0x039f
0000005e: JUMPI
0000005f: PUSH0
00000060: PUSH0
00000061: REVERT
00000062: JUMPDEST
00000063: DUP1
00000064: PUSH4 0x8252097d
00000069: EQ
0000006a: PUSH2 0x0218
0000006d: JUMPI
0000006e: DUP1
0000006f: PUSH4 0x842e2981
00000074: EQ
00000075: PUSH2 0x026d
00000078: JUMPI
00000079: DUP1
0000007a: PUSH4 0x8bdf67f2
0000007f: EQ
00000080: PUSH2 0x0299
00000083: JUMPI
00000084: DUP1
00000085: PUSH4 0x8da5cb5b
0000008a: EQ
0000008b: PUSH2 0x02ac
0000008e: JUMPI
0000008f: PUSH0
00000090: PUSH0
00000091: REVERT
00000092: JUMPDEST
00000093: DUP1
00000094: PUSH4 0x715018a6
00000099: GT
0000009a: PUSH2 0x00cd
0000009d: JUMPI
0000009e: DUP1
0000009f: PUSH4 0x715018a6
000000a4: EQ
000000a5: PUSH2 0x0185
000000a8: JUMPI
000000a9: DUP1
000000aa: PUSH4 0x71b63aae
000000af: EQ
000000b0: PUSH2 0x0199
000000b3: JUMPI
000000b4: DUP1
000000b5: PUSH4 0x7b0472f0
000000ba: EQ
000000bb: PUSH2 0x01e4
000000be: JUMPI
000000bf: DUP1
000000c0: PUSH4 0x817b1cd2
000000c5: EQ
000000c6: PUSH2 0x0203
000000c9: JUMPI
000000ca: PUSH0
000000cb: PUSH0
000000cc: REVERT
000000cd: JUMPDEST
000000ce: DUP1
000000cf: PUSH4 0x0962ef79
000000d4: EQ
000000d5: PUSH2 0x00fe
000000d8: JUMPI
000000d9: DUP1
000000da: PUSH4 0x0cc2b37e
000000df: EQ
000000e0: PUSH2 0x011f
000000e3: JUMPI
000000e4: DUP1
000000e5: PUSH4 0x2e17de78
000000ea: EQ
000000eb: PUSH2 0x0147
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x3c7d0d96
000000f5: EQ
000000f6: PUSH2 0x0166
000000f9: JUMPI
000000fa: JUMPDEST
000000fb: PUSH0
000000fc: PUSH0
000000fd: REVERT
000000fe: JUMPDEST
000000ff: CALLVALUE
00000100: DUP1
00000101: ISZERO
00000102: PUSH2 0x0109
00000105: JUMPI
00000106: PUSH0
00000107: PUSH0
00000108: REVERT
00000109: JUMPDEST
0000010a: POP
0000010b: PUSH2 0x011d
0000010e: PUSH2 0x0118
00000111: CALLDATASIZE
00000112: PUSH1 0x04
00000114: PUSH2 0x14d9
00000117: JUMP
00000118: JUMPDEST
00000119: PUSH2 0x03be
0000011c: JUMP
0000011d: JUMPDEST
0000011e: STOP
0000011f: JUMPDEST
00000120: CALLVALUE
00000121: DUP1
00000122: ISZERO
00000123: PUSH2 0x012a
00000126: JUMPI
00000127: PUSH0
00000128: PUSH0
00000129: REVERT
0000012a: JUMPDEST
0000012b: POP
0000012c: PUSH2 0x0134
0000012f: PUSH1 0x06
00000131: SLOAD
00000132: DUP2
00000133: JUMP
00000134: JUMPDEST
00000135: PUSH1 0x40
00000137: MLOAD
00000138: SWAP1
00000139: DUP2
0000013a: MSTORE
0000013b: PUSH1 0x20
0000013d: ADD
0000013e: JUMPDEST
0000013f: PUSH1 0x40
00000141: MLOAD
00000142: DUP1
00000143: SWAP2
00000144: SUB
00000145: SWAP1
00000146: RETURN
00000147: JUMPDEST
00000148: CALLVALUE
00000149: DUP1
0000014a: ISZERO
0000014b: PUSH2 0x0152
0000014e: JUMPI
0000014f: PUSH0
00000150: PUSH0
00000151: REVERT
00000152: JUMPDEST
00000153: POP
00000154: PUSH2 0x011d
00000157: PUSH2 0x0161
0000015a: CALLDATASIZE
0000015b: PUSH1 0x04
0000015d: PUSH2 0x14d9
00000160: JUMP
00000161: JUMPDEST
00000162: PUSH2 0x0878
00000165: JUMP
00000166: JUMPDEST
00000167: CALLVALUE
00000168: DUP1
00000169: ISZERO
0000016a: PUSH2 0x0171
0000016d: JUMPI
0000016e: PUSH0
0000016f: PUSH0
00000170: REVERT
00000171: JUMPDEST
00000172: POP
00000173: PUSH2 0x011d
00000176: PUSH2 0x0180
00000179: CALLDATASIZE
0000017a: PUSH1 0x04
0000017c: PUSH2 0x14d9
0000017f: JUMP
00000180: JUMPDEST
00000181: PUSH2 0x0ac1
00000184: JUMP
00000185: JUMPDEST
00000186: CALLVALUE
00000187: DUP1
00000188: ISZERO
00000189: PUSH2 0x0190
0000018c: JUMPI
0000018d: PUSH0
0000018e: PUSH0
0000018f: REVERT
00000190: JUMPDEST
00000191: POP
00000192: PUSH2 0x011d
00000195: PUSH2 0x0b60
00000198: JUMP
00000199: JUMPDEST
0000019a: CALLVALUE
0000019b: DUP1
0000019c: ISZERO
0000019d: PUSH2 0x01a4
000001a0: JUMPI
000001a1: PUSH0
000001a2: PUSH0
000001a3: REVERT
000001a4: JUMPDEST
000001a5: POP
000001a6: PUSH2 0x01cc
000001a9: PUSH32 0x000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc
000001ca: DUP2
000001cb: JUMP
000001cc: JUMPDEST
000001cd: PUSH1 0x40
000001cf: MLOAD
000001d0: PUSH1 0x01
000001d2: PUSH1 0x01
000001d4: PUSH1 0xa0
000001d6: SHL
000001d7: SUB
000001d8: SWAP1
000001d9: SWAP2
000001da: AND
000001db: DUP2
000001dc: MSTORE
000001dd: PUSH1 0x20
000001df: ADD
000001e0: PUSH2 0x013e
000001e3: JUMP
000001e4: JUMPDEST
000001e5: CALLVALUE
000001e6: DUP1
000001e7: ISZERO
000001e8: PUSH2 0x01ef
000001eb: JUMPI
000001ec: PUSH0
000001ed: PUSH0
000001ee: REVERT
000001ef: JUMPDEST
000001f0: POP
000001f1: PUSH2 0x011d
000001f4: PUSH2 0x01fe
000001f7: CALLDATASIZE
000001f8: PUSH1 0x04
000001fa: PUSH2 0x14f0
000001fd: JUMP
000001fe: JUMPDEST
000001ff: PUSH2 0x0b73
00000202: JUMP
00000203: JUMPDEST
00000204: CALLVALUE
00000205: DUP1
00000206: ISZERO
00000207: PUSH2 0x020e
0000020a: JUMPI
0000020b: PUSH0
0000020c: PUSH0
0000020d: REVERT
0000020e: JUMPDEST
0000020f: POP
00000210: PUSH2 0x0134
00000213: PUSH1 0x07
00000215: SLOAD
00000216: DUP2
00000217: JUMP
00000218: JUMPDEST
00000219: CALLVALUE
0000021a: DUP1
0000021b: ISZERO
0000021c: PUSH2 0x0223
0000021f: JUMPI
00000220: PUSH0
00000221: PUSH0
00000222: REVERT
00000223: JUMPDEST
00000224: POP
00000225: PUSH2 0x0252
00000228: PUSH2 0x0232
0000022b: CALLDATASIZE
0000022c: PUSH1 0x04
0000022e: PUSH2 0x14d9
00000231: JUMP
00000232: JUMPDEST
00000233: PUSH1 0x03
00000235: PUSH1 0x20
00000237: MSTORE
00000238: PUSH0
00000239: SWAP1
0000023a: DUP2
0000023b: MSTORE
0000023c: PUSH1 0x40
0000023e: SWAP1
0000023f: KECCAK256
00000240: DUP1
00000241: SLOAD
00000242: PUSH1 0x01
00000244: DUP3
00000245: ADD
00000246: SLOAD
00000247: PUSH1 0x02
00000249: SWAP1
0000024a: SWAP3
0000024b: ADD
0000024c: SLOAD
0000024d: SWAP1
0000024e: SWAP2
0000024f: SWAP1
00000250: DUP4
00000251: JUMP
00000252: JUMPDEST
00000253: PUSH1 0x40
00000255: DUP1
00000256: MLOAD
00000257: SWAP4
00000258: DUP5
00000259: MSTORE
0000025a: PUSH1 0x20
0000025c: DUP5
0000025d: ADD
0000025e: SWAP3
0000025f: SWAP1
00000260: SWAP3
00000261: MSTORE
00000262: SWAP1
00000263: DUP3
00000264: ADD
00000265: MSTORE
00000266: PUSH1 0x60
00000268: ADD
00000269: PUSH2 0x013e
0000026c: JUMP
0000026d: JUMPDEST
0000026e: CALLVALUE
0000026f: DUP1
00000270: ISZERO
00000271: PUSH2 0x0278
00000274: JUMPI
00000275: PUSH0
00000276: PUSH0
00000277: REVERT
00000278: JUMPDEST
00000279: POP
0000027a: PUSH2 0x028c
0000027d: PUSH2 0x0287
00000280: CALLDATASIZE
00000281: PUSH1 0x04
00000283: PUSH2 0x1526
00000286: JUMP
00000287: JUMPDEST
00000288: PUSH2 0x0da9
0000028b: JUMP
0000028c: JUMPDEST
0000028d: PUSH1 0x40
0000028f: MLOAD
00000290: PUSH2 0x013e
00000293: SWAP2
00000294: SWAP1
00000295: PUSH2 0x153f
00000298: JUMP
00000299: JUMPDEST
0000029a: PUSH2 0x011d
0000029d: PUSH2 0x02a7
000002a0: CALLDATASIZE
000002a1: PUSH1 0x04
000002a3: PUSH2 0x14d9
000002a6: JUMP
000002a7: JUMPDEST
000002a8: PUSH2 0x0e57
000002ab: JUMP
000002ac: JUMPDEST
000002ad: CALLVALUE
000002ae: DUP1
000002af: ISZERO
000002b0: PUSH2 0x02b7
000002b3: JUMPI
000002b4: PUSH0
000002b5: PUSH0
000002b6: REVERT
000002b7: JUMPDEST
000002b8: POP
000002b9: PUSH0
000002ba: SLOAD
000002bb: PUSH1 0x01
000002bd: PUSH1 0x01
000002bf: PUSH1 0xa0
000002c1: SHL
000002c2: SUB
000002c3: AND
000002c4: PUSH2 0x01cc
000002c7: JUMP
000002c8: JUMPDEST
000002c9: CALLVALUE
000002ca: DUP1
000002cb: ISZERO
000002cc: PUSH2 0x02d3
000002cf: JUMPI
000002d0: PUSH0
000002d1: PUSH0
000002d2: REVERT
000002d3: JUMPDEST
000002d4: POP
000002d5: PUSH2 0x0301
000002d8: PUSH2 0x02e2
000002db: CALLDATASIZE
000002dc: PUSH1 0x04
000002de: PUSH2 0x15bd
000002e1: JUMP
000002e2: JUMPDEST
000002e3: PUSH1 0x05
000002e5: PUSH1 0x20
000002e7: SWAP1
000002e8: DUP2
000002e9: MSTORE
000002ea: PUSH0
000002eb: SWAP3
000002ec: DUP4
000002ed: MSTORE
000002ee: PUSH1 0x40
000002f0: DUP1
000002f1: DUP5
000002f2: KECCAK256
000002f3: SWAP1
000002f4: SWAP2
000002f5: MSTORE
000002f6: SWAP1
000002f7: DUP3
000002f8: MSTORE
000002f9: SWAP1
000002fa: KECCAK256
000002fb: SLOAD
000002fc: PUSH1 0xff
000002fe: AND
000002ff: DUP2
00000300: JUMP
00000301: JUMPDEST
00000302: PUSH1 0x40
00000304: MLOAD
00000305: SWAP1
00000306: ISZERO
00000307: ISZERO
00000308: DUP2
00000309: MSTORE
0000030a: PUSH1 0x20
0000030c: ADD
0000030d: PUSH2 0x013e
00000310: JUMP
00000311: JUMPDEST
00000312: CALLVALUE
00000313: DUP1
00000314: ISZERO
00000315: PUSH2 0x031c
00000318: JUMPI
00000319: PUSH0
0000031a: PUSH0
0000031b: REVERT
0000031c: JUMPDEST
0000031d: POP
0000031e: PUSH2 0x0330
00000321: PUSH2 0x032b
00000324: CALLDATASIZE
00000325: PUSH1 0x04
00000327: PUSH2 0x15bd
0000032a: JUMP
0000032b: JUMPDEST
0000032c: PUSH2 0x0f49
0000032f: JUMP
00000330: JUMPDEST
00000331: PUSH1 0x40
00000333: DUP1
00000334: MLOAD
00000335: SWAP7
00000336: DUP8
00000337: MSTORE
00000338: PUSH1 0x20
0000033a: DUP8
0000033b: ADD
0000033c: SWAP6
0000033d: SWAP1
0000033e: SWAP6
0000033f: MSTORE
00000340: SWAP4
00000341: DUP6
00000342: ADD
00000343: SWAP3
00000344: SWAP1
00000345: SWAP3
00000346: MSTORE
00000347: PUSH1 0x60
00000349: DUP5
0000034a: ADD
0000034b: MSTORE
0000034c: ISZERO
0000034d: ISZERO
0000034e: PUSH1 0x80
00000350: DUP4
00000351: ADD
00000352: MSTORE
00000353: PUSH1 0xa0
00000355: DUP3
00000356: ADD
00000357: MSTORE
00000358: PUSH1 0xc0
0000035a: ADD
0000035b: PUSH2 0x013e
0000035e: JUMP
0000035f: JUMPDEST
00000360: CALLVALUE
00000361: DUP1
00000362: ISZERO
00000363: PUSH2 0x036a
00000366: JUMPI
00000367: PUSH0
00000368: PUSH0
00000369: REVERT
0000036a: JUMPDEST
0000036b: POP
0000036c: PUSH2 0x0134
0000036f: PUSH2 0x0379
00000372: CALLDATASIZE
00000373: PUSH1 0x04
00000375: PUSH2 0x14d9
00000378: JUMP
00000379: JUMPDEST
0000037a: PUSH1 0x04
0000037c: PUSH1 0x20
0000037e: MSTORE
0000037f: PUSH0
00000380: SWAP1
00000381: DUP2
00000382: MSTORE
00000383: PUSH1 0x40
00000385: SWAP1
00000386: KECCAK256
00000387: SLOAD
00000388: DUP2
00000389: JUMP
0000038a: JUMPDEST
0000038b: CALLVALUE
0000038c: DUP1
0000038d: ISZERO
0000038e: PUSH2 0x0395
00000391: JUMPI
00000392: PUSH0
00000393: PUSH0
00000394: REVERT
00000395: JUMPDEST
00000396: POP
00000397: PUSH2 0x0134
0000039a: PUSH1 0x08
0000039c: SLOAD
0000039d: DUP2
0000039e: JUMP
0000039f: JUMPDEST
000003a0: CALLVALUE
000003a1: DUP1
000003a2: ISZERO
000003a3: PUSH2 0x03aa
000003a6: JUMPI
000003a7: PUSH0
000003a8: PUSH0
000003a9: REVERT
000003aa: JUMPDEST
000003ab: POP
000003ac: PUSH2 0x011d
000003af: PUSH2 0x03b9
000003b2: CALLDATASIZE
000003b3: PUSH1 0x04
000003b5: PUSH2 0x1526
000003b8: JUMP
000003b9: JUMPDEST
000003ba: PUSH2 0x0f9f
000003bd: JUMP
000003be: JUMPDEST
000003bf: PUSH2 0x03c6
000003c2: PUSH2 0x0fd9
000003c5: JUMP
000003c6: JUMPDEST
000003c7: PUSH2 0x03ce
000003ca: PUSH2 0x1003
000003cd: JUMP
000003ce: JUMPDEST
000003cf: PUSH1 0x06
000003d1: SLOAD
000003d2: DUP2
000003d3: GT
000003d4: ISZERO
000003d5: PUSH2 0x041d
000003d8: JUMPI
000003d9: PUSH1 0x40
000003db: MLOAD
000003dc: PUSH3 0x461bcd
000003e0: PUSH1 0xe5
000003e2: SHL
000003e3: DUP2
000003e4: MSTORE
000003e5: PUSH1 0x20
000003e7: PUSH1 0x04
000003e9: DUP3
000003ea: ADD
000003eb: MSTORE
000003ec: PUSH1 0x15
000003ee: PUSH1 0x24
000003f0: DUP3
000003f1: ADD
000003f2: MSTORE
000003f3: PUSH21 0x125b9d985b1a59081c995dd85c99081c195c9a5bd9
00000409: PUSH1 0x5a
0000040b: SHL
0000040c: PUSH1 0x44
0000040e: DUP3
0000040f: ADD
00000410: MSTORE
00000411: PUSH1 0x64
00000413: ADD
00000414: JUMPDEST
00000415: PUSH1 0x40
00000417: MLOAD
00000418: DUP1
00000419: SWAP2
0000041a: SUB
0000041b: SWAP1
0000041c: REVERT
0000041d: JUMPDEST
0000041e: PUSH0
0000041f: DUP2
00000420: DUP2
00000421: MSTORE
00000422: PUSH1 0x03
00000424: PUSH1 0x20
00000426: MSTORE
00000427: PUSH1 0x40
00000429: SWAP1
0000042a: KECCAK256
0000042b: PUSH1 0x02
0000042d: ADD
0000042e: SLOAD
0000042f: TIMESTAMP
00000430: LT
00000431: ISZERO
00000432: PUSH2 0x047d
00000435: JUMPI
00000436: PUSH1 0x40
00000438: MLOAD
00000439: PUSH3 0x461bcd
0000043d: PUSH1 0xe5
0000043f: SHL
00000440: DUP2
00000441: MSTORE
00000442: PUSH1 0x20
00000444: PUSH1 0x04
00000446: DUP3
00000447: ADD
00000448: MSTORE
00000449: PUSH1 0x17
0000044b: PUSH1 0x24
0000044d: DUP3
0000044e: ADD
0000044f: MSTORE
00000450: PUSH32 0x52657761726420706572696f64206e6f7420656e646564000000000000000000
00000471: PUSH1 0x44
00000473: DUP3
00000474: ADD
00000475: MSTORE
00000476: PUSH1 0x64
00000478: ADD
00000479: PUSH2 0x0414
0000047c: JUMP
0000047d: JUMPDEST
0000047e: CALLER
0000047f: PUSH0
00000480: SWAP1
00000481: DUP2
00000482: MSTORE
00000483: PUSH1 0x05
00000485: PUSH1 0x20
00000487: SWAP1
00000488: DUP2
00000489: MSTORE
0000048a: PUSH1 0x40
0000048c: DUP1
0000048d: DUP4
0000048e: KECCAK256
0000048f: DUP5
00000490: DUP5
00000491: MSTORE
00000492: SWAP1
00000493: SWAP2
00000494: MSTORE
00000495: SWAP1
00000496: KECCAK256
00000497: SLOAD
00000498: PUSH1 0xff
0000049a: AND
0000049b: ISZERO
0000049c: PUSH2 0x04e7
0000049f: JUMPI
000004a0: PUSH1 0x40
000004a2: MLOAD
000004a3: PUSH3 0x461bcd
000004a7: PUSH1 0xe5
000004a9: SHL
000004aa: DUP2
000004ab: MSTORE
000004ac: PUSH1 0x20
000004ae: PUSH1 0x04
000004b0: DUP3
000004b1: ADD
000004b2: MSTORE
000004b3: PUSH1 0x1f
000004b5: PUSH1 0x24
000004b7: DUP3
000004b8: ADD
000004b9: MSTORE
000004ba: PUSH32 0x5265776172647320636c61696d656420666f72207468697320706572696f6400
000004db: PUSH1 0x44
000004dd: DUP3
000004de: ADD
000004df: MSTORE
000004e0: PUSH1 0x64
000004e2: ADD
000004e3: PUSH2 0x0414
000004e6: JUMP
000004e7: JUMPDEST
000004e8: CALLER
000004e9: PUSH0
000004ea: SWAP1
000004eb: DUP2
000004ec: MSTORE
000004ed: PUSH1 0x02
000004ef: PUSH1 0x20
000004f1: MSTORE
000004f2: PUSH1 0x40
000004f4: DUP2
000004f5: KECCAK256
000004f6: SLOAD
000004f7: DUP2
000004f8: SWAP1
000004f9: DUP2
000004fa: JUMPDEST
000004fb: DUP2
000004fc: DUP2
000004fd: LT
000004fe: ISZERO
000004ff: PUSH2 0x0624
00000502: JUMPI
00000503: CALLER
00000504: PUSH0
00000505: SWAP1
00000506: DUP2
00000507: MSTORE
00000508: PUSH1 0x02
0000050a: PUSH1 0x20
0000050c: MSTORE
0000050d: PUSH1 0x40
0000050f: DUP2
00000510: KECCAK256
00000511: DUP1
00000512: SLOAD
00000513: DUP4
00000514: SWAP1
00000515: DUP2
00000516: LT
00000517: PUSH2 0x0522
0000051a: JUMPI
0000051b: PUSH2 0x0522
0000051e: PUSH2 0x15e5
00000521: JUMP
00000522: JUMPDEST
00000523: PUSH0
00000524: SWAP2
00000525: DUP3
00000526: MSTORE
00000527: PUSH1 0x20
00000529: SWAP1
0000052a: SWAP2
0000052b: KECCAK256
0000052c: PUSH1 0x06
0000052e: SWAP1
0000052f: SWAP2
00000530: MUL
00000531: ADD
00000532: PUSH1 0x04
00000534: DUP2
00000535: ADD
00000536: SLOAD
00000537: SWAP1
00000538: SWAP2
00000539: POP
0000053a: PUSH1 0xff
0000053c: AND
0000053d: ISZERO
0000053e: DUP1
0000053f: ISZERO
00000540: PUSH2 0x0570
00000543: JUMPI
00000544: POP
00000545: PUSH1 0x03
00000547: PUSH0
00000548: DUP8
00000549: DUP2
0000054a: MSTORE
0000054b: PUSH1 0x20
0000054d: ADD
0000054e: SWAP1
0000054f: DUP2
00000550: MSTORE
00000551: PUSH1 0x20
00000553: ADD
00000554: PUSH0
00000555: KECCAK256
00000556: PUSH1 0x02
00000558: ADD
00000559: SLOAD
0000055a: DUP2
0000055b: PUSH1 0x03
0000055d: ADD
0000055e: SLOAD
0000055f: DUP3
00000560: PUSH1 0x02
00000562: ADD
00000563: SLOAD
00000564: PUSH2 0x056d
00000567: SWAP2
00000568: SWAP1
00000569: PUSH2 0x160d
0000056c: JUMP
0000056d: JUMPDEST
0000056e: GT
0000056f: ISZERO
00000570: JUMPDEST
00000571: DUP1
00000572: ISZERO
00000573: PUSH2 0x05b1
00000576: JUMPI
00000577: POP
00000578: PUSH1 0x03
0000057a: PUSH0
0000057b: DUP8
0000057c: DUP2
0000057d: MSTORE
0000057e: PUSH1 0x20
00000580: ADD
00000581: SWAP1
00000582: DUP2
00000583: MSTORE
00000584: PUSH1 0x20
00000586: ADD
00000587: PUSH0
00000588: KECCAK256
00000589: PUSH1 0x02
0000058b: ADD
0000058c: SLOAD
0000058d: DUP2
0000058e: PUSH1 0x03
00000590: ADD
00000591: SLOAD
00000592: DUP3
00000593: PUSH1 0x01
00000595: ADD
00000596: SLOAD
00000597: DUP4
00000598: PUSH1 0x02
0000059a: ADD
0000059b: SLOAD
0000059c: PUSH2 0x05a5
0000059f: SWAP2
000005a0: SWAP1
000005a1: PUSH2 0x160d
000005a4: JUMP
000005a5: JUMPDEST
000005a6: PUSH2 0x05af
000005a9: SWAP2
000005aa: SWAP1
000005ab: PUSH2 0x160d
000005ae: JUMP
000005af: JUMPDEST
000005b0: GT
000005b1: JUMPDEST
000005b2: ISZERO
000005b3: PUSH2 0x061b
000005b6: JUMPI
000005b7: PUSH0
000005b8: PUSH3 0x278d00
000005bc: DUP3
000005bd: PUSH1 0x01
000005bf: ADD
000005c0: SLOAD
000005c1: EQ
000005c2: PUSH2 0x05f6
000005c5: JUMPI
000005c6: PUSH3 0x76a700
000005ca: DUP3
000005cb: PUSH1 0x01
000005cd: ADD
000005ce: SLOAD
000005cf: EQ
000005d0: PUSH2 0x05ef
000005d3: JUMPI
000005d4: PUSH3 0xed4e00
000005d8: DUP3
000005d9: PUSH1 0x01
000005db: ADD
000005dc: SLOAD
000005dd: EQ
000005de: PUSH2 0x05e8
000005e1: JUMPI
000005e2: PUSH1 0x04
000005e4: PUSH2 0x05f9
000005e7: JUMP
000005e8: JUMPDEST
000005e9: PUSH1 0x03
000005eb: PUSH2 0x05f9
000005ee: JUMP
000005ef: JUMPDEST
000005f0: PUSH1 0x02
000005f2: PUSH2 0x05f9
000005f5: JUMP
000005f6: JUMPDEST
000005f7: PUSH1 0x01
000005f9: JUMPDEST
000005fa: PUSH1 0xff
000005fc: AND
000005fd: SWAP1
000005fe: POP
000005ff: DUP1
00000600: DUP3
00000601: PUSH0
00000602: ADD
00000603: SLOAD
00000604: PUSH2 0x060d
00000607: SWAP2
00000608: SWAP1
00000609: PUSH2 0x1626
0000060c: JUMP
0000060d: JUMPDEST
0000060e: PUSH2 0x0617
00000611: SWAP1
00000612: DUP8
00000613: PUSH2 0x160d
00000616: JUMP
00000617: JUMPDEST
00000618: SWAP6
00000619: POP
0000061a: POP
0000061b: JUMPDEST
0000061c: POP
0000061d: PUSH1 0x01
0000061f: ADD
00000620: PUSH2 0x04fa
00000623: JUMP
00000624: JUMPDEST
00000625: POP
00000626: PUSH0
00000627: DUP4
00000628: GT
00000629: PUSH2 0x0674
0000062c: JUMPI
0000062d: PUSH1 0x40
0000062f: MLOAD
00000630: PUSH3 0x461bcd
00000634: PUSH1 0xe5
00000636: SHL
00000637: DUP2
00000638: MSTORE
00000639: PUSH1 0x20
0000063b: PUSH1 0x04
0000063d: DUP3
0000063e: ADD
0000063f: MSTORE
00000640: PUSH1 0x1e
00000642: PUSH1 0x24
00000644: DUP3
00000645: ADD
00000646: MSTORE
00000647: PUSH32 0x4e6f20656c696769626c65207374616b657320666f7220726577617264730000
00000668: PUSH1 0x44
0000066a: DUP3
0000066b: ADD
0000066c: MSTORE
0000066d: PUSH1 0x64
0000066f: ADD
00000670: PUSH2 0x0414
00000673: JUMP
00000674: JUMPDEST
00000675: PUSH0
00000676: DUP5
00000677: DUP2
00000678: MSTORE
00000679: PUSH1 0x04
0000067b: PUSH1 0x20
0000067d: MSTORE
0000067e: PUSH1 0x40
00000680: SWAP1
00000681: KECCAK256
00000682: SLOAD
00000683: DUP1
00000684: PUSH2 0x06cf
00000687: JUMPI
00000688: PUSH1 0x40
0000068a: MLOAD
0000068b: PUSH3 0x461bcd
0000068f: PUSH1 0xe5
00000691: SHL
00000692: DUP2
00000693: MSTORE
00000694: PUSH1 0x20
00000696: PUSH1 0x04
00000698: DUP3
00000699: ADD
0000069a: MSTORE
0000069b: PUSH1 0x1f
0000069d: PUSH1 0x24
0000069f: DUP3
000006a0: ADD
000006a1: MSTORE
000006a2: PUSH32 0x52657761726420646973747269627574696f6e206e6f74207374617274656400
000006c3: PUSH1 0x44
000006c5: DUP3
000006c6: ADD
000006c7: MSTORE
000006c8: PUSH1 0x64
000006ca: ADD
000006cb: PUSH2 0x0414
000006ce: JUMP
000006cf: JUMPDEST
000006d0: PUSH0
000006d1: DUP6
000006d2: DUP2
000006d3: MSTORE
000006d4: PUSH1 0x03
000006d6: PUSH1 0x20
000006d8: MSTORE
000006d9: PUSH1 0x40
000006db: SWAP1
000006dc: KECCAK256
000006dd: SLOAD
000006de: DUP2
000006df: SWAP1
000006e0: PUSH2 0x06ea
000006e3: SWAP1
000006e4: DUP7
000006e5: SWAP1
000006e6: PUSH2 0x1626
000006e9: JUMP
000006ea: JUMPDEST
000006eb: PUSH2 0x06f4
000006ee: SWAP2
000006ef: SWAP1
000006f0: PUSH2 0x163d
000006f3: JUMP
000006f4: JUMPDEST
000006f5: SWAP3
000006f6: POP
000006f7: PUSH0
000006f8: DUP4
000006f9: GT
000006fa: PUSH2 0x073b
000006fd: JUMPI
000006fe: PUSH1 0x40
00000700: MLOAD
00000701: PUSH3 0x461bcd
00000705: PUSH1 0xe5
00000707: SHL
00000708: DUP2
00000709: MSTORE
0000070a: PUSH1 0x20
0000070c: PUSH1 0x04
0000070e: DUP3
0000070f: ADD
00000710: MSTORE
00000711: PUSH1 0x13
00000713: PUSH1 0x24
00000715: DUP3
00000716: ADD
00000717: MSTORE
00000718: PUSH19 0x4e6f207265776172647320746f20636c61696d
0000072c: PUSH1 0x68
0000072e: SHL
0000072f: PUSH1 0x44
00000731: DUP3
00000732: ADD
00000733: MSTORE
00000734: PUSH1 0x64
00000736: ADD
00000737: PUSH2 0x0414
0000073a: JUMP
0000073b: JUMPDEST
0000073c: PUSH0
0000073d: DUP6
0000073e: DUP2
0000073f: MSTORE
00000740: PUSH1 0x03
00000742: PUSH1 0x20
00000744: MSTORE
00000745: PUSH1 0x40
00000747: DUP2
00000748: KECCAK256
00000749: DUP1
0000074a: SLOAD
0000074b: DUP6
0000074c: SWAP3
0000074d: SWAP1
0000074e: PUSH2 0x0758
00000751: SWAP1
00000752: DUP5
00000753: SWAP1
00000754: PUSH2 0x165c
00000757: JUMP
00000758: JUMPDEST
00000759: SWAP1
0000075a: SWAP2
0000075b: SSTORE
0000075c: POP
0000075d: POP
0000075e: PUSH0
0000075f: DUP6
00000760: DUP2
00000761: MSTORE
00000762: PUSH1 0x04
00000764: PUSH1 0x20
00000766: MSTORE
00000767: PUSH1 0x40
00000769: DUP2
0000076a: KECCAK256
0000076b: DUP1
0000076c: SLOAD
0000076d: DUP7
0000076e: SWAP3
0000076f: SWAP1
00000770: PUSH2 0x077a
00000773: SWAP1
00000774: DUP5
00000775: SWAP1
00000776: PUSH2 0x165c
00000779: JUMP
0000077a: JUMPDEST
0000077b: SWAP1
0000077c: SWAP2
0000077d: SSTORE
0000077e: POP
0000077f: POP
00000780: CALLER
00000781: PUSH0
00000782: DUP2
00000783: DUP2
00000784: MSTORE
00000785: PUSH1 0x05
00000787: PUSH1 0x20
00000789: SWAP1
0000078a: DUP2
0000078b: MSTORE
0000078c: PUSH1 0x40
0000078e: DUP1
0000078f: DUP4
00000790: KECCAK256
00000791: DUP10
00000792: DUP5
00000793: MSTORE
00000794: SWAP1
00000795: SWAP2
00000796: MSTORE
00000797: DUP1
00000798: DUP3
00000799: KECCAK256
0000079a: DUP1
0000079b: SLOAD
0000079c: PUSH1 0xff
0000079e: NOT
0000079f: AND
000007a0: PUSH1 0x01
000007a2: OR
000007a3: SWAP1
000007a4: SSTORE
000007a5: MLOAD
000007a6: SWAP1
000007a7: SWAP2
000007a8: SWAP1
000007a9: DUP6
000007aa: SWAP1
000007ab: DUP4
000007ac: DUP2
000007ad: DUP2
000007ae: DUP2
000007af: DUP6
000007b0: DUP8
000007b1: GAS
000007b2: CALL
000007b3: SWAP3
000007b4: POP
000007b5: POP
000007b6: POP
000007b7: RETURNDATASIZE
000007b8: DUP1
000007b9: PUSH0
000007ba: DUP2
000007bb: EQ
000007bc: PUSH2 0x07e0
000007bf: JUMPI
000007c0: PUSH1 0x40
000007c2: MLOAD
000007c3: SWAP2
000007c4: POP
000007c5: PUSH1 0x1f
000007c7: NOT
000007c8: PUSH1 0x3f
000007ca: RETURNDATASIZE
000007cb: ADD
000007cc: AND
000007cd: DUP3
000007ce: ADD
000007cf: PUSH1 0x40
000007d1: MSTORE
000007d2: RETURNDATASIZE
000007d3: DUP3
000007d4: MSTORE
000007d5: RETURNDATASIZE
000007d6: PUSH0
000007d7: PUSH1 0x20
000007d9: DUP5
000007da: ADD
000007db: RETURNDATACOPY
000007dc: PUSH2 0x07e5
000007df: JUMP
000007e0: JUMPDEST
000007e1: PUSH1 0x60
000007e3: SWAP2
000007e4: POP
000007e5: JUMPDEST
000007e6: POP
000007e7: POP
000007e8: SWAP1
000007e9: POP
000007ea: DUP1
000007eb: PUSH2 0x082c
000007ee: JUMPI
000007ef: PUSH1 0x40
000007f1: MLOAD
000007f2: PUSH3 0x461bcd
000007f6: PUSH1 0xe5
000007f8: SHL
000007f9: DUP2
000007fa: MSTORE
000007fb: PUSH1 0x20
000007fd: PUSH1 0x04
000007ff: DUP3
00000800: ADD
00000801: MSTORE
00000802: PUSH1 0x13
00000804: PUSH1 0x24
00000806: DUP3
00000807: ADD
00000808: MSTORE
00000809: PUSH19 0x115512081d1c985b9cd9995c8819985a5b1959
0000081d: PUSH1 0x6a
0000081f: SHL
00000820: PUSH1 0x44
00000822: DUP3
00000823: ADD
00000824: MSTORE
00000825: PUSH1 0x64
00000827: ADD
00000828: PUSH2 0x0414
0000082b: JUMP
0000082c: JUMPDEST
0000082d: PUSH1 0x40
0000082f: DUP1
00000830: MLOAD
00000831: DUP8
00000832: DUP2
00000833: MSTORE
00000834: PUSH1 0x20
00000836: DUP2
00000837: ADD
00000838: DUP7
00000839: SWAP1
0000083a: MSTORE
0000083b: CALLER
0000083c: SWAP2
0000083d: PUSH32 0xf01da32686223933d8a18a391060918c7f11a3648639edd87ae013e2e2731743
0000085e: SWAP2
0000085f: ADD
00000860: PUSH1 0x40
00000862: MLOAD
00000863: DUP1
00000864: SWAP2
00000865: SUB
00000866: SWAP1
00000867: LOG2
00000868: POP
00000869: POP
0000086a: POP
0000086b: POP
0000086c: POP
0000086d: PUSH2 0x0875
00000870: PUSH1 0x01
00000872: DUP1
00000873: SSTORE
00000874: JUMP
00000875: JUMPDEST
00000876: POP
00000877: JUMP
00000878: JUMPDEST
00000879: PUSH2 0x0880
0000087c: PUSH2 0x0fd9
0000087f: JUMP
00000880: JUMPDEST
00000881: CALLER
00000882: PUSH0
00000883: SWAP1
00000884: DUP2
00000885: MSTORE
00000886: PUSH1 0x02
00000888: PUSH1 0x20
0000088a: MSTORE
0000088b: PUSH1 0x40
0000088d: SWAP1
0000088e: KECCAK256
0000088f: SLOAD
00000890: DUP2
00000891: LT
00000892: PUSH2 0x08d3
00000895: JUMPI
00000896: PUSH1 0x40
00000898: MLOAD
00000899: PUSH3 0x461bcd
0000089d: PUSH1 0xe5
0000089f: SHL
000008a0: DUP2
000008a1: MSTORE
000008a2: PUSH1 0x20
000008a4: PUSH1 0x04
000008a6: DUP3
000008a7: ADD
000008a8: MSTORE
000008a9: PUSH1 0x13
000008ab: PUSH1 0x24
000008ad: DUP3
000008ae: ADD
000008af: MSTORE
000008b0: PUSH19 0x092dcecc2d8d2c840e6e8c2d6ca40d2dcc8caf
000008c4: PUSH1 0x6b
000008c6: SHL
000008c7: PUSH1 0x44
000008c9: DUP3
000008ca: ADD
000008cb: MSTORE
000008cc: PUSH1 0x64
000008ce: ADD
000008cf: PUSH2 0x0414
000008d2: JUMP
000008d3: JUMPDEST
000008d4: CALLER
000008d5: PUSH0
000008d6: SWAP1
000008d7: DUP2
000008d8: MSTORE
000008d9: PUSH1 0x02
000008db: PUSH1 0x20
000008dd: MSTORE
000008de: PUSH1 0x40
000008e0: DUP2
000008e1: KECCAK256
000008e2: DUP1
000008e3: SLOAD
000008e4: DUP4
000008e5: SWAP1
000008e6: DUP2
000008e7: LT
000008e8: PUSH2 0x08f3
000008eb: JUMPI
000008ec: PUSH2 0x08f3
000008ef: PUSH2 0x15e5
000008f2: JUMP
000008f3: JUMPDEST
000008f4: PUSH0
000008f5: SWAP2
000008f6: DUP3
000008f7: MSTORE
000008f8: PUSH1 0x20
000008fa: SWAP1
000008fb: SWAP2
000008fc: KECCAK256
000008fd: PUSH1 0x06
000008ff: SWAP1
00000900: SWAP2
00000901: MUL
00000902: ADD
00000903: PUSH1 0x04
00000905: DUP2
00000906: ADD
00000907: SLOAD
00000908: SWAP1
00000909: SWAP2
0000090a: POP
0000090b: PUSH1 0xff
0000090d: AND
0000090e: ISZERO
0000090f: PUSH2 0x094e
00000912: JUMPI
00000913: PUSH1 0x40
00000915: MLOAD
00000916: PUSH3 0x461bcd
0000091a: PUSH1 0xe5
0000091c: SHL
0000091d: DUP2
0000091e: MSTORE
0000091f: PUSH1 0x20
00000921: PUSH1 0x04
00000923: DUP3
00000924: ADD
00000925: MSTORE
00000926: PUSH1 0x11
00000928: PUSH1 0x24
0000092a: DUP3
0000092b: ADD
0000092c: MSTORE
0000092d: PUSH17 0x20b63932b0b23c903bb4ba34323930bbb7
0000093f: PUSH1 0x79
00000941: SHL
00000942: PUSH1 0x44
00000944: DUP3
00000945: ADD
00000946: MSTORE
00000947: PUSH1 0x64
00000949: ADD
0000094a: PUSH2 0x0414
0000094d: JUMP
0000094e: JUMPDEST
0000094f: PUSH2 0x0958
00000952: DUP2
00000953: PUSH0
00000954: PUSH2 0x1124
00000957: JUMP
00000958: JUMPDEST
00000959: DUP1
0000095a: SLOAD
0000095b: PUSH1 0x01
0000095d: DUP3
0000095e: ADD
0000095f: SLOAD
00000960: PUSH1 0x02
00000962: DUP4
00000963: ADD
00000964: SLOAD
00000965: PUSH0
00000966: SWAP3
00000967: SWAP2
00000968: PUSH2 0x0970
0000096b: SWAP2
0000096c: PUSH2 0x160d
0000096f: JUMP
00000970: JUMPDEST
00000971: TIMESTAMP
00000972: LT
00000973: ISZERO
00000974: PUSH2 0x09d7
00000977: JUMPI
00000978: PUSH3 0x278d00
0000097c: DUP4
0000097d: PUSH1 0x01
0000097f: ADD
00000980: SLOAD
00000981: EQ
00000982: PUSH2 0x09b6
00000985: JUMPI
00000986: PUSH3 0x76a700
0000098a: DUP4
0000098b: PUSH1 0x01
0000098d: ADD
0000098e: SLOAD
0000098f: EQ
00000990: PUSH2 0x09af
00000993: JUMPI
00000994: PUSH3 0xed4e00
00000998: DUP4
00000999: PUSH1 0x01
0000099b: ADD
0000099c: SLOAD
0000099d: EQ
0000099e: PUSH2 0x09a8
000009a1: JUMPI
000009a2: PUSH1 0x0a
000009a4: PUSH2 0x09b9
000009a7: JUMP
000009a8: JUMPDEST
000009a9: PUSH1 0x0c
000009ab: PUSH2 0x09b9
000009ae: JUMP
000009af: JUMPDEST
000009b0: PUSH1 0x0d
000009b2: PUSH2 0x09b9
000009b5: JUMP
000009b6: JUMPDEST
000009b7: PUSH1 0x0f
000009b9: JUMPDEST
000009ba: PUSH1 0xff
000009bc: AND
000009bd: SWAP2
000009be: POP
000009bf: PUSH1 0x64
000009c1: PUSH2 0x09ca
000009c4: DUP4
000009c5: DUP4
000009c6: PUSH2 0x1626
000009c9: JUMP
000009ca: JUMPDEST
000009cb: PUSH2 0x09d4
000009ce: SWAP2
000009cf: SWAP1
000009d0: PUSH2 0x163d
000009d3: JUMP
000009d4: JUMPDEST
000009d5: SWAP2
000009d6: POP
000009d7: JUMPDEST
000009d8: PUSH0
000009d9: PUSH2 0x09e2
000009dc: DUP4
000009dd: DUP4
000009de: PUSH2 0x165c
000009e1: JUMP
000009e2: JUMPDEST
000009e3: SWAP1
000009e4: POP
000009e5: DUP2
000009e6: PUSH1 0x07
000009e8: PUSH0
000009e9: DUP3
000009ea: DUP3
000009eb: SLOAD
000009ec: PUSH2 0x09f5
000009ef: SWAP2
000009f0: SWAP1
000009f1: PUSH2 0x165c
000009f4: JUMP
000009f5: JUMPDEST
000009f6: SWAP1
000009f7: SWAP2
000009f8: SSTORE
000009f9: POP
000009fa: POP
000009fb: PUSH1 0x04
000009fd: DUP5
000009fe: ADD
000009ff: DUP1
00000a00: SLOAD
00000a01: PUSH1 0xff
00000a03: NOT
00000a04: AND
00000a05: PUSH1 0x01
00000a07: OR
00000a08: SWAP1
00000a09: SSTORE
00000a0a: DUP3
00000a0b: ISZERO
00000a0c: PUSH2 0x0a45
00000a0f: JUMPI
00000a10: PUSH2 0x0a45
00000a13: PUSH1 0x01
00000a15: PUSH1 0x01
00000a17: PUSH1 0xa0
00000a19: SHL
00000a1a: SUB
00000a1b: PUSH32 0x000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc
00000a3c: AND
00000a3d: PUSH2 0xdead
00000a40: DUP6
00000a41: PUSH2 0x12e3
00000a44: JUMP
00000a45: JUMPDEST
00000a46: PUSH2 0x0a79
00000a49: PUSH1 0x01
00000a4b: PUSH1 0x01
00000a4d: PUSH1 0xa0
00000a4f: SHL
00000a50: SUB
00000a51: PUSH32 0x000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc
00000a72: AND
00000a73: CALLER
00000a74: DUP4
00000a75: PUSH2 0x12e3
00000a78: JUMP
00000a79: JUMPDEST
00000a7a: PUSH1 0x40
00000a7c: DUP1
00000a7d: MLOAD
00000a7e: DUP4
00000a7f: DUP2
00000a80: MSTORE
00000a81: PUSH1 0x20
00000a83: DUP2
00000a84: ADD
00000a85: DUP6
00000a86: SWAP1
00000a87: MSTORE
00000a88: CALLER
00000a89: SWAP2
00000a8a: PUSH32 0x7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e
00000aab: SWAP2
00000aac: ADD
00000aad: PUSH1 0x40
00000aaf: MLOAD
00000ab0: DUP1
00000ab1: SWAP2
00000ab2: SUB
00000ab3: SWAP1
00000ab4: LOG2
00000ab5: POP
00000ab6: POP
00000ab7: POP
00000ab8: POP
00000ab9: PUSH2 0x0875
00000abc: PUSH1 0x01
00000abe: DUP1
00000abf: SSTORE
00000ac0: JUMP
00000ac1: JUMPDEST
00000ac2: PUSH2 0x0ac9
00000ac5: PUSH2 0x1347
00000ac8: JUMP
00000ac9: JUMPDEST
00000aca: PUSH3 0x069780
00000ace: DUP2
00000acf: LT
00000ad0: ISZERO
00000ad1: DUP1
00000ad2: ISZERO
00000ad3: PUSH2 0x0adf
00000ad6: JUMPI
00000ad7: POP
00000ad8: PUSH3 0x1a5e00
00000adc: DUP2
00000add: GT
00000ade: ISZERO
00000adf: JUMPDEST
00000ae0: PUSH2 0x0b24
00000ae3: JUMPI
00000ae4: PUSH1 0x40
00000ae6: MLOAD
00000ae7: PUSH3 0x461bcd
00000aeb: PUSH1 0xe5
00000aed: SHL
00000aee: DUP2
00000aef: MSTORE
00000af0: PUSH1 0x20
00000af2: PUSH1 0x04
00000af4: DUP3
00000af5: ADD
00000af6: MSTORE
00000af7: PUSH1 0x16
00000af9: PUSH1 0x24
00000afb: DUP3
00000afc: ADD
00000afd: MSTORE
00000afe: PUSH22 0x5468726573686f6c64206f7574206f662072616e6765
00000b15: PUSH1 0x50
00000b17: SHL
00000b18: PUSH1 0x44
00000b1a: DUP3
00000b1b: ADD
00000b1c: MSTORE
00000b1d: PUSH1 0x64
00000b1f: ADD
00000b20: PUSH2 0x0414
00000b23: JUMP
00000b24: JUMPDEST
00000b25: PUSH1 0x08
00000b27: DUP2
00000b28: SWAP1
00000b29: SSTORE
00000b2a: PUSH1 0x40
00000b2c: MLOAD
00000b2d: DUP2
00000b2e: DUP2
00000b2f: MSTORE
00000b30: PUSH32 0xadebce7a5ac7f8970d9f38c5d050b091f0210351f4dcf86301867a4214abfb92
00000b51: SWAP1
00000b52: PUSH1 0x20
00000b54: ADD
00000b55: JUMPDEST
00000b56: PUSH1 0x40
00000b58: MLOAD
00000b59: DUP1
00000b5a: SWAP2
00000b5b: SUB
00000b5c: SWAP1
00000b5d: LOG1
00000b5e: POP
00000b5f: JUMP
00000b60: JUMPDEST
00000b61: PUSH2 0x0b68
00000b64: PUSH2 0x1347
00000b67: JUMP
00000b68: JUMPDEST
00000b69: PUSH2 0x0b71
00000b6c: PUSH0
00000b6d: PUSH2 0x1373
00000b70: JUMP
00000b71: JUMPDEST
00000b72: JUMP
00000b73: JUMPDEST
00000b74: PUSH2 0x0b7b
00000b77: PUSH2 0x0fd9
00000b7a: JUMP
00000b7b: JUMPDEST
00000b7c: PUSH3 0x278d00
00000b80: DUP2
00000b81: EQ
00000b82: DUP1
00000b83: PUSH2 0x0b8e
00000b86: JUMPI
00000b87: POP
00000b88: PUSH3 0x76a700
00000b8c: DUP2
00000b8d: EQ
00000b8e: JUMPDEST
00000b8f: DUP1
00000b90: PUSH2 0x0b9b
00000b93: JUMPI
00000b94: POP
00000b95: PUSH3 0xed4e00
00000b99: DUP2
00000b9a: EQ
00000b9b: JUMPDEST
00000b9c: DUP1
00000b9d: PUSH2 0x0ba9
00000ba0: JUMPI
00000ba1: POP
00000ba2: PUSH4 0x01da9c00
00000ba7: DUP2
00000ba8: EQ
00000ba9: JUMPDEST
00000baa: PUSH2 0x0bee
00000bad: JUMPI
00000bae: PUSH1 0x40
00000bb0: MLOAD
00000bb1: PUSH3 0x461bcd
00000bb5: PUSH1 0xe5
00000bb7: SHL
00000bb8: DUP2
00000bb9: MSTORE
00000bba: PUSH1 0x20
00000bbc: PUSH1 0x04
00000bbe: DUP3
00000bbf: ADD
00000bc0: MSTORE
00000bc1: PUSH1 0x16
00000bc3: PUSH1 0x24
00000bc5: DUP3
00000bc6: ADD
00000bc7: MSTORE
00000bc8: PUSH22 0x125b9d985b1a59081b1bd8dacb5a5b881c195c9a5bd9
00000bdf: PUSH1 0x52
00000be1: SHL
00000be2: PUSH1 0x44
00000be4: DUP3
00000be5: ADD
00000be6: MSTORE
00000be7: PUSH1 0x64
00000be9: ADD
00000bea: PUSH2 0x0414
00000bed: JUMP
00000bee: JUMPDEST
00000bef: PUSH0
00000bf0: DUP3
00000bf1: GT
00000bf2: PUSH2 0x0c35
00000bf5: JUMPI
00000bf6: PUSH1 0x40
00000bf8: MLOAD
00000bf9: PUSH3 0x461bcd
00000bfd: PUSH1 0xe5
00000bff: SHL
00000c00: DUP2
00000c01: MSTORE
00000c02: PUSH1 0x20
00000c04: PUSH1 0x04
00000c06: DUP3
00000c07: ADD
00000c08: MSTORE
00000c09: PUSH1 0x15
00000c0b: PUSH1 0x24
00000c0d: DUP3
00000c0e: ADD
00000c0f: MSTORE
00000c10: PUSH21 0x10d85b9b9bdd081cdd185ad9480c08185b5bdd5b9d
00000c26: PUSH1 0x5a
00000c28: SHL
00000c29: PUSH1 0x44
00000c2b: DUP3
00000c2c: ADD
00000c2d: MSTORE
00000c2e: PUSH1 0x64
00000c30: ADD
00000c31: PUSH2 0x0414
00000c34: JUMP
00000c35: JUMPDEST
00000c36: PUSH2 0x0c6a
00000c39: PUSH1 0x01
00000c3b: PUSH1 0x01
00000c3d: PUSH1 0xa0
00000c3f: SHL
00000c40: SUB
00000c41: PUSH32 0x000000000000000000000000f94e7d0710709388bce3161c32b4eea56d3f91cc
00000c62: AND
00000c63: CALLER
00000c64: ADDRESS
00000c65: DUP6
00000c66: PUSH2 0x13c2
00000c69: JUMP
00000c6a: JUMPDEST
00000c6b: PUSH2 0x0c72
00000c6e: PUSH2 0x1003
00000c71: JUMP
00000c72: JUMPDEST
00000c73: CALLER
00000c74: PUSH0
00000c75: SWAP1
00000c76: DUP2
00000c77: MSTORE
00000c78: PUSH1 0x02
00000c7a: PUSH1 0x20
00000c7c: DUP2
00000c7d: DUP2
00000c7e: MSTORE
00000c7f: PUSH1 0x40
00000c81: DUP1
00000c82: DUP5
00000c83: KECCAK256
00000c84: DUP2
00000c85: MLOAD
00000c86: PUSH1 0xc0
00000c88: DUP2
00000c89: ADD
00000c8a: DUP4
00000c8b: MSTORE
00000c8c: DUP8
00000c8d: DUP2
00000c8e: MSTORE
00000c8f: DUP1
00000c90: DUP5
00000c91: ADD
00000c92: DUP8
00000c93: DUP2
00000c94: MSTORE
00000c95: TIMESTAMP
00000c96: SWAP4
00000c97: DUP3
00000c98: ADD
00000c99: SWAP4
00000c9a: DUP5
00000c9b: MSTORE
00000c9c: PUSH1 0x08
00000c9e: SLOAD
00000c9f: PUSH1 0x60
00000ca1: DUP4
00000ca2: ADD
00000ca3: SWAP1
00000ca4: DUP2
00000ca5: MSTORE
00000ca6: PUSH1 0x80
00000ca8: DUP4
00000ca9: ADD
00000caa: DUP9
00000cab: DUP2
00000cac: MSTORE
00000cad: PUSH1 0x06
00000caf: DUP1
00000cb0: SLOAD
00000cb1: PUSH1 0xa0
00000cb3: DUP7
00000cb4: ADD
00000cb5: SWAP1
00000cb6: DUP2
00000cb7: MSTORE
00000cb8: DUP7
00000cb9: SLOAD
00000cba: PUSH1 0x01
00000cbc: DUP1
00000cbd: DUP3
00000cbe: ADD
00000cbf: DUP10
00000cc0: SSTORE
00000cc1: SWAP8
00000cc2: DUP13
00000cc3: MSTORE
00000cc4: SWAP9
00000cc5: DUP12
00000cc6: KECCAK256
00000cc7: SWAP6
00000cc8: MLOAD
00000cc9: SWAP9
00000cca: SWAP1
00000ccb: SWAP2
00000ccc: MUL
00000ccd: SWAP1
00000cce: SWAP5
00000ccf: ADD
00000cd0: SWAP7
00000cd1: DUP8
00000cd2: SSTORE
00000cd3: SWAP2
00000cd4: MLOAD
00000cd5: SWAP4
00000cd6: DUP7
00000cd7: ADD
00000cd8: SWAP4
00000cd9: SWAP1
00000cda: SWAP4
00000cdb: SSTORE
00000cdc: SWAP3
00000cdd: MLOAD
00000cde: SWAP5
00000cdf: DUP5
00000ce0: ADD
00000ce1: SWAP5
00000ce2: SWAP1
00000ce3: SWAP5
00000ce4: SSTORE
00000ce5: MLOAD
00000ce6: PUSH1 0x03
00000ce8: DUP4
00000ce9: ADD
00000cea: SSTORE
00000ceb: MLOAD
00000cec: PUSH1 0x04
00000cee: DUP3
00000cef: ADD
00000cf0: DUP1
00000cf1: SLOAD
00000cf2: PUSH1 0xff
00000cf4: NOT
00000cf5: AND
00000cf6: SWAP2
00000cf7: ISZERO
00000cf8: ISZERO
00000cf9: SWAP2
00000cfa: SWAP1
00000cfb: SWAP2
00000cfc: OR
00000cfd: SWAP1
00000cfe: SSTORE
00000cff: SWAP1
00000d00: MLOAD
00000d01: PUSH1 0x05
00000d03: SWAP1
00000d04: SWAP2
00000d05: ADD
00000d06: SSTORE
00000d07: PUSH1 0x07
00000d09: DUP1
00000d0a: SLOAD
00000d0b: DUP5
00000d0c: SWAP3
00000d0d: SWAP1
00000d0e: PUSH2 0x0d18
00000d11: SWAP1
00000d12: DUP5
00000d13: SWAP1
00000d14: PUSH2 0x160d
00000d17: JUMP
00000d18: JUMPDEST
00000d19: SWAP1
00000d1a: SWAP2
00000d1b: SSTORE
00000d1c: POP
00000d1d: POP
00000d1e: CALLER
00000d1f: PUSH0
00000d20: SWAP1
00000d21: DUP2
00000d22: MSTORE
00000d23: PUSH1 0x02
00000d25: PUSH1 0x20
00000d27: MSTORE
00000d28: PUSH1 0x40
00000d2a: SWAP1
00000d2b: KECCAK256
00000d2c: DUP1
00000d2d: SLOAD
00000d2e: PUSH2 0x0d61
00000d31: SWAP2
00000d32: SWAP1
00000d33: PUSH2 0x0d3e
00000d36: SWAP1
00000d37: PUSH1 0x01
00000d39: SWAP1
00000d3a: PUSH2 0x165c
00000d3d: JUMP
00000d3e: JUMPDEST
00000d3f: DUP2
00000d40: SLOAD
00000d41: DUP2
00000d42: LT
00000d43: PUSH2 0x0d4e
00000d46: JUMPI
00000d47: PUSH2 0x0d4e
00000d4a: PUSH2 0x15e5
00000d4d: JUMP
00000d4e: JUMPDEST
00000d4f: SWAP1
00000d50: PUSH0
00000d51: MSTORE
00000d52: PUSH1 0x20
00000d54: PUSH0
00000d55: KECCAK256
00000d56: SWAP1
00000d57: PUSH1 0x06
00000d59: MUL
00000d5a: ADD
00000d5b: PUSH1 0x01
00000d5d: PUSH2 0x1124
00000d60: JUMP
00000d61: JUMPDEST
00000d62: PUSH1 0x40
00000d64: DUP1
00000d65: MLOAD
00000d66: DUP4
00000d67: DUP2
00000d68: MSTORE
00000d69: PUSH1 0x20
00000d6b: DUP2
00000d6c: ADD
00000d6d: DUP4
00000d6e: SWAP1
00000d6f: MSTORE
00000d70: CALLER
00000d71: SWAP2
00000d72: PUSH32 0x1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90
00000d93: SWAP2
00000d94: ADD
00000d95: PUSH1 0x40
00000d97: MLOAD
00000d98: DUP1
00000d99: SWAP2
00000d9a: SUB
00000d9b: SWAP1
00000d9c: LOG2
00000d9d: PUSH2 0x0da5
00000da0: PUSH1 0x01
00000da2: DUP1
00000da3: SSTORE
00000da4: JUMP
00000da5: JUMPDEST
00000da6: POP
00000da7: POP
00000da8: JUMP
00000da9: JUMPDEST
00000daa: PUSH1 0x01
00000dac: PUSH1 0x01
00000dae: PUSH1 0xa0
00000db0: SHL
00000db1: SUB
00000db2: DUP2
00000db3: AND
00000db4: PUSH0
00000db5: SWAP1
00000db6: DUP2
00000db7: MSTORE
00000db8: PUSH1 0x02
00000dba: PUSH1 0x20
00000dbc: SWAP1
00000dbd: DUP2
00000dbe: MSTORE
00000dbf: PUSH1 0x40
00000dc1: DUP1
00000dc2: DUP4
00000dc3: KECCAK256
00000dc4: DUP1
00000dc5: SLOAD
00000dc6: DUP3
00000dc7: MLOAD
00000dc8: DUP2
00000dc9: DUP6
00000dca: MUL
00000dcb: DUP2
00000dcc: ADD
00000dcd: DUP6
00000dce: ADD
00000dcf: SWAP1
00000dd0: SWAP4
00000dd1: MSTORE
00000dd2: DUP1
00000dd3: DUP4
00000dd4: MSTORE
00000dd5: PUSH1 0x60
00000dd7: SWAP5
00000dd8: SWAP3
00000dd9: SWAP4
00000dda: SWAP2
00000ddb: SWAP3
00000ddc: SWAP1
00000ddd: SWAP2
00000dde: DUP5
00000ddf: ADD
00000de0: JUMPDEST
00000de1: DUP3
00000de2: DUP3
00000de3: LT
00000de4: ISZERO
00000de5: PUSH2 0x0e4c
00000de8: JUMPI
00000de9: PUSH0
00000dea: DUP5
00000deb: DUP2
00000dec: MSTORE
00000ded: PUSH1 0x20
00000def: SWAP1
00000df0: DUP2
00000df1: SWAP1
00000df2: KECCAK256
00000df3: PUSH1 0x40
00000df5: DUP1
00000df6: MLOAD
00000df7: PUSH1 0xc0
00000df9: DUP2
00000dfa: ADD
00000dfb: DUP3
00000dfc: MSTORE
00000dfd: PUSH1 0x06
00000dff: DUP7
00000e00: MUL
00000e01: SWAP1
00000e02: SWAP3
00000e03: ADD
00000e04: DUP1
00000e05: SLOAD
00000e06: DUP4
00000e07: MSTORE
00000e08: PUSH1 0x01
00000e0a: DUP1
00000e0b: DUP3
00000e0c: ADD
00000e0d: SLOAD
00000e0e: DUP5
00000e0f: DUP7
00000e10: ADD
00000e11: MSTORE
00000e12: PUSH1 0x02
00000e14: DUP3
00000e15: ADD
00000e16: SLOAD
00000e17: SWAP3
00000e18: DUP5
00000e19: ADD
00000e1a: SWAP3
00000e1b: SWAP1
00000e1c: SWAP3
00000e1d: MSTORE
00000e1e: PUSH1 0x03
00000e20: DUP2
00000e21: ADD
00000e22: SLOAD
00000e23: PUSH1 0x60
00000e25: DUP5
00000e26: ADD
00000e27: MSTORE
00000e28: PUSH1 0x04
00000e2a: DUP2
00000e2b: ADD
00000e2c: SLOAD
00000e2d: PUSH1 0xff
00000e2f: AND
00000e30: ISZERO
00000e31: ISZERO
00000e32: PUSH1 0x80
00000e34: DUP5
00000e35: ADD
00000e36: MSTORE
00000e37: PUSH1 0x05
00000e39: ADD
00000e3a: SLOAD
00000e3b: PUSH1 0xa0
00000e3d: DUP4
00000e3e: ADD
00000e3f: MSTORE
00000e40: SWAP1
00000e41: DUP4
00000e42: MSTORE
00000e43: SWAP1
00000e44: SWAP3
00000e45: ADD
00000e46: SWAP2
00000e47: ADD
00000e48: PUSH2 0x0de0
00000e4b: JUMP
00000e4c: JUMPDEST
00000e4d: POP
00000e4e: POP
00000e4f: POP
00000e50: POP
00000e51: SWAP1
00000e52: POP
00000e53: SWAP2
00000e54: SWAP1
00000e55: POP
00000e56: JUMP
00000e57: JUMPDEST
00000e58: PUSH2 0x0e5f
00000e5b: PUSH2 0x1347
00000e5e: JUMP
00000e5f: JUMPDEST
00000e60: PUSH2 0x0e67
00000e63: PUSH2 0x1003
00000e66: JUMP
00000e67: JUMPDEST
00000e68: PUSH0
00000e69: CALLVALUE
00000e6a: GT
00000e6b: PUSH2 0x0ea9
00000e6e: JUMPI
00000e6f: PUSH1 0x40
00000e71: MLOAD
00000e72: PUSH3 0x461bcd
00000e76: PUSH1 0xe5
00000e78: SHL
00000e79: DUP2
00000e7a: MSTORE
00000e7b: PUSH1 0x20
00000e7d: PUSH1 0x04
00000e7f: DUP3
00000e80: ADD
00000e81: MSTORE
00000e82: PUSH1 0x10
00000e84: PUSH1 0x24
00000e86: DUP3
00000e87: ADD
00000e88: MSTORE
00000e89: PUSH16 0x139bc81155120819195c1bdcda5d1959
00000e9a: PUSH1 0x82
00000e9c: SHL
00000e9d: PUSH1 0x44
00000e9f: DUP3
00000ea0: ADD
00000ea1: MSTORE
00000ea2: PUSH1 0x64
00000ea4: ADD
00000ea5: PUSH2 0x0414
00000ea8: JUMP
00000ea9: JUMPDEST
00000eaa: PUSH1 0x06
00000eac: SLOAD
00000ead: DUP2
00000eae: EQ
00000eaf: PUSH2 0x0ef2
00000eb2: JUMPI
00000eb3: PUSH1 0x40
00000eb5: MLOAD
00000eb6: PUSH3 0x461bcd
00000eba: PUSH1 0xe5
00000ebc: SHL
00000ebd: DUP2
00000ebe: MSTORE
00000ebf: PUSH1 0x20
00000ec1: PUSH1 0x04
00000ec3: DUP3
00000ec4: ADD
00000ec5: MSTORE
00000ec6: PUSH1 0x15
00000ec8: PUSH1 0x24
00000eca: DUP3
00000ecb: ADD
00000ecc: MSTORE
00000ecd: PUSH21 0x125b9d985b1a59081c995dd85c99081c195c9a5bd9
00000ee3: PUSH1 0x5a
00000ee5: SHL
00000ee6: PUSH1 0x44
00000ee8: DUP3
00000ee9: ADD
00000eea: MSTORE
00000eeb: PUSH1 0x64
00000eed: ADD
00000eee: PUSH2 0x0414
00000ef1: JUMP
00000ef2: JUMPDEST
00000ef3: PUSH0
00000ef4: DUP2
00000ef5: DUP2
00000ef6: MSTORE
00000ef7: PUSH1 0x03
00000ef9: PUSH1 0x20
00000efb: MSTORE
00000efc: PUSH1 0x40
00000efe: DUP2
00000eff: KECCAK256
00000f00: DUP1
00000f01: SLOAD
00000f02: CALLVALUE
00000f03: SWAP3
00000f04: SWAP1
00000f05: PUSH2 0x0f0f
00000f08: SWAP1
00000f09: DUP5
00000f0a: SWAP1
00000f0b: PUSH2 0x160d
00000f0e: JUMP
00000f0f: JUMPDEST
00000f10: SWAP1
00000f11: SWAP2
00000f12: SSTORE
00000f13: POP
00000f14: POP
00000f15: PUSH1 0x40
00000f17: DUP1
00000f18: MLOAD
00000f19: DUP3
00000f1a: DUP2
00000f1b: MSTORE
00000f1c: CALLVALUE
00000f1d: PUSH1 0x20
00000f1f: DUP3
00000f20: ADD
00000f21: MSTORE
00000f22: PUSH32 0xbf2ebcc991369bcf488ef5738352a5d8998bd7a2c138128ca91ec96afe123fd6
00000f43: SWAP2
00000f44: ADD
00000f45: PUSH2 0x0b55
00000f48: JUMP
00000f49: JUMPDEST
00000f4a: PUSH1 0x02
00000f4c: PUSH1 0x20
00000f4e: MSTORE
00000f4f: DUP2
00000f50: PUSH0
00000f51: MSTORE
00000f52: PUSH1 0x40
00000f54: PUSH0
00000f55: KECCAK256
00000f56: DUP2
00000f57: DUP2
00000f58: SLOAD
00000f59: DUP2
00000f5a: LT
00000f5b: PUSH2 0x0f62
00000f5e: JUMPI
00000f5f: PUSH0
00000f60: DUP1
00000f61: REVERT
00000f62: JUMPDEST
00000f63: PUSH0
00000f64: SWAP2
00000f65: DUP3
00000f66: MSTORE
00000f67: PUSH1 0x20
00000f69: SWAP1
00000f6a: SWAP2
00000f6b: KECCAK256
00000f6c: PUSH1 0x06
00000f6e: SWAP1
00000f6f: SWAP2
00000f70: MUL
00000f71: ADD
00000f72: DUP1
00000f73: SLOAD
00000f74: PUSH1 0x01
00000f76: DUP3
00000f77: ADD
00000f78: SLOAD
00000f79: PUSH1 0x02
00000f7b: DUP4
00000f7c: ADD
00000f7d: SLOAD
00000f7e: PUSH1 0x03
00000f80: DUP5
00000f81: ADD
00000f82: SLOAD
00000f83: PUSH1 0x04
00000f85: DUP6
00000f86: ADD
00000f87: SLOAD
00000f88: PUSH1 0x05
00000f8a: SWAP1
00000f8b: SWAP6
00000f8c: ADD
00000f8d: SLOAD
00000f8e: SWAP4
00000f8f: SWAP7
00000f90: POP
00000f91: SWAP2
00000f92: SWAP5
00000f93: POP
00000f94: SWAP3
00000f95: SWAP1
00000f96: SWAP2
00000f97: PUSH1 0xff
00000f99: SWAP1
00000f9a: SWAP2
00000f9b: AND
00000f9c: SWAP1
00000f9d: DUP7
00000f9e: JUMP
00000f9f: JUMPDEST
00000fa0: PUSH2 0x0fa7
00000fa3: PUSH2 0x1347
00000fa6: JUMP
00000fa7: JUMPDEST
00000fa8: PUSH1 0x01
00000faa: PUSH1 0x01
00000fac: PUSH1 0xa0
00000fae: SHL
00000faf: SUB
00000fb0: DUP2
00000fb1: AND
00000fb2: PUSH2 0x0fd0
00000fb5: JUMPI
00000fb6: PUSH1 0x40
00000fb8: MLOAD
00000fb9: PUSH4 0x1e4fbdf7
00000fbe: PUSH1 0xe0
00000fc0: SHL
00000fc1: DUP2
00000fc2: MSTORE
00000fc3: PUSH0
00000fc4: PUSH1 0x04
00000fc6: DUP3
00000fc7: ADD
00000fc8: MSTORE
00000fc9: PUSH1 0x24
00000fcb: ADD
00000fcc: PUSH2 0x0414
00000fcf: JUMP
00000fd0: JUMPDEST
00000fd1: PUSH2 0x0875
00000fd4: DUP2
00000fd5: PUSH2 0x1373
00000fd8: JUMP
00000fd9: JUMPDEST
00000fda: PUSH1 0x02
00000fdc: PUSH1 0x01
00000fde: SLOAD
00000fdf: SUB
00000fe0: PUSH2 0x0ffc
00000fe3: JUMPI
00000fe4: PUSH1 0x40
00000fe6: MLOAD
00000fe7: PUSH4 0x3ee5aeb5
00000fec: PUSH1 0xe0
00000fee: SHL
00000fef: DUP2
00000ff0: MSTORE
00000ff1: PUSH1 0x04
00000ff3: ADD
00000ff4: PUSH1 0x40
00000ff6: MLOAD
00000ff7: DUP1
00000ff8: SWAP2
00000ff9: SUB
00000ffa: SWAP1
00000ffb: REVERT
00000ffc: JUMPDEST
00000ffd: PUSH1 0x02
00000fff: PUSH1 0x01
00001001: SSTORE
00001002: JUMP
00001003: JUMPDEST
00001004: PUSH1 0x06
00001006: SLOAD
00001007: PUSH0
00001008: SWAP1
00001009: DUP2
0000100a: MSTORE
0000100b: PUSH1 0x03
0000100d: PUSH1 0x20
0000100f: MSTORE
00001010: PUSH1 0x40
00001012: SWAP1
00001013: KECCAK256
00001014: PUSH1 0x02
00001016: ADD
00001017: SLOAD
00001018: TIMESTAMP
00001019: LT
0000101a: PUSH2 0x0b71
0000101d: JUMPI
0000101e: PUSH1 0x06
00001020: DUP1
00001021: SLOAD
00001022: SWAP1
00001023: DUP2
00001024: SWAP1
00001025: PUSH0
00001026: PUSH2 0x102e
00001029: DUP4
0000102a: PUSH2 0x166f
0000102d: JUMP
0000102e: JUMPDEST
0000102f: SWAP2
00001030: SWAP1
00001031: POP
00001032: SSTORE
00001033: POP
00001034: PUSH1 0x40
00001036: MLOAD
00001037: DUP1
00001038: PUSH1 0x60
0000103a: ADD
0000103b: PUSH1 0x40
0000103d: MSTORE
0000103e: DUP1
0000103f: PUSH0
00001040: DUP2
00001041: MSTORE
00001042: PUSH1 0x20
00001044: ADD
00001045: PUSH1 0x03
00001047: PUSH0
00001048: PUSH1 0x01
0000104a: PUSH1 0x06
0000104c: SLOAD
0000104d: PUSH2 0x1056
00001050: SWAP2
00001051: SWAP1
00001052: PUSH2 0x165c
00001055: JUMP
00001056: JUMPDEST
00001057: DUP2
00001058: MSTORE
00001059: PUSH1 0x20
0000105b: ADD
0000105c: SWAP1
0000105d: DUP2
0000105e: MSTORE
0000105f: PUSH1 0x20
00001061: ADD
00001062: PUSH0
00001063: KECCAK256
00001064: PUSH1 0x02
00001066: ADD
00001067: SLOAD
00001068: DUP2
00001069: MSTORE
0000106a: PUSH1 0x20
0000106c: ADD
0000106d: PUSH3 0x278d00
00001071: PUSH1 0x03
00001073: PUSH0
00001074: PUSH1 0x01
00001076: PUSH1 0x06
00001078: SLOAD
00001079: PUSH2 0x1082
0000107c: SWAP2
0000107d: SWAP1
0000107e: PUSH2 0x165c
00001081: JUMP
00001082: JUMPDEST
00001083: DUP2
00001084: MSTORE
00001085: PUSH1 0x20
00001087: ADD
00001088: SWAP1
00001089: DUP2
0000108a: MSTORE
0000108b: PUSH1 0x20
0000108d: ADD
0000108e: PUSH0
0000108f: KECCAK256
00001090: PUSH1 0x02
00001092: ADD
00001093: SLOAD
00001094: PUSH2 0x109d
00001097: SWAP2
00001098: SWAP1
00001099: PUSH2 0x160d
0000109c: JUMP
0000109d: JUMPDEST
0000109e: SWAP1
0000109f: MSTORE
000010a0: PUSH1 0x06
000010a2: DUP1
000010a3: SLOAD
000010a4: PUSH0
000010a5: SWAP1
000010a6: DUP2
000010a7: MSTORE
000010a8: PUSH1 0x03
000010aa: PUSH1 0x20
000010ac: SWAP1
000010ad: DUP2
000010ae: MSTORE
000010af: PUSH1 0x40
000010b1: DUP1
000010b2: DUP4
000010b3: KECCAK256
000010b4: DUP6
000010b5: MLOAD
000010b6: DUP2
000010b7: SSTORE
000010b8: SWAP2
000010b9: DUP6
000010ba: ADD
000010bb: MLOAD
000010bc: PUSH1 0x01
000010be: DUP1
000010bf: DUP5
000010c0: ADD
000010c1: SWAP2
000010c2: SWAP1
000010c3: SWAP2
000010c4: SSTORE
000010c5: SWAP5
000010c6: DUP2
000010c7: ADD
000010c8: MLOAD
000010c9: PUSH1 0x02
000010cb: SWAP3
000010cc: DUP4
000010cd: ADD
000010ce: SSTORE
000010cf: SWAP3
000010d0: SLOAD
000010d1: DUP1
000010d2: DUP4
000010d3: MSTORE
000010d4: SWAP2
000010d5: DUP4
000010d6: SWAP1
000010d7: KECCAK256
000010d8: SWAP4
000010d9: DUP5
000010da: ADD
000010db: SLOAD
000010dc: SWAP4
000010dd: ADD
000010de: SLOAD
000010df: SWAP2
000010e0: MLOAD
000010e1: PUSH32 0x629c7b02d1ce7802556d2aa33f6af027bafe0d096664562d0ecf40b6bdc33c8f
00001102: SWAP4
00001103: PUSH2 0x0b55
00001106: SWAP4
00001107: DUP7
00001108: SWAP4
00001109: SWAP3
0000110a: SWAP4
0000110b: DUP5
0000110c: MSTORE
0000110d: PUSH1 0x20
0000110f: DUP5
00001110: ADD
00001111: SWAP3
00001112: SWAP1
00001113: SWAP3
00001114: MSTORE
00001115: PUSH1 0x40
00001117: DUP4
00001118: ADD
00001119: MSTORE
0000111a: PUSH1 0x60
0000111c: DUP3
0000111d: ADD
0000111e: MSTORE
0000111f: PUSH1 0x80
00001121: ADD
00001122: SWAP1
00001123: JUMP
00001124: JUMPDEST
00001125: PUSH0
00001126: PUSH3 0x278d00
0000112a: DUP4
0000112b: PUSH1 0x01
0000112d: ADD
0000112e: SLOAD
0000112f: EQ
00001130: PUSH2 0x1164
00001133: JUMPI
00001134: PUSH3 0x76a700
00001138: DUP4
00001139: PUSH1 0x01
0000113b: ADD
0000113c: SLOAD
0000113d: EQ
0000113e: PUSH2 0x115d
00001141: JUMPI
00001142: PUSH3 0xed4e00
00001146: DUP4
00001147: PUSH1 0x01
00001149: ADD
0000114a: SLOAD
0000114b: EQ
0000114c: PUSH2 0x1156
0000114f: JUMPI
00001150: PUSH1 0x04
00001152: PUSH2 0x1167
00001155: JUMP
00001156: JUMPDEST
00001157: PUSH1 0x03
00001159: PUSH2 0x1167
0000115c: JUMP
0000115d: JUMPDEST
0000115e: PUSH1 0x02
00001160: PUSH2 0x1167
00001163: JUMP
00001164: JUMPDEST
00001165: PUSH1 0x01
00001167: JUMPDEST
00001168: PUSH1 0xff
0000116a: AND
0000116b: SWAP1
0000116c: POP
0000116d: PUSH0
0000116e: DUP2
0000116f: DUP5
00001170: PUSH0
00001171: ADD
00001172: SLOAD
00001173: PUSH2 0x117c
00001176: SWAP2
00001177: SWAP1
00001178: PUSH2 0x1626
0000117b: JUMP
0000117c: JUMPDEST
0000117d: SWAP1
0000117e: POP
0000117f: PUSH0
00001180: PUSH3 0x278d00
00001184: DUP6
00001185: PUSH1 0x01
00001187: ADD
00001188: SLOAD
00001189: PUSH2 0x1192
0000118c: SWAP2
0000118d: SWAP1
0000118e: PUSH2 0x163d
00001191: JUMP
00001192: JUMPDEST
00001193: SWAP1
00001194: POP
00001195: PUSH0
00001196: DUP2
00001197: DUP7
00001198: PUSH1 0x05
0000119a: ADD
0000119b: SLOAD
0000119c: PUSH2 0x11a5
0000119f: SWAP2
000011a0: SWAP1
000011a1: PUSH2 0x160d
000011a4: JUMP
000011a5: JUMPDEST
000011a6: PUSH2 0x11b0
000011a9: SWAP1
000011aa: PUSH1 0x01
000011ac: PUSH2 0x160d
000011af: JUMP
000011b0: JUMPDEST
000011b1: PUSH1 0x05
000011b3: DUP8
000011b4: ADD
000011b5: SLOAD
000011b6: SWAP1
000011b7: SWAP2
000011b8: POP
000011b9: JUMPDEST
000011ba: DUP2
000011bb: DUP2
000011bc: GT
000011bd: PUSH2 0x12da
000011c0: JUMPI
000011c1: PUSH0
000011c2: PUSH2 0x11ca
000011c5: DUP3
000011c6: PUSH2 0x1401
000011c9: JUMP
000011ca: JUMPDEST
000011cb: SWAP1
000011cc: POP
000011cd: DUP7
000011ce: ISZERO
000011cf: DUP1
000011d0: ISZERO
000011d1: PUSH2 0x11da
000011d4: JUMPI
000011d5: POP
000011d6: DUP1
000011d7: TIMESTAMP
000011d8: LT
000011d9: ISZERO
000011da: JUMPDEST
000011db: ISZERO
000011dc: PUSH2 0x11e5
000011df: JUMPI
000011e0: POP
000011e1: PUSH2 0x12c8
000011e4: JUMP
000011e5: JUMPDEST
000011e6: DUP1
000011e7: DUP9
000011e8: PUSH1 0x03
000011ea: ADD
000011eb: SLOAD
000011ec: DUP10
000011ed: PUSH1 0x02
000011ef: ADD
000011f0: SLOAD
000011f1: PUSH2 0x11fa
000011f4: SWAP2
000011f5: SWAP1
000011f6: PUSH2 0x160d
000011f9: JUMP
000011fa: JUMPDEST
000011fb: GT
000011fc: ISZERO
000011fd: DUP1
000011fe: ISZERO
000011ff: PUSH2 0x1229
00001202: JUMPI
00001203: POP
00001204: DUP1
00001205: DUP9
00001206: PUSH1 0x03
00001208: ADD
00001209: SLOAD
0000120a: DUP10
0000120b: PUSH1 0x01
0000120d: ADD
0000120e: SLOAD
0000120f: DUP11
00001210: PUSH1 0x02
00001212: ADD
00001213: SLOAD
00001214: PUSH2 0x121d
00001217: SWAP2
00001218: SWAP1
00001219: PUSH2 0x160d
0000121c: JUMP
0000121d: JUMPDEST
0000121e: PUSH2 0x1227
00001221: SWAP2
00001222: SWAP1
00001223: PUSH2 0x160d
00001226: JUMP
00001227: JUMPDEST
00001228: GT
00001229: JUMPDEST
0000122a: ISZERO
0000122b: PUSH2 0x12c6
0000122e: JUMPI
0000122f: DUP7
00001230: ISZERO
00001231: PUSH2 0x125c
00001234: JUMPI
00001235: PUSH0
00001236: DUP3
00001237: DUP2
00001238: MSTORE
00001239: PUSH1 0x04
0000123b: PUSH1 0x20
0000123d: MSTORE
0000123e: PUSH1 0x40
00001240: DUP2
00001241: KECCAK256
00001242: DUP1
00001243: SLOAD
00001244: DUP8
00001245: SWAP3
00001246: SWAP1
00001247: PUSH2 0x1251
0000124a: SWAP1
0000124b: DUP5
0000124c: SWAP1
0000124d: PUSH2 0x160d
00001250: JUMP
00001251: JUMPDEST
00001252: SWAP1
00001253: SWAP2
00001254: SSTORE
00001255: POP
00001256: PUSH2 0x127f
00001259: SWAP1
0000125a: POP
0000125b: JUMP
0000125c: JUMPDEST
0000125d: PUSH0
0000125e: DUP3
0000125f: DUP2
00001260: MSTORE
00001261: PUSH1 0x04
00001263: PUSH1 0x20
00001265: MSTORE
00001266: PUSH1 0x40
00001268: DUP2
00001269: KECCAK256
0000126a: DUP1
0000126b: SLOAD
0000126c: DUP8
0000126d: SWAP3
0000126e: SWAP1
0000126f: PUSH2 0x1279
00001272: SWAP1
00001273: DUP5
00001274: SWAP1
00001275: PUSH2 0x165c
00001278: JUMP
00001279: JUMPDEST
0000127a: SWAP1
0000127b: SWAP2
0000127c: SSTORE
0000127d: POP
0000127e: POP
0000127f: JUMPDEST
00001280: PUSH0
00001281: DUP3
00001282: DUP2
00001283: MSTORE
00001284: PUSH1 0x04
00001286: PUSH1 0x20
00001288: SWAP1
00001289: DUP2
0000128a: MSTORE
0000128b: PUSH1 0x40
0000128d: SWAP2
0000128e: DUP3
0000128f: SWAP1
00001290: KECCAK256
00001291: SLOAD
00001292: DUP3
00001293: MLOAD
00001294: DUP6
00001295: DUP2
00001296: MSTORE
00001297: SWAP2
00001298: DUP3
00001299: ADD
0000129a: MSTORE
0000129b: PUSH32 0x86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b
000012bc: SWAP2
000012bd: ADD
000012be: PUSH1 0x40
000012c0: MLOAD
000012c1: DUP1
000012c2: SWAP2
000012c3: SUB
000012c4: SWAP1
000012c5: LOG1
000012c6: JUMPDEST
000012c7: POP
000012c8: JUMPDEST
000012c9: DUP1
000012ca: PUSH2 0x12d2
000012cd: DUP2
000012ce: PUSH2 0x166f
000012d1: JUMP
000012d2: JUMPDEST
000012d3: SWAP2
000012d4: POP
000012d5: POP
000012d6: PUSH2 0x11b9
000012d9: JUMP
000012da: JUMPDEST
000012db: POP
000012dc: POP
000012dd: POP
000012de: POP
000012df: POP
000012e0: POP
000012e1: POP
000012e2: JUMP
000012e3: JUMPDEST
000012e4: PUSH1 0x40
000012e6: MLOAD
000012e7: PUSH1 0x01
000012e9: PUSH1 0x01
000012eb: PUSH1 0xa0
000012ed: SHL
000012ee: SUB
000012ef: DUP4
000012f0: DUP2
000012f1: AND
000012f2: PUSH1 0x24
000012f4: DUP4
000012f5: ADD
000012f6: MSTORE
000012f7: PUSH1 0x44
000012f9: DUP3
000012fa: ADD
000012fb: DUP4
000012fc: SWAP1
000012fd: MSTORE
000012fe: PUSH2 0x1342
00001301: SWAP2
00001302: DUP6
00001303: SWAP2
00001304: DUP3
00001305: AND
00001306: SWAP1
00001307: PUSH4 0xa9059cbb
0000130c: SWAP1
0000130d: PUSH1 0x64
0000130f: ADD
00001310: JUMPDEST
00001311: PUSH1 0x40
00001313: MLOAD
00001314: PUSH1 0x20
00001316: DUP2
00001317: DUP4
00001318: SUB
00001319: SUB
0000131a: DUP2
0000131b: MSTORE
0000131c: SWAP1
0000131d: PUSH1 0x40
0000131f: MSTORE
00001320: SWAP2
00001321: POP
00001322: PUSH1 0xe0
00001324: SHL
00001325: PUSH1 0x20
00001327: DUP3
00001328: ADD
00001329: DUP1
0000132a: MLOAD
0000132b: PUSH1 0x01
0000132d: PUSH1 0x01
0000132f: PUSH1 0xe0
00001331: SHL
00001332: SUB
00001333: DUP4
00001334: DUP2
00001335: DUP4
00001336: AND
00001337: OR
00001338: DUP4
00001339: MSTORE
0000133a: POP
0000133b: POP
0000133c: POP
0000133d: POP
0000133e: PUSH2 0x146d
00001341: JUMP
00001342: JUMPDEST
00001343: POP
00001344: POP
00001345: POP
00001346: JUMP
00001347: JUMPDEST
00001348: PUSH0
00001349: SLOAD
0000134a: PUSH1 0x01
0000134c: PUSH1 0x01
0000134e: PUSH1 0xa0
00001350: SHL
00001351: SUB
00001352: AND
00001353: CALLER
00001354: EQ
00001355: PUSH2 0x0b71
00001358: JUMPI
00001359: PUSH1 0x40
0000135b: MLOAD
0000135c: PUSH4 0x118cdaa7
00001361: PUSH1 0xe0
00001363: SHL
00001364: DUP2
00001365: MSTORE
00001366: CALLER
00001367: PUSH1 0x04
00001369: DUP3
0000136a: ADD
0000136b: MSTORE
0000136c: PUSH1 0x24
0000136e: ADD
0000136f: PUSH2 0x0414
00001372: JUMP
00001373: JUMPDEST
00001374: PUSH0
00001375: DUP1
00001376: SLOAD
00001377: PUSH1 0x01
00001379: PUSH1 0x01
0000137b: PUSH1 0xa0
0000137d: SHL
0000137e: SUB
0000137f: DUP4
00001380: DUP2
00001381: AND
00001382: PUSH1 0x01
00001384: PUSH1 0x01
00001386: PUSH1 0xa0
00001388: SHL
00001389: SUB
0000138a: NOT
0000138b: DUP4
0000138c: AND
0000138d: DUP2
0000138e: OR
0000138f: DUP5
00001390: SSTORE
00001391: PUSH1 0x40
00001393: MLOAD
00001394: SWAP2
00001395: SWAP1
00001396: SWAP3
00001397: AND
00001398: SWAP3
00001399: DUP4
0000139a: SWAP2
0000139b: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000013bc: SWAP2
000013bd: SWAP1
000013be: LOG3
000013bf: POP
000013c0: POP
000013c1: JUMP
000013c2: JUMPDEST
000013c3: PUSH1 0x40
000013c5: MLOAD
000013c6: PUSH1 0x01
000013c8: PUSH1 0x01
000013ca: PUSH1 0xa0
000013cc: SHL
000013cd: SUB
000013ce: DUP5
000013cf: DUP2
000013d0: AND
000013d1: PUSH1 0x24
000013d3: DUP4
000013d4: ADD
000013d5: MSTORE
000013d6: DUP4
000013d7: DUP2
000013d8: AND
000013d9: PUSH1 0x44
000013db: DUP4
000013dc: ADD
000013dd: MSTORE
000013de: PUSH1 0x64
000013e0: DUP3
000013e1: ADD
000013e2: DUP4
000013e3: SWAP1
000013e4: MSTORE
000013e5: PUSH2 0x13fb
000013e8: SWAP2
000013e9: DUP7
000013ea: SWAP2
000013eb: DUP3
000013ec: AND
000013ed: SWAP1
000013ee: PUSH4 0x23b872dd
000013f3: SWAP1
000013f4: PUSH1 0x84
000013f6: ADD
000013f7: PUSH2 0x1310
000013fa: JUMP
000013fb: JUMPDEST
000013fc: POP
000013fd: POP
000013fe: POP
000013ff: POP
00001400: JUMP
00001401: JUMPDEST
00001402: PUSH0
00001403: PUSH1 0x06
00001405: SLOAD
00001406: DUP3
00001407: GT
00001408: PUSH2 0x1420
0000140b: JUMPI
0000140c: POP
0000140d: PUSH0
0000140e: SWAP1
0000140f: DUP2
00001410: MSTORE
00001411: PUSH1 0x03
00001413: PUSH1 0x20
00001415: MSTORE
00001416: PUSH1 0x40
00001418: SWAP1
00001419: KECCAK256
0000141a: PUSH1 0x02
0000141c: ADD
0000141d: SLOAD
0000141e: SWAP1
0000141f: JUMP
00001420: JUMPDEST
00001421: PUSH0
00001422: DUP1
00001423: MSTORE
00001424: PUSH1 0x03
00001426: PUSH1 0x20
00001428: MSTORE
00001429: PUSH32 0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92f01
0000144a: SLOAD
0000144b: PUSH2 0x1457
0000144e: PUSH3 0x278d00
00001452: DUP5
00001453: PUSH2 0x1626
00001456: JUMP
00001457: JUMPDEST
00001458: PUSH2 0x1461
0000145b: SWAP1
0000145c: DUP3
0000145d: PUSH2 0x160d
00001460: JUMP
00001461: JUMPDEST
00001462: SWAP4
00001463: SWAP3
00001464: POP
00001465: POP
00001466: POP
00001467: JUMP
00001468: JUMPDEST
00001469: SWAP2
0000146a: SWAP1
0000146b: POP
0000146c: JUMP
0000146d: JUMPDEST
0000146e: PUSH0
0000146f: PUSH0
00001470: PUSH1 0x20
00001472: PUSH0
00001473: DUP5
00001474: MLOAD
00001475: PUSH1 0x20
00001477: DUP7
00001478: ADD
00001479: PUSH0
0000147a: DUP9
0000147b: GAS
0000147c: CALL
0000147d: DUP1
0000147e: PUSH2 0x148c
00001481: JUMPI
00001482: PUSH1 0x40
00001484: MLOAD
00001485: RETURNDATASIZE
00001486: PUSH0
00001487: DUP3
00001488: RETURNDATACOPY
00001489: RETURNDATASIZE
0000148a: DUP2
0000148b: REVERT
0000148c: JUMPDEST
0000148d: POP
0000148e: POP
0000148f: PUSH0
00001490: MLOAD
00001491: RETURNDATASIZE
00001492: SWAP2
00001493: POP
00001494: DUP2
00001495: ISZERO
00001496: PUSH2 0x14a3
00001499: JUMPI
0000149a: DUP1
0000149b: PUSH1 0x01
0000149d: EQ
0000149e: ISZERO
0000149f: PUSH2 0x14b0
000014a2: JUMP
000014a3: JUMPDEST
000014a4: PUSH1 0x01
000014a6: PUSH1 0x01
000014a8: PUSH1 0xa0
000014aa: SHL
000014ab: SUB
000014ac: DUP5
000014ad: AND
000014ae: EXTCODESIZE
000014af: ISZERO
000014b0: JUMPDEST
000014b1: ISZERO
000014b2: PUSH2 0x13fb
000014b5: JUMPI
000014b6: PUSH1 0x40
000014b8: MLOAD
000014b9: PUSH4 0x5274afe7
000014be: PUSH1 0xe0
000014c0: SHL
000014c1: DUP2
000014c2: MSTORE
000014c3: PUSH1 0x01
000014c5: PUSH1 0x01
000014c7: PUSH1 0xa0
000014c9: SHL
000014ca: SUB
000014cb: DUP6
000014cc: AND
000014cd: PUSH1 0x04
000014cf: DUP3
000014d0: ADD
000014d1: MSTORE
000014d2: PUSH1 0x24
000014d4: ADD
000014d5: PUSH2 0x0414
000014d8: JUMP
000014d9: JUMPDEST
000014da: PUSH0
000014db: PUSH1 0x20
000014dd: DUP3
000014de: DUP5
000014df: SUB
000014e0: SLT
000014e1: ISZERO
000014e2: PUSH2 0x14e9
000014e5: JUMPI
000014e6: PUSH0
000014e7: PUSH0
000014e8: REVERT
000014e9: JUMPDEST
000014ea: POP
000014eb: CALLDATALOAD
000014ec: SWAP2
000014ed: SWAP1
000014ee: POP
000014ef: JUMP
000014f0: JUMPDEST
000014f1: PUSH0
000014f2: PUSH0
000014f3: PUSH1 0x40
000014f5: DUP4
000014f6: DUP6
000014f7: SUB
000014f8: SLT
000014f9: ISZERO
000014fa: PUSH2 0x1501
000014fd: JUMPI
000014fe: PUSH0
000014ff: PUSH0
00001500: REVERT
00001501: JUMPDEST
00001502: POP
00001503: POP
00001504: DUP1
00001505: CALLDATALOAD
00001506: SWAP3
00001507: PUSH1 0x20
00001509: SWAP1
0000150a: SWAP2
0000150b: ADD
0000150c: CALLDATALOAD
0000150d: SWAP2
0000150e: POP
0000150f: JUMP
00001510: JUMPDEST
00001511: DUP1
00001512: CALLDATALOAD
00001513: PUSH1 0x01
00001515: PUSH1 0x01
00001517: PUSH1 0xa0
00001519: SHL
0000151a: SUB
0000151b: DUP2
0000151c: AND
0000151d: DUP2
0000151e: EQ
0000151f: PUSH2 0x1468
00001522: JUMPI
00001523: PUSH0
00001524: PUSH0
00001525: REVERT
00001526: JUMPDEST
00001527: PUSH0
00001528: PUSH1 0x20
0000152a: DUP3
0000152b: DUP5
0000152c: SUB
0000152d: SLT
0000152e: ISZERO
0000152f: PUSH2 0x1536
00001532: JUMPI
00001533: PUSH0
00001534: PUSH0
00001535: REVERT
00001536: JUMPDEST
00001537: PUSH2 0x1461
0000153a: DUP3
0000153b: PUSH2 0x1510
0000153e: JUMP
0000153f: JUMPDEST
00001540: PUSH1 0x20
00001542: DUP1
00001543: DUP3
00001544: MSTORE
00001545: DUP3
00001546: MLOAD
00001547: DUP3
00001548: DUP3
00001549: ADD
0000154a: DUP2
0000154b: SWAP1
0000154c: MSTORE
0000154d: PUSH0
0000154e: SWAP2
0000154f: DUP5
00001550: ADD
00001551: SWAP1
00001552: PUSH1 0x40
00001554: DUP5
00001555: ADD
00001556: SWAP1
00001557: DUP4
00001558: JUMPDEST
00001559: DUP2
0000155a: DUP2
0000155b: LT
0000155c: ISZERO
0000155d: PUSH2 0x15b2
00001560: JUMPI
00001561: DUP4
00001562: MLOAD
00001563: DUP1
00001564: MLOAD
00001565: DUP5
00001566: MSTORE
00001567: PUSH1 0x20
00001569: DUP2
0000156a: ADD
0000156b: MLOAD
0000156c: PUSH1 0x20
0000156e: DUP6
0000156f: ADD
00001570: MSTORE
00001571: PUSH1 0x40
00001573: DUP2
00001574: ADD
00001575: MLOAD
00001576: PUSH1 0x40
00001578: DUP6
00001579: ADD
0000157a: MSTORE
0000157b: PUSH1 0x60
0000157d: DUP2
0000157e: ADD
0000157f: MLOAD
00001580: PUSH1 0x60
00001582: DUP6
00001583: ADD
00001584: MSTORE
00001585: PUSH1 0x80
00001587: DUP2
00001588: ADD
00001589: MLOAD
0000158a: ISZERO
0000158b: ISZERO
0000158c: PUSH1 0x80
0000158e: DUP6
0000158f: ADD
00001590: MSTORE
00001591: PUSH1 0xa0
00001593: DUP2
00001594: ADD
00001595: MLOAD
00001596: PUSH1 0xa0
00001598: DUP6
00001599: ADD
0000159a: MSTORE
0000159b: POP
0000159c: PUSH1 0xc0
0000159e: DUP4
0000159f: ADD
000015a0: SWAP3
000015a1: POP
000015a2: PUSH1 0x20
000015a4: DUP5
000015a5: ADD
000015a6: SWAP4
000015a7: POP
000015a8: PUSH1 0x01
000015aa: DUP2
000015ab: ADD
000015ac: SWAP1
000015ad: POP
000015ae: PUSH2 0x1558
000015b1: JUMP
000015b2: JUMPDEST
000015b3: POP
000015b4: SWAP1
000015b5: SWAP6
000015b6: SWAP5
000015b7: POP
000015b8: POP
000015b9: POP
000015ba: POP
000015bb: POP
000015bc: JUMP
000015bd: JUMPDEST
000015be: PUSH0
000015bf: PUSH0
000015c0: PUSH1 0x40
000015c2: DUP4
000015c3: DUP6
000015c4: SUB
000015c5: SLT
000015c6: ISZERO
000015c7: PUSH2 0x15ce
000015ca: JUMPI
000015cb: PUSH0
000015cc: PUSH0
000015cd: REVERT
000015ce: JUMPDEST
000015cf: PUSH2 0x15d7
000015d2: DUP4
000015d3: PUSH2 0x1510
000015d6: JUMP
000015d7: JUMPDEST
000015d8: SWAP5
000015d9: PUSH1 0x20
000015db: SWAP4
000015dc: SWAP1
000015dd: SWAP4
000015de: ADD
000015df: CALLDATALOAD
000015e0: SWAP4
000015e1: POP
000015e2: POP
000015e3: POP
000015e4: JUMP
000015e5: JUMPDEST
000015e6: PUSH4 0x4e487b71
000015eb: PUSH1 0xe0
000015ed: SHL
000015ee: PUSH0
000015ef: MSTORE
000015f0: PUSH1 0x32
000015f2: PUSH1 0x04
000015f4: MSTORE
000015f5: PUSH1 0x24
000015f7: PUSH0
000015f8: REVERT
000015f9: JUMPDEST
000015fa: PUSH4 0x4e487b71
000015ff: PUSH1 0xe0
00001601: SHL
00001602: PUSH0
00001603: MSTORE
00001604: PUSH1 0x11
00001606: PUSH1 0x04
00001608: MSTORE
00001609: PUSH1 0x24
0000160b: PUSH0
0000160c: REVERT
0000160d: JUMPDEST
0000160e: DUP1
0000160f: DUP3
00001610: ADD
00001611: DUP1
00001612: DUP3
00001613: GT
00001614: ISZERO
00001615: PUSH2 0x1620
00001618: JUMPI
00001619: PUSH2 0x1620
0000161c: PUSH2 0x15f9
0000161f: JUMP
00001620: JUMPDEST
00001621: SWAP3
00001622: SWAP2
00001623: POP
00001624: POP
00001625: JUMP
00001626: JUMPDEST
00001627: DUP1
00001628: DUP3
00001629: MUL
0000162a: DUP2
0000162b: ISZERO
0000162c: DUP3
0000162d: DUP3
0000162e: DIV
0000162f: DUP5
00001630: EQ
00001631: OR
00001632: PUSH2 0x1620
00001635: JUMPI
00001636: PUSH2 0x1620
00001639: PUSH2 0x15f9
0000163c: JUMP
0000163d: JUMPDEST
0000163e: PUSH0
0000163f: DUP3
00001640: PUSH2 0x1657
00001643: JUMPI
00001644: PUSH4 0x4e487b71
00001649: PUSH1 0xe0
0000164b: SHL
0000164c: PUSH0
0000164d: MSTORE
0000164e: PUSH1 0x12
00001650: PUSH1 0x04
00001652: MSTORE
00001653: PUSH1 0x24
00001655: PUSH0
00001656: REVERT
00001657: JUMPDEST
00001658: POP
00001659: DIV
0000165a: SWAP1
0000165b: JUMP
0000165c: JUMPDEST
0000165d: DUP2
0000165e: DUP2
0000165f: SUB
00001660: DUP2
00001661: DUP2
00001662: GT
00001663: ISZERO
00001664: PUSH2 0x1620
00001667: JUMPI
00001668: PUSH2 0x1620
0000166b: PUSH2 0x15f9
0000166e: JUMP
0000166f: JUMPDEST
00001670: PUSH0
00001671: PUSH1 0x01
00001673: DUP3
00001674: ADD
00001675: PUSH2 0x1680
00001678: JUMPI
00001679: PUSH2 0x1680
0000167c: PUSH2 0x15f9
0000167f: JUMP
00001680: JUMPDEST
00001681: POP
00001682: PUSH1 0x01
00001684: ADD
00001685: SWAP1
00001686: JUMP
00001687: INVALID
00001688: LOG2
00001689: PUSH5 0x6970667358
0000168f: UNKNOWN(0x22)
00001690: SLT
00001691: KECCAK256
00001692: DUP6
00001693: JUMPI
00001694: UNKNOWN(0xC5)
00001695: SWAP5
00001696: UNKNOWN(0x27)
00001697: UNKNOWN(0x29)
00001698: DUP14
00001699: UNKNOWN(0xD0)
0000169a: CALLDATASIZE
0000169b: PUSH14 0x43c7b670b8ba75c1ef4f64e06f78
000016aa: SWAP14
000016ab: UNKNOWN(0x1F)
000016ac: ADD
000016ad: UNKNOWN(0xB6)
000016ae: PUSH7 0x1ba40b64736f6c
000016b6: PUSH4 0x4300081c
000016bb: STOP
000016bc: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x6bc2aeec720e091cf068842818fe2b073612ae36c90812d1c6aafcb2f8e68e54
call_targets: 0xf9742810d596769d6cb54799eb1e2ccda03aeb9c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6bc2aeec720e091cf068842818fe2b073612ae36c90812d1c6aafcb2f8e68e54",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf9742810d596769d6cb54799eb1e2ccda03aeb9c"
    ],
    "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": "0xb2931096",
            "selector": "0xb2931096",
            "calldata_variants": [
                "0xb2931096",
                "0xb29310960000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb5d5b5fa",
            "selector": "0xb5d5b5fa",
            "calldata_variants": [
                "0xb5d5b5fa",
                "0xb5d5b5fa0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb62e1efc",
            "selector": "0xb62e1efc",
            "calldata_variants": [
                "0xb62e1efc",
                "0xb62e1efc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdc8d31b6",
            "selector": "0xdc8d31b6",
            "calldata_variants": [
                "0xdc8d31b6",
                "0xdc8d31b60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8252097d",
            "selector": "0x8252097d",
            "calldata_variants": [
                "0x8252097d",
                "0x8252097d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x842e2981",
            "selector": "0x842e2981",
            "calldata_variants": [
                "0x842e2981",
                "0x842e29810000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8bdf67f2",
            "selector": "0x8bdf67f2",
            "calldata_variants": [
                "0x8bdf67f2",
                "0x8bdf67f20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1970,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5244,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "constant_zero",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x6bc2aeec720e091cf068842818fe2b073612ae36c90812d1c6aafcb2f8e68e54
call_targets: 0xf9742810d596769d6cb54799eb1e2ccda03aeb9c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6bc2aeec720e091cf068842818fe2b073612ae36c90812d1c6aafcb2f8e68e54",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xf9742810d596769d6cb54799eb1e2ccda03aeb9c"
    ],
    "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": "0xb2931096",
            "selector": "0xb2931096",
            "calldata_variants": [
                "0xb2931096",
                "0xb29310960000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb5d5b5fa",
            "selector": "0xb5d5b5fa",
            "calldata_variants": [
                "0xb5d5b5fa",
                "0xb5d5b5fa0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb62e1efc",
            "selector": "0xb62e1efc",
            "calldata_variants": [
                "0xb62e1efc",
                "0xb62e1efc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdc8d31b6",
            "selector": "0xdc8d31b6",
            "calldata_variants": [
                "0xdc8d31b6",
                "0xdc8d31b60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8252097d",
            "selector": "0x8252097d",
            "calldata_variants": [
                "0x8252097d",
                "0x8252097d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x842e2981",
            "selector": "0x842e2981",
            "calldata_variants": [
                "0x842e2981",
                "0x842e29810000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8bdf67f2",
            "selector": "0x8bdf67f2",
            "calldata_variants": [
                "0x8bdf67f2",
                "0x8bdf67f20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1970,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}
low other codex Low-level CALL with computed target/value may allow unintended external calls or ETH transfers 65 no
view
evidence_json
{
    "evidence": "Detector flagged untrusted CALL target/value and possible ETH value transfer; callsites at pc 0x07b2 and 0x147c show computed target usage with CALL. No guards detected in heuristics for these sinks.",
    "locations": [
        "pc:0x7b2",
        "pc:0x147c"
    ],
    "recommendation": "Confirm the CALL target is immutable or tightly validated, and ensure any setters are access-controlled. If ETH transfers are intended, use checks-effects-interactions (and/or a reentrancy guard) and validate return data where applicable.",
    "exploit_scenario": "If any public/external function can influence the CALL target or value (e.g., via calldata or mutable storage without strict access control), an attacker could trigger the CALL to an arbitrary address and/or send ETH out of the contract. This could be abused to drain ETH or execute unexpected external logic. Bytecode evidence is incomplete; the target might be a fixed token/known address and value might be zero in practice."
}