019ba9e0-bde2-7288-8ffe-0e2a23d3c7d7
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 |
|---|---|---|---|---|
| 37998 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 37999 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38000 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38001 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38002 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38003 | detector.run | complete | 1 / 3 | 3 months ago |
| 38004 | validation.fork | complete | 1 / 3 | 3 months ago |
| 38166 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.","findings":[{"severity":"low","category":"reentrancy","title":"External CALL to storage-derived target (possible untrusted call / reentrancy surface)","exploit_scenario":"Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it.","recommendation":"Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.","evidence":"Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.","locations":["pc:825","pc:945","pc:1640","pc:1669"]},{"severity":"low","category":"other","title":"ERC20 transfer/transferFrom return values appear unchecked","exploit_scenario":"The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies.","recommendation":"Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.","evidence":"After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.","locations":["pc:945","pc:962","pc:998","pc:1669","pc:1677","pc:1721"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-kx1wpuy2
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019baa4f-4aaf-7ff0-9d12-2e86225ed422
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers
thinking
**Reading BYTECODE_BUNDLE.json file**
exec
/bin/bash -lc ls in /tmp/codex-kx1wpuy2 succeeded in 7ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 succeeded in 30ms:
{
"analysis_artifact": {
"address": "0x123e33e6f65fe44314f863a24c58fdc2f5264f33",
"artifact_hash": "0xbd62b2a4e34fa25fd3d09c0da5274de7f264886770eeb6904a0852c54aedd2a2",
"artifact_json": {
"auth": {
"guards": [
{
"pc": 527,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 739,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1123,
"type": "msg_sender_eq_const",
thinking
**Analyzing CALL instructions for security implications**
exec
/bin/bash -lc 'rg -n "call:945|pc": 945" BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 exited 2 in 5ms:
/bin/bash: -c: line 1: unexpected EOF while looking for matching `"'
/bin/bash: -c: line 2: syntax error: unexpected end of file
thinking
**Correcting quote usage**
exec
/bin/bash -lc "rg -n 'call:945|pc\": 945' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 8ms:
4122: "pc": 945,
7513: "to": "call:945",
7517: "from": "call:945",
9392: "id": "call:945",
9394: "pc": 945,
9480: "pc": 945,
9566: "pc": 945,
thinking
**Gathering callsite context**
exec
/bin/bash -lc "sed -n '9360,9425p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 17ms:
"start_pc": 4258,
"type": "basic_block"
},
{
"end_pc": 4264,
"hash": "0x85768abf056509ab43c86ae6cee950a8cab8c1294704a0a819b242d2a6f7ad5f",
"id": "bb:4262",
"start_pc": 4262,
"type": "basic_block"
},
{
"end_pc": 4265,
"hash": "0x47014c4e40fc5d0f3310aa2becff76884caa1738830af9dbc5081feef0ba7717",
"id": "bb:4265",
"start_pc": 4265,
"type": "basic_block"
},
{
"end_pc": 4287,
"hash": "0x10af8acf7611f01a699f8ce83b10b4b94c73540e67d6e60346da1af0359f9768",
thinking
**Examining call context for target**
exec
/bin/bash -lc "sed -n '7485,7535p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 30ms:
},
{
"from": "fn:0xa6f9dae1",
"to": "bb:3605681073",
"type": "entry"
},
{
"from": "fn:0xd6ea53b1",
"to": "bb:4199134701",
"type": "entry"
},
{
"from": "fn:0x06394c9b",
"to": "bb:149402029",
"type": "entry"
},
{
"from": "fn:0x08e7b1ad",
"to": "bb:683770180",
"type": "entry"
thinking
**Searching for block with id bb:942**
exec
/bin/bash -lc "rg -n '\"id\": \"bb:942\"' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 26ms:
8001: "id": "bb:942",
exec
/bin/bash -lc "sed -n '7970,8035p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
{
"end_pc": 824,
"hash": "0xad828981d61e4db79ff788051bcdd93322ea66a3bd4428d31b3d8b88f6cd0195",
"id": "bb:816",
"start_pc": 816,
"type": "basic_block"
},
{
"end_pc": 915,
"hash": "0xe4effee9db632b81fa79ebec4d7d17a282b3a21a5d161814f29b9a9bdb231e93",
"id": "bb:825",
"start_pc": 825,
"type": "basic_block"
},
{
"end_pc": 937,
"hash": "0x12adbf845543b1539fb413b04de7a94027d3bd6debeca4caddf8f2ba159590b3",
"id": "bb:916",
"start_pc": 916,
"type": "basic_block"
thinking
**Searching for opcode details in basic_blocks**
exec
/bin/bash -lc "rg -n '\"start_pc\": 942' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
979: "start_pc": 942
8002: "start_pc": 942,
thinking
**Inspecting basic_blocks for opcodes**
exec
/bin/bash -lc "sed -n '930,990p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 30ms:
},
{
"end_pc": 937,
"hash": "0x12adbf845543b1539fb413b04de7a94027d3bd6debeca4caddf8f2ba159590b3",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"SUB",
"OP_81",
"PUSH1",
"OP_87",
"OP_80",
"EXTCODESIZE",
"ISZERO",
"OP_80",
"ISZERO",
thinking
**Analyzing external call sequence and stack setup**
exec
/bin/bash -lc "rg -n '\"start_pc\": 1666' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
1453: "start_pc": 1666
8156: "start_pc": 1666,
exec
/bin/bash -lc "sed -n '1435,1475p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
"REVERT"
],
"start_pc": 1662
},
{
"end_pc": 1676,
"hash": "0x5632b2abffcde665bdf372bb844a9d7bc931694ef4d89741080d4dc459fca92f",
"opcodes": [
"JUMPDEST",
"POP",
"GAS",
"CALL",
"ISZERO",
"OP_80",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1666
},
thinking
**Checking preceding code block**
exec
/bin/bash -lc "sed -n '1400,1445p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
"PUSH2",
"JUMP"
],
"start_pc": 1548
},
{
"end_pc": 1661,
"hash": "0xeb0119c3f5a217d1f4db95aeb76ab92e07882fdff7aa2f208cb3ea324f455ab9",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"SUB",
"OP_81",
"PUSH1",
"OP_87",
"OP_80",
thinking
**Analyzing contract upgradeability and access control**
exec
/bin/bash -lc 'rg -n "1967|proxy|beacon|implementation" BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 succeeded in 9ms:
6375: "implementation": null,
6377: "proxy": "0",
6382: "proxy_evidence": {
6383: "status": "not_proxy"
6386: "implementation_address": null,
6387: "is_proxy": false,
thinking
**Inspecting call evidence near 6360**
exec
/bin/bash -lc "sed -n '6325,6405p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
{
"op": "SLOAD",
"pc": 2008,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2220,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2434,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2575,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
}
thinking
**Analyzing runtime bytecode and storage slots**
I’m carefully parsing the runtime bytecode to understand function selectors, storage slot usage, and revert reasons indicating access control roles like operator, payer, and owner. I’m piecing together how storage slots 0-4 might hold key addresses and how token operations and permissions are checked, trying to make sense of calldata dispatch and slot reads without disassembler tools. This looks promising to identify potential vulnerabilities.
exec
/bin/bash -lc 'rg -n "storage_accesses|storage_slots" BYTECODE_BUNDLE.json' in /tmp/codex-kx1wpuy2 exited 1 in 25ms:
thinking
**Searching for storage references**
exec
/bin/bash -lc "rg -n 'storage' BYTECODE_BUNDLE.json | head" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
5309: "storage": {
5434: "storage": {
5559: "storage": {
5684: "storage": {
5809: "storage": {
5934: "storage": {
6059: "storage": {
6184: "storage": {
6276: "storage": {
thinking
**Inspecting storage sections near line 5270**
exec
/bin/bash -lc "sed -n '5250,5335p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 6ms:
{
"entry_pc": null,
"selector": "0x78db00ec"
}
],
"functions": [
{
"auth": {
"guards": [
{
"pc": 527,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 739,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
thinking
**Examining storage reads and writes**
exec
/bin/bash -lc "sed -n '5335,5425p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1370,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1540,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 1551,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1797,
thinking
**Continuing to browse function entries**
exec
/bin/bash -lc "sed -n '5425,5530p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 29ms:
},
"entry_pc": 3605681073,
"selector": "0xa6f9dae1",
"sinks": {
"call": 2,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 1
},
"storage": {
"reads": 17,
"slots": [
{
"op": "SLOAD",
"pc": 475,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 687,
thinking
**Analyzing runtime access controls and token calls**
This deep dive unpacks storage-based role checks and function behaviors, revealing that access control reliably reads from storage slots despite some static analysis conflicts. I'm spotting potential risks like unchecked ERC20 return values on low-level calls and examining how storage writes relate to external calls to assess reentrancy and correctness possibilities. There's a lot to unpack here about how the contract manages operator, payer, and owner roles alongside token interactions!
thinking
**Examining setter functions and call value handling**
I'll parse how various setter functions enforce access control and identify if any allow changing critical addresses without checks. I’m also digging into whether ETH transfers occur via CALL with nonzero value, how those values are set, and if all calls correctly handle return values and reentrancy concerns—there's a lot to piece together from these runtime snippets!
exec
/bin/bash -lc "sed -n '860,930p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 7ms:
"hash": "0xc53d430e058a79292eacfcc5590d2d59c9a4016e98c38b5316dbd1a6253674d7",
"opcodes": [
"PUSH1",
"MLOAD",
"PUSH32",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH2",
"OP_90",
"PUSH2",
"JUMP"
],
"start_pc": 767
},
{
"end_pc": 824,
"hash": "0xad828981d61e4db79ff788051bcdd93322ea66a3bd4428d31b3d8b88f6cd0195",
"opcodes": [
thinking
**Analyzing external call patterns and risks**
exec
/bin/bash -lc "sed -n '960,1035p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 15ms:
"OP_80",
"REVERT"
],
"start_pc": 938
},
{
"end_pc": 952,
"hash": "0xe6e7518e4f61a82886a571bee0ead8ee04ef4cdd3dcc130f60f64c79ddd06c72",
"opcodes": [
"JUMPDEST",
"POP",
"GAS",
"CALL",
"ISZERO",
"OP_80",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 942
thinking
**Identifying necessary blocks**
exec
/bin/bash -lc "sed -n '1035,1085p' BYTECODE_BUNDLE.json" in /tmp/codex-kx1wpuy2 succeeded in 8ms:
"POP",
"PUSH32",
"ADDRESS",
"OP_84",
"OP_83",
"TIMESTAMP",
"PUSH1",
"MLOAD",
"PUSH2",
"OP_94",
"OP_93",
"OP_92",
"OP_91",
"OP_90",
"PUSH2",
"JUMP"
],
"start_pc": 998
},
{
thinking
**Analyzing unchecked external calls and return values**
I'm carefully assessing the contract's calls to external token addresses stored in storage slots, noting unchecked ERC20 return values and potential untrusted external calls without reentrancy guards. The evidence shows calls at specific program counters copy return data without validating success booleans, and calls use storage-derived addresses with possible ETH value transfers. Access control is generally present but the risks hinge on trusted setting of critical addresses by privileged roles. Overall, I judge severity conservatively as low to medium and plan to include detailed findings with locations and recommendations.
thinking
**Detailing unchecked ERC20 return values**
I'm outlining a medium-to-low severity finding about token transfers that don’t validate ERC20 return values, which could lead to silent failures in transfer logic. The evidence includes call sites where only success flags are checked and return data is copied but never verified boolean-wise before proceeding to event logs. I’m planning to advise using safer token interaction practices like SafeERC20 and to note uncertainty in the exploit scenario.
codex
{"no_findings":false,"summary":"Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.","findings":[{"severity":"low","category":"reentrancy","title":"External CALL to storage-derived target (possible untrusted call / reentrancy surface)","exploit_scenario":"Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it.","recommendation":"Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.","evidence":"Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.","locations":["pc:825","pc:945","pc:1640","pc:1669"]},{"severity":"low","category":"other","title":"ERC20 transfer/transferFrom return values appear unchecked","exploit_scenario":"The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies.","recommendation":"Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.","evidence":"After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.","locations":["pc:945","pc:962","pc:998","pc:1669","pc:1677","pc:1721"]}]}
tokens used
119,806
{
"codex": {
"ran_at": "2026-01-10T23:52:52.729286+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 8640,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.",
"raw_final": {
"summary": "Two low-severity issues observed from bytecode: external CALLs to storage-derived targets (possible untrusted call/reentrancy surface) and ERC20 return values appear unchecked.",
"findings": [
{
"title": "External CALL to storage-derived target (possible untrusted call / reentrancy surface)",
"category": "reentrancy",
"evidence": "Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.",
"severity": "low",
"locations": [
"pc:825",
"pc:945",
"pc:1640",
"pc:1669"
],
"recommendation": "Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.",
"exploit_scenario": "Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it."
},
{
"title": "ERC20 transfer/transferFrom return values appear unchecked",
"category": "other",
"evidence": "After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.",
"severity": "low",
"locations": [
"pc:945",
"pc:962",
"pc:998",
"pc:1669",
"pc:1677",
"pc:1721"
],
"recommendation": "Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.",
"exploit_scenario": "The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x007f 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x7d81c4c1 00000019: GT 0000001a: PUSH2 0x004e 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x7d81c4c1 00000024: EQ 00000025: PUSH2 0x012f 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xa6f9dae1 0000002f: EQ 00000030: PUSH2 0x0158 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd6ea53b1 0000003a: EQ 0000003b: PUSH2 0x0181 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xfa49b5ed 00000045: EQ 00000046: PUSH2 0x01aa 00000049: JUMPI 0000004a: PUSH2 0x0086 0000004d: JUMP 0000004e: JUMPDEST 0000004f: DUP1 00000050: PUSH4 0x06394c9b 00000055: EQ 00000056: PUSH2 0x008b 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x08e7b1ad 00000060: EQ 00000061: PUSH2 0x00b4 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0x28c18144 0000006b: EQ 0000006c: PUSH2 0x00dd 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x78db00ec 00000076: EQ 00000077: PUSH2 0x0106 0000007a: JUMPI 0000007b: PUSH2 0x0086 0000007e: JUMP 0000007f: JUMPDEST 00000080: CALLDATASIZE 00000081: PUSH2 0x0086 00000084: JUMPI 00000085: STOP 00000086: JUMPDEST 00000087: PUSH1 0x00 00000089: DUP1 0000008a: REVERT 0000008b: JUMPDEST 0000008c: CALLVALUE 0000008d: DUP1 0000008e: ISZERO 0000008f: PUSH2 0x0097 00000092: JUMPI 00000093: PUSH1 0x00 00000095: DUP1 00000096: REVERT 00000097: JUMPDEST 00000098: POP 00000099: PUSH2 0x00b2 0000009c: PUSH1 0x04 0000009e: DUP1 0000009f: CALLDATASIZE 000000a0: SUB 000000a1: DUP2 000000a2: ADD 000000a3: SWAP1 000000a4: PUSH2 0x00ad 000000a7: SWAP2 000000a8: SWAP1 000000a9: PUSH2 0x0aed 000000ac: JUMP 000000ad: JUMPDEST 000000ae: PUSH2 0x01d5 000000b1: JUMP 000000b2: JUMPDEST 000000b3: STOP 000000b4: JUMPDEST 000000b5: CALLVALUE 000000b6: DUP1 000000b7: ISZERO 000000b8: PUSH2 0x00c0 000000bb: JUMPI 000000bc: PUSH1 0x00 000000be: DUP1 000000bf: REVERT 000000c0: JUMPDEST 000000c1: POP 000000c2: PUSH2 0x00db 000000c5: PUSH1 0x04 000000c7: DUP1 000000c8: CALLDATASIZE 000000c9: SUB 000000ca: DUP2 000000cb: ADD 000000cc: SWAP1 000000cd: PUSH2 0x00d6 000000d0: SWAP2 000000d1: SWAP1 000000d2: PUSH2 0x0b1a 000000d5: JUMP 000000d6: JUMPDEST 000000d7: PUSH2 0x02a9 000000da: JUMP 000000db: JUMPDEST 000000dc: STOP 000000dd: JUMPDEST 000000de: CALLVALUE 000000df: DUP1 000000e0: ISZERO 000000e1: PUSH2 0x00e9 000000e4: JUMPI 000000e5: PUSH1 0x00 000000e7: DUP1 000000e8: REVERT 000000e9: JUMPDEST 000000ea: POP 000000eb: PUSH2 0x0104 000000ee: PUSH1 0x04 000000f0: DUP1 000000f1: CALLDATASIZE 000000f2: SUB 000000f3: DUP2 000000f4: ADD 000000f5: SWAP1 000000f6: PUSH2 0x00ff 000000f9: SWAP2 000000fa: SWAP1 000000fb: PUSH2 0x0be3 000000fe: JUMP 000000ff: JUMPDEST 00000100: PUSH2 0x0429 00000103: JUMP 00000104: JUMPDEST 00000105: STOP 00000106: JUMPDEST 00000107: CALLVALUE 00000108: DUP1 00000109: ISZERO 0000010a: PUSH2 0x0112 0000010d: JUMPI 0000010e: PUSH1 0x00 00000110: DUP1 00000111: REVERT 00000112: JUMPDEST 00000113: POP 00000114: PUSH2 0x012d 00000117: PUSH1 0x04 00000119: DUP1 0000011a: CALLDATASIZE 0000011b: SUB 0000011c: DUP2 0000011d: ADD 0000011e: SWAP1 0000011f: PUSH2 0x0128 00000122: SWAP2 00000123: SWAP1 00000124: PUSH2 0x0b1a 00000127: JUMP 00000128: JUMPDEST 00000129: PUSH2 0x04c3 0000012c: JUMP 0000012d: JUMPDEST 0000012e: STOP 0000012f: JUMPDEST 00000130: CALLVALUE 00000131: DUP1 00000132: ISZERO 00000133: PUSH2 0x013b 00000136: JUMPI 00000137: PUSH1 0x00 00000139: DUP1 0000013a: REVERT 0000013b: JUMPDEST 0000013c: POP 0000013d: PUSH2 0x0156 00000140: PUSH1 0x04 00000142: DUP1 00000143: CALLDATASIZE 00000144: SUB 00000145: DUP2 00000146: ADD 00000147: SWAP1 00000148: PUSH2 0x0151 0000014b: SWAP2 0000014c: SWAP1 0000014d: PUSH2 0x0bb6 00000150: JUMP 00000151: JUMPDEST 00000152: PUSH2 0x06ff 00000155: JUMP 00000156: JUMPDEST 00000157: STOP 00000158: JUMPDEST 00000159: CALLVALUE 0000015a: DUP1 0000015b: ISZERO 0000015c: PUSH2 0x0164 0000015f: JUMPI 00000160: PUSH1 0x00 00000162: DUP1 00000163: REVERT 00000164: JUMPDEST 00000165: POP 00000166: PUSH2 0x017f 00000169: PUSH1 0x04 0000016b: DUP1 0000016c: CALLDATASIZE 0000016d: SUB 0000016e: DUP2 0000016f: ADD 00000170: SWAP1 00000171: PUSH2 0x017a 00000174: SWAP2 00000175: SWAP1 00000176: PUSH2 0x0aed 00000179: JUMP 0000017a: JUMPDEST 0000017b: PUSH2 0x07d2 0000017e: JUMP 0000017f: JUMPDEST 00000180: STOP 00000181: JUMPDEST 00000182: CALLVALUE 00000183: DUP1 00000184: ISZERO 00000185: PUSH2 0x018d 00000188: JUMPI 00000189: PUSH1 0x00 0000018b: DUP1 0000018c: REVERT 0000018d: JUMPDEST 0000018e: POP 0000018f: PUSH2 0x01a8 00000192: PUSH1 0x04 00000194: DUP1 00000195: CALLDATASIZE 00000196: SUB 00000197: DUP2 00000198: ADD 00000199: SWAP1 0000019a: PUSH2 0x01a3 0000019d: SWAP2 0000019e: SWAP1 0000019f: PUSH2 0x0aed 000001a2: JUMP 000001a3: JUMPDEST 000001a4: PUSH2 0x08a6 000001a7: JUMP 000001a8: JUMPDEST 000001a9: STOP 000001aa: JUMPDEST 000001ab: CALLVALUE 000001ac: DUP1 000001ad: ISZERO 000001ae: PUSH2 0x01b6 000001b1: JUMPI 000001b2: PUSH1 0x00 000001b4: DUP1 000001b5: REVERT 000001b6: JUMPDEST 000001b7: POP 000001b8: PUSH2 0x01bf 000001bb: PUSH2 0x097a 000001be: JUMP 000001bf: JUMPDEST 000001c0: PUSH1 0x40 000001c2: MLOAD 000001c3: PUSH2 0x01cc 000001c6: SWAP2 000001c7: SWAP1 000001c8: PUSH2 0x0e24 000001cb: JUMP 000001cc: JUMPDEST 000001cd: PUSH1 0x40 000001cf: MLOAD 000001d0: DUP1 000001d1: SWAP2 000001d2: SUB 000001d3: SWAP1 000001d4: RETURN 000001d5: JUMPDEST 000001d6: PUSH1 0x01 000001d8: PUSH1 0x00 000001da: SWAP1 000001db: SLOAD 000001dc: SWAP1 000001dd: PUSH2 0x0100 000001e0: EXP 000001e1: SWAP1 000001e2: DIV 000001e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001f8: AND 000001f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000020e: AND 0000020f: CALLER 00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000225: AND 00000226: EQ 00000227: PUSH2 0x0265 0000022a: JUMPI 0000022b: PUSH1 0x40 0000022d: MLOAD 0000022e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000024f: DUP2 00000250: MSTORE 00000251: PUSH1 0x04 00000253: ADD 00000254: PUSH2 0x025c 00000257: SWAP1 00000258: PUSH2 0x0e04 0000025b: JUMP 0000025c: JUMPDEST 0000025d: PUSH1 0x40 0000025f: MLOAD 00000260: DUP1 00000261: SWAP2 00000262: SUB 00000263: SWAP1 00000264: REVERT 00000265: JUMPDEST 00000266: DUP1 00000267: PUSH1 0x02 00000269: PUSH1 0x00 0000026b: PUSH2 0x0100 0000026e: EXP 0000026f: DUP2 00000270: SLOAD 00000271: DUP2 00000272: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000287: MUL 00000288: NOT 00000289: AND 0000028a: SWAP1 0000028b: DUP4 0000028c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002a1: AND 000002a2: MUL 000002a3: OR 000002a4: SWAP1 000002a5: SSTORE 000002a6: POP 000002a7: POP 000002a8: JUMP 000002a9: JUMPDEST 000002aa: PUSH1 0x03 000002ac: PUSH1 0x00 000002ae: SWAP1 000002af: SLOAD 000002b0: SWAP1 000002b1: PUSH2 0x0100 000002b4: EXP 000002b5: SWAP1 000002b6: DIV 000002b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002cc: AND 000002cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002e2: AND 000002e3: CALLER 000002e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002f9: AND 000002fa: EQ 000002fb: PUSH2 0x0339 000002fe: JUMPI 000002ff: PUSH1 0x40 00000301: MLOAD 00000302: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000323: DUP2 00000324: MSTORE 00000325: PUSH1 0x04 00000327: ADD 00000328: PUSH2 0x0330 0000032b: SWAP1 0000032c: PUSH2 0x0de4 0000032f: JUMP 00000330: JUMPDEST 00000331: PUSH1 0x40 00000333: MLOAD 00000334: DUP1 00000335: SWAP2 00000336: SUB 00000337: SWAP1 00000338: REVERT 00000339: JUMPDEST 0000033a: PUSH1 0x00 0000033c: DUP1 0000033d: SLOAD 0000033e: SWAP1 0000033f: PUSH2 0x0100 00000342: EXP 00000343: SWAP1 00000344: DIV 00000345: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000035a: AND 0000035b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000370: AND 00000371: PUSH4 0xa9059cbb 00000376: DUP5 00000377: DUP5 00000378: PUSH1 0x40 0000037a: MLOAD 0000037b: DUP4 0000037c: PUSH4 0xffffffff 00000381: AND 00000382: PUSH1 0xe0 00000384: SHL 00000385: DUP2 00000386: MSTORE 00000387: PUSH1 0x04 00000389: ADD 0000038a: PUSH2 0x0394 0000038d: SWAP3 0000038e: SWAP2 0000038f: SWAP1 00000390: PUSH2 0x0d9b 00000393: JUMP 00000394: JUMPDEST 00000395: PUSH1 0x20 00000397: PUSH1 0x40 00000399: MLOAD 0000039a: DUP1 0000039b: DUP4 0000039c: SUB 0000039d: DUP2 0000039e: PUSH1 0x00 000003a0: DUP8 000003a1: DUP1 000003a2: EXTCODESIZE 000003a3: ISZERO 000003a4: DUP1 000003a5: ISZERO 000003a6: PUSH2 0x03ae 000003a9: JUMPI 000003aa: PUSH1 0x00 000003ac: DUP1 000003ad: REVERT 000003ae: JUMPDEST 000003af: POP 000003b0: GAS 000003b1: CALL 000003b2: ISZERO 000003b3: DUP1 000003b4: ISZERO 000003b5: PUSH2 0x03c2 000003b8: JUMPI 000003b9: RETURNDATASIZE 000003ba: PUSH1 0x00 000003bc: DUP1 000003bd: RETURNDATACOPY 000003be: RETURNDATASIZE 000003bf: PUSH1 0x00 000003c1: REVERT 000003c2: JUMPDEST 000003c3: POP 000003c4: POP 000003c5: POP 000003c6: POP 000003c7: PUSH1 0x40 000003c9: MLOAD 000003ca: RETURNDATASIZE 000003cb: PUSH1 0x1f 000003cd: NOT 000003ce: PUSH1 0x1f 000003d0: DUP3 000003d1: ADD 000003d2: AND 000003d3: DUP3 000003d4: ADD 000003d5: DUP1 000003d6: PUSH1 0x40 000003d8: MSTORE 000003d9: POP 000003da: DUP2 000003db: ADD 000003dc: SWAP1 000003dd: PUSH2 0x03e6 000003e0: SWAP2 000003e1: SWAP1 000003e2: PUSH2 0x0b89 000003e5: JUMP 000003e6: JUMPDEST 000003e7: POP 000003e8: PUSH32 0x8679060cc1d9d7559a679728ac8b58dcce1026fac1f09068eafa9250e55214f2 00000409: ADDRESS 0000040a: DUP5 0000040b: DUP4 0000040c: TIMESTAMP 0000040d: PUSH1 0x40 0000040f: MLOAD 00000410: PUSH2 0x041c 00000413: SWAP5 00000414: SWAP4 00000415: SWAP3 00000416: SWAP2 00000417: SWAP1 00000418: PUSH2 0x0d18 0000041b: JUMP 0000041c: JUMPDEST 0000041d: PUSH1 0x40 0000041f: MLOAD 00000420: DUP1 00000421: SWAP2 00000422: SUB 00000423: SWAP1 00000424: LOG1 00000425: POP 00000426: POP 00000427: POP 00000428: JUMP 00000429: JUMPDEST 0000042a: PUSH1 0x01 0000042c: PUSH1 0x00 0000042e: SWAP1 0000042f: SLOAD 00000430: SWAP1 00000431: PUSH2 0x0100 00000434: EXP 00000435: SWAP1 00000436: DIV 00000437: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000044c: AND 0000044d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000462: AND 00000463: CALLER 00000464: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000479: AND 0000047a: EQ 0000047b: PUSH2 0x04b9 0000047e: JUMPI 0000047f: PUSH1 0x40 00000481: MLOAD 00000482: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000004a3: DUP2 000004a4: MSTORE 000004a5: PUSH1 0x04 000004a7: ADD 000004a8: PUSH2 0x04b0 000004ab: SWAP1 000004ac: PUSH2 0x0e04 000004af: JUMP 000004b0: JUMPDEST 000004b1: PUSH1 0x40 000004b3: MLOAD 000004b4: DUP1 000004b5: SWAP2 000004b6: SUB 000004b7: SWAP1 000004b8: REVERT 000004b9: JUMPDEST 000004ba: DUP1 000004bb: PUSH1 0x04 000004bd: DUP2 000004be: SWAP1 000004bf: SSTORE 000004c0: POP 000004c1: POP 000004c2: JUMP 000004c3: JUMPDEST 000004c4: PUSH1 0x02 000004c6: PUSH1 0x00 000004c8: SWAP1 000004c9: SLOAD 000004ca: SWAP1 000004cb: PUSH2 0x0100 000004ce: EXP 000004cf: SWAP1 000004d0: DIV 000004d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004e6: AND 000004e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004fc: AND 000004fd: CALLER 000004fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000513: AND 00000514: EQ 00000515: PUSH2 0x0553 00000518: JUMPI 00000519: PUSH1 0x40 0000051b: MLOAD 0000051c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000053d: DUP2 0000053e: MSTORE 0000053f: PUSH1 0x04 00000541: ADD 00000542: PUSH2 0x054a 00000545: SWAP1 00000546: PUSH2 0x0dc4 00000549: JUMP 0000054a: JUMPDEST 0000054b: PUSH1 0x40 0000054d: MLOAD 0000054e: DUP1 0000054f: SWAP2 00000550: SUB 00000551: SWAP1 00000552: REVERT 00000553: JUMPDEST 00000554: PUSH1 0x00 00000556: DUP1 00000557: PUSH1 0x00 00000559: SWAP1 0000055a: SLOAD 0000055b: SWAP1 0000055c: PUSH2 0x0100 0000055f: EXP 00000560: SWAP1 00000561: DIV 00000562: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000577: AND 00000578: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000058d: AND 0000058e: PUSH4 0x70a08231 00000593: DUP6 00000594: PUSH1 0x40 00000596: MLOAD 00000597: DUP3 00000598: PUSH4 0xffffffff 0000059d: AND 0000059e: PUSH1 0xe0 000005a0: SHL 000005a1: DUP2 000005a2: MSTORE 000005a3: PUSH1 0x04 000005a5: ADD 000005a6: PUSH2 0x05af 000005a9: SWAP2 000005aa: SWAP1 000005ab: PUSH2 0x0cfd 000005ae: JUMP 000005af: JUMPDEST 000005b0: PUSH1 0x20 000005b2: PUSH1 0x40 000005b4: MLOAD 000005b5: DUP1 000005b6: DUP4 000005b7: SUB 000005b8: DUP2 000005b9: DUP7 000005ba: DUP1 000005bb: EXTCODESIZE 000005bc: ISZERO 000005bd: DUP1 000005be: ISZERO 000005bf: PUSH2 0x05c7 000005c2: JUMPI 000005c3: PUSH1 0x00 000005c5: DUP1 000005c6: REVERT 000005c7: JUMPDEST 000005c8: POP 000005c9: GAS 000005ca: STATICCALL 000005cb: ISZERO 000005cc: DUP1 000005cd: ISZERO 000005ce: PUSH2 0x05db 000005d1: JUMPI 000005d2: RETURNDATASIZE 000005d3: PUSH1 0x00 000005d5: DUP1 000005d6: RETURNDATACOPY 000005d7: RETURNDATASIZE 000005d8: PUSH1 0x00 000005da: REVERT 000005db: JUMPDEST 000005dc: POP 000005dd: POP 000005de: POP 000005df: POP 000005e0: PUSH1 0x40 000005e2: MLOAD 000005e3: RETURNDATASIZE 000005e4: PUSH1 0x1f 000005e6: NOT 000005e7: PUSH1 0x1f 000005e9: DUP3 000005ea: ADD 000005eb: AND 000005ec: DUP3 000005ed: ADD 000005ee: DUP1 000005ef: PUSH1 0x40 000005f1: MSTORE 000005f2: POP 000005f3: DUP2 000005f4: ADD 000005f5: SWAP1 000005f6: PUSH2 0x05ff 000005f9: SWAP2 000005fa: SWAP1 000005fb: PUSH2 0x0c10 000005fe: JUMP 000005ff: JUMPDEST 00000600: SWAP1 00000601: POP 00000602: PUSH1 0x04 00000604: SLOAD 00000605: DUP2 00000606: GT 00000607: ISZERO 00000608: PUSH2 0x06f9 0000060b: JUMPI 0000060c: PUSH1 0x00 0000060e: DUP1 0000060f: SLOAD 00000610: SWAP1 00000611: PUSH2 0x0100 00000614: EXP 00000615: SWAP1 00000616: DIV 00000617: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000062c: AND 0000062d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000642: AND 00000643: PUSH4 0x23b872dd 00000648: DUP6 00000649: ADDRESS 0000064a: DUP7 0000064b: PUSH1 0x40 0000064d: MLOAD 0000064e: DUP5 0000064f: PUSH4 0xffffffff 00000654: AND 00000655: PUSH1 0xe0 00000657: SHL 00000658: DUP2 00000659: MSTORE 0000065a: PUSH1 0x04 0000065c: ADD 0000065d: PUSH2 0x0668 00000660: SWAP4 00000661: SWAP3 00000662: SWAP2 00000663: SWAP1 00000664: PUSH2 0x0d64 00000667: JUMP 00000668: JUMPDEST 00000669: PUSH1 0x20 0000066b: PUSH1 0x40 0000066d: MLOAD 0000066e: DUP1 0000066f: DUP4 00000670: SUB 00000671: DUP2 00000672: PUSH1 0x00 00000674: DUP8 00000675: DUP1 00000676: EXTCODESIZE 00000677: ISZERO 00000678: DUP1 00000679: ISZERO 0000067a: PUSH2 0x0682 0000067d: JUMPI 0000067e: PUSH1 0x00 00000680: DUP1 00000681: REVERT 00000682: JUMPDEST 00000683: POP 00000684: GAS 00000685: CALL 00000686: ISZERO 00000687: DUP1 00000688: ISZERO 00000689: PUSH2 0x0696 0000068c: JUMPI 0000068d: RETURNDATASIZE 0000068e: PUSH1 0x00 00000690: DUP1 00000691: RETURNDATACOPY 00000692: RETURNDATASIZE 00000693: PUSH1 0x00 00000695: REVERT 00000696: JUMPDEST 00000697: POP 00000698: POP 00000699: POP 0000069a: POP 0000069b: PUSH1 0x40 0000069d: MLOAD 0000069e: RETURNDATASIZE 0000069f: PUSH1 0x1f 000006a1: NOT 000006a2: PUSH1 0x1f 000006a4: DUP3 000006a5: ADD 000006a6: AND 000006a7: DUP3 000006a8: ADD 000006a9: DUP1 000006aa: PUSH1 0x40 000006ac: MSTORE 000006ad: POP 000006ae: DUP2 000006af: ADD 000006b0: SWAP1 000006b1: PUSH2 0x06ba 000006b4: SWAP2 000006b5: SWAP1 000006b6: PUSH2 0x0b89 000006b9: JUMP 000006ba: JUMPDEST 000006bb: POP 000006bc: PUSH32 0x8679060cc1d9d7559a679728ac8b58dcce1026fac1f09068eafa9250e55214f2 000006dd: DUP5 000006de: ADDRESS 000006df: DUP5 000006e0: TIMESTAMP 000006e1: PUSH1 0x40 000006e3: MLOAD 000006e4: PUSH2 0x06f0 000006e7: SWAP5 000006e8: SWAP4 000006e9: SWAP3 000006ea: SWAP2 000006eb: SWAP1 000006ec: PUSH2 0x0d18 000006ef: JUMP 000006f0: JUMPDEST 000006f1: PUSH1 0x40 000006f3: MLOAD 000006f4: DUP1 000006f5: SWAP2 000006f6: SUB 000006f7: SWAP1 000006f8: LOG1 000006f9: JUMPDEST 000006fa: POP 000006fb: POP 000006fc: POP 000006fd: POP 000006fe: JUMP 000006ff: JUMPDEST 00000700: PUSH1 0x01 00000702: PUSH1 0x00 00000704: SWAP1 00000705: SLOAD 00000706: SWAP1 00000707: PUSH2 0x0100 0000070a: EXP 0000070b: SWAP1 0000070c: DIV 0000070d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000722: AND 00000723: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000738: AND 00000739: CALLER 0000073a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000074f: AND 00000750: EQ 00000751: PUSH2 0x078f 00000754: JUMPI 00000755: PUSH1 0x40 00000757: MLOAD 00000758: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000779: DUP2 0000077a: MSTORE 0000077b: PUSH1 0x04 0000077d: ADD 0000077e: PUSH2 0x0786 00000781: SWAP1 00000782: PUSH2 0x0e04 00000785: JUMP 00000786: JUMPDEST 00000787: PUSH1 0x40 00000789: MLOAD 0000078a: DUP1 0000078b: SWAP2 0000078c: SUB 0000078d: SWAP1 0000078e: REVERT 0000078f: JUMPDEST 00000790: DUP1 00000791: PUSH1 0x00 00000793: DUP1 00000794: PUSH2 0x0100 00000797: EXP 00000798: DUP2 00000799: SLOAD 0000079a: DUP2 0000079b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007b0: MUL 000007b1: NOT 000007b2: AND 000007b3: SWAP1 000007b4: DUP4 000007b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007ca: AND 000007cb: MUL 000007cc: OR 000007cd: SWAP1 000007ce: SSTORE 000007cf: POP 000007d0: POP 000007d1: JUMP 000007d2: JUMPDEST 000007d3: PUSH1 0x01 000007d5: PUSH1 0x00 000007d7: SWAP1 000007d8: SLOAD 000007d9: SWAP1 000007da: PUSH2 0x0100 000007dd: EXP 000007de: SWAP1 000007df: DIV 000007e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007f5: AND 000007f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000080b: AND 0000080c: CALLER 0000080d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000822: AND 00000823: EQ 00000824: PUSH2 0x0862 00000827: JUMPI 00000828: PUSH1 0x40 0000082a: MLOAD 0000082b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000084c: DUP2 0000084d: MSTORE 0000084e: PUSH1 0x04 00000850: ADD 00000851: PUSH2 0x0859 00000854: SWAP1 00000855: PUSH2 0x0e04 00000858: JUMP 00000859: JUMPDEST 0000085a: PUSH1 0x40 0000085c: MLOAD 0000085d: DUP1 0000085e: SWAP2 0000085f: SUB 00000860: SWAP1 00000861: REVERT 00000862: JUMPDEST 00000863: DUP1 00000864: PUSH1 0x01 00000866: PUSH1 0x00 00000868: PUSH2 0x0100 0000086b: EXP 0000086c: DUP2 0000086d: SLOAD 0000086e: DUP2 0000086f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000884: MUL 00000885: NOT 00000886: AND 00000887: SWAP1 00000888: DUP4 00000889: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000089e: AND 0000089f: MUL 000008a0: OR 000008a1: SWAP1 000008a2: SSTORE 000008a3: POP 000008a4: POP 000008a5: JUMP 000008a6: JUMPDEST 000008a7: PUSH1 0x01 000008a9: PUSH1 0x00 000008ab: SWAP1 000008ac: SLOAD 000008ad: SWAP1 000008ae: PUSH2 0x0100 000008b1: EXP 000008b2: SWAP1 000008b3: DIV 000008b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008c9: AND 000008ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008df: AND 000008e0: CALLER 000008e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008f6: AND 000008f7: EQ 000008f8: PUSH2 0x0936 000008fb: JUMPI 000008fc: PUSH1 0x40 000008fe: MLOAD 000008ff: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000920: DUP2 00000921: MSTORE 00000922: PUSH1 0x04 00000924: ADD 00000925: PUSH2 0x092d 00000928: SWAP1 00000929: PUSH2 0x0e04 0000092c: JUMP 0000092d: JUMPDEST 0000092e: PUSH1 0x40 00000930: MLOAD 00000931: DUP1 00000932: SWAP2 00000933: SUB 00000934: SWAP1 00000935: REVERT 00000936: JUMPDEST 00000937: DUP1 00000938: PUSH1 0x03 0000093a: PUSH1 0x00 0000093c: PUSH2 0x0100 0000093f: EXP 00000940: DUP2 00000941: SLOAD 00000942: DUP2 00000943: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000958: MUL 00000959: NOT 0000095a: AND 0000095b: SWAP1 0000095c: DUP4 0000095d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000972: AND 00000973: MUL 00000974: OR 00000975: SWAP1 00000976: SSTORE 00000977: POP 00000978: POP 00000979: JUMP 0000097a: JUMPDEST 0000097b: PUSH1 0x00 0000097d: PUSH1 0x01 0000097f: PUSH1 0x00 00000981: SWAP1 00000982: SLOAD 00000983: SWAP1 00000984: PUSH2 0x0100 00000987: EXP 00000988: SWAP1 00000989: DIV 0000098a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000099f: AND 000009a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009b5: AND 000009b6: CALLER 000009b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009cc: AND 000009cd: EQ 000009ce: PUSH2 0x0a0c 000009d1: JUMPI 000009d2: PUSH1 0x40 000009d4: MLOAD 000009d5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009f6: DUP2 000009f7: MSTORE 000009f8: PUSH1 0x04 000009fa: ADD 000009fb: PUSH2 0x0a03 000009fe: SWAP1 000009ff: PUSH2 0x0e04 00000a02: JUMP 00000a03: JUMPDEST 00000a04: PUSH1 0x40 00000a06: MLOAD 00000a07: DUP1 00000a08: SWAP2 00000a09: SUB 00000a0a: SWAP1 00000a0b: REVERT 00000a0c: JUMPDEST 00000a0d: PUSH1 0x04 00000a0f: SLOAD 00000a10: SWAP1 00000a11: POP 00000a12: SWAP1 00000a13: JUMP 00000a14: JUMPDEST 00000a15: PUSH1 0x00 00000a17: PUSH2 0x0a27 00000a1a: PUSH2 0x0a22 00000a1d: DUP5 00000a1e: PUSH2 0x0e64 00000a21: JUMP 00000a22: JUMPDEST 00000a23: PUSH2 0x0e3f 00000a26: JUMP 00000a27: JUMPDEST 00000a28: SWAP1 00000a29: POP 00000a2a: DUP3 00000a2b: DUP2 00000a2c: MSTORE 00000a2d: PUSH1 0x20 00000a2f: DUP2 00000a30: ADD 00000a31: DUP5 00000a32: DUP5 00000a33: DUP5 00000a34: ADD 00000a35: GT 00000a36: ISZERO 00000a37: PUSH2 0x0a43 00000a3a: JUMPI 00000a3b: PUSH2 0x0a42 00000a3e: PUSH2 0x0fb2 00000a41: JUMP 00000a42: JUMPDEST 00000a43: JUMPDEST 00000a44: PUSH2 0x0a4e 00000a47: DUP5 00000a48: DUP3 00000a49: DUP6 00000a4a: PUSH2 0x0f0b 00000a4d: JUMP 00000a4e: JUMPDEST 00000a4f: POP 00000a50: SWAP4 00000a51: SWAP3 00000a52: POP 00000a53: POP 00000a54: POP 00000a55: JUMP 00000a56: JUMPDEST 00000a57: PUSH1 0x00 00000a59: DUP2 00000a5a: CALLDATALOAD 00000a5b: SWAP1 00000a5c: POP 00000a5d: PUSH2 0x0a65 00000a60: DUP2 00000a61: PUSH2 0x104d 00000a64: JUMP 00000a65: JUMPDEST 00000a66: SWAP3 00000a67: SWAP2 00000a68: POP 00000a69: POP 00000a6a: JUMP 00000a6b: JUMPDEST 00000a6c: PUSH1 0x00 00000a6e: DUP2 00000a6f: MLOAD 00000a70: SWAP1 00000a71: POP 00000a72: PUSH2 0x0a7a 00000a75: DUP2 00000a76: PUSH2 0x1064 00000a79: JUMP 00000a7a: JUMPDEST 00000a7b: SWAP3 00000a7c: SWAP2 00000a7d: POP 00000a7e: POP 00000a7f: JUMP 00000a80: JUMPDEST 00000a81: PUSH1 0x00 00000a83: DUP2 00000a84: CALLDATALOAD 00000a85: SWAP1 00000a86: POP 00000a87: PUSH2 0x0a8f 00000a8a: DUP2 00000a8b: PUSH2 0x107b 00000a8e: JUMP 00000a8f: JUMPDEST 00000a90: SWAP3 00000a91: SWAP2 00000a92: POP 00000a93: POP 00000a94: JUMP 00000a95: JUMPDEST 00000a96: PUSH1 0x00 00000a98: DUP3 00000a99: PUSH1 0x1f 00000a9b: DUP4 00000a9c: ADD 00000a9d: SLT 00000a9e: PUSH2 0x0aaa 00000aa1: JUMPI 00000aa2: PUSH2 0x0aa9 00000aa5: PUSH2 0x0fad 00000aa8: JUMP 00000aa9: JUMPDEST 00000aaa: JUMPDEST 00000aab: DUP2 00000aac: CALLDATALOAD 00000aad: PUSH2 0x0aba 00000ab0: DUP5 00000ab1: DUP3 00000ab2: PUSH1 0x20 00000ab4: DUP7 00000ab5: ADD 00000ab6: PUSH2 0x0a14 00000ab9: JUMP 00000aba: JUMPDEST 00000abb: SWAP2 00000abc: POP 00000abd: POP 00000abe: SWAP3 00000abf: SWAP2 00000ac0: POP 00000ac1: POP 00000ac2: JUMP 00000ac3: JUMPDEST 00000ac4: PUSH1 0x00 00000ac6: DUP2 00000ac7: CALLDATALOAD 00000ac8: SWAP1 00000ac9: POP 00000aca: PUSH2 0x0ad2 00000acd: DUP2 00000ace: PUSH2 0x1092 00000ad1: JUMP 00000ad2: JUMPDEST 00000ad3: SWAP3 00000ad4: SWAP2 00000ad5: POP 00000ad6: POP 00000ad7: JUMP 00000ad8: JUMPDEST 00000ad9: PUSH1 0x00 00000adb: DUP2 00000adc: MLOAD 00000add: SWAP1 00000ade: POP 00000adf: PUSH2 0x0ae7 00000ae2: DUP2 00000ae3: PUSH2 0x1092 00000ae6: JUMP 00000ae7: JUMPDEST 00000ae8: SWAP3 00000ae9: SWAP2 00000aea: POP 00000aeb: POP 00000aec: JUMP 00000aed: JUMPDEST 00000aee: PUSH1 0x00 00000af0: PUSH1 0x20 00000af2: DUP3 00000af3: DUP5 00000af4: SUB 00000af5: SLT 00000af6: ISZERO 00000af7: PUSH2 0x0b03 00000afa: JUMPI 00000afb: PUSH2 0x0b02 00000afe: PUSH2 0x0fbc 00000b01: JUMP 00000b02: JUMPDEST 00000b03: JUMPDEST 00000b04: PUSH1 0x00 00000b06: PUSH2 0x0b11 00000b09: DUP5 00000b0a: DUP3 00000b0b: DUP6 00000b0c: ADD 00000b0d: PUSH2 0x0a56 00000b10: JUMP 00000b11: JUMPDEST 00000b12: SWAP2 00000b13: POP 00000b14: POP 00000b15: SWAP3 00000b16: SWAP2 00000b17: POP 00000b18: POP 00000b19: JUMP 00000b1a: JUMPDEST 00000b1b: PUSH1 0x00 00000b1d: DUP1 00000b1e: PUSH1 0x00 00000b20: PUSH1 0x60 00000b22: DUP5 00000b23: DUP7 00000b24: SUB 00000b25: SLT 00000b26: ISZERO 00000b27: PUSH2 0x0b33 00000b2a: JUMPI 00000b2b: PUSH2 0x0b32 00000b2e: PUSH2 0x0fbc 00000b31: JUMP 00000b32: JUMPDEST 00000b33: JUMPDEST 00000b34: PUSH1 0x00 00000b36: PUSH2 0x0b41 00000b39: DUP7 00000b3a: DUP3 00000b3b: DUP8 00000b3c: ADD 00000b3d: PUSH2 0x0a56 00000b40: JUMP 00000b41: JUMPDEST 00000b42: SWAP4 00000b43: POP 00000b44: POP 00000b45: PUSH1 0x20 00000b47: PUSH2 0x0b52 00000b4a: DUP7 00000b4b: DUP3 00000b4c: DUP8 00000b4d: ADD 00000b4e: PUSH2 0x0ac3 00000b51: JUMP 00000b52: JUMPDEST 00000b53: SWAP3 00000b54: POP 00000b55: POP 00000b56: PUSH1 0x40 00000b58: DUP5 00000b59: ADD 00000b5a: CALLDATALOAD 00000b5b: PUSH8 0xffffffffffffffff 00000b64: DUP2 00000b65: GT 00000b66: ISZERO 00000b67: PUSH2 0x0b73 00000b6a: JUMPI 00000b6b: PUSH2 0x0b72 00000b6e: PUSH2 0x0fb7 00000b71: JUMP 00000b72: JUMPDEST 00000b73: JUMPDEST 00000b74: PUSH2 0x0b7f 00000b77: DUP7 00000b78: DUP3 00000b79: DUP8 00000b7a: ADD 00000b7b: PUSH2 0x0a95 00000b7e: JUMP 00000b7f: JUMPDEST 00000b80: SWAP2 00000b81: POP 00000b82: POP 00000b83: SWAP3 00000b84: POP 00000b85: SWAP3 00000b86: POP 00000b87: SWAP3 00000b88: JUMP 00000b89: JUMPDEST 00000b8a: PUSH1 0x00 00000b8c: PUSH1 0x20 00000b8e: DUP3 00000b8f: DUP5 00000b90: SUB 00000b91: SLT 00000b92: ISZERO 00000b93: PUSH2 0x0b9f 00000b96: JUMPI 00000b97: PUSH2 0x0b9e 00000b9a: PUSH2 0x0fbc 00000b9d: JUMP 00000b9e: JUMPDEST 00000b9f: JUMPDEST 00000ba0: PUSH1 0x00 00000ba2: PUSH2 0x0bad 00000ba5: DUP5 00000ba6: DUP3 00000ba7: DUP6 00000ba8: ADD 00000ba9: PUSH2 0x0a6b 00000bac: JUMP 00000bad: JUMPDEST 00000bae: SWAP2 00000baf: POP 00000bb0: POP 00000bb1: SWAP3 00000bb2: SWAP2 00000bb3: POP 00000bb4: POP 00000bb5: JUMP 00000bb6: JUMPDEST 00000bb7: PUSH1 0x00 00000bb9: PUSH1 0x20 00000bbb: DUP3 00000bbc: DUP5 00000bbd: SUB 00000bbe: SLT 00000bbf: ISZERO 00000bc0: PUSH2 0x0bcc 00000bc3: JUMPI 00000bc4: PUSH2 0x0bcb 00000bc7: PUSH2 0x0fbc 00000bca: JUMP 00000bcb: JUMPDEST 00000bcc: JUMPDEST 00000bcd: PUSH1 0x00 00000bcf: PUSH2 0x0bda 00000bd2: DUP5 00000bd3: DUP3 00000bd4: DUP6 00000bd5: ADD 00000bd6: PUSH2 0x0a80 00000bd9: JUMP 00000bda: JUMPDEST 00000bdb: SWAP2 00000bdc: POP 00000bdd: POP 00000bde: SWAP3 00000bdf: SWAP2 00000be0: POP 00000be1: POP 00000be2: JUMP 00000be3: JUMPDEST 00000be4: PUSH1 0x00 00000be6: PUSH1 0x20 00000be8: DUP3 00000be9: DUP5 00000bea: SUB 00000beb: SLT 00000bec: ISZERO 00000bed: PUSH2 0x0bf9 00000bf0: JUMPI 00000bf1: PUSH2 0x0bf8 00000bf4: PUSH2 0x0fbc 00000bf7: JUMP 00000bf8: JUMPDEST 00000bf9: JUMPDEST 00000bfa: PUSH1 0x00 00000bfc: PUSH2 0x0c07 00000bff: DUP5 00000c00: DUP3 00000c01: DUP6 00000c02: ADD 00000c03: PUSH2 0x0ac3 00000c06: JUMP 00000c07: JUMPDEST 00000c08: SWAP2 00000c09: POP 00000c0a: POP 00000c0b: SWAP3 00000c0c: SWAP2 00000c0d: POP 00000c0e: POP 00000c0f: JUMP 00000c10: JUMPDEST 00000c11: PUSH1 0x00 00000c13: PUSH1 0x20 00000c15: DUP3 00000c16: DUP5 00000c17: SUB 00000c18: SLT 00000c19: ISZERO 00000c1a: PUSH2 0x0c26 00000c1d: JUMPI 00000c1e: PUSH2 0x0c25 00000c21: PUSH2 0x0fbc 00000c24: JUMP 00000c25: JUMPDEST 00000c26: JUMPDEST 00000c27: PUSH1 0x00 00000c29: PUSH2 0x0c34 00000c2c: DUP5 00000c2d: DUP3 00000c2e: DUP6 00000c2f: ADD 00000c30: PUSH2 0x0ad8 00000c33: JUMP 00000c34: JUMPDEST 00000c35: SWAP2 00000c36: POP 00000c37: POP 00000c38: SWAP3 00000c39: SWAP2 00000c3a: POP 00000c3b: POP 00000c3c: JUMP 00000c3d: JUMPDEST 00000c3e: PUSH2 0x0c46 00000c41: DUP2 00000c42: PUSH2 0x0eb1 00000c45: JUMP 00000c46: JUMPDEST 00000c47: DUP3 00000c48: MSTORE 00000c49: POP 00000c4a: POP 00000c4b: JUMP 00000c4c: JUMPDEST 00000c4d: PUSH1 0x00 00000c4f: PUSH2 0x0c57 00000c52: DUP3 00000c53: PUSH2 0x0e95 00000c56: JUMP 00000c57: JUMPDEST 00000c58: PUSH2 0x0c61 00000c5b: DUP2 00000c5c: DUP6 00000c5d: PUSH2 0x0ea0 00000c60: JUMP 00000c61: JUMPDEST 00000c62: SWAP4 00000c63: POP 00000c64: PUSH2 0x0c71 00000c67: DUP2 00000c68: DUP6 00000c69: PUSH1 0x20 00000c6b: DUP7 00000c6c: ADD 00000c6d: PUSH2 0x0f1a 00000c70: JUMP 00000c71: JUMPDEST 00000c72: PUSH2 0x0c7a 00000c75: DUP2 00000c76: PUSH2 0x0fc1 00000c79: JUMP 00000c7a: JUMPDEST 00000c7b: DUP5 00000c7c: ADD 00000c7d: SWAP2 00000c7e: POP 00000c7f: POP 00000c80: SWAP3 00000c81: SWAP2 00000c82: POP 00000c83: POP 00000c84: JUMP 00000c85: JUMPDEST 00000c86: PUSH1 0x00 00000c88: PUSH2 0x0c92 00000c8b: PUSH1 0x13 00000c8d: DUP4 00000c8e: PUSH2 0x0ea0 00000c91: JUMP 00000c92: JUMPDEST 00000c93: SWAP2 00000c94: POP 00000c95: PUSH2 0x0c9d 00000c98: DUP3 00000c99: PUSH2 0x0fd2 00000c9c: JUMP 00000c9d: JUMPDEST 00000c9e: PUSH1 0x20 00000ca0: DUP3 00000ca1: ADD 00000ca2: SWAP1 00000ca3: POP 00000ca4: SWAP2 00000ca5: SWAP1 00000ca6: POP 00000ca7: JUMP 00000ca8: JUMPDEST 00000ca9: PUSH1 0x00 00000cab: PUSH2 0x0cb5 00000cae: PUSH1 0x10 00000cb0: DUP4 00000cb1: PUSH2 0x0ea0 00000cb4: JUMP 00000cb5: JUMPDEST 00000cb6: SWAP2 00000cb7: POP 00000cb8: PUSH2 0x0cc0 00000cbb: DUP3 00000cbc: PUSH2 0x0ffb 00000cbf: JUMP 00000cc0: JUMPDEST 00000cc1: PUSH1 0x20 00000cc3: DUP3 00000cc4: ADD 00000cc5: SWAP1 00000cc6: POP 00000cc7: SWAP2 00000cc8: SWAP1 00000cc9: POP 00000cca: JUMP 00000ccb: JUMPDEST 00000ccc: PUSH1 0x00 00000cce: PUSH2 0x0cd8 00000cd1: PUSH1 0x10 00000cd3: DUP4 00000cd4: PUSH2 0x0ea0 00000cd7: JUMP 00000cd8: JUMPDEST 00000cd9: SWAP2 00000cda: POP 00000cdb: PUSH2 0x0ce3 00000cde: DUP3 00000cdf: PUSH2 0x1024 00000ce2: JUMP 00000ce3: JUMPDEST 00000ce4: PUSH1 0x20 00000ce6: DUP3 00000ce7: ADD 00000ce8: SWAP1 00000ce9: POP 00000cea: SWAP2 00000ceb: SWAP1 00000cec: POP 00000ced: JUMP 00000cee: JUMPDEST 00000cef: PUSH2 0x0cf7 00000cf2: DUP2 00000cf3: PUSH2 0x0f01 00000cf6: JUMP 00000cf7: JUMPDEST 00000cf8: DUP3 00000cf9: MSTORE 00000cfa: POP 00000cfb: POP 00000cfc: JUMP 00000cfd: JUMPDEST 00000cfe: PUSH1 0x00 00000d00: PUSH1 0x20 00000d02: DUP3 00000d03: ADD 00000d04: SWAP1 00000d05: POP 00000d06: PUSH2 0x0d12 00000d09: PUSH1 0x00 00000d0b: DUP4 00000d0c: ADD 00000d0d: DUP5 00000d0e: PUSH2 0x0c3d 00000d11: JUMP 00000d12: JUMPDEST 00000d13: SWAP3 00000d14: SWAP2 00000d15: POP 00000d16: POP 00000d17: JUMP 00000d18: JUMPDEST 00000d19: PUSH1 0x00 00000d1b: PUSH1 0x80 00000d1d: DUP3 00000d1e: ADD 00000d1f: SWAP1 00000d20: POP 00000d21: PUSH2 0x0d2d 00000d24: PUSH1 0x00 00000d26: DUP4 00000d27: ADD 00000d28: DUP8 00000d29: PUSH2 0x0c3d 00000d2c: JUMP 00000d2d: JUMPDEST 00000d2e: PUSH2 0x0d3a 00000d31: PUSH1 0x20 00000d33: DUP4 00000d34: ADD 00000d35: DUP7 00000d36: PUSH2 0x0c3d 00000d39: JUMP 00000d3a: JUMPDEST 00000d3b: DUP2 00000d3c: DUP2 00000d3d: SUB 00000d3e: PUSH1 0x40 00000d40: DUP4 00000d41: ADD 00000d42: MSTORE 00000d43: PUSH2 0x0d4c 00000d46: DUP2 00000d47: DUP6 00000d48: PUSH2 0x0c4c 00000d4b: JUMP 00000d4c: JUMPDEST 00000d4d: SWAP1 00000d4e: POP 00000d4f: PUSH2 0x0d5b 00000d52: PUSH1 0x60 00000d54: DUP4 00000d55: ADD 00000d56: DUP5 00000d57: PUSH2 0x0cee 00000d5a: JUMP 00000d5b: JUMPDEST 00000d5c: SWAP6 00000d5d: SWAP5 00000d5e: POP 00000d5f: POP 00000d60: POP 00000d61: POP 00000d62: POP 00000d63: JUMP 00000d64: JUMPDEST 00000d65: PUSH1 0x00 00000d67: PUSH1 0x60 00000d69: DUP3 00000d6a: ADD 00000d6b: SWAP1 00000d6c: POP 00000d6d: PUSH2 0x0d79 00000d70: PUSH1 0x00 00000d72: DUP4 00000d73: ADD 00000d74: DUP7 00000d75: PUSH2 0x0c3d 00000d78: JUMP 00000d79: JUMPDEST 00000d7a: PUSH2 0x0d86 00000d7d: PUSH1 0x20 00000d7f: DUP4 00000d80: ADD 00000d81: DUP6 00000d82: PUSH2 0x0c3d 00000d85: JUMP 00000d86: JUMPDEST 00000d87: PUSH2 0x0d93 00000d8a: PUSH1 0x40 00000d8c: DUP4 00000d8d: ADD 00000d8e: DUP5 00000d8f: PUSH2 0x0cee 00000d92: JUMP 00000d93: JUMPDEST 00000d94: SWAP5 00000d95: SWAP4 00000d96: POP 00000d97: POP 00000d98: POP 00000d99: POP 00000d9a: JUMP 00000d9b: JUMPDEST 00000d9c: PUSH1 0x00 00000d9e: PUSH1 0x40 00000da0: DUP3 00000da1: ADD 00000da2: SWAP1 00000da3: POP 00000da4: PUSH2 0x0db0 00000da7: PUSH1 0x00 00000da9: DUP4 00000daa: ADD 00000dab: DUP6 00000dac: PUSH2 0x0c3d 00000daf: JUMP 00000db0: JUMPDEST 00000db1: PUSH2 0x0dbd 00000db4: PUSH1 0x20 00000db6: DUP4 00000db7: ADD 00000db8: DUP5 00000db9: PUSH2 0x0cee 00000dbc: JUMP 00000dbd: JUMPDEST 00000dbe: SWAP4 00000dbf: SWAP3 00000dc0: POP 00000dc1: POP 00000dc2: POP 00000dc3: JUMP 00000dc4: JUMPDEST 00000dc5: PUSH1 0x00 00000dc7: PUSH1 0x20 00000dc9: DUP3 00000dca: ADD 00000dcb: SWAP1 00000dcc: POP 00000dcd: DUP2 00000dce: DUP2 00000dcf: SUB 00000dd0: PUSH1 0x00 00000dd2: DUP4 00000dd3: ADD 00000dd4: MSTORE 00000dd5: PUSH2 0x0ddd 00000dd8: DUP2 00000dd9: PUSH2 0x0c85 00000ddc: JUMP 00000ddd: JUMPDEST 00000dde: SWAP1 00000ddf: POP 00000de0: SWAP2 00000de1: SWAP1 00000de2: POP 00000de3: JUMP 00000de4: JUMPDEST 00000de5: PUSH1 0x00 00000de7: PUSH1 0x20 00000de9: DUP3 00000dea: ADD 00000deb: SWAP1 00000dec: POP 00000ded: DUP2 00000dee: DUP2 00000def: SUB 00000df0: PUSH1 0x00 00000df2: DUP4 00000df3: ADD 00000df4: MSTORE 00000df5: PUSH2 0x0dfd 00000df8: DUP2 00000df9: PUSH2 0x0ca8 00000dfc: JUMP 00000dfd: JUMPDEST 00000dfe: SWAP1 00000dff: POP 00000e00: SWAP2 00000e01: SWAP1 00000e02: POP 00000e03: JUMP 00000e04: JUMPDEST 00000e05: PUSH1 0x00 00000e07: PUSH1 0x20 00000e09: DUP3 00000e0a: ADD 00000e0b: SWAP1 00000e0c: POP 00000e0d: DUP2 00000e0e: DUP2 00000e0f: SUB 00000e10: PUSH1 0x00 00000e12: DUP4 00000e13: ADD 00000e14: MSTORE 00000e15: PUSH2 0x0e1d 00000e18: DUP2 00000e19: PUSH2 0x0ccb 00000e1c: JUMP 00000e1d: JUMPDEST 00000e1e: SWAP1 00000e1f: POP 00000e20: SWAP2 00000e21: SWAP1 00000e22: POP 00000e23: JUMP 00000e24: JUMPDEST 00000e25: PUSH1 0x00 00000e27: PUSH1 0x20 00000e29: DUP3 00000e2a: ADD 00000e2b: SWAP1 00000e2c: POP 00000e2d: PUSH2 0x0e39 00000e30: PUSH1 0x00 00000e32: DUP4 00000e33: ADD 00000e34: DUP5 00000e35: PUSH2 0x0cee 00000e38: JUMP 00000e39: JUMPDEST 00000e3a: SWAP3 00000e3b: SWAP2 00000e3c: POP 00000e3d: POP 00000e3e: JUMP 00000e3f: JUMPDEST 00000e40: PUSH1 0x00 00000e42: PUSH2 0x0e49 00000e45: PUSH2 0x0e5a 00000e48: JUMP 00000e49: JUMPDEST 00000e4a: SWAP1 00000e4b: POP 00000e4c: PUSH2 0x0e55 00000e4f: DUP3 00000e50: DUP3 00000e51: PUSH2 0x0f4d 00000e54: JUMP 00000e55: JUMPDEST 00000e56: SWAP2 00000e57: SWAP1 00000e58: POP 00000e59: JUMP 00000e5a: JUMPDEST 00000e5b: PUSH1 0x00 00000e5d: PUSH1 0x40 00000e5f: MLOAD 00000e60: SWAP1 00000e61: POP 00000e62: SWAP1 00000e63: JUMP 00000e64: JUMPDEST 00000e65: PUSH1 0x00 00000e67: PUSH8 0xffffffffffffffff 00000e70: DUP3 00000e71: GT 00000e72: ISZERO 00000e73: PUSH2 0x0e7f 00000e76: JUMPI 00000e77: PUSH2 0x0e7e 00000e7a: PUSH2 0x0f7e 00000e7d: JUMP 00000e7e: JUMPDEST 00000e7f: JUMPDEST 00000e80: PUSH2 0x0e88 00000e83: DUP3 00000e84: PUSH2 0x0fc1 00000e87: JUMP 00000e88: JUMPDEST 00000e89: SWAP1 00000e8a: POP 00000e8b: PUSH1 0x20 00000e8d: DUP2 00000e8e: ADD 00000e8f: SWAP1 00000e90: POP 00000e91: SWAP2 00000e92: SWAP1 00000e93: POP 00000e94: JUMP 00000e95: JUMPDEST 00000e96: PUSH1 0x00 00000e98: DUP2 00000e99: MLOAD 00000e9a: SWAP1 00000e9b: POP 00000e9c: SWAP2 00000e9d: SWAP1 00000e9e: POP 00000e9f: JUMP 00000ea0: JUMPDEST 00000ea1: PUSH1 0x00 00000ea3: DUP3 00000ea4: DUP3 00000ea5: MSTORE 00000ea6: PUSH1 0x20 00000ea8: DUP3 00000ea9: ADD 00000eaa: SWAP1 00000eab: POP 00000eac: SWAP3 00000ead: SWAP2 00000eae: POP 00000eaf: POP 00000eb0: JUMP 00000eb1: JUMPDEST 00000eb2: PUSH1 0x00 00000eb4: PUSH2 0x0ebc 00000eb7: DUP3 00000eb8: PUSH2 0x0ee1 00000ebb: JUMP 00000ebc: JUMPDEST 00000ebd: SWAP1 00000ebe: POP 00000ebf: SWAP2 00000ec0: SWAP1 00000ec1: POP 00000ec2: JUMP 00000ec3: JUMPDEST 00000ec4: PUSH1 0x00 00000ec6: DUP2 00000ec7: ISZERO 00000ec8: ISZERO 00000ec9: SWAP1 00000eca: POP 00000ecb: SWAP2 00000ecc: SWAP1 00000ecd: POP 00000ece: JUMP 00000ecf: JUMPDEST 00000ed0: PUSH1 0x00 00000ed2: PUSH2 0x0eda 00000ed5: DUP3 00000ed6: PUSH2 0x0eb1 00000ed9: JUMP 00000eda: JUMPDEST 00000edb: SWAP1 00000edc: POP 00000edd: SWAP2 00000ede: SWAP1 00000edf: POP 00000ee0: JUMP 00000ee1: JUMPDEST 00000ee2: PUSH1 0x00 00000ee4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ef9: DUP3 00000efa: AND 00000efb: SWAP1 00000efc: POP 00000efd: SWAP2 00000efe: SWAP1 00000eff: POP 00000f00: JUMP 00000f01: JUMPDEST 00000f02: PUSH1 0x00 00000f04: DUP2 00000f05: SWAP1 00000f06: POP 00000f07: SWAP2 00000f08: SWAP1 00000f09: POP 00000f0a: JUMP 00000f0b: JUMPDEST 00000f0c: DUP3 00000f0d: DUP2 00000f0e: DUP4 00000f0f: CALLDATACOPY 00000f10: PUSH1 0x00 00000f12: DUP4 00000f13: DUP4 00000f14: ADD 00000f15: MSTORE 00000f16: POP 00000f17: POP 00000f18: POP 00000f19: JUMP 00000f1a: JUMPDEST 00000f1b: PUSH1 0x00 00000f1d: JUMPDEST 00000f1e: DUP4 00000f1f: DUP2 00000f20: LT 00000f21: ISZERO 00000f22: PUSH2 0x0f38 00000f25: JUMPI 00000f26: DUP1 00000f27: DUP3 00000f28: ADD 00000f29: MLOAD 00000f2a: DUP2 00000f2b: DUP5 00000f2c: ADD 00000f2d: MSTORE 00000f2e: PUSH1 0x20 00000f30: DUP2 00000f31: ADD 00000f32: SWAP1 00000f33: POP 00000f34: PUSH2 0x0f1d 00000f37: JUMP 00000f38: JUMPDEST 00000f39: DUP4 00000f3a: DUP2 00000f3b: GT 00000f3c: ISZERO 00000f3d: PUSH2 0x0f47 00000f40: JUMPI 00000f41: PUSH1 0x00 00000f43: DUP5 00000f44: DUP5 00000f45: ADD 00000f46: MSTORE 00000f47: JUMPDEST 00000f48: POP 00000f49: POP 00000f4a: POP 00000f4b: POP 00000f4c: JUMP 00000f4d: JUMPDEST 00000f4e: PUSH2 0x0f56 00000f51: DUP3 00000f52: PUSH2 0x0fc1 00000f55: JUMP 00000f56: JUMPDEST 00000f57: DUP2 00000f58: ADD 00000f59: DUP2 00000f5a: DUP2 00000f5b: LT 00000f5c: PUSH8 0xffffffffffffffff 00000f65: DUP3 00000f66: GT 00000f67: OR 00000f68: ISZERO 00000f69: PUSH2 0x0f75 00000f6c: JUMPI 00000f6d: PUSH2 0x0f74 00000f70: PUSH2 0x0f7e 00000f73: JUMP 00000f74: JUMPDEST 00000f75: JUMPDEST 00000f76: DUP1 00000f77: PUSH1 0x40 00000f79: MSTORE 00000f7a: POP 00000f7b: POP 00000f7c: POP 00000f7d: JUMP 00000f7e: JUMPDEST 00000f7f: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00000fa0: PUSH1 0x00 00000fa2: MSTORE 00000fa3: PUSH1 0x41 00000fa5: PUSH1 0x04 00000fa7: MSTORE 00000fa8: PUSH1 0x24 00000faa: PUSH1 0x00 00000fac: REVERT 00000fad: JUMPDEST 00000fae: PUSH1 0x00 00000fb0: DUP1 00000fb1: REVERT 00000fb2: JUMPDEST 00000fb3: PUSH1 0x00 00000fb5: DUP1 00000fb6: REVERT 00000fb7: JUMPDEST 00000fb8: PUSH1 0x00 00000fba: DUP1 00000fbb: REVERT 00000fbc: JUMPDEST 00000fbd: PUSH1 0x00 00000fbf: DUP1 00000fc0: REVERT 00000fc1: JUMPDEST 00000fc2: PUSH1 0x00 00000fc4: PUSH1 0x1f 00000fc6: NOT 00000fc7: PUSH1 0x1f 00000fc9: DUP4 00000fca: ADD 00000fcb: AND 00000fcc: SWAP1 00000fcd: POP 00000fce: SWAP2 00000fcf: SWAP1 00000fd0: POP 00000fd1: JUMP 00000fd2: JUMPDEST 00000fd3: PUSH32 0x43414c4c45525f4e4f545f4f50455241544f5200000000000000000000000000 00000ff4: PUSH1 0x00 00000ff6: DUP3 00000ff7: ADD 00000ff8: MSTORE 00000ff9: POP 00000ffa: JUMP 00000ffb: JUMPDEST 00000ffc: PUSH32 0x43414c4c45525f4e4f545f504159455200000000000000000000000000000000 0000101d: PUSH1 0x00 0000101f: DUP3 00001020: ADD 00001021: MSTORE 00001022: POP 00001023: JUMP 00001024: JUMPDEST 00001025: PUSH32 0x43414c4c45525f4e4f545f4f574e455200000000000000000000000000000000 00001046: PUSH1 0x00 00001048: DUP3 00001049: ADD 0000104a: MSTORE 0000104b: POP 0000104c: JUMP 0000104d: JUMPDEST 0000104e: PUSH2 0x1056 00001051: DUP2 00001052: PUSH2 0x0eb1 00001055: JUMP 00001056: JUMPDEST 00001057: DUP2 00001058: EQ 00001059: PUSH2 0x1061 0000105c: JUMPI 0000105d: PUSH1 0x00 0000105f: DUP1 00001060: REVERT 00001061: JUMPDEST 00001062: POP 00001063: JUMP 00001064: JUMPDEST 00001065: PUSH2 0x106d 00001068: DUP2 00001069: PUSH2 0x0ec3 0000106c: JUMP 0000106d: JUMPDEST 0000106e: DUP2 0000106f: EQ 00001070: PUSH2 0x1078 00001073: JUMPI 00001074: PUSH1 0x00 00001076: DUP1 00001077: REVERT 00001078: JUMPDEST 00001079: POP 0000107a: JUMP 0000107b: JUMPDEST 0000107c: PUSH2 0x1084 0000107f: DUP2 00001080: PUSH2 0x0ecf 00001083: JUMP 00001084: JUMPDEST 00001085: DUP2 00001086: EQ 00001087: PUSH2 0x108f 0000108a: JUMPI 0000108b: PUSH1 0x00 0000108d: DUP1 0000108e: REVERT 0000108f: JUMPDEST 00001090: POP 00001091: JUMP 00001092: JUMPDEST 00001093: PUSH2 0x109b 00001096: DUP2 00001097: PUSH2 0x0f01 0000109a: JUMP 0000109b: JUMPDEST 0000109c: DUP2 0000109d: EQ 0000109e: PUSH2 0x10a6 000010a1: JUMPI 000010a2: PUSH1 0x00 000010a4: DUP1 000010a5: REVERT 000010a6: JUMPDEST 000010a7: POP 000010a8: JUMP 000010a9: INVALID 000010aa: LOG2 000010ab: PUSH5 0x6970667358 000010b1: UNKNOWN(0x22) 000010b2: SLT 000010b3: KECCAK256 000010b4: SWAP7 000010b5: UNKNOWN(0xBC) 000010b6: PC 000010b7: PUSH6 0xe8d29297f6a7 000010be: GT 000010bf: INVALID 000010c0: UNKNOWN(0xD5) 000010c1: LOG1 000010c2: UNKNOWN(0xC7) 000010c3: PUSH17 0x6a4e97433ff51551cf1aa6c20a25b0b564 000010d5: PUSH20
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988
call_targets:
0x123e33e6f65fe44314f863a24c58fdc2f5264f33
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x123e33e6f65fe44314f863a24c58fdc2f5264f33"
],
"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": "0x7d81c4c1",
"selector": "0x7d81c4c1",
"calldata_variants": [
"0x7d81c4c1",
"0x7d81c4c10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa6f9dae1",
"selector": "0xa6f9dae1",
"calldata_variants": [
"0xa6f9dae1",
"0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd6ea53b1",
"selector": "0xd6ea53b1",
"calldata_variants": [
"0xd6ea53b1",
"0xd6ea53b10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa49b5ed",
"selector": "0xfa49b5ed",
"calldata_variants": [
"0xfa49b5ed",
"0xfa49b5ed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06394c9b",
"selector": "0x06394c9b",
"calldata_variants": [
"0x06394c9b",
"0x06394c9b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x08e7b1ad",
"selector": "0x08e7b1ad",
"calldata_variants": [
"0x08e7b1ad",
"0x08e7b1ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x28c18144",
"selector": "0x28c18144",
"calldata_variants": [
"0x28c18144",
"0x28c181440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x78db00ec",
"selector": "0x78db00ec",
"calldata_variants": [
"0x78db00ec",
"0x78db00ec0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 945,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1669,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [
{
"pc": 527,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 739,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1123,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1277,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1849,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2060,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2272,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2486,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 2
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988
call_targets:
0x123e33e6f65fe44314f863a24c58fdc2f5264f33
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x192b7821a12088949aca89722c6b25532163e6c1e0f6e2dba5f7b16c2126b988",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x123e33e6f65fe44314f863a24c58fdc2f5264f33"
],
"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": "0x7d81c4c1",
"selector": "0x7d81c4c1",
"calldata_variants": [
"0x7d81c4c1",
"0x7d81c4c10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa6f9dae1",
"selector": "0xa6f9dae1",
"calldata_variants": [
"0xa6f9dae1",
"0xa6f9dae10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd6ea53b1",
"selector": "0xd6ea53b1",
"calldata_variants": [
"0xd6ea53b1",
"0xd6ea53b10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa49b5ed",
"selector": "0xfa49b5ed",
"calldata_variants": [
"0xfa49b5ed",
"0xfa49b5ed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06394c9b",
"selector": "0x06394c9b",
"calldata_variants": [
"0x06394c9b",
"0x06394c9b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x08e7b1ad",
"selector": "0x08e7b1ad",
"calldata_variants": [
"0x08e7b1ad",
"0x08e7b1ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x28c18144",
"selector": "0x28c18144",
"calldata_variants": [
"0x28c18144",
"0x28c181440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x78db00ec",
"selector": "0x78db00ec",
"calldata_variants": [
"0x78db00ec",
"0x78db00ec0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 945,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1669,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": [
{
"pc": 527,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 739,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1123,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1277,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1849,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2060,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2272,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2486,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| low | reentrancy | codex | External CALL to storage-derived target (possible untrusted call / reentrancy surface) | 65 | no | — |
viewevidence_json{
"evidence": "Detector flags CALL with computed target/value and untrusted_call_count=2. Pre-call code performs SLOAD-based address extraction (pc 825/1640) before CALL at pc 945/1669.",
"locations": [
"pc:825",
"pc:945",
"pc:1640",
"pc:1669"
],
"recommendation": "Restrict target addresses to trusted contracts, or add a reentrancy guard / checks-effects-interactions around external calls. If ETH transfer is not intended, enforce value==0.",
"exploit_scenario": "Bytecode shows CALLs at pc 945 and 1669 with computed target/value. If a privileged role can set the target address (likely via storage), a malicious contract could be called and potentially reenter other paths. This is speculative from bytecode only; access control and state-update ordering could mitigate it."
}
|
| low | other | codex | ERC20 transfer/transferFrom return values appear unchecked | 65 | no | — |
viewevidence_json{
"evidence": "After CALL at pc 945 and pc 1669, execution copies returndata (pc 962/1677) and proceeds to subsequent logic (pc 998/1721) without an explicit boolean check on the decoded return value.",
"locations": [
"pc:945",
"pc:962",
"pc:998",
"pc:1669",
"pc:1677",
"pc:1721"
],
"recommendation": "Use SafeERC20-style handling: after call, accept empty returndata or decode a bool and require it to be true; otherwise revert.",
"exploit_scenario": "The CALL success flag is checked, but the decoded boolean return value (if any) is not validated before continuing. Tokens that return false without reverting could cause the contract to emit success events and proceed as if a transfer succeeded, leading to accounting or payment inconsistencies."
}
|