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

Analysis Run

019ba8f8-3f3e-728e-8b88-d1ef3d328f79

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 10, 2026 5:33 PM
Review Summary

What survived the funnel

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

Confirmed
2
Validated
2
Source
Verified
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 2 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
33704 artifact.fetch complete 1 / 3 3 months ago
33705 proxy.resolve complete 1 / 3 3 months ago
33706 tool.cast_disasm complete 1 / 3 3 months ago
33707 analysis.bundle complete 1 / 3 3 months ago
33708 capability.graph complete 1 / 3 3 months ago
33709 detector.run complete 1 / 3 3 months ago
33710 validation.fork complete 1 / 3 3 months ago
33817 report.consolidate complete 1 / 6 3 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
3
No findings?
no
Summary
Found three exploitable issues: ownership math truncates to zero for multi‑investor scenarios, payouts ignore failed sends and can strand funds, and unbounded loops allow gas‑limit DoS of deposits/dividends.
View stdout
{"no_findings":false,"summary":"Found three exploitable issues: ownership math truncates to zero for multi‑investor scenarios, payouts ignore failed sends and can strand funds, and unbounded loops allow gas‑limit DoS of deposits/dividends.","findings":[{"severity":"high","category":"math","title":"Integer division order zeroes ownership for most investors, breaking dividends","exploit_scenario":"After a second investor deposits, each investor’s `percentage_ownership` becomes 0 because `amount / totaldeposited` truncates to 0 for any `amount < totaldeposited`. Subsequent dividends compute `PRE_amount * 0 / 1e10`, so payouts are 0 and dividend funds remain stuck in the contract with no withdrawal path.","recommendation":"Compute ownership as `amount * 1e10 / totaldeposited` (or use a fixed‑point library) and recalculate all investors’ percentages consistently after any deposit; add invariant tests to ensure the sum is ~1e10 and non‑zero for holders.","evidence":"`percentage_ownership = amount / totaldeposited * 10000000000` (division before scaling)","locations":["contracts/Contract.sol:127","contracts/Contract.sol:131","contracts/Contract.sol:137","contracts/Contract.sol:184"]},{"severity":"medium","category":"other","title":"Unchecked `send` return values lead to silent payout failures and stuck funds","exploit_scenario":"If an investor is a contract that rejects ETH (or owner is a contract with reverting fallback), `send` returns false. The code still updates `totalpaidout/totaldividends` and never retries, leaving ETH trapped in the contract while accounting reports it paid. Those stuck funds are also not recoverable via `Emergency`, which relies on the internal `balance` tracker.","recommendation":"Check `send` return values and either revert on failure or record owed balances for later withdrawal (pull‑payments). Consider using `call{value:...}` with success checks and update accounting only after successful transfers. For emergency recovery, prefer `address(this).balance` or explicitly track all sources of funds.","evidence":"External payouts use `send` without checking the return value and accounting is updated regardless of success.","locations":["contracts/Contract.sol:82","contracts/Contract.sol:91","contracts/Contract.sol:142","contracts/Contract.sol:162"]},{"severity":"medium","category":"other","title":"Unbounded investor loops allow gas‑limit DoS of deposits and dividends","exploit_scenario":"An attacker can create many investor entries (multiple addresses with ≥2 ETH). Any dividend (<2 ETH) triggers a loop over all investors and external sends; new investor deposits also recompute percentages for all investors. Once the list grows large, these operations exceed block gas limits, preventing deposits and dividend distribution.","recommendation":"Avoid iterating over all investors in a single transaction. Switch to a pull‑payment model or batched payouts with pagination, and remove full‑array recalculation on every deposit.","evidence":"Loops over `investors` on every dividend distribution and new investor entry without bounds.","locations":["contracts/Contract.sol:88","contracts/Contract.sol:130","contracts/Contract.sol:111"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-ssqy0kjy
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: xhigh
reasoning summaries: auto
session id: 019ba8fc-7268-7e81-99f3-6d15f48e3efc
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

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 and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc ls in /tmp/codex-ssqy0kjy succeeded in 7ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-ssqy0kjy succeeded in 9ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/Contract.sol
================================================================================
//***********************************EthVentures v4****************************************************************************
//
// TIRED OF POINTLESS PONZI SCHEMES? Then join EthVentures the first decentralized company!
//
//
// EthVentures is the first decentralized ethereum based company, with shareholder function, dividends, and more...!
//
//
// How it works: You deposit minimum 2 Ether and no maximum deposit, and you will become a shareholder, proportional to how much you deposited. You will own a % of the income of this dapp proportional to how much you deposited.
// Ex: There is 98 Eth deposited, you deposit 2 Eth, new balance becomes 100 Eth, then you will own 2% of the profits!
//
//
//
// Dividends: Every deposit under 2 Eth is considered a dividend and is distributed between shareholders automatically. Even if the profit is bigger than 2 Eth, it will be distributed in 1-2 Ether packages, automatically.

thinking
**Reviewing vulnerabilities and accounting issues**

I'm analyzing various vulnerabilities like dividend calculation bugs due to integer division, unchecked send return values causing silent failures, unbounded loops leading to potential DoS, and inconsistent internal accounting with stuck funds. These issues mainly cause severe accounting mismatches and some medium-level denial of service risks. I'm also considering access controls, arithmetic safety, and overall contract logic to prepare a detailed vulnerability summary with severity, categories, and recommendations.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-ssqy0kjy succeeded in 29ms:
     1	//***********************************EthVentures v4****************************************************************************
     2	//
     3	// TIRED OF POINTLESS PONZI SCHEMES? Then join EthVentures the first decentralized company!
     4	//
     5	//
     6	// EthVentures is the first decentralized ethereum based company, with shareholder function, dividends, and more...!
     7	//
     8	//
     9	// How it works: You deposit minimum 2 Ether and no maximum deposit, and you will become a shareholder, proportional to how much you deposited. You will own a % of the income of this dapp proportional to how much you deposited.
    10	// Ex: There is 98 Eth deposited, you deposit 2 Eth, new balance becomes 100 Eth, then you will own 2% of the profits!
    11	//
    12	//
    13	//
    14	// Dividends: Every deposit under 2 Eth is considered a dividend and is distributed between shareholders automatically. Even if the profit is bigger than 2 Eth, it will be distributed in 1-2 Ether packages, automatically.
    15	// Ex: We generate 100 Eth profit daily, then it will be distributed in 50 times in 2 ether packages, then those packages get shared between shareholders. With the example above if you hold 2%, then you will earn 50 times 0.04 Eth, which is 2 Eth profit in total.
    16	//
    17	//
    18	// Profit: This contract itself is not generating any profit, it's just a ledger to keep record of investors, and pays out dividends automatically.There will be other contracts linked to this, that will send the profits here. EthVentures is just the core of this business, there will be other contracts built on it.
    19	// Ex: A dice game built on this contract that generates say 10 Eth daily, will send the fees directly here
    20	// Ex: A doubler game built on this contract that generates 50 Eth daily, that will send all fees here

thinking
**Summarizing audit findings and crafting JSON**

I'll organize the findings into three main issues: integer division zeroing ownership shares that locks dividends, unchecked send calls causing silent failures and stuck funds, and unbounded loops leading to gas-limit denial of service. I’ll carefully assign severities, categories, evidence lines, exploit scenarios, and recommendations, then format everything into the required JSON structure for the user.
codex
{"no_findings":false,"summary":"Found three exploitable issues: ownership math truncates to zero for multi‑investor scenarios, payouts ignore failed sends and can strand funds, and unbounded loops allow gas‑limit DoS of deposits/dividends.","findings":[{"severity":"high","category":"math","title":"Integer division order zeroes ownership for most investors, breaking dividends","exploit_scenario":"After a second investor deposits, each investor’s `percentage_ownership` becomes 0 because `amount / totaldeposited` truncates to 0 for any `amount < totaldeposited`. Subsequent dividends compute `PRE_amount * 0 / 1e10`, so payouts are 0 and dividend funds remain stuck in the contract with no withdrawal path.","recommendation":"Compute ownership as `amount * 1e10 / totaldeposited` (or use a fixed‑point library) and recalculate all investors’ percentages consistently after any deposit; add invariant tests to ensure the sum is ~1e10 and non‑zero for holders.","evidence":"`percentage_ownership = amount / totaldeposited * 10000000000` (division before scaling)","locations":["contracts/Contract.sol:127","contracts/Contract.sol:131","contracts/Contract.sol:137","contracts/Contract.sol:184"]},{"severity":"medium","category":"other","title":"Unchecked `send` return values lead to silent payout failures and stuck funds","exploit_scenario":"If an investor is a contract that rejects ETH (or owner is a contract with reverting fallback), `send` returns false. The code still updates `totalpaidout/totaldividends` and never retries, leaving ETH trapped in the contract while accounting reports it paid. Those stuck funds are also not recoverable via `Emergency`, which relies on the internal `balance` tracker.","recommendation":"Check `send` return values and either revert on failure or record owed balances for later withdrawal (pull‑payments). Consider using `call{value:...}` with success checks and update accounting only after successful transfers. For emergency recovery, prefer `address(this).balance` or explicitly track all sources of funds.","evidence":"External payouts use `send` without checking the return value and accounting is updated regardless of success.","locations":["contracts/Contract.sol:82","contracts/Contract.sol:91","contracts/Contract.sol:142","contracts/Contract.sol:162"]},{"severity":"medium","category":"other","title":"Unbounded investor loops allow gas‑limit DoS of deposits and dividends","exploit_scenario":"An attacker can create many investor entries (multiple addresses with ≥2 ETH). Any dividend (<2 ETH) triggers a loop over all investors and external sends; new investor deposits also recompute percentages for all investors. Once the list grows large, these operations exceed block gas limits, preventing deposits and dividend distribution.","recommendation":"Avoid iterating over all investors in a single transaction. Switch to a pull‑payment model or batched payouts with pagination, and remove full‑array recalculation on every deposit.","evidence":"Loops over `investors` on every dividend distribution and new investor entry without bounds.","locations":["contracts/Contract.sol:88","contracts/Contract.sol:130","contracts/Contract.sol:111"]}]}
tokens used
20,222
Metadata
{
    "codex": {
        "ran_at": "2026-01-10T17:39:54.742100+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Found three exploitable issues: ownership math truncates to zero for multi\u2011investor scenarios, payouts ignore failed sends and can strand funds, and unbounded loops allow gas\u2011limit DoS of deposits/dividends.",
    "raw_final": {
        "summary": "Found three exploitable issues: ownership math truncates to zero for multi\u2011investor scenarios, payouts ignore failed sends and can strand funds, and unbounded loops allow gas\u2011limit DoS of deposits/dividends.",
        "findings": [
            {
                "title": "Integer division order zeroes ownership for most investors, breaking dividends",
                "category": "math",
                "evidence": "`percentage_ownership = amount / totaldeposited * 10000000000` (division before scaling)",
                "severity": "high",
                "locations": [
                    "contracts/Contract.sol:127",
                    "contracts/Contract.sol:131",
                    "contracts/Contract.sol:137",
                    "contracts/Contract.sol:184"
                ],
                "recommendation": "Compute ownership as `amount * 1e10 / totaldeposited` (or use a fixed\u2011point library) and recalculate all investors\u2019 percentages consistently after any deposit; add invariant tests to ensure the sum is ~1e10 and non\u2011zero for holders.",
                "exploit_scenario": "After a second investor deposits, each investor\u2019s `percentage_ownership` becomes 0 because `amount / totaldeposited` truncates to 0 for any `amount < totaldeposited`. Subsequent dividends compute `PRE_amount * 0 / 1e10`, so payouts are 0 and dividend funds remain stuck in the contract with no withdrawal path."
            },
            {
                "title": "Unchecked `send` return values lead to silent payout failures and stuck funds",
                "category": "other",
                "evidence": "External payouts use `send` without checking the return value and accounting is updated regardless of success.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:82",
                    "contracts/Contract.sol:91",
                    "contracts/Contract.sol:142",
                    "contracts/Contract.sol:162"
                ],
                "recommendation": "Check `send` return values and either revert on failure or record owed balances for later withdrawal (pull\u2011payments). Consider using `call{value:...}` with success checks and update accounting only after successful transfers. For emergency recovery, prefer `address(this).balance` or explicitly track all sources of funds.",
                "exploit_scenario": "If an investor is a contract that rejects ETH (or owner is a contract with reverting fallback), `send` returns false. The code still updates `totalpaidout/totaldividends` and never retries, leaving ETH trapped in the contract while accounting reports it paid. Those stuck funds are also not recoverable via `Emergency`, which relies on the internal `balance` tracker."
            },
            {
                "title": "Unbounded investor loops allow gas\u2011limit DoS of deposits and dividends",
                "category": "other",
                "evidence": "Loops over `investors` on every dividend distribution and new investor entry without bounds.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:88",
                    "contracts/Contract.sol:130",
                    "contracts/Contract.sol:111"
                ],
                "recommendation": "Avoid iterating over all investors in a single transaction. Switch to a pull\u2011payment model or batched payouts with pagination, and remove full\u2011array recalculation on every deposit.",
                "exploit_scenario": "An attacker can create many investor entries (multiple addresses with \u22652 ETH). Any dividend (<2 ETH) triggers a loop over all investors and external sends; new investor deposits also recompute percentages for all investors. Once the list grows large, these operations exceed block gas limits, preventing deposits and dividend distribution."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
0
Total opcodes
2430
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00b9
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x1097e579
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x00c4
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x112c7075
00000025: EQ
00000026: PUSH2 0x01d4
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x3edd90e7
00000030: EQ
00000031: PUSH2 0x02b9
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x3feb5f2b
0000003b: EQ
0000003c: PUSH2 0x0372
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x476e04c7
00000046: EQ
00000047: PUSH2 0x03d4
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x4cd11943
00000051: EQ
00000052: PUSH2 0x0480
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x6b1781b6
0000005c: EQ
0000005d: PUSH2 0x04e5
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x6c3772fd
00000067: EQ
00000068: PUSH2 0x05d1
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x8da5cb5b
00000072: EQ
00000073: PUSH2 0x05da
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x9522ca89
0000007d: EQ
0000007e: PUSH2 0x05ec
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x9af1d35a
00000088: EQ
00000089: PUSH2 0x064a
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xa6b165ee
00000093: EQ
00000094: PUSH2 0x0653
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xb69ef8a8
0000009e: EQ
0000009f: PUSH2 0x065c
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xbda393d3
000000a9: EQ
000000aa: PUSH2 0x0665
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xd7315d60
000000b4: EQ
000000b5: PUSH2 0x066e
000000b8: JUMPI
000000b9: JUMPDEST
000000ba: PUSH2 0x0677
000000bd: PUSH2 0x0679
000000c0: PUSH2 0x00c8
000000c3: JUMP
000000c4: JUMPDEST
000000c5: PUSH2 0x0677
000000c8: JUMPDEST
000000c9: PUSH1 0x00
000000cb: PUSH1 0x00
000000cd: PUSH1 0x00
000000cf: PUSH1 0x00
000000d1: PUSH1 0x00
000000d3: PUSH1 0x00
000000d5: PUSH1 0x00
000000d7: PUSH1 0x00
000000d9: PUSH8 0x1bc16d674ec80000
000000e2: CALLVALUE
000000e3: LT
000000e4: ISZERO
000000e5: PUSH2 0x0774
000000e8: JUMPI
000000e9: PUSH1 0x08
000000eb: SLOAD
000000ec: PUSH1 0x40
000000ee: MLOAD
000000ef: CALLVALUE
000000f0: SWAP9
000000f1: POP
000000f2: PUSH1 0x01
000000f4: PUSH1 0xa0
000000f6: PUSH1 0x02
000000f8: EXP
000000f9: SUB
000000fa: SWAP1
000000fb: SWAP2
000000fc: AND
000000fd: SWAP1
000000fe: DUP3
000000ff: SWAP1
00000100: PUSH1 0x64
00000102: DUP11
00000103: DIV
00000104: SWAP1
00000105: DUP3
00000106: DUP2
00000107: DUP2
00000108: DUP2
00000109: DUP6
0000010a: DUP9
0000010b: DUP4
0000010c: CALL
0000010d: POP
0000010e: POP
0000010f: PUSH1 0x05
00000111: DUP1
00000112: SLOAD
00000113: DUP3
00000114: ADD
00000115: SWAP1
00000116: SSTORE
00000117: SWAP1
00000118: SLOAD
00000119: SWAP9
0000011a: SUB
0000011b: SWAP8
0000011c: DUP3
0000011d: EQ
0000011e: DUP1
0000011f: ISZERO
00000120: SWAP2
00000121: POP
00000122: PUSH2 0x012c
00000125: JUMPI
00000126: POP
00000127: DUP7
00000128: PUSH1 0x00
0000012a: EQ
0000012b: ISZERO
0000012c: JUMPDEST
0000012d: ISZERO
0000012e: PUSH2 0x0863
00000131: JUMPI
00000132: PUSH1 0x00
00000134: SWAP6
00000135: POP
00000136: JUMPDEST
00000137: PUSH1 0x00
00000139: SLOAD
0000013a: DUP7
0000013b: LT
0000013c: ISZERO
0000013d: PUSH2 0x0868
00000140: JUMPI
00000141: PUSH5 0x02540be400
00000147: PUSH1 0x00
00000149: PUSH1 0x00
0000014b: POP
0000014c: DUP8
0000014d: DUP2
0000014e: SLOAD
0000014f: DUP2
00000150: LT
00000151: ISZERO
00000152: PUSH2 0x0002
00000155: JUMPI
00000156: DUP2
00000157: DUP1
00000158: MSTORE
00000159: DUP2
0000015a: SLOAD
0000015b: PUSH1 0x03
0000015d: SWAP2
0000015e: SWAP1
0000015f: SWAP2
00000160: MUL
00000161: PUSH1 0x00
00000163: DUP1
00000164: MLOAD
00000165: PUSH1 0x20
00000167: PUSH2 0x0d74
0000016a: DUP4
0000016b: CODECOPY
0000016c: DUP2
0000016d: MLOAD
0000016e: SWAP2
0000016f: MSTORE
00000170: ADD
00000171: SLOAD
00000172: DUP11
00000173: MUL
00000174: SWAP3
00000175: SWAP1
00000176: SWAP3
00000177: DIV
00000178: SWAP10
00000179: POP
0000017a: SWAP1
0000017b: DUP8
0000017c: SWAP1
0000017d: DUP2
0000017e: LT
0000017f: ISZERO
00000180: PUSH2 0x0002
00000183: JUMPI
00000184: PUSH1 0x40
00000186: MLOAD
00000187: PUSH1 0x03
00000189: SWAP2
0000018a: SWAP1
0000018b: SWAP2
0000018c: MUL
0000018d: PUSH1 0x00
0000018f: DUP1
00000190: MLOAD
00000191: PUSH1 0x20
00000193: PUSH2 0x0d34
00000196: DUP4
00000197: CODECOPY
00000198: DUP2
00000199: MLOAD
0000019a: SWAP2
0000019b: MSTORE
0000019c: ADD
0000019d: SLOAD
0000019e: PUSH1 0x01
000001a0: PUSH1 0xa0
000001a2: PUSH1 0x02
000001a4: EXP
000001a5: SUB
000001a6: AND
000001a7: SWAP2
000001a8: SWAP1
000001a9: DUP11
000001aa: SWAP1
000001ab: DUP3
000001ac: DUP2
000001ad: DUP2
000001ae: DUP2
000001af: DUP6
000001b0: DUP9
000001b1: DUP4
000001b2: CALL
000001b3: POP
000001b4: POP
000001b5: PUSH1 0x05
000001b7: DUP1
000001b8: SLOAD
000001b9: SWAP2
000001ba: SWAP1
000001bb: SWAP2
000001bc: ADD
000001bd: SWAP1
000001be: SSTORE
000001bf: POP
000001c0: POP
000001c1: PUSH1 0x06
000001c3: DUP1
000001c4: SLOAD
000001c5: DUP10
000001c6: ADD
000001c7: SWAP1
000001c8: SSTORE
000001c9: PUSH1 0x01
000001cb: SWAP6
000001cc: SWAP1
000001cd: SWAP6
000001ce: ADD
000001cf: SWAP5
000001d0: PUSH2 0x0136
000001d3: JUMP
000001d4: JUMPDEST
000001d5: PUSH2 0x0677
000001d8: PUSH1 0x08
000001da: SLOAD
000001db: PUSH1 0x01
000001dd: PUSH1 0xa0
000001df: PUSH1 0x02
000001e1: EXP
000001e2: SUB
000001e3: SWAP1
000001e4: DUP2
000001e5: AND
000001e6: CALLER
000001e7: SWAP1
000001e8: SWAP2
000001e9: AND
000001ea: EQ
000001eb: ISZERO
000001ec: PUSH2 0x0679
000001ef: JUMPI
000001f0: PUSH1 0x40
000001f2: DUP1
000001f3: MLOAD
000001f4: PUSH1 0x60
000001f6: DUP2
000001f7: ADD
000001f8: DUP3
000001f9: MSTORE
000001fa: PUSH1 0x28
000001fc: DUP1
000001fd: DUP3
000001fe: MSTORE
000001ff: PUSH32 0x4d616e75616c204465706f7369742072656365697665642066726f6d20746865
00000220: PUSH1 0x20
00000222: DUP4
00000223: DUP2
00000224: ADD
00000225: SWAP2
00000226: DUP3
00000227: MSTORE
00000228: PUSH32 0x204d616e61676572000000000000000000000000000000000000000000000000
00000249: SWAP4
0000024a: SWAP1
0000024b: SWAP5
0000024c: ADD
0000024d: SWAP3
0000024e: SWAP1
0000024f: SWAP3
00000250: MSTORE
00000251: PUSH1 0x07
00000253: DUP1
00000254: SLOAD
00000255: PUSH1 0x00
00000257: DUP3
00000258: SWAP1
00000259: MSTORE
0000025a: SWAP1
0000025b: SWAP4
0000025c: PUSH1 0x02
0000025e: PUSH1 0x01
00000260: DUP4
00000261: AND
00000262: ISZERO
00000263: PUSH2 0x0100
00000266: MUL
00000267: PUSH1 0x00
00000269: NOT
0000026a: ADD
0000026b: SWAP1
0000026c: SWAP3
0000026d: AND
0000026e: SWAP2
0000026f: SWAP1
00000270: SWAP2
00000271: DIV
00000272: PUSH1 0x1f
00000274: ADD
00000275: DIV
00000276: PUSH1 0x00
00000278: DUP1
00000279: MLOAD
0000027a: PUSH1 0x20
0000027c: PUSH2 0x0d54
0000027f: DUP4
00000280: CODECOPY
00000281: DUP2
00000282: MLOAD
00000283: SWAP2
00000284: MSTORE
00000285: SWAP1
00000286: DUP2
00000287: ADD
00000288: SWAP3
00000289: JUMPDEST
0000028a: DUP3
0000028b: DUP1
0000028c: ADD
0000028d: PUSH1 0x01
0000028f: ADD
00000290: DUP6
00000291: SSTORE
00000292: DUP3
00000293: ISZERO
00000294: PUSH2 0x0bb1
00000297: JUMPI
00000298: SWAP2
00000299: DUP3
0000029a: ADD
0000029b: JUMPDEST
0000029c: DUP3
0000029d: DUP2
0000029e: GT
0000029f: ISZERO
000002a0: PUSH2 0x0bb1
000002a3: JUMPI
000002a4: DUP3
000002a5: MLOAD
000002a6: DUP3
000002a7: PUSH1 0x00
000002a9: POP
000002aa: SSTORE
000002ab: SWAP2
000002ac: PUSH1 0x20
000002ae: ADD
000002af: SWAP2
000002b0: SWAP1
000002b1: PUSH1 0x01
000002b3: ADD
000002b4: SWAP1
000002b5: PUSH2 0x029b
000002b8: JUMP
000002b9: JUMPDEST
000002ba: PUSH2 0x0677
000002bd: PUSH1 0x04
000002bf: CALLDATALOAD
000002c0: PUSH1 0x08
000002c2: SLOAD
000002c3: PUSH1 0x01
000002c5: PUSH1 0xa0
000002c7: PUSH1 0x02
000002c9: EXP
000002ca: SUB
000002cb: SWAP1
000002cc: DUP2
000002cd: AND
000002ce: CALLER
000002cf: SWAP1
000002d0: SWAP2
000002d1: AND
000002d2: EQ
000002d3: ISZERO
000002d4: PUSH2 0x0b7e
000002d7: JUMPI
000002d8: PUSH1 0x08
000002da: DUP1
000002db: SLOAD
000002dc: PUSH1 0x01
000002de: PUSH1 0xa0
000002e0: PUSH1 0x02
000002e2: EXP
000002e3: SUB
000002e4: NOT
000002e5: AND
000002e6: DUP3
000002e7: OR
000002e8: SWAP1
000002e9: SSTORE
000002ea: PUSH1 0x40
000002ec: DUP1
000002ed: MLOAD
000002ee: DUP1
000002ef: DUP3
000002f0: ADD
000002f1: SWAP1
000002f2: SWAP2
000002f3: MSTORE
000002f4: PUSH1 0x1f
000002f6: DUP1
000002f7: DUP3
000002f8: MSTORE
000002f9: PUSH32 0x54686520636f6e7472616374206861732061206e6577206d616e616765722100
0000031a: PUSH1 0x20
0000031c: SWAP3
0000031d: DUP4
0000031e: ADD
0000031f: SWAP1
00000320: DUP2
00000321: MSTORE
00000322: PUSH1 0x07
00000324: DUP1
00000325: SLOAD
00000326: PUSH1 0x00
00000328: DUP3
00000329: SWAP1
0000032a: MSTORE
0000032b: SWAP1
0000032c: SWAP4
0000032d: PUSH1 0x02
0000032f: PUSH1 0x01
00000331: DUP4
00000332: AND
00000333: ISZERO
00000334: PUSH2 0x0100
00000337: MUL
00000338: PUSH1 0x00
0000033a: NOT
0000033b: ADD
0000033c: SWAP1
0000033d: SWAP3
0000033e: AND
0000033f: SWAP2
00000340: SWAP1
00000341: SWAP2
00000342: DIV
00000343: DUP4
00000344: ADD
00000345: DIV
00000346: PUSH1 0x00
00000348: DUP1
00000349: MLOAD
0000034a: PUSH1 0x20
0000034c: PUSH2 0x0d54
0000034f: DUP4
00000350: CODECOPY
00000351: DUP2
00000352: MLOAD
00000353: SWAP2
00000354: MSTORE
00000355: SWAP1
00000356: DUP2
00000357: ADD
00000358: SWAP3
00000359: SWAP2
0000035a: DUP1
0000035b: MLOAD
0000035c: PUSH1 0xff
0000035e: NOT
0000035f: AND
00000360: DUP4
00000361: DUP1
00000362: ADD
00000363: OR
00000364: DUP6
00000365: SSTORE
00000366: JUMPDEST
00000367: POP
00000368: PUSH2 0x0b7b
0000036b: SWAP3
0000036c: SWAP2
0000036d: POP
0000036e: PUSH2 0x08ec
00000371: JUMP
00000372: JUMPDEST
00000373: PUSH2 0x067b
00000376: PUSH1 0x04
00000378: CALLDATALOAD
00000379: PUSH1 0x00
0000037b: DUP1
0000037c: SLOAD
0000037d: DUP3
0000037e: SWAP1
0000037f: DUP2
00000380: LT
00000381: ISZERO
00000382: PUSH2 0x0002
00000385: JUMPI
00000386: POP
00000387: DUP1
00000388: MSTORE
00000389: PUSH1 0x03
0000038b: MUL
0000038c: PUSH1 0x00
0000038e: DUP1
0000038f: MLOAD
00000390: PUSH1 0x20
00000392: PUSH2 0x0d34
00000395: DUP4
00000396: CODECOPY
00000397: DUP2
00000398: MLOAD
00000399: SWAP2
0000039a: MSTORE
0000039b: DUP2
0000039c: ADD
0000039d: SLOAD
0000039e: PUSH1 0x00
000003a0: DUP1
000003a1: MLOAD
000003a2: PUSH1 0x20
000003a4: PUSH2 0x0d94
000003a7: DUP4
000003a8: CODECOPY
000003a9: DUP2
000003aa: MLOAD
000003ab: SWAP2
000003ac: MSTORE
000003ad: DUP3
000003ae: ADD
000003af: SLOAD
000003b0: PUSH1 0x00
000003b2: DUP1
000003b3: MLOAD
000003b4: PUSH1 0x20
000003b6: PUSH2 0x0d74
000003b9: DUP4
000003ba: CODECOPY
000003bb: DUP2
000003bc: MLOAD
000003bd: SWAP2
000003be: MSTORE
000003bf: SWAP3
000003c0: SWAP1
000003c1: SWAP3
000003c2: ADD
000003c3: SLOAD
000003c4: PUSH1 0x01
000003c6: PUSH1 0xa0
000003c8: PUSH1 0x02
000003ca: EXP
000003cb: SUB
000003cc: SWAP2
000003cd: SWAP1
000003ce: SWAP2
000003cf: AND
000003d0: SWAP2
000003d1: SWAP1
000003d2: DUP4
000003d3: JUMP
000003d4: JUMPDEST
000003d5: PUSH1 0x40
000003d7: DUP1
000003d8: MLOAD
000003d9: PUSH1 0x20
000003db: PUSH1 0x04
000003dd: DUP1
000003de: CALLDATALOAD
000003df: DUP1
000003e0: DUP3
000003e1: ADD
000003e2: CALLDATALOAD
000003e3: PUSH1 0x1f
000003e5: DUP2
000003e6: ADD
000003e7: DUP5
000003e8: SWAP1
000003e9: DIV
000003ea: DUP5
000003eb: MUL
000003ec: DUP6
000003ed: ADD
000003ee: DUP5
000003ef: ADD
000003f0: SWAP1
000003f1: SWAP6
000003f2: MSTORE
000003f3: DUP5
000003f4: DUP5
000003f5: MSTORE
000003f6: PUSH2 0x0677
000003f9: SWAP5
000003fa: SWAP2
000003fb: SWAP4
000003fc: PUSH1 0x24
000003fe: SWAP4
000003ff: SWAP1
00000400: SWAP3
00000401: SWAP2
00000402: DUP5
00000403: ADD
00000404: SWAP2
00000405: SWAP1
00000406: DUP2
00000407: SWAP1
00000408: DUP5
00000409: ADD
0000040a: DUP4
0000040b: DUP3
0000040c: DUP1
0000040d: DUP3
0000040e: DUP5
0000040f: CALLDATACOPY
00000410: POP
00000411: SWAP5
00000412: SWAP7
00000413: POP
00000414: POP
00000415: POP
00000416: POP
00000417: POP
00000418: POP
00000419: POP
0000041a: PUSH1 0x08
0000041c: SLOAD
0000041d: PUSH1 0x01
0000041f: PUSH1 0xa0
00000421: PUSH1 0x02
00000423: EXP
00000424: SUB
00000425: SWAP1
00000426: DUP2
00000427: AND
00000428: CALLER
00000429: SWAP1
0000042a: SWAP2
0000042b: AND
0000042c: EQ
0000042d: ISZERO
0000042e: PUSH2 0x0b7e
00000431: JUMPI
00000432: DUP1
00000433: PUSH1 0x07
00000435: PUSH1 0x00
00000437: POP
00000438: SWAP1
00000439: DUP1
0000043a: MLOAD
0000043b: SWAP1
0000043c: PUSH1 0x20
0000043e: ADD
0000043f: SWAP1
00000440: DUP3
00000441: DUP1
00000442: SLOAD
00000443: PUSH1 0x01
00000445: DUP2
00000446: PUSH1 0x01
00000448: AND
00000449: ISZERO
0000044a: PUSH2 0x0100
0000044d: MUL
0000044e: SUB
0000044f: AND
00000450: PUSH1 0x02
00000452: SWAP1
00000453: DIV
00000454: SWAP1
00000455: PUSH1 0x00
00000457: MSTORE
00000458: PUSH1 0x20
0000045a: PUSH1 0x00
0000045c: KECCAK256
0000045d: SWAP1
0000045e: PUSH1 0x1f
00000460: ADD
00000461: PUSH1 0x20
00000463: SWAP1
00000464: DIV
00000465: DUP2
00000466: ADD
00000467: SWAP3
00000468: DUP3
00000469: PUSH1 0x1f
0000046b: LT
0000046c: PUSH2 0x0b81
0000046f: JUMPI
00000470: DUP1
00000471: MLOAD
00000472: PUSH1 0xff
00000474: NOT
00000475: AND
00000476: DUP4
00000477: DUP1
00000478: ADD
00000479: OR
0000047a: DUP6
0000047b: SSTORE
0000047c: PUSH2 0x0366
0000047f: JUMP
00000480: JUMPDEST
00000481: PUSH2 0x0677
00000484: PUSH1 0x04
00000486: CALLDATALOAD
00000487: PUSH1 0x24
00000489: CALLDATALOAD
0000048a: PUSH1 0x08
0000048c: SLOAD
0000048d: PUSH1 0x01
0000048f: PUSH1 0xa0
00000491: PUSH1 0x02
00000493: EXP
00000494: SUB
00000495: SWAP1
00000496: DUP2
00000497: AND
00000498: CALLER
00000499: SWAP1
0000049a: SWAP2
0000049b: AND
0000049c: EQ
0000049d: ISZERO
0000049e: PUSH2 0x0bbd
000004a1: JUMPI
000004a2: PUSH1 0x04
000004a4: DUP1
000004a5: SLOAD
000004a6: DUP3
000004a7: ADD
000004a8: SWAP1
000004a9: SSTORE
000004aa: PUSH1 0x00
000004ac: DUP1
000004ad: SLOAD
000004ae: PUSH1 0x01
000004b0: DUP2
000004b1: DUP2
000004b2: ADD
000004b3: SWAP1
000004b4: DUP2
000004b5: SWAP1
000004b6: SSTORE
000004b7: DUP1
000004b8: DUP4
000004b9: SSTORE
000004ba: SWAP2
000004bb: SWAP1
000004bc: DUP3
000004bd: SWAP1
000004be: DUP1
000004bf: ISZERO
000004c0: DUP3
000004c1: SWAP1
000004c2: GT
000004c3: PUSH2 0x0bc1
000004c6: JUMPI
000004c7: PUSH1 0x03
000004c9: MUL
000004ca: DUP2
000004cb: PUSH1 0x03
000004cd: MUL
000004ce: DUP4
000004cf: PUSH1 0x00
000004d1: MSTORE
000004d2: PUSH1 0x20
000004d4: PUSH1 0x00
000004d6: KECCAK256
000004d7: SWAP2
000004d8: DUP3
000004d9: ADD
000004da: SWAP2
000004db: ADD
000004dc: PUSH2 0x0bc1
000004df: SWAP2
000004e0: SWAP1
000004e1: PUSH2 0x0835
000004e4: JUMP
000004e5: JUMPDEST
000004e6: PUSH2 0x0677
000004e9: PUSH1 0x08
000004eb: SLOAD
000004ec: PUSH1 0x01
000004ee: PUSH1 0xa0
000004f0: PUSH1 0x02
000004f2: EXP
000004f3: SUB
000004f4: SWAP1
000004f5: DUP2
000004f6: AND
000004f7: CALLER
000004f8: SWAP1
000004f9: SWAP2
000004fa: AND
000004fb: EQ
000004fc: ISZERO
000004fd: PUSH2 0x0679
00000500: JUMPI
00000501: PUSH1 0x03
00000503: SLOAD
00000504: PUSH1 0x00
00000506: EQ
00000507: PUSH2 0x0679
0000050a: JUMPI
0000050b: PUSH1 0x03
0000050d: SLOAD
0000050e: PUSH1 0x40
00000510: MLOAD
00000511: PUSH1 0x08
00000513: SLOAD
00000514: PUSH1 0x01
00000516: PUSH1 0xa0
00000518: PUSH1 0x02
0000051a: EXP
0000051b: SUB
0000051c: AND
0000051d: SWAP2
0000051e: PUSH1 0x00
00000520: SWAP2
00000521: DUP3
00000522: DUP2
00000523: DUP2
00000524: DUP2
00000525: DUP6
00000526: DUP9
00000527: DUP4
00000528: CALL
00000529: POP
0000052a: POP
0000052b: POP
0000052c: PUSH1 0x03
0000052e: DUP2
0000052f: SWAP1
00000530: SSTORE
00000531: PUSH1 0x40
00000533: DUP1
00000534: MLOAD
00000535: PUSH1 0x60
00000537: DUP2
00000538: ADD
00000539: DUP3
0000053a: MSTORE
0000053b: PUSH1 0x23
0000053d: DUP1
0000053e: DUP3
0000053f: MSTORE
00000540: PUSH32 0x456d657267656e637920576974686472617720686173206265656e2069737375
00000561: PUSH1 0x20
00000563: DUP4
00000564: DUP2
00000565: ADD
00000566: SWAP2
00000567: DUP3
00000568: MSTORE
00000569: PUSH32 0x6564210000000000000000000000000000000000000000000000000000000000
0000058a: SWAP4
0000058b: SWAP1
0000058c: SWAP5
0000058d: ADD
0000058e: SWAP3
0000058f: SWAP1
00000590: SWAP3
00000591: MSTORE
00000592: PUSH1 0x07
00000594: DUP1
00000595: SLOAD
00000596: SWAP5
00000597: DUP2
00000598: SWAP1
00000599: MSTORE
0000059a: SWAP5
0000059b: POP
0000059c: PUSH1 0x02
0000059e: PUSH1 0x01
000005a0: DUP6
000005a1: AND
000005a2: ISZERO
000005a3: PUSH2 0x0100
000005a6: MUL
000005a7: PUSH1 0x00
000005a9: NOT
000005aa: ADD
000005ab: SWAP1
000005ac: SWAP5
000005ad: AND
000005ae: SWAP4
000005af: SWAP1
000005b0: SWAP4
000005b1: DIV
000005b2: PUSH1 0x1f
000005b4: ADD
000005b5: SWAP2
000005b6: SWAP1
000005b7: SWAP2
000005b8: DIV
000005b9: PUSH1 0x00
000005bb: DUP1
000005bc: MLOAD
000005bd: PUSH1 0x20
000005bf: PUSH2 0x0d54
000005c2: DUP4
000005c3: CODECOPY
000005c4: DUP2
000005c5: MLOAD
000005c6: SWAP2
000005c7: MSTORE
000005c8: SWAP1
000005c9: DUP2
000005ca: ADD
000005cb: SWAP3
000005cc: SWAP2
000005cd: PUSH2 0x0289
000005d0: JUMP
000005d1: JUMPDEST
000005d2: PUSH2 0x06a4
000005d5: PUSH1 0x05
000005d7: SLOAD
000005d8: DUP2
000005d9: JUMP
000005da: JUMPDEST
000005db: PUSH2 0x06b6
000005de: PUSH1 0x08
000005e0: SLOAD
000005e1: PUSH1 0x01
000005e3: PUSH1 0xa0
000005e5: PUSH1 0x02
000005e7: EXP
000005e8: SUB
000005e9: AND
000005ea: DUP2
000005eb: JUMP
000005ec: JUMPDEST
000005ed: PUSH1 0x40
000005ef: DUP1
000005f0: MLOAD
000005f1: PUSH1 0x07
000005f3: DUP1
000005f4: SLOAD
000005f5: PUSH1 0x20
000005f7: PUSH1 0x02
000005f9: PUSH1 0x01
000005fb: DUP4
000005fc: AND
000005fd: ISZERO
000005fe: PUSH2 0x0100
00000601: MUL
00000602: PUSH1 0x00
00000604: NOT
00000605: ADD
00000606: SWAP1
00000607: SWAP3
00000608: AND
00000609: SWAP2
0000060a: SWAP1
0000060b: SWAP2
0000060c: DIV
0000060d: PUSH1 0x1f
0000060f: DUP2
00000610: ADD
00000611: DUP3
00000612: SWAP1
00000613: DIV
00000614: DUP3
00000615: MUL
00000616: DUP5
00000617: ADD
00000618: DUP3
00000619: ADD
0000061a: SWAP1
0000061b: SWAP5
0000061c: MSTORE
0000061d: DUP4
0000061e: DUP4
0000061f: MSTORE
00000620: PUSH2 0x06d3
00000623: SWAP4
00000624: SWAP1
00000625: DUP4
00000626: ADD
00000627: DUP3
00000628: DUP3
00000629: DUP1
0000062a: ISZERO
0000062b: PUSH2 0x076c
0000062e: JUMPI
0000062f: DUP1
00000630: PUSH1 0x1f
00000632: LT
00000633: PUSH2 0x0741
00000636: JUMPI
00000637: PUSH2 0x0100
0000063a: DUP1
0000063b: DUP4
0000063c: SLOAD
0000063d: DIV
0000063e: MUL
0000063f: DUP4
00000640: MSTORE
00000641: SWAP2
00000642: PUSH1 0x20
00000644: ADD
00000645: SWAP2
00000646: PUSH2 0x076c
00000649: JUMP
0000064a: JUMPDEST
0000064b: PUSH2 0x06a4
0000064e: PUSH1 0x02
00000650: SLOAD
00000651: DUP2
00000652: JUMP
00000653: JUMPDEST
00000654: PUSH2 0x06a4
00000657: PUSH1 0x01
00000659: SLOAD
0000065a: DUP2
0000065b: JUMP
0000065c: JUMPDEST
0000065d: PUSH2 0x06a4
00000660: PUSH1 0x03
00000662: SLOAD
00000663: DUP2
00000664: JUMP
00000665: JUMPDEST
00000666: PUSH2 0x06a4
00000669: PUSH1 0x06
0000066b: SLOAD
0000066c: DUP2
0000066d: JUMP
0000066e: JUMPDEST
0000066f: PUSH2 0x06a4
00000672: PUSH1 0x04
00000674: SLOAD
00000675: DUP2
00000676: JUMP
00000677: JUMPDEST
00000678: STOP
00000679: JUMPDEST
0000067a: JUMP
0000067b: JUMPDEST
0000067c: PUSH1 0x40
0000067e: DUP1
0000067f: MLOAD
00000680: PUSH1 0x01
00000682: PUSH1 0xa0
00000684: PUSH1 0x02
00000686: EXP
00000687: SUB
00000688: SWAP5
00000689: SWAP1
0000068a: SWAP5
0000068b: AND
0000068c: DUP5
0000068d: MSTORE
0000068e: PUSH1 0x20
00000690: DUP5
00000691: ADD
00000692: SWAP3
00000693: SWAP1
00000694: SWAP3
00000695: MSTORE
00000696: DUP3
00000697: DUP3
00000698: ADD
00000699: MSTORE
0000069a: MLOAD
0000069b: SWAP1
0000069c: DUP2
0000069d: SWAP1
0000069e: SUB
0000069f: PUSH1 0x60
000006a1: ADD
000006a2: SWAP1
000006a3: RETURN
000006a4: JUMPDEST
000006a5: PUSH1 0x40
000006a7: DUP1
000006a8: MLOAD
000006a9: SWAP2
000006aa: DUP3
000006ab: MSTORE
000006ac: MLOAD
000006ad: SWAP1
000006ae: DUP2
000006af: SWAP1
000006b0: SUB
000006b1: PUSH1 0x20
000006b3: ADD
000006b4: SWAP1
000006b5: RETURN
000006b6: JUMPDEST
000006b7: PUSH1 0x40
000006b9: DUP1
000006ba: MLOAD
000006bb: PUSH1 0x01
000006bd: PUSH1 0xa0
000006bf: PUSH1 0x02
000006c1: EXP
000006c2: SUB
000006c3: SWAP3
000006c4: SWAP1
000006c5: SWAP3
000006c6: AND
000006c7: DUP3
000006c8: MSTORE
000006c9: MLOAD
000006ca: SWAP1
000006cb: DUP2
000006cc: SWAP1
000006cd: SUB
000006ce: PUSH1 0x20
000006d0: ADD
000006d1: SWAP1
000006d2: RETURN
000006d3: JUMPDEST
000006d4: PUSH1 0x40
000006d6: MLOAD
000006d7: DUP1
000006d8: DUP1
000006d9: PUSH1 0x20
000006db: ADD
000006dc: DUP3
000006dd: DUP2
000006de: SUB
000006df: DUP3
000006e0: MSTORE
000006e1: DUP4
000006e2: DUP2
000006e3: DUP2
000006e4: MLOAD
000006e5: DUP2
000006e6: MSTORE
000006e7: PUSH1 0x20
000006e9: ADD
000006ea: SWAP2
000006eb: POP
000006ec: DUP1
000006ed: MLOAD
000006ee: SWAP1
000006ef: PUSH1 0x20
000006f1: ADD
000006f2: SWAP1
000006f3: DUP1
000006f4: DUP4
000006f5: DUP4
000006f6: DUP3
000006f7: SWAP1
000006f8: PUSH1 0x00
000006fa: PUSH1 0x04
000006fc: PUSH1 0x20
000006fe: DUP5
000006ff: PUSH1 0x1f
00000701: ADD
00000702: DIV
00000703: PUSH1 0x0f
00000705: MUL
00000706: PUSH1 0x03
00000708: ADD
00000709: CALL
0000070a: POP
0000070b: SWAP1
0000070c: POP
0000070d: SWAP1
0000070e: DUP2
0000070f: ADD
00000710: SWAP1
00000711: PUSH1 0x1f
00000713: AND
00000714: DUP1
00000715: ISZERO
00000716: PUSH2 0x0733
00000719: JUMPI
0000071a: DUP1
0000071b: DUP3
0000071c: SUB
0000071d: DUP1
0000071e: MLOAD
0000071f: PUSH1 0x01
00000721: DUP4
00000722: PUSH1 0x20
00000724: SUB
00000725: PUSH2 0x0100
00000728: EXP
00000729: SUB
0000072a: NOT
0000072b: AND
0000072c: DUP2
0000072d: MSTORE
0000072e: PUSH1 0x20
00000730: ADD
00000731: SWAP2
00000732: POP
00000733: JUMPDEST
00000734: POP
00000735: SWAP3
00000736: POP
00000737: POP
00000738: POP
00000739: PUSH1 0x40
0000073b: MLOAD
0000073c: DUP1
0000073d: SWAP2
0000073e: SUB
0000073f: SWAP1
00000740: RETURN
00000741: JUMPDEST
00000742: DUP3
00000743: ADD
00000744: SWAP2
00000745: SWAP1
00000746: PUSH1 0x00
00000748: MSTORE
00000749: PUSH1 0x20
0000074b: PUSH1 0x00
0000074d: KECCAK256
0000074e: SWAP1
0000074f: JUMPDEST
00000750: DUP2
00000751: SLOAD
00000752: DUP2
00000753: MSTORE
00000754: SWAP1
00000755: PUSH1 0x01
00000757: ADD
00000758: SWAP1
00000759: PUSH1 0x20
0000075b: ADD
0000075c: DUP1
0000075d: DUP4
0000075e: GT
0000075f: PUSH2 0x074f
00000762: JUMPI
00000763: DUP3
00000764: SWAP1
00000765: SUB
00000766: PUSH1 0x1f
00000768: AND
00000769: DUP3
0000076a: ADD
0000076b: SWAP2
0000076c: JUMPDEST
0000076d: POP
0000076e: POP
0000076f: POP
00000770: POP
00000771: POP
00000772: DUP2
00000773: JUMP
00000774: JUMPDEST
00000775: PUSH1 0x64
00000777: CALLVALUE
00000778: SWAP1
00000779: DUP2
0000077a: DIV
0000077b: PUSH1 0x02
0000077d: DUP2
0000077e: SWAP1
0000077f: SSTORE
00000780: PUSH1 0x04
00000782: DUP1
00000783: SLOAD
00000784: DUP4
00000785: ADD
00000786: SWAP1
00000787: SSTORE
00000788: PUSH1 0x03
0000078a: DUP1
0000078b: SLOAD
0000078c: SWAP2
0000078d: SWAP1
0000078e: SWAP3
0000078f: SUB
00000790: SWAP1
00000791: DUP2
00000792: ADD
00000793: SWAP1
00000794: SWAP2
00000795: SSTORE
00000796: SWAP5
00000797: POP
00000798: PUSH1 0x00
0000079a: SWAP4
0000079b: POP
0000079c: DUP4
0000079d: SWAP2
0000079e: POP
0000079f: JUMPDEST
000007a0: PUSH1 0x00
000007a2: SLOAD
000007a3: DUP3
000007a4: LT
000007a5: ISZERO
000007a6: PUSH2 0x07ec
000007a9: JUMPI
000007aa: PUSH1 0x00
000007ac: DUP1
000007ad: SLOAD
000007ae: DUP4
000007af: SWAP1
000007b0: DUP2
000007b1: LT
000007b2: ISZERO
000007b3: PUSH2 0x0002
000007b6: JUMPI
000007b7: SWAP1
000007b8: DUP1
000007b9: MSTORE
000007ba: PUSH1 0x03
000007bc: MUL
000007bd: PUSH1 0x00
000007bf: DUP1
000007c0: MLOAD
000007c1: PUSH1 0x20
000007c3: PUSH2 0x0d34
000007c6: DUP4
000007c7: CODECOPY
000007c8: DUP2
000007c9: MLOAD
000007ca: SWAP2
000007cb: MSTORE
000007cc: ADD
000007cd: SLOAD
000007ce: PUSH1 0x01
000007d0: PUSH1 0xa0
000007d2: PUSH1 0x02
000007d4: EXP
000007d5: SUB
000007d6: SWAP1
000007d7: DUP2
000007d8: AND
000007d9: CALLER
000007da: SWAP1
000007db: SWAP2
000007dc: AND
000007dd: EQ
000007de: ISZERO
000007df: PUSH2 0x0904
000007e2: JUMPI
000007e3: PUSH1 0x01
000007e5: SWAP4
000007e6: POP
000007e7: SWAP1
000007e8: SWAP2
000007e9: POP
000007ea: DUP2
000007eb: SWAP1
000007ec: JUMPDEST
000007ed: DUP4
000007ee: PUSH1 0x00
000007f0: EQ
000007f1: ISZERO
000007f2: PUSH2 0x0910
000007f5: JUMPI
000007f6: PUSH1 0x00
000007f8: DUP1
000007f9: SLOAD
000007fa: PUSH1 0x01
000007fc: DUP2
000007fd: DUP2
000007fe: ADD
000007ff: SWAP1
00000800: DUP2
00000801: SWAP1
00000802: SSTORE
00000803: DUP1
00000804: DUP4
00000805: SSTORE
00000806: SWAP2
00000807: SWAP1
00000808: DUP3
00000809: SWAP1
0000080a: DUP1
0000080b: ISZERO
0000080c: DUP3
0000080d: SWAP1
0000080e: GT
0000080f: PUSH2 0x09e2
00000812: JUMPI
00000813: DUP3
00000814: DUP1
00000815: MSTORE
00000816: PUSH2 0x09e2
00000819: SWAP1
0000081a: PUSH1 0x03
0000081c: SWAP1
0000081d: DUP2
0000081e: MUL
0000081f: PUSH1 0x00
00000821: DUP1
00000822: MLOAD
00000823: PUSH1 0x20
00000825: PUSH2 0x0d34
00000828: DUP4
00000829: CODECOPY
0000082a: DUP2
0000082b: MLOAD
0000082c: SWAP2
0000082d: MSTORE
0000082e: SWAP1
0000082f: DUP2
00000830: ADD
00000831: SWAP2
00000832: DUP5
00000833: MUL
00000834: ADD
00000835: JUMPDEST
00000836: DUP1
00000837: DUP3
00000838: GT
00000839: ISZERO
0000083a: PUSH2 0x0900
0000083d: JUMPI
0000083e: DUP1
0000083f: SLOAD
00000840: PUSH1 0x01
00000842: PUSH1 0xa0
00000844: PUSH1 0x02
00000846: EXP
00000847: SUB
00000848: NOT
00000849: AND
0000084a: DUP2
0000084b: SSTORE
0000084c: PUSH1 0x00
0000084e: PUSH1 0x01
00000850: DUP3
00000851: ADD
00000852: DUP2
00000853: DUP2
00000854: SSTORE
00000855: PUSH1 0x02
00000857: SWAP3
00000858: SWAP1
00000859: SWAP3
0000085a: ADD
0000085b: SSTORE
0000085c: PUSH2 0x0835
0000085f: JUMP
00000860: JUMPDEST
00000861: POP
00000862: POP
00000863: JUMPDEST
00000864: PUSH2 0x09d8
00000867: JUMP
00000868: JUMPDEST
00000869: PUSH1 0x40
0000086b: DUP1
0000086c: MLOAD
0000086d: DUP1
0000086e: DUP3
0000086f: ADD
00000870: SWAP1
00000871: SWAP2
00000872: MSTORE
00000873: PUSH1 0x1d
00000875: DUP1
00000876: DUP3
00000877: MSTORE
00000878: PUSH32 0x4469766964656e64732068617665206265656e2070616964206f757421000000
00000899: PUSH1 0x20
0000089b: SWAP3
0000089c: DUP4
0000089d: ADD
0000089e: SWAP1
0000089f: DUP2
000008a0: MSTORE
000008a1: PUSH1 0x07
000008a3: DUP1
000008a4: SLOAD
000008a5: PUSH1 0x00
000008a7: DUP3
000008a8: SWAP1
000008a9: MSTORE
000008aa: SWAP1
000008ab: SWAP4
000008ac: PUSH1 0x02
000008ae: PUSH1 0x01
000008b0: DUP4
000008b1: AND
000008b2: ISZERO
000008b3: PUSH2 0x0100
000008b6: MUL
000008b7: PUSH1 0x00
000008b9: NOT
000008ba: ADD
000008bb: SWAP1
000008bc: SWAP3
000008bd: AND
000008be: SWAP2
000008bf: SWAP1
000008c0: SWAP2
000008c1: DIV
000008c2: PUSH1 0x1f
000008c4: ADD
000008c5: DIV
000008c6: PUSH1 0x00
000008c8: DUP1
000008c9: MLOAD
000008ca: PUSH1 0x20
000008cc: PUSH2 0x0d54
000008cf: DUP4
000008d0: CODECOPY
000008d1: DUP2
000008d2: MLOAD
000008d3: SWAP2
000008d4: MSTORE
000008d5: SWAP1
000008d6: DUP2
000008d7: ADD
000008d8: SWAP3
000008d9: SWAP2
000008da: DUP1
000008db: MLOAD
000008dc: PUSH1 0xff
000008de: NOT
000008df: AND
000008e0: PUSH1 0x3a
000008e2: OR
000008e3: DUP6
000008e4: SSTORE
000008e5: POP
000008e6: PUSH2 0x0860
000008e9: SWAP3
000008ea: SWAP2
000008eb: POP
000008ec: JUMPDEST
000008ed: DUP1
000008ee: DUP3
000008ef: GT
000008f0: ISZERO
000008f1: PUSH2 0x0900
000008f4: JUMPI
000008f5: PUSH1 0x00
000008f7: DUP2
000008f8: SSTORE
000008f9: PUSH1 0x01
000008fb: ADD
000008fc: PUSH2 0x08ec
000008ff: JUMP
00000900: JUMPDEST
00000901: POP
00000902: SWAP1
00000903: JUMP
00000904: JUMPDEST
00000905: PUSH1 0x01
00000907: SWAP2
00000908: SWAP1
00000909: SWAP2
0000090a: ADD
0000090b: SWAP1
0000090c: PUSH2 0x079f
0000090f: JUMP
00000910: JUMPDEST
00000911: DUP5
00000912: PUSH1 0x00
00000914: PUSH1 0x00
00000916: POP
00000917: DUP5
00000918: DUP2
00000919: SLOAD
0000091a: DUP2
0000091b: LT
0000091c: ISZERO
0000091d: PUSH2 0x0002
00000920: JUMPI
00000921: DUP2
00000922: DUP1
00000923: MSTORE
00000924: PUSH1 0x03
00000926: DUP2
00000927: MUL
00000928: PUSH1 0x00
0000092a: DUP1
0000092b: MLOAD
0000092c: PUSH1 0x20
0000092e: PUSH2 0x0d94
00000931: DUP4
00000932: CODECOPY
00000933: DUP2
00000934: MLOAD
00000935: SWAP2
00000936: MSTORE
00000937: ADD
00000938: DUP1
00000939: SLOAD
0000093a: SWAP1
0000093b: SWAP4
0000093c: ADD
0000093d: SWAP1
0000093e: SWAP3
0000093f: SSTORE
00000940: DUP1
00000941: SLOAD
00000942: PUSH1 0x04
00000944: SLOAD
00000945: SWAP3
00000946: POP
00000947: DUP6
00000948: SWAP1
00000949: DUP2
0000094a: LT
0000094b: ISZERO
0000094c: PUSH2 0x0002
0000094f: JUMPI
00000950: POP
00000951: DUP1
00000952: DUP1
00000953: MSTORE
00000954: PUSH1 0x03
00000956: DUP6
00000957: MUL
00000958: PUSH1 0x00
0000095a: DUP1
0000095b: MLOAD
0000095c: PUSH1 0x20
0000095e: PUSH2 0x0d34
00000961: DUP4
00000962: CODECOPY
00000963: DUP2
00000964: MLOAD
00000965: SWAP2
00000966: MSTORE
00000967: ADD
00000968: SWAP1
00000969: POP
0000096a: PUSH1 0x01
0000096c: ADD
0000096d: PUSH1 0x00
0000096f: POP
00000970: SLOAD
00000971: DIV
00000972: PUSH5 0x02540be400
00000978: MUL
00000979: PUSH1 0x00
0000097b: PUSH1 0x00
0000097d: POP
0000097e: DUP5
0000097f: DUP2
00000980: SLOAD
00000981: DUP2
00000982: LT
00000983: ISZERO
00000984: PUSH2 0x0002
00000987: JUMPI
00000988: POP
00000989: POP
0000098a: PUSH1 0x03
0000098c: DUP5
0000098d: MUL
0000098e: PUSH1 0x00
00000990: DUP1
00000991: MLOAD
00000992: PUSH1 0x20
00000994: PUSH2 0x0d74
00000997: DUP4
00000998: CODECOPY
00000999: DUP2
0000099a: MLOAD
0000099b: SWAP2
0000099c: MSTORE
0000099d: ADD
0000099e: SSTORE
0000099f: JUMPDEST
000009a0: PUSH1 0x02
000009a2: SLOAD
000009a3: PUSH1 0x00
000009a5: EQ
000009a6: PUSH2 0x09d8
000009a9: JUMPI
000009aa: PUSH1 0x02
000009ac: SLOAD
000009ad: PUSH1 0x08
000009af: SLOAD
000009b0: PUSH1 0x40
000009b2: MLOAD
000009b3: PUSH1 0x01
000009b5: PUSH1 0xa0
000009b7: PUSH1 0x02
000009b9: EXP
000009ba: SUB
000009bb: SWAP2
000009bc: SWAP1
000009bd: SWAP2
000009be: AND
000009bf: SWAP2
000009c0: PUSH1 0x00
000009c2: SWAP2
000009c3: DUP3
000009c4: DUP2
000009c5: DUP2
000009c6: DUP2
000009c7: DUP6
000009c8: DUP9
000009c9: DUP4
000009ca: CALL
000009cb: POP
000009cc: POP
000009cd: PUSH1 0x05
000009cf: DUP1
000009d0: SLOAD
000009d1: SWAP1
000009d2: SWAP2
000009d3: ADD
000009d4: SWAP1
000009d5: SSTORE
000009d6: POP
000009d7: POP
000009d8: JUMPDEST
000009d9: POP
000009da: POP
000009db: POP
000009dc: POP
000009dd: POP
000009de: POP
000009df: POP
000009e0: POP
000009e1: JUMP
000009e2: JUMPDEST
000009e3: POP
000009e4: POP
000009e5: PUSH1 0x00
000009e7: DUP1
000009e8: SLOAD
000009e9: CALLER
000009ea: SWAP4
000009eb: POP
000009ec: SWAP1
000009ed: SWAP2
000009ee: POP
000009ef: PUSH1 0x00
000009f1: NOT
000009f2: DUP2
000009f3: ADD
000009f4: SWAP1
000009f5: DUP2
000009f6: LT
000009f7: ISZERO
000009f8: PUSH2 0x0002
000009fb: JUMPI
000009fc: DUP2
000009fd: DUP1
000009fe: MSTORE
000009ff: PUSH1 0x03
00000a01: MUL
00000a02: PUSH1 0x00
00000a04: DUP1
00000a05: MLOAD
00000a06: PUSH1 0x20
00000a08: PUSH2 0x0d34
00000a0b: DUP4
00000a0c: CODECOPY
00000a0d: DUP2
00000a0e: MLOAD
00000a0f: SWAP2
00000a10: MSTORE
00000a11: ADD
00000a12: DUP1
00000a13: SLOAD
00000a14: PUSH1 0x01
00000a16: PUSH1 0xa0
00000a18: PUSH1 0x02
00000a1a: EXP
00000a1b: SUB
00000a1c: NOT
00000a1d: AND
00000a1e: SWAP1
00000a1f: SWAP3
00000a20: OR
00000a21: SWAP1
00000a22: SWAP2
00000a23: SSTORE
00000a24: DUP1
00000a25: SLOAD
00000a26: DUP7
00000a27: SWAP2
00000a28: SWAP1
00000a29: PUSH1 0x00
00000a2b: NOT
00000a2c: DUP2
00000a2d: ADD
00000a2e: SWAP1
00000a2f: DUP2
00000a30: LT
00000a31: ISZERO
00000a32: PUSH2 0x0002
00000a35: JUMPI
00000a36: PUSH1 0x03
00000a38: MUL
00000a39: PUSH1 0x00
00000a3b: DUP1
00000a3c: MLOAD
00000a3d: PUSH1 0x20
00000a3f: PUSH2 0x0d94
00000a42: DUP4
00000a43: CODECOPY
00000a44: DUP2
00000a45: MLOAD
00000a46: SWAP2
00000a47: MSTORE
00000a48: ADD
00000a49: SWAP2
00000a4a: SWAP1
00000a4b: SWAP2
00000a4c: SSTORE
00000a4d: PUSH1 0x04
00000a4f: SLOAD
00000a50: DUP2
00000a51: SLOAD
00000a52: SWAP1
00000a53: DUP8
00000a54: DIV
00000a55: PUSH5 0x02540be400
00000a5b: MUL
00000a5c: SWAP2
00000a5d: SWAP1
00000a5e: PUSH1 0x00
00000a60: NOT
00000a61: DUP2
00000a62: ADD
00000a63: SWAP1
00000a64: DUP2
00000a65: LT
00000a66: ISZERO
00000a67: PUSH2 0x0002
00000a6a: JUMPI
00000a6b: PUSH1 0x03
00000a6d: MUL
00000a6e: PUSH1 0x00
00000a70: DUP1
00000a71: MLOAD
00000a72: PUSH1 0x20
00000a74: PUSH2 0x0d74
00000a77: DUP4
00000a78: CODECOPY
00000a79: DUP2
00000a7a: MLOAD
00000a7b: SWAP2
00000a7c: MSTORE
00000a7d: ADD
00000a7e: SWAP2
00000a7f: SWAP1
00000a80: SWAP2
00000a81: SSTORE
00000a82: PUSH1 0x40
00000a84: DUP1
00000a85: MLOAD
00000a86: DUP1
00000a87: DUP3
00000a88: ADD
00000a89: SWAP1
00000a8a: SWAP2
00000a8b: MSTORE
00000a8c: PUSH1 0x1b
00000a8e: DUP2
00000a8f: MSTORE
00000a90: PUSH32 0x4e657720496e766573746f7220686173206a6f696e6564207573210000000000
00000ab1: PUSH1 0x20
00000ab3: SWAP2
00000ab4: DUP3
00000ab5: ADD
00000ab6: SWAP1
00000ab7: DUP2
00000ab8: MSTORE
00000ab9: PUSH1 0x07
00000abb: DUP1
00000abc: SLOAD
00000abd: SWAP4
00000abe: DUP2
00000abf: SWAP1
00000ac0: MSTORE
00000ac1: SWAP1
00000ac2: MLOAD
00000ac3: PUSH1 0xff
00000ac5: NOT
00000ac6: AND
00000ac7: PUSH1 0x36
00000ac9: OR
00000aca: DUP2
00000acb: SSTORE
00000acc: SWAP2
00000acd: PUSH2 0x0b02
00000ad0: SWAP2
00000ad1: PUSH1 0x02
00000ad3: PUSH1 0x01
00000ad5: DUP4
00000ad6: AND
00000ad7: ISZERO
00000ad8: PUSH2 0x0100
00000adb: MUL
00000adc: PUSH1 0x00
00000ade: NOT
00000adf: ADD
00000ae0: SWAP1
00000ae1: SWAP3
00000ae2: AND
00000ae3: SWAP2
00000ae4: SWAP1
00000ae5: SWAP2
00000ae6: DIV
00000ae7: PUSH1 0x1f
00000ae9: ADD
00000aea: DIV
00000aeb: PUSH1 0x00
00000aed: DUP1
00000aee: MLOAD
00000aef: PUSH1 0x20
00000af1: PUSH2 0x0d54
00000af4: DUP4
00000af5: CODECOPY
00000af6: DUP2
00000af7: MLOAD
00000af8: SWAP2
00000af9: MSTORE
00000afa: SWAP1
00000afb: DUP2
00000afc: ADD
00000afd: SWAP1
00000afe: PUSH2 0x08ec
00000b01: JUMP
00000b02: JUMPDEST
00000b03: POP
00000b04: POP
00000b05: PUSH1 0x00
00000b07: SWAP1
00000b08: POP
00000b09: JUMPDEST
00000b0a: PUSH1 0x00
00000b0c: SLOAD
00000b0d: DUP2
00000b0e: LT
00000b0f: ISZERO
00000b10: PUSH2 0x0b76
00000b13: JUMPI
00000b14: PUSH1 0x00
00000b16: DUP1
00000b17: SLOAD
00000b18: PUSH1 0x04
00000b1a: SLOAD
00000b1b: SWAP2
00000b1c: SWAP1
00000b1d: DUP4
00000b1e: SWAP1
00000b1f: DUP2
00000b20: LT
00000b21: ISZERO
00000b22: PUSH2 0x0002
00000b25: JUMPI
00000b26: DUP2
00000b27: DUP1
00000b28: MSTORE
00000b29: DUP2
00000b2a: SLOAD
00000b2b: PUSH1 0x03
00000b2d: SWAP2
00000b2e: SWAP1
00000b2f: SWAP2
00000b30: MUL
00000b31: PUSH1 0x00
00000b33: DUP1
00000b34: MLOAD
00000b35: PUSH1 0x20
00000b37: PUSH2 0x0d94
00000b3a: DUP4
00000b3b: CODECOPY
00000b3c: DUP2
00000b3d: MLOAD
00000b3e: SWAP2
00000b3f: MSTORE
00000b40: ADD
00000b41: SLOAD
00000b42: SWAP3
00000b43: SWAP1
00000b44: SWAP3
00000b45: DIV
00000b46: PUSH5 0x02540be400
00000b4c: MUL
00000b4d: SWAP2
00000b4e: DUP4
00000b4f: SWAP1
00000b50: DUP2
00000b51: LT
00000b52: ISZERO
00000b53: PUSH2 0x0002
00000b56: JUMPI
00000b57: PUSH1 0x03
00000b59: MUL
00000b5a: PUSH1 0x00
00000b5c: DUP1
00000b5d: MLOAD
00000b5e: PUSH1 0x20
00000b60: PUSH2 0x0d74
00000b63: DUP4
00000b64: CODECOPY
00000b65: DUP2
00000b66: MLOAD
00000b67: SWAP2
00000b68: MSTORE
00000b69: ADD
00000b6a: SWAP2
00000b6b: SWAP1
00000b6c: SWAP2
00000b6d: SSTORE
00000b6e: POP
00000b6f: PUSH1 0x01
00000b71: ADD
00000b72: PUSH2 0x0b09
00000b75: JUMP
00000b76: JUMPDEST
00000b77: PUSH2 0x099f
00000b7a: JUMP
00000b7b: JUMPDEST
00000b7c: POP
00000b7d: POP
00000b7e: JUMPDEST
00000b7f: POP
00000b80: JUMP
00000b81: JUMPDEST
00000b82: DUP3
00000b83: DUP1
00000b84: ADD
00000b85: PUSH1 0x01
00000b87: ADD
00000b88: DUP6
00000b89: SSTORE
00000b8a: DUP3
00000b8b: ISZERO
00000b8c: PUSH2 0x0366
00000b8f: JUMPI
00000b90: SWAP2
00000b91: DUP3
00000b92: ADD
00000b93: JUMPDEST
00000b94: DUP3
00000b95: DUP2
00000b96: GT
00000b97: ISZERO
00000b98: PUSH2 0x0366
00000b9b: JUMPI
00000b9c: DUP3
00000b9d: MLOAD
00000b9e: DUP3
00000b9f: PUSH1 0x00
00000ba1: POP
00000ba2: SSTORE
00000ba3: SWAP2
00000ba4: PUSH1 0x20
00000ba6: ADD
00000ba7: SWAP2
00000ba8: SWAP1
00000ba9: PUSH1 0x01
00000bab: ADD
00000bac: SWAP1
00000bad: PUSH2 0x0b93
00000bb0: JUMP
00000bb1: JUMPDEST
00000bb2: POP
00000bb3: PUSH2 0x0bbd
00000bb6: SWAP3
00000bb7: SWAP2
00000bb8: POP
00000bb9: PUSH2 0x08ec
00000bbc: JUMP
00000bbd: JUMPDEST
00000bbe: POP
00000bbf: POP
00000bc0: JUMP
00000bc1: JUMPDEST
00000bc2: POP
00000bc3: POP
00000bc4: PUSH1 0x00
00000bc6: DUP1
00000bc7: SLOAD
00000bc8: DUP6
00000bc9: SWAP4
00000bca: POP
00000bcb: SWAP1
00000bcc: SWAP2
00000bcd: POP
00000bce: PUSH1 0x00
00000bd0: NOT
00000bd1: DUP2
00000bd2: ADD
00000bd3: SWAP1
00000bd4: DUP2
00000bd5: LT
00000bd6: ISZERO
00000bd7: PUSH2 0x0002
00000bda: JUMPI
00000bdb: DUP2
00000bdc: DUP1
00000bdd: MSTORE
00000bde: PUSH1 0x03
00000be0: MUL
00000be1: PUSH1 0x00
00000be3: DUP1
00000be4: MLOAD
00000be5: PUSH1 0x20
00000be7: PUSH2 0x0d34
00000bea: DUP4
00000beb: CODECOPY
00000bec: DUP2
00000bed: MLOAD
00000bee: SWAP2
00000bef: MSTORE
00000bf0: ADD
00000bf1: DUP1
00000bf2: SLOAD
00000bf3: PUSH1 0x01
00000bf5: PUSH1 0xa0
00000bf7: PUSH1 0x02
00000bf9: EXP
00000bfa: SUB
00000bfb: NOT
00000bfc: AND
00000bfd: SWAP1
00000bfe: SWAP3
00000bff: OR
00000c00: SWAP1
00000c01: SWAP2
00000c02: SSTORE
00000c03: DUP1
00000c04: SLOAD
00000c05: DUP3
00000c06: SWAP2
00000c07: SWAP1
00000c08: PUSH1 0x00
00000c0a: NOT
00000c0b: DUP2
00000c0c: ADD
00000c0d: SWAP1
00000c0e: DUP2
00000c0f: LT
00000c10: ISZERO
00000c11: PUSH2 0x0002
00000c14: JUMPI
00000c15: PUSH1 0x03
00000c17: MUL
00000c18: PUSH1 0x00
00000c1a: DUP1
00000c1b: MLOAD
00000c1c: PUSH1 0x20
00000c1e: PUSH2 0x0d94
00000c21: DUP4
00000c22: CODECOPY
00000c23: DUP2
00000c24: MLOAD
00000c25: SWAP2
00000c26: MSTORE
00000c27: ADD
00000c28: SWAP2
00000c29: SWAP1
00000c2a: SWAP2
00000c2b: SSTORE
00000c2c: PUSH1 0x04
00000c2e: SLOAD
00000c2f: DUP2
00000c30: SLOAD
00000c31: SWAP1
00000c32: DUP4
00000c33: DIV
00000c34: PUSH5 0x02540be400
00000c3a: MUL
00000c3b: SWAP2
00000c3c: SWAP1
00000c3d: PUSH1 0x00
00000c3f: NOT
00000c40: DUP2
00000c41: ADD
00000c42: SWAP1
00000c43: DUP2
00000c44: LT
00000c45: ISZERO
00000c46: PUSH2 0x0002
00000c49: JUMPI
00000c4a: PUSH1 0x03
00000c4c: MUL
00000c4d: PUSH1 0x00
00000c4f: DUP1
00000c50: MLOAD
00000c51: PUSH1 0x20
00000c53: PUSH2 0x0d74
00000c56: DUP4
00000c57: CODECOPY
00000c58: DUP2
00000c59: MLOAD
00000c5a: SWAP2
00000c5b: MSTORE
00000c5c: ADD
00000c5d: SWAP2
00000c5e: SWAP1
00000c5f: SWAP2
00000c60: SSTORE
00000c61: PUSH1 0x40
00000c63: DUP1
00000c64: MLOAD
00000c65: PUSH1 0x60
00000c67: DUP2
00000c68: ADD
00000c69: DUP3
00000c6a: MSTORE
00000c6b: PUSH1 0x32
00000c6d: DUP2
00000c6e: MSTORE
00000c6f: PUSH32 0x4e6577206d616e75616c20496e766573746f7220686173206265656e20616464
00000c90: PUSH1 0x20
00000c92: DUP3
00000c93: DUP2
00000c94: ADD
00000c95: SWAP2
00000c96: DUP3
00000c97: MSTORE
00000c98: PUSH32 0x656420627920746865204d616e61676572210000000000000000000000000000
00000cb9: SWAP4
00000cba: DUP4
00000cbb: ADD
00000cbc: SWAP4
00000cbd: SWAP1
00000cbe: SWAP4
00000cbf: MSTORE
00000cc0: PUSH1 0x07
00000cc2: DUP1
00000cc3: SLOAD
00000cc4: SWAP5
00000cc5: DUP2
00000cc6: SWAP1
00000cc7: MSTORE
00000cc8: PUSH1 0x65
00000cca: DUP2
00000ccb: SSTORE
00000ccc: SWAP4
00000ccd: PUSH1 0x00
00000ccf: DUP1
00000cd0: MLOAD
00000cd1: PUSH1 0x20
00000cd3: PUSH2 0x0d54
00000cd6: DUP4
00000cd7: CODECOPY
00000cd8: DUP2
00000cd9: MLOAD
00000cda: SWAP2
00000cdb: MSTORE
00000cdc: PUSH1 0x1f
00000cde: PUSH1 0x02
00000ce0: PUSH2 0x0100
00000ce3: PUSH1 0x01
00000ce5: DUP6
00000ce6: AND
00000ce7: ISZERO
00000ce8: MUL
00000ce9: PUSH1 0x00
00000ceb: NOT
00000cec: ADD
00000ced: SWAP1
00000cee: SWAP4
00000cef: AND
00000cf0: SWAP3
00000cf1: SWAP1
00000cf2: SWAP3
00000cf3: DIV
00000cf4: SWAP2
00000cf5: SWAP1
00000cf6: SWAP2
00000cf7: ADD
00000cf8: SWAP4
00000cf9: SWAP1
00000cfa: SWAP4
00000cfb: DIV
00000cfc: DUP4
00000cfd: ADD
00000cfe: SWAP3
00000cff: SWAP1
00000d00: SWAP2
00000d01: PUSH1 0x52
00000d03: ADD
00000d04: JUMPDEST
00000d05: DUP3
00000d06: DUP2
00000d07: GT
00000d08: ISZERO
00000d09: PUSH2 0x0d22
00000d0c: JUMPI
00000d0d: DUP3
00000d0e: MLOAD
00000d0f: DUP3
00000d10: PUSH1 0x00
00000d12: POP
00000d13: SSTORE
00000d14: SWAP2
00000d15: PUSH1 0x20
00000d17: ADD
00000d18: SWAP2
00000d19: SWAP1
00000d1a: PUSH1 0x01
00000d1c: ADD
00000d1d: SWAP1
00000d1e: PUSH2 0x0d04
00000d21: JUMP
00000d22: JUMPDEST
00000d23: POP
00000d24: PUSH2 0x0d2e
00000d27: SWAP3
00000d28: SWAP2
00000d29: POP
00000d2a: PUSH2 0x08ec
00000d2d: JUMP
00000d2e: JUMPDEST
00000d2f: POP
00000d30: POP
00000d31: POP
00000d32: POP
00000d33: JUMP
00000d34: UNKNOWN(0x29)
00000d35: UNKNOWN(0x0D)
00000d36: UNKNOWN(0xEC)
00000d37: UNKNOWN(0xD9)
00000d38: SLOAD
00000d39: DUP12
00000d3a: PUSH3 0xa8d603
00000d3e: GASLIMIT
00000d3f: UNKNOWN(0xA9)
00000d40: DUP9
00000d41: CODESIZE
00000d42: PUSH16 0xc84ba6bc95484008f6362f93160ef3e5
00000d53: PUSH4 0xa66cc928
00000d58: UNKNOWN(0xB5)
00000d59: UNKNOWN(0xED)
00000d5a: UNKNOWN(0xB8)
00000d5b: UNKNOWN(0x2A)
00000d5c: UNKNOWN(0xF9)
00000d5d: UNKNOWN(0xBD)
00000d5e: BLOBHASH
00000d5f: SWAP3
00000d60: UNKNOWN(0x29)
00000d61: SLOAD
00000d62: ISZERO
00000d63: GAS
00000d64: UNKNOWN(0xB7)
00000d65: UNKNOWN(0xB0)
00000d66: SWAP5
00000d67: UNKNOWN(0x26)
00000d68: SWAP5
00000d69: UNKNOWN(0xBE)
00000d6a: LOG4
00000d6b: UNKNOWN(0xCE)
00000d6c: DIFFICULTY
00000d6d: PUSH7 0x1d9a8736c68829
00000d75: UNKNOWN(0x0D)
00000d76: UNKNOWN(0xEC)
00000d77: UNKNOWN(0xD9)
00000d78: SLOAD
00000d79: DUP12
00000d7a: PUSH3 0xa8d603
00000d7e: GASLIMIT
00000d7f: UNKNOWN(0xA9)
00000d80: DUP9
00000d81: CODESIZE
00000d82: PUSH16 0xc84ba6bc95484008f6362f93160ef3e5
00000d93: PUSH6 0x290decd9548b
00000d9a: PUSH3 0xa8d603
00000d9e: GASLIMIT
00000d9f: UNKNOWN(0xA9)
00000da0: DUP9
00000da1: CODESIZE
00000da2: PUSH16 0xc84ba6bc95484008f6362f93160ef3e5
00000db3: PUSH5

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 yes yes
view
trace_id: 0xf7a9df4fb012bd4cacb56d1ec6a9c2abfce0898aa27d822c0f09827fcfe53f97
call_targets: 0x007d42b9192b8c087b0d3e6ef73aae48e74b41c1, 0x7e6f7232ddddc7d5a075150db12e5235455d9432
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0xf7a9df4fb012bd4cacb56d1ec6a9c2abfce0898aa27d822c0f09827fcfe53f97",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x007d42b9192b8c087b0d3e6ef73aae48e74b41c1",
        "0x7e6f7232ddddc7d5a075150db12e5235455d9432"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x1097e579",
            "selector": "0x1097e579",
            "calldata_variants": [
                "0x1097e579",
                "0x1097e5790000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x112c7075",
            "selector": "0x112c7075",
            "calldata_variants": [
                "0x112c7075",
                "0x112c70750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3edd90e7",
            "selector": "0x3edd90e7",
            "calldata_variants": [
                "0x3edd90e7",
                "0x3edd90e70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3feb5f2b",
            "selector": "0x3feb5f2b",
            "calldata_variants": [
                "0x3feb5f2b",
                "0x3feb5f2b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x476e04c7",
            "selector": "0x476e04c7",
            "calldata_variants": [
                "0x476e04c7",
                "0x476e04c70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4cd11943",
            "selector": "0x4cd11943",
            "calldata_variants": [
                "0x4cd11943",
                "0x4cd119430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6b1781b6",
            "selector": "0x6b1781b6",
            "calldata_variants": [
                "0x6b1781b6",
                "0x6b1781b60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6c3772fd",
            "selector": "0x6c3772fd",
            "calldata_variants": [
                "0x6c3772fd",
                "0x6c3772fd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 268,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 434,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1320,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 5,
    "guards_detected": [],
    "untrusted_call_count": 5
}
high other detector ETH value transfer possible 55 yes yes
view
trace_id: 0xf7a9df4fb012bd4cacb56d1ec6a9c2abfce0898aa27d822c0f09827fcfe53f97
call_targets: 0x007d42b9192b8c087b0d3e6ef73aae48e74b41c1, 0x7e6f7232ddddc7d5a075150db12e5235455d9432
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0xf7a9df4fb012bd4cacb56d1ec6a9c2abfce0898aa27d822c0f09827fcfe53f97",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x007d42b9192b8c087b0d3e6ef73aae48e74b41c1",
        "0x7e6f7232ddddc7d5a075150db12e5235455d9432"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x1097e579",
            "selector": "0x1097e579",
            "calldata_variants": [
                "0x1097e579",
                "0x1097e5790000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x112c7075",
            "selector": "0x112c7075",
            "calldata_variants": [
                "0x112c7075",
                "0x112c70750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3edd90e7",
            "selector": "0x3edd90e7",
            "calldata_variants": [
                "0x3edd90e7",
                "0x3edd90e70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3feb5f2b",
            "selector": "0x3feb5f2b",
            "calldata_variants": [
                "0x3feb5f2b",
                "0x3feb5f2b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x476e04c7",
            "selector": "0x476e04c7",
            "calldata_variants": [
                "0x476e04c7",
                "0x476e04c70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4cd11943",
            "selector": "0x4cd11943",
            "calldata_variants": [
                "0x4cd11943",
                "0x4cd119430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6b1781b6",
            "selector": "0x6b1781b6",
            "calldata_variants": [
                "0x6b1781b6",
                "0x6b1781b60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6c3772fd",
            "selector": "0x6c3772fd",
            "calldata_variants": [
                "0x6c3772fd",
                "0x6c3772fd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 268,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 434,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1320,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 5,
    "guards_detected": []
}
high math codex Integer division order zeroes ownership for most investors, breaking dividends 85 no
view
evidence_json
{
    "evidence": "`percentage_ownership = amount / totaldeposited * 10000000000` (division before scaling)",
    "locations": [
        "contracts/Contract.sol:127",
        "contracts/Contract.sol:131",
        "contracts/Contract.sol:137",
        "contracts/Contract.sol:184"
    ],
    "recommendation": "Compute ownership as `amount * 1e10 / totaldeposited` (or use a fixed\u2011point library) and recalculate all investors\u2019 percentages consistently after any deposit; add invariant tests to ensure the sum is ~1e10 and non\u2011zero for holders.",
    "exploit_scenario": "After a second investor deposits, each investor\u2019s `percentage_ownership` becomes 0 because `amount / totaldeposited` truncates to 0 for any `amount < totaldeposited`. Subsequent dividends compute `PRE_amount * 0 / 1e10`, so payouts are 0 and dividend funds remain stuck in the contract with no withdrawal path."
}
medium other codex Unchecked `send` return values lead to silent payout failures and stuck funds 75 no
view
evidence_json
{
    "evidence": "External payouts use `send` without checking the return value and accounting is updated regardless of success.",
    "locations": [
        "contracts/Contract.sol:82",
        "contracts/Contract.sol:91",
        "contracts/Contract.sol:142",
        "contracts/Contract.sol:162"
    ],
    "recommendation": "Check `send` return values and either revert on failure or record owed balances for later withdrawal (pull\u2011payments). Consider using `call{value:...}` with success checks and update accounting only after successful transfers. For emergency recovery, prefer `address(this).balance` or explicitly track all sources of funds.",
    "exploit_scenario": "If an investor is a contract that rejects ETH (or owner is a contract with reverting fallback), `send` returns false. The code still updates `totalpaidout/totaldividends` and never retries, leaving ETH trapped in the contract while accounting reports it paid. Those stuck funds are also not recoverable via `Emergency`, which relies on the internal `balance` tracker."
}
medium other codex Unbounded investor loops allow gas‑limit DoS of deposits and dividends 75 no
view
evidence_json
{
    "evidence": "Loops over `investors` on every dividend distribution and new investor entry without bounds.",
    "locations": [
        "contracts/Contract.sol:88",
        "contracts/Contract.sol:130",
        "contracts/Contract.sol:111"
    ],
    "recommendation": "Avoid iterating over all investors in a single transaction. Switch to a pull\u2011payment model or batched payouts with pagination, and remove full\u2011array recalculation on every deposit.",
    "exploit_scenario": "An attacker can create many investor entries (multiple addresses with \u22652 ETH). Any dividend (<2 ETH) triggers a loop over all investors and external sends; new investor deposits also recompute percentages for all investors. Once the list grows large, these operations exceed block gas limits, preventing deposits and dividend distribution."
}