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

Analysis Run

61b6e8d3-1c26-43a5-ac80-2116ec147eeb

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 5, 2026 5:29 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Signature threshold can round down to zero, allowing proofs with no signatures on small validator sets
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31698 report.consolidate complete 1 / 1 3 months ago
95611 artifact.fetch complete 1 / 3 1 week ago
95612 tool.cast_disasm complete 1 / 3 1 week ago
95613 analysis.bundle complete 1 / 3 1 week ago
95614 capability.graph complete 1 / 3 1 week ago
95615 detector.run complete 1 / 3 1 week ago
95616 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
1 critical finding: signature threshold rounds down to zero on small validator sets, allowing signature bypass and unauthorized withdrawals.
View stderr
[codex:647063] OpenAI Codex v0.77.0 (research preview)
[codex:647063] --------
[codex:647063] workdir: /tmp/codex-multi-bpocr_8w
[codex:647063] model: gpt-5.2-codex
[codex:647063] provider: openai
[codex:647063] approval: never
[codex:647063] sandbox: read-only
[codex:647063] reasoning effort: xhigh
[codex:647063] reasoning summaries: auto
[codex:647063] session id: 019b8c9e-35b3-7b30-a28c-92490f43d875
[codex:647063] --------
[codex:647063] user
[codex:647063] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:647063] 
[codex:647063] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:647063] 
[codex:647063] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:647063] - Gas inefficiency, code quality, naming, or best practices
[codex:647063] - Theoretical vulnerabilities without a clear extraction path
[codex:647063] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:647063] - Front-running unless it enables theft beyond MEV
[codex:647063] - DoS, griefing, or issues that don't result in attacker profit
[codex:647063] - Missing events, view function issues, or informational findings
[codex:647063] 
[codex:647063] HIGH-VALUE PATTERNS TO HUNT:
[codex:647063] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:647063] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:647063] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:647063] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:647063] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:647063] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:647063] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:647063] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:647063] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:647063] 
[codex:647063] For each finding, you MUST provide:
[codex:647063] 1. Exact file and line numbers of vulnerable code
[codex:647063] 2. Step-by-step exploit transaction sequence
[codex:647063] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:647063] 
[codex:647063] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:647063] 
[codex:647063] Output MUST be valid JSON matching the provided schema.
[codex:647063] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:647063] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:647063] mcp startup: no servers
[codex:647063] 
[codex:647063] thinking
[codex:647063] **Preparing to audit instructions**
[codex:647063] exec
[codex:647063] /bin/bash -lc ls in /tmp/codex-multi-bpocr_8w succeeded in 6ms:
[codex:647063] AUDIT_BUNDLE.txt
[codex:647063] codex-output-schema.json
[codex:647063] contracts
[codex:647063] exec
[codex:647063] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-bpocr_8w succeeded in 6ms:
[codex:647063] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:647063] 
[codex:647063] ================================================================================
[codex:647063] FILE: contracts/contracts/CENNZnetBridge.sol
[codex:647063] ================================================================================
[codex:647063] // SPDX-License-Identifier: Apache-2.0
[codex:647063] pragma solidity ^0.8.0;
[codex:647063] 
[codex:647063] import "@openzeppelin/contracts/utils/math/Math.sol";
[codex:647063] import "@openzeppelin/contracts/access/Ownable.sol";
[codex:647063] 
[codex:647063] // Proof of a witnessed event by CENNZnet validators
[codex:647063] struct CENNZnetEventProof {
[codex:647063]     // The Id (nonce) of the event
[codex:647063]     uint256 eventId;
[codex:647063]     // The validator set Id which witnessed the event
[codex:647063]     uint32 validatorSetId;
[codex:647063]     // v,r,s are sparse arrays expected to align w public key in 'validators'
[codex:647063]     // i.e. v[i], r[i], s[i] matches the i-th validator[i]
[codex:647063]     // v part of validator signatures
[codex:647063] exec
[codex:647063] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-bpocr_8w succeeded in 6ms:
[codex:647063]     address constant public ETH_RESERVED_TOKEN_ADDRESS = address(0);
[codex:647063]     // CENNZ ERC20 contract address
[codex:647063]     address constant public CENNZ_TOKEN_ADDRESS = 0x1122B6a0E00DCe0563082b6e2953f3A943855c1F;
[codex:647063] 
[codex:647063]     constructor(address _bridge) {
[codex:647063]         bridge = CENNZnetBridge(_bridge);
[codex:647063]     }
[codex:647063] 
[codex:647063]     event Endow(uint256 amount);
[codex:647063]     event Deposit(address indexed, address tokenType, uint256 amount, bytes32 cennznetAddress);
[codex:647063]     event Withdraw(address indexed, address tokenType, uint256 amount);
[codex:647063] 
[codex:647063]     // Deposit amount of tokenType the pegged version of the token will be claim-able on CENNZnet.
[codex:647063]     // tokenType '0' is reserved for native Eth
[codex:647063]     function deposit(address tokenType, uint256 amount, bytes32 cennznetAddress) payable external {
[codex:647063]         require(depositsActive, "deposits paused");
[codex:647063]         require(cennznetAddress != bytes32(0), "invalid CENNZnet address");
[codex:647063] 
[codex:647063]         if (tokenType == ETH_RESERVED_TOKEN_ADDRESS) {
[codex:647063]             require(msg.value == amount, "incorrect deposit amount");
[codex:647063] 
[codex:647063] thinking
[codex:647063] **Analyzing validator threshold vulnerability**
[codex:647063] exec
[codex:647063] /bin/bash -lc "nl -ba contracts/contracts/CENNZnetBridge.sol | sed -n '40,160p'" in /tmp/codex-multi-bpocr_8w succeeded in 6ms:
[codex:647063]     40	    // Acceptance threshold in %
[codex:647063]     41	    uint public thresholdPercent = 60;
[codex:647063]     42	    // Number of eras before a bridge message will be considered expired
[codex:647063]     43	    uint public proofTTL = 3;
[codex:647063]     44	    // Whether the bridge is active or not
[codex:647063]     45	    bool public active = true;
[codex:647063]     46	    // Max reward paid out to successful caller of `setValidator`
[codex:647063]     47	    uint public maxRewardPayout = 1e18;
[codex:647063]     48	
[codex:647063]     49	    event SetValidators(bytes32 validatorSetDigest, uint reward, uint32 validatorSetId);
[codex:647063]     50	
[codex:647063]     51	    // Verify a message was authorised by CENNZnet validators.
[codex:647063]     52	    // Callable by anyone.
[codex:647063]     53	    // Caller must provide `verificationFee`.
[codex:647063]     54	    // Requires signatures from a threshold CENNZnet validators at proof.validatorSetId.
[codex:647063]     55	    // Requires proof is not older than `proofTTL` eras
[codex:647063]     56	    // Halts on failure
[codex:647063]     57	    //
[codex:647063]     58	    // Parameters:
[codex:647063]     59	    // - message: the unhashed message data packed wide w validatorSetId & eventId e.g. `abi.encode(arg0, arg2, validatorSetId, eventId);`
[codex:647063] 
[codex:647063] thinking
[codex:647063] **Analyzing signature threshold rounding vulnerability**
[codex:647063] 
[codex:647063] I'm examining the potential exploit where the acceptance threshold for signatures is computed with floor rounding, possibly allowing withdrawals with fewer signatures than intended—especially risky if the validator set is small or threshold low, which could enable an attacker to profitably bypass verification under certain conditions.
[codex:647063] exec
[codex:647063] /bin/bash -lc "nl -ba contracts/contracts/ERC20Peg.sol | sed -n '1,200p'" in /tmp/codex-multi-bpocr_8w succeeded in 6ms:
[codex:647063]      1	// SPDX-License-Identifier: Apache-2.0
[codex:647063]      2	pragma solidity ^0.8.0;
[codex:647063]      3	
[codex:647063]      4	import "./CENNZnetBridge.sol";
[codex:647063]      5	import "@openzeppelin/contracts/access/Ownable.sol";
[codex:647063]      6	import "@openzeppelin/contracts/utils/math/SafeMath.sol";
[codex:647063]      7	import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:647063]      8	
[codex:647063]      9	// Provides an Eth/ERC20/GA CENNZnet peg
[codex:647063]     10	// - depositing: lock Eth/ERC20 tokens to redeem CENNZnet "generic asset" 1:1
[codex:647063]     11	// - withdrawing: burn or lock GAs to redeem Eth/ERC20 tokens 1:1
[codex:647063]     12	contract ERC20Peg is Ownable {
[codex:647063]     13	    using SafeMath for uint256;
[codex:647063]     14	    // whether the peg is accepting deposits
[codex:647063]     15	    bool public depositsActive;
[codex:647063]     16	    // whether CENNZ deposists are on
[codex:647063]     17	    bool public cennzDepositsActive;
[codex:647063]     18	    // whether the peg is accepting withdrawals
[codex:647063]     19	    bool public withdrawalsActive;
[codex:647063]     20	    // CENNZnet bridge contract address
[codex:647063] 
[codex:647063] 
[codex:647063] 
[codex:647063] thinking
[codex:647063] **Analyzing potential signature and reward vulnerabilities**
[codex:647063] thinking
[codex:647063] ```json
[codex:647063] {
[codex:647063]   "no_findings": false,
[codex:647063]   "summary": "1 critical finding: signature threshold rounding allows zero-signature proofs on small validator sets, enabling unauthorized withdrawals.",
[codex:647063]   "findings": [
[codex:647063]     {
[codex:647063]       "severity": "critical",
[codex:647063]       "category": "auth",
[codex:647063]       "title": "Signature threshold rounds down to zero on small validator sets, bypassing validator signatures",
[codex:647063]       "exploit_scenario": "1) If the active validator set size is 1 (or thresholdPercent configured so that `_validators.length * thresholdPercent / 100 == 0`), construct a `CENNZnetEventProof` with that single validator address, an unused `eventId`, and `v`, `r`, `s` arrays of length 1 with `r[0] = 0` to omit the signature. 2) Call `ERC20Peg.withdraw` with any `tokenType`, `amount`, and your address as recipient, paying the verification fee if required. 3) `verifyMessage` computes `acceptanceThreshold = 0`, skips signature verification, marks the `eventId` used, and `ERC20Peg` transfers funds to the caller. Repeat with new unused `eventId`s to drain the full balance. Profit potential includes the entire ETH and ERC20 token balances held by `ERC20Peg` (contract TVL) plus any ETH fees collected by `CENNZnetBridge` via `setValidators` reward.",
[codex:647063]       "recommendation": "Compute the acceptance threshold using a ceiling function (e.g., `(len * thresholdPercent + 99) / 100`) and enforce a minimum threshold of 1; additionally, require `thresholdPercent > 0` to prevent zero thresholds.",
[codex:647063]       "evidence": "The acceptance threshold is computed via integer division (floor), without a minimum limit, and signatures contribute only when `r[i] != 0`. Thus, if the threshold computes to zero, an empty signature set satisfies `witnessCount >= acceptanceThreshold`, allowing bypass of signature checks.",
[codex:647063]       "locations": [
[codex:647063]         "contracts/contracts/CENNZnetBridge.sol:75",
[codex:647063]         "contracts/contracts/CENNZnetBridge.sol:81",
[codex:647063]         "contracts/contracts/CENNZnetBridge.sol:92",
[codex:647063]         "contracts/contracts/ERC20Peg.sol:62",
[codex:647063]         "contracts/contracts/ERC20Peg.sol:64"
[codex:647063]       ]
[codex:647063]     }
[codex:647063]   ]
[codex:647063] }
[codex:647063] ```
[codex:647063] thinking
[codex:647063] **Verifying acceptance threshold bug details**
[codex:647063] codex
[codex:647063] {"no_findings":false,"summary":"1 critical finding: signature threshold rounds down to zero on small validator sets, allowing signature bypass and unauthorized withdrawals.","findings":[{"severity":"critical","category":"auth","title":"Signature threshold can round down to zero, allowing proofs with no signatures on small validator sets","exploit_scenario":"1) If the active validator set size is 1 (or `thresholdPercent` is configured so `_validators.length * thresholdPercent / 100 == 0`), build a `CENNZnetEventProof` that uses the known validator address, an unused `eventId`, and `v/r/s` arrays of length 1 with `r[0]=0` to omit the signature. 2) Call `ERC20Peg.withdraw` for any `tokenType` and `amount`, sending the verification fee if required. 3) `verifyMessage` computes `acceptanceTreshold=0`, skips signature checks, marks the `eventId` used, and `ERC20Peg` transfers assets to you. Repeat with fresh `eventId`s to drain balances. Profit: up to the full ETH and ERC20 balances held by `ERC20Peg` (order of magnitude = contract TVL), plus any ETH fees in `CENNZnetBridge` if abusing `setValidators` rewards.","recommendation":"Compute the threshold using a ceiling (e.g., `(len * thresholdPercent + 99) / 100`) and enforce a minimum of 1; optionally disallow `thresholdPercent == 0`.","evidence":"`acceptanceTreshold` is computed using integer truncation and no minimum, and signatures are only counted when `r[i] != 0`, so when the threshold computes to 0, empty signatures satisfy `witnessCount >= acceptanceTreshold`.","locations":["contracts/contracts/CENNZnetBridge.sol:75","contracts/contracts/CENNZnetBridge.sol:81","contracts/contracts/CENNZnetBridge.sol:92","contracts/contracts/ERC20Peg.sol:62","contracts/contracts/ERC20Peg.sol:64"]}]}
[codex:647063] tokens used
[codex:647063] 23,330
[codex:647063] {"no_findings":false,"summary":"1 critical finding: signature threshold rounds down to zero on small validator sets, allowing signature bypass and unauthorized withdrawals.","findings":[{"severity":"critical","category":"auth","title":"Signature threshold can round down to zero, allowing proofs with no signatures on small validator sets","exploit_scenario":"1) If the active validator set size is 1 (or `thresholdPercent` is configured so `_validators.length * thresholdPercent / 100 == 0`), build a `CENNZnetEventProof` that uses the known validator address, an unused `eventId`, and `v/r/s` arrays of length 1 with `r[0]=0` to omit the signature. 2) Call `ERC20Peg.withdraw` for any `tokenType` and `amount`, sending the verification fee if required. 3) `verifyMessage` computes `acceptanceTreshold=0`, skips signature checks, marks the `eventId` used, and `ERC20Peg` transfers assets to you. Repeat with fresh `eventId`s to drain balances. Profit: up to the full ETH and ERC20 balances held by `ERC20Peg` (order of magnitude = contract TVL), plus any ETH fees in `CENNZnetBridge` if abusing `setValidators` rewards.","recommendation":"Compute the threshold using a ceiling (e.g., `(len * thresholdPercent + 99) / 100`) and enforce a minimum of 1; optionally disallow `thresholdPercent == 0`.","evidence":"`acceptanceTreshold` is computed using integer truncation and no minimum, and signatures are only counted when `r[i] != 0`, so when the threshold computes to 0, empty signatures satisfy `witnessCount >= acceptanceTreshold`.","locations":["contracts/contracts/CENNZnetBridge.sol:75","contracts/contracts/CENNZnetBridge.sol:81","contracts/contracts/CENNZnetBridge.sol:92","contracts/contracts/ERC20Peg.sol:62","contracts/contracts/ERC20Peg.sol:64"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-05T05:29:07.883250+00:00",
        "returncode": 0
    },
    "summary": "1 critical finding: signature threshold rounds down to zero on small validator sets, allowing signature bypass and unauthorized withdrawals.",
    "raw_final": {
        "summary": "1 critical finding: signature threshold rounds down to zero on small validator sets, allowing signature bypass and unauthorized withdrawals.",
        "findings": [
            {
                "title": "Signature threshold can round down to zero, allowing proofs with no signatures on small validator sets",
                "category": "auth",
                "evidence": "`acceptanceTreshold` is computed using integer truncation and no minimum, and signatures are only counted when `r[i] != 0`, so when the threshold computes to 0, empty signatures satisfy `witnessCount >= acceptanceTreshold`.",
                "severity": "critical",
                "locations": [
                    "contracts/contracts/CENNZnetBridge.sol:75",
                    "contracts/contracts/CENNZnetBridge.sol:81",
                    "contracts/contracts/CENNZnetBridge.sol:92",
                    "contracts/contracts/ERC20Peg.sol:62",
                    "contracts/contracts/ERC20Peg.sol:64"
                ],
                "recommendation": "Compute the threshold using a ceiling (e.g., `(len * thresholdPercent + 99) / 100`) and enforce a minimum of 1; optionally disallow `thresholdPercent == 0`.",
                "exploit_scenario": "1) If the active validator set size is 1 (or `thresholdPercent` is configured so `_validators.length * thresholdPercent / 100 == 0`), build a `CENNZnetEventProof` that uses the known validator address, an unused `eventId`, and `v/r/s` arrays of length 1 with `r[0]=0` to omit the signature. 2) Call `ERC20Peg.withdraw` for any `tokenType` and `amount`, sending the verification fee if required. 3) `verifyMessage` computes `acceptanceTreshold=0`, skips signature checks, marks the `eventId` used, and `ERC20Peg` transfers assets to you. Repeat with fresh `eventId`s to drain balances. Profit: up to the full ETH and ERC20 balances held by `ERC20Peg` (order of magnitude = contract TVL), plus any ETH fees in `CENNZnetBridge` if abusing `setValidators` rewards."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
2
Total opcodes
2579
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00fe
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x7e771dc0
00000019: GT
0000001a: PUSH2 0x0095
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xc8c76243
00000024: GT
00000025: PUSH2 0x0064
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xc8c76243
0000002f: EQ
00000030: PUSH2 0x0251
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe5703512
0000003a: EQ
0000003b: PUSH2 0x0266
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe78cea92
00000045: EQ
00000046: PUSH2 0x027b
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf275c0ce
00000050: EQ
00000051: PUSH2 0x029b
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf2fde38b
0000005b: EQ
0000005c: PUSH2 0x02bc
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x7e771dc0
0000006b: EQ
0000006c: PUSH2 0x01ea
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x8324e6d7
00000076: EQ
00000077: PUSH2 0x01fd
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x8da5cb5b
00000081: EQ
00000082: PUSH2 0x021e
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xc0e8e635
0000008c: EQ
0000008d: PUSH2 0x023c
00000090: JUMPI
00000091: PUSH1 0x00
00000093: DUP1
00000094: REVERT
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x4500ca4d
0000009c: GT
0000009d: PUSH2 0x00d1
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x4500ca4d
000000a7: EQ
000000a8: PUSH2 0x017a
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x4f2e70a9
000000b2: EQ
000000b3: PUSH2 0x01ab
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x56bb54a7
000000bd: EQ
000000be: PUSH2 0x01c0
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x715018a6
000000c8: EQ
000000c9: PUSH2 0x01d5
000000cc: JUMPI
000000cd: PUSH1 0x00
000000cf: DUP1
000000d0: REVERT
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x02191980
000000d8: EQ
000000d9: PUSH2 0x0103
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x06e30dfc
000000e3: EQ
000000e4: PUSH2 0x011a
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x26b3293f
000000ee: EQ
000000ef: PUSH2 0x0122
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x3945ee77
000000f9: EQ
000000fa: PUSH2 0x0135
000000fd: JUMPI
000000fe: JUMPDEST
000000ff: PUSH1 0x00
00000101: DUP1
00000102: REVERT
00000103: JUMPDEST
00000104: CALLVALUE
00000105: DUP1
00000106: ISZERO
00000107: PUSH2 0x010f
0000010a: JUMPI
0000010b: PUSH1 0x00
0000010d: DUP1
0000010e: REVERT
0000010f: JUMPDEST
00000110: POP
00000111: PUSH2 0x0118
00000114: PUSH2 0x02dc
00000117: JUMP
00000118: JUMPDEST
00000119: STOP
0000011a: JUMPDEST
0000011b: PUSH2 0x0118
0000011e: PUSH2 0x031e
00000121: JUMP
00000122: JUMPDEST
00000123: PUSH2 0x0118
00000126: PUSH2 0x0130
00000129: CALLDATASIZE
0000012a: PUSH1 0x04
0000012c: PUSH2 0x0d63
0000012f: JUMP
00000130: JUMPDEST
00000131: PUSH2 0x03c2
00000134: JUMP
00000135: JUMPDEST
00000136: CALLVALUE
00000137: DUP1
00000138: ISZERO
00000139: PUSH2 0x0141
0000013c: JUMPI
0000013d: PUSH1 0x00
0000013f: DUP1
00000140: REVERT
00000141: JUMPDEST
00000142: POP
00000143: PUSH2 0x015d
00000146: PUSH20 0x1122b6a0e00dce0563082b6e2953f3a943855c1f
0000015b: DUP2
0000015c: JUMP
0000015d: JUMPDEST
0000015e: PUSH1 0x40
00000160: MLOAD
00000161: PUSH1 0x01
00000163: PUSH1 0x01
00000165: PUSH1 0xa0
00000167: SHL
00000168: SUB
00000169: SWAP1
0000016a: SWAP2
0000016b: AND
0000016c: DUP2
0000016d: MSTORE
0000016e: PUSH1 0x20
00000170: ADD
00000171: JUMPDEST
00000172: PUSH1 0x40
00000174: MLOAD
00000175: DUP1
00000176: SWAP2
00000177: SUB
00000178: SWAP1
00000179: RETURN
0000017a: JUMPDEST
0000017b: CALLVALUE
0000017c: DUP1
0000017d: ISZERO
0000017e: PUSH2 0x0186
00000181: JUMPI
00000182: PUSH1 0x00
00000184: DUP1
00000185: REVERT
00000186: JUMPDEST
00000187: POP
00000188: PUSH1 0x00
0000018a: SLOAD
0000018b: PUSH2 0x019b
0000018e: SWAP1
0000018f: PUSH1 0x01
00000191: PUSH1 0xb0
00000193: SHL
00000194: SWAP1
00000195: DIV
00000196: PUSH1 0xff
00000198: AND
00000199: DUP2
0000019a: JUMP
0000019b: JUMPDEST
0000019c: PUSH1 0x40
0000019e: MLOAD
0000019f: SWAP1
000001a0: ISZERO
000001a1: ISZERO
000001a2: DUP2
000001a3: MSTORE
000001a4: PUSH1 0x20
000001a6: ADD
000001a7: PUSH2 0x0171
000001aa: JUMP
000001ab: JUMPDEST
000001ac: CALLVALUE
000001ad: DUP1
000001ae: ISZERO
000001af: PUSH2 0x01b7
000001b2: JUMPI
000001b3: PUSH1 0x00
000001b5: DUP1
000001b6: REVERT
000001b7: JUMPDEST
000001b8: POP
000001b9: PUSH2 0x015d
000001bc: PUSH1 0x00
000001be: DUP2
000001bf: JUMP
000001c0: JUMPDEST
000001c1: CALLVALUE
000001c2: DUP1
000001c3: ISZERO
000001c4: PUSH2 0x01cc
000001c7: JUMPI
000001c8: PUSH1 0x00
000001ca: DUP1
000001cb: REVERT
000001cc: JUMPDEST
000001cd: POP
000001ce: PUSH2 0x0118
000001d1: PUSH2 0x058f
000001d4: JUMP
000001d5: JUMPDEST
000001d6: CALLVALUE
000001d7: DUP1
000001d8: ISZERO
000001d9: PUSH2 0x01e1
000001dc: JUMPI
000001dd: PUSH1 0x00
000001df: DUP1
000001e0: REVERT
000001e1: JUMPDEST
000001e2: POP
000001e3: PUSH2 0x0118
000001e6: PUSH2 0x05c8
000001e9: JUMP
000001ea: JUMPDEST
000001eb: PUSH2 0x0118
000001ee: PUSH2 0x01f8
000001f1: CALLDATASIZE
000001f2: PUSH1 0x04
000001f4: PUSH2 0x0cf9
000001f7: JUMP
000001f8: JUMPDEST
000001f9: PUSH2 0x05fe
000001fc: JUMP
000001fd: JUMPDEST
000001fe: CALLVALUE
000001ff: DUP1
00000200: ISZERO
00000201: PUSH2 0x0209
00000204: JUMPI
00000205: PUSH1 0x00
00000207: DUP1
00000208: REVERT
00000209: JUMPDEST
0000020a: POP
0000020b: PUSH1 0x00
0000020d: SLOAD
0000020e: PUSH2 0x019b
00000211: SWAP1
00000212: PUSH1 0x01
00000214: PUSH1 0xa8
00000216: SHL
00000217: SWAP1
00000218: DIV
00000219: PUSH1 0xff
0000021b: AND
0000021c: DUP2
0000021d: JUMP
0000021e: JUMPDEST
0000021f: CALLVALUE
00000220: DUP1
00000221: ISZERO
00000222: PUSH2 0x022a
00000225: JUMPI
00000226: PUSH1 0x00
00000228: DUP1
00000229: REVERT
0000022a: JUMPDEST
0000022b: POP
0000022c: PUSH1 0x00
0000022e: SLOAD
0000022f: PUSH1 0x01
00000231: PUSH1 0x01
00000233: PUSH1 0xa0
00000235: SHL
00000236: SUB
00000237: AND
00000238: PUSH2 0x015d
0000023b: JUMP
0000023c: JUMPDEST
0000023d: CALLVALUE
0000023e: DUP1
0000023f: ISZERO
00000240: PUSH2 0x0248
00000243: JUMPI
00000244: PUSH1 0x00
00000246: DUP1
00000247: REVERT
00000248: JUMPDEST
00000249: POP
0000024a: PUSH2 0x0118
0000024d: PUSH2 0x0815
00000250: JUMP
00000251: JUMPDEST
00000252: CALLVALUE
00000253: DUP1
00000254: ISZERO
00000255: PUSH2 0x025d
00000258: JUMPI
00000259: PUSH1 0x00
0000025b: DUP1
0000025c: REVERT
0000025d: JUMPDEST
0000025e: POP
0000025f: PUSH2 0x0118
00000262: PUSH2 0x0854
00000265: JUMP
00000266: JUMPDEST
00000267: CALLVALUE
00000268: DUP1
00000269: ISZERO
0000026a: PUSH2 0x0272
0000026d: JUMPI
0000026e: PUSH1 0x00
00000270: DUP1
00000271: REVERT
00000272: JUMPDEST
00000273: POP
00000274: PUSH2 0x0118
00000277: PUSH2 0x0893
0000027a: JUMP
0000027b: JUMPDEST
0000027c: CALLVALUE
0000027d: DUP1
0000027e: ISZERO
0000027f: PUSH2 0x0287
00000282: JUMPI
00000283: PUSH1 0x00
00000285: DUP1
00000286: REVERT
00000287: JUMPDEST
00000288: POP
00000289: PUSH1 0x01
0000028b: SLOAD
0000028c: PUSH2 0x015d
0000028f: SWAP1
00000290: PUSH1 0x01
00000292: PUSH1 0x01
00000294: PUSH1 0xa0
00000296: SHL
00000297: SUB
00000298: AND
00000299: DUP2
0000029a: JUMP
0000029b: JUMPDEST
0000029c: CALLVALUE
0000029d: DUP1
0000029e: ISZERO
0000029f: PUSH2 0x02a7
000002a2: JUMPI
000002a3: PUSH1 0x00
000002a5: DUP1
000002a6: REVERT
000002a7: JUMPDEST
000002a8: POP
000002a9: PUSH1 0x00
000002ab: SLOAD
000002ac: PUSH2 0x019b
000002af: SWAP1
000002b0: PUSH1 0x01
000002b2: PUSH1 0xa0
000002b4: SHL
000002b5: SWAP1
000002b6: DIV
000002b7: PUSH1 0xff
000002b9: AND
000002ba: DUP2
000002bb: JUMP
000002bc: JUMPDEST
000002bd: CALLVALUE
000002be: DUP1
000002bf: ISZERO
000002c0: PUSH2 0x02c8
000002c3: JUMPI
000002c4: PUSH1 0x00
000002c6: DUP1
000002c7: REVERT
000002c8: JUMPDEST
000002c9: POP
000002ca: PUSH2 0x0118
000002cd: PUSH2 0x02d7
000002d0: CALLDATASIZE
000002d1: PUSH1 0x04
000002d3: PUSH2 0x0cdf
000002d6: JUMP
000002d7: JUMPDEST
000002d8: PUSH2 0x08d2
000002db: JUMP
000002dc: JUMPDEST
000002dd: PUSH1 0x00
000002df: SLOAD
000002e0: PUSH1 0x01
000002e2: PUSH1 0x01
000002e4: PUSH1 0xa0
000002e6: SHL
000002e7: SUB
000002e8: AND
000002e9: CALLER
000002ea: EQ
000002eb: PUSH2 0x030f
000002ee: JUMPI
000002ef: PUSH1 0x40
000002f1: MLOAD
000002f2: PUSH3 0x461bcd
000002f6: PUSH1 0xe5
000002f8: SHL
000002f9: DUP2
000002fa: MSTORE
000002fb: PUSH1 0x04
000002fd: ADD
000002fe: PUSH2 0x0306
00000301: SWAP1
00000302: PUSH2 0x0fa5
00000305: JUMP
00000306: JUMPDEST
00000307: PUSH1 0x40
00000309: MLOAD
0000030a: DUP1
0000030b: SWAP2
0000030c: SUB
0000030d: SWAP1
0000030e: REVERT
0000030f: JUMPDEST
00000310: PUSH1 0x00
00000312: DUP1
00000313: SLOAD
00000314: PUSH1 0xff
00000316: PUSH1 0xa0
00000318: SHL
00000319: NOT
0000031a: AND
0000031b: SWAP1
0000031c: SSTORE
0000031d: JUMP
0000031e: JUMPDEST
0000031f: PUSH1 0x00
00000321: SLOAD
00000322: PUSH1 0x01
00000324: PUSH1 0x01
00000326: PUSH1 0xa0
00000328: SHL
00000329: SUB
0000032a: AND
0000032b: CALLER
0000032c: EQ
0000032d: PUSH2 0x0348
00000330: JUMPI
00000331: PUSH1 0x40
00000333: MLOAD
00000334: PUSH3 0x461bcd
00000338: PUSH1 0xe5
0000033a: SHL
0000033b: DUP2
0000033c: MSTORE
0000033d: PUSH1 0x04
0000033f: ADD
00000340: PUSH2 0x0306
00000343: SWAP1
00000344: PUSH2 0x0fa5
00000347: JUMP
00000348: JUMPDEST
00000349: PUSH1 0x00
0000034b: CALLVALUE
0000034c: GT
0000034d: PUSH2 0x038d
00000350: JUMPI
00000351: PUSH1 0x40
00000353: MLOAD
00000354: PUSH3 0x461bcd
00000358: PUSH1 0xe5
0000035a: SHL
0000035b: DUP2
0000035c: MSTORE
0000035d: PUSH1 0x20
0000035f: PUSH1 0x04
00000361: DUP3
00000362: ADD
00000363: MSTORE
00000364: PUSH1 0x12
00000366: PUSH1 0x24
00000368: DUP3
00000369: ADD
0000036a: MSTORE
0000036b: PUSH18 0x6d75737420656e646f77206e6f6e7a65726f
0000037e: PUSH1 0x70
00000380: SHL
00000381: PUSH1 0x44
00000383: DUP3
00000384: ADD
00000385: MSTORE
00000386: PUSH1 0x64
00000388: ADD
00000389: PUSH2 0x0306
0000038c: JUMP
0000038d: JUMPDEST
0000038e: PUSH1 0x40
00000390: MLOAD
00000391: CALLVALUE
00000392: DUP2
00000393: MSTORE
00000394: PUSH32 0x28543ecc7e8f50ea4f5cea4bc2211d57d865b287538e2c0105081d65591e63a4
000003b5: SWAP1
000003b6: PUSH1 0x20
000003b8: ADD
000003b9: PUSH1 0x40
000003bb: MLOAD
000003bc: DUP1
000003bd: SWAP2
000003be: SUB
000003bf: SWAP1
000003c0: LOG1
000003c1: JUMP
000003c2: JUMPDEST
000003c3: PUSH1 0x00
000003c5: SLOAD
000003c6: PUSH1 0x01
000003c8: PUSH1 0xa0
000003ca: SHL
000003cb: SWAP1
000003cc: DIV
000003cd: PUSH1 0xff
000003cf: AND
000003d0: PUSH2 0x040d
000003d3: JUMPI
000003d4: PUSH1 0x40
000003d6: MLOAD
000003d7: PUSH3 0x461bcd
000003db: PUSH1 0xe5
000003dd: SHL
000003de: DUP2
000003df: MSTORE
000003e0: PUSH1 0x20
000003e2: PUSH1 0x04
000003e4: DUP3
000003e5: ADD
000003e6: MSTORE
000003e7: PUSH1 0x0f
000003e9: PUSH1 0x24
000003eb: DUP3
000003ec: ADD
000003ed: MSTORE
000003ee: PUSH15 0x19195c1bdcda5d1cc81c185d5cd959
000003fe: PUSH1 0x8a
00000400: SHL
00000401: PUSH1 0x44
00000403: DUP3
00000404: ADD
00000405: MSTORE
00000406: PUSH1 0x64
00000408: ADD
00000409: PUSH2 0x0306
0000040c: JUMP
0000040d: JUMPDEST
0000040e: DUP1
0000040f: PUSH2 0x045a
00000412: JUMPI
00000413: PUSH1 0x40
00000415: MLOAD
00000416: PUSH3 0x461bcd
0000041a: PUSH1 0xe5
0000041c: SHL
0000041d: DUP2
0000041e: MSTORE
0000041f: PUSH1 0x20
00000421: PUSH1 0x04
00000423: DUP3
00000424: ADD
00000425: MSTORE
00000426: PUSH1 0x18
00000428: PUSH1 0x24
0000042a: DUP3
0000042b: ADD
0000042c: MSTORE
0000042d: PUSH32 0x696e76616c69642043454e4e5a6e657420616464726573730000000000000000
0000044e: PUSH1 0x44
00000450: DUP3
00000451: ADD
00000452: MSTORE
00000453: PUSH1 0x64
00000455: ADD
00000456: PUSH2 0x0306
00000459: JUMP
0000045a: JUMPDEST
0000045b: PUSH1 0x01
0000045d: PUSH1 0x01
0000045f: PUSH1 0xa0
00000461: SHL
00000462: SUB
00000463: DUP4
00000464: AND
00000465: PUSH2 0x04bc
00000468: JUMPI
00000469: DUP2
0000046a: CALLVALUE
0000046b: EQ
0000046c: PUSH2 0x04b7
0000046f: JUMPI
00000470: PUSH1 0x40
00000472: MLOAD
00000473: PUSH3 0x461bcd
00000477: PUSH1 0xe5
00000479: SHL
0000047a: DUP2
0000047b: MSTORE
0000047c: PUSH1 0x20
0000047e: PUSH1 0x04
00000480: DUP3
00000481: ADD
00000482: MSTORE
00000483: PUSH1 0x18
00000485: PUSH1 0x24
00000487: DUP3
00000488: ADD
00000489: MSTORE
0000048a: PUSH32 0x696e636f7272656374206465706f73697420616d6f756e740000000000000000
000004ab: PUSH1 0x44
000004ad: DUP3
000004ae: ADD
000004af: MSTORE
000004b0: PUSH1 0x64
000004b2: ADD
000004b3: PUSH2 0x0306
000004b6: JUMP
000004b7: JUMPDEST
000004b8: PUSH2 0x053e
000004bb: JUMP
000004bc: JUMPDEST
000004bd: PUSH1 0x01
000004bf: PUSH1 0x01
000004c1: PUSH1 0xa0
000004c3: SHL
000004c4: SUB
000004c5: DUP4
000004c6: AND
000004c7: PUSH20 0x1122b6a0e00dce0563082b6e2953f3a943855c1f
000004dc: EQ
000004dd: ISZERO
000004de: PUSH2 0x0532
000004e1: JUMPI
000004e2: PUSH1 0x00
000004e4: SLOAD
000004e5: PUSH1 0x01
000004e7: PUSH1 0xa8
000004e9: SHL
000004ea: SWAP1
000004eb: DIV
000004ec: PUSH1 0xff
000004ee: AND
000004ef: PUSH2 0x0532
000004f2: JUMPI
000004f3: PUSH1 0x40
000004f5: MLOAD
000004f6: PUSH3 0x461bcd
000004fa: PUSH1 0xe5
000004fc: SHL
000004fd: DUP2
000004fe: MSTORE
000004ff: PUSH1 0x20
00000501: PUSH1 0x04
00000503: DUP3
00000504: ADD
00000505: MSTORE
00000506: PUSH1 0x15
00000508: PUSH1 0x24
0000050a: DUP3
0000050b: ADD
0000050c: MSTORE
0000050d: PUSH21 0x18d95b9b9e8819195c1bdcda5d1cc81c185d5cd959
00000523: PUSH1 0x5a
00000525: SHL
00000526: PUSH1 0x44
00000528: DUP3
00000529: ADD
0000052a: MSTORE
0000052b: PUSH1 0x64
0000052d: ADD
0000052e: PUSH2 0x0306
00000531: JUMP
00000532: JUMPDEST
00000533: PUSH2 0x053e
00000536: DUP4
00000537: CALLER
00000538: ADDRESS
00000539: DUP6
0000053a: PUSH2 0x096d
0000053d: JUMP
0000053e: JUMPDEST
0000053f: PUSH1 0x40
00000541: DUP1
00000542: MLOAD
00000543: PUSH1 0x01
00000545: PUSH1 0x01
00000547: PUSH1 0xa0
00000549: SHL
0000054a: SUB
0000054b: DUP6
0000054c: AND
0000054d: DUP2
0000054e: MSTORE
0000054f: PUSH1 0x20
00000551: DUP2
00000552: ADD
00000553: DUP5
00000554: SWAP1
00000555: MSTORE
00000556: SWAP1
00000557: DUP2
00000558: ADD
00000559: DUP3
0000055a: SWAP1
0000055b: MSTORE
0000055c: CALLER
0000055d: SWAP1
0000055e: PUSH32 0x76bb911c362d5b1feb3058bc7dc9354703e4b6eb9c61cc845f73da880cf62f61
0000057f: SWAP1
00000580: PUSH1 0x60
00000582: ADD
00000583: PUSH1 0x40
00000585: MLOAD
00000586: DUP1
00000587: SWAP2
00000588: SUB
00000589: SWAP1
0000058a: LOG2
0000058b: POP
0000058c: POP
0000058d: POP
0000058e: JUMP
0000058f: JUMPDEST
00000590: PUSH1 0x00
00000592: SLOAD
00000593: PUSH1 0x01
00000595: PUSH1 0x01
00000597: PUSH1 0xa0
00000599: SHL
0000059a: SUB
0000059b: AND
0000059c: CALLER
0000059d: EQ
0000059e: PUSH2 0x05b9
000005a1: JUMPI
000005a2: PUSH1 0x40
000005a4: MLOAD
000005a5: PUSH3 0x461bcd
000005a9: PUSH1 0xe5
000005ab: SHL
000005ac: DUP2
000005ad: MSTORE
000005ae: PUSH1 0x04
000005b0: ADD
000005b1: PUSH2 0x0306
000005b4: SWAP1
000005b5: PUSH2 0x0fa5
000005b8: JUMP
000005b9: JUMPDEST
000005ba: PUSH1 0x00
000005bc: DUP1
000005bd: SLOAD
000005be: PUSH1 0xff
000005c0: PUSH1 0xb0
000005c2: SHL
000005c3: NOT
000005c4: AND
000005c5: SWAP1
000005c6: SSTORE
000005c7: JUMP
000005c8: JUMPDEST
000005c9: PUSH1 0x00
000005cb: SLOAD
000005cc: PUSH1 0x01
000005ce: PUSH1 0x01
000005d0: PUSH1 0xa0
000005d2: SHL
000005d3: SUB
000005d4: AND
000005d5: CALLER
000005d6: EQ
000005d7: PUSH2 0x05f2
000005da: JUMPI
000005db: PUSH1 0x40
000005dd: MLOAD
000005de: PUSH3 0x461bcd
000005e2: PUSH1 0xe5
000005e4: SHL
000005e5: DUP2
000005e6: MSTORE
000005e7: PUSH1 0x04
000005e9: ADD
000005ea: PUSH2 0x0306
000005ed: SWAP1
000005ee: PUSH2 0x0fa5
000005f1: JUMP
000005f2: JUMPDEST
000005f3: PUSH2 0x05fc
000005f6: PUSH1 0x00
000005f8: PUSH2 0x09de
000005fb: JUMP
000005fc: JUMPDEST
000005fd: JUMP
000005fe: JUMPDEST
000005ff: PUSH1 0x00
00000601: SLOAD
00000602: PUSH1 0x01
00000604: PUSH1 0xb0
00000606: SHL
00000607: SWAP1
00000608: DIV
00000609: PUSH1 0xff
0000060b: AND
0000060c: PUSH2 0x064c
0000060f: JUMPI
00000610: PUSH1 0x40
00000612: MLOAD
00000613: PUSH3 0x461bcd
00000617: PUSH1 0xe5
00000619: SHL
0000061a: DUP2
0000061b: MSTORE
0000061c: PUSH1 0x20
0000061e: PUSH1 0x04
00000620: DUP3
00000621: ADD
00000622: MSTORE
00000623: PUSH1 0x12
00000625: PUSH1 0x24
00000627: DUP3
00000628: ADD
00000629: MSTORE
0000062a: PUSH18 0x1dda5d1a191c985dd85b1cc81c185d5cd959
0000063d: PUSH1 0x72
0000063f: SHL
00000640: PUSH1 0x44
00000642: DUP3
00000643: ADD
00000644: MSTORE
00000645: PUSH1 0x64
00000647: ADD
00000648: PUSH2 0x0306
0000064b: JUMP
0000064c: JUMPDEST
0000064d: PUSH1 0x00
0000064f: DUP5
00000650: DUP5
00000651: DUP5
00000652: PUSH2 0x0661
00000655: PUSH1 0x40
00000657: DUP7
00000658: ADD
00000659: PUSH1 0x20
0000065b: DUP8
0000065c: ADD
0000065d: PUSH2 0x0db5
00000660: JUMP
00000661: JUMPDEST
00000662: PUSH1 0x40
00000664: DUP1
00000665: MLOAD
00000666: PUSH1 0x01
00000668: PUSH1 0x01
0000066a: PUSH1 0xa0
0000066c: SHL
0000066d: SUB
0000066e: SWAP6
0000066f: DUP7
00000670: AND
00000671: PUSH1 0x20
00000673: DUP3
00000674: ADD
00000675: MSTORE
00000676: SWAP1
00000677: DUP2
00000678: ADD
00000679: SWAP4
0000067a: SWAP1
0000067b: SWAP4
0000067c: MSTORE
0000067d: SWAP3
0000067e: AND
0000067f: PUSH1 0x60
00000681: DUP3
00000682: ADD
00000683: MSTORE
00000684: PUSH4 0xffffffff
00000689: SWAP1
0000068a: SWAP2
0000068b: AND
0000068c: PUSH1 0x80
0000068e: DUP3
0000068f: ADD
00000690: MSTORE
00000691: DUP3
00000692: CALLDATALOAD
00000693: PUSH1 0xa0
00000695: DUP3
00000696: ADD
00000697: MSTORE
00000698: PUSH1 0xc0
0000069a: ADD
0000069b: PUSH1 0x40
0000069d: DUP1
0000069e: MLOAD
0000069f: PUSH1 0x1f
000006a1: NOT
000006a2: DUP2
000006a3: DUP5
000006a4: SUB
000006a5: ADD
000006a6: DUP2
000006a7: MSTORE
000006a8: SWAP1
000006a9: DUP3
000006aa: SWAP1
000006ab: MSTORE
000006ac: PUSH1 0x01
000006ae: SLOAD
000006af: PUSH4 0x63c75f5f
000006b4: PUSH1 0xe1
000006b6: SHL
000006b7: DUP4
000006b8: MSTORE
000006b9: SWAP1
000006ba: SWAP3
000006bb: POP
000006bc: PUSH1 0x01
000006be: PUSH1 0x01
000006c0: PUSH1 0xa0
000006c2: SHL
000006c3: SUB
000006c4: AND
000006c5: SWAP1
000006c6: PUSH4 0xc78ebebe
000006cb: SWAP1
000006cc: CALLVALUE
000006cd: SWAP1
000006ce: PUSH2 0x06dd
000006d1: SWAP1
000006d2: DUP6
000006d3: SWAP1
000006d4: DUP8
000006d5: SWAP1
000006d6: PUSH1 0x04
000006d8: ADD
000006d9: PUSH2 0x0e91
000006dc: JUMP
000006dd: JUMPDEST
000006de: PUSH1 0x00
000006e0: PUSH1 0x40
000006e2: MLOAD
000006e3: DUP1
000006e4: DUP4
000006e5: SUB
000006e6: DUP2
000006e7: DUP6
000006e8: DUP9
000006e9: DUP1
000006ea: EXTCODESIZE
000006eb: ISZERO
000006ec: DUP1
000006ed: ISZERO
000006ee: PUSH2 0x06f6
000006f1: JUMPI
000006f2: PUSH1 0x00
000006f4: DUP1
000006f5: REVERT
000006f6: JUMPDEST
000006f7: POP
000006f8: GAS
000006f9: CALL
000006fa: ISZERO
000006fb: DUP1
000006fc: ISZERO
000006fd: PUSH2 0x070a
00000700: JUMPI
00000701: RETURNDATASIZE
00000702: PUSH1 0x00
00000704: DUP1
00000705: RETURNDATACOPY
00000706: RETURNDATASIZE
00000707: PUSH1 0x00
00000709: REVERT
0000070a: JUMPDEST
0000070b: POP
0000070c: POP
0000070d: POP
0000070e: POP
0000070f: POP
00000710: PUSH1 0x01
00000712: PUSH1 0x01
00000714: PUSH1 0xa0
00000716: SHL
00000717: SUB
00000718: DUP6
00000719: AND
0000071a: PUSH2 0x07bd
0000071d: JUMPI
0000071e: PUSH1 0x00
00000720: DUP4
00000721: PUSH1 0x01
00000723: PUSH1 0x01
00000725: PUSH1 0xa0
00000727: SHL
00000728: SUB
00000729: AND
0000072a: DUP6
0000072b: PUSH1 0x40
0000072d: MLOAD
0000072e: PUSH1 0x00
00000730: PUSH1 0x40
00000732: MLOAD
00000733: DUP1
00000734: DUP4
00000735: SUB
00000736: DUP2
00000737: DUP6
00000738: DUP8
00000739: GAS
0000073a: CALL
0000073b: SWAP3
0000073c: POP
0000073d: POP
0000073e: POP
0000073f: RETURNDATASIZE
00000740: DUP1
00000741: PUSH1 0x00
00000743: DUP2
00000744: EQ
00000745: PUSH2 0x076a
00000748: JUMPI
00000749: PUSH1 0x40
0000074b: MLOAD
0000074c: SWAP2
0000074d: POP
0000074e: PUSH1 0x1f
00000750: NOT
00000751: PUSH1 0x3f
00000753: RETURNDATASIZE
00000754: ADD
00000755: AND
00000756: DUP3
00000757: ADD
00000758: PUSH1 0x40
0000075a: MSTORE
0000075b: RETURNDATASIZE
0000075c: DUP3
0000075d: MSTORE
0000075e: RETURNDATASIZE
0000075f: PUSH1 0x00
00000761: PUSH1 0x20
00000763: DUP5
00000764: ADD
00000765: RETURNDATACOPY
00000766: PUSH2 0x076f
00000769: JUMP
0000076a: JUMPDEST
0000076b: PUSH1 0x60
0000076d: SWAP2
0000076e: POP
0000076f: JUMPDEST
00000770: POP
00000771: POP
00000772: SWAP1
00000773: POP
00000774: DUP1
00000775: PUSH2 0x07b7
00000778: JUMPI
00000779: PUSH1 0x40
0000077b: MLOAD
0000077c: PUSH3 0x461bcd
00000780: PUSH1 0xe5
00000782: SHL
00000783: DUP2
00000784: MSTORE
00000785: PUSH1 0x20
00000787: PUSH1 0x04
00000789: DUP3
0000078a: ADD
0000078b: MSTORE
0000078c: PUSH1 0x14
0000078e: PUSH1 0x24
00000790: DUP3
00000791: ADD
00000792: MSTORE
00000793: PUSH20 0x2330b4b632b2103a379039b2b7321022ba3432b9
000007a8: PUSH1 0x61
000007aa: SHL
000007ab: PUSH1 0x44
000007ad: DUP3
000007ae: ADD
000007af: MSTORE
000007b0: PUSH1 0x64
000007b2: ADD
000007b3: PUSH2 0x0306
000007b6: JUMP
000007b7: JUMPDEST
000007b8: POP
000007b9: PUSH2 0x07c8
000007bc: JUMP
000007bd: JUMPDEST
000007be: PUSH2 0x07c8
000007c1: DUP6
000007c2: DUP5
000007c3: DUP7
000007c4: PUSH2 0x0a2e
000007c7: JUMP
000007c8: JUMPDEST
000007c9: PUSH1 0x40
000007cb: DUP1
000007cc: MLOAD
000007cd: PUSH1 0x01
000007cf: PUSH1 0x01
000007d1: PUSH1 0xa0
000007d3: SHL
000007d4: SUB
000007d5: DUP8
000007d6: DUP2
000007d7: AND
000007d8: DUP3
000007d9: MSTORE
000007da: PUSH1 0x20
000007dc: DUP3
000007dd: ADD
000007de: DUP8
000007df: SWAP1
000007e0: MSTORE
000007e1: DUP6
000007e2: AND
000007e3: SWAP2
000007e4: PUSH32 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb
00000805: SWAP2
00000806: ADD
00000807: PUSH1 0x40
00000809: MLOAD
0000080a: DUP1
0000080b: SWAP2
0000080c: SUB
0000080d: SWAP1
0000080e: LOG2
0000080f: POP
00000810: POP
00000811: POP
00000812: POP
00000813: POP
00000814: JUMP
00000815: JUMPDEST
00000816: PUSH1 0x00
00000818: SLOAD
00000819: PUSH1 0x01
0000081b: PUSH1 0x01
0000081d: PUSH1 0xa0
0000081f: SHL
00000820: SUB
00000821: AND
00000822: CALLER
00000823: EQ
00000824: PUSH2 0x083f
00000827: JUMPI
00000828: PUSH1 0x40
0000082a: MLOAD
0000082b: PUSH3 0x461bcd
0000082f: PUSH1 0xe5
00000831: SHL
00000832: DUP2
00000833: MSTORE
00000834: PUSH1 0x04
00000836: ADD
00000837: PUSH2 0x0306
0000083a: SWAP1
0000083b: PUSH2 0x0fa5
0000083e: JUMP
0000083f: JUMPDEST
00000840: PUSH1 0x00
00000842: DUP1
00000843: SLOAD
00000844: PUSH1 0xff
00000846: PUSH1 0xa8
00000848: SHL
00000849: NOT
0000084a: AND
0000084b: PUSH1 0x01
0000084d: PUSH1 0xa8
0000084f: SHL
00000850: OR
00000851: SWAP1
00000852: SSTORE
00000853: JUMP
00000854: JUMPDEST
00000855: PUSH1 0x00
00000857: SLOAD
00000858: PUSH1 0x01
0000085a: PUSH1 0x01
0000085c: PUSH1 0xa0
0000085e: SHL
0000085f: SUB
00000860: AND
00000861: CALLER
00000862: EQ
00000863: PUSH2 0x087e
00000866: JUMPI
00000867: PUSH1 0x40
00000869: MLOAD
0000086a: PUSH3 0x461bcd
0000086e: PUSH1 0xe5
00000870: SHL
00000871: DUP2
00000872: MSTORE
00000873: PUSH1 0x04
00000875: ADD
00000876: PUSH2 0x0306
00000879: SWAP1
0000087a: PUSH2 0x0fa5
0000087d: JUMP
0000087e: JUMPDEST
0000087f: PUSH1 0x00
00000881: DUP1
00000882: SLOAD
00000883: PUSH1 0xff
00000885: PUSH1 0xb0
00000887: SHL
00000888: NOT
00000889: AND
0000088a: PUSH1 0x01
0000088c: PUSH1 0xb0
0000088e: SHL
0000088f: OR
00000890: SWAP1
00000891: SSTORE
00000892: JUMP
00000893: JUMPDEST
00000894: PUSH1 0x00
00000896: SLOAD
00000897: PUSH1 0x01
00000899: PUSH1 0x01
0000089b: PUSH1 0xa0
0000089d: SHL
0000089e: SUB
0000089f: AND
000008a0: CALLER
000008a1: EQ
000008a2: PUSH2 0x08bd
000008a5: JUMPI
000008a6: PUSH1 0x40
000008a8: MLOAD
000008a9: PUSH3 0x461bcd
000008ad: PUSH1 0xe5
000008af: SHL
000008b0: DUP2
000008b1: MSTORE
000008b2: PUSH1 0x04
000008b4: ADD
000008b5: PUSH2 0x0306
000008b8: SWAP1
000008b9: PUSH2 0x0fa5
000008bc: JUMP
000008bd: JUMPDEST
000008be: PUSH1 0x00
000008c0: DUP1
000008c1: SLOAD
000008c2: PUSH1 0xff
000008c4: PUSH1 0xa0
000008c6: SHL
000008c7: NOT
000008c8: AND
000008c9: PUSH1 0x01
000008cb: PUSH1 0xa0
000008cd: SHL
000008ce: OR
000008cf: SWAP1
000008d0: SSTORE
000008d1: JUMP
000008d2: JUMPDEST
000008d3: PUSH1 0x00
000008d5: SLOAD
000008d6: PUSH1 0x01
000008d8: PUSH1 0x01
000008da: PUSH1 0xa0
000008dc: SHL
000008dd: SUB
000008de: AND
000008df: CALLER
000008e0: EQ
000008e1: PUSH2 0x08fc
000008e4: JUMPI
000008e5: PUSH1 0x40
000008e7: MLOAD
000008e8: PUSH3 0x461bcd
000008ec: PUSH1 0xe5
000008ee: SHL
000008ef: DUP2
000008f0: MSTORE
000008f1: PUSH1 0x04
000008f3: ADD
000008f4: PUSH2 0x0306
000008f7: SWAP1
000008f8: PUSH2 0x0fa5
000008fb: JUMP
000008fc: JUMPDEST
000008fd: PUSH1 0x01
000008ff: PUSH1 0x01
00000901: PUSH1 0xa0
00000903: SHL
00000904: SUB
00000905: DUP2
00000906: AND
00000907: PUSH2 0x0961
0000090a: JUMPI
0000090b: PUSH1 0x40
0000090d: MLOAD
0000090e: PUSH3 0x461bcd
00000912: PUSH1 0xe5
00000914: SHL
00000915: DUP2
00000916: MSTORE
00000917: PUSH1 0x20
00000919: PUSH1 0x04
0000091b: DUP3
0000091c: ADD
0000091d: MSTORE
0000091e: PUSH1 0x26
00000920: PUSH1 0x24
00000922: DUP3
00000923: ADD
00000924: MSTORE
00000925: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00000946: PUSH1 0x44
00000948: DUP3
00000949: ADD
0000094a: MSTORE
0000094b: PUSH6 0x646472657373
00000952: PUSH1 0xd0
00000954: SHL
00000955: PUSH1 0x64
00000957: DUP3
00000958: ADD
00000959: MSTORE
0000095a: PUSH1 0x84
0000095c: ADD
0000095d: PUSH2 0x0306
00000960: JUMP
00000961: JUMPDEST
00000962: PUSH2 0x096a
00000965: DUP2
00000966: PUSH2 0x09de
00000969: JUMP
0000096a: JUMPDEST
0000096b: POP
0000096c: JUMP
0000096d: JUMPDEST
0000096e: PUSH1 0x40
00000970: MLOAD
00000971: PUSH1 0x01
00000973: PUSH1 0x01
00000975: PUSH1 0xa0
00000977: SHL
00000978: SUB
00000979: DUP1
0000097a: DUP6
0000097b: AND
0000097c: PUSH1 0x24
0000097e: DUP4
0000097f: ADD
00000980: MSTORE
00000981: DUP4
00000982: AND
00000983: PUSH1 0x44
00000985: DUP3
00000986: ADD
00000987: MSTORE
00000988: PUSH1 0x64
0000098a: DUP2
0000098b: ADD
0000098c: DUP3
0000098d: SWAP1
0000098e: MSTORE
0000098f: PUSH2 0x09d8
00000992: SWAP1
00000993: DUP6
00000994: SWAP1
00000995: PUSH4 0x23b872dd
0000099a: PUSH1 0xe0
0000099c: SHL
0000099d: SWAP1
0000099e: PUSH1 0x84
000009a0: ADD
000009a1: JUMPDEST
000009a2: PUSH1 0x40
000009a4: DUP1
000009a5: MLOAD
000009a6: PUSH1 0x1f
000009a8: NOT
000009a9: DUP2
000009aa: DUP5
000009ab: SUB
000009ac: ADD
000009ad: DUP2
000009ae: MSTORE
000009af: SWAP2
000009b0: SWAP1
000009b1: MSTORE
000009b2: PUSH1 0x20
000009b4: DUP2
000009b5: ADD
000009b6: DUP1
000009b7: MLOAD
000009b8: PUSH1 0x01
000009ba: PUSH1 0x01
000009bc: PUSH1 0xe0
000009be: SHL
000009bf: SUB
000009c0: AND
000009c1: PUSH1 0x01
000009c3: PUSH1 0x01
000009c5: PUSH1 0xe0
000009c7: SHL
000009c8: SUB
000009c9: NOT
000009ca: SWAP1
000009cb: SWAP4
000009cc: AND
000009cd: SWAP3
000009ce: SWAP1
000009cf: SWAP3
000009d0: OR
000009d1: SWAP1
000009d2: SWAP2
000009d3: MSTORE
000009d4: PUSH2 0x0a63
000009d7: JUMP
000009d8: JUMPDEST
000009d9: POP
000009da: POP
000009db: POP
000009dc: POP
000009dd: JUMP
000009de: JUMPDEST
000009df: PUSH1 0x00
000009e1: DUP1
000009e2: SLOAD
000009e3: PUSH1 0x01
000009e5: PUSH1 0x01
000009e7: PUSH1 0xa0
000009e9: SHL
000009ea: SUB
000009eb: DUP4
000009ec: DUP2
000009ed: AND
000009ee: PUSH1 0x01
000009f0: PUSH1 0x01
000009f2: PUSH1 0xa0
000009f4: SHL
000009f5: SUB
000009f6: NOT
000009f7: DUP4
000009f8: AND
000009f9: DUP2
000009fa: OR
000009fb: DUP5
000009fc: SSTORE
000009fd: PUSH1 0x40
000009ff: MLOAD
00000a00: SWAP2
00000a01: SWAP1
00000a02: SWAP3
00000a03: AND
00000a04: SWAP3
00000a05: DUP4
00000a06: SWAP2
00000a07: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000a28: SWAP2
00000a29: SWAP1
00000a2a: LOG3
00000a2b: POP
00000a2c: POP
00000a2d: JUMP
00000a2e: JUMPDEST
00000a2f: PUSH1 0x40
00000a31: MLOAD
00000a32: PUSH1 0x01
00000a34: PUSH1 0x01
00000a36: PUSH1 0xa0
00000a38: SHL
00000a39: SUB
00000a3a: DUP4
00000a3b: AND
00000a3c: PUSH1 0x24
00000a3e: DUP3
00000a3f: ADD
00000a40: MSTORE
00000a41: PUSH1 0x44
00000a43: DUP2
00000a44: ADD
00000a45: DUP3
00000a46: SWAP1
00000a47: MSTORE
00000a48: PUSH2 0x0a5e
00000a4b: SWAP1
00000a4c: DUP5
00000a4d: SWAP1
00000a4e: PUSH4 0xa9059cbb
00000a53: PUSH1 0xe0
00000a55: SHL
00000a56: SWAP1
00000a57: PUSH1 0x64
00000a59: ADD
00000a5a: PUSH2 0x09a1
00000a5d: JUMP
00000a5e: JUMPDEST
00000a5f: POP
00000a60: POP
00000a61: POP
00000a62: JUMP
00000a63: JUMPDEST
00000a64: PUSH1 0x00
00000a66: PUSH2 0x0ab8
00000a69: DUP3
00000a6a: PUSH1 0x40
00000a6c: MLOAD
00000a6d: DUP1
00000a6e: PUSH1 0x40
00000a70: ADD
00000a71: PUSH1 0x40
00000a73: MSTORE
00000a74: DUP1
00000a75: PUSH1 0x20
00000a77: DUP2
00000a78: MSTORE
00000a79: PUSH1 0x20
00000a7b: ADD
00000a7c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00000a9d: DUP2
00000a9e: MSTORE
00000a9f: POP
00000aa0: DUP6
00000aa1: PUSH1 0x01
00000aa3: PUSH1 0x01
00000aa5: PUSH1 0xa0
00000aa7: SHL
00000aa8: SUB
00000aa9: AND
00000aaa: PUSH2 0x0b35
00000aad: SWAP1
00000aae: SWAP3
00000aaf: SWAP2
00000ab0: SWAP1
00000ab1: PUSH4 0xffffffff
00000ab6: AND
00000ab7: JUMP
00000ab8: JUMPDEST
00000ab9: DUP1
00000aba: MLOAD
00000abb: SWAP1
00000abc: SWAP2
00000abd: POP
00000abe: ISZERO
00000abf: PUSH2 0x0a5e
00000ac2: JUMPI
00000ac3: DUP1
00000ac4: DUP1
00000ac5: PUSH1 0x20
00000ac7: ADD
00000ac8: SWAP1
00000ac9: MLOAD
00000aca: DUP2
00000acb: ADD
00000acc: SWAP1
00000acd: PUSH2 0x0ad6
00000ad0: SWAP2
00000ad1: SWAP1
00000ad2: PUSH2 0x0d95
00000ad5: JUMP
00000ad6: JUMPDEST
00000ad7: PUSH2 0x0a5e
00000ada: JUMPI
00000adb: PUSH1 0x40
00000add: MLOAD
00000ade: PUSH3 0x461bcd
00000ae2: PUSH1 0xe5
00000ae4: SHL
00000ae5: DUP2
00000ae6: MSTORE
00000ae7: PUSH1 0x20
00000ae9: PUSH1 0x04
00000aeb: DUP3
00000aec: ADD
00000aed: MSTORE
00000aee: PUSH1 0x2a
00000af0: PUSH1 0x24
00000af2: DUP3
00000af3: ADD
00000af4: MSTORE
00000af5: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00000b16: PUSH1 0x44
00000b18: DUP3
00000b19: ADD
00000b1a: MSTORE
00000b1b: PUSH10 0x1bdd081cdd58d8d95959
00000b26: PUSH1 0xb2
00000b28: SHL
00000b29: PUSH1 0x64
00000b2b: DUP3
00000b2c: ADD
00000b2d: MSTORE
00000b2e: PUSH1 0x84
00000b30: ADD
00000b31: PUSH2 0x0306
00000b34: JUMP
00000b35: JUMPDEST
00000b36: PUSH1 0x60
00000b38: PUSH2 0x0b44
00000b3b: DUP5
00000b3c: DUP5
00000b3d: PUSH1 0x00
00000b3f: DUP6
00000b40: PUSH2 0x0b4e
00000b43: JUMP
00000b44: JUMPDEST
00000b45: SWAP1
00000b46: POP
00000b47: JUMPDEST
00000b48: SWAP4
00000b49: SWAP3
00000b4a: POP
00000b4b: POP
00000b4c: POP
00000b4d: JUMP
00000b4e: JUMPDEST
00000b4f: PUSH1 0x60
00000b51: DUP3
00000b52: SELFBALANCE
00000b53: LT
00000b54: ISZERO
00000b55: PUSH2 0x0baf
00000b58: JUMPI
00000b59: PUSH1 0x40
00000b5b: MLOAD
00000b5c: PUSH3 0x461bcd
00000b60: PUSH1 0xe5
00000b62: SHL
00000b63: DUP2
00000b64: MSTORE
00000b65: PUSH1 0x20
00000b67: PUSH1 0x04
00000b69: DUP3
00000b6a: ADD
00000b6b: MSTORE
00000b6c: PUSH1 0x26
00000b6e: PUSH1 0x24
00000b70: DUP3
00000b71: ADD
00000b72: MSTORE
00000b73: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00000b94: PUSH1 0x44
00000b96: DUP3
00000b97: ADD
00000b98: MSTORE
00000b99: PUSH6 0x1c8818d85b1b
00000ba0: PUSH1 0xd2
00000ba2: SHL
00000ba3: PUSH1 0x64
00000ba5: DUP3
00000ba6: ADD
00000ba7: MSTORE
00000ba8: PUSH1 0x84
00000baa: ADD
00000bab: PUSH2 0x0306
00000bae: JUMP
00000baf: JUMPDEST
00000bb0: DUP5
00000bb1: EXTCODESIZE
00000bb2: PUSH2 0x0bfd
00000bb5: JUMPI
00000bb6: PUSH1 0x40
00000bb8: MLOAD
00000bb9: PUSH3 0x461bcd
00000bbd: PUSH1 0xe5
00000bbf: SHL
00000bc0: DUP2
00000bc1: MSTORE
00000bc2: PUSH1 0x20
00000bc4: PUSH1 0x04
00000bc6: DUP3
00000bc7: ADD
00000bc8: MSTORE
00000bc9: PUSH1 0x1d
00000bcb: PUSH1 0x24
00000bcd: DUP3
00000bce: ADD
00000bcf: MSTORE
00000bd0: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00000bf1: PUSH1 0x44
00000bf3: DUP3
00000bf4: ADD
00000bf5: MSTORE
00000bf6: PUSH1 0x64
00000bf8: ADD
00000bf9: PUSH2 0x0306
00000bfc: JUMP
00000bfd: JUMPDEST
00000bfe: PUSH1 0x00
00000c00: DUP1
00000c01: DUP7
00000c02: PUSH1 0x01
00000c04: PUSH1 0x01
00000c06: PUSH1 0xa0
00000c08: SHL
00000c09: SUB
00000c0a: AND
00000c0b: DUP6
00000c0c: DUP8
00000c0d: PUSH1 0x40
00000c0f: MLOAD
00000c10: PUSH2 0x0c19
00000c13: SWAP2
00000c14: SWAP1
00000c15: PUSH2 0x0e75
00000c18: JUMP
00000c19: JUMPDEST
00000c1a: PUSH1 0x00
00000c1c: PUSH1 0x40
00000c1e: MLOAD
00000c1f: DUP1
00000c20: DUP4
00000c21: SUB
00000c22: DUP2
00000c23: DUP6
00000c24: DUP8
00000c25: GAS
00000c26: CALL
00000c27: SWAP3
00000c28: POP
00000c29: POP
00000c2a: POP
00000c2b: RETURNDATASIZE
00000c2c: DUP1
00000c2d: PUSH1 0x00
00000c2f: DUP2
00000c30: EQ
00000c31: PUSH2 0x0c56
00000c34: JUMPI
00000c35: PUSH1 0x40
00000c37: MLOAD
00000c38: SWAP2
00000c39: POP
00000c3a: PUSH1 0x1f
00000c3c: NOT
00000c3d: PUSH1 0x3f
00000c3f: RETURNDATASIZE
00000c40: ADD
00000c41: AND
00000c42: DUP3
00000c43: ADD
00000c44: PUSH1 0x40
00000c46: MSTORE
00000c47: RETURNDATASIZE
00000c48: DUP3
00000c49: MSTORE
00000c4a: RETURNDATASIZE
00000c4b: PUSH1 0x00
00000c4d: PUSH1 0x20
00000c4f: DUP5
00000c50: ADD
00000c51: RETURNDATACOPY
00000c52: PUSH2 0x0c5b
00000c55: JUMP
00000c56: JUMPDEST
00000c57: PUSH1 0x60
00000c59: SWAP2
00000c5a: POP
00000c5b: JUMPDEST
00000c5c: POP
00000c5d: SWAP2
00000c5e: POP
00000c5f: SWAP2
00000c60: POP
00000c61: PUSH2 0x0c6b
00000c64: DUP3
00000c65: DUP3
00000c66: DUP7
00000c67: PUSH2 0x0c76
00000c6a: JUMP
00000c6b: JUMPDEST
00000c6c: SWAP8
00000c6d: SWAP7
00000c6e: POP
00000c6f: POP
00000c70: POP
00000c71: POP
00000c72: POP
00000c73: POP
00000c74: POP
00000c75: JUMP
00000c76: JUMPDEST
00000c77: PUSH1 0x60
00000c79: DUP4
00000c7a: ISZERO
00000c7b: PUSH2 0x0c85
00000c7e: JUMPI
00000c7f: POP
00000c80: DUP2
00000c81: PUSH2 0x0b47
00000c84: JUMP
00000c85: JUMPDEST
00000c86: DUP3
00000c87: MLOAD
00000c88: ISZERO
00000c89: PUSH2 0x0c95
00000c8c: JUMPI
00000c8d: DUP3
00000c8e: MLOAD
00000c8f: DUP1
00000c90: DUP5
00000c91: PUSH1 0x20
00000c93: ADD
00000c94: REVERT
00000c95: JUMPDEST
00000c96: DUP2
00000c97: PUSH1 0x40
00000c99: MLOAD
00000c9a: PUSH3 0x461bcd
00000c9e: PUSH1 0xe5
00000ca0: SHL
00000ca1: DUP2
00000ca2: MSTORE
00000ca3: PUSH1 0x04
00000ca5: ADD
00000ca6: PUSH2 0x0306
00000ca9: SWAP2
00000caa: SWAP1
00000cab: PUSH2 0x0f92
00000cae: JUMP
00000caf: JUMPDEST
00000cb0: DUP1
00000cb1: CALLDATALOAD
00000cb2: PUSH1 0x01
00000cb4: PUSH1 0x01
00000cb6: PUSH1 0xa0
00000cb8: SHL
00000cb9: SUB
00000cba: DUP2
00000cbb: AND
00000cbc: DUP2
00000cbd: EQ
00000cbe: PUSH2 0x0cc6
00000cc1: JUMPI
00000cc2: PUSH1 0x00
00000cc4: DUP1
00000cc5: REVERT
00000cc6: JUMPDEST
00000cc7: SWAP2
00000cc8: SWAP1
00000cc9: POP
00000cca: JUMP
00000ccb: JUMPDEST
00000ccc: DUP1
00000ccd: CALLDATALOAD
00000cce: PUSH4 0xffffffff
00000cd3: DUP2
00000cd4: AND
00000cd5: DUP2
00000cd6: EQ
00000cd7: PUSH2 0x0cc6
00000cda: JUMPI
00000cdb: PUSH1 0x00
00000cdd: DUP1
00000cde: REVERT
00000cdf: JUMPDEST
00000ce0: PUSH1 0x00
00000ce2: PUSH1 0x20
00000ce4: DUP3
00000ce5: DUP5
00000ce6: SUB
00000ce7: SLT
00000ce8: ISZERO
00000ce9: PUSH2 0x0cf0
00000cec: JUMPI
00000ced: DUP1
00000cee: DUP2
00000cef: REVERT
00000cf0: JUMPDEST
00000cf1: PUSH2 0x0b47
00000cf4: DUP3
00000cf5: PUSH2 0x0caf
00000cf8: JUMP
00000cf9: JUMPDEST
00000cfa: PUSH1 0x00
00000cfc: DUP1
00000cfd: PUSH1 0x00
00000cff: DUP1
00000d00: PUSH1 0x80
00000d02: DUP6
00000d03: DUP8
00000d04: SUB
00000d05: SLT
00000d06: ISZERO
00000d07: PUSH2 0x0d0e
00000d0a: JUMPI
00000d0b: DUP3
00000d0c: DUP4
00000d0d: REVERT
00000d0e: JUMPDEST
00000d0f: PUSH2 0x0d17
00000d12: DUP6
00000d13: PUSH2 0x0caf
00000d16: JUMP
00000d17: JUMPDEST
00000d18: SWAP4
00000d19: POP
00000d1a: PUSH1 0x20
00000d1c: DUP6
00000d1d: ADD
00000d1e: CALLDATALOAD
00000d1f: SWAP3
00000d20: POP
00000d21: PUSH2 0x0d2c
00000d24: PUSH1 0x40
00000d26: DUP7
00000d27: ADD
00000d28: PUSH2 0x0caf
00000d2b: JUMP
00000d2c: JUMPDEST
00000d2d: SWAP2
00000d2e: POP
00000d2f: PUSH1 0x60
00000d31: DUP6
00000d32: ADD
00000d33: CALLDATALOAD
00000d34: PUSH8 0xffffffffffffffff
00000d3d: DUP2
00000d3e: GT
00000d3f: ISZERO
00000d40: PUSH2 0x0d47
00000d43: JUMPI
00000d44: DUP2
00000d45: DUP3
00000d46: REVERT
00000d47: JUMPDEST
00000d48: DUP6
00000d49: ADD
00000d4a: PUSH1 0xc0
00000d4c: DUP2
00000d4d: DUP9
00000d4e: SUB
00000d4f: SLT
00000d50: ISZERO
00000d51: PUSH2 0x0d58
00000d54: JUMPI
00000d55: DUP2
00000d56: DUP3
00000d57: REVERT
00000d58: JUMPDEST
00000d59: SWAP4
00000d5a: SWAP7
00000d5b: SWAP3
00000d5c: SWAP6
00000d5d: POP
00000d5e: SWAP1
00000d5f: SWAP4
00000d60: POP
00000d61: POP
00000d62: JUMP
00000d63: JUMPDEST
00000d64: PUSH1 0x00
00000d66: DUP1
00000d67: PUSH1 0x00
00000d69: PUSH1 0x60
00000d6b: DUP5
00000d6c: DUP7
00000d6d: SUB
00000d6e: SLT
00000d6f: ISZERO
00000d70: PUSH2 0x0d77
00000d73: JUMPI
00000d74: DUP3
00000d75: DUP4
00000d76: REVERT
00000d77: JUMPDEST
00000d78: PUSH2 0x0d80
00000d7b: DUP5
00000d7c: PUSH2 0x0caf
00000d7f: JUMP
00000d80: JUMPDEST
00000d81: SWAP6
00000d82: PUSH1 0x20
00000d84: DUP6
00000d85: ADD
00000d86: CALLDATALOAD
00000d87: SWAP6
00000d88: POP
00000d89: PUSH1 0x40
00000d8b: SWAP1
00000d8c: SWAP5
00000d8d: ADD
00000d8e: CALLDATALOAD
00000d8f: SWAP4
00000d90: SWAP3
00000d91: POP
00000d92: POP
00000d93: POP
00000d94: JUMP
00000d95: JUMPDEST
00000d96: PUSH1 0x00
00000d98: PUSH1 0x20
00000d9a: DUP3
00000d9b: DUP5
00000d9c: SUB
00000d9d: SLT
00000d9e: ISZERO
00000d9f: PUSH2 0x0da6
00000da2: JUMPI
00000da3: DUP1
00000da4: DUP2
00000da5: REVERT
00000da6: JUMPDEST
00000da7: DUP2
00000da8: MLOAD
00000da9: DUP1
00000daa: ISZERO
00000dab: ISZERO
00000dac: DUP2
00000dad: EQ
00000dae: PUSH2 0x0b47
00000db1: JUMPI
00000db2: DUP2
00000db3: DUP3
00000db4: REVERT
00000db5: JUMPDEST
00000db6: PUSH1 0x00
00000db8: PUSH1 0x20
00000dba: DUP3
00000dbb: DUP5
00000dbc: SUB
00000dbd: SLT
00000dbe: ISZERO
00000dbf: PUSH2 0x0dc6
00000dc2: JUMPI
00000dc3: DUP1
00000dc4: DUP2
00000dc5: REVERT
00000dc6: JUMPDEST
00000dc7: PUSH2 0x0b47
00000dca: DUP3
00000dcb: PUSH2 0x0ccb
00000dce: JUMP
00000dcf: JUMPDEST
00000dd0: DUP2
00000dd1: DUP4
00000dd2: MSTORE
00000dd3: PUSH1 0x00
00000dd5: PUSH1 0x20
00000dd7: DUP1
00000dd8: DUP6
00000dd9: ADD
00000dda: SWAP5
00000ddb: POP
00000ddc: DUP3
00000ddd: DUP3
00000dde: JUMPDEST
00000ddf: DUP6
00000de0: DUP2
00000de1: LT
00000de2: ISZERO
00000de3: PUSH2 0x0e0a
00000de6: JUMPI
00000de7: PUSH1 0x01
00000de9: PUSH1 0x01
00000deb: PUSH1 0xa0
00000ded: SHL
00000dee: SUB
00000def: PUSH2 0x0df7
00000df2: DUP4
00000df3: PUSH2 0x0caf
00000df6: JUMP
00000df7: JUMPDEST
00000df8: AND
00000df9: DUP8
00000dfa: MSTORE
00000dfb: SWAP6
00000dfc: DUP3
00000dfd: ADD
00000dfe: SWAP6
00000dff: SWAP1
00000e00: DUP3
00000e01: ADD
00000e02: SWAP1
00000e03: PUSH1 0x01
00000e05: ADD
00000e06: PUSH2 0x0dde
00000e09: JUMP
00000e0a: JUMPDEST
00000e0b: POP
00000e0c: SWAP5
00000e0d: SWAP6
00000e0e: SWAP5
00000e0f: POP
00000e10: POP
00000e11: POP
00000e12: POP
00000e13: POP
00000e14: JUMP
00000e15: JUMPDEST
00000e16: DUP2
00000e17: DUP4
00000e18: MSTORE
00000e19: PUSH1 0x00
00000e1b: PUSH1 0x01
00000e1d: PUSH1 0x01
00000e1f: PUSH1 0xfb
00000e21: SHL
00000e22: SUB
00000e23: DUP4
00000e24: GT
00000e25: ISZERO
00000e26: PUSH2 0x0e2d
00000e29: JUMPI
00000e2a: DUP1
00000e2b: DUP2
00000e2c: REVERT
00000e2d: JUMPDEST
00000e2e: DUP3
00000e2f: PUSH1 0x05
00000e31: SHL
00000e32: DUP1
00000e33: DUP4
00000e34: PUSH1 0x20
00000e36: DUP8
00000e37: ADD
00000e38: CALLDATACOPY
00000e39: SWAP4
00000e3a: SWAP1
00000e3b: SWAP4
00000e3c: ADD
00000e3d: PUSH1 0x20
00000e3f: ADD
00000e40: SWAP3
00000e41: DUP4
00000e42: MSTORE
00000e43: POP
00000e44: SWAP1
00000e45: SWAP2
00000e46: SWAP1
00000e47: POP
00000e48: JUMP
00000e49: JUMPDEST
00000e4a: PUSH1 0x00
00000e4c: DUP2
00000e4d: MLOAD
00000e4e: DUP1
00000e4f: DUP5
00000e50: MSTORE
00000e51: PUSH2 0x0e61
00000e54: DUP2
00000e55: PUSH1 0x20
00000e57: DUP7
00000e58: ADD
00000e59: PUSH1 0x20
00000e5b: DUP7
00000e5c: ADD
00000e5d: PUSH2 0x1029
00000e60: JUMP
00000e61: JUMPDEST
00000e62: PUSH1 0x1f
00000e64: ADD
00000e65: PUSH1 0x1f
00000e67: NOT
00000e68: AND
00000e69: SWAP3
00000e6a: SWAP1
00000e6b: SWAP3
00000e6c: ADD
00000e6d: PUSH1 0x20
00000e6f: ADD
00000e70: SWAP3
00000e71: SWAP2
00000e72: POP
00000e73: POP
00000e74: JUMP
00000e75: JUMPDEST
00000e76: PUSH1 0x00
00000e78: DUP3
00000e79: MLOAD
00000e7a: PUSH2 0x0e87
00000e7d: DUP2
00000e7e: DUP5
00000e7f: PUSH1 0x20
00000e81: DUP8
00000e82: ADD
00000e83: PUSH2 0x1029
00000e86: JUMP
00000e87: JUMPDEST
00000e88: SWAP2
00000e89: SWAP1
00000e8a: SWAP2
00000e8b: ADD
00000e8c: SWAP3
00000e8d: SWAP2
00000e8e: POP
00000e8f: POP
00000e90: JUMP
00000e91: JUMPDEST
00000e92: PUSH1 0x40
00000e94: DUP2
00000e95: MSTORE
00000e96: PUSH1 0x00
00000e98: PUSH2 0x0ea4
00000e9b: PUSH1 0x40
00000e9d: DUP4
00000e9e: ADD
00000e9f: DUP6
00000ea0: PUSH2 0x0e49
00000ea3: JUMP
00000ea4: JUMPDEST
00000ea5: PUSH1 0x20
00000ea7: DUP4
00000ea8: DUP3
00000ea9: SUB
00000eaa: DUP2
00000eab: DUP6
00000eac: ADD
00000ead: MSTORE
00000eae: PUSH1 0xc0
00000eb0: DUP3
00000eb1: ADD
00000eb2: DUP6
00000eb3: CALLDATALOAD
00000eb4: DUP4
00000eb5: MSTORE
00000eb6: PUSH4 0xffffffff
00000ebb: PUSH2 0x0ec5
00000ebe: DUP4
00000ebf: DUP9
00000ec0: ADD
00000ec1: PUSH2 0x0ccb
00000ec4: JUMP
00000ec5: JUMPDEST
00000ec6: AND
00000ec7: DUP3
00000ec8: DUP5
00000ec9: ADD
00000eca: MSTORE
00000ecb: PUSH2 0x0ed7
00000ece: PUSH1 0x40
00000ed0: DUP8
00000ed1: ADD
00000ed2: DUP8
00000ed3: PUSH2 0x0fda
00000ed6: JUMP
00000ed7: JUMPDEST
00000ed8: PUSH1 0xc0
00000eda: PUSH1 0x40
00000edc: DUP7
00000edd: ADD
00000ede: MSTORE
00000edf: SWAP2
00000ee0: DUP3
00000ee1: SWAP1
00000ee2: MSTORE
00000ee3: SWAP1
00000ee4: DUP5
00000ee5: SWAP1
00000ee6: PUSH1 0xe0
00000ee8: DUP6
00000ee9: ADD
00000eea: JUMPDEST
00000eeb: DUP2
00000eec: DUP4
00000eed: LT
00000eee: ISZERO
00000eef: PUSH2 0x0f18
00000ef2: JUMPI
00000ef3: DUP4
00000ef4: CALLDATALOAD
00000ef5: PUSH1 0xff
00000ef7: DUP2
00000ef8: AND
00000ef9: DUP1
00000efa: DUP3
00000efb: EQ
00000efc: PUSH2 0x0f03
00000eff: JUMPI
00000f00: DUP9
00000f01: DUP10
00000f02: REVERT
00000f03: JUMPDEST
00000f04: DUP3
00000f05: MSTORE
00000f06: POP
00000f07: SWAP3
00000f08: DUP5
00000f09: ADD
00000f0a: SWAP3
00000f0b: PUSH1 0x01
00000f0d: SWAP3
00000f0e: SWAP1
00000f0f: SWAP3
00000f10: ADD
00000f11: SWAP2
00000f12: DUP5
00000f13: ADD
00000f14: PUSH2 0x0eea
00000f17: JUMP
00000f18: JUMPDEST
00000f19: PUSH2 0x0f25
00000f1c: PUSH1 0x60
00000f1e: DUP11
00000f1f: ADD
00000f20: DUP11
00000f21: PUSH2 0x0fda
00000f24: JUMP
00000f25: JUMPDEST
00000f26: SWAP6
00000f27: POP
00000f28: SWAP4
00000f29: POP
00000f2a: DUP6
00000f2b: DUP2
00000f2c: SUB
00000f2d: PUSH1 0x60
00000f2f: DUP8
00000f30: ADD
00000f31: MSTORE
00000f32: PUSH2 0x0f3c
00000f35: DUP2
00000f36: DUP7
00000f37: DUP7
00000f38: PUSH2 0x0e15
00000f3b: JUMP
00000f3c: JUMPDEST
00000f3d: SWAP5
00000f3e: POP
00000f3f: POP
00000f40: POP
00000f41: POP
00000f42: POP
00000f43: PUSH2 0x0f4f
00000f46: PUSH1 0x80
00000f48: DUP7
00000f49: ADD
00000f4a: DUP7
00000f4b: PUSH2 0x0fda
00000f4e: JUMP
00000f4f: JUMPDEST
00000f50: DUP4
00000f51: DUP4
00000f52: SUB
00000f53: PUSH1 0x80
00000f55: DUP6
00000f56: ADD
00000f57: MSTORE
00000f58: PUSH2 0x0f62
00000f5b: DUP4
00000f5c: DUP3
00000f5d: DUP5
00000f5e: PUSH2 0x0e15
00000f61: JUMP
00000f62: JUMPDEST
00000f63: SWAP3
00000f64: POP
00000f65: POP
00000f66: POP
00000f67: PUSH2 0x0f73
00000f6a: PUSH1 0xa0
00000f6c: DUP7
00000f6d: ADD
00000f6e: DUP7
00000f6f: PUSH2 0x0fda
00000f72: JUMP
00000f73: JUMPDEST
00000f74: DUP4
00000f75: DUP4
00000f76: SUB
00000f77: PUSH1 0xa0
00000f79: DUP6
00000f7a: ADD
00000f7b: MSTORE
00000f7c: PUSH2 0x0f86
00000f7f: DUP4
00000f80: DUP3
00000f81: DUP5
00000f82: PUSH2 0x0dcf
00000f85: JUMP
00000f86: JUMPDEST
00000f87: SWAP9
00000f88: SWAP8
00000f89: POP
00000f8a: POP
00000f8b: POP
00000f8c: POP
00000f8d: POP
00000f8e: POP
00000f8f: POP
00000f90: POP
00000f91: JUMP
00000f92: JUMPDEST
00000f93: PUSH1 0x20
00000f95: DUP2
00000f96: MSTORE
00000f97: PUSH1 0x00
00000f99: PUSH2 0x0b47
00000f9c: PUSH1 0x20
00000f9e: DUP4
00000f9f: ADD
00000fa0: DUP5
00000fa1: PUSH2 0x0e49
00000fa4: JUMP
00000fa5: JUMPDEST
00000fa6: PUSH1 0x20
00000fa8: DUP1
00000fa9: DUP3
00000faa: MSTORE
00000fab: DUP2
00000fac: DUP2
00000fad: ADD
00000fae: MSTORE
00000faf: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000fd0: PUSH1 0x40
00000fd2: DUP3
00000fd3: ADD
00000fd4: MSTORE
00000fd5: PUSH1 0x60
00000fd7: ADD
00000fd8: SWAP1
00000fd9: JUMP
00000fda: JUMPDEST
00000fdb: PUSH1 0x00
00000fdd: DUP1
00000fde: DUP4
00000fdf: CALLDATALOAD
00000fe0: PUSH1 0x1e
00000fe2: NOT
00000fe3: DUP5
00000fe4: CALLDATASIZE
00000fe5: SUB
00000fe6: ADD
00000fe7: DUP2
00000fe8: SLT
00000fe9: PUSH2 0x0ff0
00000fec: JUMPI
00000fed: DUP3
00000fee: DUP4
00000fef: REVERT
00000ff0: JUMPDEST
00000ff1: DUP4
00000ff2: ADD
00000ff3: PUSH1 0x20
00000ff5: DUP2
00000ff6: ADD
00000ff7: SWAP3
00000ff8: POP
00000ff9: CALLDATALOAD
00000ffa: SWAP1
00000ffb: POP
00000ffc: PUSH8 0xffffffffffffffff
00001005: DUP2
00001006: GT
00001007: ISZERO
00001008: PUSH2 0x1010
0000100b: JUMPI
0000100c: PUSH1 0x00
0000100e: DUP1
0000100f: REVERT
00001010: JUMPDEST
00001011: DUP1
00001012: PUSH1 0x05
00001014: SHL
00001015: CALLDATASIZE
00001016: SUB
00001017: DUP4
00001018: SGT
00001019: ISZERO
0000101a: PUSH2 0x1022
0000101d: JUMPI
0000101e: PUSH1 0x00
00001020: DUP1
00001021: REVERT
00001022: JUMPDEST
00001023: SWAP3
00001024: POP
00001025: SWAP3
00001026: SWAP1
00001027: POP
00001028: JUMP
00001029: JUMPDEST
0000102a: PUSH1 0x00
0000102c: JUMPDEST
0000102d: DUP4
0000102e: DUP2
0000102f: LT
00001030: ISZERO
00001031: PUSH2 0x1044
00001034: JUMPI
00001035: DUP2
00001036: DUP2
00001037: ADD
00001038: MLOAD
00001039: DUP4
0000103a: DUP3
0000103b: ADD
0000103c: MSTORE
0000103d: PUSH1 0x20
0000103f: ADD
00001040: PUSH2 0x102c
00001043: JUMP
00001044: JUMPDEST
00001045: DUP4
00001046: DUP2
00001047: GT
00001048: ISZERO
00001049: PUSH2 0x09d8
0000104c: JUMPI
0000104d: POP
0000104e: POP
0000104f: PUSH1 0x00
00001051: SWAP2
00001052: ADD
00001053: MSTORE
00001054: JUMP
00001055: INVALID
00001056: LOG2
00001057: PUSH5 0x6970667358
0000105d: UNKNOWN(0x22)
0000105e: SLT
0000105f: KECCAK256
00001060: LOG3
00001061: UNKNOWN(0xC2)
00001062: PUSH26 0x9ca7e53cbe1227c226f74bf528510c616a926e764995d5aa86c8
0000107d: PUSH6 0x36c264736f6c
00001084: PUSH4 0x43000804
00001089: STOP
0000108a: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical auth codex Signature threshold can round down to zero, allowing proofs with no signatures on small validator sets 90 no
view
evidence_json
{
    "evidence": "`acceptanceTreshold` is computed using integer truncation and no minimum, and signatures are only counted when `r[i] != 0`, so when the threshold computes to 0, empty signatures satisfy `witnessCount >= acceptanceTreshold`.",
    "locations": [
        "contracts/contracts/CENNZnetBridge.sol:75",
        "contracts/contracts/CENNZnetBridge.sol:81",
        "contracts/contracts/CENNZnetBridge.sol:92",
        "contracts/contracts/ERC20Peg.sol:62",
        "contracts/contracts/ERC20Peg.sol:64"
    ],
    "recommendation": "Compute the threshold using a ceiling (e.g., `(len * thresholdPercent + 99) / 100`) and enforce a minimum of 1; optionally disallow `thresholdPercent == 0`.",
    "exploit_scenario": "1) If the active validator set size is 1 (or `thresholdPercent` is configured so `_validators.length * thresholdPercent / 100 == 0`), build a `CENNZnetEventProof` that uses the known validator address, an unused `eventId`, and `v/r/s` arrays of length 1 with `r[0]=0` to omit the signature. 2) Call `ERC20Peg.withdraw` for any `tokenType` and `amount`, sending the verification fee if required. 3) `verifyMessage` computes `acceptanceTreshold=0`, skips signature checks, marks the `eventId` used, and `ERC20Peg` transfers assets to you. Repeat with fresh `eventId`s to drain balances. Profit: up to the full ETH and ERC20 balances held by `ERC20Peg` (order of magnitude = contract TVL), plus any ETH fees in `CENNZnetBridge` if abusing `setValidators` rewards."
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x31d6de3bad2b6b862200aa417b34d72b7b3c3f5dcd95542442be8982d924c70d
call_targets: 0x76bac85e1e82cd677faa2b3f00c4a2626c4c6e32
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x31d6de3bad2b6b862200aa417b34d72b7b3c3f5dcd95542442be8982d924c70d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x76bac85e1e82cd677faa2b3f00c4a2626c4c6e32"
    ],
    "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": "0xc8c76243",
            "selector": "0xc8c76243",
            "calldata_variants": [
                "0xc8c76243",
                "0xc8c762430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe5703512",
            "selector": "0xe5703512",
            "calldata_variants": [
                "0xe5703512",
                "0xe57035120000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe78cea92",
            "selector": "0xe78cea92",
            "calldata_variants": [
                "0xe78cea92",
                "0xe78cea920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf275c0ce",
            "selector": "0xf275c0ce",
            "calldata_variants": [
                "0xf275c0ce",
                "0xf275c0ce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7e771dc0",
            "selector": "0x7e771dc0",
            "calldata_variants": [
                "0x7e771dc0",
                "0x7e771dc00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8324e6d7",
            "selector": "0x8324e6d7",
            "calldata_variants": [
                "0x8324e6d7",
                "0x8324e6d70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1785,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1850,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3110,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x31d6de3bad2b6b862200aa417b34d72b7b3c3f5dcd95542442be8982d924c70d
call_targets: 0x76bac85e1e82cd677faa2b3f00c4a2626c4c6e32
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x31d6de3bad2b6b862200aa417b34d72b7b3c3f5dcd95542442be8982d924c70d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x76bac85e1e82cd677faa2b3f00c4a2626c4c6e32"
    ],
    "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": "0xc8c76243",
            "selector": "0xc8c76243",
            "calldata_variants": [
                "0xc8c76243",
                "0xc8c762430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe5703512",
            "selector": "0xe5703512",
            "calldata_variants": [
                "0xe5703512",
                "0xe57035120000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe78cea92",
            "selector": "0xe78cea92",
            "calldata_variants": [
                "0xe78cea92",
                "0xe78cea920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf275c0ce",
            "selector": "0xf275c0ce",
            "calldata_variants": [
                "0xf275c0ce",
                "0xf275c0ce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7e771dc0",
            "selector": "0x7e771dc0",
            "calldata_variants": [
                "0x7e771dc0",
                "0x7e771dc00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8324e6d7",
            "selector": "0x8324e6d7",
            "calldata_variants": [
                "0x8324e6d7",
                "0x8324e6d70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1785,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1850,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3110,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}