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

Analysis Run

019be3d6-83fb-70cc-861b-5b64aafec5b5

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 22, 2026 3:54 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
Untrusted CALL target/value reachable
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
40967 artifact.fetch complete 1 / 3 2 months ago
40968 proxy.resolve complete 1 / 3 2 months ago
40969 tool.cast_disasm complete 1 / 3 2 months ago
40970 analysis.bundle complete 1 / 3 2 months ago
40971 capability.graph complete 1 / 3 2 months ago
40972 detector.run complete 1 / 3 2 months ago
40973 validation.fork complete 1 / 3 2 months ago
41377 report.consolidate complete 1 / 6 2 months ago
41378 tool.slither complete 1 / 2 2 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
Status
complete
Attempts
1 / 2
Findings
0
Solc
0.4.18 (solc-select)
View stderr
'forge clean' running (wd: /tmp/slither-y1rsmx53)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-y1rsmx53)

IceRockMining.fallback() (contracts/Contract.sol#202-219) performs a multiplication on the result of a division:
	- valueToPass = amountInUSDollars / priceUSD (contracts/Contract.sol#205-206)
	- valueToPass = (valueToPass * (100 + bonus)) / 100 (contracts/Contract.sol#206-209)
IceRockMining.approveDividends(uint256) (contracts/Contract.sol#219-228) performs a multiplication on the result of a division:
	- dividendsPerToken = totalDividendsAmount * 10 ** 18 / initialSupply (contracts/Contract.sol#221-222)
	- approvedDividends[tokenHolder] = balances.get(tokenHolder) * dividendsPerToken (contracts/Contract.sol#227-228)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply

IceRockMining.transfer(address,uint256) (contracts/Contract.sol#124-138) ignores return value by balances.insert(msg.sender,balances.get(msg.sender) - value) (contracts/Contract.sol#129-130)
IceRockMining.transfer(address,uint256) (contracts/Contract.sol#124-138) ignores return value by balances.insert(to,balances.get(to) + value) (contracts/Contract.sol#132)
IceRockMining.transfer(address,uint256) (contracts/Contract.sol#124-138) ignores return value by balances.insert(to,value) (contracts/Contract.sol#134-135)
IceRockMining.transferFrom(address,address,uint256) (contracts/Contract.sol#138-158) ignores return value by balances.insert(to,amountToInsert) (contracts/Contract.sol#151)
IceRockMining.transferFrom(address,address,uint256) (contracts/Contract.sol#138-158) ignores return value by balances.insert(from,balances.get(from) - value) (contracts/Contract.sol#153-154)
IceRockMining.IceRockMining() (contracts/Contract.sol#167-171) ignores return value by balances.insert(IceRockMiningAddress,initialSupply) (contracts/Contract.sol#169-171)
IceRockMining.sendp(address,uint256) (contracts/Contract.sol#184-202) ignores return value by balances.insert(addr,balances.get(addr) + amount) (contracts/Contract.sol#192-193)
IceRockMining.sendp(address,uint256) (contracts/Contract.sol#184-202) ignores return value by balances.insert(addr,amount) (contracts/Contract.sol#195)
IceRockMining.sendp(address,uint256) (contracts/Contract.sol#184-202) ignores return value by balances.insert(IceRockMiningAddress,balances.get(IceRockMiningAddress) - amount) (contracts/Contract.sol#195-199)
IceRockMining.fallback() (contracts/Contract.sol#202-219) ignores return value by balances.insert(msg.sender,balances.get(msg.sender) + valueToPass) (contracts/Contract.sol#211-212)
IceRockMining.fallback() (contracts/Contract.sol#202-219) ignores return value by balances.insert(msg.sender,valueToPass) (contracts/Contract.sol#214-215)
IceRockMining.fallback() (contracts/Contract.sol#202-219) ignores return value by balances.insert(IceRockMiningAddress,balances.get(IceRockMiningAddress) - valueToPass) (contracts/Contract.sol#215-216)
IceRockMining.burnUnsold() (contracts/Contract.sol#228-235) ignores return value by balances.insert(IceRockMiningAddress,0) (contracts/Contract.sol#231-232)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return

IceRockMining.setCurrentExchangeRate(uint256) (contracts/Contract.sol#172-177) should emit an event for: 
	- currentUSDExchangeRate = rate (contracts/Contract.sol#176) 
IceRockMining.setBonus(uint256) (contracts/Contract.sol#177-180) should emit an event for: 
	- bonus = value (contracts/Contract.sol#178-180) 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic

Modifier IceRockMining.onlyOwner() (contracts/Contract.sol#106-108) does not always execute _; or revert
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier

IceRockMining.transferAllDividends() (contracts/Contract.sol#238-250) has external calls inside a loop: tokenHolder.transfer(approvedDividends[tokenHolder]) (contracts/Contract.sol#247-248)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop

Version constraint ^0.4.18 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor_0.4.x
	- IncorrectEventSignatureInLibraries_0.4.x
	- ExpExponentCleanup
	- EventStructWrongData
	- NestedArrayFunctionCallDecoder.
It is used by:
	- ^0.4.18 (contracts/Contract.sol#1)
solc-0.4.18 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

Contract itMaps (contracts/Contract.sol#2-70) is not in CapWords
Struct itMaps.entryAddressUint (contracts/Contract.sol#7-11) is not in CapWords
Struct itMaps.itMapAddressUint (contracts/Contract.sol#12-16) is not in CapWords
Variable IceRockMining.IceRockMiningAddress (contracts/Contract.sol#94-95) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions

Reentrancy in IceRockMining.transferAllDividends() (contracts/Contract.sol#238-250):
	External calls:
	- tokenHolder.transfer(approvedDividends[tokenHolder]) (contracts/Contract.sol#247-248)
	State variables written after the call(s):
	- approvedDividends[tokenHolder] = 0 (contracts/Contract.sol#249-250)
	Event emitted after the call(s):
	- DividendsTransfered(tokenHolder,approvedDividends[tokenHolder]) (contracts/Contract.sol#248-249)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4

IceRockMining.slitherConstructorVariables() (contracts/Contract.sol#84-253) uses literals with too many digits:
	- initialSupply = 20000000 (contracts/Contract.sol#87-88)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits

IceRockMining.priceUSD (contracts/Contract.sol#94) should be constant 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant
. analyzed (3 contracts with 100 detectors), 28 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.4.18",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.4.18",
        "install_stderr": null,
        "install_stdout": "Version '0.4.18' is already installed, skipping..."
    },
    "solc_args": "--base-path /tmp/slither-y1rsmx53 --allow-paths /tmp/slither-y1rsmx53,/tmp/slither-y1rsmx53/lib,/tmp/slither-y1rsmx53/src",
    "remappings": [],
    "source_files": [
        "contracts/Contract.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 28,
    "workspace_hash": "a8818a31f6054adadff955578bd1aaae2b06f3f3c61faf35846206263bb3d0c4",
    "duration_seconds": 0.702416181564331,
    "solc_version_requested": "0.4.19"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Two dividend payout issues can block or miscompute distributions for token holders.
View stdout
{"no_findings":false,"summary":"Two dividend payout issues can block or miscompute distributions for token holders.","findings":[{"severity":"medium","category":"math","title":"Dividend per-token calculation over-scales by 1e18, causing massive payouts or overflow","exploit_scenario":"The owner calls approveDividends with an intended total dividend amount in wei. The contract multiplies by 1e18 and never scales back down, so each holder’s approvedDividends becomes balance * totalDividendsAmount * 1e18 / initialSupply. This inflates payouts by 1e18 and can overflow, making transferAllDividends revert due to insufficient balance or incorrect values, effectively blocking payouts.","recommendation":"Compute dividends as (balance * totalDividendsAmount) / initialSupply without the extra 1e18 scaling, or divide by 1e18 when assigning approvedDividends. Use SafeMath to avoid overflow.","evidence":"dividendsPerToken is scaled by 1e18 but approvedDividends does not divide by 1e18, inflating the result.","locations":["contracts/Contract.sol:226","contracts/Contract.sol:231"]},{"severity":"medium","category":"other","title":"Dividend distribution can be permanently blocked by a reverting recipient or gas limit","exploit_scenario":"Any token holder can be a contract with a fallback that reverts on receiving ETH. When transferAllDividends iterates, the first such holder causes transfer to revert, which reverts the entire transaction and blocks all dividend payouts. Additionally, the unbounded loop can exceed the block gas limit as the holder list grows, preventing distributions.","recommendation":"Use a pull-based withdrawal model (holders claim individually) or record credits and let users withdraw. If keeping push, use send/call with failure handling and avoid unbounded loops.","evidence":"transferAllDividends iterates all holders and uses transfer without handling reverts or gas limits.","locations":["contracts/Contract.sol:247","contracts/Contract.sol:252"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-tzbo_kiu
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be46a-07e0-7110-bad2-a20e5b478942
--------
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**
exec
/bin/bash -lc ls in /tmp/codex-tzbo_kiu succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts

thinking
**Preparing to read audit bundle**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-tzbo_kiu succeeded in 6ms:
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
================================================================================
pragma solidity ^0.4.18;

library itMaps {

    /* itMapAddressUint
         address =>  Uint
    */
    struct entryAddressUint {
    // Equal to the index of the key of this item in keys, plus 1.
    uint keyIndex;
    uint value;
    }

    struct itMapAddressUint {


thinking
**Auditing reentrancy and access control risks**

The transferAllDividends reentrancy is unlikely due to 2300 gas limit on transfer and fallback logic consuming more gas than that, preventing reentry. However, there's a medium-severity DoS risk if a tokenHolder contract reverts during transfer, halting the loop without catching exceptions. The onlyOwner modifier silently ignores unauthorized calls rather than reverting, which prevents exploitation but might cause silent failures. The approve function restricts zero value and balance but doesn't prevent known race conditions, which is not marked as vulnerability here.
thinking
**Detecting major dividend calculation and DoS bugs**

The dividend calculation misses a division by 1e18, causing massive approved dividend values that likely overflow or revert transfers, resulting in DoS during payouts. The dividend distribution loops over all holders calling external transfers, so any reverting holder or high holder count can DoS payouts via gas limits. Also, dividend approvals set before transfers revert remain uncleared, worsening the issue. These represent high-severity logical and gas-limit DoS vulnerabilities related to external call patterns and accounting.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-tzbo_kiu succeeded in 6ms:
     1	pragma solidity ^0.4.18;
     2	
     3	library itMaps {
     4	
     5	    /* itMapAddressUint
     6	         address =>  Uint
     7	    */
     8	    struct entryAddressUint {
     9	    // Equal to the index of the key of this item in keys, plus 1.
    10	    uint keyIndex;
    11	    uint value;
    12	    }
    13	
    14	    struct itMapAddressUint {
    15	    mapping(address => entryAddressUint) data;
    16	    address[] keys;
    17	    }
    18	
    19	    function insert(itMapAddressUint storage self, address key, uint value) internal returns (bool replaced) {
    20	        entryAddressUint storage e = self.data[key];


thinking
**Drafting detailed vulnerability findings**

I'm structuring a JSON output schema focusing on key fields like severity and category while outlining an initial finding about dividend calculation errors causing potential payout blockage, debating classification between high and medium severity based on exploitability and impact.
thinking
**Compiling JSON vulnerability findings**

I'm detailing two medium-severity findings: one about dividend scaling overflow causing DoS, and another around unbounded transfer loops blocked by a malicious recipient revert, including line-specific evidence and precise location references for output.
codex
{"no_findings":false,"summary":"Two dividend payout issues can block or miscompute distributions for token holders.","findings":[{"severity":"medium","category":"math","title":"Dividend per-token calculation over-scales by 1e18, causing massive payouts or overflow","exploit_scenario":"The owner calls approveDividends with an intended total dividend amount in wei. The contract multiplies by 1e18 and never scales back down, so each holder’s approvedDividends becomes balance * totalDividendsAmount * 1e18 / initialSupply. This inflates payouts by 1e18 and can overflow, making transferAllDividends revert due to insufficient balance or incorrect values, effectively blocking payouts.","recommendation":"Compute dividends as (balance * totalDividendsAmount) / initialSupply without the extra 1e18 scaling, or divide by 1e18 when assigning approvedDividends. Use SafeMath to avoid overflow.","evidence":"dividendsPerToken is scaled by 1e18 but approvedDividends does not divide by 1e18, inflating the result.","locations":["contracts/Contract.sol:226","contracts/Contract.sol:231"]},{"severity":"medium","category":"other","title":"Dividend distribution can be permanently blocked by a reverting recipient or gas limit","exploit_scenario":"Any token holder can be a contract with a fallback that reverts on receiving ETH. When transferAllDividends iterates, the first such holder causes transfer to revert, which reverts the entire transaction and blocks all dividend payouts. Additionally, the unbounded loop can exceed the block gas limit as the holder list grows, preventing distributions.","recommendation":"Use a pull-based withdrawal model (holders claim individually) or record credits and let users withdraw. If keeping push, use send/call with failure handling and avoid unbounded loops.","evidence":"transferAllDividends iterates all holders and uses transfer without handling reverts or gas limits.","locations":["contracts/Contract.sol:247","contracts/Contract.sol:252"]}]}
tokens used
12,070
Metadata
{
    "codex": {
        "ran_at": "2026-01-22T06:36:09.002200+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Two dividend payout issues can block or miscompute distributions for token holders.",
    "raw_final": {
        "summary": "Two dividend payout issues can block or miscompute distributions for token holders.",
        "findings": [
            {
                "title": "Dividend per-token calculation over-scales by 1e18, causing massive payouts or overflow",
                "category": "math",
                "evidence": "dividendsPerToken is scaled by 1e18 but approvedDividends does not divide by 1e18, inflating the result.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:226",
                    "contracts/Contract.sol:231"
                ],
                "recommendation": "Compute dividends as (balance * totalDividendsAmount) / initialSupply without the extra 1e18 scaling, or divide by 1e18 when assigning approvedDividends. Use SafeMath to avoid overflow.",
                "exploit_scenario": "The owner calls approveDividends with an intended total dividend amount in wei. The contract multiplies by 1e18 and never scales back down, so each holder\u2019s approvedDividends becomes balance * totalDividendsAmount * 1e18 / initialSupply. This inflates payouts by 1e18 and can overflow, making transferAllDividends revert due to insufficient balance or incorrect values, effectively blocking payouts."
            },
            {
                "title": "Dividend distribution can be permanently blocked by a reverting recipient or gas limit",
                "category": "other",
                "evidence": "transferAllDividends iterates all holders and uses transfer without handling reverts or gas limits.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:247",
                    "contracts/Contract.sol:252"
                ],
                "recommendation": "Use a pull-based withdrawal model (holders claim individually) or record credits and let users withdraw. If keeping push, use send/call with failure handling and avoid unbounded loops.",
                "exploit_scenario": "Any token holder can be a contract with a fallback that reverts on receiving ETH. When transferAllDividends iterates, the first such holder causes transfer to revert, which reverts the entire transaction and blocks all dividend payouts. Additionally, the unbounded loop can exceed the block gas limit as the holder list grows, preventing distributions."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
2
CALL-family (heavy)
4
EXT*/BALANCE
0
Total opcodes
2198
Flags
create_opcodes_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00e5
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000030: PUSH1 0x00
00000032: CALLDATALOAD
00000033: DIV
00000034: AND
00000035: PUSH4 0x06fdde03
0000003a: DUP2
0000003b: EQ
0000003c: PUSH2 0x020f
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x095ea7b3
00000046: EQ
00000047: PUSH2 0x0299
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x0b98f975
00000051: EQ
00000052: PUSH2 0x02cf
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x18160ddd
0000005c: EQ
0000005d: PUSH2 0x02e7
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x23b872dd
00000067: EQ
00000068: PUSH2 0x030c
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x26ea74e2
00000072: EQ
00000073: PUSH2 0x0334
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x2e1a7d4d
0000007d: EQ
0000007e: PUSH2 0x0353
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x3deaa297
00000088: EQ
00000089: PUSH2 0x0369
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0x70a08231
00000093: EQ
00000094: PUSH2 0x037c
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0x86485cdf
0000009e: EQ
0000009f: PUSH2 0x039b
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0x95d89b41
000000a9: EQ
000000aa: PUSH2 0x03b1
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xa9059cbb
000000b4: EQ
000000b5: PUSH2 0x03c4
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xb4f2dc7d
000000bf: EQ
000000c0: PUSH2 0x03e6
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0xb52a5851
000000ca: EQ
000000cb: PUSH2 0x03fc
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0xd0679d34
000000d5: EQ
000000d6: PUSH2 0x040f
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0xdd62ed3e
000000e0: EQ
000000e1: PUSH2 0x0431
000000e4: JUMPI
000000e5: JUMPDEST
000000e6: PUSH1 0x00
000000e8: DUP1
000000e9: PUSH8 0x0de0b6b3a7640000
000000f2: PUSH1 0x01
000000f4: SLOAD
000000f5: CALLVALUE
000000f6: MUL
000000f7: DUP2
000000f8: ISZERO
000000f9: ISZERO
000000fa: PUSH2 0x00ff
000000fd: JUMPI
000000fe: INVALID
000000ff: JUMPDEST
00000100: DIV
00000101: SWAP2
00000102: POP
00000103: PUSH1 0x03
00000105: SLOAD
00000106: DUP3
00000107: DUP2
00000108: ISZERO
00000109: ISZERO
0000010a: PUSH2 0x010f
0000010d: JUMPI
0000010e: INVALID
0000010f: JUMPDEST
00000110: DIV
00000111: SWAP1
00000112: POP
00000113: PUSH1 0x64
00000115: PUSH1 0x02
00000117: SLOAD
00000118: PUSH1 0x64
0000011a: ADD
0000011b: DUP3
0000011c: MUL
0000011d: DUP2
0000011e: ISZERO
0000011f: ISZERO
00000120: PUSH2 0x0125
00000123: JUMPI
00000124: INVALID
00000125: JUMPDEST
00000126: PUSH1 0x04
00000128: SLOAD
00000129: SWAP2
0000012a: SWAP1
0000012b: DIV
0000012c: SWAP2
0000012d: POP
0000012e: DUP2
0000012f: SWAP1
00000130: PUSH2 0x014a
00000133: SWAP1
00000134: PUSH1 0x05
00000136: SWAP1
00000137: PUSH1 0x01
00000139: PUSH1 0xa0
0000013b: PUSH1 0x02
0000013d: EXP
0000013e: SUB
0000013f: AND
00000140: PUSH4 0xffffffff
00000145: PUSH2 0x0456
00000148: AND
00000149: JUMP
0000014a: JUMPDEST
0000014b: LT
0000014c: PUSH2 0x020b
0000014f: JUMPI
00000150: PUSH2 0x0160
00000153: PUSH1 0x05
00000155: CALLER
00000156: PUSH4 0xffffffff
0000015b: PUSH2 0x0479
0000015e: AND
0000015f: JUMP
00000160: JUMPDEST
00000161: ISZERO
00000162: PUSH2 0x0191
00000165: JUMPI
00000166: PUSH2 0x018b
00000169: CALLER
0000016a: DUP3
0000016b: PUSH2 0x017b
0000016e: PUSH1 0x05
00000170: DUP4
00000171: PUSH4 0xffffffff
00000176: PUSH2 0x0456
00000179: AND
0000017a: JUMP
0000017b: JUMPDEST
0000017c: PUSH1 0x05
0000017e: SWAP3
0000017f: SWAP2
00000180: ADD
00000181: PUSH4 0xffffffff
00000186: PUSH2 0x0496
00000189: AND
0000018a: JUMP
0000018b: JUMPDEST
0000018c: POP
0000018d: PUSH2 0x01a5
00000190: JUMP
00000191: JUMPDEST
00000192: PUSH2 0x01a3
00000195: PUSH1 0x05
00000197: CALLER
00000198: DUP4
00000199: PUSH4 0xffffffff
0000019e: PUSH2 0x0496
000001a1: AND
000001a2: JUMP
000001a3: JUMPDEST
000001a4: POP
000001a5: JUMPDEST
000001a6: PUSH1 0x04
000001a8: SLOAD
000001a9: PUSH2 0x01d8
000001ac: SWAP1
000001ad: PUSH1 0x01
000001af: PUSH1 0xa0
000001b1: PUSH1 0x02
000001b3: EXP
000001b4: SUB
000001b5: AND
000001b6: DUP3
000001b7: PUSH2 0x01c7
000001ba: PUSH1 0x05
000001bc: DUP4
000001bd: PUSH4 0xffffffff
000001c2: PUSH2 0x0456
000001c5: AND
000001c6: JUMP
000001c7: JUMPDEST
000001c8: PUSH1 0x05
000001ca: SWAP3
000001cb: SWAP2
000001cc: SWAP1
000001cd: SUB
000001ce: PUSH4 0xffffffff
000001d3: PUSH2 0x0496
000001d6: AND
000001d7: JUMP
000001d8: JUMPDEST
000001d9: POP
000001da: PUSH1 0x04
000001dc: SLOAD
000001dd: PUSH1 0x01
000001df: PUSH1 0xa0
000001e1: PUSH1 0x02
000001e3: EXP
000001e4: SUB
000001e5: CALLER
000001e6: DUP2
000001e7: AND
000001e8: SWAP2
000001e9: AND
000001ea: PUSH1 0x00
000001ec: DUP1
000001ed: MLOAD
000001ee: PUSH1 0x20
000001f0: PUSH2 0x0d1b
000001f3: DUP4
000001f4: CODECOPY
000001f5: DUP2
000001f6: MLOAD
000001f7: SWAP2
000001f8: MSTORE
000001f9: DUP4
000001fa: PUSH1 0x40
000001fc: MLOAD
000001fd: SWAP1
000001fe: DUP2
000001ff: MSTORE
00000200: PUSH1 0x20
00000202: ADD
00000203: PUSH1 0x40
00000205: MLOAD
00000206: DUP1
00000207: SWAP2
00000208: SUB
00000209: SWAP1
0000020a: LOG3
0000020b: JUMPDEST
0000020c: POP
0000020d: POP
0000020e: STOP
0000020f: JUMPDEST
00000210: CALLVALUE
00000211: ISZERO
00000212: PUSH2 0x021a
00000215: JUMPI
00000216: PUSH1 0x00
00000218: DUP1
00000219: REVERT
0000021a: JUMPDEST
0000021b: PUSH2 0x0222
0000021e: PUSH2 0x0536
00000221: JUMP
00000222: JUMPDEST
00000223: PUSH1 0x40
00000225: MLOAD
00000226: PUSH1 0x20
00000228: DUP1
00000229: DUP3
0000022a: MSTORE
0000022b: DUP2
0000022c: SWAP1
0000022d: DUP2
0000022e: ADD
0000022f: DUP4
00000230: DUP2
00000231: DUP2
00000232: MLOAD
00000233: DUP2
00000234: MSTORE
00000235: PUSH1 0x20
00000237: ADD
00000238: SWAP2
00000239: POP
0000023a: DUP1
0000023b: MLOAD
0000023c: SWAP1
0000023d: PUSH1 0x20
0000023f: ADD
00000240: SWAP1
00000241: DUP1
00000242: DUP4
00000243: DUP4
00000244: PUSH1 0x00
00000246: JUMPDEST
00000247: DUP4
00000248: DUP2
00000249: LT
0000024a: ISZERO
0000024b: PUSH2 0x025e
0000024e: JUMPI
0000024f: DUP1
00000250: DUP3
00000251: ADD
00000252: MLOAD
00000253: DUP4
00000254: DUP3
00000255: ADD
00000256: MSTORE
00000257: PUSH1 0x20
00000259: ADD
0000025a: PUSH2 0x0246
0000025d: JUMP
0000025e: JUMPDEST
0000025f: POP
00000260: POP
00000261: POP
00000262: POP
00000263: SWAP1
00000264: POP
00000265: SWAP1
00000266: DUP2
00000267: ADD
00000268: SWAP1
00000269: PUSH1 0x1f
0000026b: AND
0000026c: DUP1
0000026d: ISZERO
0000026e: PUSH2 0x028b
00000271: JUMPI
00000272: DUP1
00000273: DUP3
00000274: SUB
00000275: DUP1
00000276: MLOAD
00000277: PUSH1 0x01
00000279: DUP4
0000027a: PUSH1 0x20
0000027c: SUB
0000027d: PUSH2 0x0100
00000280: EXP
00000281: SUB
00000282: NOT
00000283: AND
00000284: DUP2
00000285: MSTORE
00000286: PUSH1 0x20
00000288: ADD
00000289: SWAP2
0000028a: POP
0000028b: JUMPDEST
0000028c: POP
0000028d: SWAP3
0000028e: POP
0000028f: POP
00000290: POP
00000291: PUSH1 0x40
00000293: MLOAD
00000294: DUP1
00000295: SWAP2
00000296: SUB
00000297: SWAP1
00000298: RETURN
00000299: JUMPDEST
0000029a: CALLVALUE
0000029b: ISZERO
0000029c: PUSH2 0x02a4
0000029f: JUMPI
000002a0: PUSH1 0x00
000002a2: DUP1
000002a3: REVERT
000002a4: JUMPDEST
000002a5: PUSH2 0x02bb
000002a8: PUSH1 0x01
000002aa: PUSH1 0xa0
000002ac: PUSH1 0x02
000002ae: EXP
000002af: SUB
000002b0: PUSH1 0x04
000002b2: CALLDATALOAD
000002b3: AND
000002b4: PUSH1 0x24
000002b6: CALLDATALOAD
000002b7: PUSH2 0x056d
000002ba: JUMP
000002bb: JUMPDEST
000002bc: PUSH1 0x40
000002be: MLOAD
000002bf: SWAP1
000002c0: ISZERO
000002c1: ISZERO
000002c2: DUP2
000002c3: MSTORE
000002c4: PUSH1 0x20
000002c6: ADD
000002c7: PUSH1 0x40
000002c9: MLOAD
000002ca: DUP1
000002cb: SWAP2
000002cc: SUB
000002cd: SWAP1
000002ce: RETURN
000002cf: JUMPDEST
000002d0: CALLVALUE
000002d1: ISZERO
000002d2: PUSH2 0x02da
000002d5: JUMPI
000002d6: PUSH1 0x00
000002d8: DUP1
000002d9: REVERT
000002da: JUMPDEST
000002db: PUSH2 0x02e5
000002de: PUSH1 0x04
000002e0: CALLDATALOAD
000002e1: PUSH2 0x0603
000002e4: JUMP
000002e5: JUMPDEST
000002e6: STOP
000002e7: JUMPDEST
000002e8: CALLVALUE
000002e9: ISZERO
000002ea: PUSH2 0x02f2
000002ed: JUMPI
000002ee: PUSH1 0x00
000002f0: DUP1
000002f1: REVERT
000002f2: JUMPDEST
000002f3: PUSH2 0x02fa
000002f6: PUSH2 0x0623
000002f9: JUMP
000002fa: JUMPDEST
000002fb: PUSH1 0x40
000002fd: MLOAD
000002fe: SWAP1
000002ff: DUP2
00000300: MSTORE
00000301: PUSH1 0x20
00000303: ADD
00000304: PUSH1 0x40
00000306: MLOAD
00000307: DUP1
00000308: SWAP2
00000309: SUB
0000030a: SWAP1
0000030b: RETURN
0000030c: JUMPDEST
0000030d: CALLVALUE
0000030e: ISZERO
0000030f: PUSH2 0x0317
00000312: JUMPI
00000313: PUSH1 0x00
00000315: DUP1
00000316: REVERT
00000317: JUMPDEST
00000318: PUSH2 0x02bb
0000031b: PUSH1 0x01
0000031d: PUSH1 0xa0
0000031f: PUSH1 0x02
00000321: EXP
00000322: SUB
00000323: PUSH1 0x04
00000325: CALLDATALOAD
00000326: DUP2
00000327: AND
00000328: SWAP1
00000329: PUSH1 0x24
0000032b: CALLDATALOAD
0000032c: AND
0000032d: PUSH1 0x44
0000032f: CALLDATALOAD
00000330: PUSH2 0x062a
00000333: JUMP
00000334: JUMPDEST
00000335: CALLVALUE
00000336: ISZERO
00000337: PUSH2 0x033f
0000033a: JUMPI
0000033b: PUSH1 0x00
0000033d: DUP1
0000033e: REVERT
0000033f: JUMPDEST
00000340: PUSH2 0x02fa
00000343: PUSH1 0x01
00000345: PUSH1 0xa0
00000347: PUSH1 0x02
00000349: EXP
0000034a: SUB
0000034b: PUSH1 0x04
0000034d: CALLDATALOAD
0000034e: AND
0000034f: PUSH2 0x0740
00000352: JUMP
00000353: JUMPDEST
00000354: CALLVALUE
00000355: ISZERO
00000356: PUSH2 0x035e
00000359: JUMPI
0000035a: PUSH1 0x00
0000035c: DUP1
0000035d: REVERT
0000035e: JUMPDEST
0000035f: PUSH2 0x02e5
00000362: PUSH1 0x04
00000364: CALLDATALOAD
00000365: PUSH2 0x075b
00000368: JUMP
00000369: JUMPDEST
0000036a: CALLVALUE
0000036b: ISZERO
0000036c: PUSH2 0x0374
0000036f: JUMPI
00000370: PUSH1 0x00
00000372: DUP1
00000373: REVERT
00000374: JUMPDEST
00000375: PUSH2 0x02e5
00000378: PUSH2 0x07a5
0000037b: JUMP
0000037c: JUMPDEST
0000037d: CALLVALUE
0000037e: ISZERO
0000037f: PUSH2 0x0387
00000382: JUMPI
00000383: PUSH1 0x00
00000385: DUP1
00000386: REVERT
00000387: JUMPDEST
00000388: PUSH2 0x02fa
0000038b: PUSH1 0x01
0000038d: PUSH1 0xa0
0000038f: PUSH1 0x02
00000391: EXP
00000392: SUB
00000393: PUSH1 0x04
00000395: CALLDATALOAD
00000396: AND
00000397: PUSH2 0x08d3
0000039a: JUMP
0000039b: JUMPDEST
0000039c: CALLVALUE
0000039d: ISZERO
0000039e: PUSH2 0x03a6
000003a1: JUMPI
000003a2: PUSH1 0x00
000003a4: DUP1
000003a5: REVERT
000003a6: JUMPDEST
000003a7: PUSH2 0x02e5
000003aa: PUSH1 0x04
000003ac: CALLDATALOAD
000003ad: PUSH2 0x08e6
000003b0: JUMP
000003b1: JUMPDEST
000003b2: CALLVALUE
000003b3: ISZERO
000003b4: PUSH2 0x03bc
000003b7: JUMPI
000003b8: PUSH1 0x00
000003ba: DUP1
000003bb: REVERT
000003bc: JUMPDEST
000003bd: PUSH2 0x0222
000003c0: PUSH2 0x0902
000003c3: JUMP
000003c4: JUMPDEST
000003c5: CALLVALUE
000003c6: ISZERO
000003c7: PUSH2 0x03cf
000003ca: JUMPI
000003cb: PUSH1 0x00
000003cd: DUP1
000003ce: REVERT
000003cf: JUMPDEST
000003d0: PUSH2 0x02bb
000003d3: PUSH1 0x01
000003d5: PUSH1 0xa0
000003d7: PUSH1 0x02
000003d9: EXP
000003da: SUB
000003db: PUSH1 0x04
000003dd: CALLDATALOAD
000003de: AND
000003df: PUSH1 0x24
000003e1: CALLDATALOAD
000003e2: PUSH2 0x0939
000003e5: JUMP
000003e6: JUMPDEST
000003e7: CALLVALUE
000003e8: ISZERO
000003e9: PUSH2 0x03f1
000003ec: JUMPI
000003ed: PUSH1 0x00
000003ef: DUP1
000003f0: REVERT
000003f1: JUMPDEST
000003f2: PUSH2 0x02e5
000003f5: PUSH1 0x04
000003f7: CALLDATALOAD
000003f8: PUSH2 0x09fa
000003fb: JUMP
000003fc: JUMPDEST
000003fd: CALLVALUE
000003fe: ISZERO
000003ff: PUSH2 0x0407
00000402: JUMPI
00000403: PUSH1 0x00
00000405: DUP1
00000406: REVERT
00000407: JUMPDEST
00000408: PUSH2 0x02bb
0000040b: PUSH2 0x0ab4
0000040e: JUMP
0000040f: JUMPDEST
00000410: CALLVALUE
00000411: ISZERO
00000412: PUSH2 0x041a
00000415: JUMPI
00000416: PUSH1 0x00
00000418: DUP1
00000419: REVERT
0000041a: JUMPDEST
0000041b: PUSH2 0x02e5
0000041e: PUSH1 0x01
00000420: PUSH1 0xa0
00000422: PUSH1 0x02
00000424: EXP
00000425: SUB
00000426: PUSH1 0x04
00000428: CALLDATALOAD
00000429: AND
0000042a: PUSH1 0x24
0000042c: CALLDATALOAD
0000042d: PUSH2 0x0b64
00000430: JUMP
00000431: JUMPDEST
00000432: CALLVALUE
00000433: ISZERO
00000434: PUSH2 0x043c
00000437: JUMPI
00000438: PUSH1 0x00
0000043a: DUP1
0000043b: REVERT
0000043c: JUMPDEST
0000043d: PUSH2 0x02fa
00000440: PUSH1 0x01
00000442: PUSH1 0xa0
00000444: PUSH1 0x02
00000446: EXP
00000447: SUB
00000448: PUSH1 0x04
0000044a: CALLDATALOAD
0000044b: DUP2
0000044c: AND
0000044d: SWAP1
0000044e: PUSH1 0x24
00000450: CALLDATALOAD
00000451: AND
00000452: PUSH2 0x0b85
00000455: JUMP
00000456: JUMPDEST
00000457: PUSH1 0x01
00000459: PUSH1 0xa0
0000045b: PUSH1 0x02
0000045d: EXP
0000045e: SUB
0000045f: DUP2
00000460: AND
00000461: PUSH1 0x00
00000463: SWAP1
00000464: DUP2
00000465: MSTORE
00000466: PUSH1 0x20
00000468: DUP4
00000469: SWAP1
0000046a: MSTORE
0000046b: PUSH1 0x40
0000046d: SWAP1
0000046e: KECCAK256
0000046f: PUSH1 0x01
00000471: ADD
00000472: SLOAD
00000473: JUMPDEST
00000474: SWAP3
00000475: SWAP2
00000476: POP
00000477: POP
00000478: JUMP
00000479: JUMPDEST
0000047a: PUSH1 0x01
0000047c: PUSH1 0xa0
0000047e: PUSH1 0x02
00000480: EXP
00000481: SUB
00000482: AND
00000483: PUSH1 0x00
00000485: SWAP1
00000486: DUP2
00000487: MSTORE
00000488: PUSH1 0x20
0000048a: SWAP2
0000048b: SWAP1
0000048c: SWAP2
0000048d: MSTORE
0000048e: PUSH1 0x40
00000490: DUP2
00000491: KECCAK256
00000492: SLOAD
00000493: GT
00000494: SWAP1
00000495: JUMP
00000496: JUMPDEST
00000497: PUSH1 0x01
00000499: PUSH1 0xa0
0000049b: PUSH1 0x02
0000049d: EXP
0000049e: SUB
0000049f: DUP3
000004a0: AND
000004a1: PUSH1 0x00
000004a3: SWAP1
000004a4: DUP2
000004a5: MSTORE
000004a6: PUSH1 0x20
000004a8: DUP5
000004a9: SWAP1
000004aa: MSTORE
000004ab: PUSH1 0x40
000004ad: DUP2
000004ae: KECCAK256
000004af: PUSH1 0x01
000004b1: DUP2
000004b2: ADD
000004b3: DUP4
000004b4: SWAP1
000004b5: SSTORE
000004b6: DUP1
000004b7: SLOAD
000004b8: DUP3
000004b9: SWAP1
000004ba: GT
000004bb: ISZERO
000004bc: PUSH2 0x04c8
000004bf: JUMPI
000004c0: PUSH1 0x01
000004c2: SWAP2
000004c3: POP
000004c4: PUSH2 0x052e
000004c7: JUMP
000004c8: JUMPDEST
000004c9: DUP5
000004ca: PUSH1 0x01
000004cc: ADD
000004cd: DUP1
000004ce: SLOAD
000004cf: PUSH1 0x01
000004d1: ADD
000004d2: SWAP1
000004d3: DUP2
000004d4: PUSH2 0x04dd
000004d7: SWAP2
000004d8: SWAP1
000004d9: PUSH2 0x0cd7
000004dc: JUMP
000004dd: JUMPDEST
000004de: DUP1
000004df: DUP3
000004e0: SSTORE
000004e1: PUSH1 0x01
000004e3: DUP7
000004e4: ADD
000004e5: DUP1
000004e6: SLOAD
000004e7: DUP7
000004e8: SWAP3
000004e9: PUSH1 0x00
000004eb: NOT
000004ec: ADD
000004ed: SWAP1
000004ee: DUP2
000004ef: LT
000004f0: PUSH2 0x04f5
000004f3: JUMPI
000004f4: INVALID
000004f5: JUMPDEST
000004f6: PUSH1 0x00
000004f8: SWAP2
000004f9: DUP3
000004fa: MSTORE
000004fb: PUSH1 0x20
000004fd: DUP3
000004fe: KECCAK256
000004ff: ADD
00000500: DUP1
00000501: SLOAD
00000502: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000517: NOT
00000518: AND
00000519: PUSH1 0x01
0000051b: PUSH1 0xa0
0000051d: PUSH1 0x02
0000051f: EXP
00000520: SUB
00000521: SWAP4
00000522: SWAP1
00000523: SWAP4
00000524: AND
00000525: SWAP3
00000526: SWAP1
00000527: SWAP3
00000528: OR
00000529: SWAP1
0000052a: SWAP2
0000052b: SSTORE
0000052c: SWAP2
0000052d: POP
0000052e: JUMPDEST
0000052f: POP
00000530: SWAP4
00000531: SWAP3
00000532: POP
00000533: POP
00000534: POP
00000535: JUMP
00000536: JUMPDEST
00000537: PUSH1 0x40
00000539: DUP1
0000053a: MLOAD
0000053b: SWAP1
0000053c: DUP2
0000053d: ADD
0000053e: PUSH1 0x40
00000540: MSTORE
00000541: PUSH1 0x0f
00000543: DUP2
00000544: MSTORE
00000545: PUSH32 0x49434520524f434b204d494e494e470000000000000000000000000000000000
00000566: PUSH1 0x20
00000568: DUP3
00000569: ADD
0000056a: MSTORE
0000056b: DUP2
0000056c: JUMP
0000056d: JUMPDEST
0000056e: PUSH1 0x00
00000570: DUP2
00000571: ISZERO
00000572: DUP1
00000573: ISZERO
00000574: SWAP1
00000575: PUSH2 0x058e
00000578: JUMPI
00000579: POP
0000057a: DUP2
0000057b: PUSH2 0x058b
0000057e: PUSH1 0x05
00000580: CALLER
00000581: PUSH4 0xffffffff
00000586: PUSH2 0x0456
00000589: AND
0000058a: JUMP
0000058b: JUMPDEST
0000058c: LT
0000058d: ISZERO
0000058e: JUMPDEST
0000058f: ISZERO
00000590: PUSH2 0x05fb
00000593: JUMPI
00000594: PUSH1 0x01
00000596: PUSH1 0xa0
00000598: PUSH1 0x02
0000059a: EXP
0000059b: SUB
0000059c: CALLER
0000059d: DUP2
0000059e: AND
0000059f: PUSH1 0x00
000005a1: DUP2
000005a2: DUP2
000005a3: MSTORE
000005a4: PUSH1 0x07
000005a6: PUSH1 0x20
000005a8: SWAP1
000005a9: DUP2
000005aa: MSTORE
000005ab: PUSH1 0x40
000005ad: DUP1
000005ae: DUP4
000005af: KECCAK256
000005b0: SWAP5
000005b1: DUP9
000005b2: AND
000005b3: DUP1
000005b4: DUP5
000005b5: MSTORE
000005b6: SWAP5
000005b7: SWAP1
000005b8: SWAP2
000005b9: MSTORE
000005ba: SWAP1
000005bb: DUP2
000005bc: SWAP1
000005bd: KECCAK256
000005be: DUP6
000005bf: SWAP1
000005c0: SSTORE
000005c1: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
000005e2: SWAP1
000005e3: DUP6
000005e4: SWAP1
000005e5: MLOAD
000005e6: SWAP1
000005e7: DUP2
000005e8: MSTORE
000005e9: PUSH1 0x20
000005eb: ADD
000005ec: PUSH1 0x40
000005ee: MLOAD
000005ef: DUP1
000005f0: SWAP2
000005f1: SUB
000005f2: SWAP1
000005f3: LOG3
000005f4: POP
000005f5: PUSH1 0x01
000005f7: PUSH2 0x0473
000005fa: JUMP
000005fb: JUMPDEST
000005fc: POP
000005fd: PUSH1 0x00
000005ff: PUSH2 0x0473
00000602: JUMP
00000603: JUMPDEST
00000604: PUSH1 0x04
00000606: SLOAD
00000607: CALLER
00000608: PUSH1 0x01
0000060a: PUSH1 0xa0
0000060c: PUSH1 0x02
0000060e: EXP
0000060f: SUB
00000610: SWAP1
00000611: DUP2
00000612: AND
00000613: SWAP2
00000614: AND
00000615: EQ
00000616: ISZERO
00000617: PUSH2 0x0620
0000061a: JUMPI
0000061b: PUSH1 0x02
0000061d: DUP2
0000061e: SWAP1
0000061f: SSTORE
00000620: JUMPDEST
00000621: POP
00000622: JUMP
00000623: JUMPDEST
00000624: PUSH1 0x00
00000626: SLOAD
00000627: JUMPDEST
00000628: SWAP1
00000629: JUMP
0000062a: JUMPDEST
0000062b: PUSH1 0x00
0000062d: DUP1
0000062e: DUP3
0000062f: PUSH2 0x063f
00000632: PUSH1 0x05
00000634: DUP8
00000635: PUSH4 0xffffffff
0000063a: PUSH2 0x0456
0000063d: AND
0000063e: JUMP
0000063f: JUMPDEST
00000640: LT
00000641: ISZERO
00000642: DUP1
00000643: ISZERO
00000644: PUSH2 0x0674
00000647: JUMPI
00000648: POP
00000649: PUSH1 0x01
0000064b: PUSH1 0xa0
0000064d: PUSH1 0x02
0000064f: EXP
00000650: SUB
00000651: DUP1
00000652: DUP7
00000653: AND
00000654: PUSH1 0x00
00000656: SWAP1
00000657: DUP2
00000658: MSTORE
00000659: PUSH1 0x07
0000065b: PUSH1 0x20
0000065d: SWAP1
0000065e: DUP2
0000065f: MSTORE
00000660: PUSH1 0x40
00000662: DUP1
00000663: DUP4
00000664: KECCAK256
00000665: CALLER
00000666: SWAP1
00000667: SWAP5
00000668: AND
00000669: DUP4
0000066a: MSTORE
0000066b: SWAP3
0000066c: SWAP1
0000066d: MSTORE
0000066e: KECCAK256
0000066f: SLOAD
00000670: DUP4
00000671: SWAP1
00000672: LT
00000673: ISZERO
00000674: JUMPDEST
00000675: DUP1
00000676: ISZERO
00000677: PUSH2 0x0680
0000067a: JUMPI
0000067b: POP
0000067c: PUSH1 0x00
0000067e: DUP4
0000067f: GT
00000680: JUMPDEST
00000681: ISZERO
00000682: PUSH2 0x0737
00000685: JUMPI
00000686: POP
00000687: DUP2
00000688: PUSH2 0x0698
0000068b: PUSH1 0x05
0000068d: DUP6
0000068e: PUSH4 0xffffffff
00000693: PUSH2 0x0479
00000696: AND
00000697: JUMP
00000698: JUMPDEST
00000699: ISZERO
0000069a: PUSH2 0x06b0
0000069d: JUMPI
0000069e: PUSH2 0x06ae
000006a1: PUSH1 0x05
000006a3: DUP6
000006a4: PUSH4 0xffffffff
000006a9: PUSH2 0x0456
000006ac: AND
000006ad: JUMP
000006ae: JUMPDEST
000006af: ADD
000006b0: JUMPDEST
000006b1: PUSH2 0x06c2
000006b4: PUSH1 0x05
000006b6: DUP6
000006b7: DUP4
000006b8: PUSH4 0xffffffff
000006bd: PUSH2 0x0496
000006c0: AND
000006c1: JUMP
000006c2: JUMPDEST
000006c3: POP
000006c4: PUSH2 0x06d9
000006c7: DUP6
000006c8: DUP5
000006c9: PUSH2 0x01c7
000006cc: PUSH1 0x05
000006ce: DUP4
000006cf: PUSH4 0xffffffff
000006d4: PUSH2 0x0456
000006d7: AND
000006d8: JUMP
000006d9: JUMPDEST
000006da: POP
000006db: PUSH1 0x01
000006dd: PUSH1 0xa0
000006df: PUSH1 0x02
000006e1: EXP
000006e2: SUB
000006e3: DUP6
000006e4: DUP2
000006e5: AND
000006e6: PUSH1 0x00
000006e8: DUP2
000006e9: DUP2
000006ea: MSTORE
000006eb: PUSH1 0x07
000006ed: PUSH1 0x20
000006ef: SWAP1
000006f0: DUP2
000006f1: MSTORE
000006f2: PUSH1 0x40
000006f4: DUP1
000006f5: DUP4
000006f6: KECCAK256
000006f7: CALLER
000006f8: DUP7
000006f9: AND
000006fa: DUP5
000006fb: MSTORE
000006fc: SWAP1
000006fd: SWAP2
000006fe: MSTORE
000006ff: SWAP1
00000700: DUP2
00000701: SWAP1
00000702: KECCAK256
00000703: DUP1
00000704: SLOAD
00000705: DUP8
00000706: SWAP1
00000707: SUB
00000708: SWAP1
00000709: SSTORE
0000070a: SWAP2
0000070b: DUP7
0000070c: AND
0000070d: SWAP2
0000070e: PUSH1 0x00
00000710: DUP1
00000711: MLOAD
00000712: PUSH1 0x20
00000714: PUSH2 0x0d1b
00000717: DUP4
00000718: CODECOPY
00000719: DUP2
0000071a: MLOAD
0000071b: SWAP2
0000071c: MSTORE
0000071d: SWAP1
0000071e: DUP7
0000071f: SWAP1
00000720: MLOAD
00000721: SWAP1
00000722: DUP2
00000723: MSTORE
00000724: PUSH1 0x20
00000726: ADD
00000727: PUSH1 0x40
00000729: MLOAD
0000072a: DUP1
0000072b: SWAP2
0000072c: SUB
0000072d: SWAP1
0000072e: LOG3
0000072f: PUSH1 0x01
00000731: SWAP2
00000732: POP
00000733: PUSH2 0x052e
00000736: JUMP
00000737: JUMPDEST
00000738: PUSH1 0x00
0000073a: SWAP2
0000073b: POP
0000073c: PUSH2 0x052e
0000073f: JUMP
00000740: JUMPDEST
00000741: PUSH1 0x01
00000743: PUSH1 0xa0
00000745: PUSH1 0x02
00000747: EXP
00000748: SUB
00000749: AND
0000074a: PUSH1 0x00
0000074c: SWAP1
0000074d: DUP2
0000074e: MSTORE
0000074f: PUSH1 0x08
00000751: PUSH1 0x20
00000753: MSTORE
00000754: PUSH1 0x40
00000756: SWAP1
00000757: KECCAK256
00000758: SLOAD
00000759: SWAP1
0000075a: JUMP
0000075b: JUMPDEST
0000075c: PUSH1 0x04
0000075e: SLOAD
0000075f: CALLER
00000760: PUSH1 0x01
00000762: PUSH1 0xa0
00000764: PUSH1 0x02
00000766: EXP
00000767: SUB
00000768: SWAP1
00000769: DUP2
0000076a: AND
0000076b: SWAP2
0000076c: AND
0000076d: EQ
0000076e: ISZERO
0000076f: PUSH2 0x0620
00000772: JUMPI
00000773: PUSH1 0x04
00000775: SLOAD
00000776: PUSH1 0x01
00000778: PUSH1 0xa0
0000077a: PUSH1 0x02
0000077c: EXP
0000077d: SUB
0000077e: AND
0000077f: DUP2
00000780: ISZERO
00000781: PUSH2 0x08fc
00000784: MUL
00000785: DUP3
00000786: PUSH1 0x40
00000788: MLOAD
00000789: PUSH1 0x00
0000078b: PUSH1 0x40
0000078d: MLOAD
0000078e: DUP1
0000078f: DUP4
00000790: SUB
00000791: DUP2
00000792: DUP6
00000793: DUP9
00000794: DUP9
00000795: CALL
00000796: SWAP4
00000797: POP
00000798: POP
00000799: POP
0000079a: POP
0000079b: ISZERO
0000079c: ISZERO
0000079d: PUSH2 0x0620
000007a0: JUMPI
000007a1: PUSH1 0x00
000007a3: DUP1
000007a4: REVERT
000007a5: JUMPDEST
000007a6: PUSH1 0x04
000007a8: SLOAD
000007a9: PUSH1 0x00
000007ab: SWAP1
000007ac: DUP2
000007ad: SWAP1
000007ae: CALLER
000007af: PUSH1 0x01
000007b1: PUSH1 0xa0
000007b3: PUSH1 0x02
000007b5: EXP
000007b6: SUB
000007b7: SWAP1
000007b8: DUP2
000007b9: AND
000007ba: SWAP2
000007bb: AND
000007bc: EQ
000007bd: ISZERO
000007be: PUSH2 0x08cf
000007c1: JUMPI
000007c2: PUSH1 0x00
000007c4: SWAP2
000007c5: POP
000007c6: JUMPDEST
000007c7: PUSH2 0x07d0
000007ca: PUSH1 0x05
000007cc: PUSH2 0x0bb0
000007cf: JUMP
000007d0: JUMPDEST
000007d1: DUP3
000007d2: LT
000007d3: ISZERO
000007d4: PUSH2 0x08cf
000007d7: JUMPI
000007d8: PUSH2 0x07e8
000007db: PUSH1 0x05
000007dd: DUP4
000007de: PUSH4 0xffffffff
000007e3: PUSH2 0x0bb7
000007e6: AND
000007e7: JUMP
000007e8: JUMPDEST
000007e9: PUSH1 0x01
000007eb: PUSH1 0xa0
000007ed: PUSH1 0x02
000007ef: EXP
000007f0: SUB
000007f1: DUP2
000007f2: AND
000007f3: PUSH1 0x00
000007f5: SWAP1
000007f6: DUP2
000007f7: MSTORE
000007f8: PUSH1 0x08
000007fa: PUSH1 0x20
000007fc: MSTORE
000007fd: PUSH1 0x40
000007ff: DUP2
00000800: KECCAK256
00000801: SLOAD
00000802: SWAP2
00000803: SWAP3
00000804: POP
00000805: SWAP1
00000806: GT
00000807: ISZERO
00000808: PUSH2 0x08c4
0000080b: JUMPI
0000080c: PUSH1 0x01
0000080e: PUSH1 0xa0
00000810: PUSH1 0x02
00000812: EXP
00000813: SUB
00000814: DUP2
00000815: AND
00000816: PUSH1 0x00
00000818: DUP2
00000819: DUP2
0000081a: MSTORE
0000081b: PUSH1 0x08
0000081d: PUSH1 0x20
0000081f: MSTORE
00000820: PUSH1 0x40
00000822: SWAP1
00000823: DUP2
00000824: SWAP1
00000825: KECCAK256
00000826: SLOAD
00000827: DUP1
00000828: ISZERO
00000829: PUSH2 0x08fc
0000082c: MUL
0000082d: SWAP2
0000082e: MLOAD
0000082f: PUSH1 0x00
00000831: PUSH1 0x40
00000833: MLOAD
00000834: DUP1
00000835: DUP4
00000836: SUB
00000837: DUP2
00000838: DUP6
00000839: DUP9
0000083a: DUP9
0000083b: CALL
0000083c: SWAP4
0000083d: POP
0000083e: POP
0000083f: POP
00000840: POP
00000841: ISZERO
00000842: ISZERO
00000843: PUSH2 0x084b
00000846: JUMPI
00000847: PUSH1 0x00
00000849: DUP1
0000084a: REVERT
0000084b: JUMPDEST
0000084c: PUSH1 0x01
0000084e: PUSH1 0xa0
00000850: PUSH1 0x02
00000852: EXP
00000853: SUB
00000854: DUP2
00000855: AND
00000856: PUSH1 0x00
00000858: SWAP1
00000859: DUP2
0000085a: MSTORE
0000085b: PUSH1 0x08
0000085d: PUSH1 0x20
0000085f: MSTORE
00000860: PUSH1 0x40
00000862: SWAP1
00000863: DUP2
00000864: SWAP1
00000865: KECCAK256
00000866: SLOAD
00000867: PUSH32 0x9717b2ae855611c348fbbb879a1f7a5a266b20bd91cd3bbaf968ef458588eed9
00000888: SWAP2
00000889: DUP4
0000088a: SWAP2
0000088b: SWAP1
0000088c: MLOAD
0000088d: PUSH1 0x01
0000088f: PUSH1 0xa0
00000891: PUSH1 0x02
00000893: EXP
00000894: SUB
00000895: SWAP1
00000896: SWAP3
00000897: AND
00000898: DUP3
00000899: MSTORE
0000089a: PUSH1 0x20
0000089c: DUP3
0000089d: ADD
0000089e: MSTORE
0000089f: PUSH1 0x40
000008a1: SWAP1
000008a2: DUP2
000008a3: ADD
000008a4: SWAP1
000008a5: MLOAD
000008a6: DUP1
000008a7: SWAP2
000008a8: SUB
000008a9: SWAP1
000008aa: LOG1
000008ab: PUSH1 0x01
000008ad: PUSH1 0xa0
000008af: PUSH1 0x02
000008b1: EXP
000008b2: SUB
000008b3: DUP2
000008b4: AND
000008b5: PUSH1 0x00
000008b7: SWAP1
000008b8: DUP2
000008b9: MSTORE
000008ba: PUSH1 0x08
000008bc: PUSH1 0x20
000008be: MSTORE
000008bf: PUSH1 0x40
000008c1: DUP2
000008c2: KECCAK256
000008c3: SSTORE
000008c4: JUMPDEST
000008c5: PUSH1 0x01
000008c7: DUP3
000008c8: ADD
000008c9: SWAP2
000008ca: POP
000008cb: PUSH2 0x07c6
000008ce: JUMP
000008cf: JUMPDEST
000008d0: POP
000008d1: POP
000008d2: JUMP
000008d3: JUMPDEST
000008d4: PUSH1 0x00
000008d6: PUSH2 0x0473
000008d9: PUSH1 0x05
000008db: DUP4
000008dc: PUSH4 0xffffffff
000008e1: PUSH2 0x0456
000008e4: AND
000008e5: JUMP
000008e6: JUMPDEST
000008e7: PUSH1 0x04
000008e9: SLOAD
000008ea: CALLER
000008eb: PUSH1 0x01
000008ed: PUSH1 0xa0
000008ef: PUSH1 0x02
000008f1: EXP
000008f2: SUB
000008f3: SWAP1
000008f4: DUP2
000008f5: AND
000008f6: SWAP2
000008f7: AND
000008f8: EQ
000008f9: ISZERO
000008fa: PUSH2 0x0620
000008fd: JUMPI
000008fe: PUSH1 0x01
00000900: SSTORE
00000901: JUMP
00000902: JUMPDEST
00000903: PUSH1 0x40
00000905: DUP1
00000906: MLOAD
00000907: SWAP1
00000908: DUP2
00000909: ADD
0000090a: PUSH1 0x40
0000090c: MSTORE
0000090d: PUSH1 0x05
0000090f: DUP2
00000910: MSTORE
00000911: PUSH32 0x524f434b32000000000000000000000000000000000000000000000000000000
00000932: PUSH1 0x20
00000934: DUP3
00000935: ADD
00000936: MSTORE
00000937: DUP2
00000938: JUMP
00000939: JUMPDEST
0000093a: PUSH1 0x00
0000093c: DUP2
0000093d: PUSH2 0x094d
00000940: PUSH1 0x05
00000942: CALLER
00000943: PUSH4 0xffffffff
00000948: PUSH2 0x0456
0000094b: AND
0000094c: JUMP
0000094d: JUMPDEST
0000094e: LT
0000094f: ISZERO
00000950: DUP1
00000951: ISZERO
00000952: PUSH2 0x095b
00000955: JUMPI
00000956: POP
00000957: PUSH1 0x00
00000959: DUP3
0000095a: GT
0000095b: JUMPDEST
0000095c: ISZERO
0000095d: PUSH2 0x05fb
00000960: JUMPI
00000961: PUSH2 0x0976
00000964: CALLER
00000965: DUP4
00000966: PUSH2 0x01c7
00000969: PUSH1 0x05
0000096b: DUP4
0000096c: PUSH4 0xffffffff
00000971: PUSH2 0x0456
00000974: AND
00000975: JUMP
00000976: JUMPDEST
00000977: POP
00000978: PUSH2 0x0988
0000097b: PUSH1 0x05
0000097d: DUP5
0000097e: PUSH4 0xffffffff
00000983: PUSH2 0x0479
00000986: AND
00000987: JUMP
00000988: JUMPDEST
00000989: ISZERO
0000098a: PUSH2 0x09a9
0000098d: JUMPI
0000098e: PUSH2 0x09a3
00000991: DUP4
00000992: DUP4
00000993: PUSH2 0x017b
00000996: PUSH1 0x05
00000998: DUP4
00000999: PUSH4 0xffffffff
0000099e: PUSH2 0x0456
000009a1: AND
000009a2: JUMP
000009a3: JUMPDEST
000009a4: POP
000009a5: PUSH2 0x09bd
000009a8: JUMP
000009a9: JUMPDEST
000009aa: PUSH2 0x09bb
000009ad: PUSH1 0x05
000009af: DUP5
000009b0: DUP5
000009b1: PUSH4 0xffffffff
000009b6: PUSH2 0x0496
000009b9: AND
000009ba: JUMP
000009bb: JUMPDEST
000009bc: POP
000009bd: JUMPDEST
000009be: DUP3
000009bf: PUSH1 0x01
000009c1: PUSH1 0xa0
000009c3: PUSH1 0x02
000009c5: EXP
000009c6: SUB
000009c7: AND
000009c8: CALLER
000009c9: PUSH1 0x01
000009cb: PUSH1 0xa0
000009cd: PUSH1 0x02
000009cf: EXP
000009d0: SUB
000009d1: AND
000009d2: PUSH1 0x00
000009d4: DUP1
000009d5: MLOAD
000009d6: PUSH1 0x20
000009d8: PUSH2 0x0d1b
000009db: DUP4
000009dc: CODECOPY
000009dd: DUP2
000009de: MLOAD
000009df: SWAP2
000009e0: MSTORE
000009e1: DUP5
000009e2: PUSH1 0x40
000009e4: MLOAD
000009e5: SWAP1
000009e6: DUP2
000009e7: MSTORE
000009e8: PUSH1 0x20
000009ea: ADD
000009eb: PUSH1 0x40
000009ed: MLOAD
000009ee: DUP1
000009ef: SWAP2
000009f0: SUB
000009f1: SWAP1
000009f2: LOG3
000009f3: POP
000009f4: PUSH1 0x01
000009f6: PUSH2 0x0473
000009f9: JUMP
000009fa: JUMPDEST
000009fb: PUSH1 0x04
000009fd: SLOAD
000009fe: PUSH1 0x00
00000a00: SWAP1
00000a01: DUP2
00000a02: SWAP1
00000a03: DUP2
00000a04: SWAP1
00000a05: CALLER
00000a06: PUSH1 0x01
00000a08: PUSH1 0xa0
00000a0a: PUSH1 0x02
00000a0c: EXP
00000a0d: SUB
00000a0e: SWAP1
00000a0f: DUP2
00000a10: AND
00000a11: SWAP2
00000a12: AND
00000a13: EQ
00000a14: ISZERO
00000a15: PUSH2 0x0aae
00000a18: JUMPI
00000a19: PUSH1 0x00
00000a1b: SLOAD
00000a1c: DUP5
00000a1d: PUSH8 0x0de0b6b3a7640000
00000a26: MUL
00000a27: DUP2
00000a28: ISZERO
00000a29: ISZERO
00000a2a: PUSH2 0x0a2f
00000a2d: JUMPI
00000a2e: INVALID
00000a2f: JUMPDEST
00000a30: DIV
00000a31: SWAP3
00000a32: POP
00000a33: PUSH1 0x00
00000a35: SWAP2
00000a36: POP
00000a37: JUMPDEST
00000a38: PUSH2 0x0a41
00000a3b: PUSH1 0x05
00000a3d: PUSH2 0x0bb0
00000a40: JUMP
00000a41: JUMPDEST
00000a42: DUP3
00000a43: LT
00000a44: ISZERO
00000a45: PUSH2 0x0aae
00000a48: JUMPI
00000a49: PUSH2 0x0a59
00000a4c: PUSH1 0x05
00000a4e: DUP4
00000a4f: PUSH4 0xffffffff
00000a54: PUSH2 0x0bb7
00000a57: AND
00000a58: JUMP
00000a59: JUMPDEST
00000a5a: SWAP1
00000a5b: POP
00000a5c: PUSH1 0x00
00000a5e: PUSH2 0x0a6e
00000a61: PUSH1 0x05
00000a63: DUP4
00000a64: PUSH4 0xffffffff
00000a69: PUSH2 0x0456
00000a6c: AND
00000a6d: JUMP
00000a6e: JUMPDEST
00000a6f: GT
00000a70: ISZERO
00000a71: PUSH2 0x0aa3
00000a74: JUMPI
00000a75: DUP3
00000a76: PUSH2 0x0a86
00000a79: PUSH1 0x05
00000a7b: DUP4
00000a7c: PUSH4 0xffffffff
00000a81: PUSH2 0x0456
00000a84: AND
00000a85: JUMP
00000a86: JUMPDEST
00000a87: PUSH1 0x01
00000a89: PUSH1 0xa0
00000a8b: PUSH1 0x02
00000a8d: EXP
00000a8e: SUB
00000a8f: DUP4
00000a90: AND
00000a91: PUSH1 0x00
00000a93: SWAP1
00000a94: DUP2
00000a95: MSTORE
00000a96: PUSH1 0x08
00000a98: PUSH1 0x20
00000a9a: MSTORE
00000a9b: PUSH1 0x40
00000a9d: SWAP1
00000a9e: KECCAK256
00000a9f: SWAP2
00000aa0: MUL
00000aa1: SWAP1
00000aa2: SSTORE
00000aa3: JUMPDEST
00000aa4: PUSH1 0x01
00000aa6: DUP3
00000aa7: ADD
00000aa8: SWAP2
00000aa9: POP
00000aaa: PUSH2 0x0a37
00000aad: JUMP
00000aae: JUMPDEST
00000aaf: POP
00000ab0: POP
00000ab1: POP
00000ab2: POP
00000ab3: JUMP
00000ab4: JUMPDEST
00000ab5: PUSH1 0x04
00000ab7: SLOAD
00000ab8: PUSH1 0x00
00000aba: SWAP1
00000abb: DUP2
00000abc: SWAP1
00000abd: CALLER
00000abe: PUSH1 0x01
00000ac0: PUSH1 0xa0
00000ac2: PUSH1 0x02
00000ac4: EXP
00000ac5: SUB
00000ac6: SWAP1
00000ac7: DUP2
00000ac8: AND
00000ac9: SWAP2
00000aca: AND
00000acb: EQ
00000acc: ISZERO
00000acd: PUSH2 0x0b60
00000ad0: JUMPI
00000ad1: PUSH1 0x04
00000ad3: SLOAD
00000ad4: PUSH2 0x0aee
00000ad7: SWAP1
00000ad8: PUSH1 0x05
00000ada: SWAP1
00000adb: PUSH1 0x01
00000add: PUSH1 0xa0
00000adf: PUSH1 0x02
00000ae1: EXP
00000ae2: SUB
00000ae3: AND
00000ae4: PUSH4 0xffffffff
00000ae9: PUSH2 0x0456
00000aec: AND
00000aed: JUMP
00000aee: JUMPDEST
00000aef: PUSH1 0x00
00000af1: DUP1
00000af2: SLOAD
00000af3: DUP3
00000af4: SWAP1
00000af5: SUB
00000af6: DUP2
00000af7: SSTORE
00000af8: PUSH1 0x04
00000afa: SLOAD
00000afb: SWAP2
00000afc: SWAP3
00000afd: POP
00000afe: PUSH2 0x0b1b
00000b01: SWAP2
00000b02: PUSH1 0x05
00000b04: SWAP2
00000b05: PUSH1 0x01
00000b07: PUSH1 0xa0
00000b09: PUSH1 0x02
00000b0b: EXP
00000b0c: SUB
00000b0d: SWAP1
00000b0e: SWAP2
00000b0f: AND
00000b10: SWAP1
00000b11: PUSH4 0xffffffff
00000b16: PUSH2 0x0496
00000b19: AND
00000b1a: JUMP
00000b1b: JUMPDEST
00000b1c: POP
00000b1d: PUSH1 0x04
00000b1f: SLOAD
00000b20: PUSH1 0x01
00000b22: PUSH1 0xa0
00000b24: PUSH1 0x02
00000b26: EXP
00000b27: SUB
00000b28: AND
00000b29: PUSH32 0x696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df7
00000b4a: DUP3
00000b4b: PUSH1 0x40
00000b4d: MLOAD
00000b4e: SWAP1
00000b4f: DUP2
00000b50: MSTORE
00000b51: PUSH1 0x20
00000b53: ADD
00000b54: PUSH1 0x40
00000b56: MLOAD
00000b57: DUP1
00000b58: SWAP2
00000b59: SUB
00000b5a: SWAP1
00000b5b: LOG2
00000b5c: PUSH1 0x01
00000b5e: SWAP2
00000b5f: POP
00000b60: JUMPDEST
00000b61: POP
00000b62: SWAP1
00000b63: JUMP
00000b64: JUMPDEST
00000b65: PUSH1 0x04
00000b67: SLOAD
00000b68: CALLER
00000b69: PUSH1 0x01
00000b6b: PUSH1 0xa0
00000b6d: PUSH1 0x02
00000b6f: EXP
00000b70: SUB
00000b71: SWAP1
00000b72: DUP2
00000b73: AND
00000b74: SWAP2
00000b75: AND
00000b76: EQ
00000b77: ISZERO
00000b78: PUSH2 0x08cf
00000b7b: JUMPI
00000b7c: PUSH2 0x08cf
00000b7f: DUP3
00000b80: DUP3
00000b81: PUSH2 0x0be6
00000b84: JUMP
00000b85: JUMPDEST
00000b86: PUSH1 0x01
00000b88: PUSH1 0xa0
00000b8a: PUSH1 0x02
00000b8c: EXP
00000b8d: SUB
00000b8e: SWAP2
00000b8f: DUP3
00000b90: AND
00000b91: PUSH1 0x00
00000b93: SWAP1
00000b94: DUP2
00000b95: MSTORE
00000b96: PUSH1 0x07
00000b98: PUSH1 0x20
00000b9a: SWAP1
00000b9b: DUP2
00000b9c: MSTORE
00000b9d: PUSH1 0x40
00000b9f: DUP1
00000ba0: DUP4
00000ba1: KECCAK256
00000ba2: SWAP4
00000ba3: SWAP1
00000ba4: SWAP5
00000ba5: AND
00000ba6: DUP3
00000ba7: MSTORE
00000ba8: SWAP2
00000ba9: SWAP1
00000baa: SWAP2
00000bab: MSTORE
00000bac: KECCAK256
00000bad: SLOAD
00000bae: SWAP1
00000baf: JUMP
00000bb0: JUMPDEST
00000bb1: PUSH1 0x01
00000bb3: ADD
00000bb4: SLOAD
00000bb5: SWAP1
00000bb6: JUMP
00000bb7: JUMPDEST
00000bb8: PUSH1 0x00
00000bba: DUP3
00000bbb: PUSH1 0x01
00000bbd: ADD
00000bbe: DUP3
00000bbf: DUP2
00000bc0: SLOAD
00000bc1: DUP2
00000bc2: LT
00000bc3: ISZERO
00000bc4: ISZERO
00000bc5: PUSH2 0x0bca
00000bc8: JUMPI
00000bc9: INVALID
00000bca: JUMPDEST
00000bcb: PUSH1 0x00
00000bcd: SWAP2
00000bce: DUP3
00000bcf: MSTORE
00000bd0: PUSH1 0x20
00000bd2: SWAP1
00000bd3: SWAP2
00000bd4: KECCAK256
00000bd5: ADD
00000bd6: SLOAD
00000bd7: PUSH1 0x01
00000bd9: PUSH1 0xa0
00000bdb: PUSH1 0x02
00000bdd: EXP
00000bde: SUB
00000bdf: AND
00000be0: SWAP4
00000be1: SWAP3
00000be2: POP
00000be3: POP
00000be4: POP
00000be5: JUMP
00000be6: JUMPDEST
00000be7: PUSH1 0x04
00000be9: SLOAD
00000bea: PUSH1 0x01
00000bec: PUSH1 0xa0
00000bee: PUSH1 0x02
00000bf0: EXP
00000bf1: SUB
00000bf2: DUP4
00000bf3: DUP2
00000bf4: AND
00000bf5: SWAP2
00000bf6: AND
00000bf7: EQ
00000bf8: ISZERO
00000bf9: PUSH2 0x0c01
00000bfc: JUMPI
00000bfd: PUSH1 0x00
00000bff: DUP1
00000c00: REVERT
00000c01: JUMPDEST
00000c02: PUSH1 0x00
00000c04: DUP2
00000c05: GT
00000c06: PUSH2 0x0c0e
00000c09: JUMPI
00000c0a: PUSH1 0x00
00000c0c: DUP1
00000c0d: REVERT
00000c0e: JUMPDEST
00000c0f: PUSH1 0x04
00000c11: SLOAD
00000c12: DUP2
00000c13: SWAP1
00000c14: PUSH2 0x0c2e
00000c17: SWAP1
00000c18: PUSH1 0x05
00000c1a: SWAP1
00000c1b: PUSH1 0x01
00000c1d: PUSH1 0xa0
00000c1f: PUSH1 0x02
00000c21: EXP
00000c22: SUB
00000c23: AND
00000c24: PUSH4 0xffffffff
00000c29: PUSH2 0x0456
00000c2c: AND
00000c2d: JUMP
00000c2e: JUMPDEST
00000c2f: LT
00000c30: ISZERO
00000c31: PUSH2 0x0c39
00000c34: JUMPI
00000c35: PUSH1 0x00
00000c37: DUP1
00000c38: REVERT
00000c39: JUMPDEST
00000c3a: PUSH2 0x0c4a
00000c3d: PUSH1 0x05
00000c3f: DUP4
00000c40: PUSH4 0xffffffff
00000c45: PUSH2 0x0479
00000c48: AND
00000c49: JUMP
00000c4a: JUMPDEST
00000c4b: ISZERO
00000c4c: PUSH2 0x0c6b
00000c4f: JUMPI
00000c50: PUSH2 0x0c65
00000c53: DUP3
00000c54: DUP3
00000c55: PUSH2 0x017b
00000c58: PUSH1 0x05
00000c5a: DUP4
00000c5b: PUSH4 0xffffffff
00000c60: PUSH2 0x0456
00000c63: AND
00000c64: JUMP
00000c65: JUMPDEST
00000c66: POP
00000c67: PUSH2 0x0c7f
00000c6a: JUMP
00000c6b: JUMPDEST
00000c6c: PUSH2 0x0c7d
00000c6f: PUSH1 0x05
00000c71: DUP4
00000c72: DUP4
00000c73: PUSH4 0xffffffff
00000c78: PUSH2 0x0496
00000c7b: AND
00000c7c: JUMP
00000c7d: JUMPDEST
00000c7e: POP
00000c7f: JUMPDEST
00000c80: PUSH1 0x04
00000c82: SLOAD
00000c83: PUSH2 0x0ca1
00000c86: SWAP1
00000c87: PUSH1 0x01
00000c89: PUSH1 0xa0
00000c8b: PUSH1 0x02
00000c8d: EXP
00000c8e: SUB
00000c8f: AND
00000c90: DUP3
00000c91: PUSH2 0x01c7
00000c94: PUSH1 0x05
00000c96: DUP4
00000c97: PUSH4 0xffffffff
00000c9c: PUSH2 0x0456
00000c9f: AND
00000ca0: JUMP
00000ca1: JUMPDEST
00000ca2: POP
00000ca3: PUSH1 0x04
00000ca5: SLOAD
00000ca6: PUSH1 0x01
00000ca8: PUSH1 0xa0
00000caa: PUSH1 0x02
00000cac: EXP
00000cad: SUB
00000cae: DUP1
00000caf: DUP5
00000cb0: AND
00000cb1: SWAP2
00000cb2: AND
00000cb3: PUSH1 0x00
00000cb5: DUP1
00000cb6: MLOAD
00000cb7: PUSH1 0x20
00000cb9: PUSH2 0x0d1b
00000cbc: DUP4
00000cbd: CODECOPY
00000cbe: DUP2
00000cbf: MLOAD
00000cc0: SWAP2
00000cc1: MSTORE
00000cc2: DUP4
00000cc3: PUSH1 0x40
00000cc5: MLOAD
00000cc6: SWAP1
00000cc7: DUP2
00000cc8: MSTORE
00000cc9: PUSH1 0x20
00000ccb: ADD
00000ccc: PUSH1 0x40
00000cce: MLOAD
00000ccf: DUP1
00000cd0: SWAP2
00000cd1: SUB
00000cd2: SWAP1
00000cd3: LOG3
00000cd4: POP
00000cd5: POP
00000cd6: JUMP
00000cd7: JUMPDEST
00000cd8: DUP2
00000cd9: SLOAD
00000cda: DUP2
00000cdb: DUP4
00000cdc: SSTORE
00000cdd: DUP2
00000cde: DUP2
00000cdf: ISZERO
00000ce0: GT
00000ce1: PUSH2 0x0cfb
00000ce4: JUMPI
00000ce5: PUSH1 0x00
00000ce7: DUP4
00000ce8: DUP2
00000ce9: MSTORE
00000cea: PUSH1 0x20
00000cec: SWAP1
00000ced: KECCAK256
00000cee: PUSH2 0x0cfb
00000cf1: SWAP2
00000cf2: DUP2
00000cf3: ADD
00000cf4: SWAP1
00000cf5: DUP4
00000cf6: ADD
00000cf7: PUSH2 0x0d00
00000cfa: JUMP
00000cfb: JUMPDEST
00000cfc: POP
00000cfd: POP
00000cfe: POP
00000cff: JUMP
00000d00: JUMPDEST
00000d01: PUSH2 0x0627
00000d04: SWAP2
00000d05: SWAP1
00000d06: JUMPDEST
00000d07: DUP1
00000d08: DUP3
00000d09: GT
00000d0a: ISZERO
00000d0b: PUSH2 0x0b60
00000d0e: JUMPI
00000d0f: PUSH1 0x00
00000d11: DUP2
00000d12: SSTORE
00000d13: PUSH1 0x01
00000d15: ADD
00000d16: PUSH2 0x0d06
00000d19: JUMP
00000d1a: STOP
00000d1b: UNKNOWN(0xDD)
00000d1c: CALLCODE
00000d1d: MSTORE
00000d1e: UNKNOWN(0xAD)
00000d1f: SHL
00000d20: UNKNOWN(0xE2)
00000d21: UNKNOWN(0xC8)
00000d22: SWAP12
00000d23: PUSH10 0xc2b068fc378daa952ba7
00000d2e: CALL
00000d2f: PUSH4 0xc4a11628
00000d34: CREATE2
00000d35: GAS
00000d36: UNKNOWN(0x4D)
00000d37: CREATE2
00000d38: UNKNOWN(0x23)
00000d39: UNKNOWN(0xB3)
00000d3a: UNKNOWN(0xEF)
00000d3b: LOG1
00000d3c: PUSH6 0x627a7a723058
00000d43: KECCAK256
00000d44: PUSH21 0x542cd91454a45bd8516bd955edac36b5cb8bd794e8
00000d5a: SWAP5
00000d5b: UNKNOWN(0xA7)
00000d5c: UNKNOWN(0xEF)
00000d5d: UNKNOWN(0x1F)
00000d5e: UNKNOWN(0x21)
00000d5f: DUP11
00000d60: UNKNOWN(0xD7)
00000d61: UNKNOWN(0xC1)
00000d62: UNKNOWN(0xD5)
00000d63: PUSH3

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 no no
view
trace_id: 0x51862f8107e9ba8333731c893f5a5e726a9deb7793324c88301b16cdea45619e
call_targets: 0xc16b542ff490e01fcc0dc58a60e1efdc3e357ca6
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x51862f8107e9ba8333731c893f5a5e726a9deb7793324c88301b16cdea45619e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc16b542ff490e01fcc0dc58a60e1efdc3e357ca6"
    ],
    "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": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b98f975",
            "selector": "0x0b98f975",
            "calldata_variants": [
                "0x0b98f975",
                "0x0b98f9750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26ea74e2",
            "selector": "0x26ea74e2",
            "calldata_variants": [
                "0x26ea74e2",
                "0x26ea74e20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3deaa297",
            "selector": "0x3deaa297",
            "calldata_variants": [
                "0x3deaa297",
                "0x3deaa2970000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1941,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2107,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3356,
            "opcode": "CALLCODE",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [],
    "untrusted_call_count": 4
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x51862f8107e9ba8333731c893f5a5e726a9deb7793324c88301b16cdea45619e
call_targets: 0xc16b542ff490e01fcc0dc58a60e1efdc3e357ca6
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x51862f8107e9ba8333731c893f5a5e726a9deb7793324c88301b16cdea45619e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc16b542ff490e01fcc0dc58a60e1efdc3e357ca6"
    ],
    "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": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b98f975",
            "selector": "0x0b98f975",
            "calldata_variants": [
                "0x0b98f975",
                "0x0b98f9750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26ea74e2",
            "selector": "0x26ea74e2",
            "calldata_variants": [
                "0x26ea74e2",
                "0x26ea74e20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3deaa297",
            "selector": "0x3deaa297",
            "calldata_variants": [
                "0x3deaa297",
                "0x3deaa2970000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1941,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2107,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3356,
            "opcode": "CALLCODE",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": []
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0x567e25685055d987a593364dcb5744ba19ee8f7dc4c6462bd214d2342a2e7a91
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x567e25685055d987a593364dcb5744ba19ee8f7dc4c6462bd214d2342a2e7a91",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b98f975",
            "selector": "0x0b98f975",
            "calldata_variants": [
                "0x0b98f975",
                "0x0b98f9750000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26ea74e2",
            "selector": "0x26ea74e2",
            "calldata_variants": [
                "0x26ea74e2",
                "0x26ea74e20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2e1a7d4d",
            "selector": "0x2e1a7d4d",
            "calldata_variants": [
                "0x2e1a7d4d",
                "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3deaa297",
            "selector": "0x3deaa297",
            "calldata_variants": [
                "0x3deaa297",
                "0x3deaa2970000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 0,
    "create2_count": 2
}
medium math codex Dividend per-token calculation over-scales by 1e18, causing massive payouts or overflow 75 no
view
evidence_json
{
    "evidence": "dividendsPerToken is scaled by 1e18 but approvedDividends does not divide by 1e18, inflating the result.",
    "locations": [
        "contracts/Contract.sol:226",
        "contracts/Contract.sol:231"
    ],
    "recommendation": "Compute dividends as (balance * totalDividendsAmount) / initialSupply without the extra 1e18 scaling, or divide by 1e18 when assigning approvedDividends. Use SafeMath to avoid overflow.",
    "exploit_scenario": "The owner calls approveDividends with an intended total dividend amount in wei. The contract multiplies by 1e18 and never scales back down, so each holder\u2019s approvedDividends becomes balance * totalDividendsAmount * 1e18 / initialSupply. This inflates payouts by 1e18 and can overflow, making transferAllDividends revert due to insufficient balance or incorrect values, effectively blocking payouts."
}
medium other codex Dividend distribution can be permanently blocked by a reverting recipient or gas limit 75 no
view
evidence_json
{
    "evidence": "transferAllDividends iterates all holders and uses transfer without handling reverts or gas limits.",
    "locations": [
        "contracts/Contract.sol:247",
        "contracts/Contract.sol:252"
    ],
    "recommendation": "Use a pull-based withdrawal model (holders claim individually) or record credits and let users withdraw. If keeping push, use send/call with failure handling and avoid unbounded loops.",
    "exploit_scenario": "Any token holder can be a contract with a fallback that reverts on receiving ETH. When transferAllDividends iterates, the first such holder causes transfer to revert, which reverts the entire transaction and blocks all dividend payouts. Additionally, the unbounded loop can exceed the block gas limit as the holder list grows, preventing distributions."
}
low other cast Contract creation opcode present 60 no
view
evidence_json
{
    "notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
    "create_count": 0,
    "create2_count": 2
}