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

Analysis Run

410227b2-e1f9-46a6-ad29-60f34e044459

failed
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 10:21 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
Verified
Review Backing
Not yet
Best current signal
Authorization based on tx.origin
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31363 report.consolidate complete 1 / 1 3 months ago
111176 artifact.fetch failed 1 / 3 1 week ago
111177 tool.cast_disasm complete 1 / 3 1 week ago
111178 analysis.bundle complete 1 / 3 1 week ago
111179 capability.graph complete 1 / 3 1 week ago
111180 detector.run complete 1 / 3 1 week ago
111181 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable profit-extraction path found in the audited contract bundle.
View stderr
[codex:642014] OpenAI Codex v0.77.0 (research preview)
[codex:642014] --------
[codex:642014] workdir: /tmp/codex-multi-1cjse0mx
[codex:642014] model: gpt-5.2-codex
[codex:642014] provider: openai
[codex:642014] approval: never
[codex:642014] sandbox: read-only
[codex:642014] reasoning effort: xhigh
[codex:642014] reasoning summaries: auto
[codex:642014] session id: 019b80cb-3517-7d12-aead-4d10a395bc08
[codex:642014] --------
[codex:642014] user
[codex:642014] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:642014] 
[codex:642014] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:642014] 
[codex:642014] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:642014] - Gas inefficiency, code quality, naming, or best practices
[codex:642014] - Theoretical vulnerabilities without a clear extraction path
[codex:642014] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:642014] - Front-running unless it enables theft beyond MEV
[codex:642014] - DoS, griefing, or issues that don't result in attacker profit
[codex:642014] - Missing events, view function issues, or informational findings
[codex:642014] 
[codex:642014] HIGH-VALUE PATTERNS TO HUNT:
[codex:642014] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:642014] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:642014] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:642014] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:642014] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:642014] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:642014] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:642014] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:642014] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:642014] 
[codex:642014] For each finding, you MUST provide:
[codex:642014] 1. Exact file and line numbers of vulnerable code
[codex:642014] 2. Step-by-step exploit transaction sequence
[codex:642014] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:642014] 
[codex:642014] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:642014] 
[codex:642014] Output MUST be valid JSON matching the provided schema.
[codex:642014] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:642014] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:642014] mcp startup: no servers
[codex:642014] 
[codex:642014] thinking
[codex:642014] **Preparing to read instructions and audit bundle**
[codex:642014] exec
[codex:642014] /bin/bash -lc ls in /tmp/codex-multi-1cjse0mx succeeded in 5ms:
[codex:642014] AUDIT_BUNDLE.txt
[codex:642014] codex-output-schema.json
[codex:642014] contracts
[codex:642014] exec
[codex:642014] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-1cjse0mx succeeded in 6ms:
[codex:642014] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:642014] 
[codex:642014] ================================================================================
[codex:642014] FILE: contracts/Contract.sol
[codex:642014] ================================================================================
[codex:642014] // SPDX-License-Identifier: MIT
[codex:642014] 
[codex:642014] // File: @openzeppelin/contracts/math/SafeMath.sol
[codex:642014] 
[codex:642014] pragma solidity >=0.6.0 <0.8.0;
[codex:642014] 
[codex:642014] /**
[codex:642014]  * @dev Wrappers over Solidity's arithmetic operations with added overflow
[codex:642014]  * checks.
[codex:642014]  *
[codex:642014]  * Arithmetic operations in Solidity wrap on overflow. This can easily result
[codex:642014]  * in bugs, because programmers usually assume that an overflow raises an
[codex:642014]  * error, which is the standard behavior in high level programming languages.
[codex:642014]  * `SafeMath` restores this intuition by reverting the transaction when an
[codex:642014]  * operation overflows.
[codex:642014] 
[codex:642014] thinking
[codex:642014] **Continuing to review AUDIT_BUNDLE file**
[codex:642014] exec
[codex:642014] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-1cjse0mx succeeded in 5ms:
[codex:642014]      * This value changes when {approve} or {transferFrom} are called.
[codex:642014]      */
[codex:642014]     function allowance(address owner, address spender) external view returns (uint256);
[codex:642014] 
[codex:642014]     /**
[codex:642014]      * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
[codex:642014]      *
[codex:642014]      * Returns a boolean value indicating whether the operation succeeded.
[codex:642014]      *
[codex:642014]      * IMPORTANT: Beware that changing an allowance with this method brings the risk
[codex:642014]      * that someone may use both the old and the new allowance by unfortunate
[codex:642014]      * transaction ordering. One possible solution to mitigate this race
[codex:642014]      * condition is to first reduce the spender's allowance to 0 and set the
[codex:642014]      * desired value afterwards:
[codex:642014]      * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
[codex:642014]      *
[codex:642014]      * Emits an {Approval} event.
[codex:642014]      */
[codex:642014]     function approve(address spender, uint256 amount) external returns (bool);
[codex:642014] 
[codex:642014] 
[codex:642014] thinking
[codex:642014] **Continuing analysis**
[codex:642014] exec
[codex:642014] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-1cjse0mx succeeded in 5ms:
[codex:642014]                 // solhint-disable-next-line no-inline-assembly
[codex:642014]                 assembly {
[codex:642014]                     let returndata_size := mload(returndata)
[codex:642014]                     revert(add(32, returndata), returndata_size)
[codex:642014]                 }
[codex:642014]             } else {
[codex:642014]                 revert(errorMessage);
[codex:642014]             }
[codex:642014]         }
[codex:642014]     }
[codex:642014] }
[codex:642014] 
[codex:642014] // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol
[codex:642014] 
[codex:642014] pragma solidity >=0.6.0 <0.8.0;
[codex:642014] 
[codex:642014] 
[codex:642014] 
[codex:642014] 
[codex:642014] /**
[codex:642014] 
[codex:642014] thinking
[codex:642014] **Checking for remainder of AUDIT_BUNDLE file**
[codex:642014] exec
[codex:642014] /bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-1cjse0mx succeeded in 5ms:
[codex:642014] 
[codex:642014] 
[codex:642014] 
[codex:642014] thinking
[codex:642014] **Analyzing FeeDistributor token withdrawal risks**
[codex:642014] thinking
[codex:642014] **Assessing reentrancy via malicious balanceOf**
[codex:642014] 
[codex:642014] I'm carefully evaluating the risk of reentrancy during external calls to a token's balanceOf, especially when that token may be malicious. The key question is whether this allows withdrawing more tokens or ETH from the FeeDistributor contract than entitled. Despite the ability for reentrant calls to occur before state updates, the state changes made during reentrancy prevent double-withdrawals or extracting value beyond shares. While a malicious token could fabricate balances or mint tokens on transfer, that doesn't translate to draining actual assets from FeeDistributor. Thus, no clear exploit emerges from this reentrancy avenue.
[codex:642014] codex
[codex:642014] {"no_findings":true,"summary":"No concrete, exploitable profit-extraction path found in the audited contract bundle.","findings":[]}
[codex:642014] tokens used
[codex:642014] 13,989
[codex:642014] {"no_findings":true,"summary":"No concrete, exploitable profit-extraction path found in the audited contract bundle.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T22:21:42.604681+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable profit-extraction path found in the audited contract bundle.",
    "raw_final": {
        "summary": "No concrete, exploitable profit-extraction path found in the audited contract bundle.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
2
Total opcodes
1753
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 0x0065
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0xbd5dec98
00000019: GT
0000001a: PUSH2 0x0043
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xbd5dec98
00000024: EQ
00000025: PUSH2 0x011e
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xce7c2ac2
0000002f: EQ
00000030: PUSH2 0x019b
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xeedc966a
0000003a: EQ
0000003b: PUSH2 0x01db
0000003e: JUMPI
0000003f: PUSH2 0x0065
00000042: JUMP
00000043: JUMPDEST
00000044: DUP1
00000045: PUSH4 0x211dc32d
0000004a: EQ
0000004b: PUSH2 0x0067
0000004e: JUMPI
0000004f: DUP1
00000050: PUSH4 0x3a98ef39
00000055: EQ
00000056: PUSH2 0x00c1
00000059: JUMPI
0000005a: DUP1
0000005b: PUSH4 0xbbe430de
00000060: EQ
00000061: PUSH2 0x00d6
00000064: JUMPI
00000065: JUMPDEST
00000066: STOP
00000067: JUMPDEST
00000068: CALLVALUE
00000069: DUP1
0000006a: ISZERO
0000006b: PUSH2 0x0073
0000006e: JUMPI
0000006f: PUSH1 0x00
00000071: DUP1
00000072: REVERT
00000073: JUMPDEST
00000074: POP
00000075: PUSH2 0x00af
00000078: PUSH1 0x04
0000007a: DUP1
0000007b: CALLDATASIZE
0000007c: SUB
0000007d: PUSH1 0x40
0000007f: DUP2
00000080: LT
00000081: ISZERO
00000082: PUSH2 0x008a
00000085: JUMPI
00000086: PUSH1 0x00
00000088: DUP1
00000089: REVERT
0000008a: JUMPDEST
0000008b: POP
0000008c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000000a1: DUP2
000000a2: CALLDATALOAD
000000a3: DUP2
000000a4: AND
000000a5: SWAP2
000000a6: PUSH1 0x20
000000a8: ADD
000000a9: CALLDATALOAD
000000aa: AND
000000ab: PUSH2 0x021b
000000ae: JUMP
000000af: JUMPDEST
000000b0: PUSH1 0x40
000000b2: DUP1
000000b3: MLOAD
000000b4: SWAP2
000000b5: DUP3
000000b6: MSTORE
000000b7: MLOAD
000000b8: SWAP1
000000b9: DUP2
000000ba: SWAP1
000000bb: SUB
000000bc: PUSH1 0x20
000000be: ADD
000000bf: SWAP1
000000c0: RETURN
000000c1: JUMPDEST
000000c2: CALLVALUE
000000c3: DUP1
000000c4: ISZERO
000000c5: PUSH2 0x00cd
000000c8: JUMPI
000000c9: PUSH1 0x00
000000cb: DUP1
000000cc: REVERT
000000cd: JUMPDEST
000000ce: POP
000000cf: PUSH2 0x00af
000000d2: PUSH2 0x02c0
000000d5: JUMP
000000d6: JUMPDEST
000000d7: CALLVALUE
000000d8: DUP1
000000d9: ISZERO
000000da: PUSH2 0x00e2
000000dd: JUMPI
000000de: PUSH1 0x00
000000e0: DUP1
000000e1: REVERT
000000e2: JUMPDEST
000000e3: POP
000000e4: PUSH2 0x00af
000000e7: PUSH1 0x04
000000e9: DUP1
000000ea: CALLDATASIZE
000000eb: SUB
000000ec: PUSH1 0x40
000000ee: DUP2
000000ef: LT
000000f0: ISZERO
000000f1: PUSH2 0x00f9
000000f4: JUMPI
000000f5: PUSH1 0x00
000000f7: DUP1
000000f8: REVERT
000000f9: JUMPDEST
000000fa: POP
000000fb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000110: DUP2
00000111: CALLDATALOAD
00000112: DUP2
00000113: AND
00000114: SWAP2
00000115: PUSH1 0x20
00000117: ADD
00000118: CALLDATALOAD
00000119: AND
0000011a: PUSH2 0x02e4
0000011d: JUMP
0000011e: JUMPDEST
0000011f: CALLVALUE
00000120: DUP1
00000121: ISZERO
00000122: PUSH2 0x012a
00000125: JUMPI
00000126: PUSH1 0x00
00000128: DUP1
00000129: REVERT
0000012a: JUMPDEST
0000012b: POP
0000012c: PUSH2 0x0065
0000012f: PUSH1 0x04
00000131: DUP1
00000132: CALLDATASIZE
00000133: SUB
00000134: PUSH1 0x20
00000136: DUP2
00000137: LT
00000138: ISZERO
00000139: PUSH2 0x0141
0000013c: JUMPI
0000013d: PUSH1 0x00
0000013f: DUP1
00000140: REVERT
00000141: JUMPDEST
00000142: DUP2
00000143: ADD
00000144: SWAP1
00000145: PUSH1 0x20
00000147: DUP2
00000148: ADD
00000149: DUP2
0000014a: CALLDATALOAD
0000014b: PUSH5 0x0100000000
00000151: DUP2
00000152: GT
00000153: ISZERO
00000154: PUSH2 0x015c
00000157: JUMPI
00000158: PUSH1 0x00
0000015a: DUP1
0000015b: REVERT
0000015c: JUMPDEST
0000015d: DUP3
0000015e: ADD
0000015f: DUP4
00000160: PUSH1 0x20
00000162: DUP3
00000163: ADD
00000164: GT
00000165: ISZERO
00000166: PUSH2 0x016e
00000169: JUMPI
0000016a: PUSH1 0x00
0000016c: DUP1
0000016d: REVERT
0000016e: JUMPDEST
0000016f: DUP1
00000170: CALLDATALOAD
00000171: SWAP1
00000172: PUSH1 0x20
00000174: ADD
00000175: SWAP2
00000176: DUP5
00000177: PUSH1 0x20
00000179: DUP4
0000017a: MUL
0000017b: DUP5
0000017c: ADD
0000017d: GT
0000017e: PUSH5 0x0100000000
00000184: DUP4
00000185: GT
00000186: OR
00000187: ISZERO
00000188: PUSH2 0x0190
0000018b: JUMPI
0000018c: PUSH1 0x00
0000018e: DUP1
0000018f: REVERT
00000190: JUMPDEST
00000191: POP
00000192: SWAP1
00000193: SWAP3
00000194: POP
00000195: SWAP1
00000196: POP
00000197: PUSH2 0x0334
0000019a: JUMP
0000019b: JUMPDEST
0000019c: CALLVALUE
0000019d: DUP1
0000019e: ISZERO
0000019f: PUSH2 0x01a7
000001a2: JUMPI
000001a3: PUSH1 0x00
000001a5: DUP1
000001a6: REVERT
000001a7: JUMPDEST
000001a8: POP
000001a9: PUSH2 0x00af
000001ac: PUSH1 0x04
000001ae: DUP1
000001af: CALLDATASIZE
000001b0: SUB
000001b1: PUSH1 0x20
000001b3: DUP2
000001b4: LT
000001b5: ISZERO
000001b6: PUSH2 0x01be
000001b9: JUMPI
000001ba: PUSH1 0x00
000001bc: DUP1
000001bd: REVERT
000001be: JUMPDEST
000001bf: POP
000001c0: CALLDATALOAD
000001c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001d6: AND
000001d7: PUSH2 0x046f
000001da: JUMP
000001db: JUMPDEST
000001dc: CALLVALUE
000001dd: DUP1
000001de: ISZERO
000001df: PUSH2 0x01e7
000001e2: JUMPI
000001e3: PUSH1 0x00
000001e5: DUP1
000001e6: REVERT
000001e7: JUMPDEST
000001e8: POP
000001e9: PUSH2 0x00af
000001ec: PUSH1 0x04
000001ee: DUP1
000001ef: CALLDATASIZE
000001f0: SUB
000001f1: PUSH1 0x20
000001f3: DUP2
000001f4: LT
000001f5: ISZERO
000001f6: PUSH2 0x01fe
000001f9: JUMPI
000001fa: PUSH1 0x00
000001fc: DUP1
000001fd: REVERT
000001fe: JUMPDEST
000001ff: POP
00000200: CALLDATALOAD
00000201: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000216: AND
00000217: PUSH2 0x0481
0000021a: JUMP
0000021b: JUMPDEST
0000021c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000231: DUP3
00000232: AND
00000233: PUSH1 0x00
00000235: SWAP1
00000236: DUP2
00000237: MSTORE
00000238: PUSH1 0x01
0000023a: PUSH1 0x20
0000023c: MSTORE
0000023d: PUSH1 0x40
0000023f: DUP2
00000240: KECCAK256
00000241: SLOAD
00000242: DUP2
00000243: SWAP1
00000244: PUSH2 0x0256
00000247: SWAP1
00000248: PUSH2 0x0250
0000024b: DUP7
0000024c: PUSH2 0x0481
0000024f: JUMP
00000250: JUMPDEST
00000251: SWAP1
00000252: PUSH2 0x0545
00000255: JUMP
00000256: JUMPDEST
00000257: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000026c: DUP5
0000026d: AND
0000026e: PUSH1 0x00
00000270: SWAP1
00000271: DUP2
00000272: MSTORE
00000273: PUSH1 0x20
00000275: DUP2
00000276: SWAP1
00000277: MSTORE
00000278: PUSH1 0x40
0000027a: SWAP1
0000027b: KECCAK256
0000027c: SLOAD
0000027d: SWAP1
0000027e: SWAP2
0000027f: POP
00000280: PUSH2 0x02b6
00000283: SWAP1
00000284: PUSH32 0x0000000000000000000000000000000000000000000000000000000000002710
000002a5: SWAP1
000002a6: PUSH2 0x02b0
000002a9: SWAP1
000002aa: DUP5
000002ab: SWAP1
000002ac: PUSH2 0x05b9
000002af: JUMP
000002b0: JUMPDEST
000002b1: SWAP1
000002b2: PUSH2 0x062c
000002b5: JUMP
000002b6: JUMPDEST
000002b7: SWAP2
000002b8: POP
000002b9: POP
000002ba: JUMPDEST
000002bb: SWAP3
000002bc: SWAP2
000002bd: POP
000002be: POP
000002bf: JUMP
000002c0: JUMPDEST
000002c1: PUSH32 0x0000000000000000000000000000000000000000000000000000000000002710
000002e2: DUP2
000002e3: JUMP
000002e4: JUMPDEST
000002e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002fa: DUP1
000002fb: DUP4
000002fc: AND
000002fd: PUSH1 0x00
000002ff: SWAP1
00000300: DUP2
00000301: MSTORE
00000302: PUSH1 0x02
00000304: PUSH1 0x20
00000306: SWAP1
00000307: DUP2
00000308: MSTORE
00000309: PUSH1 0x40
0000030b: DUP1
0000030c: DUP4
0000030d: KECCAK256
0000030e: SWAP4
0000030f: DUP6
00000310: AND
00000311: DUP4
00000312: MSTORE
00000313: SWAP3
00000314: SWAP1
00000315: MSTORE
00000316: SWAP1
00000317: DUP2
00000318: KECCAK256
00000319: SLOAD
0000031a: PUSH2 0x032d
0000031d: SWAP1
0000031e: PUSH2 0x0327
00000321: DUP6
00000322: DUP6
00000323: PUSH2 0x021b
00000326: JUMP
00000327: JUMPDEST
00000328: SWAP1
00000329: PUSH2 0x066e
0000032c: JUMP
0000032d: JUMPDEST
0000032e: SWAP4
0000032f: SWAP3
00000330: POP
00000331: POP
00000332: POP
00000333: JUMP
00000334: JUMPDEST
00000335: PUSH1 0x00
00000337: JUMPDEST
00000338: DUP2
00000339: DUP2
0000033a: LT
0000033b: ISZERO
0000033c: PUSH2 0x03d2
0000033f: JUMPI
00000340: PUSH1 0x00
00000342: DUP4
00000343: DUP4
00000344: DUP4
00000345: DUP2
00000346: DUP2
00000347: LT
00000348: PUSH2 0x034d
0000034b: JUMPI
0000034c: INVALID
0000034d: JUMPDEST
0000034e: SWAP1
0000034f: POP
00000350: PUSH1 0x20
00000352: MUL
00000353: ADD
00000354: CALLDATALOAD
00000355: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000036a: AND
0000036b: SWAP1
0000036c: POP
0000036d: PUSH1 0x00
0000036f: PUSH2 0x0378
00000372: DUP3
00000373: CALLER
00000374: PUSH2 0x02e4
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000038e: DUP4
0000038f: AND
00000390: PUSH1 0x00
00000392: DUP2
00000393: DUP2
00000394: MSTORE
00000395: PUSH1 0x02
00000397: PUSH1 0x20
00000399: SWAP1
0000039a: DUP2
0000039b: MSTORE
0000039c: PUSH1 0x40
0000039e: DUP1
0000039f: DUP4
000003a0: KECCAK256
000003a1: CALLER
000003a2: DUP5
000003a3: MSTORE
000003a4: DUP3
000003a5: MSTORE
000003a6: DUP1
000003a7: DUP4
000003a8: KECCAK256
000003a9: DUP1
000003aa: SLOAD
000003ab: DUP7
000003ac: ADD
000003ad: SWAP1
000003ae: SSTORE
000003af: SWAP3
000003b0: DUP3
000003b1: MSTORE
000003b2: PUSH1 0x01
000003b4: SWAP1
000003b5: MSTORE
000003b6: KECCAK256
000003b7: DUP1
000003b8: SLOAD
000003b9: DUP3
000003ba: ADD
000003bb: SWAP1
000003bc: SSTORE
000003bd: SWAP1
000003be: POP
000003bf: PUSH2 0x03c8
000003c2: DUP3
000003c3: DUP3
000003c4: PUSH2 0x06b0
000003c7: JUMP
000003c8: JUMPDEST
000003c9: POP
000003ca: POP
000003cb: PUSH1 0x01
000003cd: ADD
000003ce: PUSH2 0x0337
000003d1: JUMP
000003d2: JUMPDEST
000003d3: POP
000003d4: CALLER
000003d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003ea: AND
000003eb: PUSH32 0xaccd1e9602ed0fde9ec661925cfd2b998a57862a6f7519760106b303d21ef25d
0000040c: DUP4
0000040d: DUP4
0000040e: PUSH1 0x40
00000410: MLOAD
00000411: DUP1
00000412: DUP1
00000413: PUSH1 0x20
00000415: ADD
00000416: DUP3
00000417: DUP2
00000418: SUB
00000419: DUP3
0000041a: MSTORE
0000041b: DUP5
0000041c: DUP5
0000041d: DUP3
0000041e: DUP2
0000041f: DUP2
00000420: MSTORE
00000421: PUSH1 0x20
00000423: ADD
00000424: SWAP3
00000425: POP
00000426: PUSH1 0x20
00000428: MUL
00000429: DUP1
0000042a: DUP3
0000042b: DUP5
0000042c: CALLDATACOPY
0000042d: PUSH1 0x00
0000042f: DUP4
00000430: DUP3
00000431: ADD
00000432: MSTORE
00000433: PUSH1 0x40
00000435: MLOAD
00000436: PUSH1 0x1f
00000438: SWAP1
00000439: SWAP2
0000043a: ADD
0000043b: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
0000045c: AND
0000045d: SWAP1
0000045e: SWAP3
0000045f: ADD
00000460: DUP3
00000461: SWAP1
00000462: SUB
00000463: SWAP6
00000464: POP
00000465: SWAP1
00000466: SWAP4
00000467: POP
00000468: POP
00000469: POP
0000046a: POP
0000046b: LOG2
0000046c: POP
0000046d: POP
0000046e: JUMP
0000046f: JUMPDEST
00000470: PUSH1 0x00
00000472: PUSH1 0x20
00000474: DUP2
00000475: SWAP1
00000476: MSTORE
00000477: SWAP1
00000478: DUP2
00000479: MSTORE
0000047a: PUSH1 0x40
0000047c: SWAP1
0000047d: KECCAK256
0000047e: SLOAD
0000047f: DUP2
00000480: JUMP
00000481: JUMPDEST
00000482: PUSH1 0x00
00000484: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000499: DUP3
0000049a: AND
0000049b: PUSH2 0x04a5
0000049e: JUMPI
0000049f: POP
000004a0: SELFBALANCE
000004a1: PUSH2 0x0540
000004a4: JUMP
000004a5: JUMPDEST
000004a6: PUSH1 0x40
000004a8: DUP1
000004a9: MLOAD
000004aa: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
000004cb: DUP2
000004cc: MSTORE
000004cd: ADDRESS
000004ce: PUSH1 0x04
000004d0: DUP3
000004d1: ADD
000004d2: MSTORE
000004d3: SWAP1
000004d4: MLOAD
000004d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004ea: DUP5
000004eb: AND
000004ec: SWAP2
000004ed: PUSH4 0x70a08231
000004f2: SWAP2
000004f3: PUSH1 0x24
000004f5: DUP1
000004f6: DUP4
000004f7: ADD
000004f8: SWAP3
000004f9: PUSH1 0x20
000004fb: SWAP3
000004fc: SWAP2
000004fd: SWAP1
000004fe: DUP3
000004ff: SWAP1
00000500: SUB
00000501: ADD
00000502: DUP2
00000503: DUP7
00000504: DUP1
00000505: EXTCODESIZE
00000506: ISZERO
00000507: DUP1
00000508: ISZERO
00000509: PUSH2 0x0511
0000050c: JUMPI
0000050d: PUSH1 0x00
0000050f: DUP1
00000510: REVERT
00000511: JUMPDEST
00000512: POP
00000513: GAS
00000514: STATICCALL
00000515: ISZERO
00000516: DUP1
00000517: ISZERO
00000518: PUSH2 0x0525
0000051b: JUMPI
0000051c: RETURNDATASIZE
0000051d: PUSH1 0x00
0000051f: DUP1
00000520: RETURNDATACOPY
00000521: RETURNDATASIZE
00000522: PUSH1 0x00
00000524: REVERT
00000525: JUMPDEST
00000526: POP
00000527: POP
00000528: POP
00000529: POP
0000052a: PUSH1 0x40
0000052c: MLOAD
0000052d: RETURNDATASIZE
0000052e: PUSH1 0x20
00000530: DUP2
00000531: LT
00000532: ISZERO
00000533: PUSH2 0x053b
00000536: JUMPI
00000537: PUSH1 0x00
00000539: DUP1
0000053a: REVERT
0000053b: JUMPDEST
0000053c: POP
0000053d: MLOAD
0000053e: SWAP1
0000053f: POP
00000540: JUMPDEST
00000541: SWAP2
00000542: SWAP1
00000543: POP
00000544: JUMP
00000545: JUMPDEST
00000546: PUSH1 0x00
00000548: DUP3
00000549: DUP3
0000054a: ADD
0000054b: DUP4
0000054c: DUP2
0000054d: LT
0000054e: ISZERO
0000054f: PUSH2 0x032d
00000552: JUMPI
00000553: PUSH1 0x40
00000555: DUP1
00000556: MLOAD
00000557: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000578: DUP2
00000579: MSTORE
0000057a: PUSH1 0x20
0000057c: PUSH1 0x04
0000057e: DUP3
0000057f: ADD
00000580: MSTORE
00000581: PUSH1 0x1b
00000583: PUSH1 0x24
00000585: DUP3
00000586: ADD
00000587: MSTORE
00000588: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
000005a9: PUSH1 0x44
000005ab: DUP3
000005ac: ADD
000005ad: MSTORE
000005ae: SWAP1
000005af: MLOAD
000005b0: SWAP1
000005b1: DUP2
000005b2: SWAP1
000005b3: SUB
000005b4: PUSH1 0x64
000005b6: ADD
000005b7: SWAP1
000005b8: REVERT
000005b9: JUMPDEST
000005ba: PUSH1 0x00
000005bc: DUP3
000005bd: PUSH2 0x05c8
000005c0: JUMPI
000005c1: POP
000005c2: PUSH1 0x00
000005c4: PUSH2 0x02ba
000005c7: JUMP
000005c8: JUMPDEST
000005c9: DUP3
000005ca: DUP3
000005cb: MUL
000005cc: DUP3
000005cd: DUP5
000005ce: DUP3
000005cf: DUP2
000005d0: PUSH2 0x05d5
000005d3: JUMPI
000005d4: INVALID
000005d5: JUMPDEST
000005d6: DIV
000005d7: EQ
000005d8: PUSH2 0x032d
000005db: JUMPI
000005dc: PUSH1 0x40
000005de: MLOAD
000005df: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000600: DUP2
00000601: MSTORE
00000602: PUSH1 0x04
00000604: ADD
00000605: DUP1
00000606: DUP1
00000607: PUSH1 0x20
00000609: ADD
0000060a: DUP3
0000060b: DUP2
0000060c: SUB
0000060d: DUP3
0000060e: MSTORE
0000060f: PUSH1 0x21
00000611: DUP2
00000612: MSTORE
00000613: PUSH1 0x20
00000615: ADD
00000616: DUP1
00000617: PUSH2 0x0d73
0000061a: PUSH1 0x21
0000061c: SWAP2
0000061d: CODECOPY
0000061e: PUSH1 0x40
00000620: ADD
00000621: SWAP2
00000622: POP
00000623: POP
00000624: PUSH1 0x40
00000626: MLOAD
00000627: DUP1
00000628: SWAP2
00000629: SUB
0000062a: SWAP1
0000062b: REVERT
0000062c: JUMPDEST
0000062d: PUSH1 0x00
0000062f: PUSH2 0x032d
00000632: DUP4
00000633: DUP4
00000634: PUSH1 0x40
00000636: MLOAD
00000637: DUP1
00000638: PUSH1 0x40
0000063a: ADD
0000063b: PUSH1 0x40
0000063d: MSTORE
0000063e: DUP1
0000063f: PUSH1 0x1a
00000641: DUP2
00000642: MSTORE
00000643: PUSH1 0x20
00000645: ADD
00000646: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00000667: DUP2
00000668: MSTORE
00000669: POP
0000066a: PUSH2 0x06ff
0000066d: JUMP
0000066e: JUMPDEST
0000066f: PUSH1 0x00
00000671: PUSH2 0x032d
00000674: DUP4
00000675: DUP4
00000676: PUSH1 0x40
00000678: MLOAD
00000679: DUP1
0000067a: PUSH1 0x40
0000067c: ADD
0000067d: PUSH1 0x40
0000067f: MSTORE
00000680: DUP1
00000681: PUSH1 0x1e
00000683: DUP2
00000684: MSTORE
00000685: PUSH1 0x20
00000687: ADD
00000688: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
000006a9: DUP2
000006aa: MSTORE
000006ab: POP
000006ac: PUSH2 0x07bb
000006af: JUMP
000006b0: JUMPDEST
000006b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006c6: DUP3
000006c7: AND
000006c8: PUSH2 0x06da
000006cb: JUMPI
000006cc: PUSH2 0x06d5
000006cf: CALLER
000006d0: DUP3
000006d1: PUSH2 0x082f
000006d4: JUMP
000006d5: JUMPDEST
000006d6: PUSH2 0x06fb
000006d9: JUMP
000006da: JUMPDEST
000006db: PUSH2 0x06fb
000006de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006f3: DUP4
000006f4: AND
000006f5: CALLER
000006f6: DUP4
000006f7: PUSH2 0x095a
000006fa: JUMP
000006fb: JUMPDEST
000006fc: POP
000006fd: POP
000006fe: JUMP
000006ff: JUMPDEST
00000700: PUSH1 0x00
00000702: DUP2
00000703: DUP4
00000704: PUSH2 0x07a5
00000707: JUMPI
00000708: PUSH1 0x40
0000070a: MLOAD
0000070b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000072c: DUP2
0000072d: MSTORE
0000072e: PUSH1 0x04
00000730: ADD
00000731: DUP1
00000732: DUP1
00000733: PUSH1 0x20
00000735: ADD
00000736: DUP3
00000737: DUP2
00000738: SUB
00000739: DUP3
0000073a: MSTORE
0000073b: DUP4
0000073c: DUP2
0000073d: DUP2
0000073e: MLOAD
0000073f: DUP2
00000740: MSTORE
00000741: PUSH1 0x20
00000743: ADD
00000744: SWAP2
00000745: POP
00000746: DUP1
00000747: MLOAD
00000748: SWAP1
00000749: PUSH1 0x20
0000074b: ADD
0000074c: SWAP1
0000074d: DUP1
0000074e: DUP4
0000074f: DUP4
00000750: PUSH1 0x00
00000752: JUMPDEST
00000753: DUP4
00000754: DUP2
00000755: LT
00000756: ISZERO
00000757: PUSH2 0x076a
0000075a: JUMPI
0000075b: DUP2
0000075c: DUP2
0000075d: ADD
0000075e: MLOAD
0000075f: DUP4
00000760: DUP3
00000761: ADD
00000762: MSTORE
00000763: PUSH1 0x20
00000765: ADD
00000766: PUSH2 0x0752
00000769: JUMP
0000076a: JUMPDEST
0000076b: POP
0000076c: POP
0000076d: POP
0000076e: POP
0000076f: SWAP1
00000770: POP
00000771: SWAP1
00000772: DUP2
00000773: ADD
00000774: SWAP1
00000775: PUSH1 0x1f
00000777: AND
00000778: DUP1
00000779: ISZERO
0000077a: PUSH2 0x0797
0000077d: JUMPI
0000077e: DUP1
0000077f: DUP3
00000780: SUB
00000781: DUP1
00000782: MLOAD
00000783: PUSH1 0x01
00000785: DUP4
00000786: PUSH1 0x20
00000788: SUB
00000789: PUSH2 0x0100
0000078c: EXP
0000078d: SUB
0000078e: NOT
0000078f: AND
00000790: DUP2
00000791: MSTORE
00000792: PUSH1 0x20
00000794: ADD
00000795: SWAP2
00000796: POP
00000797: JUMPDEST
00000798: POP
00000799: SWAP3
0000079a: POP
0000079b: POP
0000079c: POP
0000079d: PUSH1 0x40
0000079f: MLOAD
000007a0: DUP1
000007a1: SWAP2
000007a2: SUB
000007a3: SWAP1
000007a4: REVERT
000007a5: JUMPDEST
000007a6: POP
000007a7: PUSH1 0x00
000007a9: DUP4
000007aa: DUP6
000007ab: DUP2
000007ac: PUSH2 0x07b1
000007af: JUMPI
000007b0: INVALID
000007b1: JUMPDEST
000007b2: DIV
000007b3: SWAP6
000007b4: SWAP5
000007b5: POP
000007b6: POP
000007b7: POP
000007b8: POP
000007b9: POP
000007ba: JUMP
000007bb: JUMPDEST
000007bc: PUSH1 0x00
000007be: DUP2
000007bf: DUP5
000007c0: DUP5
000007c1: GT
000007c2: ISZERO
000007c3: PUSH2 0x0827
000007c6: JUMPI
000007c7: PUSH1 0x40
000007c9: MLOAD
000007ca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000007eb: DUP2
000007ec: MSTORE
000007ed: PUSH1 0x20
000007ef: PUSH1 0x04
000007f1: DUP3
000007f2: ADD
000007f3: DUP2
000007f4: DUP2
000007f5: MSTORE
000007f6: DUP4
000007f7: MLOAD
000007f8: PUSH1 0x24
000007fa: DUP5
000007fb: ADD
000007fc: MSTORE
000007fd: DUP4
000007fe: MLOAD
000007ff: SWAP1
00000800: SWAP3
00000801: DUP4
00000802: SWAP3
00000803: PUSH1 0x44
00000805: SWAP1
00000806: SWAP2
00000807: ADD
00000808: SWAP2
00000809: SWAP1
0000080a: DUP6
0000080b: ADD
0000080c: SWAP1
0000080d: DUP1
0000080e: DUP4
0000080f: DUP4
00000810: PUSH1 0x00
00000812: DUP4
00000813: ISZERO
00000814: PUSH2 0x076a
00000817: JUMPI
00000818: DUP2
00000819: DUP2
0000081a: ADD
0000081b: MLOAD
0000081c: DUP4
0000081d: DUP3
0000081e: ADD
0000081f: MSTORE
00000820: PUSH1 0x20
00000822: ADD
00000823: PUSH2 0x0752
00000826: JUMP
00000827: JUMPDEST
00000828: POP
00000829: POP
0000082a: POP
0000082b: SWAP1
0000082c: SUB
0000082d: SWAP1
0000082e: JUMP
0000082f: JUMPDEST
00000830: DUP1
00000831: SELFBALANCE
00000832: LT
00000833: ISZERO
00000834: PUSH2 0x089e
00000837: JUMPI
00000838: PUSH1 0x40
0000083a: DUP1
0000083b: MLOAD
0000083c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000085d: DUP2
0000085e: MSTORE
0000085f: PUSH1 0x20
00000861: PUSH1 0x04
00000863: DUP3
00000864: ADD
00000865: MSTORE
00000866: PUSH1 0x1d
00000868: PUSH1 0x24
0000086a: DUP3
0000086b: ADD
0000086c: MSTORE
0000086d: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e6365000000
0000088e: PUSH1 0x44
00000890: DUP3
00000891: ADD
00000892: MSTORE
00000893: SWAP1
00000894: MLOAD
00000895: SWAP1
00000896: DUP2
00000897: SWAP1
00000898: SUB
00000899: PUSH1 0x64
0000089b: ADD
0000089c: SWAP1
0000089d: REVERT
0000089e: JUMPDEST
0000089f: PUSH1 0x40
000008a1: MLOAD
000008a2: PUSH1 0x00
000008a4: SWAP1
000008a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008ba: DUP5
000008bb: AND
000008bc: SWAP1
000008bd: DUP4
000008be: SWAP1
000008bf: DUP4
000008c0: DUP2
000008c1: DUP2
000008c2: DUP2
000008c3: DUP6
000008c4: DUP8
000008c5: GAS
000008c6: CALL
000008c7: SWAP3
000008c8: POP
000008c9: POP
000008ca: POP
000008cb: RETURNDATASIZE
000008cc: DUP1
000008cd: PUSH1 0x00
000008cf: DUP2
000008d0: EQ
000008d1: PUSH2 0x08f6
000008d4: JUMPI
000008d5: PUSH1 0x40
000008d7: MLOAD
000008d8: SWAP2
000008d9: POP
000008da: PUSH1 0x1f
000008dc: NOT
000008dd: PUSH1 0x3f
000008df: RETURNDATASIZE
000008e0: ADD
000008e1: AND
000008e2: DUP3
000008e3: ADD
000008e4: PUSH1 0x40
000008e6: MSTORE
000008e7: RETURNDATASIZE
000008e8: DUP3
000008e9: MSTORE
000008ea: RETURNDATASIZE
000008eb: PUSH1 0x00
000008ed: PUSH1 0x20
000008ef: DUP5
000008f0: ADD
000008f1: RETURNDATACOPY
000008f2: PUSH2 0x08fb
000008f5: JUMP
000008f6: JUMPDEST
000008f7: PUSH1 0x60
000008f9: SWAP2
000008fa: POP
000008fb: JUMPDEST
000008fc: POP
000008fd: POP
000008fe: SWAP1
000008ff: POP
00000900: DUP1
00000901: PUSH2 0x0955
00000904: JUMPI
00000905: PUSH1 0x40
00000907: MLOAD
00000908: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000929: DUP2
0000092a: MSTORE
0000092b: PUSH1 0x04
0000092d: ADD
0000092e: DUP1
0000092f: DUP1
00000930: PUSH1 0x20
00000932: ADD
00000933: DUP3
00000934: DUP2
00000935: SUB
00000936: DUP3
00000937: MSTORE
00000938: PUSH1 0x3a
0000093a: DUP2
0000093b: MSTORE
0000093c: PUSH1 0x20
0000093e: ADD
0000093f: DUP1
00000940: PUSH2 0x0d13
00000943: PUSH1 0x3a
00000945: SWAP2
00000946: CODECOPY
00000947: PUSH1 0x40
00000949: ADD
0000094a: SWAP2
0000094b: POP
0000094c: POP
0000094d: PUSH1 0x40
0000094f: MLOAD
00000950: DUP1
00000951: SWAP2
00000952: SUB
00000953: SWAP1
00000954: REVERT
00000955: JUMPDEST
00000956: POP
00000957: POP
00000958: POP
00000959: JUMP
0000095a: JUMPDEST
0000095b: PUSH1 0x40
0000095d: DUP1
0000095e: MLOAD
0000095f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000974: DUP5
00000975: AND
00000976: PUSH1 0x24
00000978: DUP3
00000979: ADD
0000097a: MSTORE
0000097b: PUSH1 0x44
0000097d: DUP1
0000097e: DUP3
0000097f: ADD
00000980: DUP5
00000981: SWAP1
00000982: MSTORE
00000983: DUP3
00000984: MLOAD
00000985: DUP1
00000986: DUP4
00000987: SUB
00000988: SWAP1
00000989: SWAP2
0000098a: ADD
0000098b: DUP2
0000098c: MSTORE
0000098d: PUSH1 0x64
0000098f: SWAP1
00000990: SWAP2
00000991: ADD
00000992: SWAP1
00000993: SWAP2
00000994: MSTORE
00000995: PUSH1 0x20
00000997: DUP2
00000998: ADD
00000999: DUP1
0000099a: MLOAD
0000099b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000009b8: AND
000009b9: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
000009da: OR
000009db: SWAP1
000009dc: MSTORE
000009dd: PUSH2 0x0955
000009e0: SWAP1
000009e1: DUP5
000009e2: SWAP1
000009e3: PUSH1 0x60
000009e5: PUSH2 0x0a44
000009e8: DUP3
000009e9: PUSH1 0x40
000009eb: MLOAD
000009ec: DUP1
000009ed: PUSH1 0x40
000009ef: ADD
000009f0: PUSH1 0x40
000009f2: MSTORE
000009f3: DUP1
000009f4: PUSH1 0x20
000009f6: DUP2
000009f7: MSTORE
000009f8: PUSH1 0x20
000009fa: ADD
000009fb: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00000a1c: DUP2
00000a1d: MSTORE
00000a1e: POP
00000a1f: DUP6
00000a20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a35: AND
00000a36: PUSH2 0x0aba
00000a39: SWAP1
00000a3a: SWAP3
00000a3b: SWAP2
00000a3c: SWAP1
00000a3d: PUSH4 0xffffffff
00000a42: AND
00000a43: JUMP
00000a44: JUMPDEST
00000a45: DUP1
00000a46: MLOAD
00000a47: SWAP1
00000a48: SWAP2
00000a49: POP
00000a4a: ISZERO
00000a4b: PUSH2 0x0955
00000a4e: JUMPI
00000a4f: DUP1
00000a50: DUP1
00000a51: PUSH1 0x20
00000a53: ADD
00000a54: SWAP1
00000a55: MLOAD
00000a56: PUSH1 0x20
00000a58: DUP2
00000a59: LT
00000a5a: ISZERO
00000a5b: PUSH2 0x0a63
00000a5e: JUMPI
00000a5f: PUSH1 0x00
00000a61: DUP1
00000a62: REVERT
00000a63: JUMPDEST
00000a64: POP
00000a65: MLOAD
00000a66: PUSH2 0x0955
00000a69: JUMPI
00000a6a: PUSH1 0x40
00000a6c: MLOAD
00000a6d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a8e: DUP2
00000a8f: MSTORE
00000a90: PUSH1 0x04
00000a92: ADD
00000a93: DUP1
00000a94: DUP1
00000a95: PUSH1 0x20
00000a97: ADD
00000a98: DUP3
00000a99: DUP2
00000a9a: SUB
00000a9b: DUP3
00000a9c: MSTORE
00000a9d: PUSH1 0x2a
00000a9f: DUP2
00000aa0: MSTORE
00000aa1: PUSH1 0x20
00000aa3: ADD
00000aa4: DUP1
00000aa5: PUSH2 0x0d94
00000aa8: PUSH1 0x2a
00000aaa: SWAP2
00000aab: CODECOPY
00000aac: PUSH1 0x40
00000aae: ADD
00000aaf: SWAP2
00000ab0: POP
00000ab1: POP
00000ab2: PUSH1 0x40
00000ab4: MLOAD
00000ab5: DUP1
00000ab6: SWAP2
00000ab7: SUB
00000ab8: SWAP1
00000ab9: REVERT
00000aba: JUMPDEST
00000abb: PUSH1 0x60
00000abd: PUSH2 0x0ac9
00000ac0: DUP5
00000ac1: DUP5
00000ac2: PUSH1 0x00
00000ac4: DUP6
00000ac5: PUSH2 0x0ad1
00000ac8: JUMP
00000ac9: JUMPDEST
00000aca: SWAP5
00000acb: SWAP4
00000acc: POP
00000acd: POP
00000ace: POP
00000acf: POP
00000ad0: JUMP
00000ad1: JUMPDEST
00000ad2: PUSH1 0x60
00000ad4: DUP3
00000ad5: SELFBALANCE
00000ad6: LT
00000ad7: ISZERO
00000ad8: PUSH2 0x0b2c
00000adb: JUMPI
00000adc: PUSH1 0x40
00000ade: MLOAD
00000adf: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000b00: DUP2
00000b01: MSTORE
00000b02: PUSH1 0x04
00000b04: ADD
00000b05: DUP1
00000b06: DUP1
00000b07: PUSH1 0x20
00000b09: ADD
00000b0a: DUP3
00000b0b: DUP2
00000b0c: SUB
00000b0d: DUP3
00000b0e: MSTORE
00000b0f: PUSH1 0x26
00000b11: DUP2
00000b12: MSTORE
00000b13: PUSH1 0x20
00000b15: ADD
00000b16: DUP1
00000b17: PUSH2 0x0d4d
00000b1a: PUSH1 0x26
00000b1c: SWAP2
00000b1d: CODECOPY
00000b1e: PUSH1 0x40
00000b20: ADD
00000b21: SWAP2
00000b22: POP
00000b23: POP
00000b24: PUSH1 0x40
00000b26: MLOAD
00000b27: DUP1
00000b28: SWAP2
00000b29: SUB
00000b2a: SWAP1
00000b2b: REVERT
00000b2c: JUMPDEST
00000b2d: PUSH2 0x0b35
00000b30: DUP6
00000b31: PUSH2 0x0c8c
00000b34: JUMP
00000b35: JUMPDEST
00000b36: PUSH2 0x0ba0
00000b39: JUMPI
00000b3a: PUSH1 0x40
00000b3c: DUP1
00000b3d: MLOAD
00000b3e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000b5f: DUP2
00000b60: MSTORE
00000b61: PUSH1 0x20
00000b63: PUSH1 0x04
00000b65: DUP3
00000b66: ADD
00000b67: MSTORE
00000b68: PUSH1 0x1d
00000b6a: PUSH1 0x24
00000b6c: DUP3
00000b6d: ADD
00000b6e: MSTORE
00000b6f: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00000b90: PUSH1 0x44
00000b92: DUP3
00000b93: ADD
00000b94: MSTORE
00000b95: SWAP1
00000b96: MLOAD
00000b97: SWAP1
00000b98: DUP2
00000b99: SWAP1
00000b9a: SUB
00000b9b: PUSH1 0x64
00000b9d: ADD
00000b9e: SWAP1
00000b9f: REVERT
00000ba0: JUMPDEST
00000ba1: PUSH1 0x00
00000ba3: PUSH1 0x60
00000ba5: DUP7
00000ba6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bbb: AND
00000bbc: DUP6
00000bbd: DUP8
00000bbe: PUSH1 0x40
00000bc0: MLOAD
00000bc1: DUP1
00000bc2: DUP3
00000bc3: DUP1
00000bc4: MLOAD
00000bc5: SWAP1
00000bc6: PUSH1 0x20
00000bc8: ADD
00000bc9: SWAP1
00000bca: DUP1
00000bcb: DUP4
00000bcc: DUP4
00000bcd: JUMPDEST
00000bce: PUSH1 0x20
00000bd0: DUP4
00000bd1: LT
00000bd2: PUSH2 0x0c0a
00000bd5: JUMPI
00000bd6: DUP1
00000bd7: MLOAD
00000bd8: DUP3
00000bd9: MSTORE
00000bda: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000bfb: SWAP1
00000bfc: SWAP3
00000bfd: ADD
00000bfe: SWAP2
00000bff: PUSH1 0x20
00000c01: SWAP2
00000c02: DUP3
00000c03: ADD
00000c04: SWAP2
00000c05: ADD
00000c06: PUSH2 0x0bcd
00000c09: JUMP
00000c0a: JUMPDEST
00000c0b: PUSH1 0x01
00000c0d: DUP4
00000c0e: PUSH1 0x20
00000c10: SUB
00000c11: PUSH2 0x0100
00000c14: EXP
00000c15: SUB
00000c16: DUP1
00000c17: NOT
00000c18: DUP3
00000c19: MLOAD
00000c1a: AND
00000c1b: DUP2
00000c1c: DUP5
00000c1d: MLOAD
00000c1e: AND
00000c1f: DUP1
00000c20: DUP3
00000c21: OR
00000c22: DUP6
00000c23: MSTORE
00000c24: POP
00000c25: POP
00000c26: POP
00000c27: POP
00000c28: POP
00000c29: POP
00000c2a: SWAP1
00000c2b: POP
00000c2c: ADD
00000c2d: SWAP2
00000c2e: POP
00000c2f: POP
00000c30: PUSH1 0x00
00000c32: PUSH1 0x40
00000c34: MLOAD
00000c35: DUP1
00000c36: DUP4
00000c37: SUB
00000c38: DUP2
00000c39: DUP6
00000c3a: DUP8
00000c3b: GAS
00000c3c: CALL
00000c3d: SWAP3
00000c3e: POP
00000c3f: POP
00000c40: POP
00000c41: RETURNDATASIZE
00000c42: DUP1
00000c43: PUSH1 0x00
00000c45: DUP2
00000c46: EQ
00000c47: PUSH2 0x0c6c
00000c4a: JUMPI
00000c4b: PUSH1 0x40
00000c4d: MLOAD
00000c4e: SWAP2
00000c4f: POP
00000c50: PUSH1 0x1f
00000c52: NOT
00000c53: PUSH1 0x3f
00000c55: RETURNDATASIZE
00000c56: ADD
00000c57: AND
00000c58: DUP3
00000c59: ADD
00000c5a: PUSH1 0x40
00000c5c: MSTORE
00000c5d: RETURNDATASIZE
00000c5e: DUP3
00000c5f: MSTORE
00000c60: RETURNDATASIZE
00000c61: PUSH1 0x00
00000c63: PUSH1 0x20
00000c65: DUP5
00000c66: ADD
00000c67: RETURNDATACOPY
00000c68: PUSH2 0x0c71
00000c6b: JUMP
00000c6c: JUMPDEST
00000c6d: PUSH1 0x60
00000c6f: SWAP2
00000c70: POP
00000c71: JUMPDEST
00000c72: POP
00000c73: SWAP2
00000c74: POP
00000c75: SWAP2
00000c76: POP
00000c77: PUSH2 0x0c81
00000c7a: DUP3
00000c7b: DUP3
00000c7c: DUP7
00000c7d: PUSH2 0x0c92
00000c80: JUMP
00000c81: JUMPDEST
00000c82: SWAP8
00000c83: SWAP7
00000c84: POP
00000c85: POP
00000c86: POP
00000c87: POP
00000c88: POP
00000c89: POP
00000c8a: POP
00000c8b: JUMP
00000c8c: JUMPDEST
00000c8d: EXTCODESIZE
00000c8e: ISZERO
00000c8f: ISZERO
00000c90: SWAP1
00000c91: JUMP
00000c92: JUMPDEST
00000c93: PUSH1 0x60
00000c95: DUP4
00000c96: ISZERO
00000c97: PUSH2 0x0ca1
00000c9a: JUMPI
00000c9b: POP
00000c9c: DUP2
00000c9d: PUSH2 0x032d
00000ca0: JUMP
00000ca1: JUMPDEST
00000ca2: DUP3
00000ca3: MLOAD
00000ca4: ISZERO
00000ca5: PUSH2 0x0cb1
00000ca8: JUMPI
00000ca9: DUP3
00000caa: MLOAD
00000cab: DUP1
00000cac: DUP5
00000cad: PUSH1 0x20
00000caf: ADD
00000cb0: REVERT
00000cb1: JUMPDEST
00000cb2: PUSH1 0x40
00000cb4: MLOAD
00000cb5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000cd6: DUP2
00000cd7: MSTORE
00000cd8: PUSH1 0x20
00000cda: PUSH1 0x04
00000cdc: DUP3
00000cdd: ADD
00000cde: DUP2
00000cdf: DUP2
00000ce0: MSTORE
00000ce1: DUP5
00000ce2: MLOAD
00000ce3: PUSH1 0x24
00000ce5: DUP5
00000ce6: ADD
00000ce7: MSTORE
00000ce8: DUP5
00000ce9: MLOAD
00000cea: DUP6
00000ceb: SWAP4
00000cec: SWAP2
00000ced: SWAP3
00000cee: DUP4
00000cef: SWAP3
00000cf0: PUSH1 0x44
00000cf2: ADD
00000cf3: SWAP2
00000cf4: SWAP1
00000cf5: DUP6
00000cf6: ADD
00000cf7: SWAP1
00000cf8: DUP1
00000cf9: DUP4
00000cfa: DUP4
00000cfb: PUSH1 0x00
00000cfd: DUP4
00000cfe: ISZERO
00000cff: PUSH2 0x076a
00000d02: JUMPI
00000d03: DUP2
00000d04: DUP2
00000d05: ADD
00000d06: MLOAD
00000d07: DUP4
00000d08: DUP3
00000d09: ADD
00000d0a: MSTORE
00000d0b: PUSH1 0x20
00000d0d: ADD
00000d0e: PUSH2 0x0752
00000d11: JUMP
00000d12: INVALID
00000d13: COINBASE
00000d14: PUSH5 0x6472657373
00000d1a: GASPRICE
00000d1b: KECCAK256
00000d1c: PUSH22 0x6e61626c6520746f2073656e642076616c75652c2072
00000d33: PUSH6 0x63697069656e
00000d3a: PUSH21 0x206d61792068617665207265766572746564416464
00000d50: PUSH19 0x6573733a20696e73756666696369656e742062
00000d64: PUSH2 0x6c61
00000d67: PUSH15 0x636520666f722063616c6c53616665
00000d77: UNKNOWN(0x4D)
00000d78: PUSH2 0x7468
00000d7b: GASPRICE
00000d7c: KECCAK256
00000d7d: PUSH14 0x756c7469706c69636174696f6e20
00000d8c: PUSH16 0x766572666c6f77536166654552433230
00000d9d: GASPRICE
00000d9e: KECCAK256
00000d9f: GASLIMIT
00000da0: MSTORE
00000da1: NUMBER
00000da2: ORIGIN
00000da3: ADDRESS
00000da4: KECCAK256
00000da5: PUSH16 0x7065726174696f6e20646964206e6f74
00000db6: KECCAK256
00000db7: PUSH20 0x756363656564a264697066735822122049202c18
00000dcc: PUSH29 0xcd4dd4416cb6cf436738655c43cfdfe0718c51389c3a0c079e20c76473
00000dea: PUSH16

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xbd5dec98",
            "selector": "0xbd5dec98",
            "calldata_variants": [
                "0xbd5dec98",
                "0xbd5dec980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xce7c2ac2",
            "selector": "0xce7c2ac2",
            "calldata_variants": [
                "0xce7c2ac2",
                "0xce7c2ac20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeedc966a",
            "selector": "0xeedc966a",
            "calldata_variants": [
                "0xeedc966a",
                "0xeedc966a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x211dc32d",
            "selector": "0x211dc32d",
            "calldata_variants": [
                "0x211dc32d",
                "0x211dc32d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3a98ef39",
            "selector": "0x3a98ef39",
            "calldata_variants": [
                "0x3a98ef39",
                "0x3a98ef390000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbbe430de",
            "selector": "0xbbe430de",
            "calldata_variants": [
                "0xbbe430de",
                "0xbbe430de0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 3490,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xacc41549e9b510d2cd590efccd30df01bdcdaea232ce70337f42e3a0b873eb0f
call_targets: 0xdc838074d95c89a5c2cbf26984fedc9160b61620
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xacc41549e9b510d2cd590efccd30df01bdcdaea232ce70337f42e3a0b873eb0f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xdc838074d95c89a5c2cbf26984fedc9160b61620"
    ],
    "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": "0xbd5dec98",
            "selector": "0xbd5dec98",
            "calldata_variants": [
                "0xbd5dec98",
                "0xbd5dec980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xce7c2ac2",
            "selector": "0xce7c2ac2",
            "calldata_variants": [
                "0xce7c2ac2",
                "0xce7c2ac20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeedc966a",
            "selector": "0xeedc966a",
            "calldata_variants": [
                "0xeedc966a",
                "0xeedc966a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x211dc32d",
            "selector": "0x211dc32d",
            "calldata_variants": [
                "0x211dc32d",
                "0x211dc32d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3a98ef39",
            "selector": "0x3a98ef39",
            "calldata_variants": [
                "0x3a98ef39",
                "0x3a98ef390000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbbe430de",
            "selector": "0xbbe430de",
            "calldata_variants": [
                "0xbbe430de",
                "0xbbe430de0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2246,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3132,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 3490,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xacc41549e9b510d2cd590efccd30df01bdcdaea232ce70337f42e3a0b873eb0f
call_targets: 0xdc838074d95c89a5c2cbf26984fedc9160b61620
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xacc41549e9b510d2cd590efccd30df01bdcdaea232ce70337f42e3a0b873eb0f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xdc838074d95c89a5c2cbf26984fedc9160b61620"
    ],
    "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": "0xbd5dec98",
            "selector": "0xbd5dec98",
            "calldata_variants": [
                "0xbd5dec98",
                "0xbd5dec980000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xce7c2ac2",
            "selector": "0xce7c2ac2",
            "calldata_variants": [
                "0xce7c2ac2",
                "0xce7c2ac20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeedc966a",
            "selector": "0xeedc966a",
            "calldata_variants": [
                "0xeedc966a",
                "0xeedc966a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x211dc32d",
            "selector": "0x211dc32d",
            "calldata_variants": [
                "0x211dc32d",
                "0x211dc32d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3a98ef39",
            "selector": "0x3a98ef39",
            "calldata_variants": [
                "0x3a98ef39",
                "0x3a98ef390000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbbe430de",
            "selector": "0xbbe430de",
            "calldata_variants": [
                "0xbbe430de",
                "0xbbe430de0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2246,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3132,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 3490,
            "type": "tx_origin_used"
        }
    ]
}