fff902d1-8613-4bc8-97f6-6dba982c6555
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 |
|---|---|---|---|---|
| 30412 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 93871 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 93872 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 93873 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 93874 | capability.graph | complete | 1 / 3 | 1 week ago |
| 93875 | detector.run | complete | 1 / 3 | 1 week ago |
| 93876 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1031308] OpenAI Codex v0.77.0 (research preview)
[codex:1031308] --------
[codex:1031308] workdir: /tmp/codex-multi-_w2ma75m
[codex:1031308] model: gpt-5.2-codex
[codex:1031308] provider: openai
[codex:1031308] approval: never
[codex:1031308] sandbox: read-only
[codex:1031308] reasoning effort: xhigh
[codex:1031308] reasoning summaries: auto
[codex:1031308] session id: 019b685b-2664-7632-8a47-29302463aef2
[codex:1031308] --------
[codex:1031308] user
[codex:1031308] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1031308] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1031308] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1031308]
[codex:1031308] Scope rules:
[codex:1031308] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1031308] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1031308]
[codex:1031308] Output MUST be valid JSON matching the provided schema.
[codex:1031308] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1031308] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1031308]
[codex:1031308] Output constraints (IMPORTANT):
[codex:1031308] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1031308] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1031308] mcp startup: no servers
[codex:1031308]
[codex:1031308] thinking
[codex:1031308] **Preparing to read AUDIT_BUNDLE.txt**
[codex:1031308] exec
[codex:1031308] /bin/bash -lc ls in /tmp/codex-multi-_w2ma75m succeeded in 6ms:
[codex:1031308] AUDIT_BUNDLE.txt
[codex:1031308] codex-output-schema.json
[codex:1031308] contracts
[codex:1031308]
[codex:1031308] thinking
[codex:1031308] **Reading AUDIT_BUNDLE.txt**
[codex:1031308] exec
[codex:1031308] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-_w2ma75m succeeded in 5ms:
[codex:1031308] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1031308]
[codex:1031308] ================================================================================
[codex:1031308] FILE: contracts/Contract.sol
[codex:1031308] ================================================================================
[codex:1031308] # @version 0.3.10
[codex:1031308] """
[codex:1031308] @title VestSplitter
[codex:1031308] @author Curve Finance
[codex:1031308] @license MIT
[codex:1031308] @notice Split VestingEscrow for a distribution of users, and accepts donations and top-ups.
[codex:1031308] Made originally to compensate victims of Vyper hack, but can be used for other purposes.
[codex:1031308] """
[codex:1031308]
[codex:1031308] from vyper.interfaces import ERC20
[codex:1031308]
[codex:1031308]
[codex:1031308] interface VestingEscrow:
[codex:1031308] def claim(): nonpayable
[codex:1031308] def balanceOf(user: address) -> uint256: view
[codex:1031308]
[codex:1031308] thinking
[codex:1031308] **Reviewing Vyper contract security**
[codex:1031308]
[codex:1031308] I’m auditing the Vyper contract for vulnerabilities, focusing on access control, reentrancy protections, unchecked token transfer returns, division by zero risks, and possible issues with deflationary tokens impacting accounting. I’m weighing which risks stem from malicious actors versus misconfiguration and considering how admin privileges influence attack feasibility. Next, I'll pinpoint code line numbers to generate structured JSON findings.
[codex:1031308] exec
[codex:1031308] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-_w2ma75m succeeded in 6ms:
[codex:1031308] 1 # @version 0.3.10
[codex:1031308] 2 """
[codex:1031308] 3 @title VestSplitter
[codex:1031308] 4 @author Curve Finance
[codex:1031308] 5 @license MIT
[codex:1031308] 6 @notice Split VestingEscrow for a distribution of users, and accepts donations and top-ups.
[codex:1031308] 7 Made originally to compensate victims of Vyper hack, but can be used for other purposes.
[codex:1031308] 8 """
[codex:1031308] 9
[codex:1031308] 10 from vyper.interfaces import ERC20
[codex:1031308] 11
[codex:1031308] 12
[codex:1031308] 13 interface VestingEscrow:
[codex:1031308] 14 def claim(): nonpayable
[codex:1031308] 15 def balanceOf(user: address) -> uint256: view
[codex:1031308] 16
[codex:1031308] 17
[codex:1031308] 18 event Claim:
[codex:1031308] 19 recipient: indexed(address)
[codex:1031308] 20 claimed: uint256
[codex:1031308]
[codex:1031308] thinking
[codex:1031308] **Generating JSON report for vulnerabilities**
[codex:1031308]
[codex:1031308] I'm putting together a JSON output summarizing a low-severity vulnerability about unchecked ERC20 transfer return values causing potential accounting mismatches. I'll carefully follow the required schema fields like severity, category, exploit scenario, recommendation, evidence, and file location, while also preparing a concise summary with no findings false since we have one low finding to report.
[codex:1031308] codex
[codex:1031308] {"no_findings":false,"summary":"1 low-severity issue found: ERC20 transfer return value is unchecked, which can desync accounting if a non-standard token returns false without reverting.","findings":[{"severity":"low","category":"other","title":"Unchecked ERC20 transfer return can mark claims as paid without transferring tokens","exploit_scenario":"If the configured TOKEN is a non-standard ERC20 that returns false (instead of reverting) on transfer failure, `claim` will still update `claimed` and emit a `Claim` event. The user is then treated as fully paid and cannot re-claim, even though no tokens were actually transferred.","recommendation":"Check the return value of `TOKEN.transfer` and revert on failure (e.g., `assert TOKEN.transfer(user, to_send)`), or use a safe transfer wrapper that enforces success.","evidence":"`TOKEN.transfer(user, to_send)` is called without checking the return value after updating accounting state.","locations":["contracts/Contract.sol:83"]}]}
[codex:1031308] tokens used
[codex:1031308] 9,870
[codex:1031308] {"no_findings":false,"summary":"1 low-severity issue found: ERC20 transfer return value is unchecked, which can desync accounting if a non-standard token returns false without reverting.","findings":[{"severity":"low","category":"other","title":"Unchecked ERC20 transfer return can mark claims as paid without transferring tokens","exploit_scenario":"If the configured TOKEN is a non-standard ERC20 that returns false (instead of reverting) on transfer failure, `claim` will still update `claimed` and emit a `Claim` event. The user is then treated as fully paid and cannot re-claim, even though no tokens were actually transferred.","recommendation":"Check the return value of `TOKEN.transfer` and revert on failure (e.g., `assert TOKEN.transfer(user, to_send)`), or use a safe transfer wrapper that enforces success.","evidence":"`TOKEN.transfer(user, to_send)` is called without checking the return value after updating accounting state.","locations":["contracts/Contract.sol:83"]}]}
{
"codex": {
"ran_at": "2025-12-29T04:27:09.501853+00:00",
"returncode": 0
},
"summary": "1 low-severity issue found: ERC20 transfer return value is unchecked, which can desync accounting if a non-standard token returns false without reverting.",
"raw_final": {
"summary": "1 low-severity issue found: ERC20 transfer return value is unchecked, which can desync accounting if a non-standard token returns false without reverting.",
"findings": [
{
"title": "Unchecked ERC20 transfer return can mark claims as paid without transferring tokens",
"category": "other",
"evidence": "`TOKEN.transfer(user, to_send)` is called without checking the return value after updating accounting state.",
"severity": "low",
"locations": [
"contracts/Contract.sol:83"
],
"recommendation": "Check the return value of `TOKEN.transfer` and revert on failure (e.g., `assert TOKEN.transfer(user, to_send)`), or use a safe transfer wrapper that enforces success.",
"exploit_scenario": "If the configured TOKEN is a non-standard ERC20 that returns false (instead of reverting) on transfer failure, `claim` will still update `claimed` and emit a `Claim` event. The user is then treated as fully paid and cannot re-claim, even though no tokens were actually transferred."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH0 00000001: CALLDATALOAD 00000002: PUSH1 0xe0 00000004: SHR 00000005: PUSH1 0x02 00000007: PUSH1 0x13 00000009: DUP3 0000000a: MOD 0000000b: PUSH1 0x01 0000000d: SHL 0000000e: PUSH2 0x094b 00000011: ADD 00000012: PUSH1 0x1e 00000014: CODECOPY 00000015: PUSH0 00000016: MLOAD 00000017: JUMP 00000018: JUMPDEST 00000019: PUSH4 0x82bfefc8 0000001e: DUP2 0000001f: XOR 00000020: PUSH2 0x0036 00000023: JUMPI 00000024: CALLVALUE 00000025: PUSH2 0x0947 00000028: JUMPI 00000029: PUSH1 0x20 0000002b: PUSH2 0x0971 0000002e: PUSH1 0x40 00000030: CODECOPY 00000031: PUSH1 0x20 00000033: PUSH1 0x40 00000035: RETURN 00000036: JUMPDEST 00000037: PUSH4 0x92fd2daf 0000003c: DUP2 0000003d: XOR 0000003e: PUSH2 0x0943 00000041: JUMPI 00000042: PUSH1 0x44 00000044: CALLDATASIZE 00000045: LT 00000046: CALLVALUE 00000047: OR 00000048: PUSH2 0x0947 0000004b: JUMPI 0000004c: PUSH1 0x04 0000004e: CALLDATALOAD 0000004f: DUP1 00000050: PUSH1 0xa0 00000052: SHR 00000053: PUSH2 0x0947 00000056: JUMPI 00000057: PUSH1 0x40 00000059: MSTORE 0000005a: PUSH1 0x24 0000005c: CALLDATALOAD 0000005d: DUP1 0000005e: PUSH1 0x01 00000060: SHR 00000061: PUSH2 0x0947 00000064: JUMPI 00000065: PUSH1 0x60 00000067: MSTORE 00000068: JUMPDEST 00000069: PUSH0 0000006a: SLOAD 0000006b: PUSH1 0x02 0000006d: EQ 0000006e: PUSH2 0x0947 00000071: JUMPI 00000072: PUSH1 0x02 00000074: PUSH0 00000075: SSTORE 00000076: PUSH1 0x01 00000078: SLOAD 00000079: PUSH1 0x80 0000007b: MSTORE 0000007c: PUSH1 0x60 0000007e: MLOAD 0000007f: PUSH2 0x0088 00000082: JUMPI 00000083: PUSH0 00000084: PUSH2 0x009d 00000087: JUMP 00000088: JUMPDEST 00000089: PUSH1 0x80 0000008b: MLOAD 0000008c: ISZERO 0000008d: PUSH2 0x009b 00000090: JUMPI 00000091: ADDRESS 00000092: PUSH1 0x80 00000094: MLOAD 00000095: EQ 00000096: ISZERO 00000097: PUSH2 0x009d 0000009a: JUMP 0000009b: JUMPDEST 0000009c: PUSH0 0000009d: JUMPDEST 0000009e: ISZERO 0000009f: PUSH2 0x00cd 000000a2: JUMPI 000000a3: PUSH1 0x80 000000a5: MLOAD 000000a6: PUSH4 0x4e71d92d 000000ab: PUSH1 0xa0 000000ad: MSTORE 000000ae: DUP1 000000af: EXTCODESIZE 000000b0: ISZERO 000000b1: PUSH2 0x0947 000000b4: JUMPI 000000b5: PUSH0 000000b6: PUSH1 0xa0 000000b8: PUSH1 0x04 000000ba: PUSH1 0xbc 000000bc: PUSH0 000000bd: DUP6 000000be: GAS 000000bf: CALL 000000c0: PUSH2 0x00cb 000000c3: JUMPI 000000c4: RETURNDATASIZE 000000c5: PUSH0 000000c6: PUSH0 000000c7: RETURNDATACOPY 000000c8: RETURNDATASIZE 000000c9: PUSH0 000000ca: REVERT 000000cb: JUMPDEST 000000cc: POP 000000cd: JUMPDEST 000000ce: PUSH1 0x06 000000d0: SLOAD 000000d1: PUSH1 0x20 000000d3: PUSH2 0x0971 000000d6: PUSH0 000000d7: CODECOPY 000000d8: PUSH0 000000d9: MLOAD 000000da: PUSH4 0x70a08231 000000df: PUSH1 0xc0 000000e1: MSTORE 000000e2: ADDRESS 000000e3: PUSH1 0xe0 000000e5: MSTORE 000000e6: PUSH1 0x20 000000e8: PUSH1 0xc0 000000ea: PUSH1 0x24 000000ec: PUSH1 0xdc 000000ee: DUP5 000000ef: GAS 000000f0: STATICCALL 000000f1: PUSH2 0x00fc 000000f4: JUMPI 000000f5: RETURNDATASIZE 000000f6: PUSH0 000000f7: PUSH0 000000f8: RETURNDATACOPY 000000f9: RETURNDATASIZE 000000fa: PUSH0 000000fb: REVERT 000000fc: JUMPDEST 000000fd: PUSH1 0x20 000000ff: RETURNDATASIZE 00000100: LT 00000101: PUSH2 0x0947 00000104: JUMPI 00000105: PUSH1 0xc0 00000107: SWAP1 00000108: POP 00000109: MLOAD 0000010a: PUSH1 0x05 0000010c: SLOAD 0000010d: DUP1 0000010e: DUP3 0000010f: SUB 00000110: DUP3 00000111: DUP2 00000112: GT 00000113: PUSH2 0x0947 00000116: JUMPI 00000117: SWAP1 00000118: POP 00000119: SWAP1 0000011a: POP 0000011b: DUP1 0000011c: DUP3 0000011d: ADD 0000011e: DUP3 0000011f: DUP2 00000120: LT 00000121: PUSH2 0x0947 00000124: JUMPI 00000125: SWAP1 00000126: POP 00000127: SWAP1 00000128: POP 00000129: PUSH1 0xa0 0000012b: MSTORE 0000012c: PUSH1 0xa0 0000012e: MLOAD 0000012f: PUSH1 0x06 00000131: SSTORE 00000132: PUSH1 0xa0 00000134: MLOAD 00000135: PUSH1 0x02 00000137: PUSH1 0x40 00000139: MLOAD 0000013a: PUSH1 0x20 0000013c: MSTORE 0000013d: PUSH0 0000013e: MSTORE 0000013f: PUSH1 0x40 00000141: PUSH0 00000142: KECCAK256 00000143: SLOAD 00000144: DUP1 00000145: DUP3 00000146: MUL 00000147: DUP2 00000148: ISZERO 00000149: DUP4 0000014a: DUP4 0000014b: DUP4 0000014c: DIV 0000014d: EQ 0000014e: OR 0000014f: ISZERO 00000150: PUSH2 0x0947 00000153: JUMPI 00000154: SWAP1 00000155: POP 00000156: SWAP1 00000157: POP 00000158: PUSH1 0x03 0000015a: SLOAD 0000015b: DUP1 0000015c: ISZERO 0000015d: PUSH2 0x0947 00000160: JUMPI 00000161: DUP1 00000162: DUP3 00000163: DIV 00000164: SWAP1 00000165: POP 00000166: SWAP1 00000167: POP 00000168: PUSH1 0xc0 0000016a: MSTORE 0000016b: PUSH1 0xc0 0000016d: MLOAD 0000016e: PUSH1 0x07 00000170: PUSH1 0x40 00000172: MLOAD 00000173: PUSH1 0x20 00000175: MSTORE 00000176: PUSH0 00000177: MSTORE 00000178: PUSH1 0x40 0000017a: PUSH0 0000017b: KECCAK256 0000017c: SLOAD 0000017d: DUP1 0000017e: DUP3 0000017f: SUB 00000180: DUP3 00000181: DUP2 00000182: GT 00000183: PUSH2 0x0947 00000186: JUMPI 00000187: SWAP1 00000188: POP 00000189: SWAP1 0000018a: POP 0000018b: PUSH1 0xe0 0000018d: MSTORE 0000018e: PUSH1 0xc0 00000190: MLOAD 00000191: PUSH1 0x07 00000193: PUSH1 0x40 00000195: MLOAD 00000196: PUSH1 0x20 00000198: MSTORE 00000199: PUSH0 0000019a: MSTORE 0000019b: PUSH1 0x40 0000019d: PUSH0 0000019e: KECCAK256 0000019f: SSTORE 000001a0: PUSH1 0x20 000001a2: PUSH2 0x0971 000001a5: PUSH0 000001a6: CODECOPY 000001a7: PUSH0 000001a8: MLOAD 000001a9: PUSH4 0xa9059cbb 000001ae: PUSH2 0x0100 000001b1: MSTORE 000001b2: PUSH1 0x40 000001b4: MLOAD 000001b5: PUSH2 0x0120 000001b8: MSTORE 000001b9: PUSH1 0xe0 000001bb: MLOAD 000001bc: PUSH2 0x0140 000001bf: MSTORE 000001c0: PUSH1 0x20 000001c2: PUSH2 0x0100 000001c5: PUSH1 0x44 000001c7: PUSH2 0x011c 000001ca: PUSH0 000001cb: DUP6 000001cc: GAS 000001cd: CALL 000001ce: PUSH2 0x01d9 000001d1: JUMPI 000001d2: RETURNDATASIZE 000001d3: PUSH0 000001d4: PUSH0 000001d5: RETURNDATACOPY 000001d6: RETURNDATASIZE 000001d7: PUSH0 000001d8: REVERT 000001d9: JUMPDEST 000001da: PUSH1 0x20 000001dc: RETURNDATASIZE 000001dd: LT 000001de: PUSH2 0x0947 000001e1: JUMPI 000001e2: PUSH2 0x0100 000001e5: MLOAD 000001e6: DUP1 000001e7: PUSH1 0x01 000001e9: SHR 000001ea: PUSH2 0x0947 000001ed: JUMPI 000001ee: PUSH2 0x0160 000001f1: MSTORE 000001f2: PUSH2 0x0160 000001f5: POP 000001f6: POP 000001f7: PUSH1 0x20 000001f9: PUSH2 0x0971 000001fc: PUSH0 000001fd: CODECOPY 000001fe: PUSH0 000001ff: MLOAD 00000200: PUSH4 0x70a08231 00000205: PUSH2 0x0100 00000208: MSTORE 00000209: ADDRESS 0000020a: PUSH2 0x0120 0000020d: MSTORE 0000020e: PUSH1 0x20 00000210: PUSH2 0x0100 00000213: PUSH1 0x24 00000215: PUSH2 0x011c 00000218: DUP5 00000219: GAS 0000021a: STATICCALL 0000021b: PUSH2 0x0226 0000021e: JUMPI 0000021f: RETURNDATASIZE 00000220: PUSH0 00000221: PUSH0 00000222: RETURNDATACOPY 00000223: RETURNDATASIZE 00000224: PUSH0 00000225: REVERT 00000226: JUMPDEST 00000227: PUSH1 0x20 00000229: RETURNDATASIZE 0000022a: LT 0000022b: PUSH2 0x0947 0000022e: JUMPI 0000022f: PUSH2 0x0100 00000232: SWAP1 00000233: POP 00000234: MLOAD 00000235: PUSH1 0x05 00000237: SSTORE 00000238: PUSH1 0x40 0000023a: MLOAD 0000023b: PUSH32 0x47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4 0000025c: PUSH1 0xe0 0000025e: MLOAD 0000025f: PUSH2 0x0100 00000262: MSTORE 00000263: PUSH1 0x20 00000265: PUSH2 0x0100 00000268: LOG2 00000269: PUSH1 0x03 0000026b: PUSH0 0000026c: SSTORE 0000026d: STOP 0000026e: PUSH2 0x0943 00000271: JUMP 00000272: JUMPDEST 00000273: PUSH4 0x458efde3 00000278: DUP2 00000279: XOR 0000027a: PUSH2 0x0943 0000027d: JUMPI 0000027e: CALLVALUE 0000027f: PUSH2 0x0947 00000282: JUMPI 00000283: PUSH1 0x01 00000285: SLOAD 00000286: PUSH1 0x40 00000288: MSTORE 00000289: PUSH1 0x20 0000028b: PUSH1 0x40 0000028d: RETURN 0000028e: PUSH2 0x0943 00000291: JUMP 00000292: JUMPDEST 00000293: PUSH4 0x2a0acc6a 00000298: DUP2 00000299: XOR 0000029a: PUSH2 0x02b0 0000029d: JUMPI 0000029e: CALLVALUE 0000029f: PUSH2 0x0947 000002a2: JUMPI 000002a3: PUSH1 0x20 000002a5: PUSH2 0x0991 000002a8: PUSH1 0x40 000002aa: CODECOPY 000002ab: PUSH1 0x20 000002ad: PUSH1 0x40 000002af: RETURN 000002b0: JUMPDEST 000002b1: PUSH4 0x59c0095a 000002b6: DUP2 000002b7: XOR 000002b8: PUSH2 0x0943 000002bb: JUMPI 000002bc: PUSH1 0x84 000002be: CALLDATASIZE 000002bf: LT 000002c0: CALLVALUE 000002c1: OR 000002c2: PUSH2 0x0947 000002c5: JUMPI 000002c6: PUSH1 0x04 000002c8: CALLDATALOAD 000002c9: PUSH1 0x04 000002cb: ADD 000002cc: PUSH1 0xc8 000002ce: DUP2 000002cf: CALLDATALOAD 000002d0: GT 000002d1: PUSH2 0x0947 000002d4: JUMPI 000002d5: DUP1 000002d6: CALLDATALOAD 000002d7: PUSH0 000002d8: DUP2 000002d9: PUSH1 0xc8 000002db: DUP2 000002dc: GT 000002dd: PUSH2 0x0947 000002e0: JUMPI 000002e1: DUP1 000002e2: ISZERO 000002e3: PUSH2 0x030d 000002e6: JUMPI 000002e7: SWAP1 000002e8: JUMPDEST 000002e9: DUP1 000002ea: PUSH1 0x05 000002ec: SHL 000002ed: PUSH1 0x20 000002ef: DUP6 000002f0: ADD 000002f1: ADD 000002f2: CALLDATALOAD 000002f3: DUP1 000002f4: PUSH1 0xa0 000002f6: SHR 000002f7: PUSH2 0x0947 000002fa: JUMPI 000002fb: DUP2 000002fc: PUSH1 0x05 000002fe: SHL 000002ff: PUSH1 0x60 00000301: ADD 00000302: MSTORE 00000303: PUSH1 0x01 00000305: ADD 00000306: DUP2 00000307: DUP2 00000308: XOR 00000309: PUSH2 0x02e8 0000030c: JUMPI 0000030d: JUMPDEST 0000030e: POP 0000030f: POP 00000310: DUP1 00000311: PUSH1 0x40 00000313: MSTORE 00000314: POP 00000315: POP 00000316: PUSH1 0x24 00000318: CALLDATALOAD 00000319: PUSH1 0x04 0000031b: ADD 0000031c: PUSH1 0xc8 0000031e: DUP2 0000031f: CALLDATALOAD 00000320: GT 00000321: PUSH2 0x0947 00000324: JUMPI 00000325: DUP1 00000326: CALLDATALOAD 00000327: PUSH1 0x20 00000329: DUP2 0000032a: PUSH1 0x05 0000032c: SHL 0000032d: ADD 0000032e: DUP1 0000032f: DUP4 00000330: PUSH2 0x1960 00000333: CALLDATACOPY 00000334: POP 00000335: POP 00000336: POP 00000337: PUSH1 0x20 00000339: PUSH2 0x0991 0000033c: PUSH0 0000033d: CODECOPY 0000033e: PUSH0 0000033f: MLOAD 00000340: CALLER 00000341: XOR 00000342: ISZERO 00000343: PUSH2 0x03ab 00000346: JUMPI 00000347: PUSH1 0x06 00000349: PUSH2 0x3280 0000034c: MSTORE 0000034d: PUSH32 0x4163636573730000000000000000000000000000000000000000000000000000 0000036e: PUSH2 0x32a0 00000371: MSTORE 00000372: PUSH2 0x3280 00000375: POP 00000376: PUSH2 0x3280 00000379: MLOAD 0000037a: DUP1 0000037b: PUSH2 0x32a0 0000037e: ADD 0000037f: PUSH1 0x1f 00000381: DUP3 00000382: PUSH0 00000383: SUB 00000384: AND 00000385: CALLDATASIZE 00000386: DUP3 00000387: CALLDATACOPY 00000388: POP 00000389: POP 0000038a: PUSH4 0x08c379a0 0000038f: PUSH2 0x3240 00000392: MSTORE 00000393: PUSH1 0x20 00000395: PUSH2 0x3260 00000398: MSTORE 00000399: PUSH1 0x1f 0000039b: NOT 0000039c: PUSH1 0x1f 0000039e: PUSH2 0x3280 000003a1: MLOAD 000003a2: ADD 000003a3: AND 000003a4: PUSH1 0x44 000003a6: ADD 000003a7: PUSH2 0x325c 000003aa: REVERT 000003ab: JUMPDEST 000003ac: PUSH1 0x04 000003ae: SLOAD 000003af: ISZERO 000003b0: PUSH2 0x043d 000003b3: JUMPI 000003b4: PUSH1 0x21 000003b6: PUSH2 0x3280 000003b9: MSTORE 000003ba: PUSH32 0x446973747269627574696f6e2069732066696e616c697a656420616c72656164 000003db: PUSH2 0x32a0 000003de: MSTORE 000003df: PUSH32 0x7900000000000000000000000000000000000000000000000000000000000000 00000400: PUSH2 0x32c0 00000403: MSTORE 00000404: PUSH2 0x3280 00000407: POP 00000408: PUSH2 0x3280 0000040b: MLOAD 0000040c: DUP1 0000040d: PUSH2 0x32a0 00000410: ADD 00000411: PUSH1 0x1f 00000413: DUP3 00000414: PUSH0 00000415: SUB 00000416: AND 00000417: CALLDATASIZE 00000418: DUP3 00000419: CALLDATACOPY 0000041a: POP 0000041b: POP 0000041c: PUSH4 0x08c379a0 00000421: PUSH2 0x3240 00000424: MSTORE 00000425: PUSH1 0x20 00000427: PUSH2 0x3260 0000042a: MSTORE 0000042b: PUSH1 0x1f 0000042d: NOT 0000042e: PUSH1 0x1f 00000430: PUSH2 0x3280 00000433: MLOAD 00000434: ADD 00000435: AND 00000436: PUSH1 0x44 00000438: ADD 00000439: PUSH2 0x325c 0000043c: REVERT 0000043d: JUMPDEST 0000043e: PUSH0 0000043f: PUSH1 0xc8 00000441: SWAP1 00000442: JUMPDEST 00000443: DUP1 00000444: PUSH2 0x3280 00000447: MSTORE 00000448: PUSH1 0x40 0000044a: MLOAD 0000044b: PUSH2 0x3280 0000044e: MLOAD 0000044f: LT 00000450: PUSH2 0x0458 00000453: JUMPI 00000454: PUSH2 0x04e9 00000457: JUMP 00000458: JUMPDEST 00000459: PUSH2 0x3280 0000045c: MLOAD 0000045d: PUSH1 0x40 0000045f: MLOAD 00000460: DUP2 00000461: LT 00000462: ISZERO 00000463: PUSH2 0x0947 00000466: JUMPI 00000467: PUSH1 0x05 00000469: SHL 0000046a: PUSH1 0x60 0000046c: ADD 0000046d: MLOAD 0000046e: PUSH2 0x32a0 00000471: MSTORE 00000472: PUSH1 0x02 00000474: PUSH2 0x32a0 00000477: MLOAD 00000478: PUSH1 0x20 0000047a: MSTORE 0000047b: PUSH0 0000047c: MSTORE 0000047d: PUSH1 0x40 0000047f: PUSH0 00000480: KECCAK256 00000481: SLOAD 00000482: PUSH2 0x32c0 00000485: MSTORE 00000486: PUSH2 0x3280 00000489: MLOAD 0000048a: PUSH2 0x1960 0000048d: MLOAD 0000048e: DUP2 0000048f: LT 00000490: ISZERO 00000491: PUSH2 0x0947 00000494: JUMPI 00000495: PUSH1 0x05 00000497: SHL 00000498: PUSH2 0x1980 0000049b: ADD 0000049c: MLOAD 0000049d: PUSH2 0x32e0 000004a0: MSTORE 000004a1: PUSH2 0x32e0 000004a4: MLOAD 000004a5: PUSH1 0x02 000004a7: PUSH2 0x32a0 000004aa: MLOAD 000004ab: PUSH1 0x20 000004ad: MSTORE 000004ae: PUSH0 000004af: MSTORE 000004b0: PUSH1 0x40 000004b2: PUSH0 000004b3: KECCAK256 000004b4: SSTORE 000004b5: PUSH1 0x03 000004b7: SLOAD 000004b8: PUSH2 0x32e0 000004bb: MLOAD 000004bc: DUP1 000004bd: DUP3 000004be: ADD 000004bf: DUP3 000004c0: DUP2 000004c1: LT 000004c2: PUSH2 0x0947 000004c5: JUMPI 000004c6: SWAP1 000004c7: POP 000004c8: SWAP1 000004c9: POP 000004ca: PUSH2 0x32c0 000004cd: MLOAD 000004ce: DUP1 000004cf: DUP3 000004d0: SUB 000004d1: DUP3 000004d2: DUP2 000004d3: GT 000004d4: PUSH2 0x0947 000004d7: JUMPI 000004d8: SWAP1 000004d9: POP 000004da: SWAP1 000004db: POP 000004dc: PUSH1 0x03 000004de: SSTORE 000004df: PUSH1 0x01 000004e1: ADD 000004e2: DUP2 000004e3: DUP2 000004e4: XOR 000004e5: PUSH2 0x0442 000004e8: JUMPI 000004e9: JUMPDEST 000004ea: POP 000004eb: POP 000004ec: STOP 000004ed: PUSH2 0x0943 000004f0: JUMP 000004f1: JUMPDEST 000004f2: PUSH4 0x1d026de4 000004f7: DUP2 000004f8: XOR 000004f9: PUSH2 0x0943 000004fc: JUMPI 000004fd: PUSH1 0x24 000004ff: CALLDATASIZE 00000500: LT 00000501: CALLVALUE 00000502: OR 00000503: PUSH2 0x0947 00000506: JUMPI 00000507: PUSH1 0x04 00000509: CALLDATALOAD 0000050a: DUP1 0000050b: PUSH1 0xa0 0000050d: SHR 0000050e: PUSH2 0x0947 00000511: JUMPI 00000512: PUSH1 0x40 00000514: MSTORE 00000515: PUSH1 0x02 00000517: PUSH1 0x40 00000519: MLOAD 0000051a: PUSH1 0x20 0000051c: MSTORE 0000051d: PUSH0 0000051e: MSTORE 0000051f: PUSH1 0x40 00000521: PUSH0 00000522: KECCAK256 00000523: SLOAD 00000524: PUSH1 0x60 00000526: MSTORE 00000527: PUSH1 0x20 00000529: PUSH1 0x60 0000052b: RETURN 0000052c: PUSH2 0x0943 0000052f: JUMP 00000530: JUMPDEST 00000531: PUSH4 0xe987fc11 00000536: DUP2 00000537: XOR 00000538: PUSH2 0x054c 0000053b: JUMPI 0000053c: CALLVALUE 0000053d: PUSH2 0x0947 00000540: JUMPI 00000541: PUSH1 0x03 00000543: SLOAD 00000544: PUSH1 0x40 00000546: MSTORE 00000547: PUSH1 0x20 00000549: PUSH1 0x40 0000054b: RETURN 0000054c: JUMPDEST 0000054d: PUSH4 0x4e71d92d 00000552: DUP2 00000553: XOR 00000554: PUSH2 0x0943 00000557: JUMPI 00000558: CALLVALUE 00000559: PUSH2 0x0947 0000055c: JUMPI 0000055d: CALLER 0000055e: PUSH1 0x40 00000560: MSTORE 00000561: PUSH1 0x01 00000563: PUSH1 0x60 00000565: MSTORE 00000566: PUSH2 0x0068 00000569: JUMP 0000056a: PUSH2 0x0943 0000056d: JUMP 0000056e: JUMPDEST 0000056f: PUSH4 0xb3f05b97 00000574: DUP2 00000575: XOR 00000576: PUSH2 0x058a 00000579: JUMPI 0000057a: CALLVALUE 0000057b: PUSH2 0x0947 0000057e: JUMPI 0000057f: PUSH1 0x04 00000581: SLOAD 00000582: PUSH1 0x40 00000584: MSTORE 00000585: PUSH1 0x20 00000587: PUSH1 0x40 00000589: RETURN 0000058a: JUMPDEST 0000058b: PUSH4 0xabf484ff 00000590: DUP2 00000591: XOR 00000592: PUSH2 0x0943 00000595: JUMPI 00000596: PUSH1 0x24 00000598: CALLDATASIZE 00000599: LT 0000059a: CALLVALUE 0000059b: OR 0000059c: PUSH2 0x0947 0000059f: JUMPI 000005a0: PUSH1 0x04 000005a2: CALLDATALOAD 000005a3: DUP1 000005a4: PUSH1 0xa0 000005a6: SHR 000005a7: PUSH2 0x0947 000005aa: JUMPI 000005ab: PUSH1 0x40 000005ad: MSTORE 000005ae: PUSH1 0x20 000005b0: PUSH2 0x0991 000005b3: PUSH0 000005b4: CODECOPY 000005b5: PUSH0 000005b6: MLOAD 000005b7: CALLER 000005b8: XOR 000005b9: ISZERO 000005ba: PUSH2 0x0619 000005bd: JUMPI 000005be: PUSH1 0x06 000005c0: PUSH1 0x60 000005c2: MSTORE 000005c3: PUSH32 0x4163636573730000000000000000000000000000000000000000000000000000 000005e4: PUSH1 0x80 000005e6: MSTORE 000005e7: PUSH1 0x60 000005e9: POP 000005ea: PUSH1 0x60 000005ec: MLOAD 000005ed: DUP1 000005ee: PUSH1 0x80 000005f0: ADD 000005f1: PUSH1 0x1f 000005f3: DUP3 000005f4: PUSH0 000005f5: SUB 000005f6: AND 000005f7: CALLDATASIZE 000005f8: DUP3 000005f9: CALLDATACOPY 000005fa: POP 000005fb: POP 000005fc: PUSH4 0x08c379a0 00000601: PUSH1 0x20 00000603: MSTORE 00000604: PUSH1 0x20 00000606: PUSH1 0x40 00000608: MSTORE 00000609: PUSH1 0x1f 0000060b: NOT 0000060c: PUSH1 0x1f 0000060e: PUSH1 0x60 00000610: MLOAD 00000611: ADD 00000612: AND 00000613: PUSH1 0x44 00000615: ADD 00000616: PUSH1 0x3c 00000618: REVERT 00000619: JUMPDEST 0000061a: PUSH1 0x01 0000061c: SLOAD 0000061d: ISZERO 0000061e: PUSH2 0x067d 00000621: JUMPI 00000622: PUSH1 0x10 00000624: PUSH1 0x60 00000626: MSTORE 00000627: PUSH32 0x5665737420616c72656164792073657400000000000000000000000000000000 00000648: PUSH1 0x80 0000064a: MSTORE 0000064b: PUSH1 0x60 0000064d: POP 0000064e: PUSH1 0x60 00000650: MLOAD 00000651: DUP1 00000652: PUSH1 0x80 00000654: ADD 00000655: PUSH1 0x1f 00000657: DUP3 00000658: PUSH0 00000659: SUB 0000065a: AND 0000065b: CALLDATASIZE 0000065c: DUP3 0000065d: CALLDATACOPY 0000065e: POP 0000065f: POP 00000660: PUSH4 0x08c379a0 00000665: PUSH1 0x20 00000667: MSTORE 00000668: PUSH1 0x20 0000066a: PUSH1 0x40 0000066c: MSTORE 0000066d: PUSH1 0x1f 0000066f: NOT 00000670: PUSH1 0x1f 00000672: PUSH1 0x60 00000674: MLOAD 00000675: ADD 00000676: AND 00000677: PUSH1 0x44 00000679: ADD 0000067a: PUSH1 0x3c 0000067c: REVERT 0000067d: JUMPDEST 0000067e: PUSH1 0x40 00000680: MLOAD 00000681: PUSH1 0x01 00000683: SSTORE 00000684: STOP 00000685: PUSH2 0x0943 00000688: JUMP 00000689: JUMPDEST 0000068a: PUSH4 0x0727adb3 0000068f: DUP2 00000690: XOR 00000691: PUSH2 0x0943 00000694: JUMPI 00000695: CALLVALUE 00000696: PUSH2 0x0947 00000699: JUMPI 0000069a: PUSH1 0x05 0000069c: SLOAD 0000069d: PUSH1 0x40 0000069f: MSTORE 000006a0: PUSH1 0x20 000006a2: PUSH1 0x40 000006a4: RETURN 000006a5: PUSH2 0x0943 000006a8: JUMP 000006a9: JUMPDEST 000006aa: PUSH4 0x906eba13 000006af: DUP2 000006b0: XOR 000006b1: PUSH2 0x06c5 000006b4: JUMPI 000006b5: CALLVALUE 000006b6: PUSH2 0x0947 000006b9: JUMPI 000006ba: PUSH1 0x06 000006bc: SLOAD 000006bd: PUSH1 0x40 000006bf: MSTORE 000006c0: PUSH1 0x20 000006c2: PUSH1 0x40 000006c4: RETURN 000006c5: JUMPDEST 000006c6: PUSH4 0x772865e2 000006cb: DUP2 000006cc: XOR 000006cd: PUSH2 0x0943 000006d0: JUMPI 000006d1: PUSH1 0x44 000006d3: CALLDATASIZE 000006d4: LT 000006d5: CALLVALUE 000006d6: OR 000006d7: PUSH2 0x0947 000006da: JUMPI 000006db: PUSH1 0x24 000006dd: CALLDATALOAD 000006de: DUP1 000006df: PUSH1 0x01 000006e1: SHR 000006e2: PUSH2 0x0947 000006e5: JUMPI 000006e6: PUSH1 0x60 000006e8: MSTORE 000006e9: JUMPDEST 000006ea: PUSH1 0x04 000006ec: CALLDATALOAD 000006ed: DUP1 000006ee: PUSH1 0xa0 000006f0: SHR 000006f1: PUSH2 0x0947 000006f4: JUMPI 000006f5: PUSH1 0x40 000006f7: MSTORE 000006f8: PUSH1 0x06 000006fa: SLOAD 000006fb: PUSH1 0x80 000006fd: MSTORE 000006fe: PUSH1 0x01 00000700: SLOAD 00000701: PUSH1 0xa0 00000703: MSTORE 00000704: PUSH1 0x60 00000706: MLOAD 00000707: PUSH2 0x0710 0000070a: JUMPI 0000070b: PUSH0 0000070c: PUSH2 0x0725 0000070f: JUMP 00000710: JUMPDEST 00000711: PUSH1 0xa0 00000713: MLOAD 00000714: ISZERO 00000715: PUSH2 0x0723 00000718: JUMPI 00000719: ADDRESS 0000071a: PUSH1 0xa0 0000071c: MLOAD 0000071d: EQ 0000071e: ISZERO 0000071f: PUSH2 0x0725 00000722: JUMP 00000723: JUMPDEST 00000724: PUSH0 00000725: JUMPDEST 00000726: ISZERO 00000727: PUSH2 0x0772 0000072a: JUMPI 0000072b: PUSH1 0x80 0000072d: MLOAD 0000072e: PUSH1 0xa0 00000730: MLOAD 00000731: PUSH4 0x70a08231 00000736: PUSH1 0xc0 00000738: MSTORE 00000739: ADDRESS 0000073a: PUSH1 0xe0 0000073c: MSTORE 0000073d: PUSH1 0x20 0000073f: PUSH1 0xc0 00000741: PUSH1 0x24 00000743: PUSH1 0xdc 00000745: DUP5 00000746: GAS 00000747: STATICCALL 00000748: PUSH2 0x0753 0000074b: JUMPI 0000074c: RETURNDATASIZE 0000074d: PUSH0 0000074e: PUSH0 0000074f: RETURNDATACOPY 00000750: RETURNDATASIZE 00000751: PUSH0 00000752: REVERT 00000753: JUMPDEST 00000754: PUSH1 0x20 00000756: RETURNDATASIZE 00000757: LT 00000758: PUSH2 0x0947 0000075b: JUMPI 0000075c: PUSH1 0xc0 0000075e: SWAP1 0000075f: POP 00000760: MLOAD 00000761: DUP1 00000762: DUP3 00000763: ADD 00000764: DUP3 00000765: DUP2 00000766: LT 00000767: PUSH2 0x0947 0000076a: JUMPI 0000076b: SWAP1 0000076c: POP 0000076d: SWAP1 0000076e: POP 0000076f: PUSH1 0x80 00000771: MSTORE 00000772: JUMPDEST 00000773: PUSH1 0x80 00000775: MLOAD 00000776: PUSH1 0x20 00000778: PUSH2 0x0971 0000077b: PUSH0 0000077c: CODECOPY 0000077d: PUSH0 0000077e: MLOAD 0000077f: PUSH4 0x70a08231 00000784: PUSH1 0xc0 00000786: MSTORE 00000787: ADDRESS 00000788: PUSH1 0xe0 0000078a: MSTORE 0000078b: PUSH1 0x20 0000078d: PUSH1 0xc0 0000078f: PUSH1 0x24 00000791: PUSH1 0xdc 00000793: DUP5 00000794: GAS 00000795: STATICCALL 00000796: PUSH2 0x07a1 00000799: JUMPI 0000079a: RETURNDATASIZE 0000079b: PUSH0 0000079c: PUSH0 0000079d: RETURNDATACOPY 0000079e: RETURNDATASIZE 0000079f: PUSH0 000007a0: REVERT 000007a1: JUMPDEST 000007a2: PUSH1 0x20 000007a4: RETURNDATASIZE 000007a5: LT 000007a6: PUSH2 0x0947 000007a9: JUMPI 000007aa: PUSH1 0xc0 000007ac: SWAP1 000007ad: POP 000007ae: MLOAD 000007af: DUP1 000007b0: DUP3 000007b1: ADD 000007b2: DUP3 000007b3: DUP2 000007b4: LT 000007b5: PUSH2 0x0947 000007b8: JUMPI 000007b9: SWAP1 000007ba: POP 000007bb: SWAP1 000007bc: POP 000007bd: PUSH1 0x05 000007bf: SLOAD 000007c0: DUP1 000007c1: DUP3 000007c2: SUB 000007c3: DUP3 000007c4: DUP2 000007c5: GT 000007c6: PUSH2 0x0947 000007c9: JUMPI 000007ca: SWAP1 000007cb: POP 000007cc: SWAP1 000007cd: POP 000007ce: PUSH1 0x80 000007d0: MSTORE 000007d1: PUSH1 0x80 000007d3: MLOAD 000007d4: PUSH1 0x02 000007d6: PUSH1 0x40 000007d8: MLOAD 000007d9: PUSH1 0x20 000007db: MSTORE 000007dc: PUSH0 000007dd: MSTORE 000007de: PUSH1 0x40 000007e0: PUSH0 000007e1: KECCAK256 000007e2: SLOAD 000007e3: DUP1 000007e4: DUP3 000007e5: MUL 000007e6: DUP2 000007e7: ISZERO 000007e8: DUP4 000007e9: DUP4 000007ea: DUP4 000007eb: DIV 000007ec: EQ 000007ed: OR 000007ee: ISZERO 000007ef: PUSH2 0x0947 000007f2: JUMPI 000007f3: SWAP1 000007f4: POP 000007f5: SWAP1 000007f6: POP 000007f7: PUSH1 0x03 000007f9: SLOAD 000007fa: DUP1 000007fb: ISZERO 000007fc: PUSH2 0x0947 000007ff: JUMPI 00000800: DUP1 00000801: DUP3 00000802: DIV 00000803: SWAP1 00000804: POP 00000805: SWAP1 00000806: POP 00000807: PUSH1 0xc0 00000809: MSTORE 0000080a: PUSH1 0xc0 0000080c: MLOAD 0000080d: PUSH1 0x07 0000080f: PUSH1 0x40 00000811: MLOAD 00000812: PUSH1 0x20 00000814: MSTORE 00000815: PUSH0 00000816: MSTORE 00000817: PUSH1 0x40 00000819: PUSH0 0000081a: KECCAK256 0000081b: SLOAD 0000081c: DUP1 0000081d: DUP3 0000081e: SUB 0000081f: DUP3 00000820: DUP2 00000821: GT 00000822: PUSH2 0x0947 00000825: JUMPI 00000826: SWAP1 00000827: POP 00000828: SWAP1 00000829: POP 0000082a: PUSH1 0xe0 0000082c: MSTORE 0000082d: PUSH1 0x20 0000082f: PUSH1 0xe0 00000831: RETURN 00000832: PUSH2 0x0943 00000835: JUMP 00000836: JUMPDEST 00000837: PUSH4 0xc884ef83 0000083c: DUP2 0000083d: XOR 0000083e: PUSH2 0x0871 00000841: JUMPI 00000842: PUSH1 0x24 00000844: CALLDATASIZE 00000845: LT 00000846: CALLVALUE 00000847: OR 00000848: PUSH2 0x0947 0000084b: JUMPI 0000084c: PUSH1 0x04 0000084e: CALLDATALOAD 0000084f: DUP1 00000850: PUSH1 0xa0 00000852: SHR 00000853: PUSH2 0x0947 00000856: JUMPI 00000857: PUSH1 0x40 00000859: MSTORE 0000085a: PUSH1 0x07 0000085c: PUSH1 0x40 0000085e: MLOAD 0000085f: PUSH1 0x20 00000861: MSTORE 00000862: PUSH0 00000863: MSTORE 00000864: PUSH1 0x40 00000866: PUSH0 00000867: KECCAK256 00000868: SLOAD 00000869: PUSH1 0x60 0000086b: MSTORE 0000086c: PUSH1 0x20 0000086e: PUSH1 0x60 00000870: RETURN 00000871: JUMPDEST 00000872: PUSH4 0x70a08231 00000877: DUP2 00000878: XOR 00000879: PUSH2 0x0943 0000087c: JUMPI 0000087d: PUSH1 0x24 0000087f: CALLDATASIZE 00000880: LT 00000881: CALLVALUE 00000882: OR 00000883: PUSH2 0x0947 00000886: JUMPI 00000887: PUSH1 0x01 00000889: PUSH1 0x60 0000088b: MSTORE 0000088c: PUSH2 0x06e9 0000088f: JUMP 00000890: PUSH2 0x0943 00000893: JUMP 00000894: JUMPDEST 00000895: PUSH4 0x2b083797 0000089a: DUP2 0000089b: XOR 0000089c: PUSH2 0x0916 0000089f: JUMPI 000008a0: CALLVALUE 000008a1: PUSH2 0x0947 000008a4: JUMPI 000008a5: PUSH1 0x20 000008a7: PUSH2 0x0991 000008aa: PUSH0 000008ab: CODECOPY 000008ac: PUSH0 000008ad: MLOAD 000008ae: CALLER 000008af: XOR 000008b0: ISZERO 000008b1: PUSH2 0x090f 000008b4: JUMPI 000008b5: PUSH1 0x06 000008b7: PUSH1 0x40 000008b9: MSTORE 000008ba: PUSH32 0x4163636573730000000000000000000000000000000000000000000000000000 000008db: PUSH1 0x60 000008dd: MSTORE 000008de: PUSH1 0x40 000008e0: POP 000008e1: PUSH1 0x40 000008e3: MLOAD 000008e4: DUP1 000008e5: PUSH1 0x60 000008e7: ADD 000008e8: PUSH1 0x1f 000008ea: DUP3 000008eb: PUSH0 000008ec: SUB 000008ed: AND 000008ee: CALLDATASIZE 000008ef: DUP3 000008f0: CALLDATACOPY 000008f1: POP 000008f2: POP 000008f3: PUSH4 0x08c379a0 000008f8: PUSH0 000008f9: MSTORE 000008fa: PUSH1 0x20 000008fc: PUSH1 0x20 000008fe: MSTORE 000008ff: PUSH1 0x1f 00000901: NOT 00000902: PUSH1 0x1f 00000904: PUSH1 0x40 00000906: MLOAD 00000907: ADD 00000908: AND 00000909: PUSH1 0x44 0000090b: ADD 0000090c: PUSH1 0x1c 0000090e: REVERT 0000090f: JUMPDEST 00000910: PUSH1 0x01 00000912: PUSH1 0x04 00000914: SSTORE 00000915: STOP 00000916: JUMPDEST 00000917: PUSH4 0x1e83409a 0000091c: DUP2 0000091d: XOR 0000091e: PUSH2 0x0943 00000921: JUMPI 00000922: PUSH1 0x24 00000924: CALLDATASIZE 00000925: LT 00000926: CALLVALUE 00000927: OR 00000928: PUSH2 0x0947 0000092b: JUMPI 0000092c: PUSH1 0x04 0000092e: CALLDATALOAD 0000092f: DUP1 00000930: PUSH1 0xa0 00000932: SHR 00000933: PUSH2 0x0947 00000936: JUMPI 00000937: PUSH1 0x40 00000939: MSTORE 0000093a: PUSH1 0x01 0000093c: PUSH1 0x60 0000093e: MSTORE 0000093f: PUSH2 0x0068 00000942: JUMP 00000943: JUMPDEST 00000944: PUSH0 00000945: PUSH0 00000946: REVERT 00000947: JUMPDEST 00000948: PUSH0 00000949: DUP1 0000094a: REVERT 0000094b: MULMOD 0000094c: NUMBER 0000094d: MULMOD 0000094e: NUMBER 0000094f: MOD 00000950: UNKNOWN(0xA9) 00000951: SDIV 00000952: PUSH15 0x068909430292094309430943083602 00000962: PUSH19 0x053009430943094304f1001808940000000000 00000976: STOP 00000977: STOP 00000978: STOP 00000979: STOP 0000097a: STOP 0000097b: STOP 0000097c: STOP 0000097d: UNKNOWN(0xC0) 0000097e: UNKNOWN(0x2A) 0000097f: UNKNOWN(0xAA) 00000980: CODECOPY 00000981: UNKNOWN(0xB2) 00000982: UNKNOWN(0x23) 00000983: INVALID 00000984: DUP14 00000985: EXP 00000986: UNKNOWN(0x0E) 00000987: TLOAD 00000988: UNKNOWN(0x4F) 00000989: UNKNOWN(0x27) 0000098a: UNKNOWN(0xEA) 0000098b: UNKNOWN(0xD9) 0000098c: ADDMOD 0000098d: EXTCODECOPY 0000098e: PUSH22 0x6cc2000000000000000000000000a90f91b989ad379f 000009a5: PUSH8 0x62d73e453521f760 000009ae: UNKNOWN(0xD2) 000009af: CALLDATALOAD 000009b0: DUP1
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x94a12a283c6452c059099c010f286d5a48fa07f22cda4063a2d0c502b077d4ee
call_targets:
0x3d7b8d296f7d8e37ce57e556dea3dd6cb01b2f03
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x94a12a283c6452c059099c010f286d5a48fa07f22cda4063a2d0c502b077d4ee",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x3d7b8d296f7d8e37ce57e556dea3dd6cb01b2f03"
],
"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": "0x",
"selector": "fallback",
"calldata_variants": [
"0x"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 461,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "constant",
"target_expression_category": "constant"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x94a12a283c6452c059099c010f286d5a48fa07f22cda4063a2d0c502b077d4ee
call_targets:
0x3d7b8d296f7d8e37ce57e556dea3dd6cb01b2f03
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x94a12a283c6452c059099c010f286d5a48fa07f22cda4063a2d0c502b077d4ee",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x3d7b8d296f7d8e37ce57e556dea3dd6cb01b2f03"
],
"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": "0x",
"selector": "fallback",
"calldata_variants": [
"0x"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 191,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "constant_zero",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| low | other | codex | Unchecked ERC20 transfer return can mark claims as paid without transferring tokens | 65 | no | — |
viewevidence_json{
"evidence": "`TOKEN.transfer(user, to_send)` is called without checking the return value after updating accounting state.",
"locations": [
"contracts/Contract.sol:83"
],
"recommendation": "Check the return value of `TOKEN.transfer` and revert on failure (e.g., `assert TOKEN.transfer(user, to_send)`), or use a safe transfer wrapper that enforces success.",
"exploit_scenario": "If the configured TOKEN is a non-standard ERC20 that returns false (instead of reverting) on transfer failure, `claim` will still update `claimed` and emit a `Claim` event. The user is then treated as fully paid and cannot re-claim, even though no tokens were actually transferred."
}
|