019be3d6-83fb-70cc-861b-5b64aafec5b5
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
{
"status": "not_proxy"
}
'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
{
"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"
}
{"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"]}]}
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
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|