410227b2-e1f9-46a6-ad29-60f34e044459
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_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 |
viewtrace_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 |
viewtrace_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"
}
]
}
|