019ba9e0-bdf4-70c0-8613-6ae209cfb88c
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 |
|---|---|---|---|---|
| 38019 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38020 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38021 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38022 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38023 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38024 | detector.run | complete | 1 / 3 | 3 months ago |
| 38025 | validation.fork | complete | 1 / 3 | 3 months ago |
| 38169 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.","findings":[{"severity":"critical","category":"access_control","title":"Anyone can become executor and gain onlyAuth privileges (ITGToken)","exploit_scenario":"Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner’s balance.","recommendation":"Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.","evidence":"`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.","locations":["contracts/Contract.sol:249","contracts/Contract.sol:851","contracts/Contract.sol:835","contracts/Contract.sol:881"]},{"severity":"medium","category":"access_control","title":"Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable","exploit_scenario":"`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state.","recommendation":"Initialize `owner` in each contract’s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.","evidence":"`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.","locations":["contracts/Contract.sol:244","contracts/Contract.sol:255","contracts/Contract.sol:394","contracts/Contract.sol:486"]},{"severity":"medium","category":"access_control","title":"Token lock bypass via transferFrom ignores locked holder","exploit_scenario":"When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user’s tokens while the lock is active, bypassing the intended restriction.","recommendation":"In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).","evidence":"`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.","locations":["contracts/Contract.sol:805","contracts/Contract.sol:817"]},{"severity":"medium","category":"math","title":"Division by zero and mispricing in 2nd/4th crowdsale pricing","exploit_scenario":"In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing.","recommendation":"Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.","evidence":"Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.","locations":["contracts/Contract.sol:343","contracts/Contract.sol:353"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-jshsl4x5
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019baa61-232b-7f13-85f5-1de96650979c
--------
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
**Preparing to read instructions**
exec
/bin/bash -lc ls in /tmp/codex-jshsl4x5 succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-jshsl4x5 succeeded in 5ms:
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.15;
contract ERC20 {
uint public totalSupply;
function balanceOf(address who) constant returns (uint);
function allowance(address owner, address spender) constant returns (uint);
function transfer(address to, uint value) returns (bool ok);
function transferFrom(address from, address to, uint value) returns (bool ok);
function approve(address spender, uint value) returns (bool ok);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
thinking
**Analyzing access control and calculation vulnerabilities**
I'm identifying key security issues where some contracts lack proper owner initialization, letting attackers seize control via setOwner or setExecutor calls. This can lead to critical access escalation, token draining through manipulated fallback calls, and denial-of-service via division-by-zero bugs in sale pricing. I'm focusing on how these gaps in constructor setups and permission checks combine to create serious risks across ITGToken and dependent contracts.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-jshsl4x5 succeeded in 30ms:
1 pragma solidity ^0.4.15;
2
3 contract ERC20 {
4 uint public totalSupply;
5 function balanceOf(address who) constant returns (uint);
6 function allowance(address owner, address spender) constant returns (uint);
7
8 function transfer(address to, uint value) returns (bool ok);
9 function transferFrom(address from, address to, uint value) returns (bool ok);
10 function approve(address spender, uint value) returns (bool ok);
11 event Transfer(address indexed from, address indexed to, uint value);
12 event Approval(address indexed owner, address indexed spender, uint value);
13 }
14
15 contract SafeMath {
16 function add(uint256 x, uint256 y) constant internal returns (uint256 z) {
17 assert((z = x + y) >= x);
18 }
19
20 function sub(uint256 x, uint256 y) constant internal returns (uint256 z) {
thinking
**Summarizing detailed security findings**
I’m gathering comprehensive security issues from Authable, ITGToken, CrowdSale, Games, and Voting contracts, focusing on critical access controls like executor and owner privileges, lock bypass in token transfers, and division-by-zero bugs. I’m organizing all findings into a precise JSON report with severity, categories, exploit scenarios, recommendations, and file locations to provide the user a clear, actionable summary without code edits.
codex
{"no_findings":false,"summary":"Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.","findings":[{"severity":"critical","category":"access_control","title":"Anyone can become executor and gain onlyAuth privileges (ITGToken)","exploit_scenario":"Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner’s balance.","recommendation":"Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.","evidence":"`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.","locations":["contracts/Contract.sol:249","contracts/Contract.sol:851","contracts/Contract.sol:835","contracts/Contract.sol:881"]},{"severity":"medium","category":"access_control","title":"Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable","exploit_scenario":"`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state.","recommendation":"Initialize `owner` in each contract’s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.","evidence":"`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.","locations":["contracts/Contract.sol:244","contracts/Contract.sol:255","contracts/Contract.sol:394","contracts/Contract.sol:486"]},{"severity":"medium","category":"access_control","title":"Token lock bypass via transferFrom ignores locked holder","exploit_scenario":"When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user’s tokens while the lock is active, bypassing the intended restriction.","recommendation":"In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).","evidence":"`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.","locations":["contracts/Contract.sol:805","contracts/Contract.sol:817"]},{"severity":"medium","category":"math","title":"Division by zero and mispricing in 2nd/4th crowdsale pricing","exploit_scenario":"In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing.","recommendation":"Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.","evidence":"Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.","locations":["contracts/Contract.sol:343","contracts/Contract.sol:353"]}]}
tokens used
36,317
{
"codex": {
"ran_at": "2026-01-11T00:09:20.188892+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.",
"raw_final": {
"summary": "Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.",
"findings": [
{
"title": "Anyone can become executor and gain onlyAuth privileges (ITGToken)",
"category": "access_control",
"evidence": "`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.",
"severity": "critical",
"locations": [
"contracts/Contract.sol:249",
"contracts/Contract.sol:851",
"contracts/Contract.sol:835",
"contracts/Contract.sol:881"
],
"recommendation": "Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.",
"exploit_scenario": "Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner\u2019s balance."
},
{
"title": "Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable",
"category": "access_control",
"evidence": "`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:244",
"contracts/Contract.sol:255",
"contracts/Contract.sol:394",
"contracts/Contract.sol:486"
],
"recommendation": "Initialize `owner` in each contract\u2019s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.",
"exploit_scenario": "`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state."
},
{
"title": "Token lock bypass via transferFrom ignores locked holder",
"category": "access_control",
"evidence": "`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:805",
"contracts/Contract.sol:817"
],
"recommendation": "In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).",
"exploit_scenario": "When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user\u2019s tokens while the lock is active, bypassing the intended restriction."
},
{
"title": "Division by zero and mispricing in 2nd/4th crowdsale pricing",
"category": "math",
"evidence": "Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:343",
"contracts/Contract.sol:353"
],
"recommendation": "Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.",
"exploit_scenario": "In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0173 0000000a: JUMPI 0000000b: PUSH1 0x00 0000000d: CALLDATALOAD 0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002c: SWAP1 0000002d: DIV 0000002e: PUSH4 0xffffffff 00000033: AND 00000034: DUP1 00000035: PUSH4 0x0335d533 0000003a: EQ 0000003b: PUSH2 0x0516 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0x06fdde03 00000045: EQ 00000046: PUSH2 0x052b 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0x095ea7b3 00000050: EQ 00000051: PUSH2 0x055c 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0x13af4035 0000005b: EQ 0000005c: PUSH2 0x05b6 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0x18160ddd 00000066: EQ 00000067: PUSH2 0x05ef 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0x1c3c0ea8 00000071: EQ 00000072: PUSH2 0x0618 00000075: JUMPI 00000076: DUP1 00000077: PUSH4 0x200d2ed2 0000007c: EQ 0000007d: PUSH2 0x0651 00000080: JUMPI 00000081: DUP1 00000082: PUSH4 0x23b872dd 00000087: EQ 00000088: PUSH2 0x0688 0000008b: JUMPI 0000008c: DUP1 0000008d: PUSH4 0x313ce567 00000092: EQ 00000093: PUSH2 0x0701 00000096: JUMPI 00000097: DUP1 00000098: PUSH4 0x42966c68 0000009d: EQ 0000009e: PUSH2 0x072a 000000a1: JUMPI 000000a2: DUP1 000000a3: PUSH4 0x4369a2c2 000000a8: EQ 000000a9: PUSH2 0x074d 000000ac: JUMPI 000000ad: DUP1 000000ae: PUSH4 0x4c524be4 000000b3: EQ 000000b4: PUSH2 0x0786 000000b7: JUMPI 000000b8: DUP1 000000b9: PUSH4 0x55aff5ba 000000be: EQ 000000bf: PUSH2 0x07a9 000000c2: JUMPI 000000c3: DUP1 000000c4: PUSH4 0x607a124f 000000c9: EQ 000000ca: PUSH2 0x07d2 000000cd: JUMPI 000000ce: DUP1 000000cf: PUSH4 0x6997d166 000000d4: EQ 000000d5: PUSH2 0x0867 000000d8: JUMPI 000000d9: DUP1 000000da: PUSH4 0x6fceecf8 000000df: EQ 000000e0: PUSH2 0x0893 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0x70a08231 000000ea: EQ 000000eb: PUSH2 0x08e0 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x72159335 000000f5: EQ 000000f6: PUSH2 0x092d 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x8da5cb5b 00000100: EQ 00000101: PUSH2 0x097d 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x945c7c59 0000010b: EQ 0000010c: PUSH2 0x09d2 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x95d89b41 00000116: EQ 00000117: PUSH2 0x0a10 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0xa0712d68 00000121: EQ 00000122: PUSH2 0x0a41 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0xa9059cbb 0000012c: EQ 0000012d: PUSH2 0x0a64 00000130: JUMPI 00000131: DUP1 00000132: PUSH4 0xb5a9de6e 00000137: EQ 00000138: PUSH2 0x0abe 0000013b: JUMPI 0000013c: DUP1 0000013d: PUSH4 0xc34c08e5 00000142: EQ 00000143: PUSH2 0x0ae7 00000146: JUMPI 00000147: DUP1 00000148: PUSH4 0xdd62ed3e 0000014d: EQ 0000014e: PUSH2 0x0b3c 00000151: JUMPI 00000152: DUP1 00000153: PUSH4 0xe223facb 00000158: EQ 00000159: PUSH2 0x0ba8 0000015c: JUMPI 0000015d: DUP1 0000015e: PUSH4 0xed02dded 00000163: EQ 00000164: PUSH2 0x0bcb 00000167: JUMPI 00000168: DUP1 00000169: PUSH4 0xfe213712 0000016e: EQ 0000016f: PUSH2 0x0c0d 00000172: JUMPI 00000173: JUMPDEST 00000174: JUMPDEST 00000175: PUSH1 0x0c 00000177: SLOAD 00000178: CALLVALUE 00000179: LT 0000017a: ISZERO 0000017b: PUSH2 0x0183 0000017e: JUMPI 0000017f: PUSH1 0x00 00000181: DUP1 00000182: REVERT 00000183: JUMPDEST 00000184: PUSH1 0x00 00000186: PUSH1 0x02 00000188: DUP2 00000189: GT 0000018a: ISZERO 0000018b: PUSH2 0x0190 0000018e: JUMPI 0000018f: INVALID 00000190: JUMPDEST 00000191: PUSH1 0x08 00000193: PUSH1 0x00 00000195: SWAP1 00000196: SLOAD 00000197: SWAP1 00000198: PUSH2 0x0100 0000019b: EXP 0000019c: SWAP1 0000019d: DIV 0000019e: PUSH1 0xff 000001a0: AND 000001a1: PUSH1 0x02 000001a3: DUP2 000001a4: GT 000001a5: ISZERO 000001a6: PUSH2 0x01ab 000001a9: JUMPI 000001aa: INVALID 000001ab: JUMPDEST 000001ac: EQ 000001ad: ISZERO 000001ae: PUSH2 0x033e 000001b1: JUMPI 000001b2: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72 000001d3: CALLER 000001d4: PUSH1 0x00 000001d6: CALLVALUE 000001d7: PUSH1 0x01 000001d9: PUSH1 0x40 000001db: MLOAD 000001dc: DUP1 000001dd: DUP6 000001de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001f3: AND 000001f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000209: AND 0000020a: DUP2 0000020b: MSTORE 0000020c: PUSH1 0x20 0000020e: ADD 0000020f: DUP5 00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000225: AND 00000226: DUP2 00000227: MSTORE 00000228: PUSH1 0x20 0000022a: ADD 0000022b: DUP4 0000022c: DUP2 0000022d: MSTORE 0000022e: PUSH1 0x20 00000230: ADD 00000231: DUP3 00000232: PUSH1 0xff 00000234: AND 00000235: DUP2 00000236: MSTORE 00000237: PUSH1 0x20 00000239: ADD 0000023a: SWAP5 0000023b: POP 0000023c: POP 0000023d: POP 0000023e: POP 0000023f: POP 00000240: PUSH1 0x40 00000242: MLOAD 00000243: DUP1 00000244: SWAP2 00000245: SUB 00000246: SWAP1 00000247: LOG1 00000248: PUSH2 0x0339 0000024b: PUSH1 0x08 0000024d: PUSH1 0x01 0000024f: SWAP1 00000250: SLOAD 00000251: SWAP1 00000252: PUSH2 0x0100 00000255: EXP 00000256: SWAP1 00000257: DIV 00000258: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000026d: AND 0000026e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000283: AND 00000284: PUSH4 0x7562b0cf 00000289: CALLER 0000028a: CALLVALUE 0000028b: PUSH1 0x00 0000028d: PUSH1 0x40 0000028f: MLOAD 00000290: PUSH1 0x20 00000292: ADD 00000293: MSTORE 00000294: PUSH1 0x40 00000296: MLOAD 00000297: DUP4 00000298: PUSH4 0xffffffff 0000029d: AND 0000029e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000002bc: MUL 000002bd: DUP2 000002be: MSTORE 000002bf: PUSH1 0x04 000002c1: ADD 000002c2: DUP1 000002c3: DUP4 000002c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002d9: AND 000002da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002ef: AND 000002f0: DUP2 000002f1: MSTORE 000002f2: PUSH1 0x20 000002f4: ADD 000002f5: DUP3 000002f6: DUP2 000002f7: MSTORE 000002f8: PUSH1 0x20 000002fa: ADD 000002fb: SWAP3 000002fc: POP 000002fd: POP 000002fe: POP 000002ff: PUSH1 0x20 00000301: PUSH1 0x40 00000303: MLOAD 00000304: DUP1 00000305: DUP4 00000306: SUB 00000307: DUP2 00000308: PUSH1 0x00 0000030a: DUP8 0000030b: DUP1 0000030c: EXTCODESIZE 0000030d: ISZERO 0000030e: ISZERO 0000030f: PUSH2 0x0317 00000312: JUMPI 00000313: PUSH1 0x00 00000315: DUP1 00000316: REVERT 00000317: JUMPDEST 00000318: PUSH2 0x02c6 0000031b: GAS 0000031c: SUB 0000031d: CALL 0000031e: ISZERO 0000031f: ISZERO 00000320: PUSH2 0x0328 00000323: JUMPI 00000324: PUSH1 0x00 00000326: DUP1 00000327: REVERT 00000328: JUMPDEST 00000329: POP 0000032a: POP 0000032b: POP 0000032c: PUSH1 0x40 0000032e: MLOAD 0000032f: DUP1 00000330: MLOAD 00000331: SWAP1 00000332: POP 00000333: PUSH1 0x01 00000335: PUSH2 0x0c22 00000338: JUMP 00000339: JUMPDEST 0000033a: PUSH2 0x0513 0000033d: JUMP 0000033e: JUMPDEST 0000033f: PUSH1 0x01 00000341: PUSH1 0x02 00000343: DUP2 00000344: GT 00000345: ISZERO 00000346: PUSH2 0x034b 00000349: JUMPI 0000034a: INVALID 0000034b: JUMPDEST 0000034c: PUSH1 0x08 0000034e: PUSH1 0x00 00000350: SWAP1 00000351: SLOAD 00000352: SWAP1 00000353: PUSH2 0x0100 00000356: EXP 00000357: SWAP1 00000358: DIV 00000359: PUSH1 0xff 0000035b: AND 0000035c: PUSH1 0x02 0000035e: DUP2 0000035f: GT 00000360: ISZERO 00000361: PUSH2 0x0366 00000364: JUMPI 00000365: INVALID 00000366: JUMPDEST 00000367: EQ 00000368: ISZERO 00000369: PUSH2 0x04df 0000036c: JUMPI 0000036d: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72 0000038e: CALLER 0000038f: PUSH1 0x00 00000391: CALLVALUE 00000392: PUSH1 0x01 00000394: PUSH1 0x40 00000396: MLOAD 00000397: DUP1 00000398: DUP6 00000399: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003ae: AND 000003af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003c4: AND 000003c5: DUP2 000003c6: MSTORE 000003c7: PUSH1 0x20 000003c9: ADD 000003ca: DUP5 000003cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003e0: AND 000003e1: DUP2 000003e2: MSTORE 000003e3: PUSH1 0x20 000003e5: ADD 000003e6: DUP4 000003e7: DUP2 000003e8: MSTORE 000003e9: PUSH1 0x20 000003eb: ADD 000003ec: DUP3 000003ed: PUSH1 0xff 000003ef: AND 000003f0: DUP2 000003f1: MSTORE 000003f2: PUSH1 0x20 000003f4: ADD 000003f5: SWAP5 000003f6: POP 000003f7: POP 000003f8: POP 000003f9: POP 000003fa: POP 000003fb: PUSH1 0x40 000003fd: MLOAD 000003fe: DUP1 000003ff: SWAP2 00000400: SUB 00000401: SWAP1 00000402: LOG1 00000403: PUSH1 0x09 00000405: PUSH1 0x00 00000407: SWAP1 00000408: SLOAD 00000409: SWAP1 0000040a: PUSH2 0x0100 0000040d: EXP 0000040e: SWAP1 0000040f: DIV 00000410: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000425: AND 00000426: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000043b: AND 0000043c: PUSH4 0x7562b0cf 00000441: CALLER 00000442: CALLVALUE 00000443: PUSH1 0x40 00000445: MLOAD 00000446: DUP4 00000447: PUSH4 0xffffffff 0000044c: AND 0000044d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000046b: MUL 0000046c: DUP2 0000046d: MSTORE 0000046e: PUSH1 0x04 00000470: ADD 00000471: DUP1 00000472: DUP4 00000473: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000488: AND 00000489: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000049e: AND 0000049f: DUP2 000004a0: MSTORE 000004a1: PUSH1 0x20 000004a3: ADD 000004a4: DUP3 000004a5: DUP2 000004a6: MSTORE 000004a7: PUSH1 0x20 000004a9: ADD 000004aa: SWAP3 000004ab: POP 000004ac: POP 000004ad: POP 000004ae: PUSH1 0x00 000004b0: PUSH1 0x40 000004b2: MLOAD 000004b3: DUP1 000004b4: DUP4 000004b5: SUB 000004b6: DUP2 000004b7: PUSH1 0x00 000004b9: DUP8 000004ba: DUP1 000004bb: EXTCODESIZE 000004bc: ISZERO 000004bd: ISZERO 000004be: PUSH2 0x04c6 000004c1: JUMPI 000004c2: PUSH1 0x00 000004c4: DUP1 000004c5: REVERT 000004c6: JUMPDEST 000004c7: PUSH2 0x02c6 000004ca: GAS 000004cb: SUB 000004cc: CALL 000004cd: ISZERO 000004ce: ISZERO 000004cf: PUSH2 0x04d7 000004d2: JUMPI 000004d3: PUSH1 0x00 000004d5: DUP1 000004d6: REVERT 000004d7: JUMPDEST 000004d8: POP 000004d9: POP 000004da: POP 000004db: PUSH2 0x0512 000004de: JUMP 000004df: JUMPDEST 000004e0: PUSH1 0x02 000004e2: DUP1 000004e3: DUP2 000004e4: GT 000004e5: ISZERO 000004e6: PUSH2 0x04eb 000004e9: JUMPI 000004ea: INVALID 000004eb: JUMPDEST 000004ec: PUSH1 0x08 000004ee: PUSH1 0x00 000004f0: SWAP1 000004f1: SLOAD 000004f2: SWAP1 000004f3: PUSH2 0x0100 000004f6: EXP 000004f7: SWAP1 000004f8: DIV 000004f9: PUSH1 0xff 000004fb: AND 000004fc: PUSH1 0x02 000004fe: DUP2 000004ff: GT 00000500: ISZERO 00000501: PUSH2 0x0506 00000504: JUMPI 00000505: INVALID 00000506: JUMPDEST 00000507: EQ 00000508: ISZERO 00000509: PUSH2 0x0511 0000050c: JUMPI 0000050d: PUSH1 0x00 0000050f: DUP1 00000510: REVERT 00000511: JUMPDEST 00000512: JUMPDEST 00000513: JUMPDEST 00000514: JUMPDEST 00000515: STOP 00000516: JUMPDEST 00000517: CALLVALUE 00000518: ISZERO 00000519: PUSH2 0x0521 0000051c: JUMPI 0000051d: PUSH1 0x00 0000051f: DUP1 00000520: REVERT 00000521: JUMPDEST 00000522: PUSH2 0x0529 00000525: PUSH2 0x119d 00000528: JUMP 00000529: JUMPDEST 0000052a: STOP 0000052b: JUMPDEST 0000052c: CALLVALUE 0000052d: ISZERO 0000052e: PUSH2 0x0536 00000531: JUMPI 00000532: PUSH1 0x00 00000534: DUP1 00000535: REVERT 00000536: JUMPDEST 00000537: PUSH2 0x053e 0000053a: PUSH2 0x128a 0000053d: JUMP 0000053e: JUMPDEST 0000053f: PUSH1 0x40 00000541: MLOAD 00000542: DUP1 00000543: DUP3 00000544: PUSH1 0x00 00000546: NOT 00000547: AND 00000548: PUSH1 0x00 0000054a: NOT 0000054b: AND 0000054c: DUP2 0000054d: MSTORE 0000054e: PUSH1 0x20 00000550: ADD 00000551: SWAP2 00000552: POP 00000553: POP 00000554: PUSH1 0x40 00000556: MLOAD 00000557: DUP1 00000558: SWAP2 00000559: SUB 0000055a: SWAP1 0000055b: RETURN 0000055c: JUMPDEST 0000055d: CALLVALUE 0000055e: ISZERO 0000055f: PUSH2 0x0567 00000562: JUMPI 00000563: PUSH1 0x00 00000565: DUP1 00000566: REVERT 00000567: JUMPDEST 00000568: PUSH2 0x059c 0000056b: PUSH1 0x04 0000056d: DUP1 0000056e: DUP1 0000056f: CALLDATALOAD 00000570: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000585: AND 00000586: SWAP1 00000587: PUSH1 0x20 00000589: ADD 0000058a: SWAP1 0000058b: SWAP2 0000058c: SWAP1 0000058d: DUP1 0000058e: CALLDATALOAD 0000058f: SWAP1 00000590: PUSH1 0x20 00000592: ADD 00000593: SWAP1 00000594: SWAP2 00000595: SWAP1 00000596: POP 00000597: POP 00000598: PUSH2 0x1290 0000059b: JUMP 0000059c: JUMPDEST 0000059d: PUSH1 0x40 0000059f: MLOAD 000005a0: DUP1 000005a1: DUP3 000005a2: ISZERO 000005a3: ISZERO 000005a4: ISZERO 000005a5: ISZERO 000005a6: DUP2 000005a7: MSTORE 000005a8: PUSH1 0x20 000005aa: ADD 000005ab: SWAP2 000005ac: POP 000005ad: POP 000005ae: PUSH1 0x40 000005b0: MLOAD 000005b1: DUP1 000005b2: SWAP2 000005b3: SUB 000005b4: SWAP1 000005b5: RETURN 000005b6: JUMPDEST 000005b7: CALLVALUE 000005b8: ISZERO 000005b9: PUSH2 0x05c1 000005bc: JUMPI 000005bd: PUSH1 0x00 000005bf: DUP1 000005c0: REVERT 000005c1: JUMPDEST 000005c2: PUSH2 0x05ed 000005c5: PUSH1 0x04 000005c7: DUP1 000005c8: DUP1 000005c9: CALLDATALOAD 000005ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005df: AND 000005e0: SWAP1 000005e1: PUSH1 0x20 000005e3: ADD 000005e4: SWAP1 000005e5: SWAP2 000005e6: SWAP1 000005e7: POP 000005e8: POP 000005e9: PUSH2 0x141a 000005ec: JUMP 000005ed: JUMPDEST 000005ee: STOP 000005ef: JUMPDEST 000005f0: CALLVALUE 000005f1: ISZERO 000005f2: PUSH2 0x05fa 000005f5: JUMPI 000005f6: PUSH1 0x00 000005f8: DUP1 000005f9: REVERT 000005fa: JUMPDEST 000005fb: PUSH2 0x0602 000005fe: PUSH2 0x14fe 00000601: JUMP 00000602: JUMPDEST 00000603: PUSH1 0x40 00000605: MLOAD 00000606: DUP1 00000607: DUP3 00000608: DUP2 00000609: MSTORE 0000060a: PUSH1 0x20 0000060c: ADD 0000060d: SWAP2 0000060e: POP 0000060f: POP 00000610: PUSH1 0x40 00000612: MLOAD 00000613: DUP1 00000614: SWAP2 00000615: SUB 00000616: SWAP1 00000617: RETURN 00000618: JUMPDEST 00000619: CALLVALUE 0000061a: ISZERO 0000061b: PUSH2 0x0623 0000061e: JUMPI 0000061f: PUSH1 0x00 00000621: DUP1 00000622: REVERT 00000623: JUMPDEST 00000624: PUSH2 0x064f 00000627: PUSH1 0x04 00000629: DUP1 0000062a: DUP1 0000062b: CALLDATALOAD 0000062c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000641: AND 00000642: SWAP1 00000643: PUSH1 0x20 00000645: ADD 00000646: SWAP1 00000647: SWAP2 00000648: SWAP1 00000649: POP 0000064a: POP 0000064b: PUSH2 0x1504 0000064e: JUMP 0000064f: JUMPDEST 00000650: STOP 00000651: JUMPDEST 00000652: CALLVALUE 00000653: ISZERO 00000654: PUSH2 0x065c 00000657: JUMPI 00000658: PUSH1 0x00 0000065a: DUP1 0000065b: REVERT 0000065c: JUMPDEST 0000065d: PUSH2 0x0664 00000660: PUSH2 0x1640 00000663: JUMP 00000664: JUMPDEST 00000665: PUSH1 0x40 00000667: MLOAD 00000668: DUP1 00000669: DUP3 0000066a: PUSH1 0x02 0000066c: DUP2 0000066d: GT 0000066e: ISZERO 0000066f: PUSH2 0x0674 00000672: JUMPI 00000673: INVALID 00000674: JUMPDEST 00000675: PUSH1 0xff 00000677: AND 00000678: DUP2 00000679: MSTORE 0000067a: PUSH1 0x20 0000067c: ADD 0000067d: SWAP2 0000067e: POP 0000067f: POP 00000680: PUSH1 0x40 00000682: MLOAD 00000683: DUP1 00000684: SWAP2 00000685: SUB 00000686: SWAP1 00000687: RETURN 00000688: JUMPDEST 00000689: CALLVALUE 0000068a: ISZERO 0000068b: PUSH2 0x0693 0000068e: JUMPI 0000068f: PUSH1 0x00 00000691: DUP1 00000692: REVERT 00000693: JUMPDEST 00000694: PUSH2 0x06e7 00000697: PUSH1 0x04 00000699: DUP1 0000069a: DUP1 0000069b: CALLDATALOAD 0000069c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006b1: AND 000006b2: SWAP1 000006b3: PUSH1 0x20 000006b5: ADD 000006b6: SWAP1 000006b7: SWAP2 000006b8: SWAP1 000006b9: DUP1 000006ba: CALLDATALOAD 000006bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006d0: AND 000006d1: SWAP1 000006d2: PUSH1 0x20 000006d4: ADD 000006d5: SWAP1 000006d6: SWAP2 000006d7: SWAP1 000006d8: DUP1 000006d9: CALLDATALOAD 000006da: SWAP1 000006db: PUSH1 0x20 000006dd: ADD 000006de: SWAP1 000006df: SWAP2 000006e0: SWAP1 000006e1: POP 000006e2: POP 000006e3: PUSH2 0x1653 000006e6: JUMP 000006e7: JUMPDEST 000006e8: PUSH1 0x40 000006ea: MLOAD 000006eb: DUP1 000006ec: DUP3 000006ed: ISZERO 000006ee: ISZERO 000006ef: ISZERO 000006f0: ISZERO 000006f1: DUP2 000006f2: MSTORE 000006f3: PUSH1 0x20 000006f5: ADD 000006f6: SWAP2 000006f7: POP 000006f8: POP 000006f9: PUSH1 0x40 000006fb: MLOAD 000006fc: DUP1 000006fd: SWAP2 000006fe: SUB 000006ff: SWAP1 00000700: RETURN 00000701: JUMPDEST 00000702: CALLVALUE 00000703: ISZERO 00000704: PUSH2 0x070c 00000707: JUMPI 00000708: PUSH1 0x00 0000070a: DUP1 0000070b: REVERT 0000070c: JUMPDEST 0000070d: PUSH2 0x0714 00000710: PUSH2 0x1937 00000713: JUMP 00000714: JUMPDEST 00000715: PUSH1 0x40 00000717: MLOAD 00000718: DUP1 00000719: DUP3 0000071a: DUP2 0000071b: MSTORE 0000071c: PUSH1 0x20 0000071e: ADD 0000071f: SWAP2 00000720: POP 00000721: POP 00000722: PUSH1 0x40 00000724: MLOAD 00000725: DUP1 00000726: SWAP2 00000727: SUB 00000728: SWAP1 00000729: RETURN 0000072a: JUMPDEST 0000072b: CALLVALUE 0000072c: ISZERO 0000072d: PUSH2 0x0735 00000730: JUMPI 00000731: PUSH1 0x00 00000733: DUP1 00000734: REVERT 00000735: JUMPDEST 00000736: PUSH2 0x074b 00000739: PUSH1 0x04 0000073b: DUP1 0000073c: DUP1 0000073d: CALLDATALOAD 0000073e: SWAP1 0000073f: PUSH1 0x20 00000741: ADD 00000742: SWAP1 00000743: SWAP2 00000744: SWAP1 00000745: POP 00000746: POP 00000747: PUSH2 0x193d 0000074a: JUMP 0000074b: JUMPDEST 0000074c: STOP 0000074d: JUMPDEST 0000074e: CALLVALUE 0000074f: ISZERO 00000750: PUSH2 0x0758 00000753: JUMPI 00000754: PUSH1 0x00 00000756: DUP1 00000757: REVERT 00000758: JUMPDEST 00000759: PUSH2 0x0784 0000075c: PUSH1 0x04 0000075e: DUP1 0000075f: DUP1 00000760: CALLDATALOAD 00000761: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000776: AND 00000777: SWAP1 00000778: PUSH1 0x20 0000077a: ADD 0000077b: SWAP1 0000077c: SWAP2 0000077d: SWAP1 0000077e: POP 0000077f: POP 00000780: PUSH2 0x1a3c 00000783: JUMP 00000784: JUMPDEST 00000785: STOP 00000786: JUMPDEST 00000787: CALLVALUE 00000788: ISZERO 00000789: PUSH2 0x0791 0000078c: JUMPI 0000078d: PUSH1 0x00 0000078f: DUP1 00000790: REVERT 00000791: JUMPDEST 00000792: PUSH2 0x07a7 00000795: PUSH1 0x04 00000797: DUP1 00000798: DUP1 00000799: CALLDATALOAD 0000079a: SWAP1 0000079b: PUSH1 0x20 0000079d: ADD 0000079e: SWAP1 0000079f: SWAP2 000007a0: SWAP1 000007a1: POP 000007a2: POP 000007a3: PUSH2 0x1b4f 000007a6: JUMP 000007a7: JUMPDEST 000007a8: STOP 000007a9: JUMPDEST 000007aa: CALLVALUE 000007ab: ISZERO 000007ac: PUSH2 0x07b4 000007af: JUMPI 000007b0: PUSH1 0x00 000007b2: DUP1 000007b3: REVERT 000007b4: JUMPDEST 000007b5: PUSH2 0x07bc 000007b8: PUSH2 0x1cac 000007bb: JUMP 000007bc: JUMPDEST 000007bd: PUSH1 0x40 000007bf: MLOAD 000007c0: DUP1 000007c1: DUP3 000007c2: DUP2 000007c3: MSTORE 000007c4: PUSH1 0x20 000007c6: ADD 000007c7: SWAP2 000007c8: POP 000007c9: POP 000007ca: PUSH1 0x40 000007cc: MLOAD 000007cd: DUP1 000007ce: SWAP2 000007cf: SUB 000007d0: SWAP1 000007d1: RETURN 000007d2: JUMPDEST 000007d3: CALLVALUE 000007d4: ISZERO 000007d5: PUSH2 0x07dd 000007d8: JUMPI 000007d9: PUSH1 0x00 000007db: DUP1 000007dc: REVERT 000007dd: JUMPDEST 000007de: PUSH2 0x0865 000007e1: PUSH1 0x04 000007e3: DUP1 000007e4: DUP1 000007e5: CALLDATALOAD 000007e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007fb: AND 000007fc: SWAP1 000007fd: PUSH1 0x20 000007ff: ADD 00000800: SWAP1 00000801: SWAP2 00000802: SWAP1 00000803: DUP1 00000804: CALLDATALOAD 00000805: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000081a: AND 0000081b: SWAP1 0000081c: PUSH1 0x20 0000081e: ADD 0000081f: SWAP1 00000820: SWAP2 00000821: SWAP1 00000822: DUP1 00000823: CALLDATALOAD 00000824: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000839: AND 0000083a: SWAP1 0000083b: PUSH1 0x20 0000083d: ADD 0000083e: SWAP1 0000083f: SWAP2 00000840: SWAP1 00000841: DUP1 00000842: CALLDATALOAD 00000843: PUSH1 0xff 00000845: AND 00000846: SWAP1 00000847: PUSH1 0x20 00000849: ADD 0000084a: SWAP1 0000084b: SWAP2 0000084c: SWAP1 0000084d: DUP1 0000084e: CALLDATALOAD 0000084f: SWAP1 00000850: PUSH1 0x20 00000852: ADD 00000853: SWAP1 00000854: SWAP2 00000855: SWAP1 00000856: DUP1 00000857: CALLDATALOAD 00000858: SWAP1 00000859: PUSH1 0x20 0000085b: ADD 0000085c: SWAP1 0000085d: SWAP2 0000085e: SWAP1 0000085f: POP 00000860: POP 00000861: PUSH2 0x1cb2 00000864: JUMP 00000865: JUMPDEST 00000866: STOP 00000867: JUMPDEST 00000868: CALLVALUE 00000869: ISZERO 0000086a: PUSH2 0x0872 0000086d: JUMPI 0000086e: PUSH1 0x00 00000870: DUP1 00000871: REVERT 00000872: JUMPDEST 00000873: PUSH2 0x0891 00000876: PUSH1 0x04 00000878: DUP1 00000879: DUP1 0000087a: CALLDATALOAD 0000087b: SWAP1 0000087c: PUSH1 0x20 0000087e: ADD 0000087f: SWAP1 00000880: SWAP2 00000881: SWAP1 00000882: DUP1 00000883: CALLDATALOAD 00000884: SWAP1 00000885: PUSH1 0x20 00000887: ADD 00000888: SWAP1 00000889: SWAP2 0000088a: SWAP1 0000088b: POP 0000088c: POP 0000088d: PUSH2 0x1e64 00000890: JUMP 00000891: JUMPDEST 00000892: STOP 00000893: JUMPDEST 00000894: CALLVALUE 00000895: ISZERO 00000896: PUSH2 0x089e 00000899: JUMPI 0000089a: PUSH1 0x00 0000089c: DUP1 0000089d: REVERT 0000089e: JUMPDEST 0000089f: PUSH2 0x08ca 000008a2: PUSH1 0x04 000008a4: DUP1 000008a5: DUP1 000008a6: CALLDATALOAD 000008a7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008bc: AND 000008bd: SWAP1 000008be: PUSH1 0x20 000008c0: ADD 000008c1: SWAP1 000008c2: SWAP2 000008c3: SWAP1 000008c4: POP 000008c5: POP 000008c6: PUSH2 0x2049 000008c9: JUMP 000008ca: JUMPDEST 000008cb: PUSH1 0x40 000008cd: MLOAD 000008ce: DUP1 000008cf: DUP3 000008d0: DUP2 000008d1: MSTORE 000008d2: PUSH1 0x20 000008d4: ADD 000008d5: SWAP2 000008d6: POP 000008d7: POP 000008d8: PUSH1 0x40 000008da: MLOAD 000008db: DUP1 000008dc: SWAP2 000008dd: SUB 000008de: SWAP1 000008df: RETURN 000008e0: JUMPDEST 000008e1: CALLVALUE 000008e2: ISZERO 000008e3: PUSH2 0x08eb 000008e6: JUMPI 000008e7: PUSH1 0x00 000008e9: DUP1 000008ea: REVERT 000008eb: JUMPDEST 000008ec: PUSH2 0x0917 000008ef: PUSH1 0x04 000008f1: DUP1 000008f2: DUP1 000008f3: CALLDATALOAD 000008f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000909: AND 0000090a: SWAP1 0000090b: PUSH1 0x20 0000090d: ADD 0000090e: SWAP1 0000090f: SWAP2 00000910: SWAP1 00000911: POP 00000912: POP 00000913: PUSH2 0x2061 00000916: JUMP 00000917: JUMPDEST 00000918: PUSH1 0x40 0000091a: MLOAD 0000091b: DUP1 0000091c: DUP3 0000091d: DUP2 0000091e: MSTORE 0000091f: PUSH1 0x20 00000921: ADD 00000922: SWAP2 00000923: POP 00000924: POP 00000925: PUSH1 0x40 00000927: MLOAD 00000928: DUP1 00000929: SWAP2 0000092a: SUB 0000092b: SWAP1 0000092c: RETURN 0000092d: JUMPDEST 0000092e: CALLVALUE 0000092f: ISZERO 00000930: PUSH2 0x0938 00000933: JUMPI 00000934: PUSH1 0x00 00000936: DUP1 00000937: REVERT 00000938: JUMPDEST 00000939: PUSH2 0x097b 0000093c: PUSH1 0x04 0000093e: DUP1 0000093f: DUP1 00000940: CALLDATALOAD 00000941: SWAP1 00000942: PUSH1 0x20 00000944: ADD 00000945: SWAP1 00000946: SWAP2 00000947: SWAP1 00000948: DUP1 00000949: CALLDATALOAD 0000094a: SWAP1 0000094b: PUSH1 0x20 0000094d: ADD 0000094e: SWAP1 0000094f: SWAP2 00000950: SWAP1 00000951: DUP1 00000952: CALLDATALOAD 00000953: SWAP1 00000954: PUSH1 0x20 00000956: ADD 00000957: SWAP1 00000958: SWAP2 00000959: SWAP1 0000095a: DUP1 0000095b: CALLDATALOAD 0000095c: SWAP1 0000095d: PUSH1 0x20 0000095f: ADD 00000960: SWAP1 00000961: SWAP2 00000962: SWAP1 00000963: DUP1 00000964: CALLDATALOAD 00000965: SWAP1 00000966: PUSH1 0x20 00000968: ADD 00000969: SWAP1 0000096a: SWAP2 0000096b: SWAP1 0000096c: DUP1 0000096d: CALLDATALOAD 0000096e: SWAP1 0000096f: PUSH1 0x20 00000971: ADD 00000972: SWAP1 00000973: SWAP2 00000974: SWAP1 00000975: POP 00000976: POP 00000977: PUSH2 0x20ab 0000097a: JUMP 0000097b: JUMPDEST 0000097c: STOP 0000097d: JUMPDEST 0000097e: CALLVALUE 0000097f: ISZERO 00000980: PUSH2 0x0988 00000983: JUMPI 00000984: PUSH1 0x00 00000986: DUP1 00000987: REVERT 00000988: JUMPDEST 00000989: PUSH2 0x0990 0000098c: PUSH2 0x2235 0000098f: JUMP 00000990: JUMPDEST 00000991: PUSH1 0x40 00000993: MLOAD 00000994: DUP1 00000995: DUP3 00000996: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ab: AND 000009ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009c1: AND 000009c2: DUP2 000009c3: MSTORE 000009c4: PUSH1 0x20 000009c6: ADD 000009c7: SWAP2 000009c8: POP 000009c9: POP 000009ca: PUSH1 0x40 000009cc: MLOAD 000009cd: DUP1 000009ce: SWAP2 000009cf: SUB 000009d0: SWAP1 000009d1: RETURN 000009d2: JUMPDEST 000009d3: CALLVALUE 000009d4: ISZERO 000009d5: PUSH2 0x09dd 000009d8: JUMPI 000009d9: PUSH1 0x00 000009db: DUP1 000009dc: REVERT 000009dd: JUMPDEST 000009de: PUSH2 0x0a0e 000009e1: PUSH1 0x04 000009e3: DUP1 000009e4: DUP1 000009e5: CALLDATALOAD 000009e6: SWAP1 000009e7: PUSH1 0x20 000009e9: ADD 000009ea: SWAP1 000009eb: SWAP2 000009ec: SWAP1 000009ed: DUP1 000009ee: CALLDATALOAD 000009ef: SWAP1 000009f0: PUSH1 0x20 000009f2: ADD 000009f3: SWAP1 000009f4: SWAP2 000009f5: SWAP1 000009f6: DUP1 000009f7: CALLDATALOAD 000009f8: SWAP1 000009f9: PUSH1 0x20 000009fb: ADD 000009fc: SWAP1 000009fd: SWAP2 000009fe: SWAP1 000009ff: DUP1 00000a00: CALLDATALOAD 00000a01: SWAP1 00000a02: PUSH1 0x20 00000a04: ADD 00000a05: SWAP1 00000a06: SWAP2 00000a07: SWAP1 00000a08: POP 00000a09: POP 00000a0a: PUSH2 0x225b 00000a0d: JUMP 00000a0e: JUMPDEST 00000a0f: STOP 00000a10: JUMPDEST 00000a11: CALLVALUE 00000a12: ISZERO 00000a13: PUSH2 0x0a1b 00000a16: JUMPI 00000a17: PUSH1 0x00 00000a19: DUP1 00000a1a: REVERT 00000a1b: JUMPDEST 00000a1c: PUSH2 0x0a23 00000a1f: PUSH2 0x23d3 00000a22: JUMP 00000a23: JUMPDEST 00000a24: PUSH1 0x40 00000a26: MLOAD 00000a27: DUP1 00000a28: DUP3 00000a29: PUSH1 0x00 00000a2b: NOT 00000a2c: AND 00000a2d: PUSH1 0x00 00000a2f: NOT 00000a30: AND 00000a31: DUP2 00000a32: MSTORE 00000a33: PUSH1 0x20 00000a35: ADD 00000a36: SWAP2 00000a37: POP 00000a38: POP 00000a39: PUSH1 0x40 00000a3b: MLOAD 00000a3c: DUP1 00000a3d: SWAP2 00000a3e: SUB 00000a3f: SWAP1 00000a40: RETURN 00000a41: JUMPDEST 00000a42: CALLVALUE 00000a43: ISZERO 00000a44: PUSH2 0x0a4c 00000a47: JUMPI 00000a48: PUSH1 0x00 00000a4a: DUP1 00000a4b: REVERT 00000a4c: JUMPDEST 00000a4d: PUSH2 0x0a62 00000a50: PUSH1 0x04 00000a52: DUP1 00000a53: DUP1 00000a54: CALLDATALOAD 00000a55: SWAP1 00000a56: PUSH1 0x20 00000a58: ADD 00000a59: SWAP1 00000a5a: SWAP2 00000a5b: SWAP1 00000a5c: POP 00000a5d: POP 00000a5e: PUSH2 0x23d9 00000a61: JUMP 00000a62: JUMPDEST 00000a63: STOP 00000a64: JUMPDEST 00000a65: CALLVALUE 00000a66: ISZERO 00000a67: PUSH2 0x0a6f 00000a6a: JUMPI 00000a6b: PUSH1 0x00 00000a6d: DUP1 00000a6e: REVERT 00000a6f: JUMPDEST 00000a70: PUSH2 0x0aa4 00000a73: PUSH1 0x04 00000a75: DUP1 00000a76: DUP1 00000a77: CALLDATALOAD 00000a78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a8d: AND 00000a8e: SWAP1 00000a8f: PUSH1 0x20 00000a91: ADD 00000a92: SWAP1 00000a93: SWAP2 00000a94: SWAP1 00000a95: DUP1 00000a96: CALLDATALOAD 00000a97: SWAP1 00000a98: PUSH1 0x20 00000a9a: ADD 00000a9b: SWAP1 00000a9c: SWAP2 00000a9d: SWAP1 00000a9e: POP 00000a9f: POP 00000aa0: PUSH2 0x24d8 00000aa3: JUMP 00000aa4: JUMPDEST 00000aa5: PUSH1 0x40 00000aa7: MLOAD 00000aa8: DUP1 00000aa9: DUP3 00000aaa: ISZERO 00000aab: ISZERO 00000aac: ISZERO 00000aad: ISZERO 00000aae: DUP2 00000aaf: MSTORE 00000ab0: PUSH1 0x20 00000ab2: ADD 00000ab3: SWAP2 00000ab4: POP 00000ab5: POP 00000ab6: PUSH1 0x40 00000ab8: MLOAD 00000ab9: DUP1 00000aba: SWAP2 00000abb: SUB 00000abc: SWAP1 00000abd: RETURN 00000abe: JUMPDEST 00000abf: CALLVALUE 00000ac0: ISZERO 00000ac1: PUSH2 0x0ac9 00000ac4: JUMPI 00000ac5: PUSH1 0x00 00000ac7: DUP1 00000ac8: REVERT 00000ac9: JUMPDEST 00000aca: PUSH2 0x0ad1 00000acd: PUSH2 0x26b0 00000ad0: JUMP 00000ad1: JUMPDEST 00000ad2: PUSH1 0x40 00000ad4: MLOAD 00000ad5: DUP1 00000ad6: DUP3 00000ad7: DUP2 00000ad8: MSTORE 00000ad9: PUSH1 0x20 00000adb: ADD 00000adc: SWAP2 00000add: POP 00000ade: POP 00000adf: PUSH1 0x40 00000ae1: MLOAD 00000ae2: DUP1 00000ae3: SWAP2 00000ae4: SUB 00000ae5: SWAP1 00000ae6: RETURN 00000ae7: JUMPDEST 00000ae8: CALLVALUE 00000ae9: ISZERO 00000aea: PUSH2 0x0af2 00000aed: JUMPI 00000aee: PUSH1 0x00 00000af0: DUP1 00000af1: REVERT 00000af2: JUMPDEST 00000af3: PUSH2 0x0afa 00000af6: PUSH2 0x26b6 00000af9: JUMP 00000afa: JUMPDEST 00000afb: PUSH1 0x40 00000afd: MLOAD 00000afe: DUP1 00000aff: DUP3 00000b00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b15: AND 00000b16: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b2b: AND 00000b2c: DUP2 00000b2d: MSTORE 00000b2e: PUSH1 0x20 00000b30: ADD 00000b31: SWAP2 00000b32: POP 00000b33: POP 00000b34: PUSH1 0x40 00000b36: MLOAD 00000b37: DUP1 00000b38: SWAP2 00000b39: SUB 00000b3a: SWAP1 00000b3b: RETURN 00000b3c: JUMPDEST 00000b3d: CALLVALUE 00000b3e: ISZERO 00000b3f: PUSH2 0x0b47 00000b42: JUMPI 00000b43: PUSH1 0x00 00000b45: DUP1 00000b46: REVERT 00000b47: JUMPDEST 00000b48: PUSH2 0x0b92 00000b4b: PUSH1 0x04 00000b4d: DUP1 00000b4e: DUP1 00000b4f: CALLDATALOAD 00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b65: AND 00000b66: SWAP1 00000b67: PUSH1 0x20 00000b69: ADD 00000b6a: SWAP1 00000b6b: SWAP2 00000b6c: SWAP1 00000b6d: DUP1 00000b6e: CALLDATALOAD 00000b6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b84: AND 00000b85: SWAP1 00000b86: PUSH1 0x20 00000b88: ADD 00000b89: SWAP1 00000b8a: SWAP2 00000b8b: SWAP1 00000b8c: POP 00000b8d: POP 00000b8e: PUSH2 0x26dc 00000b91: JUMP 00000b92: JUMPDEST 00000b93: PUSH1 0x40 00000b95: MLOAD 00000b96: DUP1 00000b97: DUP3 00000b98: DUP2 00000b99: MSTORE 00000b9a: PUSH1 0x20 00000b9c: ADD 00000b9d: SWAP2 00000b9e: POP 00000b9f: POP 00000ba0: PUSH1 0x40 00000ba2: MLOAD 00000ba3: DUP1 00000ba4: SWAP2 00000ba5: SUB 00000ba6: SWAP1 00000ba7: RETURN 00000ba8: JUMPDEST 00000ba9: CALLVALUE 00000baa: ISZERO 00000bab: PUSH2 0x0bb3 00000bae: JUMPI 00000baf: PUSH1 0x00 00000bb1: DUP1 00000bb2: REVERT 00000bb3: JUMPDEST 00000bb4: PUSH2 0x0bc9 00000bb7: PUSH1 0x04 00000bb9: DUP1 00000bba: DUP1 00000bbb: CALLDATALOAD 00000bbc: SWAP1 00000bbd: PUSH1 0x20 00000bbf: ADD 00000bc0: SWAP1 00000bc1: SWAP2 00000bc2: SWAP1 00000bc3: POP 00000bc4: POP 00000bc5: PUSH2 0x2764 00000bc8: JUMP 00000bc9: JUMPDEST 00000bca: STOP 00000bcb: JUMPDEST 00000bcc: CALLVALUE 00000bcd: ISZERO 00000bce: PUSH2 0x0bd6 00000bd1: JUMPI 00000bd2: PUSH1 0x00 00000bd4: DUP1 00000bd5: REVERT 00000bd6: JUMPDEST 00000bd7: PUSH2 0x0c0b 00000bda: PUSH1 0x04 00000bdc: DUP1 00000bdd: DUP1 00000bde: CALLDATALOAD 00000bdf: SWAP1 00000be0: PUSH1 0x20 00000be2: ADD 00000be3: SWAP1 00000be4: SWAP2 00000be5: SWAP1 00000be6: DUP1 00000be7: CALLDATALOAD 00000be8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bfd: AND 00000bfe: SWAP1 00000bff: PUSH1 0x20 00000c01: ADD 00000c02: SWAP1 00000c03: SWAP2 00000c04: SWAP1 00000c05: POP 00000c06: POP 00000c07: PUSH2 0x2906 00000c0a: JUMP 00000c0b: JUMPDEST 00000c0c: STOP 00000c0d: JUMPDEST 00000c0e: CALLVALUE 00000c0f: ISZERO 00000c10: PUSH2 0x0c18 00000c13: JUMPI 00000c14: PUSH1 0x00 00000c16: DUP1 00000c17: REVERT 00000c18: JUMPDEST 00000c19: PUSH2 0x0c20 00000c1c: PUSH2 0x2a7d 00000c1f: JUMP 00000c20: JUMPDEST 00000c21: STOP 00000c22: JUMPDEST 00000c23: PUSH1 0x00 00000c25: DUP3 00000c26: GT 00000c27: ISZERO 00000c28: PUSH2 0x1198 00000c2b: JUMPI 00000c2c: DUP1 00000c2d: ISZERO 00000c2e: PUSH2 0x0ee6 00000c31: JUMPI 00000c32: PUSH2 0x0c9c 00000c35: PUSH1 0x01 00000c37: PUSH1 0x00 00000c39: PUSH1 0x03 00000c3b: PUSH1 0x00 00000c3d: SWAP1 00000c3e: SLOAD 00000c3f: SWAP1 00000c40: PUSH2 0x0100 00000c43: EXP 00000c44: SWAP1 00000c45: DIV 00000c46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c5b: AND 00000c5c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c71: AND 00000c72: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c87: AND 00000c88: DUP2 00000c89: MSTORE 00000c8a: PUSH1 0x20 00000c8c: ADD 00000c8d: SWAP1 00000c8e: DUP2 00000c8f: MSTORE 00000c90: PUSH1 0x20 00000c92: ADD 00000c93: PUSH1 0x00 00000c95: KECCAK256 00000c96: SLOAD 00000c97: DUP4 00000c98: PUSH2 0x2b87 00000c9b: JUMP 00000c9c: JUMPDEST 00000c9d: PUSH1 0x01 00000c9f: PUSH1 0x00 00000ca1: PUSH1 0x03 00000ca3: PUSH1 0x00 00000ca5: SWAP1 00000ca6: SLOAD 00000ca7: SWAP1 00000ca8: PUSH2 0x0100 00000cab: EXP 00000cac: SWAP1 00000cad: DIV 00000cae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cc3: AND 00000cc4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cd9: AND 00000cda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cef: AND 00000cf0: DUP2 00000cf1: MSTORE 00000cf2: PUSH1 0x20 00000cf4: ADD 00000cf5: SWAP1 00000cf6: DUP2 00000cf7: MSTORE 00000cf8: PUSH1 0x20 00000cfa: ADD 00000cfb: PUSH1 0x00 00000cfd: KECCAK256 00000cfe: DUP2 00000cff: SWAP1 00000d00: SSTORE 00000d01: POP 00000d02: PUSH2 0x0d4a 00000d05: PUSH1 0x01 00000d07: PUSH1 0x00 00000d09: CALLER 00000d0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d1f: AND 00000d20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d35: AND 00000d36: DUP2 00000d37: MSTORE 00000d38: PUSH1 0x20 00000d3a: ADD 00000d3b: SWAP1 00000d3c: DUP2 00000d3d: MSTORE 00000d3e: PUSH1 0x20 00000d40: ADD 00000d41: PUSH1 0x00 00000d43: KECCAK256 00000d44: SLOAD 00000d45: DUP4 00000d46: PUSH2 0x2ba1 00000d49: JUMP 00000d4a: JUMPDEST 00000d4b: PUSH1 0x01 00000d4d: PUSH1 0x00 00000d4f: CALLER 00000d50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d65: AND 00000d66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d7b: AND 00000d7c: DUP2 00000d7d: MSTORE 00000d7e: PUSH1 0x20 00000d80: ADD 00000d81: SWAP1 00000d82: DUP2 00000d83: MSTORE 00000d84: PUSH1 0x20 00000d86: ADD 00000d87: PUSH1 0x00 00000d89: KECCAK256 00000d8a: DUP2 00000d8b: SWAP1 00000d8c: SSTORE 00000d8d: POP 00000d8e: CALLER 00000d8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000da4: AND 00000da5: PUSH1 0x03 00000da7: PUSH1 0x00 00000da9: SWAP1 00000daa: SLOAD 00000dab: SWAP1 00000dac: PUSH2 0x0100 00000daf: EXP 00000db0: SWAP1 00000db1: DIV 00000db2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000dc7: AND 00000dc8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ddd: AND 00000dde: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000dff: DUP5 00000e00: PUSH1 0x40 00000e02: MLOAD 00000e03: DUP1 00000e04: DUP3 00000e05: DUP2 00000e06: MSTORE 00000e07: PUSH1 0x20 00000e09: ADD 00000e0a: SWAP2 00000e0b: POP 00000e0c: POP 00000e0d: PUSH1 0x40 00000e0f: MLOAD 00000e10: DUP1 00000e11: SWAP2 00000e12: SUB 00000e13: SWAP1 00000e14: LOG3 00000e15: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72 00000e36: PUSH1 0x03 00000e38: PUSH1 0x00 00000e3a: SWAP1 00000e3b: SLOAD 00000e3c: SWAP1 00000e3d: PUSH2 0x0100 00000e40: EXP 00000e41: SWAP1 00000e42: DIV 00000e43: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e58: AND 00000e59: CALLER 00000e5a: DUP5 00000e5b: PUSH1 0x02 00000e5d: PUSH1 0x40 00000e5f: MLOAD 00000e60: DUP1 00000e61: DUP6 00000e62: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e77: AND 00000e78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e8d: AND 00000e8e: DUP2 00000e8f: MSTORE 00000e90: PUSH1 0x20 00000e92: ADD 00000e93: DUP5 00000e94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ea9: AND 00000eaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ebf: AND 00000ec0: DUP2 00000ec1: MSTORE 00000ec2: PUSH1 0x20 00000ec4: ADD 00000ec5: DUP4 00000ec6: DUP2 00000ec7: MSTORE 00000ec8: PUSH1 0x20 00000eca: ADD 00000ecb: DUP3 00000ecc: PUSH1 0xff 00000ece: AND 00000ecf: DUP2 00000ed0: MSTORE 00000ed1: PUSH1 0x20 00000ed3: ADD 00000ed4: SWAP5 00000ed5: POP 00000ed6: POP 00000ed7: POP 00000ed8: POP 00000ed9: POP 00000eda: PUSH1 0x40 00000edc: MLOAD 00000edd: DUP1 00000ede: SWAP2 00000edf: SUB 00000ee0: SWAP1 00000ee1: LOG1 00000ee2: PUSH2 0x1197 00000ee5: JUMP 00000ee6: JUMPDEST 00000ee7: PUSH2 0x0f51 00000eea: PUSH1 0x01 00000eec: PUSH1 0x00 00000eee: PUSH1 0x03 00000ef0: PUSH1 0x00 00000ef2: SWAP1 00000ef3: SLOAD 00000ef4: SWAP1 00000ef5: PUSH2 0x0100 00000ef8: EXP 00000ef9: SWAP1 00000efa: DIV 00000efb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f10: AND 00000f11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f26: AND 00000f27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f3c: AND 00000f3d: DUP2 00000f3e: MSTORE 00000f3f: PUSH1 0x20 00000f41: ADD 00000f42: SWAP1 00000f43: DUP2 00000f44: MSTORE 00000f45: PUSH1 0x20 00000f47: ADD 00000f48: PUSH1 0x00 00000f4a: KECCAK256 00000f4b: SLOAD 00000f4c: DUP4 00000f4d: PUSH2 0x2ba1 00000f50: JUMP 00000f51: JUMPDEST 00000f52: PUSH1 0x01 00000f54: PUSH1 0x00 00000f56: PUSH1 0x03 00000f58: PUSH1 0x00 00000f5a: SWAP1 00000f5b: SLOAD 00000f5c: SWAP1 00000f5d: PUSH2 0x0100 00000f60: EXP 00000f61: SWAP1 00000f62: DIV 00000f63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f78: AND 00000f79: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f8e: AND 00000f8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fa4: AND 00000fa5: DUP2 00000fa6: MSTORE 00000fa7: PUSH1 0x20 00000fa9: ADD 00000faa: SWAP1 00000fab: DUP2 00000fac: MSTORE 00000fad: PUSH1 0x20 00000faf: ADD 00000fb0: PUSH1 0x00 00000fb2: KECCAK256 00000fb3: DUP2 00000fb4: SWAP1 00000fb5: SSTORE 00000fb6: POP 00000fb7: PUSH2 0x0fff 00000fba: PUSH1 0x01 00000fbc: PUSH1 0x00 00000fbe: CALLER 00000fbf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fd4: AND 00000fd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fea: AND 00000feb: DUP2 00000fec: MSTORE 00000fed: PUSH1 0x20 00000fef: ADD 00000ff0: SWAP1 00000ff1: DUP2 00000ff2: MSTORE 00000ff3: PUSH1 0x20 00000ff5: ADD 00000ff6: PUSH1 0x00 00000ff8: KECCAK256 00000ff9: SLOAD 00000ffa: DUP4 00000ffb: PUSH2 0x2b87 00000ffe: JUMP 00000fff: JUMPDEST 00001000: PUSH1 0x01 00001002: PUSH1 0x00 00001004: CALLER 00001005: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000101a: AND 0000101b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001030: AND 00001031: DUP2 00001032: MSTORE 00001033: PUSH1 0x20 00001035: ADD 00001036: SWAP1 00001037: DUP2 00001038: MSTORE 00001039: PUSH1 0x20 0000103b: ADD 0000103c: PUSH1 0x00 0000103e: KECCAK256 0000103f: DUP2 00001040: SWAP1 00001041: SSTORE 00001042: POP 00001043: PUSH1 0x03 00001045: PUSH1 0x00 00001047: SWAP1 00001048: SLOAD 00001049: SWAP1 0000104a: PUSH2 0x0100 0000104d: EXP 0000104e: SWAP1 0000104f: DIV 00001050: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001065: AND 00001066: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000107b: AND 0000107c: CALLER 0000107d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001092: AND 00001093: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000010b4: DUP5 000010b5: PUSH1 0x40 000010b7: MLOAD 000010b8: DUP1 000010b9: DUP3 000010ba: DUP2 000010bb: MSTORE 000010bc: PUSH1 0x20 000010be: ADD 000010bf: SWAP2 000010c0: POP 000010c1: POP 000010c2: PUSH1 0x40 000010c4: MLOAD 000010c5: DUP1 000010c6: SWAP2 000010c7: SUB 000010c8: SWAP1 000010c9: LOG3 000010ca: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72 000010eb: CALLER 000010ec: PUSH1 0x03 000010ee: PUSH1 0x00 000010f0: SWAP1 000010f1: SLOAD 000010f2: SWAP1 000010f3: PUSH2 0x0100 000010f6: EXP 000010f7: SWAP1 000010f8: DIV 000010f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000110e: AND 0000110f: DUP5 00001110: PUSH1 0x02 00001112: PUSH1 0x40 00001114: MLOAD 00001115: DUP1 00001116: DUP6 00001117: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000112c: AND 0000112d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001142: AND 00001143: DUP2 00001144: MSTORE 00001145: PUSH1 0x20 00001147: ADD 00001148: DUP5 00001149: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000115e: AND 0000115f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001174: AND 00001175: DUP2 00001176: MSTORE 00001177: PUSH1 0x20 00001179: ADD 0000117a: DUP4 0000117b: DUP2 0000117c: MSTORE 0000117d: PUSH1 0x20 0000117f: ADD 00001180: DUP3 00001181: PUSH1 0xff 00001183: AND 00001184: DUP2 00001185: MSTORE 00001186: PUSH1 0x20 00001188: ADD 00001189: SWAP5 0000118a: POP 0000118b: POP 0000118c: POP 0000118d: POP 0000118e: POP 0000118f: PUSH1 0x40 00001191: MLOAD 00001192: DUP1 00001193: SWAP2 00001194: SUB 00001195: SWAP1 00001196: LOG1 00001197: JUMPDEST 00001198: JUMPDEST 00001199: JUMPDEST 0000119a: POP 0000119b: POP 0000119c: JUMP 0000119d: JUMPDEST 0000119e: PUSH2 0x1287 000011a1: PUSH1 0x08 000011a3: PUSH1 0x01 000011a5: SWAP1 000011a6: SLOAD 000011a7: SWAP1 000011a8: PUSH2 0x0100 000011ab: EXP 000011ac: SWAP1 000011ad: DIV 000011ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011c3: AND 000011c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011d9: AND 000011da: PUSH4 0x59770438 000011df: CALLER 000011e0: PUSH1 0x00 000011e2: PUSH1 0x40 000011e4: MLOAD 000011e5: PUSH1 0x20 000011e7: ADD 000011e8: MSTORE 000011e9: PUSH1 0x40 000011eb: MLOAD 000011ec: DUP3 000011ed: PUSH4 0xffffffff 000011f2: AND 000011f3: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001211: MUL 00001212: DUP2 00001213: MSTORE 00001214: PUSH1 0x04 00001216: ADD 00001217: DUP1 00001218: DUP3 00001219: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000122e: AND 0000122f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001244: AND 00001245: DUP2 00001246: MSTORE 00001247: PUSH1 0x20 00001249: ADD 0000124a: SWAP2 0000124b: POP 0000124c: POP 0000124d: PUSH1 0x20 0000124f: PUSH1 0x40 00001251: MLOAD 00001252: DUP1 00001253: DUP4 00001254: SUB 00001255: DUP2 00001256: PUSH1 0x00 00001258: DUP8 00001259: DUP1 0000125a: EXTCODESIZE 0000125b: ISZERO 0000125c: ISZERO 0000125d: PUSH2 0x1265 00001260: JUMPI 00001261: PUSH1 0x00 00001263: DUP1 00001264: REVERT 00001265: JUMPDEST 00001266: PUSH2 0x02c6 00001269: GAS 0000126a: SUB 0000126b: CALL 0000126c: ISZERO 0000126d: ISZERO 0000126e: PUSH2 0x1276 00001271: JUMPI 00001272: PUSH1 0x00 00001274: DUP1 00001275: REVERT 00001276: JUMPDEST 00001277: POP 00001278: POP 00001279: POP 0000127a: PUSH1 0x40 0000127c: MLOAD 0000127d: DUP1 0000127e: MLOAD 0000127f: SWAP1 00001280: POP 00001281: PUSH1 0x01 00001283: PUSH2 0x0c22 00001286: JUMP 00001287: JUMPDEST 00001288: JUMPDEST 00001289: JUMP 0000128a: JUMPDEST 0000128b: PUSH1 0x07 0000128d: SLOAD 0000128e: DUP2 0000128f: JUMP 00001290: JUMPDEST 00001291: PUSH1 0x00 00001293: DUP1 00001294: DUP3 00001295: EQ 00001296: ISZERO 00001297: DUP1 00001298: ISZERO 00001299: PUSH2 0x131f 0000129c: JUMPI 0000129d: POP 0000129e: PUSH1 0x00 000012a0: PUSH1 0x02 000012a2: PUSH1 0x00 000012a4: CALLER 000012a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012ba: AND 000012bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012d0: AND 000012d1: DUP2 000012d2: MSTORE 000012d3: PUSH1 0x20 000012d5: ADD 000012d6: SWAP1 000012d7: DUP2 000012d8: MSTORE 000012d9: PUSH1 0x20 000012db: ADD 000012dc: PUSH1 0x00 000012de: KECCAK256 000012df: PUSH1 0x00 000012e1: DUP6 000012e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012f7: AND 000012f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000130d: AND 0000130e: DUP2 0000130f: MSTORE 00001310: PUSH1 0x20 00001312: ADD 00001313: SWAP1 00001314: DUP2 00001315: MSTORE 00001316: PUSH1 0x20 00001318: ADD 00001319: PUSH1 0x00 0000131b: KECCAK256 0000131c: SLOAD 0000131d: EQ 0000131e: ISZERO 0000131f: JUMPDEST 00001320: ISZERO 00001321: PUSH2 0x1329 00001324: JUMPI 00001325: PUSH1 0x00 00001327: DUP1 00001328: REVERT 00001329: JUMPDEST 0000132a: DUP2 0000132b: PUSH1 0x02 0000132d: PUSH1 0x00 0000132f: CALLER 00001330: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001345: AND 00001346: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000135b: AND 0000135c: DUP2 0000135d: MSTORE 0000135e: PUSH1 0x20 00001360: ADD 00001361: SWAP1 00001362: DUP2 00001363: MSTORE 00001364: PUSH1 0x20 00001366: ADD 00001367: PUSH1 0x00 00001369: KECCAK256 0000136a: PUSH1 0x00 0000136c: DUP6 0000136d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001382: AND 00001383: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001398: AND 00001399: DUP2 0000139a: MSTORE 0000139b: PUSH1 0x20 0000139d: ADD 0000139e: SWAP1 0000139f: DUP2 000013a0: MSTORE 000013a1: PUSH1 0x20 000013a3: ADD 000013a4: PUSH1 0x00 000013a6: KECCAK256 000013a7: DUP2 000013a8: SWAP1 000013a9: SSTORE 000013aa: POP 000013ab: DUP3 000013ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013c1: AND 000013c2: CALLER 000013c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013d8: AND 000013d9: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 000013fa: DUP5 000013fb: PUSH1 0x40 000013fd: MLOAD 000013fe: DUP1 000013ff: DUP3 00001400: DUP2 00001401: MSTORE 00001402: PUSH1 0x20 00001404: ADD 00001405: SWAP2 00001406: POP 00001407: POP 00001408: PUSH1 0x40 0000140a: MLOAD 0000140b: DUP1 0000140c: SWAP2 0000140d: SUB 0000140e: SWAP1 0000140f: LOG3 00001410: PUSH1 0x01 00001412: SWAP1 00001413: POP 00001414: JUMPDEST 00001415: SWAP3 00001416: SWAP2 00001417: POP 00001418: POP 00001419: JUMP 0000141a: JUMPDEST 0000141b: PUSH1 0x00 0000141d: PUSH1 0x03 0000141f: PUSH1 0x00 00001421: SWAP1 00001422: SLOAD 00001423: SWAP1 00001424: PUSH2 0x0100 00001427: EXP 00001428: SWAP1 00001429: DIV 0000142a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000143f: AND 00001440: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001455: AND 00001456: EQ 00001457: DUP1 00001458: PUSH2 0x14ae 0000145b: JUMPI 0000145c: POP 0000145d: CALLER 0000145e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001473: AND 00001474: PUSH1 0x03 00001476: PUSH1 0x00 00001478: SWAP1 00001479: SLOAD 0000147a: SWAP1 0000147b: PUSH2 0x0100 0000147e: EXP 0000147f: SWAP1 00001480: DIV 00001481: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001496: AND 00001497: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014ac: AND 000014ad: EQ 000014ae: JUMPDEST 000014af: ISZERO 000014b0: ISZERO 000014b1: PUSH2 0x14b9 000014b4: JUMPI 000014b5: PUSH1 0x00 000014b7: DUP1 000014b8: REVERT 000014b9: JUMPDEST 000014ba: DUP1 000014bb: PUSH1 0x03 000014bd: PUSH1 0x00 000014bf: PUSH2 0x0100 000014c2: EXP 000014c3: DUP2 000014c4: SLOAD 000014c5: DUP2 000014c6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014db: MUL 000014dc: NOT 000014dd: AND 000014de: SWAP1 000014df: DUP4 000014e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014f5: AND 000014f6: MUL 000014f7: OR 000014f8: SWAP1 000014f9: SSTORE 000014fa: POP 000014fb: JUMPDEST 000014fc: POP 000014fd: JUMP 000014fe: JUMPDEST 000014ff: PUSH1 0x00 00001501: SLOAD 00001502: DUP2 00001503: JUMP 00001504: JUMPDEST 00001505: PUSH1 0x00 00001507: PUSH1 0x04 00001509: PUSH1 0x00 0000150b: SWAP1 0000150c: SLOAD 0000150d: SWAP1 0000150e: PUSH2 0x0100 00001511: EXP 00001512: SWAP1 00001513: DIV 00001514: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001529: AND 0000152a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000153f: AND 00001540: EQ 00001541: DUP1 00001542: PUSH2 0x1598 00001545: JUMPI 00001546: POP 00001547: CALLER 00001548: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000155d: AND 0000155e: PUSH1 0x03 00001560: PUSH1 0x00 00001562: SWAP1 00001563: SLOAD 00001564: SWAP1 00001565: PUSH2 0x0100 00001568: EXP 00001569: SWAP1 0000156a: DIV 0000156b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001580: AND 00001581: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001596: AND 00001597: EQ 00001598: JUMPDEST 00001599: DUP1 0000159a: PUSH2 0x15f0 0000159d: JUMPI 0000159e: POP 0000159f: CALLER 000015a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015b5: AND 000015b6: PUSH1 0x04 000015b8: PUSH1 0x00 000015ba: SWAP1 000015bb: SLOAD 000015bc: SWAP1 000015bd: PUSH2 0x0100 000015c0: EXP 000015c1: SWAP1 000015c2: DIV 000015c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015d8: AND 000015d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015ee: AND 000015ef: EQ 000015f0: JUMPDEST 000015f1: ISZERO 000015f2: ISZERO 000015f3: PUSH2 0x15fb 000015f6: JUMPI 000015f7: PUSH1 0x00 000015f9: DUP1 000015fa: REVERT 000015fb: JUMPDEST 000015fc: DUP1 000015fd: PUSH1 0x04 000015ff: PUSH1 0x00 00001601: PUSH2 0x0100 00001604: EXP 00001605: DUP2 00001606: SLOAD 00001607: DUP2 00001608: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000161d: MUL 0000161e: NOT 0000161f: AND 00001620: SWAP1 00001621: DUP4 00001622: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001637: AND 00001638: MUL 00001639: OR 0000163a: SWAP1 0000163b: SSTORE 0000163c: POP 0000163d: JUMPDEST 0000163e: POP 0000163f: JUMP 00001640: JUMPDEST 00001641: PUSH1 0x08 00001643: PUSH1 0x00 00001645: SWAP1 00001646: SLOAD 00001647: SWAP1 00001648: PUSH2 0x0100 0000164b: EXP 0000164c: SWAP1 0000164d: DIV 0000164e: PUSH1 0xff 00001650: AND 00001651: DUP2 00001652: JUMP 00001653: JUMPDEST 00001654: PUSH1 0x00 00001656: DUP1 00001657: TIMESTAMP 00001658: PUSH1 0x0b 0000165a: PUSH1 0x00 0000165c: CALLER 0000165d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001672: AND 00001673: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001688: AND 00001689: DUP2 0000168a: MSTORE 0000168b: PUSH1 0x20 0000168d: ADD 0000168e: SWAP1 0000168f: DUP2 00001690: MSTORE 00001691: PUSH1 0x20 00001693: ADD 00001694: PUSH1 0x00 00001696: KECCAK256 00001697: SLOAD 00001698: LT 00001699: ISZERO 0000169a: ISZERO 0000169b: PUSH2 0x16a3 0000169e: JUMPI 0000169f: PUSH1 0x00 000016a1: DUP1 000016a2: REVERT 000016a3: JUMPDEST 000016a4: PUSH1 0x02 000016a6: PUSH1 0x00 000016a8: DUP7 000016a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016be: AND 000016bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016d4: AND 000016d5: DUP2 000016d6: MSTORE 000016d7: PUSH1 0x20 000016d9: ADD 000016da: SWAP1 000016db: DUP2 000016dc: MSTORE 000016dd: PUSH1 0x20 000016df: ADD 000016e0: PUSH1 0x00 000016e2: KECCAK256 000016e3: PUSH1 0x00 000016e5: CALLER 000016e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016fb: AND 000016fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001711: AND 00001712: DUP2 00001713: MSTORE 00001714: PUSH1 0x20 00001716: ADD 00001717: SWAP1 00001718: DUP2 00001719: MSTORE 0000171a: PUSH1 0x20 0000171c: ADD 0000171d: PUSH1 0x00 0000171f: KECCAK256 00001720: SLOAD 00001721: SWAP1 00001722: POP 00001723: PUSH2 0x176b 00001726: PUSH1 0x01 00001728: PUSH1 0x00 0000172a: DUP7 0000172b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001740: AND 00001741: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001756: AND 00001757: DUP2 00001758: MSTORE 00001759: PUSH1 0x20 0000175b: ADD 0000175c: SWAP1 0000175d: DUP2 0000175e: MSTORE 0000175f: PUSH1 0x20 00001761: ADD 00001762: PUSH1 0x00 00001764: KECCAK256 00001765: SLOAD 00001766: DUP5 00001767: PUSH2 0x2ba1 0000176a: JUMP 0000176b: JUMPDEST 0000176c: PUSH1 0x01 0000176e: PUSH1 0x00 00001770: DUP7 00001771: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001786: AND 00001787: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000179c: AND 0000179d: DUP2 0000179e: MSTORE 0000179f: PUSH1 0x20 000017a1: ADD 000017a2: SWAP1 000017a3: DUP2 000017a4: MSTORE 000017a5: PUSH1 0x20 000017a7: ADD 000017a8: PUSH1 0x00 000017aa: KECCAK256 000017ab: DUP2 000017ac: SWAP1 000017ad: SSTORE 000017ae: POP 000017af: PUSH2 0x17f7 000017b2: PUSH1 0x01 000017b4: PUSH1 0x00 000017b6: DUP8 000017b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017cc: AND 000017cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017e2: AND 000017e3: DUP2 000017e4: MSTORE 000017e5: PUSH1 0x20 000017e7: ADD 000017e8: SWAP1 000017e9: DUP2 000017ea: MSTORE 000017eb: PUSH1 0x20 000017ed: ADD 000017ee: PUSH1 0x00 000017f0: KECCAK256 000017f1: SLOAD 000017f2: DUP5 000017f3: PUSH2 0x2b87 000017f6: JUMP 000017f7: JUMPDEST 000017f8: PUSH1 0x01 000017fa: PUSH1 0x00 000017fc: DUP8 000017fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001812: AND 00001813: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001828: AND 00001829: DUP2 0000182a: MSTORE 0000182b: PUSH1 0x20 0000182d: ADD 0000182e: SWAP1 0000182f: DUP2 00001830: MSTORE 00001831: PUSH1 0x20 00001833: ADD 00001834: PUSH1 0x00 00001836: KECCAK256 00001837: DUP2 00001838: SWAP1 00001839: SSTORE 0000183a: POP 0000183b: PUSH2 0x1844 0000183e: DUP2 0000183f: DUP5 00001840: PUSH2 0x2b87 00001843: JUMP 00001844: JUMPDEST 00001845: PUSH1 0x02 00001847: PUSH1 0x00 00001849: DUP8 0000184a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000185f: AND 00001860: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001875: AND 00001876: DUP2 00001877: MSTORE 00001878: PUSH1 0x20 0000187a: ADD 0000187b: SWAP1 0000187c: DUP2 0000187d: MSTORE 0000187e: PUSH1 0x20 00001880: ADD 00001881: PUSH1 0x00 00001883: KECCAK256 00001884: PUSH1 0x00 00001886: CALLER 00001887: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000189c: AND 0000189d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018b2: AND 000018b3: DUP2 000018b4: MSTORE 000018b5: PUSH1 0x20 000018b7: ADD 000018b8: SWAP1 000018b9: DUP2 000018ba: MSTORE 000018bb: PUSH1 0x20 000018bd: ADD 000018be: PUSH1 0x00 000018c0: KECCAK256 000018c1: DUP2 000018c2: SWAP1 000018c3: SSTORE 000018c4: POP 000018c5: DUP4 000018c6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018db: AND 000018dc: DUP6 000018dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018f2: AND 000018f3: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001914: DUP6 00001915: PUSH1 0x40 00001917: MLOAD 00001918: DUP1 00001919: DUP3 0000191a: DUP2 0000191b: MSTORE 0000191c: PUSH1 0x20 0000191e: ADD 0000191f: SWAP2 00001920: POP 00001921: POP 00001922: PUSH1 0x40 00001924: MLOAD 00001925: DUP1 00001926: SWAP2 00001927: SUB 00001928: SWAP1 00001929: LOG3 0000192a: PUSH1 0x01 0000192c: SWAP2 0000192d: POP 0000192e: JUMPDEST 0000192f: JUMPDEST 00001930: POP 00001931: SWAP4 00001932: SWAP3 00001933: POP 00001934: POP 00001935: POP 00001936: JUMP 00001937: JUMPDEST 00001938: PUSH1 0x06 0000193a: SLOAD 0000193b: DUP2 0000193c: JUMP 0000193d: JUMPDEST 0000193e: PUSH1 0x03 00001940: PUSH1 0x00 00001942: SWAP1 00001943: SLOAD 00001944: SWAP1 00001945: PUSH2 0x0100 00001948: EXP 00001949: SWAP1 0000194a: DIV 0000194b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001960: AND 00001961: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001976: AND 00001977: CALLER 00001978: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000198d: AND 0000198e: EQ 0000198f: ISZERO 00001990: ISZERO 00001991: PUSH2 0x1999 00001994: JUMPI 00001995: PUSH1 0x00 00001997: DUP1 00001998: REVERT 00001999: JUMPDEST 0000199a: PUSH2 0x19e2 0000199d: PUSH1 0x01 0000199f: PUSH1 0x00 000019a1: CALLER 000019a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019b7: AND 000019b8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019cd: AND 000019ce: DUP2 000019cf: MSTORE 000019d0: PUSH1 0x20 000019d2: ADD 000019d3: SWAP1 000019d4: DUP2 000019d5: MSTORE 000019d6: PUSH1 0x20 000019d8: ADD 000019d9: PUSH1 0x00 000019db: KECCAK256 000019dc: SLOAD 000019dd: DUP3 000019de: PUSH2 0x2b87 000019e1: JUMP 000019e2: JUMPDEST 000019e3: PUSH1 0x01 000019e5: PUSH1 0x00 000019e7: CALLER 000019e8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019fd: AND 000019fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a13: AND 00001a14: DUP2 00001a15: MSTORE 00001a16: PUSH1 0x20 00001a18: ADD 00001a19: SWAP1 00001a1a: DUP2 00001a1b: MSTORE 00001a1c: PUSH1 0x20 00001a1e: ADD 00001a1f: PUSH1 0x00 00001a21: KECCAK256 00001a22: DUP2 00001a23: SWAP1 00001a24: SSTORE 00001a25: POP 00001a26: PUSH2 0x1a31 00001a29: PUSH1 0x00 00001a2b: SLOAD 00001a2c: DUP3 00001a2d: PUSH2 0x2b87 00001a30: JUMP 00001a31: JUMPDEST 00001a32: PUSH1 0x00 00001a34: DUP2 00001a35: SWAP1 00001a36: SSTORE 00001a37: POP 00001a38: JUMPDEST 00001a39: JUMPDEST 00001a3a: POP 00001a3b: JUMP 00001a3c: JUMPDEST 00001a3d: PUSH1 0x03 00001a3f: PUSH1 0x00 00001a41: SWAP1 00001a42: SLOAD 00001a43: SWAP1 00001a44: PUSH2 0x0100 00001a47: EXP 00001a48: SWAP1 00001a49: DIV 00001a4a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a5f: AND 00001a60: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a75: AND 00001a76: CALLER 00001a77: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a8c: AND 00001a8d: EQ 00001a8e: ISZERO 00001a8f: ISZERO 00001a90: PUSH2 0x1a98 00001a93: JUMPI 00001a94: PUSH1 0x00 00001a96: DUP1 00001a97: REVERT 00001a98: JUMPDEST 00001a99: PUSH2 0x1b4a 00001a9c: DUP2 00001a9d: PUSH1 0x09 00001a9f: PUSH1 0x00 00001aa1: SWAP1 00001aa2: SLOAD 00001aa3: SWAP1 00001aa4: PUSH2 0x0100 00001aa7: EXP 00001aa8: SWAP1 00001aa9: DIV 00001aaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001abf: AND 00001ac0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ad5: AND 00001ad6: PUSH4 0xd45294f5 00001adb: PUSH1 0x00 00001add: PUSH1 0x40 00001adf: MLOAD 00001ae0: PUSH1 0x20 00001ae2: ADD 00001ae3: MSTORE 00001ae4: PUSH1 0x40 00001ae6: MLOAD 00001ae7: DUP2 00001ae8: PUSH4 0xffffffff 00001aed: AND 00001aee: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001b0c: MUL 00001b0d: DUP2 00001b0e: MSTORE 00001b0f: PUSH1 0x04 00001b11: ADD 00001b12: PUSH1 0x20 00001b14: PUSH1 0x40 00001b16: MLOAD 00001b17: DUP1 00001b18: DUP4 00001b19: SUB 00001b1a: DUP2 00001b1b: PUSH1 0x00 00001b1d: DUP8 00001b1e: DUP1 00001b1f: EXTCODESIZE 00001b20: ISZERO 00001b21: ISZERO 00001b22: PUSH2 0x1b2a 00001b25: JUMPI 00001b26: PUSH1 0x00 00001b28: DUP1 00001b29: REVERT 00001b2a: JUMPDEST 00001b2b: PUSH2 0x02c6 00001b2e: GAS 00001b2f: SUB 00001b30: CALL 00001b31: ISZERO 00001b32: ISZERO 00001b33: PUSH2 0x1b3b 00001b36: JUMPI 00001b37: PUSH1 0x00 00001b39: DUP1 00001b3a: REVERT 00001b3b: JUMPDEST 00001b3c: POP 00001b3d: POP 00001b3e: POP 00001b3f: PUSH1 0x40 00001b41: MLOAD 00001b42: DUP1 00001b43: MLOAD 00001b44: SWAP1 00001b45: POP 00001b46: PUSH2 0x2bbb 00001b49: JUMP 00001b4a: JUMPDEST 00001b4b: JUMPDEST 00001b4c: JUMPDEST 00001b4d: POP 00001b4e: JUMP 00001b4f: JUMPDEST 00001b50: PUSH1 0x03 00001b52: PUSH1 0x00 00001b54: SWAP1 00001b55: SLOAD 00001b56: SWAP1 00001b57: PUSH2 0x0100 00001b5a: EXP 00001b5b: SWAP1 00001b5c: DIV 00001b5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b72: AND 00001b73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b88: AND 00001b89: CALLER 00001b8a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b9f: AND 00001ba0: EQ 00001ba1: DUP1 00001ba2: PUSH2 0x1bf8 00001ba5: JUMPI 00001ba6: POP 00001ba7: PUSH1 0x04 00001ba9: PUSH1 0x00 00001bab: SWAP1 00001bac: SLOAD 00001bad: SWAP1 00001bae: PUSH2 0x0100 00001bb1: EXP 00001bb2: SWAP1 00001bb3: DIV 00001bb4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bc9: AND 00001bca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bdf: AND 00001be0: CALLER 00001be1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bf6: AND 00001bf7: EQ 00001bf8: JUMPDEST 00001bf9: ISZERO 00001bfa: ISZERO 00001bfb: PUSH2 0x1c03 00001bfe: JUMPI 00001bff: PUSH1 0x00 00001c01: DUP1 00001c02: REVERT 00001c03: JUMPDEST 00001c04: PUSH1 0x09 00001c06: PUSH1 0x00 00001c08: SWAP1 00001c09: SLOAD 00001c0a: SWAP1 00001c0b: PUSH2 0x0100 00001c0e: EXP 00001c0f: SWAP1 00001c10: DIV 00001c11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c26: AND 00001c27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c3c: AND 00001c3d: PUSH4 0x4c524be4 00001c42: DUP3 00001c43: PUSH1 0x40 00001c45: MLOAD 00001c46: DUP3 00001c47: PUSH4 0xffffffff 00001c4c: AND 00001c4d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001c6b: MUL 00001c6c: DUP2 00001c6d: MSTORE 00001c6e: PUSH1 0x04 00001c70: ADD 00001c71: DUP1 00001c72: DUP3 00001c73: DUP2 00001c74: MSTORE 00001c75: PUSH1 0x20 00001c77: ADD 00001c78: SWAP2 00001c79: POP 00001c7a: POP 00001c7b: PUSH1 0x00 00001c7d: PUSH1 0x40 00001c7f: MLOAD 00001c80: DUP1 00001c81: DUP4 00001c82: SUB 00001c83: DUP2 00001c84: PUSH1 0x00 00001c86: DUP8 00001c87: DUP1 00001c88: EXTCODESIZE 00001c89: ISZERO 00001c8a: ISZERO 00001c8b: PUSH2 0x1c93 00001c8e: JUMPI 00001c8f: PUSH1 0x00 00001c91: DUP1 00001c92: REVERT 00001c93: JUMPDEST 00001c94: PUSH2 0x02c6 00001c97: GAS 00001c98: SUB 00001c99: CALL 00001c9a: ISZERO 00001c9b: ISZERO 00001c9c: PUSH2 0x1ca4 00001c9f: JUMPI 00001ca0: PUSH1 0x00 00001ca2: DUP1 00001ca3: REVERT 00001ca4: JUMPDEST 00001ca5: POP 00001ca6: POP 00001ca7: POP 00001ca8: JUMPDEST 00001ca9: JUMPDEST 00001caa: POP 00001cab: JUMP 00001cac: JUMPDEST 00001cad: PUSH1 0x0d 00001caf: SLOAD 00001cb0: DUP2 00001cb1: JUMP 00001cb2: JUMPDEST 00001cb3: PUSH1 0x03 00001cb5: PUSH1 0x00 00001cb7: SWAP1 00001cb8: SLOAD 00001cb9: SWAP1 00001cba: PUSH2 0x0100 00001cbd: EXP 00001cbe: SWAP1 00001cbf: DIV 00001cc0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001cd5: AND 00001cd6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ceb: AND 00001cec: CALLER 00001ced: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d02: AND 00001d03: EQ 00001d04: DUP1 00001d05: PUSH2 0x1d5b 00001d08: JUMPI 00001d09: POP 00001d0a: PUSH1 0x04 00001d0c: PUSH1 0x00 00001d0e: SWAP1 00001d0f: SLOAD 00001d10: SWAP1 00001d11: PUSH2 0x0100 00001d14: EXP 00001d15: SWAP1 00001d16: DIV 00001d17: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d2c: AND 00001d2d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d42: AND 00001d43: CALLER 00001d44: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d59: AND 00001d5a: EQ 00001d5b: JUMPDEST 00001d5c: ISZERO 00001d5d: ISZERO 00001d5e: PUSH2 0x1d66 00001d61: JUMPI 00001d62: PUSH1 0x00 00001d64: DUP1 00001d65: REVERT 00001d66: JUMPDEST 00001d67: DUP6 00001d68: PUSH1 0x08 00001d6a: PUSH1 0x01 00001d6c: PUSH2 0x0100 00001d6f: EXP 00001d70: DUP2 00001d71: SLOAD 00001d72: DUP2 00001d73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d88: MUL 00001d89: NOT 00001d8a: AND 00001d8b: SWAP1 00001d8c: DUP4 00001d8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001da2: AND 00001da3: MUL 00001da4: OR 00001da5: SWAP1 00001da6: SSTORE 00001da7: POP 00001da8: DUP5 00001da9: PUSH1 0x09 00001dab: PUSH1 0x00 00001dad: PUSH2 0x0100 00001db0: EXP 00001db1: DUP2 00001db2: SLOAD 00001db3: DUP2 00001db4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001dc9: MUL 00001dca: NOT 00001dcb: AND 00001dcc: SWAP1 00001dcd: DUP4 00001dce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001de3: AND 00001de4: MUL 00001de5: OR 00001de6: SWAP1 00001de7: SSTORE 00001de8: POP 00001de9: DUP4 00001dea: PUSH1 0x0a 00001dec: PUSH1 0x00 00001dee: PUSH2 0x0100 00001df1: EXP 00001df2: DUP2 00001df3: SLOAD 00001df4: DUP2 00001df5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e0a: MUL 00001e0b: NOT 00001e0c: AND 00001e0d: SWAP1 00001e0e: DUP4 00001e0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e24: AND 00001e25: MUL 00001e26: OR 00001e27: SWAP1 00001e28: SSTORE 00001e29: POP 00001e2a: DUP3 00001e2b: PUSH1 0x08 00001e2d: PUSH1 0x00 00001e2f: PUSH2 0x0100 00001e32: EXP 00001e33: DUP2 00001e34: SLOAD 00001e35: DUP2 00001e36: PUSH1 0xff 00001e38: MUL 00001e39: NOT 00001e3a: AND 00001e3b: SWAP1 00001e3c: DUP4 00001e3d: PUSH1 0x02 00001e3f: DUP2 00001e40: GT 00001e41: ISZERO 00001e42: PUSH2 0x1e47 00001e45: JUMPI 00001e46: INVALID 00001e47: JUMPDEST 00001e48: MUL 00001e49: OR 00001e4a: SWAP1 00001e4b: SSTORE 00001e4c: POP 00001e4d: DUP2 00001e4e: PUSH1 0x0c 00001e50: DUP2 00001e51: SWAP1 00001e52: SSTORE 00001e53: POP 00001e54: DUP1 00001e55: PUSH1 0x0d 00001e57: DUP2 00001e58: SWAP1 00001e59: SSTORE 00001e5a: POP 00001e5b: JUMPDEST 00001e5c: JUMPDEST 00001e5d: POP 00001e5e: POP 00001e5f: POP 00001e60: POP 00001e61: POP 00001e62: POP 00001e63: JUMP 00001e64: JUMPDEST 00001e65: PUSH1 0x00 00001e67: DUP1 00001e68: PUSH1 0x0a 00001e6a: PUSH1 0x00 00001e6c: SWAP1 00001e6d: SLOAD 00001e6e: SWAP1 00001e6f: PUSH2 0x0100 00001e72: EXP 00001e73: SWAP1 00001e74: DIV 00001e75: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e8a: AND 00001e8b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ea0: AND 00001ea1: PUSH4 0xfedfe46c 00001ea6: CALLER 00001ea7: PUSH1 0x01 00001ea9: PUSH1 0x00 00001eab: CALLER 00001eac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ec1: AND 00001ec2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ed7: AND 00001ed8: DUP2 00001ed9: MSTORE 00001eda: PUSH1 0x20 00001edc: ADD 00001edd: SWAP1 00001ede: DUP2 00001edf: MSTORE 00001ee0: PUSH1 0x20 00001ee2: ADD 00001ee3: PUSH1 0x00 00001ee5: KECCAK256 00001ee6: SLOAD 00001ee7: DUP8 00001ee8: DUP8 00001ee9: PUSH1 0x00 00001eeb: PUSH1 0x40 00001eed: MLOAD 00001eee: PUSH1 0x40 00001ef0: ADD 00001ef1: MSTORE 00001ef2: PUSH1 0x40 00001ef4: MLOAD 00001ef5: DUP6 00001ef6: PUSH4 0xffffffff 00001efb: AND 00001efc: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001f1a: MUL 00001f1b: DUP2 00001f1c: MSTORE 00001f1d: PUSH1 0x04 00001f1f: ADD 00001f20: DUP1 00001f21: DUP6 00001f22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f37: AND 00001f38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f4d: AND 00001f4e: DUP2 00001f4f: MSTORE 00001f50: PUSH1 0x20 00001f52: ADD 00001f53: DUP5 00001f54: DUP2 00001f55: MSTORE 00001f56: PUSH1 0x20 00001f58: ADD 00001f59: DUP4 00001f5a: DUP2 00001f5b: MSTORE 00001f5c: PUSH1 0x20 00001f5e: ADD 00001f5f: DUP3 00001f60: DUP2 00001f61: MSTORE 00001f62: PUSH1 0x20 00001f64: ADD 00001f65: SWAP5 00001f66: POP 00001f67: POP 00001f68: POP 00001f69: POP 00001f6a: POP 00001f6b: PUSH1 0x40 00001f6d: DUP1 00001f6e: MLOAD 00001f6f: DUP1 00001f70: DUP4 00001f71: SUB 00001f72: DUP2 00001f73: PUSH1 0x00 00001f75: DUP8 00001f76: DUP1 00001f77: EXTCODESIZE 00001f78: ISZERO 00001f79: ISZERO 00001f7a: PUSH2 0x1f82 00001f7d: JUMPI 00001f7e: PUSH1 0x00 00001f80: DUP1 00001f81: REVERT 00001f82: JUMPDEST 00001f83: PUSH2 0x02c6 00001f86: GAS 00001f87: SUB 00001f88: CALL 00001f89: ISZERO 00001f8a: ISZERO 00001f8b: PUSH2 0x1f93 00001f8e: JUMPI 00001f8f: PUSH1 0x00 00001f91: DUP1 00001f92: REVERT 00001f93: JUMPDEST 00001f94: POP 00001f95: POP 00001f96: POP 00001f97: PUSH1 0x40 00001f99: MLOAD 00001f9a: DUP1 00001f9b: MLOAD 00001f9c: SWAP1 00001f9d: PUSH1 0x20 00001f9f: ADD 00001fa0: DUP1 00001fa1: MLOAD 00001fa2: SWAP1 00001fa3: POP 00001fa4: DUP1 00001fa5: SWAP3 00001fa6: POP 00001fa7: DUP2 00001fa8: SWAP4 00001fa9: POP 00001faa: POP 00001fab: POP 00001fac: PUSH2 0x1fb6 00001faf: DUP3 00001fb0: PUSH1 0x01 00001fb2: PUSH2 0x0c22 00001fb5: JUMP 00001fb6: JUMPDEST 00001fb7: DUP1 00001fb8: PUSH1 0x0b 00001fba: PUSH1 0x00 00001fbc: CALLER 00001fbd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fd2: AND 00001fd3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fe8: AND 00001fe9: DUP2 00001fea: MSTORE 00001feb: PUSH1 0x20 00001fed: ADD 00001fee: SWAP1 00001fef: DUP2 00001ff0: MSTORE 00001ff1: PUSH1 0x20 00001ff3: ADD 00001ff4: PUSH1 0x00 00001ff6: KECCAK256 00001ff7: SLOAD 00001ff8: LT 00001ff9: ISZERO 00001ffa: PUSH2 0x2042 00001ffd: JUMPI 00001ffe: DUP1 00001fff: PUSH1 0x0b 00002001: PUSH1 0x00 00002003: CALLER 00002004: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002019: AND 0000201a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000202f: AND 00002030: DUP2 00002031: MSTORE 00002032: PUSH1 0x20 00002034: ADD 00002035: SWAP1 00002036: DUP2 00002037: MSTORE 00002038: PUSH1 0x20 0000203a: ADD 0000203b: PUSH1 0x00 0000203d: KECCAK256 0000203e: DUP2 0000203f: SWAP1 00002040: SSTORE 00002041: POP 00002042: JUMPDEST 00002043: JUMPDEST 00002044: POP 00002045: POP 00002046: POP 00002047: POP 00002048: JUMP 00002049: JUMPDEST 0000204a: PUSH1 0x0b 0000204c: PUSH1 0x20 0000204e: MSTORE 0000204f: DUP1 00002050: PUSH1 0x00 00002052: MSTORE 00002053: PUSH1 0x40 00002055: PUSH1 0x00 00002057: KECCAK256 00002058: PUSH1 0x00 0000205a: SWAP2 0000205b: POP 0000205c: SWAP1 0000205d: POP 0000205e: SLOAD 0000205f: DUP2 00002060: JUMP 00002061: JUMPDEST 00002062: PUSH1 0x00 00002064: PUSH1 0x01 00002066: PUSH1 0x00 00002068: DUP4 00002069: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000207e: AND 0000207f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002094: AND 00002095: DUP2 00002096: MSTORE 00002097: PUSH1 0x20 00002099: ADD 0000209a: SWAP1 0000209b: DUP2 0000209c: MSTORE 0000209d: PUSH1 0x20 0000209f: ADD 000020a0: PUSH1 0x00 000020a2: KECCAK256 000020a3: SLOAD 000020a4: SWAP1 000020a5: POP 000020a6: JUMPDEST 000020a7: SWAP2 000020a8: SWAP1 000020a9: POP 000020aa: JUMP 000020ab: JUMPDEST 000020ac: PUSH1 0x03 000020ae: PUSH1 0x00 000020b0: SWAP1 000020b1: SLOAD 000020b2: SWAP1 000020b3: PUSH2 0x0100 000020b6: EXP 000020b7: SWAP1 000020b8: DIV 000020b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020ce: AND 000020cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020e4: AND 000020e5: CALLER 000020e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020fb: AND 000020fc: EQ 000020fd: DUP1 000020fe: PUSH2 0x2154 00002101: JUMPI 00002102: POP 00002103: PUSH1 0x04 00002105: PUSH1 0x00 00002107: SWAP1 00002108: SLOAD 00002109: SWAP1 0000210a: PUSH2 0x0100 0000210d: EXP 0000210e: SWAP1 0000210f: DIV 00002110: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002125: AND 00002126: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000213b: AND 0000213c: CALLER 0000213d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002152: AND 00002153: EQ 00002154: JUMPDEST 00002155: ISZERO 00002156: ISZERO 00002157: PUSH2 0x215f 0000215a: JUMPI 0000215b: PUSH1 0x00 0000215d: DUP1 0000215e: REVERT 0000215f: JUMPDEST 00002160: PUSH1 0x0a 00002162: PUSH1 0x00 00002164: SWAP1 00002165: SLOAD 00002166: SWAP1 00002167: PUSH2 0x0100 0000216a: EXP 0000216b: SWAP1 0000216c: DIV 0000216d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002182: AND 00002183: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002198: AND 00002199: PUSH4 0x72159335 0000219e: DUP8 0000219f: DUP8 000021a0: DUP8 000021a1: DUP8 000021a2: DUP8 000021a3: DUP8 000021a4: PUSH1 0x40 000021a6: MLOAD 000021a7: DUP8 000021a8: PUSH4 0xffffffff 000021ad: AND 000021ae: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000021cc: MUL 000021cd: DUP2 000021ce: MSTORE 000021cf: PUSH1 0x04 000021d1: ADD 000021d2: DUP1 000021d3: DUP8 000021d4: DUP2 000021d5: MSTORE 000021d6: PUSH1 0x20 000021d8: ADD 000021d9: DUP7 000021da: DUP2 000021db: MSTORE 000021dc: PUSH1 0x20 000021de: ADD 000021df: DUP6 000021e0: DUP2 000021e1: MSTORE 000021e2: PUSH1 0x20 000021e4: ADD 000021e5: DUP5 000021e6: DUP2 000021e7: MSTORE 000021e8: PUSH1 0x20 000021ea: ADD 000021eb: DUP4 000021ec: DUP2 000021ed: MSTORE 000021ee: PUSH1 0x20 000021f0: ADD 000021f1: DUP3 000021f2: DUP2 000021f3: MSTORE 000021f4: PUSH1 0x20 000021f6: ADD 000021f7: SWAP7 000021f8: POP 000021f9: POP 000021fa: POP 000021fb: POP 000021fc: POP 000021fd: POP 000021fe: POP 000021ff: PUSH1 0x00 00002201: PUSH1 0x40 00002203: MLOAD 00002204: DUP1 00002205: DUP4 00002206: SUB 00002207: DUP2 00002208: PUSH1 0x00 0000220a: DUP8 0000220b: DUP1 0000220c: EXTCODESIZE 0000220d: ISZERO 0000220e: ISZERO 0000220f: PUSH2 0x2217 00002212: JUMPI 00002213: PUSH1 0x00 00002215: DUP1 00002216: REVERT 00002217: JUMPDEST 00002218: PUSH2 0x02c6 0000221b: GAS 0000221c: SUB 0000221d: CALL 0000221e: ISZERO 0000221f: ISZERO 00002220: PUSH2 0x2228 00002223: JUMPI 00002224: PUSH1 0x00 00002226: DUP1 00002227: REVERT 00002228: JUMPDEST 00002229: POP 0000222a: POP 0000222b: POP 0000222c: JUMPDEST 0000222d: JUMPDEST 0000222e: POP 0000222f: POP 00002230: POP 00002231: POP 00002232: POP 00002233: POP 00002234: JUMP 00002235: JUMPDEST 00002236: PUSH1 0x03 00002238: PUSH1 0x00 0000223a: SWAP1 0000223b: SLOAD 0000223c: SWAP1 0000223d: PUSH2 0x0100 00002240: EXP 00002241: SWAP1 00002242: DIV 00002243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002258: AND 00002259: DUP2 0000225a: JUMP 0000225b: JUMPDEST 0000225c: PUSH1 0x03 0000225e: PUSH1 0x00 00002260: SWAP1 00002261: SLOAD 00002262: SWAP1 00002263: PUSH2 0x0100 00002266: EXP 00002267: SWAP1 00002268: DIV 00002269: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000227e: AND 0000227f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002294: AND 00002295: CALLER 00002296: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022ab: AND 000022ac: EQ 000022ad: DUP1 000022ae: PUSH2 0x2304 000022b1: JUMPI 000022b2: POP 000022b3: PUSH1 0x04 000022b5: PUSH1 0x00 000022b7: SWAP1 000022b8: SLOAD 000022b9: SWAP1 000022ba: PUSH2 0x0100 000022bd: EXP 000022be: SWAP1 000022bf: DIV 000022c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022d5: AND 000022d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022eb: AND 000022ec: CALLER 000022ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002302: AND 00002303: EQ 00002304: JUMPDEST 00002305: ISZERO 00002306: ISZERO 00002307: PUSH2 0x230f 0000230a: JUMPI 0000230b: PUSH1 0x00 0000230d: DUP1 0000230e: REVERT 0000230f: JUMPDEST 00002310: PUSH1 0x09 00002312: PUSH1 0x00 00002314: SWAP1 00002315: SLOAD 00002316: SWAP1 00002317: PUSH2 0x0100 0000231a: EXP 0000231b: SWAP1 0000231c: DIV 0000231d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002332: AND 00002333: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002348: AND 00002349: PUSH4 0x945c7c59 0000234e: DUP6 0000234f: DUP6 00002350: DUP6 00002351: DUP6 00002352: PUSH1 0x40 00002354: MLOAD 00002355: DUP6 00002356: PUSH4 0xffffffff 0000235b: AND 0000235c: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000237a: MUL 0000237b: DUP2 0000237c: MSTORE 0000237d: PUSH1 0x04 0000237f: ADD 00002380: DUP1 00002381: DUP6 00002382: DUP2 00002383: MSTORE 00002384: PUSH1 0x20 00002386: ADD 00002387: DUP5 00002388: DUP2 00002389: MSTORE 0000238a: PUSH1 0x20 0000238c: ADD 0000238d: DUP4 0000238e: DUP2 0000238f: MSTORE 00002390: PUSH1 0x20 00002392: ADD 00002393: DUP3 00002394: DUP2 00002395: MSTORE 00002396: PUSH1 0x20 00002398: ADD 00002399: SWAP5 0000239a: POP 0000239b: POP 0000239c: POP 0000239d: POP 0000239e: POP 0000239f: PUSH1 0x00 000023a1: PUSH1 0x40 000023a3: MLOAD 000023a4: DUP1 000023a5: DUP4 000023a6: SUB 000023a7: DUP2 000023a8: PUSH1 0x00 000023aa: DUP8 000023ab: DUP1 000023ac: EXTCODESIZE 000023ad: ISZERO 000023ae: ISZERO 000023af: PUSH2 0x23b7 000023b2: JUMPI 000023b3: PUSH1 0x00 000023b5: DUP1 000023b6: REVERT 000023b7: JUMPDEST 000023b8: PUSH2 0x02c6 000023bb: GAS 000023bc: SUB 000023bd: CALL 000023be: ISZERO 000023bf: ISZERO 000023c0: PUSH2 0x23c8 000023c3: JUMPI 000023c4: PUSH1 0x00 000023c6: DUP1 000023c7: REVERT 000023c8: JUMPDEST 000023c9: POP 000023ca: POP 000023cb: POP 000023cc: JUMPDEST 000023cd: JUMPDEST 000023ce: POP 000023cf: POP 000023d0: POP 000023d1: POP 000023d2: JUMP 000023d3: JUMPDEST 000023d4: PUSH1 0x05 000023d6: SLOAD 000023d7: DUP2 000023d8: JUMP 000023d9: JUMPDEST 000023da: PUSH1 0x03 000023dc: PUSH1 0x00 000023de: SWAP1 000023df: SLOAD 000023e0: SWAP1 000023e1: PUSH2 0x0100 000023e4: EXP 000023e5: SWAP1 000023e6: DIV 000023e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023fc: AND 000023fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002412: AND 00002413: CALLER 00002414: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002429: AND 0000242a: EQ 0000242b: ISZERO 0000242c: ISZERO 0000242d: PUSH2 0x2435 00002430: JUMPI 00002431: PUSH1 0x00 00002433: DUP1 00002434: REVERT 00002435: JUMPDEST 00002436: PUSH2 0x247e 00002439: PUSH1 0x01 0000243b: PUSH1 0x00 0000243d: CALLER 0000243e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002453: AND 00002454: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002469: AND 0000246a: DUP2 0000246b: MSTORE 0000246c: PUSH1 0x20 0000246e: ADD 0000246f: SWAP1 00002470: DUP2 00002471: MSTORE 00002472: PUSH1 0x20 00002474: ADD 00002475: PUSH1 0x00 00002477: KECCAK256 00002478: SLOAD 00002479: DUP3 0000247a: PUSH2 0x2ba1 0000247d: JUMP 0000247e: JUMPDEST 0000247f: PUSH1 0x01 00002481: PUSH1 0x00 00002483: CALLER 00002484: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002499: AND 0000249a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024af: AND 000024b0: DUP2 000024b1: MSTORE 000024b2: PUSH1 0x20 000024b4: ADD 000024b5: SWAP1 000024b6: DUP2 000024b7: MSTORE 000024b8: PUSH1 0x20 000024ba: ADD 000024bb: PUSH1 0x00 000024bd: KECCAK256 000024be: DUP2 000024bf: SWAP1 000024c0: SSTORE 000024c1: POP 000024c2: PUSH2 0x24cd 000024c5: PUSH1 0x00 000024c7: SLOAD 000024c8: DUP3 000024c9: PUSH2 0x2ba1 000024cc: JUMP 000024cd: JUMPDEST 000024ce: PUSH1 0x00 000024d0: DUP2 000024d1: SWAP1 000024d2: SSTORE 000024d3: POP 000024d4: JUMPDEST 000024d5: JUMPDEST 000024d6: POP 000024d7: JUMP 000024d8: JUMPDEST 000024d9: PUSH1 0x00 000024db: TIMESTAMP 000024dc: PUSH1 0x0b 000024de: PUSH1 0x00 000024e0: CALLER 000024e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024f6: AND 000024f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000250c: AND 0000250d: DUP2 0000250e: MSTORE 0000250f: PUSH1 0x20 00002511: ADD 00002512: SWAP1 00002513: DUP2 00002514: MSTORE 00002515: PUSH1 0x20 00002517: ADD 00002518: PUSH1 0x00 0000251a: KECCAK256 0000251b: SLOAD 0000251c: LT 0000251d: ISZERO 0000251e: ISZERO 0000251f: PUSH2 0x2527 00002522: JUMPI 00002523: PUSH1 0x00 00002525: DUP1 00002526: REVERT 00002527: JUMPDEST 00002528: PUSH2 0x2570 0000252b: PUSH1 0x01 0000252d: PUSH1 0x00 0000252f: CALLER 00002530: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002545: AND 00002546: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000255b: AND 0000255c: DUP2 0000255d: MSTORE 0000255e: PUSH1 0x20 00002560: ADD 00002561: SWAP1 00002562: DUP2 00002563: MSTORE 00002564: PUSH1 0x20 00002566: ADD 00002567: PUSH1 0x00 00002569: KECCAK256 0000256a: SLOAD 0000256b: DUP4 0000256c: PUSH2 0x2b87 0000256f: JUMP 00002570: JUMPDEST 00002571: PUSH1 0x01 00002573: PUSH1 0x00 00002575: CALLER 00002576: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000258b: AND 0000258c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025a1: AND 000025a2: DUP2 000025a3: MSTORE 000025a4: PUSH1 0x20 000025a6: ADD 000025a7: SWAP1 000025a8: DUP2 000025a9: MSTORE 000025aa: PUSH1 0x20 000025ac: ADD 000025ad: PUSH1 0x00 000025af: KECCAK256 000025b0: DUP2 000025b1: SWAP1 000025b2: SSTORE 000025b3: POP 000025b4: PUSH2 0x25fc 000025b7: PUSH1 0x01 000025b9: PUSH1 0x00 000025bb: DUP6 000025bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025d1: AND 000025d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025e7: AND 000025e8: DUP2 000025e9: MSTORE 000025ea: PUSH1 0x20 000025ec: ADD 000025ed: SWAP1 000025ee: DUP2 000025ef: MSTORE 000025f0: PUSH1 0x20 000025f2: ADD 000025f3: PUSH1 0x00 000025f5: KECCAK256 000025f6: SLOAD 000025f7: DUP4 000025f8: PUSH2 0x2ba1 000025fb: JUMP 000025fc: JUMPDEST 000025fd: PUSH1 0x01 000025ff: PUSH1 0x00 00002601: DUP6 00002602: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002617: AND 00002618: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000262d: AND 0000262e: DUP2 0000262f: MSTORE 00002630: PUSH1 0x20 00002632: ADD 00002633: SWAP1 00002634: DUP2 00002635: MSTORE 00002636: PUSH1 0x20 00002638: ADD 00002639: PUSH1 0x00 0000263b: KECCAK256 0000263c: DUP2 0000263d: SWAP1 0000263e: SSTORE 0000263f: POP 00002640: DUP3 00002641: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002656: AND 00002657: CALLER 00002658: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000266d: AND 0000266e: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000268f: DUP5 00002690: PUSH1 0x40 00002692: MLOAD 00002693: DUP1 00002694: DUP3 00002695: DUP2 00002696: MSTORE 00002697: PUSH1 0x20 00002699: ADD 0000269a: SWAP2 0000269b: POP 0000269c: POP 0000269d: PUSH1 0x40 0000269f: MLOAD 000026a0: DUP1 000026a1: SWAP2 000026a2: SUB 000026a3: SWAP1 000026a4: LOG3 000026a5: PUSH1 0x01 000026a7: SWAP1 000026a8: POP 000026a9: JUMPDEST 000026aa: JUMPDEST 000026ab: SWAP3 000026ac: SWAP2 000026ad: POP 000026ae: POP 000026af: JUMP 000026b0: JUMPDEST 000026b1: PUSH1 0x0c 000026b3: SLOAD 000026b4: DUP2 000026b5: JUMP 000026b6: JUMPDEST 000026b7: PUSH1 0x04 000026b9: PUSH1 0x00 000026bb: SWAP1 000026bc: SLOAD 000026bd: SWAP1 000026be: PUSH2 0x0100 000026c1: EXP 000026c2: SWAP1 000026c3: DIV 000026c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000026d9: AND 000026da: DUP2 000026db: JUMP 000026dc: JUMPDEST 000026dd: PUSH1 0x00 000026df: PUSH1 0x02 000026e1: PUSH1 0x00 000026e3: DUP5 000026e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000026f9: AND 000026fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000270f: AND 00002710: DUP2 00002711: MSTORE 00002712: PUSH1 0x20 00002714: ADD 00002715: SWAP1 00002716: DUP2 00002717: MSTORE 00002718: PUSH1 0x20 0000271a: ADD 0000271b: PUSH1 0x00 0000271d: KECCAK256 0000271e: PUSH1 0x00 00002720: DUP4 00002721: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002736: AND 00002737: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000274c: AND 0000274d: DUP2 0000274e: MSTORE 0000274f: PUSH1 0x20 00002751: ADD 00002752: SWAP1 00002753: DUP2 00002754: MSTORE 00002755: PUSH1 0x20 00002757: ADD 00002758: PUSH1 0x00 0000275a: KECCAK256 0000275b: SLOAD 0000275c: SWAP1 0000275d: POP 0000275e: JUMPDEST 0000275f: SWAP3 00002760: SWAP2 00002761: POP 00002762: POP 00002763: JUMP 00002764: JUMPDEST 00002765: PUSH1 0x01 00002767: PUSH1 0x02 00002769: DUP2 0000276a: GT 0000276b: ISZERO 0000276c: PUSH2 0x2771 0000276f: JUMPI 00002770: INVALID 00002771: JUMPDEST 00002772: PUSH1 0x08 00002774: PUSH1 0x00 00002776: SWAP1 00002777: SLOAD 00002778: SWAP1 00002779: PUSH2 0x0100 0000277c: EXP 0000277d: SWAP1 0000277e: DIV 0000277f: PUSH1 0xff 00002781: AND 00002782: PUSH1 0x02 00002784: DUP2 00002785: GT 00002786: ISZERO 00002787: PUSH2 0x278c 0000278a: JUMPI 0000278b: INVALID 0000278c: JUMPDEST 0000278d: EQ 0000278e: ISZERO 0000278f: ISZERO 00002790: PUSH2 0x2798 00002793: JUMPI 00002794: PUSH1 0x00 00002796: DUP1 00002797: REVERT 00002798: JUMPDEST 00002799: PUSH8 0x0de0b6b3a7640000 000027a2: DUP2 000027a3: MUL 000027a4: PUSH1 0x01 000027a6: PUSH1 0x00 000027a8: CALLER 000027a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000027be: AND 000027bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000027d4: AND 000027d5: DUP2 000027d6: MSTORE 000027d7: PUSH1 0x20 000027d9: ADD 000027da: SWAP1 000027db: DUP2 000027dc: MSTORE 000027dd: PUSH1 0x20 000027df: ADD 000027e0: PUSH1 0x00 000027e2: KECCAK256 000027e3: SLOAD 000027e4: LT 000027e5: ISZERO 000027e6: ISZERO 000027e7: ISZERO 000027e8: PUSH2 0x27f0 000027eb: JUMPI 000027ec: PUSH1 0x00 000027ee: DUP1 000027ef: REVERT 000027f0: JUMPDEST 000027f1: PUSH1 0x0d 000027f3: SLOAD 000027f4: PUSH8 0x0de0b6b3a7640000 000027fd: DUP3 000027fe: MUL 000027ff: LT 00002800: ISZERO 00002801: ISZERO 00002802: ISZERO 00002803: PUSH2 0x280b 00002806: JUMPI 00002807: PUSH1 0x00 00002809: DUP1 0000280a: REVERT 0000280b: JUMPDEST 0000280c: PUSH2 0x2820 0000280f: PUSH8 0x0de0b6b3a7640000 00002818: DUP3 00002819: MUL 0000281a: PUSH1 0x00 0000281c: PUSH2 0x0c22 0000281f: JUMP 00002820: JUMPDEST 00002821: PUSH1 0x09 00002823: PUSH1 0x00 00002825: SWAP1 00002826: SLOAD 00002827: SWAP1 00002828: PUSH2 0x0100 0000282b: EXP 0000282c: SWAP1 0000282d: DIV 0000282e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002843: AND 00002844: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002859: AND 0000285a: PUSH4 0xfc0ea853 0000285f: CALLER 00002860: PUSH8 0x0de0b6b3a7640000 00002869: DUP5 0000286a: MUL 0000286b: PUSH1 0x40 0000286d: MLOAD 0000286e: DUP4 0000286f: PUSH4 0xffffffff 00002874: AND 00002875: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00002893: MUL 00002894: DUP2 00002895: MSTORE 00002896: PUSH1 0x04 00002898: ADD 00002899: DUP1 0000289a: DUP4 0000289b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000028b0: AND 000028b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000028c6: AND 000028c7: DUP2 000028c8: MSTORE 000028c9: PUSH1 0x20 000028cb: ADD 000028cc: DUP3 000028cd: DUP2 000028ce: MSTORE 000028cf: PUSH1 0x20 000028d1: ADD 000028d2: SWAP3 000028d3: POP 000028d4: POP 000028d5: POP 000028d6: PUSH1 0x00 000028d8: PUSH1 0x40 000028da: MLOAD 000028db: DUP1 000028dc: DUP4 000028dd: SUB 000028de: DUP2 000028df: PUSH1 0x00 000028e1: DUP8 000028e2: DUP1 000028e3: EXTCODESIZE 000028e4: ISZERO 000028e5: ISZERO 000028e6: PUSH2 0x28ee 000028e9: JUMPI 000028ea: PUSH1 0x00 000028ec: DUP1 000028ed: REVERT 000028ee: JUMPDEST 000028ef: PUSH2 0x02c6 000028f2: GAS 000028f3: SUB 000028f4: CALL 000028f5: ISZERO 000028f6: ISZERO 000028f7: PUSH2 0x28ff 000028fa: JUMPI 000028fb: PUSH1 0x00 000028fd: DUP1 000028fe: REVERT 000028ff: JUMPDEST 00002900: POP 00002901: POP 00002902: POP 00002903: JUMPDEST 00002904: POP 00002905: JUMP 00002906: JUMPDEST 00002907: PUSH1 0x03 00002909: PUSH1 0x00 0000290b: SWAP1 0000290c: SLOAD 0000290d: SWAP1 0000290e: PUSH2 0x0100 00002911: EXP 00002912: SWAP1 00002913: DIV 00002914: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002929: AND 0000292a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000293f: AND 00002940: CALLER 00002941: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002956: AND 00002957: EQ 00002958: DUP1 00002959: PUSH2 0x29af 0000295c: JUMPI 0000295d: POP 0000295e: PUSH1 0x04 00002960: PUSH1 0x00 00002962: SWAP1 00002963: SLOAD 00002964: SWAP1 00002965: PUSH2 0x0100 00002968: EXP 00002969: SWAP1 0000296a: DIV 0000296b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002980: AND 00002981: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002996: AND 00002997: CALLER 00002998: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000029ad: AND 000029ae: EQ 000029af: JUMPDEST 000029b0: ISZERO 000029b1: ISZERO 000029b2: PUSH2 0x29ba 000029b5: JUMPI 000029b6: PUSH1 0x00 000029b8: DUP1 000029b9: REVERT 000029ba: JUMPDEST 000029bb: PUSH2 0x2a77 000029be: DUP2 000029bf: PUSH1 0x09 000029c1: PUSH1 0x00 000029c3: SWAP1 000029c4: SLOAD 000029c5: SWAP1 000029c6: PUSH2 0x0100 000029c9: EXP 000029ca: SWAP1 000029cb: DIV 000029cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000029e1: AND 000029e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000029f7: AND 000029f8: PUSH4 0xf2141ab9 000029fd: DUP6 000029fe: PUSH1 0x00 00002a00: PUSH1 0x40 00002a02: MLOAD 00002a03: PUSH1 0x20 00002a05: ADD 00002a06: MSTORE 00002a07: PUSH1 0x40 00002a09: MLOAD 00002a0a: DUP3 00002a0b: PUSH4 0xffffffff 00002a10: AND 00002a11: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00002a2f: MUL 00002a30: DUP2 00002a31: MSTORE 00002a32: PUSH1 0x04 00002a34: ADD 00002a35: DUP1 00002a36: DUP3 00002a37: DUP2 00002a38: MSTORE 00002a39: PUSH1 0x20 00002a3b: ADD 00002a3c: SWAP2 00002a3d: POP 00002a3e: POP 00002a3f: PUSH1 0x20 00002a41: PUSH1 0x40 00002a43: MLOAD 00002a44: DUP1 00002a45: DUP4 00002a46: SUB 00002a47: DUP2 00002a48: PUSH1 0x00 00002a4a: DUP8 00002a4b: DUP1 00002a4c: EXTCODESIZE 00002a4d: ISZERO 00002a4e: ISZERO 00002a4f: PUSH2 0x2a57 00002a52: JUMPI 00002a53: PUSH1 0x00 00002a55: DUP1 00002a56: REVERT 00002a57: JUMPDEST 00002a58: PUSH2 0x02c6 00002a5b: GAS 00002a5c: SUB 00002a5d: CALL 00002a5e: ISZERO 00002a5f: ISZERO 00002a60: PUSH2 0x2a68 00002a63: JUMPI 00002a64: PUSH1 0x00 00002a66: DUP1 00002a67: REVERT 00002a68: JUMPDEST 00002a69: POP 00002a6a: POP 00002a6b: POP 00002a6c: PUSH1 0x40 00002a6e: MLOAD 00002a6f: DUP1 00002a70: MLOAD 00002a71: SWAP1 00002a72: POP 00002a73: PUSH2 0x2bbb 00002a76: JUMP 00002a77: JUMPDEST 00002a78: JUMPDEST 00002a79: JUMPDEST 00002a7a: POP 00002a7b: POP 00002a7c: JUMP 00002a7d: JUMPDEST 00002a7e: PUSH1 0x00 00002a80: DUP1 00002a81: PUSH1 0x09 00002a83: PUSH1 0x00 00002a85: SWAP1 00002a86: SLOAD 00002a87: SWAP1 00002a88: PUSH2 0x0100 00002a8b: EXP 00002a8c: SWAP1 00002a8d: DIV 00002a8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002aa3: AND 00002aa4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ab9: AND 00002aba: PUSH4 0x2d5cd1d6 00002abf: CALLER 00002ac0: PUSH1 0x00 00002ac2: PUSH1 0x40 00002ac4: MLOAD 00002ac5: PUSH1 0x40 00002ac7: ADD 00002ac8: MSTORE 00002ac9: PUSH1 0x40 00002acb: MLOAD 00002acc: DUP3 00002acd: PUSH4 0xffffffff 00002ad2: AND 00002ad3: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00002af1: MUL 00002af2: DUP2 00002af3: MSTORE 00002af4: PUSH1 0x04 00002af6: ADD 00002af7: DUP1 00002af8: DUP3 00002af9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b0e: AND 00002b0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b24: AND 00002b25: DUP2 00002b26: MSTORE 00002b27: PUSH1 0x20 00002b29: ADD 00002b2a: SWAP2 00002b2b: POP 00002b2c: POP 00002b2d: PUSH1 0x40 00002b2f: DUP1 00002b30: MLOAD 00002b31: DUP1 00002b32: DUP4 00002b33: SUB 00002b34: DUP2 00002b35: PUSH1 0x00 00002b37: DUP8 00002b38: DUP1 00002b39: EXTCODESIZE 00002b3a: ISZERO 00002b3b: ISZERO 00002b3c: PUSH2 0x2b44 00002b3f: JUMPI 00002b40: PUSH1 0x00 00002b42: DUP1 00002b43: REVERT 00002b44: JUMPDEST 00002b45: PUSH2 0x02c6 00002b48: GAS 00002b49: SUB 00002b4a: CALL 00002b4b: ISZERO 00002b4c: ISZERO 00002b4d: PUSH2 0x2b55 00002b50: JUMPI 00002b51: PUSH1 0x00 00002b53: DUP1 00002b54: REVERT 00002b55: JUMPDEST 00002b56: POP 00002b57: POP 00002b58: POP 00002b59: PUSH1 0x40 00002b5b: MLOAD 00002b5c: DUP1 00002b5d: MLOAD 00002b5e: SWAP1 00002b5f: PUSH1 0x20 00002b61: ADD 00002b62: DUP1 00002b63: MLOAD 00002b64: SWAP1 00002b65: POP 00002b66: DUP1 00002b67: SWAP3 00002b68: POP 00002b69: DUP2 00002b6a: SWAP4 00002b6b: POP 00002b6c: POP 00002b6d: POP 00002b6e: PUSH2 0x2b78 00002b71: DUP2 00002b72: PUSH1 0x01 00002b74: PUSH2 0x0c22 00002b77: JUMP 00002b78: JUMPDEST 00002b79: PUSH2 0x2b82 00002b7c: CALLER 00002b7d: DUP4 00002b7e: PUSH2 0x2bbb 00002b81: JUMP 00002b82: JUMPDEST 00002b83: JUMPDEST 00002b84: POP 00002b85: POP 00002b86: JUMP 00002b87: JUMPDEST 00002b88: PUSH1 0x00 00002b8a: DUP3 00002b8b: DUP3 00002b8c: DUP5 00002b8d: SUB 00002b8e: SWAP2 00002b8f: POP 00002b90: DUP2 00002b91: GT 00002b92: ISZERO 00002b93: ISZERO 00002b94: ISZERO 00002b95: PUSH2 0x2b9a 00002b98: JUMPI 00002b99: INVALID 00002b9a: JUMPDEST 00002b9b: JUMPDEST 00002b9c: SWAP3 00002b9d: SWAP2 00002b9e: POP 00002b9f: POP 00002ba0: JUMP 00002ba1: JUMPDEST 00002ba2: PUSH1 0x00 00002ba4: DUP3 00002ba5: DUP3 00002ba6: DUP5 00002ba7: ADD 00002ba8: SWAP2 00002ba9: POP 00002baa: DUP2 00002bab: LT 00002bac: ISZERO 00002bad: ISZERO 00002bae: ISZERO 00002baf: PUSH2 0x2bb4 00002bb2: JUMPI 00002bb3: INVALID 00002bb4: JUMPDEST 00002bb5: JUMPDEST 00002bb6: SWAP3 00002bb7: SWAP2 00002bb8: POP 00002bb9: POP 00002bba: JUMP 00002bbb: JUMPDEST 00002bbc: PUSH1 0x00 00002bbe: DUP2 00002bbf: GT 00002bc0: ISZERO 00002bc1: PUSH2 0x2c9b 00002bc4: JUMPI 00002bc5: DUP2 00002bc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002bdb: AND 00002bdc: PUSH2 0x08fc 00002bdf: DUP3 00002be0: SWAP1 00002be1: DUP2 00002be2: ISZERO 00002be3: MUL 00002be4: SWAP1 00002be5: PUSH1 0x40 00002be7: MLOAD 00002be8: PUSH1 0x00 00002bea: PUSH1 0x40 00002bec: MLOAD 00002bed: DUP1 00002bee: DUP4 00002bef: SUB 00002bf0: DUP2 00002bf1: DUP6 00002bf2: DUP9 00002bf3: DUP9 00002bf4: CALL 00002bf5: SWAP4 00002bf6: POP 00002bf7: POP 00002bf8: POP 00002bf9: POP 00002bfa: ISZERO 00002bfb: ISZERO 00002bfc: PUSH2 0x2c04 00002bff: JUMPI 00002c00: PUSH1 0x00 00002c02: DUP1 00002c03: REVERT 00002c04: JUMPDEST 00002c05: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72 00002c26: PUSH1 0x00 00002c28: DUP4 00002c29: DUP4 00002c2a: PUSH1 0x01 00002c2c: PUSH1 0x40 00002c2e: MLOAD 00002c2f: DUP1 00002c30: DUP6 00002c31: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002c46: AND 00002c47: DUP2 00002c48: MSTORE 00002c49: PUSH1 0x20 00002c4b: ADD 00002c4c: DUP5 00002c4d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002c62: AND 00002c63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002c78: AND 00002c79: DUP2 00002c7a: MSTORE 00002c7b: PUSH1 0x20 00002c7d: ADD 00002c7e: DUP4 00002c7f: DUP2 00002c80: MSTORE 00002c81: PUSH1 0x20 00002c83: ADD 00002c84: DUP3 00002c85: PUSH1 0xff 00002c87: AND 00002c88: DUP2 00002c89: MSTORE 00002c8a: PUSH1 0x20 00002c8c: ADD 00002c8d: SWAP5 00002c8e: POP 00002c8f: POP 00002c90: POP 00002c91: POP 00002c92: POP 00002c93: PUSH1 0x40 00002c95: MLOAD 00002c96: DUP1 00002c97: SWAP2 00002c98: SUB 00002c99: SWAP1 00002c9a: LOG1 00002c9b: JUMPDEST 00002c9c: JUMPDEST 00002c9d: POP 00002c9e: POP 00002c9f: JUMP 00002ca0: STOP 00002ca1: LOG1 00002ca2: PUSH6 0x627a7a723058 00002ca9: KECCAK256 00002caa: UNKNOWN(0xB7) 00002cab: UNKNOWN(0xE9) 00002cac: UNKNOWN(0xE2) 00002cad: UNKNOWN(0xB6) 00002cae: PUSH9 0xbe4d7a2d31df161829 00002cb8: SWAP13 00002cb9: TSTORE 00002cba: RETURNDATACOPY 00002cbb: ADDRESS 00002cbc: PUSH11 0xf5dfebf2eb619234682194 00002cc8: PC 00002cc9: ADDMOD 00002cca: STOP 00002ccb: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | access_control | codex | Anyone can become executor and gain onlyAuth privileges (ITGToken) | 90 | no | — |
viewevidence_json{
"evidence": "`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.",
"locations": [
"contracts/Contract.sol:249",
"contracts/Contract.sol:851",
"contracts/Contract.sol:835",
"contracts/Contract.sol:881"
],
"recommendation": "Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.",
"exploit_scenario": "Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner\u2019s balance."
}
|
| medium | math | codex | Division by zero and mispricing in 2nd/4th crowdsale pricing | 75 | no | — |
viewevidence_json{
"evidence": "Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.",
"locations": [
"contracts/Contract.sol:343",
"contracts/Contract.sol:353"
],
"recommendation": "Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.",
"exploit_scenario": "In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing."
}
|
| medium | access_control | codex | Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable | 75 | no | — |
viewevidence_json{
"evidence": "`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.",
"locations": [
"contracts/Contract.sol:244",
"contracts/Contract.sol:255",
"contracts/Contract.sol:394",
"contracts/Contract.sol:486"
],
"recommendation": "Initialize `owner` in each contract\u2019s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.",
"exploit_scenario": "`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state."
}
|
| medium | access_control | codex | Token lock bypass via transferFrom ignores locked holder | 75 | no | — |
viewevidence_json{
"evidence": "`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.",
"locations": [
"contracts/Contract.sol:805",
"contracts/Contract.sol:817"
],
"recommendation": "In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).",
"exploit_scenario": "When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user\u2019s tokens while the lock is active, bypassing the intended restriction."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8
call_targets:
0xb104df39250112eda59b27f5db7013c7ee132d50
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xb104df39250112eda59b27f5db7013c7ee132d50"
],
"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": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0335d533",
"selector": "0x0335d533",
"calldata_variants": [
"0x0335d533",
"0x0335d5330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x13af4035",
"selector": "0x13af4035",
"calldata_variants": [
"0x13af4035",
"0x13af40350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1c3c0ea8",
"selector": "0x1c3c0ea8",
"calldata_variants": [
"0x1c3c0ea8",
"0x1c3c0ea80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x200d2ed2",
"selector": "0x200d2ed2",
"calldata_variants": [
"0x200d2ed2",
"0x200d2ed20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 797,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1228,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4715,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 12,
"guards_detected": [
{
"pc": 6519,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6774,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7049,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7136,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7404,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7491,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8421,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8508,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8853,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8940,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 9235,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 10560,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 10647,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 12
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8
call_targets:
0xb104df39250112eda59b27f5db7013c7ee132d50
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xb104df39250112eda59b27f5db7013c7ee132d50"
],
"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": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0335d533",
"selector": "0x0335d533",
"calldata_variants": [
"0x0335d533",
"0x0335d5330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x13af4035",
"selector": "0x13af4035",
"calldata_variants": [
"0x13af4035",
"0x13af40350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1c3c0ea8",
"selector": "0x1c3c0ea8",
"calldata_variants": [
"0x1c3c0ea8",
"0x1c3c0ea80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x200d2ed2",
"selector": "0x200d2ed2",
"calldata_variants": [
"0x200d2ed2",
"0x200d2ed20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 797,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1228,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4715,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 12,
"guards_detected": [
{
"pc": 6519,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6774,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7049,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7136,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7404,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7491,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8421,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8508,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8853,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8940,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 9235,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 10560,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 10647,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 12
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 11
}
|