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

Analysis Run

f76b99f1-db73-4dfa-bc73-036c64ae0326

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 9:33 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30781 report.consolidate complete 1 / 1 3 months ago
75682 artifact.fetch complete 1 / 3 1 week ago
75683 tool.cast_disasm complete 1 / 3 1 week ago
75684 analysis.bundle complete 1 / 3 1 week ago
75685 capability.graph complete 1 / 3 1 week ago
75686 detector.run complete 1 / 3 1 week ago
75687 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
3
No findings?
no
Summary
Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.
View stderr
[codex:1242535] OpenAI Codex v0.77.0 (research preview)
[codex:1242535] --------
[codex:1242535] workdir: /tmp/codex-multi-6krxhzll
[codex:1242535] model: gpt-5.2-codex
[codex:1242535] provider: openai
[codex:1242535] approval: never
[codex:1242535] sandbox: read-only
[codex:1242535] reasoning effort: xhigh
[codex:1242535] reasoning summaries: auto
[codex:1242535] session id: 019b712b-d5cf-7bc2-aac3-b0564a3dfaf8
[codex:1242535] --------
[codex:1242535] user
[codex:1242535] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1242535] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1242535] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1242535] 
[codex:1242535] Scope rules:
[codex:1242535] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1242535] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1242535] 
[codex:1242535] Output MUST be valid JSON matching the provided schema.
[codex:1242535] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1242535] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1242535] 
[codex:1242535] Output constraints (IMPORTANT):
[codex:1242535] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1242535] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1242535] mcp startup: no servers
[codex:1242535] 
[codex:1242535] thinking
[codex:1242535] **Reviewing AUDIT_BUNDLE.txt contents**
[codex:1242535] exec
[codex:1242535] /bin/bash -lc ls in /tmp/codex-multi-6krxhzll succeeded in 5ms:
[codex:1242535] AUDIT_BUNDLE.txt
[codex:1242535] codex-output-schema.json
[codex:1242535] contracts
[codex:1242535] 
[codex:1242535] thinking
[codex:1242535] **Reading AUDIT_BUNDLE file**
[codex:1242535] exec
[codex:1242535] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6krxhzll succeeded in 5ms:
[codex:1242535] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1242535] 
[codex:1242535] ================================================================================
[codex:1242535] FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:1242535] ================================================================================
[codex:1242535] // SPDX-License-Identifier: MIT
[codex:1242535] // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
[codex:1242535] 
[codex:1242535] pragma solidity ^0.8.20;
[codex:1242535] 
[codex:1242535] import {Context} from "../utils/Context.sol";
[codex:1242535] 
[codex:1242535] /**
[codex:1242535]  * @dev Contract module which provides a basic access control mechanism, where
[codex:1242535]  * there is an account (an owner) that can be granted exclusive access to
[codex:1242535]  * specific functions.
[codex:1242535]  *
[codex:1242535]  * The initial owner is set to the address provided by the deployer. This can
[codex:1242535]  * later be changed with {transferOwnership}.
[codex:1242535]  *
[codex:1242535] 
[codex:1242535] thinking
[codex:1242535] **Analyzing JPGDStaking contract for vulnerabilities**
[codex:1242535] 
[codex:1242535] I'm auditing JPGDStaking focusing on risks like unchecked token transfer returns, access control, reentrancy, and potential accounting mismatches—especially around staking with fee-on-transfer tokens and owner privileges that may centralize risk. I'll refer to file line numbers for evidence to produce a detailed vulnerability report.
[codex:1242535] exec
[codex:1242535] /bin/bash -lc 'nl -ba contracts/contracts/JPGDStaking.sol' in /tmp/codex-multi-6krxhzll succeeded in 5ms:
[codex:1242535]      1	// SPDX-License-Identifier: GPL-3.0
[codex:1242535]      2	pragma solidity ^0.8.4;
[codex:1242535]      3	
[codex:1242535]      4	import "@openzeppelin/contracts/access/Ownable.sol";
[codex:1242535]      5	import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1242535]      6	import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:1242535]      7	import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1242535]      8	import "@openzeppelin/contracts/utils/Pausable.sol";
[codex:1242535]      9	
[codex:1242535]     10	/// @title JPGD Staking
[codex:1242535]     11	/// @notice This contract allows users to stake their JPGD and get a share of the protocol's treasury.
[codex:1242535]     12	/// Staked JPGD can be withdrawn at any time before {snapshot} is called by the owner.
[codex:1242535]     13	/// After the {snapshot} call, the staked JPGD will be locked with a linear vesting schedule defined in {vestingSchedule}.
[codex:1242535]     14	/// The start of the vesting schedule is set during the first {increaseClaimableTokenAmount} call, which also distributes owner
[codex:1242535]     15	/// defined assets.
[codex:1242535]     16	/// The distribution can also happen in chunks, in which case {increaseClaimableTokenAmount} and {addClaimableToken} will
[codex:1242535]     17	/// be called more than once.
[codex:1242535]     18	contract JPGDStaking is Ownable, ReentrancyGuard, Pausable {
[codex:1242535]     19	    using SafeERC20 for IERC20;
[codex:1242535]     20	
[codex:1242535] 
[codex:1242535] 
[codex:1242535] thinking
[codex:1242535] **Assessing staking contract vulnerabilities**
[codex:1242535] thinking
[codex:1242535] **Preparing detailed findings and final JSON**
[codex:1242535] 
[codex:1242535] I'll organize three findings: the medium-risk unchecked JPGD transfers with fee-on-transfer issues, the low-risk owner withdrawal privilege, and the low-risk owner-controlled vesting start lock. I'll carefully list evidence line numbers and craft a concise summary within a valid JSON object for output.
[codex:1242535] codex
[codex:1242535] {"no_findings":false,"summary":"Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.","findings":[{"severity":"medium","category":"other","title":"Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens","exploit_scenario":"If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency.","recommendation":"Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.","evidence":"`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.","locations":["contracts/contracts/JPGDStaking.sol:86","contracts/contracts/JPGDStaking.sol:88","contracts/contracts/JPGDStaking.sol:108","contracts/contracts/JPGDStaking.sol:166"]},{"severity":"low","category":"access_control","title":"Owner can withdraw any token, breaking solvency for stakers/claimants","exploit_scenario":"A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers.","recommendation":"Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.","evidence":"`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.","locations":["contracts/contracts/JPGDStaking.sol:228","contracts/contracts/JPGDStaking.sol:231","contracts/contracts/JPGDStaking.sol:232"]},{"severity":"low","category":"access_control","title":"Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot","exploit_scenario":"After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely.","recommendation":"Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.","evidence":"`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.","locations":["contracts/contracts/JPGDStaking.sol:153","contracts/contracts/JPGDStaking.sol:182","contracts/contracts/JPGDStaking.sol:213","contracts/contracts/JPGDStaking.sol:214"]}]}
[codex:1242535] tokens used
[codex:1242535] 24,247
[codex:1242535] {"no_findings":false,"summary":"Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.","findings":[{"severity":"medium","category":"other","title":"Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens","exploit_scenario":"If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency.","recommendation":"Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.","evidence":"`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.","locations":["contracts/contracts/JPGDStaking.sol:86","contracts/contracts/JPGDStaking.sol:88","contracts/contracts/JPGDStaking.sol:108","contracts/contracts/JPGDStaking.sol:166"]},{"severity":"low","category":"access_control","title":"Owner can withdraw any token, breaking solvency for stakers/claimants","exploit_scenario":"A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers.","recommendation":"Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.","evidence":"`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.","locations":["contracts/contracts/JPGDStaking.sol:228","contracts/contracts/JPGDStaking.sol:231","contracts/contracts/JPGDStaking.sol:232"]},{"severity":"low","category":"access_control","title":"Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot","exploit_scenario":"After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely.","recommendation":"Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.","evidence":"`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.","locations":["contracts/contracts/JPGDStaking.sol:153","contracts/contracts/JPGDStaking.sol:182","contracts/contracts/JPGDStaking.sol:213","contracts/contracts/JPGDStaking.sol:214"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T21:33:20.428012+00:00",
        "returncode": 0
    },
    "summary": "Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.",
    "raw_final": {
        "summary": "Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.",
        "findings": [
            {
                "title": "Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens",
                "category": "other",
                "evidence": "`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.",
                "severity": "medium",
                "locations": [
                    "contracts/contracts/JPGDStaking.sol:86",
                    "contracts/contracts/JPGDStaking.sol:88",
                    "contracts/contracts/JPGDStaking.sol:108",
                    "contracts/contracts/JPGDStaking.sol:166"
                ],
                "recommendation": "Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.",
                "exploit_scenario": "If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency."
            },
            {
                "title": "Owner can withdraw any token, breaking solvency for stakers/claimants",
                "category": "access_control",
                "evidence": "`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/JPGDStaking.sol:228",
                    "contracts/contracts/JPGDStaking.sol:231",
                    "contracts/contracts/JPGDStaking.sol:232"
                ],
                "recommendation": "Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.",
                "exploit_scenario": "A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers."
            },
            {
                "title": "Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot",
                "category": "access_control",
                "evidence": "`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/JPGDStaking.sol:153",
                    "contracts/contracts/JPGDStaking.sol:182",
                    "contracts/contracts/JPGDStaking.sol:213",
                    "contracts/contracts/JPGDStaking.sol:214"
                ],
                "recommendation": "Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.",
                "exploit_scenario": "After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
1
Total opcodes
4575
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x0137
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x8da5cb5b
00000026: GT
00000027: PUSH2 0x00b8
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xb7f239a5
00000031: GT
00000032: PUSH2 0x007c
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xb7f239a5
0000003c: EQ
0000003d: PUSH2 0x033c
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xc2ed2ef9
00000047: EQ
00000048: PUSH2 0x0358
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xd6f23503
00000052: EQ
00000053: PUSH2 0x0376
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xdf8de3e7
0000005d: EQ
0000005e: PUSH2 0x0394
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xf2fde38b
00000068: EQ
00000069: PUSH2 0x03b0
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0xf7aa8057
00000073: EQ
00000074: PUSH2 0x03cc
00000077: JUMPI
00000078: PUSH2 0x0137
0000007b: JUMP
0000007c: JUMPDEST
0000007d: DUP1
0000007e: PUSH4 0x8da5cb5b
00000083: EQ
00000084: PUSH2 0x0286
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0x9369198a
0000008e: EQ
0000008f: PUSH2 0x02a4
00000092: JUMPI
00000093: DUP1
00000094: PUSH4 0x9e281a98
00000099: EQ
0000009a: PUSH2 0x02d4
0000009d: JUMPI
0000009e: DUP1
0000009f: PUSH4 0xa7019cad
000000a4: EQ
000000a5: PUSH2 0x02f0
000000a8: JUMPI
000000a9: DUP1
000000aa: PUSH4 0xadc9772e
000000af: EQ
000000b0: PUSH2 0x0320
000000b3: JUMPI
000000b4: PUSH2 0x0137
000000b7: JUMP
000000b8: JUMPDEST
000000b9: DUP1
000000ba: PUSH4 0x6678e55d
000000bf: GT
000000c0: PUSH2 0x00ff
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0x6678e55d
000000ca: EQ
000000cb: PUSH2 0x01f6
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0x6a3d1d2c
000000d5: EQ
000000d6: PUSH2 0x0214
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0x715018a6
000000e0: EQ
000000e1: PUSH2 0x0230
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0x73a874d0
000000eb: EQ
000000ec: PUSH2 0x023a
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0x8381e182
000000f6: EQ
000000f7: PUSH2 0x026a
000000fa: JUMPI
000000fb: PUSH2 0x0137
000000fe: JUMP
000000ff: JUMPDEST
00000100: DUP1
00000101: PUSH4 0x0217ce49
00000106: EQ
00000107: PUSH2 0x013c
0000010a: JUMPI
0000010b: DUP1
0000010c: PUSH4 0x1d79aad8
00000111: EQ
00000112: PUSH2 0x016c
00000115: JUMPI
00000116: DUP1
00000117: PUSH4 0x4b680444
0000011c: EQ
0000011d: PUSH2 0x0188
00000120: JUMPI
00000121: DUP1
00000122: PUSH4 0x505a92f6
00000127: EQ
00000128: PUSH2 0x01a8
0000012b: JUMPI
0000012c: DUP1
0000012d: PUSH4 0x5c975abb
00000132: EQ
00000133: PUSH2 0x01d8
00000136: JUMPI
00000137: JUMPDEST
00000138: PUSH1 0x00
0000013a: DUP1
0000013b: REVERT
0000013c: JUMPDEST
0000013d: PUSH2 0x0156
00000140: PUSH1 0x04
00000142: DUP1
00000143: CALLDATASIZE
00000144: SUB
00000145: DUP2
00000146: ADD
00000147: SWAP1
00000148: PUSH2 0x0151
0000014b: SWAP2
0000014c: SWAP1
0000014d: PUSH2 0x1d29
00000150: JUMP
00000151: JUMPDEST
00000152: PUSH2 0x03e8
00000155: JUMP
00000156: JUMPDEST
00000157: PUSH1 0x40
00000159: MLOAD
0000015a: PUSH2 0x0163
0000015d: SWAP2
0000015e: SWAP1
0000015f: PUSH2 0x1dd5
00000162: JUMP
00000163: JUMPDEST
00000164: PUSH1 0x40
00000166: MLOAD
00000167: DUP1
00000168: SWAP2
00000169: SUB
0000016a: SWAP1
0000016b: RETURN
0000016c: JUMPDEST
0000016d: PUSH2 0x0186
00000170: PUSH1 0x04
00000172: DUP1
00000173: CALLDATASIZE
00000174: SUB
00000175: DUP2
00000176: ADD
00000177: SWAP1
00000178: PUSH2 0x0181
0000017b: SWAP2
0000017c: SWAP1
0000017d: PUSH2 0x1e32
00000180: JUMP
00000181: JUMPDEST
00000182: PUSH2 0x041b
00000185: JUMP
00000186: JUMPDEST
00000187: STOP
00000188: JUMPDEST
00000189: PUSH2 0x0190
0000018c: PUSH2 0x05e6
0000018f: JUMP
00000190: JUMPDEST
00000191: PUSH1 0x40
00000193: MLOAD
00000194: PUSH2 0x019f
00000197: SWAP4
00000198: SWAP3
00000199: SWAP2
0000019a: SWAP1
0000019b: PUSH2 0x1e81
0000019e: JUMP
0000019f: JUMPDEST
000001a0: PUSH1 0x40
000001a2: MLOAD
000001a3: DUP1
000001a4: SWAP2
000001a5: SUB
000001a6: SWAP1
000001a7: RETURN
000001a8: JUMPDEST
000001a9: PUSH2 0x01c2
000001ac: PUSH1 0x04
000001ae: DUP1
000001af: CALLDATASIZE
000001b0: SUB
000001b1: DUP2
000001b2: ADD
000001b3: SWAP1
000001b4: PUSH2 0x01bd
000001b7: SWAP2
000001b8: SWAP1
000001b9: PUSH2 0x1ef6
000001bc: JUMP
000001bd: JUMPDEST
000001be: PUSH2 0x0640
000001c1: JUMP
000001c2: JUMPDEST
000001c3: PUSH1 0x40
000001c5: MLOAD
000001c6: PUSH2 0x01cf
000001c9: SWAP2
000001ca: SWAP1
000001cb: PUSH2 0x1f32
000001ce: JUMP
000001cf: JUMPDEST
000001d0: PUSH1 0x40
000001d2: MLOAD
000001d3: DUP1
000001d4: SWAP2
000001d5: SUB
000001d6: SWAP1
000001d7: RETURN
000001d8: JUMPDEST
000001d9: PUSH2 0x01e0
000001dc: PUSH2 0x0658
000001df: JUMP
000001e0: JUMPDEST
000001e1: PUSH1 0x40
000001e3: MLOAD
000001e4: PUSH2 0x01ed
000001e7: SWAP2
000001e8: SWAP1
000001e9: PUSH2 0x1f68
000001ec: JUMP
000001ed: JUMPDEST
000001ee: PUSH1 0x40
000001f0: MLOAD
000001f1: DUP1
000001f2: SWAP2
000001f3: SUB
000001f4: SWAP1
000001f5: RETURN
000001f6: JUMPDEST
000001f7: PUSH2 0x01fe
000001fa: PUSH2 0x066f
000001fd: JUMP
000001fe: JUMPDEST
000001ff: PUSH1 0x40
00000201: MLOAD
00000202: PUSH2 0x020b
00000205: SWAP2
00000206: SWAP1
00000207: PUSH2 0x1f32
0000020a: JUMP
0000020b: JUMPDEST
0000020c: PUSH1 0x40
0000020e: MLOAD
0000020f: DUP1
00000210: SWAP2
00000211: SUB
00000212: SWAP1
00000213: RETURN
00000214: JUMPDEST
00000215: PUSH2 0x022e
00000218: PUSH1 0x04
0000021a: DUP1
0000021b: CALLDATASIZE
0000021c: SUB
0000021d: DUP2
0000021e: ADD
0000021f: SWAP1
00000220: PUSH2 0x0229
00000223: SWAP2
00000224: SWAP1
00000225: PUSH2 0x1ef6
00000228: JUMP
00000229: JUMPDEST
0000022a: PUSH2 0x0675
0000022d: JUMP
0000022e: JUMPDEST
0000022f: STOP
00000230: JUMPDEST
00000231: PUSH2 0x0238
00000234: PUSH2 0x078b
00000237: JUMP
00000238: JUMPDEST
00000239: STOP
0000023a: JUMPDEST
0000023b: PUSH2 0x0254
0000023e: PUSH1 0x04
00000240: DUP1
00000241: CALLDATASIZE
00000242: SUB
00000243: DUP2
00000244: ADD
00000245: SWAP1
00000246: PUSH2 0x024f
00000249: SWAP2
0000024a: SWAP1
0000024b: PUSH2 0x1f83
0000024e: JUMP
0000024f: JUMPDEST
00000250: PUSH2 0x079f
00000253: JUMP
00000254: JUMPDEST
00000255: PUSH1 0x40
00000257: MLOAD
00000258: PUSH2 0x0261
0000025b: SWAP2
0000025c: SWAP1
0000025d: PUSH2 0x1f32
00000260: JUMP
00000261: JUMPDEST
00000262: PUSH1 0x40
00000264: MLOAD
00000265: DUP1
00000266: SWAP2
00000267: SUB
00000268: SWAP1
00000269: RETURN
0000026a: JUMPDEST
0000026b: PUSH2 0x0284
0000026e: PUSH1 0x04
00000270: DUP1
00000271: CALLDATASIZE
00000272: SUB
00000273: DUP2
00000274: ADD
00000275: SWAP1
00000276: PUSH2 0x027f
00000279: SWAP2
0000027a: SWAP1
0000027b: PUSH2 0x1fc3
0000027e: JUMP
0000027f: JUMPDEST
00000280: PUSH2 0x07c4
00000283: JUMP
00000284: JUMPDEST
00000285: STOP
00000286: JUMPDEST
00000287: PUSH2 0x028e
0000028a: PUSH2 0x09ee
0000028d: JUMP
0000028e: JUMPDEST
0000028f: PUSH1 0x40
00000291: MLOAD
00000292: PUSH2 0x029b
00000295: SWAP2
00000296: SWAP1
00000297: PUSH2 0x2012
0000029a: JUMP
0000029b: JUMPDEST
0000029c: PUSH1 0x40
0000029e: MLOAD
0000029f: DUP1
000002a0: SWAP2
000002a1: SUB
000002a2: SWAP1
000002a3: RETURN
000002a4: JUMPDEST
000002a5: PUSH2 0x02be
000002a8: PUSH1 0x04
000002aa: DUP1
000002ab: CALLDATASIZE
000002ac: SUB
000002ad: DUP2
000002ae: ADD
000002af: SWAP1
000002b0: PUSH2 0x02b9
000002b3: SWAP2
000002b4: SWAP1
000002b5: PUSH2 0x1ef6
000002b8: JUMP
000002b9: JUMPDEST
000002ba: PUSH2 0x0a17
000002bd: JUMP
000002be: JUMPDEST
000002bf: PUSH1 0x40
000002c1: MLOAD
000002c2: PUSH2 0x02cb
000002c5: SWAP2
000002c6: SWAP1
000002c7: PUSH2 0x1f32
000002ca: JUMP
000002cb: JUMPDEST
000002cc: PUSH1 0x40
000002ce: MLOAD
000002cf: DUP1
000002d0: SWAP2
000002d1: SUB
000002d2: SWAP1
000002d3: RETURN
000002d4: JUMPDEST
000002d5: PUSH2 0x02ee
000002d8: PUSH1 0x04
000002da: DUP1
000002db: CALLDATASIZE
000002dc: SUB
000002dd: DUP2
000002de: ADD
000002df: SWAP1
000002e0: PUSH2 0x02e9
000002e3: SWAP2
000002e4: SWAP1
000002e5: PUSH2 0x206b
000002e8: JUMP
000002e9: JUMPDEST
000002ea: PUSH2 0x0a2f
000002ed: JUMP
000002ee: JUMPDEST
000002ef: STOP
000002f0: JUMPDEST
000002f1: PUSH2 0x030a
000002f4: PUSH1 0x04
000002f6: DUP1
000002f7: CALLDATASIZE
000002f8: SUB
000002f9: DUP2
000002fa: ADD
000002fb: SWAP1
000002fc: PUSH2 0x0305
000002ff: SWAP2
00000300: SWAP1
00000301: PUSH2 0x1d29
00000304: JUMP
00000305: JUMPDEST
00000306: PUSH2 0x0a66
00000309: JUMP
0000030a: JUMPDEST
0000030b: PUSH1 0x40
0000030d: MLOAD
0000030e: PUSH2 0x0317
00000311: SWAP2
00000312: SWAP1
00000313: PUSH2 0x1f32
00000316: JUMP
00000317: JUMPDEST
00000318: PUSH1 0x40
0000031a: MLOAD
0000031b: DUP1
0000031c: SWAP2
0000031d: SUB
0000031e: SWAP1
0000031f: RETURN
00000320: JUMPDEST
00000321: PUSH2 0x033a
00000324: PUSH1 0x04
00000326: DUP1
00000327: CALLDATASIZE
00000328: SUB
00000329: DUP2
0000032a: ADD
0000032b: SWAP1
0000032c: PUSH2 0x0335
0000032f: SWAP2
00000330: SWAP1
00000331: PUSH2 0x1f83
00000334: JUMP
00000335: JUMPDEST
00000336: PUSH2 0x0a7e
00000339: JUMP
0000033a: JUMPDEST
0000033b: STOP
0000033c: JUMPDEST
0000033d: PUSH2 0x0356
00000340: PUSH1 0x04
00000342: DUP1
00000343: CALLDATASIZE
00000344: SUB
00000345: DUP2
00000346: ADD
00000347: SWAP1
00000348: PUSH2 0x0351
0000034b: SWAP2
0000034c: SWAP1
0000034d: PUSH2 0x1ef6
00000350: JUMP
00000351: JUMPDEST
00000352: PUSH2 0x0c98
00000355: JUMP
00000356: JUMPDEST
00000357: STOP
00000358: JUMPDEST
00000359: PUSH2 0x0360
0000035c: PUSH2 0x1095
0000035f: JUMP
00000360: JUMPDEST
00000361: PUSH1 0x40
00000363: MLOAD
00000364: PUSH2 0x036d
00000367: SWAP2
00000368: SWAP1
00000369: PUSH2 0x1f32
0000036c: JUMP
0000036d: JUMPDEST
0000036e: PUSH1 0x40
00000370: MLOAD
00000371: DUP1
00000372: SWAP2
00000373: SUB
00000374: SWAP1
00000375: RETURN
00000376: JUMPDEST
00000377: PUSH2 0x037e
0000037a: PUSH2 0x109b
0000037d: JUMP
0000037e: JUMPDEST
0000037f: PUSH1 0x40
00000381: MLOAD
00000382: PUSH2 0x038b
00000385: SWAP2
00000386: SWAP1
00000387: PUSH2 0x1dd5
0000038a: JUMP
0000038b: JUMPDEST
0000038c: PUSH1 0x40
0000038e: MLOAD
0000038f: DUP1
00000390: SWAP2
00000391: SUB
00000392: SWAP1
00000393: RETURN
00000394: JUMPDEST
00000395: PUSH2 0x03ae
00000398: PUSH1 0x04
0000039a: DUP1
0000039b: CALLDATASIZE
0000039c: SUB
0000039d: DUP2
0000039e: ADD
0000039f: SWAP1
000003a0: PUSH2 0x03a9
000003a3: SWAP2
000003a4: SWAP1
000003a5: PUSH2 0x1ef6
000003a8: JUMP
000003a9: JUMPDEST
000003aa: PUSH2 0x10bf
000003ad: JUMP
000003ae: JUMPDEST
000003af: STOP
000003b0: JUMPDEST
000003b1: PUSH2 0x03ca
000003b4: PUSH1 0x04
000003b6: DUP1
000003b7: CALLDATASIZE
000003b8: SUB
000003b9: DUP2
000003ba: ADD
000003bb: SWAP1
000003bc: PUSH2 0x03c5
000003bf: SWAP2
000003c0: SWAP1
000003c1: PUSH2 0x1ef6
000003c4: JUMP
000003c5: JUMPDEST
000003c6: PUSH2 0x1398
000003c9: JUMP
000003ca: JUMPDEST
000003cb: STOP
000003cc: JUMPDEST
000003cd: PUSH2 0x03e6
000003d0: PUSH1 0x04
000003d2: DUP1
000003d3: CALLDATASIZE
000003d4: SUB
000003d5: DUP2
000003d6: ADD
000003d7: SWAP1
000003d8: PUSH2 0x03e1
000003db: SWAP2
000003dc: SWAP1
000003dd: PUSH2 0x20ab
000003e0: JUMP
000003e1: JUMPDEST
000003e2: PUSH2 0x141e
000003e5: JUMP
000003e6: JUMPDEST
000003e7: STOP
000003e8: JUMPDEST
000003e9: PUSH1 0x04
000003eb: PUSH1 0x20
000003ed: MSTORE
000003ee: DUP1
000003ef: PUSH1 0x00
000003f1: MSTORE
000003f2: PUSH1 0x40
000003f4: PUSH1 0x00
000003f6: KECCAK256
000003f7: PUSH1 0x00
000003f9: SWAP2
000003fa: POP
000003fb: SLOAD
000003fc: SWAP1
000003fd: PUSH2 0x0100
00000400: EXP
00000401: SWAP1
00000402: DIV
00000403: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000418: AND
00000419: DUP2
0000041a: JUMP
0000041b: JUMPDEST
0000041c: PUSH2 0x0423
0000041f: PUSH2 0x1719
00000422: JUMP
00000423: JUMPDEST
00000424: PUSH2 0x042b
00000427: PUSH2 0x17a0
0000042a: JUMP
0000042b: JUMPDEST
0000042c: PUSH2 0x0433
0000042f: PUSH2 0x17e1
00000432: JUMP
00000433: JUMPDEST
00000434: PUSH1 0x00
00000436: DUP2
00000437: PUSH10 0xffffffffffffffffffff
00000442: AND
00000443: SUB
00000444: PUSH2 0x0479
00000447: JUMPI
00000448: PUSH1 0x40
0000044a: MLOAD
0000044b: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
0000046c: DUP2
0000046d: MSTORE
0000046e: PUSH1 0x04
00000470: ADD
00000471: PUSH1 0x40
00000473: MLOAD
00000474: DUP1
00000475: SWAP2
00000476: SUB
00000477: SWAP1
00000478: REVERT
00000479: JUMPDEST
0000047a: DUP1
0000047b: PUSH10 0xffffffffffffffffffff
00000486: AND
00000487: DUP3
00000488: PUSH10 0xffffffffffffffffffff
00000493: AND
00000494: GT
00000495: ISZERO
00000496: PUSH2 0x04cb
00000499: JUMPI
0000049a: PUSH1 0x40
0000049c: MLOAD
0000049d: PUSH32 0x285732a400000000000000000000000000000000000000000000000000000000
000004be: DUP2
000004bf: MSTORE
000004c0: PUSH1 0x04
000004c2: ADD
000004c3: PUSH1 0x40
000004c5: MLOAD
000004c6: DUP1
000004c7: SWAP2
000004c8: SUB
000004c9: SWAP1
000004ca: REVERT
000004cb: JUMPDEST
000004cc: PUSH1 0x40
000004ce: MLOAD
000004cf: DUP1
000004d0: PUSH1 0x60
000004d2: ADD
000004d3: PUSH1 0x40
000004d5: MSTORE
000004d6: DUP1
000004d7: PUSH1 0x00
000004d9: PUSH10 0xffffffffffffffffffff
000004e4: AND
000004e5: DUP2
000004e6: MSTORE
000004e7: PUSH1 0x20
000004e9: ADD
000004ea: DUP4
000004eb: PUSH10 0xffffffffffffffffffff
000004f6: AND
000004f7: DUP2
000004f8: MSTORE
000004f9: PUSH1 0x20
000004fb: ADD
000004fc: DUP3
000004fd: PUSH10 0xffffffffffffffffffff
00000508: AND
00000509: DUP2
0000050a: MSTORE
0000050b: POP
0000050c: PUSH1 0x0a
0000050e: PUSH1 0x00
00000510: DUP3
00000511: ADD
00000512: MLOAD
00000513: DUP2
00000514: PUSH1 0x00
00000516: ADD
00000517: PUSH1 0x00
00000519: PUSH2 0x0100
0000051c: EXP
0000051d: DUP2
0000051e: SLOAD
0000051f: DUP2
00000520: PUSH10 0xffffffffffffffffffff
0000052b: MUL
0000052c: NOT
0000052d: AND
0000052e: SWAP1
0000052f: DUP4
00000530: PUSH10 0xffffffffffffffffffff
0000053b: AND
0000053c: MUL
0000053d: OR
0000053e: SWAP1
0000053f: SSTORE
00000540: POP
00000541: PUSH1 0x20
00000543: DUP3
00000544: ADD
00000545: MLOAD
00000546: DUP2
00000547: PUSH1 0x00
00000549: ADD
0000054a: PUSH1 0x0a
0000054c: PUSH2 0x0100
0000054f: EXP
00000550: DUP2
00000551: SLOAD
00000552: DUP2
00000553: PUSH10 0xffffffffffffffffffff
0000055e: MUL
0000055f: NOT
00000560: AND
00000561: SWAP1
00000562: DUP4
00000563: PUSH10 0xffffffffffffffffffff
0000056e: AND
0000056f: MUL
00000570: OR
00000571: SWAP1
00000572: SSTORE
00000573: POP
00000574: PUSH1 0x40
00000576: DUP3
00000577: ADD
00000578: MLOAD
00000579: DUP2
0000057a: PUSH1 0x00
0000057c: ADD
0000057d: PUSH1 0x14
0000057f: PUSH2 0x0100
00000582: EXP
00000583: DUP2
00000584: SLOAD
00000585: DUP2
00000586: PUSH10 0xffffffffffffffffffff
00000591: MUL
00000592: NOT
00000593: AND
00000594: SWAP1
00000595: DUP4
00000596: PUSH10 0xffffffffffffffffffff
000005a1: AND
000005a2: MUL
000005a3: OR
000005a4: SWAP1
000005a5: SSTORE
000005a6: POP
000005a7: SWAP1
000005a8: POP
000005a9: POP
000005aa: PUSH32 0x8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67
000005cb: PUSH1 0x08
000005cd: SLOAD
000005ce: PUSH1 0x40
000005d0: MLOAD
000005d1: PUSH2 0x05da
000005d4: SWAP2
000005d5: SWAP1
000005d6: PUSH2 0x1f32
000005d9: JUMP
000005da: JUMPDEST
000005db: PUSH1 0x40
000005dd: MLOAD
000005de: DUP1
000005df: SWAP2
000005e0: SUB
000005e1: SWAP1
000005e2: LOG1
000005e3: POP
000005e4: POP
000005e5: JUMP
000005e6: JUMPDEST
000005e7: PUSH1 0x0a
000005e9: DUP1
000005ea: PUSH1 0x00
000005ec: ADD
000005ed: PUSH1 0x00
000005ef: SWAP1
000005f0: SLOAD
000005f1: SWAP1
000005f2: PUSH2 0x0100
000005f5: EXP
000005f6: SWAP1
000005f7: DIV
000005f8: PUSH10 0xffffffffffffffffffff
00000603: AND
00000604: SWAP1
00000605: DUP1
00000606: PUSH1 0x00
00000608: ADD
00000609: PUSH1 0x0a
0000060b: SWAP1
0000060c: SLOAD
0000060d: SWAP1
0000060e: PUSH2 0x0100
00000611: EXP
00000612: SWAP1
00000613: DIV
00000614: PUSH10 0xffffffffffffffffffff
0000061f: AND
00000620: SWAP1
00000621: DUP1
00000622: PUSH1 0x00
00000624: ADD
00000625: PUSH1 0x14
00000627: SWAP1
00000628: SLOAD
00000629: SWAP1
0000062a: PUSH2 0x0100
0000062d: EXP
0000062e: SWAP1
0000062f: DIV
00000630: PUSH10 0xffffffffffffffffffff
0000063b: AND
0000063c: SWAP1
0000063d: POP
0000063e: DUP4
0000063f: JUMP
00000640: JUMPDEST
00000641: PUSH1 0x07
00000643: PUSH1 0x20
00000645: MSTORE
00000646: DUP1
00000647: PUSH1 0x00
00000649: MSTORE
0000064a: PUSH1 0x40
0000064c: PUSH1 0x00
0000064e: KECCAK256
0000064f: PUSH1 0x00
00000651: SWAP2
00000652: POP
00000653: SWAP1
00000654: POP
00000655: SLOAD
00000656: DUP2
00000657: JUMP
00000658: JUMPDEST
00000659: PUSH1 0x00
0000065b: PUSH1 0x02
0000065d: PUSH1 0x00
0000065f: SWAP1
00000660: SLOAD
00000661: SWAP1
00000662: PUSH2 0x0100
00000665: EXP
00000666: SWAP1
00000667: DIV
00000668: PUSH1 0xff
0000066a: AND
0000066b: SWAP1
0000066c: POP
0000066d: SWAP1
0000066e: JUMP
0000066f: JUMPDEST
00000670: PUSH1 0x08
00000672: SLOAD
00000673: DUP2
00000674: JUMP
00000675: JUMPDEST
00000676: PUSH2 0x067d
00000679: PUSH2 0x1719
0000067c: JUMP
0000067d: JUMPDEST
0000067e: PUSH1 0x00
00000680: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000695: AND
00000696: DUP2
00000697: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006ac: AND
000006ad: SUB
000006ae: PUSH2 0x06e3
000006b1: JUMPI
000006b2: PUSH1 0x40
000006b4: MLOAD
000006b5: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000
000006d6: DUP2
000006d7: MSTORE
000006d8: PUSH1 0x04
000006da: ADD
000006db: PUSH1 0x40
000006dd: MLOAD
000006de: DUP1
000006df: SWAP2
000006e0: SUB
000006e1: SWAP1
000006e2: REVERT
000006e3: JUMPDEST
000006e4: PUSH1 0x00
000006e6: PUSH1 0x09
000006e8: SLOAD
000006e9: SWAP1
000006ea: POP
000006eb: DUP2
000006ec: PUSH1 0x04
000006ee: PUSH1 0x00
000006f0: DUP4
000006f1: DUP2
000006f2: MSTORE
000006f3: PUSH1 0x20
000006f5: ADD
000006f6: SWAP1
000006f7: DUP2
000006f8: MSTORE
000006f9: PUSH1 0x20
000006fb: ADD
000006fc: PUSH1 0x00
000006fe: KECCAK256
000006ff: PUSH1 0x00
00000701: PUSH2 0x0100
00000704: EXP
00000705: DUP2
00000706: SLOAD
00000707: DUP2
00000708: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000071d: MUL
0000071e: NOT
0000071f: AND
00000720: SWAP1
00000721: DUP4
00000722: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000737: AND
00000738: MUL
00000739: OR
0000073a: SWAP1
0000073b: SSTORE
0000073c: POP
0000073d: PUSH1 0x01
0000073f: DUP2
00000740: PUSH2 0x0749
00000743: SWAP2
00000744: SWAP1
00000745: PUSH2 0x211a
00000748: JUMP
00000749: JUMPDEST
0000074a: PUSH1 0x09
0000074c: DUP2
0000074d: SWAP1
0000074e: SSTORE
0000074f: POP
00000750: DUP1
00000751: PUSH32 0xf4ae65a2e18ea7be182d884aa76396882597d2e202dd000d67e0fe9f25badbc1
00000772: DUP4
00000773: PUSH1 0x40
00000775: MLOAD
00000776: PUSH2 0x077f
00000779: SWAP2
0000077a: SWAP1
0000077b: PUSH2 0x1dd5
0000077e: JUMP
0000077f: JUMPDEST
00000780: PUSH1 0x40
00000782: MLOAD
00000783: DUP1
00000784: SWAP2
00000785: SUB
00000786: SWAP1
00000787: LOG2
00000788: POP
00000789: POP
0000078a: JUMP
0000078b: JUMPDEST
0000078c: PUSH2 0x0793
0000078f: PUSH2 0x1719
00000792: JUMP
00000793: JUMPDEST
00000794: PUSH2 0x079d
00000797: PUSH1 0x00
00000799: PUSH2 0x1844
0000079c: JUMP
0000079d: JUMPDEST
0000079e: JUMP
0000079f: JUMPDEST
000007a0: PUSH1 0x06
000007a2: PUSH1 0x20
000007a4: MSTORE
000007a5: DUP2
000007a6: PUSH1 0x00
000007a8: MSTORE
000007a9: PUSH1 0x40
000007ab: PUSH1 0x00
000007ad: KECCAK256
000007ae: PUSH1 0x20
000007b0: MSTORE
000007b1: DUP1
000007b2: PUSH1 0x00
000007b4: MSTORE
000007b5: PUSH1 0x40
000007b7: PUSH1 0x00
000007b9: KECCAK256
000007ba: PUSH1 0x00
000007bc: SWAP2
000007bd: POP
000007be: SWAP2
000007bf: POP
000007c0: POP
000007c1: SLOAD
000007c2: DUP2
000007c3: JUMP
000007c4: JUMPDEST
000007c5: PUSH2 0x07cc
000007c8: PUSH2 0x17a0
000007cb: JUMP
000007cc: JUMPDEST
000007cd: PUSH2 0x07d4
000007d0: PUSH2 0x1908
000007d3: JUMP
000007d4: JUMPDEST
000007d5: PUSH1 0x00
000007d7: DUP3
000007d8: SUB
000007d9: PUSH2 0x080e
000007dc: JUMPI
000007dd: PUSH1 0x40
000007df: MLOAD
000007e0: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
00000801: DUP2
00000802: MSTORE
00000803: PUSH1 0x04
00000805: ADD
00000806: PUSH1 0x40
00000808: MLOAD
00000809: DUP1
0000080a: SWAP2
0000080b: SUB
0000080c: SWAP1
0000080d: REVERT
0000080e: JUMPDEST
0000080f: PUSH1 0x00
00000811: PUSH1 0x03
00000813: PUSH1 0x00
00000815: CALLER
00000816: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000082b: AND
0000082c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000841: AND
00000842: DUP2
00000843: MSTORE
00000844: PUSH1 0x20
00000846: ADD
00000847: SWAP1
00000848: DUP2
00000849: MSTORE
0000084a: PUSH1 0x20
0000084c: ADD
0000084d: PUSH1 0x00
0000084f: KECCAK256
00000850: SLOAD
00000851: SWAP1
00000852: POP
00000853: DUP1
00000854: DUP4
00000855: GT
00000856: ISZERO
00000857: PUSH2 0x088c
0000085a: JUMPI
0000085b: PUSH1 0x40
0000085d: MLOAD
0000085e: PUSH32 0xf1bc94d200000000000000000000000000000000000000000000000000000000
0000087f: DUP2
00000880: MSTORE
00000881: PUSH1 0x04
00000883: ADD
00000884: PUSH1 0x40
00000886: MLOAD
00000887: DUP1
00000888: SWAP2
00000889: SUB
0000088a: SWAP1
0000088b: REVERT
0000088c: JUMPDEST
0000088d: DUP3
0000088e: DUP2
0000088f: PUSH2 0x0898
00000892: SWAP2
00000893: SWAP1
00000894: PUSH2 0x214e
00000897: JUMP
00000898: JUMPDEST
00000899: PUSH1 0x03
0000089b: PUSH1 0x00
0000089d: CALLER
0000089e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008b3: AND
000008b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008c9: AND
000008ca: DUP2
000008cb: MSTORE
000008cc: PUSH1 0x20
000008ce: ADD
000008cf: SWAP1
000008d0: DUP2
000008d1: MSTORE
000008d2: PUSH1 0x20
000008d4: ADD
000008d5: PUSH1 0x00
000008d7: KECCAK256
000008d8: DUP2
000008d9: SWAP1
000008da: SSTORE
000008db: POP
000008dc: DUP3
000008dd: PUSH1 0x08
000008df: PUSH1 0x00
000008e1: DUP3
000008e2: DUP3
000008e3: SLOAD
000008e4: PUSH2 0x08ed
000008e7: SWAP2
000008e8: SWAP1
000008e9: PUSH2 0x214e
000008ec: JUMP
000008ed: JUMPDEST
000008ee: SWAP3
000008ef: POP
000008f0: POP
000008f1: DUP2
000008f2: SWAP1
000008f3: SSTORE
000008f4: POP
000008f5: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6
00000916: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000092b: AND
0000092c: PUSH4 0xa9059cbb
00000931: DUP4
00000932: DUP6
00000933: PUSH1 0x40
00000935: MLOAD
00000936: DUP4
00000937: PUSH4 0xffffffff
0000093c: AND
0000093d: PUSH1 0xe0
0000093f: SHL
00000940: DUP2
00000941: MSTORE
00000942: PUSH1 0x04
00000944: ADD
00000945: PUSH2 0x094f
00000948: SWAP3
00000949: SWAP2
0000094a: SWAP1
0000094b: PUSH2 0x2182
0000094e: JUMP
0000094f: JUMPDEST
00000950: PUSH1 0x20
00000952: PUSH1 0x40
00000954: MLOAD
00000955: DUP1
00000956: DUP4
00000957: SUB
00000958: DUP2
00000959: PUSH1 0x00
0000095b: DUP8
0000095c: GAS
0000095d: CALL
0000095e: ISZERO
0000095f: DUP1
00000960: ISZERO
00000961: PUSH2 0x096e
00000964: JUMPI
00000965: RETURNDATASIZE
00000966: PUSH1 0x00
00000968: DUP1
00000969: RETURNDATACOPY
0000096a: RETURNDATASIZE
0000096b: PUSH1 0x00
0000096d: REVERT
0000096e: JUMPDEST
0000096f: POP
00000970: POP
00000971: POP
00000972: POP
00000973: PUSH1 0x40
00000975: MLOAD
00000976: RETURNDATASIZE
00000977: PUSH1 0x1f
00000979: NOT
0000097a: PUSH1 0x1f
0000097c: DUP3
0000097d: ADD
0000097e: AND
0000097f: DUP3
00000980: ADD
00000981: DUP1
00000982: PUSH1 0x40
00000984: MSTORE
00000985: POP
00000986: DUP2
00000987: ADD
00000988: SWAP1
00000989: PUSH2 0x0992
0000098c: SWAP2
0000098d: SWAP1
0000098e: PUSH2 0x21d7
00000991: JUMP
00000992: JUMPDEST
00000993: POP
00000994: CALLER
00000995: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009aa: AND
000009ab: PUSH32 0x49b5ddea377fe275f1bc0e3ff38fd494cbe790c81c9b9f8c25f2e48effcf41aa
000009cc: DUP5
000009cd: PUSH1 0x40
000009cf: MLOAD
000009d0: PUSH2 0x09d9
000009d3: SWAP2
000009d4: SWAP1
000009d5: PUSH2 0x1f32
000009d8: JUMP
000009d9: JUMPDEST
000009da: PUSH1 0x40
000009dc: MLOAD
000009dd: DUP1
000009de: SWAP2
000009df: SUB
000009e0: SWAP1
000009e1: LOG2
000009e2: POP
000009e3: PUSH2 0x09ea
000009e6: PUSH2 0x194e
000009e9: JUMP
000009ea: JUMPDEST
000009eb: POP
000009ec: POP
000009ed: JUMP
000009ee: JUMPDEST
000009ef: PUSH1 0x00
000009f1: DUP1
000009f2: PUSH1 0x00
000009f4: SWAP1
000009f5: SLOAD
000009f6: SWAP1
000009f7: PUSH2 0x0100
000009fa: EXP
000009fb: SWAP1
000009fc: DIV
000009fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a12: AND
00000a13: SWAP1
00000a14: POP
00000a15: SWAP1
00000a16: JUMP
00000a17: JUMPDEST
00000a18: PUSH1 0x03
00000a1a: PUSH1 0x20
00000a1c: MSTORE
00000a1d: DUP1
00000a1e: PUSH1 0x00
00000a20: MSTORE
00000a21: PUSH1 0x40
00000a23: PUSH1 0x00
00000a25: KECCAK256
00000a26: PUSH1 0x00
00000a28: SWAP2
00000a29: POP
00000a2a: SWAP1
00000a2b: POP
00000a2c: SLOAD
00000a2d: DUP2
00000a2e: JUMP
00000a2f: JUMPDEST
00000a30: PUSH2 0x0a37
00000a33: PUSH2 0x1719
00000a36: JUMP
00000a37: JUMPDEST
00000a38: PUSH2 0x0a62
00000a3b: CALLER
00000a3c: DUP3
00000a3d: DUP5
00000a3e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a53: AND
00000a54: PUSH2 0x1957
00000a57: SWAP1
00000a58: SWAP3
00000a59: SWAP2
00000a5a: SWAP1
00000a5b: PUSH4 0xffffffff
00000a60: AND
00000a61: JUMP
00000a62: JUMPDEST
00000a63: POP
00000a64: POP
00000a65: JUMP
00000a66: JUMPDEST
00000a67: PUSH1 0x05
00000a69: PUSH1 0x20
00000a6b: MSTORE
00000a6c: DUP1
00000a6d: PUSH1 0x00
00000a6f: MSTORE
00000a70: PUSH1 0x40
00000a72: PUSH1 0x00
00000a74: KECCAK256
00000a75: PUSH1 0x00
00000a77: SWAP2
00000a78: POP
00000a79: SWAP1
00000a7a: POP
00000a7b: SLOAD
00000a7c: DUP2
00000a7d: JUMP
00000a7e: JUMPDEST
00000a7f: PUSH2 0x0a86
00000a82: PUSH2 0x17a0
00000a85: JUMP
00000a86: JUMPDEST
00000a87: PUSH2 0x0a8e
00000a8a: PUSH2 0x1908
00000a8d: JUMP
00000a8e: JUMPDEST
00000a8f: PUSH1 0x00
00000a91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aa6: AND
00000aa7: DUP3
00000aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000abd: AND
00000abe: SUB
00000abf: PUSH2 0x0af4
00000ac2: JUMPI
00000ac3: PUSH1 0x40
00000ac5: MLOAD
00000ac6: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000
00000ae7: DUP2
00000ae8: MSTORE
00000ae9: PUSH1 0x04
00000aeb: ADD
00000aec: PUSH1 0x40
00000aee: MLOAD
00000aef: DUP1
00000af0: SWAP2
00000af1: SUB
00000af2: SWAP1
00000af3: REVERT
00000af4: JUMPDEST
00000af5: PUSH1 0x00
00000af7: DUP2
00000af8: SUB
00000af9: PUSH2 0x0b2e
00000afc: JUMPI
00000afd: PUSH1 0x40
00000aff: MLOAD
00000b00: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
00000b21: DUP2
00000b22: MSTORE
00000b23: PUSH1 0x04
00000b25: ADD
00000b26: PUSH1 0x40
00000b28: MLOAD
00000b29: DUP1
00000b2a: SWAP2
00000b2b: SUB
00000b2c: SWAP1
00000b2d: REVERT
00000b2e: JUMPDEST
00000b2f: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6
00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b65: AND
00000b66: PUSH4 0x23b872dd
00000b6b: CALLER
00000b6c: ADDRESS
00000b6d: DUP5
00000b6e: PUSH1 0x40
00000b70: MLOAD
00000b71: DUP5
00000b72: PUSH4 0xffffffff
00000b77: AND
00000b78: PUSH1 0xe0
00000b7a: SHL
00000b7b: DUP2
00000b7c: MSTORE
00000b7d: PUSH1 0x04
00000b7f: ADD
00000b80: PUSH2 0x0b8b
00000b83: SWAP4
00000b84: SWAP3
00000b85: SWAP2
00000b86: SWAP1
00000b87: PUSH2 0x2204
00000b8a: JUMP
00000b8b: JUMPDEST
00000b8c: PUSH1 0x20
00000b8e: PUSH1 0x40
00000b90: MLOAD
00000b91: DUP1
00000b92: DUP4
00000b93: SUB
00000b94: DUP2
00000b95: PUSH1 0x00
00000b97: DUP8
00000b98: GAS
00000b99: CALL
00000b9a: ISZERO
00000b9b: DUP1
00000b9c: ISZERO
00000b9d: PUSH2 0x0baa
00000ba0: JUMPI
00000ba1: RETURNDATASIZE
00000ba2: PUSH1 0x00
00000ba4: DUP1
00000ba5: RETURNDATACOPY
00000ba6: RETURNDATASIZE
00000ba7: PUSH1 0x00
00000ba9: REVERT
00000baa: JUMPDEST
00000bab: POP
00000bac: POP
00000bad: POP
00000bae: POP
00000baf: PUSH1 0x40
00000bb1: MLOAD
00000bb2: RETURNDATASIZE
00000bb3: PUSH1 0x1f
00000bb5: NOT
00000bb6: PUSH1 0x1f
00000bb8: DUP3
00000bb9: ADD
00000bba: AND
00000bbb: DUP3
00000bbc: ADD
00000bbd: DUP1
00000bbe: PUSH1 0x40
00000bc0: MSTORE
00000bc1: POP
00000bc2: DUP2
00000bc3: ADD
00000bc4: SWAP1
00000bc5: PUSH2 0x0bce
00000bc8: SWAP2
00000bc9: SWAP1
00000bca: PUSH2 0x21d7
00000bcd: JUMP
00000bce: JUMPDEST
00000bcf: POP
00000bd0: DUP1
00000bd1: PUSH1 0x03
00000bd3: PUSH1 0x00
00000bd5: DUP5
00000bd6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000beb: AND
00000bec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c01: AND
00000c02: DUP2
00000c03: MSTORE
00000c04: PUSH1 0x20
00000c06: ADD
00000c07: SWAP1
00000c08: DUP2
00000c09: MSTORE
00000c0a: PUSH1 0x20
00000c0c: ADD
00000c0d: PUSH1 0x00
00000c0f: KECCAK256
00000c10: PUSH1 0x00
00000c12: DUP3
00000c13: DUP3
00000c14: SLOAD
00000c15: PUSH2 0x0c1e
00000c18: SWAP2
00000c19: SWAP1
00000c1a: PUSH2 0x211a
00000c1d: JUMP
00000c1e: JUMPDEST
00000c1f: SWAP3
00000c20: POP
00000c21: POP
00000c22: DUP2
00000c23: SWAP1
00000c24: SSTORE
00000c25: POP
00000c26: DUP1
00000c27: PUSH1 0x08
00000c29: PUSH1 0x00
00000c2b: DUP3
00000c2c: DUP3
00000c2d: SLOAD
00000c2e: PUSH2 0x0c37
00000c31: SWAP2
00000c32: SWAP1
00000c33: PUSH2 0x211a
00000c36: JUMP
00000c37: JUMPDEST
00000c38: SWAP3
00000c39: POP
00000c3a: POP
00000c3b: DUP2
00000c3c: SWAP1
00000c3d: SSTORE
00000c3e: POP
00000c3f: DUP2
00000c40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c55: AND
00000c56: PUSH32 0xe4f97de32fa70a6e6d67ec3c89be72f201522552fefc2a263af6063c78b2fafa
00000c77: DUP3
00000c78: PUSH1 0x40
00000c7a: MLOAD
00000c7b: PUSH2 0x0c84
00000c7e: SWAP2
00000c7f: SWAP1
00000c80: PUSH2 0x1f32
00000c83: JUMP
00000c84: JUMPDEST
00000c85: PUSH1 0x40
00000c87: MLOAD
00000c88: DUP1
00000c89: SWAP2
00000c8a: SUB
00000c8b: SWAP1
00000c8c: LOG2
00000c8d: PUSH2 0x0c94
00000c90: PUSH2 0x194e
00000c93: JUMP
00000c94: JUMPDEST
00000c95: POP
00000c96: POP
00000c97: JUMP
00000c98: JUMPDEST
00000c99: PUSH2 0x0ca0
00000c9c: PUSH2 0x19d6
00000c9f: JUMP
00000ca0: JUMPDEST
00000ca1: PUSH2 0x0ca8
00000ca4: PUSH2 0x1908
00000ca7: JUMP
00000ca8: JUMPDEST
00000ca9: PUSH1 0x00
00000cab: PUSH1 0x03
00000cad: PUSH1 0x00
00000caf: CALLER
00000cb0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cc5: AND
00000cc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cdb: AND
00000cdc: DUP2
00000cdd: MSTORE
00000cde: PUSH1 0x20
00000ce0: ADD
00000ce1: SWAP1
00000ce2: DUP2
00000ce3: MSTORE
00000ce4: PUSH1 0x20
00000ce6: ADD
00000ce7: PUSH1 0x00
00000ce9: KECCAK256
00000cea: SLOAD
00000ceb: SWAP1
00000cec: POP
00000ced: PUSH1 0x00
00000cef: DUP2
00000cf0: SUB
00000cf1: PUSH2 0x0d26
00000cf4: JUMPI
00000cf5: PUSH1 0x40
00000cf7: MLOAD
00000cf8: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
00000d19: DUP2
00000d1a: MSTORE
00000d1b: PUSH1 0x04
00000d1d: ADD
00000d1e: PUSH1 0x40
00000d20: MLOAD
00000d21: DUP1
00000d22: SWAP2
00000d23: SUB
00000d24: SWAP1
00000d25: REVERT
00000d26: JUMPDEST
00000d27: PUSH1 0x00
00000d29: PUSH1 0x0a
00000d2b: PUSH1 0x40
00000d2d: MLOAD
00000d2e: DUP1
00000d2f: PUSH1 0x60
00000d31: ADD
00000d32: PUSH1 0x40
00000d34: MSTORE
00000d35: SWAP1
00000d36: DUP2
00000d37: PUSH1 0x00
00000d39: DUP3
00000d3a: ADD
00000d3b: PUSH1 0x00
00000d3d: SWAP1
00000d3e: SLOAD
00000d3f: SWAP1
00000d40: PUSH2 0x0100
00000d43: EXP
00000d44: SWAP1
00000d45: DIV
00000d46: PUSH10 0xffffffffffffffffffff
00000d51: AND
00000d52: PUSH10 0xffffffffffffffffffff
00000d5d: AND
00000d5e: PUSH10 0xffffffffffffffffffff
00000d69: AND
00000d6a: DUP2
00000d6b: MSTORE
00000d6c: PUSH1 0x20
00000d6e: ADD
00000d6f: PUSH1 0x00
00000d71: DUP3
00000d72: ADD
00000d73: PUSH1 0x0a
00000d75: SWAP1
00000d76: SLOAD
00000d77: SWAP1
00000d78: PUSH2 0x0100
00000d7b: EXP
00000d7c: SWAP1
00000d7d: DIV
00000d7e: PUSH10 0xffffffffffffffffffff
00000d89: AND
00000d8a: PUSH10 0xffffffffffffffffffff
00000d95: AND
00000d96: PUSH10 0xffffffffffffffffffff
00000da1: AND
00000da2: DUP2
00000da3: MSTORE
00000da4: PUSH1 0x20
00000da6: ADD
00000da7: PUSH1 0x00
00000da9: DUP3
00000daa: ADD
00000dab: PUSH1 0x14
00000dad: SWAP1
00000dae: SLOAD
00000daf: SWAP1
00000db0: PUSH2 0x0100
00000db3: EXP
00000db4: SWAP1
00000db5: DIV
00000db6: PUSH10 0xffffffffffffffffffff
00000dc1: AND
00000dc2: PUSH10 0xffffffffffffffffffff
00000dcd: AND
00000dce: PUSH10 0xffffffffffffffffffff
00000dd9: AND
00000dda: DUP2
00000ddb: MSTORE
00000ddc: POP
00000ddd: POP
00000dde: SWAP1
00000ddf: POP
00000de0: PUSH1 0x00
00000de2: DUP2
00000de3: PUSH1 0x00
00000de5: ADD
00000de6: MLOAD
00000de7: PUSH10 0xffffffffffffffffffff
00000df2: AND
00000df3: EQ
00000df4: DUP1
00000df5: PUSH2 0x0e1c
00000df8: JUMPI
00000df9: POP
00000dfa: NUMBER
00000dfb: DUP2
00000dfc: PUSH1 0x20
00000dfe: ADD
00000dff: MLOAD
00000e00: DUP3
00000e01: PUSH1 0x00
00000e03: ADD
00000e04: MLOAD
00000e05: PUSH2 0x0e0e
00000e08: SWAP2
00000e09: SWAP1
00000e0a: PUSH2 0x223b
00000e0d: JUMP
00000e0e: JUMPDEST
00000e0f: PUSH10 0xffffffffffffffffffff
00000e1a: AND
00000e1b: GT
00000e1c: JUMPDEST
00000e1d: ISZERO
00000e1e: PUSH2 0x0e53
00000e21: JUMPI
00000e22: PUSH1 0x40
00000e24: MLOAD
00000e25: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000
00000e46: DUP2
00000e47: MSTORE
00000e48: PUSH1 0x04
00000e4a: ADD
00000e4b: PUSH1 0x40
00000e4d: MLOAD
00000e4e: DUP1
00000e4f: SWAP2
00000e50: SUB
00000e51: SWAP1
00000e52: REVERT
00000e53: JUMPDEST
00000e54: PUSH1 0x00
00000e56: DUP2
00000e57: PUSH1 0x00
00000e59: ADD
00000e5a: MLOAD
00000e5b: PUSH10 0xffffffffffffffffffff
00000e66: AND
00000e67: NUMBER
00000e68: PUSH2 0x0e71
00000e6b: SWAP2
00000e6c: SWAP1
00000e6d: PUSH2 0x214e
00000e70: JUMP
00000e71: JUMPDEST
00000e72: SWAP1
00000e73: POP
00000e74: PUSH1 0x00
00000e76: DUP3
00000e77: PUSH1 0x40
00000e79: ADD
00000e7a: MLOAD
00000e7b: PUSH10 0xffffffffffffffffffff
00000e86: AND
00000e87: DUP3
00000e88: GT
00000e89: PUSH2 0x0eb8
00000e8c: JUMPI
00000e8d: DUP3
00000e8e: PUSH1 0x40
00000e90: ADD
00000e91: MLOAD
00000e92: PUSH10 0xffffffffffffffffffff
00000e9d: AND
00000e9e: DUP3
00000e9f: DUP6
00000ea0: PUSH2 0x0ea9
00000ea3: SWAP2
00000ea4: SWAP1
00000ea5: PUSH2 0x2279
00000ea8: JUMP
00000ea9: JUMPDEST
00000eaa: PUSH2 0x0eb3
00000ead: SWAP2
00000eae: SWAP1
00000eaf: PUSH2 0x22ea
00000eb2: JUMP
00000eb3: JUMPDEST
00000eb4: PUSH2 0x0eba
00000eb7: JUMP
00000eb8: JUMPDEST
00000eb9: DUP4
00000eba: JUMPDEST
00000ebb: SWAP1
00000ebc: POP
00000ebd: PUSH1 0x00
00000ebf: PUSH1 0x07
00000ec1: PUSH1 0x00
00000ec3: CALLER
00000ec4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ed9: AND
00000eda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eef: AND
00000ef0: DUP2
00000ef1: MSTORE
00000ef2: PUSH1 0x20
00000ef4: ADD
00000ef5: SWAP1
00000ef6: DUP2
00000ef7: MSTORE
00000ef8: PUSH1 0x20
00000efa: ADD
00000efb: PUSH1 0x00
00000efd: KECCAK256
00000efe: SLOAD
00000eff: SWAP1
00000f00: POP
00000f01: DUP1
00000f02: DUP3
00000f03: EQ
00000f04: PUSH2 0x1053
00000f07: JUMPI
00000f08: DUP2
00000f09: PUSH1 0x07
00000f0b: PUSH1 0x00
00000f0d: CALLER
00000f0e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f23: AND
00000f24: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f39: AND
00000f3a: DUP2
00000f3b: MSTORE
00000f3c: PUSH1 0x20
00000f3e: ADD
00000f3f: SWAP1
00000f40: DUP2
00000f41: MSTORE
00000f42: PUSH1 0x20
00000f44: ADD
00000f45: PUSH1 0x00
00000f47: KECCAK256
00000f48: DUP2
00000f49: SWAP1
00000f4a: SSTORE
00000f4b: POP
00000f4c: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6
00000f6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f82: AND
00000f83: PUSH4 0xa9059cbb
00000f88: DUP8
00000f89: DUP4
00000f8a: DUP6
00000f8b: PUSH2 0x0f94
00000f8e: SWAP2
00000f8f: SWAP1
00000f90: PUSH2 0x214e
00000f93: JUMP
00000f94: JUMPDEST
00000f95: PUSH1 0x40
00000f97: MLOAD
00000f98: DUP4
00000f99: PUSH4 0xffffffff
00000f9e: AND
00000f9f: PUSH1 0xe0
00000fa1: SHL
00000fa2: DUP2
00000fa3: MSTORE
00000fa4: PUSH1 0x04
00000fa6: ADD
00000fa7: PUSH2 0x0fb1
00000faa: SWAP3
00000fab: SWAP2
00000fac: SWAP1
00000fad: PUSH2 0x2182
00000fb0: JUMP
00000fb1: JUMPDEST
00000fb2: PUSH1 0x20
00000fb4: PUSH1 0x40
00000fb6: MLOAD
00000fb7: DUP1
00000fb8: DUP4
00000fb9: SUB
00000fba: DUP2
00000fbb: PUSH1 0x00
00000fbd: DUP8
00000fbe: GAS
00000fbf: CALL
00000fc0: ISZERO
00000fc1: DUP1
00000fc2: ISZERO
00000fc3: PUSH2 0x0fd0
00000fc6: JUMPI
00000fc7: RETURNDATASIZE
00000fc8: PUSH1 0x00
00000fca: DUP1
00000fcb: RETURNDATACOPY
00000fcc: RETURNDATASIZE
00000fcd: PUSH1 0x00
00000fcf: REVERT
00000fd0: JUMPDEST
00000fd1: POP
00000fd2: POP
00000fd3: POP
00000fd4: POP
00000fd5: PUSH1 0x40
00000fd7: MLOAD
00000fd8: RETURNDATASIZE
00000fd9: PUSH1 0x1f
00000fdb: NOT
00000fdc: PUSH1 0x1f
00000fde: DUP3
00000fdf: ADD
00000fe0: AND
00000fe1: DUP3
00000fe2: ADD
00000fe3: DUP1
00000fe4: PUSH1 0x40
00000fe6: MSTORE
00000fe7: POP
00000fe8: DUP2
00000fe9: ADD
00000fea: SWAP1
00000feb: PUSH2 0x0ff4
00000fee: SWAP2
00000fef: SWAP1
00000ff0: PUSH2 0x21d7
00000ff3: JUMP
00000ff4: JUMPDEST
00000ff5: POP
00000ff6: CALLER
00000ff7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000100c: AND
0000100d: PUSH32 0xf13cda56e42f24843815c00a7a8af0985c711bc74018c81a3e9d1824b142a58d
0000102e: DUP3
0000102f: DUP5
00001030: PUSH2 0x1039
00001033: SWAP2
00001034: SWAP1
00001035: PUSH2 0x214e
00001038: JUMP
00001039: JUMPDEST
0000103a: PUSH1 0x40
0000103c: MLOAD
0000103d: PUSH2 0x1046
00001040: SWAP2
00001041: SWAP1
00001042: PUSH2 0x1f32
00001045: JUMP
00001046: JUMPDEST
00001047: PUSH1 0x40
00001049: MLOAD
0000104a: DUP1
0000104b: SWAP2
0000104c: SUB
0000104d: SWAP1
0000104e: LOG2
0000104f: PUSH2 0x1085
00001052: JUMP
00001053: JUMPDEST
00001054: PUSH1 0x40
00001056: MLOAD
00001057: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000
00001078: DUP2
00001079: MSTORE
0000107a: PUSH1 0x04
0000107c: ADD
0000107d: PUSH1 0x40
0000107f: MLOAD
00001080: DUP1
00001081: SWAP2
00001082: SUB
00001083: SWAP1
00001084: REVERT
00001085: JUMPDEST
00001086: POP
00001087: POP
00001088: POP
00001089: POP
0000108a: POP
0000108b: PUSH2 0x1092
0000108e: PUSH2 0x194e
00001091: JUMP
00001092: JUMPDEST
00001093: POP
00001094: JUMP
00001095: JUMPDEST
00001096: PUSH1 0x09
00001098: SLOAD
00001099: DUP2
0000109a: JUMP
0000109b: JUMPDEST
0000109c: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6
000010bd: DUP2
000010be: JUMP
000010bf: JUMPDEST
000010c0: PUSH2 0x10c7
000010c3: PUSH2 0x19d6
000010c6: JUMP
000010c7: JUMPDEST
000010c8: PUSH2 0x10cf
000010cb: PUSH2 0x1908
000010ce: JUMP
000010cf: JUMPDEST
000010d0: PUSH1 0x00
000010d2: PUSH1 0x03
000010d4: PUSH1 0x00
000010d6: CALLER
000010d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010ec: AND
000010ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001102: AND
00001103: DUP2
00001104: MSTORE
00001105: PUSH1 0x20
00001107: ADD
00001108: SWAP1
00001109: DUP2
0000110a: MSTORE
0000110b: PUSH1 0x20
0000110d: ADD
0000110e: PUSH1 0x00
00001110: KECCAK256
00001111: SLOAD
00001112: SWAP1
00001113: POP
00001114: PUSH1 0x00
00001116: DUP2
00001117: SUB
00001118: PUSH2 0x114d
0000111b: JUMPI
0000111c: PUSH1 0x40
0000111e: MLOAD
0000111f: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
00001140: DUP2
00001141: MSTORE
00001142: PUSH1 0x04
00001144: ADD
00001145: PUSH1 0x40
00001147: MLOAD
00001148: DUP1
00001149: SWAP2
0000114a: SUB
0000114b: SWAP1
0000114c: REVERT
0000114d: JUMPDEST
0000114e: PUSH1 0x00
00001150: DUP1
00001151: PUSH1 0x09
00001153: SLOAD
00001154: SWAP1
00001155: POP
00001156: PUSH1 0x00
00001158: DUP2
00001159: SUB
0000115a: PUSH2 0x118f
0000115d: JUMPI
0000115e: PUSH1 0x40
00001160: MLOAD
00001161: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000
00001182: DUP2
00001183: MSTORE
00001184: PUSH1 0x04
00001186: ADD
00001187: PUSH1 0x40
00001189: MLOAD
0000118a: DUP1
0000118b: SWAP2
0000118c: SUB
0000118d: SWAP1
0000118e: REVERT
0000118f: JUMPDEST
00001190: PUSH1 0x00
00001192: PUSH1 0x08
00001194: SLOAD
00001195: SWAP1
00001196: POP
00001197: PUSH1 0x00
00001199: JUMPDEST
0000119a: DUP3
0000119b: DUP2
0000119c: LT
0000119d: ISZERO
0000119e: PUSH2 0x1351
000011a1: JUMPI
000011a2: PUSH1 0x00
000011a4: PUSH1 0x06
000011a6: PUSH1 0x00
000011a8: CALLER
000011a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011be: AND
000011bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011d4: AND
000011d5: DUP2
000011d6: MSTORE
000011d7: PUSH1 0x20
000011d9: ADD
000011da: SWAP1
000011db: DUP2
000011dc: MSTORE
000011dd: PUSH1 0x20
000011df: ADD
000011e0: PUSH1 0x00
000011e2: KECCAK256
000011e3: PUSH1 0x00
000011e5: DUP4
000011e6: DUP2
000011e7: MSTORE
000011e8: PUSH1 0x20
000011ea: ADD
000011eb: SWAP1
000011ec: DUP2
000011ed: MSTORE
000011ee: PUSH1 0x20
000011f0: ADD
000011f1: PUSH1 0x00
000011f3: KECCAK256
000011f4: SLOAD
000011f5: SWAP1
000011f6: POP
000011f7: PUSH1 0x00
000011f9: DUP4
000011fa: PUSH1 0x05
000011fc: PUSH1 0x00
000011fe: DUP6
000011ff: DUP2
00001200: MSTORE
00001201: PUSH1 0x20
00001203: ADD
00001204: SWAP1
00001205: DUP2
00001206: MSTORE
00001207: PUSH1 0x20
00001209: ADD
0000120a: PUSH1 0x00
0000120c: KECCAK256
0000120d: SLOAD
0000120e: DUP9
0000120f: PUSH2 0x1218
00001212: SWAP2
00001213: SWAP1
00001214: PUSH2 0x2279
00001217: JUMP
00001218: JUMPDEST
00001219: PUSH2 0x1222
0000121c: SWAP2
0000121d: SWAP1
0000121e: PUSH2 0x22ea
00001221: JUMP
00001222: JUMPDEST
00001223: SWAP1
00001224: POP
00001225: PUSH1 0x00
00001227: DUP3
00001228: DUP3
00001229: PUSH2 0x1232
0000122c: SWAP2
0000122d: SWAP1
0000122e: PUSH2 0x214e
00001231: JUMP
00001232: JUMPDEST
00001233: SWAP1
00001234: POP
00001235: PUSH1 0x00
00001237: DUP2
00001238: EQ
00001239: PUSH2 0x1343
0000123c: JUMPI
0000123d: PUSH1 0x01
0000123f: SWAP7
00001240: POP
00001241: DUP2
00001242: PUSH1 0x06
00001244: PUSH1 0x00
00001246: CALLER
00001247: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000125c: AND
0000125d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001272: AND
00001273: DUP2
00001274: MSTORE
00001275: PUSH1 0x20
00001277: ADD
00001278: SWAP1
00001279: DUP2
0000127a: MSTORE
0000127b: PUSH1 0x20
0000127d: ADD
0000127e: PUSH1 0x00
00001280: KECCAK256
00001281: PUSH1 0x00
00001283: DUP7
00001284: DUP2
00001285: MSTORE
00001286: PUSH1 0x20
00001288: ADD
00001289: SWAP1
0000128a: DUP2
0000128b: MSTORE
0000128c: PUSH1 0x20
0000128e: ADD
0000128f: PUSH1 0x00
00001291: KECCAK256
00001292: DUP2
00001293: SWAP1
00001294: SSTORE
00001295: POP
00001296: PUSH2 0x12f3
00001299: DUP10
0000129a: DUP3
0000129b: PUSH1 0x04
0000129d: PUSH1 0x00
0000129f: DUP9
000012a0: DUP2
000012a1: MSTORE
000012a2: PUSH1 0x20
000012a4: ADD
000012a5: SWAP1
000012a6: DUP2
000012a7: MSTORE
000012a8: PUSH1 0x20
000012aa: ADD
000012ab: PUSH1 0x00
000012ad: KECCAK256
000012ae: PUSH1 0x00
000012b0: SWAP1
000012b1: SLOAD
000012b2: SWAP1
000012b3: PUSH2 0x0100
000012b6: EXP
000012b7: SWAP1
000012b8: DIV
000012b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012ce: AND
000012cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012e4: AND
000012e5: PUSH2 0x1957
000012e8: SWAP1
000012e9: SWAP3
000012ea: SWAP2
000012eb: SWAP1
000012ec: PUSH4 0xffffffff
000012f1: AND
000012f2: JUMP
000012f3: JUMPDEST
000012f4: DUP4
000012f5: CALLER
000012f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000130b: AND
0000130c: PUSH32 0x9923b4306c6c030f2bdfbf156517d5983b87e15b96176da122cd4f2effa4ba7b
0000132d: DUP4
0000132e: PUSH1 0x40
00001330: MLOAD
00001331: PUSH2 0x133a
00001334: SWAP2
00001335: SWAP1
00001336: PUSH2 0x1f32
00001339: JUMP
0000133a: JUMPDEST
0000133b: PUSH1 0x40
0000133d: MLOAD
0000133e: DUP1
0000133f: SWAP2
00001340: SUB
00001341: SWAP1
00001342: LOG3
00001343: JUMPDEST
00001344: POP
00001345: POP
00001346: POP
00001347: DUP1
00001348: PUSH1 0x01
0000134a: ADD
0000134b: SWAP1
0000134c: POP
0000134d: PUSH2 0x1199
00001350: JUMP
00001351: JUMPDEST
00001352: POP
00001353: DUP3
00001354: PUSH2 0x1389
00001357: JUMPI
00001358: PUSH1 0x40
0000135a: MLOAD
0000135b: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000
0000137c: DUP2
0000137d: MSTORE
0000137e: PUSH1 0x04
00001380: ADD
00001381: PUSH1 0x40
00001383: MLOAD
00001384: DUP1
00001385: SWAP2
00001386: SUB
00001387: SWAP1
00001388: REVERT
00001389: JUMPDEST
0000138a: POP
0000138b: POP
0000138c: POP
0000138d: POP
0000138e: PUSH2 0x1395
00001391: PUSH2 0x194e
00001394: JUMP
00001395: JUMPDEST
00001396: POP
00001397: JUMP
00001398: JUMPDEST
00001399: PUSH2 0x13a0
0000139c: PUSH2 0x1719
0000139f: JUMP
000013a0: JUMPDEST
000013a1: PUSH1 0x00
000013a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013b8: AND
000013b9: DUP2
000013ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013cf: AND
000013d0: SUB
000013d1: PUSH2 0x1412
000013d4: JUMPI
000013d5: PUSH1 0x00
000013d7: PUSH1 0x40
000013d9: MLOAD
000013da: PUSH32 0x1e4fbdf700000000000000000000000000000000000000000000000000000000
000013fb: DUP2
000013fc: MSTORE
000013fd: PUSH1 0x04
000013ff: ADD
00001400: PUSH2 0x1409
00001403: SWAP2
00001404: SWAP1
00001405: PUSH2 0x2012
00001408: JUMP
00001409: JUMPDEST
0000140a: PUSH1 0x40
0000140c: MLOAD
0000140d: DUP1
0000140e: SWAP2
0000140f: SUB
00001410: SWAP1
00001411: REVERT
00001412: JUMPDEST
00001413: PUSH2 0x141b
00001416: DUP2
00001417: PUSH2 0x1844
0000141a: JUMP
0000141b: JUMPDEST
0000141c: POP
0000141d: JUMP
0000141e: JUMPDEST
0000141f: PUSH2 0x1426
00001422: PUSH2 0x1719
00001425: JUMP
00001426: JUMPDEST
00001427: PUSH2 0x142e
0000142a: PUSH2 0x19d6
0000142d: JUMP
0000142e: JUMPDEST
0000142f: PUSH1 0x00
00001431: DUP2
00001432: SUB
00001433: PUSH2 0x1468
00001436: JUMPI
00001437: PUSH1 0x40
00001439: MLOAD
0000143a: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
0000145b: DUP2
0000145c: MSTORE
0000145d: PUSH1 0x04
0000145f: ADD
00001460: PUSH1 0x40
00001462: MLOAD
00001463: DUP1
00001464: SWAP2
00001465: SUB
00001466: SWAP1
00001467: REVERT
00001468: JUMPDEST
00001469: PUSH1 0x00
0000146b: PUSH1 0x04
0000146d: PUSH1 0x00
0000146f: DUP5
00001470: DUP2
00001471: MSTORE
00001472: PUSH1 0x20
00001474: ADD
00001475: SWAP1
00001476: DUP2
00001477: MSTORE
00001478: PUSH1 0x20
0000147a: ADD
0000147b: PUSH1 0x00
0000147d: KECCAK256
0000147e: PUSH1 0x00
00001480: SWAP1
00001481: SLOAD
00001482: SWAP1
00001483: PUSH2 0x0100
00001486: EXP
00001487: SWAP1
00001488: DIV
00001489: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000149e: AND
0000149f: SWAP1
000014a0: POP
000014a1: PUSH1 0x00
000014a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014b8: AND
000014b9: DUP2
000014ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014cf: AND
000014d0: SUB
000014d1: PUSH2 0x1511
000014d4: JUMPI
000014d5: DUP3
000014d6: PUSH1 0x40
000014d8: MLOAD
000014d9: PUSH32 0x08545ce200000000000000000000000000000000000000000000000000000000
000014fa: DUP2
000014fb: MSTORE
000014fc: PUSH1 0x04
000014fe: ADD
000014ff: PUSH2 0x1508
00001502: SWAP2
00001503: SWAP1
00001504: PUSH2 0x1f32
00001507: JUMP
00001508: JUMPDEST
00001509: PUSH1 0x40
0000150b: MLOAD
0000150c: DUP1
0000150d: SWAP2
0000150e: SUB
0000150f: SWAP1
00001510: REVERT
00001511: JUMPDEST
00001512: PUSH1 0x00
00001514: PUSH1 0x0a
00001516: PUSH1 0x40
00001518: MLOAD
00001519: DUP1
0000151a: PUSH1 0x60
0000151c: ADD
0000151d: PUSH1 0x40
0000151f: MSTORE
00001520: SWAP1
00001521: DUP2
00001522: PUSH1 0x00
00001524: DUP3
00001525: ADD
00001526: PUSH1 0x00
00001528: SWAP1
00001529: SLOAD
0000152a: SWAP1
0000152b: PUSH2 0x0100
0000152e: EXP
0000152f: SWAP1
00001530: DIV
00001531: PUSH10 0xffffffffffffffffffff
0000153c: AND
0000153d: PUSH10 0xffffffffffffffffffff
00001548: AND
00001549: PUSH10 0xffffffffffffffffffff
00001554: AND
00001555: DUP2
00001556: MSTORE
00001557: PUSH1 0x20
00001559: ADD
0000155a: PUSH1 0x00
0000155c: DUP3
0000155d: ADD
0000155e: PUSH1 0x0a
00001560: SWAP1
00001561: SLOAD
00001562: SWAP1
00001563: PUSH2 0x0100
00001566: EXP
00001567: SWAP1
00001568: DIV
00001569: PUSH10 0xffffffffffffffffffff
00001574: AND
00001575: PUSH10 0xffffffffffffffffffff
00001580: AND
00001581: PUSH10 0xffffffffffffffffffff
0000158c: AND
0000158d: DUP2
0000158e: MSTORE
0000158f: PUSH1 0x20
00001591: ADD
00001592: PUSH1 0x00
00001594: DUP3
00001595: ADD
00001596: PUSH1 0x14
00001598: SWAP1
00001599: SLOAD
0000159a: SWAP1
0000159b: PUSH2 0x0100
0000159e: EXP
0000159f: SWAP1
000015a0: DIV
000015a1: PUSH10 0xffffffffffffffffffff
000015ac: AND
000015ad: PUSH10 0xffffffffffffffffffff
000015b8: AND
000015b9: PUSH10 0xffffffffffffffffffff
000015c4: AND
000015c5: DUP2
000015c6: MSTORE
000015c7: POP
000015c8: POP
000015c9: SWAP1
000015ca: POP
000015cb: PUSH1 0x00
000015cd: DUP2
000015ce: PUSH1 0x00
000015d0: ADD
000015d1: MLOAD
000015d2: PUSH10 0xffffffffffffffffffff
000015dd: AND
000015de: SUB
000015df: PUSH2 0x1684
000015e2: JUMPI
000015e3: NUMBER
000015e4: PUSH1 0x0a
000015e6: PUSH1 0x00
000015e8: ADD
000015e9: PUSH1 0x00
000015eb: PUSH2 0x0100
000015ee: EXP
000015ef: DUP2
000015f0: SLOAD
000015f1: DUP2
000015f2: PUSH10 0xffffffffffffffffffff
000015fd: MUL
000015fe: NOT
000015ff: AND
00001600: SWAP1
00001601: DUP4
00001602: PUSH10 0xffffffffffffffffffff
0000160d: AND
0000160e: MUL
0000160f: OR
00001610: SWAP1
00001611: SSTORE
00001612: POP
00001613: PUSH32 0x65ea327738ef00d189846de71da130b6b863a715475fef1007cfcdebe901c9c3
00001634: NUMBER
00001635: NUMBER
00001636: DUP4
00001637: PUSH1 0x20
00001639: ADD
0000163a: MLOAD
0000163b: PUSH10 0xffffffffffffffffffff
00001646: AND
00001647: PUSH2 0x1650
0000164a: SWAP2
0000164b: SWAP1
0000164c: PUSH2 0x211a
0000164f: JUMP
00001650: JUMPDEST
00001651: NUMBER
00001652: DUP5
00001653: PUSH1 0x40
00001655: ADD
00001656: MLOAD
00001657: PUSH10 0xffffffffffffffffffff
00001662: AND
00001663: PUSH2 0x166c
00001666: SWAP2
00001667: SWAP1
00001668: PUSH2 0x211a
0000166b: JUMP
0000166c: JUMPDEST
0000166d: PUSH1 0x40
0000166f: MLOAD
00001670: PUSH2 0x167b
00001673: SWAP4
00001674: SWAP3
00001675: SWAP2
00001676: SWAP1
00001677: PUSH2 0x231b
0000167a: JUMP
0000167b: JUMPDEST
0000167c: PUSH1 0x40
0000167e: MLOAD
0000167f: DUP1
00001680: SWAP2
00001681: SUB
00001682: SWAP1
00001683: LOG1
00001684: JUMPDEST
00001685: PUSH2 0x16b1
00001688: CALLER
00001689: ADDRESS
0000168a: DUP6
0000168b: DUP6
0000168c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016a1: AND
000016a2: PUSH2 0x1a16
000016a5: SWAP1
000016a6: SWAP4
000016a7: SWAP3
000016a8: SWAP2
000016a9: SWAP1
000016aa: PUSH4 0xffffffff
000016af: AND
000016b0: JUMP
000016b1: JUMPDEST
000016b2: DUP3
000016b3: PUSH1 0x05
000016b5: PUSH1 0x00
000016b7: DUP7
000016b8: DUP2
000016b9: MSTORE
000016ba: PUSH1 0x20
000016bc: ADD
000016bd: SWAP1
000016be: DUP2
000016bf: MSTORE
000016c0: PUSH1 0x20
000016c2: ADD
000016c3: PUSH1 0x00
000016c5: KECCAK256
000016c6: PUSH1 0x00
000016c8: DUP3
000016c9: DUP3
000016ca: SLOAD
000016cb: PUSH2 0x16d4
000016ce: SWAP2
000016cf: SWAP1
000016d0: PUSH2 0x211a
000016d3: JUMP
000016d4: JUMPDEST
000016d5: SWAP3
000016d6: POP
000016d7: POP
000016d8: DUP2
000016d9: SWAP1
000016da: SSTORE
000016db: POP
000016dc: DUP4
000016dd: PUSH32 0x65202b1df9208fceaa02df7da91302293818e5cca094751d2f5fa088f414efae
000016fe: DUP5
000016ff: PUSH1 0x40
00001701: MLOAD
00001702: PUSH2 0x170b
00001705: SWAP2
00001706: SWAP1
00001707: PUSH2 0x1f32
0000170a: JUMP
0000170b: JUMPDEST
0000170c: PUSH1 0x40
0000170e: MLOAD
0000170f: DUP1
00001710: SWAP2
00001711: SUB
00001712: SWAP1
00001713: LOG2
00001714: POP
00001715: POP
00001716: POP
00001717: POP
00001718: JUMP
00001719: JUMPDEST
0000171a: PUSH2 0x1721
0000171d: PUSH2 0x1a98
00001720: JUMP
00001721: JUMPDEST
00001722: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001737: AND
00001738: PUSH2 0x173f
0000173b: PUSH2 0x09ee
0000173e: JUMP
0000173f: JUMPDEST
00001740: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001755: AND
00001756: EQ
00001757: PUSH2 0x179e
0000175a: JUMPI
0000175b: PUSH2 0x1762
0000175e: PUSH2 0x1a98
00001761: JUMP
00001762: JUMPDEST
00001763: PUSH1 0x40
00001765: MLOAD
00001766: PUSH32 0x118cdaa700000000000000000000000000000000000000000000000000000000
00001787: DUP2
00001788: MSTORE
00001789: PUSH1 0x04
0000178b: ADD
0000178c: PUSH2 0x1795
0000178f: SWAP2
00001790: SWAP1
00001791: PUSH2 0x2012
00001794: JUMP
00001795: JUMPDEST
00001796: PUSH1 0x40
00001798: MLOAD
00001799: DUP1
0000179a: SWAP2
0000179b: SUB
0000179c: SWAP1
0000179d: REVERT
0000179e: JUMPDEST
0000179f: JUMP
000017a0: JUMPDEST
000017a1: PUSH2 0x17a8
000017a4: PUSH2 0x0658
000017a7: JUMP
000017a8: JUMPDEST
000017a9: ISZERO
000017aa: PUSH2 0x17df
000017ad: JUMPI
000017ae: PUSH1 0x40
000017b0: MLOAD
000017b1: PUSH32 0xd93c066500000000000000000000000000000000000000000000000000000000
000017d2: DUP2
000017d3: MSTORE
000017d4: PUSH1 0x04
000017d6: ADD
000017d7: PUSH1 0x40
000017d9: MLOAD
000017da: DUP1
000017db: SWAP2
000017dc: SUB
000017dd: SWAP1
000017de: REVERT
000017df: JUMPDEST
000017e0: JUMP
000017e1: JUMPDEST
000017e2: PUSH2 0x17e9
000017e5: PUSH2 0x17a0
000017e8: JUMP
000017e9: JUMPDEST
000017ea: PUSH1 0x01
000017ec: PUSH1 0x02
000017ee: PUSH1 0x00
000017f0: PUSH2 0x0100
000017f3: EXP
000017f4: DUP2
000017f5: SLOAD
000017f6: DUP2
000017f7: PUSH1 0xff
000017f9: MUL
000017fa: NOT
000017fb: AND
000017fc: SWAP1
000017fd: DUP4
000017fe: ISZERO
000017ff: ISZERO
00001800: MUL
00001801: OR
00001802: SWAP1
00001803: SSTORE
00001804: POP
00001805: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
00001826: PUSH2 0x182d
00001829: PUSH2 0x1a98
0000182c: JUMP
0000182d: JUMPDEST
0000182e: PUSH1 0x40
00001830: MLOAD
00001831: PUSH2 0x183a
00001834: SWAP2
00001835: SWAP1
00001836: PUSH2 0x2012
00001839: JUMP
0000183a: JUMPDEST
0000183b: PUSH1 0x40
0000183d: MLOAD
0000183e: DUP1
0000183f: SWAP2
00001840: SUB
00001841: SWAP1
00001842: LOG1
00001843: JUMP
00001844: JUMPDEST
00001845: PUSH1 0x00
00001847: DUP1
00001848: PUSH1 0x00
0000184a: SWAP1
0000184b: SLOAD
0000184c: SWAP1
0000184d: PUSH2 0x0100
00001850: EXP
00001851: SWAP1
00001852: DIV
00001853: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001868: AND
00001869: SWAP1
0000186a: POP
0000186b: DUP2
0000186c: PUSH1 0x00
0000186e: DUP1
0000186f: PUSH2 0x0100
00001872: EXP
00001873: DUP2
00001874: SLOAD
00001875: DUP2
00001876: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000188b: MUL
0000188c: NOT
0000188d: AND
0000188e: SWAP1
0000188f: DUP4
00001890: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018a5: AND
000018a6: MUL
000018a7: OR
000018a8: SWAP1
000018a9: SSTORE
000018aa: POP
000018ab: DUP2
000018ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018c1: AND
000018c2: DUP2
000018c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018d8: AND
000018d9: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000018fa: PUSH1 0x40
000018fc: MLOAD
000018fd: PUSH1 0x40
000018ff: MLOAD
00001900: DUP1
00001901: SWAP2
00001902: SUB
00001903: SWAP1
00001904: LOG3
00001905: POP
00001906: POP
00001907: JUMP
00001908: JUMPDEST
00001909: PUSH1 0x02
0000190b: PUSH1 0x01
0000190d: SLOAD
0000190e: SUB
0000190f: PUSH2 0x1944
00001912: JUMPI
00001913: PUSH1 0x40
00001915: MLOAD
00001916: PUSH32 0x3ee5aeb500000000000000000000000000000000000000000000000000000000
00001937: DUP2
00001938: MSTORE
00001939: PUSH1 0x04
0000193b: ADD
0000193c: PUSH1 0x40
0000193e: MLOAD
0000193f: DUP1
00001940: SWAP2
00001941: SUB
00001942: SWAP1
00001943: REVERT
00001944: JUMPDEST
00001945: PUSH1 0x02
00001947: PUSH1 0x01
00001949: DUP2
0000194a: SWAP1
0000194b: SSTORE
0000194c: POP
0000194d: JUMP
0000194e: JUMPDEST
0000194f: PUSH1 0x01
00001951: DUP1
00001952: DUP2
00001953: SWAP1
00001954: SSTORE
00001955: POP
00001956: JUMP
00001957: JUMPDEST
00001958: PUSH2 0x19d1
0000195b: DUP4
0000195c: DUP5
0000195d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001972: AND
00001973: PUSH4 0xa9059cbb
00001978: DUP6
00001979: DUP6
0000197a: PUSH1 0x40
0000197c: MLOAD
0000197d: PUSH1 0x24
0000197f: ADD
00001980: PUSH2 0x198a
00001983: SWAP3
00001984: SWAP2
00001985: SWAP1
00001986: PUSH2 0x2182
00001989: JUMP
0000198a: JUMPDEST
0000198b: PUSH1 0x40
0000198d: MLOAD
0000198e: PUSH1 0x20
00001990: DUP2
00001991: DUP4
00001992: SUB
00001993: SUB
00001994: DUP2
00001995: MSTORE
00001996: SWAP1
00001997: PUSH1 0x40
00001999: MSTORE
0000199a: SWAP2
0000199b: POP
0000199c: PUSH1 0xe0
0000199e: SHL
0000199f: PUSH1 0x20
000019a1: DUP3
000019a2: ADD
000019a3: DUP1
000019a4: MLOAD
000019a5: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000019c2: DUP4
000019c3: DUP2
000019c4: DUP4
000019c5: AND
000019c6: OR
000019c7: DUP4
000019c8: MSTORE
000019c9: POP
000019ca: POP
000019cb: POP
000019cc: POP
000019cd: PUSH2 0x1aa0
000019d0: JUMP
000019d1: JUMPDEST
000019d2: POP
000019d3: POP
000019d4: POP
000019d5: JUMP
000019d6: JUMPDEST
000019d7: PUSH2 0x19de
000019da: PUSH2 0x0658
000019dd: JUMP
000019de: JUMPDEST
000019df: PUSH2 0x1a14
000019e2: JUMPI
000019e3: PUSH1 0x40
000019e5: MLOAD
000019e6: PUSH32 0x8dfc202b00000000000000000000000000000000000000000000000000000000
00001a07: DUP2
00001a08: MSTORE
00001a09: PUSH1 0x04
00001a0b: ADD
00001a0c: PUSH1 0x40
00001a0e: MLOAD
00001a0f: DUP1
00001a10: SWAP2
00001a11: SUB
00001a12: SWAP1
00001a13: REVERT
00001a14: JUMPDEST
00001a15: JUMP
00001a16: JUMPDEST
00001a17: PUSH2 0x1a92
00001a1a: DUP5
00001a1b: DUP6
00001a1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a31: AND
00001a32: PUSH4 0x23b872dd
00001a37: DUP7
00001a38: DUP7
00001a39: DUP7
00001a3a: PUSH1 0x40
00001a3c: MLOAD
00001a3d: PUSH1 0x24
00001a3f: ADD
00001a40: PUSH2 0x1a4b
00001a43: SWAP4
00001a44: SWAP3
00001a45: SWAP2
00001a46: SWAP1
00001a47: PUSH2 0x2204
00001a4a: JUMP
00001a4b: JUMPDEST
00001a4c: PUSH1 0x40
00001a4e: MLOAD
00001a4f: PUSH1 0x20
00001a51: DUP2
00001a52: DUP4
00001a53: SUB
00001a54: SUB
00001a55: DUP2
00001a56: MSTORE
00001a57: SWAP1
00001a58: PUSH1 0x40
00001a5a: MSTORE
00001a5b: SWAP2
00001a5c: POP
00001a5d: PUSH1 0xe0
00001a5f: SHL
00001a60: PUSH1 0x20
00001a62: DUP3
00001a63: ADD
00001a64: DUP1
00001a65: MLOAD
00001a66: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001a83: DUP4
00001a84: DUP2
00001a85: DUP4
00001a86: AND
00001a87: OR
00001a88: DUP4
00001a89: MSTORE
00001a8a: POP
00001a8b: POP
00001a8c: POP
00001a8d: POP
00001a8e: PUSH2 0x1aa0
00001a91: JUMP
00001a92: JUMPDEST
00001a93: POP
00001a94: POP
00001a95: POP
00001a96: POP
00001a97: JUMP
00001a98: JUMPDEST
00001a99: PUSH1 0x00
00001a9b: CALLER
00001a9c: SWAP1
00001a9d: POP
00001a9e: SWAP1
00001a9f: JUMP
00001aa0: JUMPDEST
00001aa1: PUSH1 0x00
00001aa3: PUSH2 0x1acb
00001aa6: DUP3
00001aa7: DUP5
00001aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001abd: AND
00001abe: PUSH2 0x1b37
00001ac1: SWAP1
00001ac2: SWAP2
00001ac3: SWAP1
00001ac4: PUSH4 0xffffffff
00001ac9: AND
00001aca: JUMP
00001acb: JUMPDEST
00001acc: SWAP1
00001acd: POP
00001ace: PUSH1 0x00
00001ad0: DUP2
00001ad1: MLOAD
00001ad2: EQ
00001ad3: ISZERO
00001ad4: DUP1
00001ad5: ISZERO
00001ad6: PUSH2 0x1af0
00001ad9: JUMPI
00001ada: POP
00001adb: DUP1
00001adc: DUP1
00001add: PUSH1 0x20
00001adf: ADD
00001ae0: SWAP1
00001ae1: MLOAD
00001ae2: DUP2
00001ae3: ADD
00001ae4: SWAP1
00001ae5: PUSH2 0x1aee
00001ae8: SWAP2
00001ae9: SWAP1
00001aea: PUSH2 0x21d7
00001aed: JUMP
00001aee: JUMPDEST
00001aef: ISZERO
00001af0: JUMPDEST
00001af1: ISZERO
00001af2: PUSH2 0x1b32
00001af5: JUMPI
00001af6: DUP3
00001af7: PUSH1 0x40
00001af9: MLOAD
00001afa: PUSH32 0x5274afe700000000000000000000000000000000000000000000000000000000
00001b1b: DUP2
00001b1c: MSTORE
00001b1d: PUSH1 0x04
00001b1f: ADD
00001b20: PUSH2 0x1b29
00001b23: SWAP2
00001b24: SWAP1
00001b25: PUSH2 0x2012
00001b28: JUMP
00001b29: JUMPDEST
00001b2a: PUSH1 0x40
00001b2c: MLOAD
00001b2d: DUP1
00001b2e: SWAP2
00001b2f: SUB
00001b30: SWAP1
00001b31: REVERT
00001b32: JUMPDEST
00001b33: POP
00001b34: POP
00001b35: POP
00001b36: JUMP
00001b37: JUMPDEST
00001b38: PUSH1 0x60
00001b3a: PUSH2 0x1b45
00001b3d: DUP4
00001b3e: DUP4
00001b3f: PUSH1 0x00
00001b41: PUSH2 0x1b4d
00001b44: JUMP
00001b45: JUMPDEST
00001b46: SWAP1
00001b47: POP
00001b48: SWAP3
00001b49: SWAP2
00001b4a: POP
00001b4b: POP
00001b4c: JUMP
00001b4d: JUMPDEST
00001b4e: PUSH1 0x60
00001b50: DUP2
00001b51: SELFBALANCE
00001b52: LT
00001b53: ISZERO
00001b54: PUSH2 0x1b94
00001b57: JUMPI
00001b58: ADDRESS
00001b59: PUSH1 0x40
00001b5b: MLOAD
00001b5c: PUSH32 0xcd78605900000000000000000000000000000000000000000000000000000000
00001b7d: DUP2
00001b7e: MSTORE
00001b7f: PUSH1 0x04
00001b81: ADD
00001b82: PUSH2 0x1b8b
00001b85: SWAP2
00001b86: SWAP1
00001b87: PUSH2 0x2012
00001b8a: JUMP
00001b8b: JUMPDEST
00001b8c: PUSH1 0x40
00001b8e: MLOAD
00001b8f: DUP1
00001b90: SWAP2
00001b91: SUB
00001b92: SWAP1
00001b93: REVERT
00001b94: JUMPDEST
00001b95: PUSH1 0x00
00001b97: DUP1
00001b98: DUP6
00001b99: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bae: AND
00001baf: DUP5
00001bb0: DUP7
00001bb1: PUSH1 0x40
00001bb3: MLOAD
00001bb4: PUSH2 0x1bbd
00001bb7: SWAP2
00001bb8: SWAP1
00001bb9: PUSH2 0x23c3
00001bbc: JUMP
00001bbd: JUMPDEST
00001bbe: PUSH1 0x00
00001bc0: PUSH1 0x40
00001bc2: MLOAD
00001bc3: DUP1
00001bc4: DUP4
00001bc5: SUB
00001bc6: DUP2
00001bc7: DUP6
00001bc8: DUP8
00001bc9: GAS
00001bca: CALL
00001bcb: SWAP3
00001bcc: POP
00001bcd: POP
00001bce: POP
00001bcf: RETURNDATASIZE
00001bd0: DUP1
00001bd1: PUSH1 0x00
00001bd3: DUP2
00001bd4: EQ
00001bd5: PUSH2 0x1bfa
00001bd8: JUMPI
00001bd9: PUSH1 0x40
00001bdb: MLOAD
00001bdc: SWAP2
00001bdd: POP
00001bde: PUSH1 0x1f
00001be0: NOT
00001be1: PUSH1 0x3f
00001be3: RETURNDATASIZE
00001be4: ADD
00001be5: AND
00001be6: DUP3
00001be7: ADD
00001be8: PUSH1 0x40
00001bea: MSTORE
00001beb: RETURNDATASIZE
00001bec: DUP3
00001bed: MSTORE
00001bee: RETURNDATASIZE
00001bef: PUSH1 0x00
00001bf1: PUSH1 0x20
00001bf3: DUP5
00001bf4: ADD
00001bf5: RETURNDATACOPY
00001bf6: PUSH2 0x1bff
00001bf9: JUMP
00001bfa: JUMPDEST
00001bfb: PUSH1 0x60
00001bfd: SWAP2
00001bfe: POP
00001bff: JUMPDEST
00001c00: POP
00001c01: SWAP2
00001c02: POP
00001c03: SWAP2
00001c04: POP
00001c05: PUSH2 0x1c0f
00001c08: DUP7
00001c09: DUP4
00001c0a: DUP4
00001c0b: PUSH2 0x1c1a
00001c0e: JUMP
00001c0f: JUMPDEST
00001c10: SWAP3
00001c11: POP
00001c12: POP
00001c13: POP
00001c14: SWAP4
00001c15: SWAP3
00001c16: POP
00001c17: POP
00001c18: POP
00001c19: JUMP
00001c1a: JUMPDEST
00001c1b: PUSH1 0x60
00001c1d: DUP3
00001c1e: PUSH2 0x1c2f
00001c21: JUMPI
00001c22: PUSH2 0x1c2a
00001c25: DUP3
00001c26: PUSH2 0x1ca9
00001c29: JUMP
00001c2a: JUMPDEST
00001c2b: PUSH2 0x1ca1
00001c2e: JUMP
00001c2f: JUMPDEST
00001c30: PUSH1 0x00
00001c32: DUP3
00001c33: MLOAD
00001c34: EQ
00001c35: DUP1
00001c36: ISZERO
00001c37: PUSH2 0x1c57
00001c3a: JUMPI
00001c3b: POP
00001c3c: PUSH1 0x00
00001c3e: DUP5
00001c3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c54: AND
00001c55: EXTCODESIZE
00001c56: EQ
00001c57: JUMPDEST
00001c58: ISZERO
00001c59: PUSH2 0x1c99
00001c5c: JUMPI
00001c5d: DUP4
00001c5e: PUSH1 0x40
00001c60: MLOAD
00001c61: PUSH32 0x9996b31500000000000000000000000000000000000000000000000000000000
00001c82: DUP2
00001c83: MSTORE
00001c84: PUSH1 0x04
00001c86: ADD
00001c87: PUSH2 0x1c90
00001c8a: SWAP2
00001c8b: SWAP1
00001c8c: PUSH2 0x2012
00001c8f: JUMP
00001c90: JUMPDEST
00001c91: PUSH1 0x40
00001c93: MLOAD
00001c94: DUP1
00001c95: SWAP2
00001c96: SUB
00001c97: SWAP1
00001c98: REVERT
00001c99: JUMPDEST
00001c9a: DUP2
00001c9b: SWAP1
00001c9c: POP
00001c9d: PUSH2 0x1ca2
00001ca0: JUMP
00001ca1: JUMPDEST
00001ca2: JUMPDEST
00001ca3: SWAP4
00001ca4: SWAP3
00001ca5: POP
00001ca6: POP
00001ca7: POP
00001ca8: JUMP
00001ca9: JUMPDEST
00001caa: PUSH1 0x00
00001cac: DUP2
00001cad: MLOAD
00001cae: GT
00001caf: ISZERO
00001cb0: PUSH2 0x1cbc
00001cb3: JUMPI
00001cb4: DUP1
00001cb5: MLOAD
00001cb6: DUP1
00001cb7: DUP3
00001cb8: PUSH1 0x20
00001cba: ADD
00001cbb: REVERT
00001cbc: JUMPDEST
00001cbd: PUSH1 0x40
00001cbf: MLOAD
00001cc0: PUSH32 0x1425ea4200000000000000000000000000000000000000000000000000000000
00001ce1: DUP2
00001ce2: MSTORE
00001ce3: PUSH1 0x04
00001ce5: ADD
00001ce6: PUSH1 0x40
00001ce8: MLOAD
00001ce9: DUP1
00001cea: SWAP2
00001ceb: SUB
00001cec: SWAP1
00001ced: REVERT
00001cee: JUMPDEST
00001cef: PUSH1 0x00
00001cf1: DUP1
00001cf2: REVERT
00001cf3: JUMPDEST
00001cf4: PUSH1 0x00
00001cf6: DUP2
00001cf7: SWAP1
00001cf8: POP
00001cf9: SWAP2
00001cfa: SWAP1
00001cfb: POP
00001cfc: JUMP
00001cfd: JUMPDEST
00001cfe: PUSH2 0x1d06
00001d01: DUP2
00001d02: PUSH2 0x1cf3
00001d05: JUMP
00001d06: JUMPDEST
00001d07: DUP2
00001d08: EQ
00001d09: PUSH2 0x1d11
00001d0c: JUMPI
00001d0d: PUSH1 0x00
00001d0f: DUP1
00001d10: REVERT
00001d11: JUMPDEST
00001d12: POP
00001d13: JUMP
00001d14: JUMPDEST
00001d15: PUSH1 0x00
00001d17: DUP2
00001d18: CALLDATALOAD
00001d19: SWAP1
00001d1a: POP
00001d1b: PUSH2 0x1d23
00001d1e: DUP2
00001d1f: PUSH2 0x1cfd
00001d22: JUMP
00001d23: JUMPDEST
00001d24: SWAP3
00001d25: SWAP2
00001d26: POP
00001d27: POP
00001d28: JUMP
00001d29: JUMPDEST
00001d2a: PUSH1 0x00
00001d2c: PUSH1 0x20
00001d2e: DUP3
00001d2f: DUP5
00001d30: SUB
00001d31: SLT
00001d32: ISZERO
00001d33: PUSH2 0x1d3f
00001d36: JUMPI
00001d37: PUSH2 0x1d3e
00001d3a: PUSH2 0x1cee
00001d3d: JUMP
00001d3e: JUMPDEST
00001d3f: JUMPDEST
00001d40: PUSH1 0x00
00001d42: PUSH2 0x1d4d
00001d45: DUP5
00001d46: DUP3
00001d47: DUP6
00001d48: ADD
00001d49: PUSH2 0x1d14
00001d4c: JUMP
00001d4d: JUMPDEST
00001d4e: SWAP2
00001d4f: POP
00001d50: POP
00001d51: SWAP3
00001d52: SWAP2
00001d53: POP
00001d54: POP
00001d55: JUMP
00001d56: JUMPDEST
00001d57: PUSH1 0x00
00001d59: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d6e: DUP3
00001d6f: AND
00001d70: SWAP1
00001d71: POP
00001d72: SWAP2
00001d73: SWAP1
00001d74: POP
00001d75: JUMP
00001d76: JUMPDEST
00001d77: PUSH1 0x00
00001d79: DUP2
00001d7a: SWAP1
00001d7b: POP
00001d7c: SWAP2
00001d7d: SWAP1
00001d7e: POP
00001d7f: JUMP
00001d80: JUMPDEST
00001d81: PUSH1 0x00
00001d83: PUSH2 0x1d9b
00001d86: PUSH2 0x1d96
00001d89: PUSH2 0x1d91
00001d8c: DUP5
00001d8d: PUSH2 0x1d56
00001d90: JUMP
00001d91: JUMPDEST
00001d92: PUSH2 0x1d76
00001d95: JUMP
00001d96: JUMPDEST
00001d97: PUSH2 0x1d56
00001d9a: JUMP
00001d9b: JUMPDEST
00001d9c: SWAP1
00001d9d: POP
00001d9e: SWAP2
00001d9f: SWAP1
00001da0: POP
00001da1: JUMP
00001da2: JUMPDEST
00001da3: PUSH1 0x00
00001da5: PUSH2 0x1dad
00001da8: DUP3
00001da9: PUSH2 0x1d80
00001dac: JUMP
00001dad: JUMPDEST
00001dae: SWAP1
00001daf: POP
00001db0: SWAP2
00001db1: SWAP1
00001db2: POP
00001db3: JUMP
00001db4: JUMPDEST
00001db5: PUSH1 0x00
00001db7: PUSH2 0x1dbf
00001dba: DUP3
00001dbb: PUSH2 0x1da2
00001dbe: JUMP
00001dbf: JUMPDEST
00001dc0: SWAP1
00001dc1: POP
00001dc2: SWAP2
00001dc3: SWAP1
00001dc4: POP
00001dc5: JUMP
00001dc6: JUMPDEST
00001dc7: PUSH2 0x1dcf
00001dca: DUP2
00001dcb: PUSH2 0x1db4
00001dce: JUMP
00001dcf: JUMPDEST
00001dd0: DUP3
00001dd1: MSTORE
00001dd2: POP
00001dd3: POP
00001dd4: JUMP
00001dd5: JUMPDEST
00001dd6: PUSH1 0x00
00001dd8: PUSH1 0x20
00001dda: DUP3
00001ddb: ADD
00001ddc: SWAP1
00001ddd: POP
00001dde: PUSH2 0x1dea
00001de1: PUSH1 0x00
00001de3: DUP4
00001de4: ADD
00001de5: DUP5
00001de6: PUSH2 0x1dc6
00001de9: JUMP
00001dea: JUMPDEST
00001deb: SWAP3
00001dec: SWAP2
00001ded: POP
00001dee: POP
00001def: JUMP
00001df0: JUMPDEST
00001df1: PUSH1 0x00
00001df3: PUSH10 0xffffffffffffffffffff
00001dfe: DUP3
00001dff: AND
00001e00: SWAP1
00001e01: POP
00001e02: SWAP2
00001e03: SWAP1
00001e04: POP
00001e05: JUMP
00001e06: JUMPDEST
00001e07: PUSH2 0x1e0f
00001e0a: DUP2
00001e0b: PUSH2 0x1df0
00001e0e: JUMP
00001e0f: JUMPDEST
00001e10: DUP2
00001e11: EQ
00001e12: PUSH2 0x1e1a
00001e15: JUMPI
00001e16: PUSH1 0x00
00001e18: DUP1
00001e19: REVERT
00001e1a: JUMPDEST
00001e1b: POP
00001e1c: JUMP
00001e1d: JUMPDEST
00001e1e: PUSH1 0x00
00001e20: DUP2
00001e21: CALLDATALOAD
00001e22: SWAP1
00001e23: POP
00001e24: PUSH2 0x1e2c
00001e27: DUP2
00001e28: PUSH2 0x1e06
00001e2b: JUMP
00001e2c: JUMPDEST
00001e2d: SWAP3
00001e2e: SWAP2
00001e2f: POP
00001e30: POP
00001e31: JUMP
00001e32: JUMPDEST
00001e33: PUSH1 0x00
00001e35: DUP1
00001e36: PUSH1 0x40
00001e38: DUP4
00001e39: DUP6
00001e3a: SUB
00001e3b: SLT
00001e3c: ISZERO
00001e3d: PUSH2 0x1e49
00001e40: JUMPI
00001e41: PUSH2 0x1e48
00001e44: PUSH2 0x1cee
00001e47: JUMP
00001e48: JUMPDEST
00001e49: JUMPDEST
00001e4a: PUSH1 0x00
00001e4c: PUSH2 0x1e57
00001e4f: DUP6
00001e50: DUP3
00001e51: DUP7
00001e52: ADD
00001e53: PUSH2 0x1e1d
00001e56: JUMP
00001e57: JUMPDEST
00001e58: SWAP3
00001e59: POP
00001e5a: POP
00001e5b: PUSH1 0x20
00001e5d: PUSH2 0x1e68
00001e60: DUP6
00001e61: DUP3
00001e62: DUP7
00001e63: ADD
00001e64: PUSH2 0x1e1d
00001e67: JUMP
00001e68: JUMPDEST
00001e69: SWAP2
00001e6a: POP
00001e6b: POP
00001e6c: SWAP3
00001e6d: POP
00001e6e: SWAP3
00001e6f: SWAP1
00001e70: POP
00001e71: JUMP
00001e72: JUMPDEST
00001e73: PUSH2 0x1e7b
00001e76: DUP2
00001e77: PUSH2 0x1df0
00001e7a: JUMP
00001e7b: JUMPDEST
00001e7c: DUP3
00001e7d: MSTORE
00001e7e: POP
00001e7f: POP
00001e80: JUMP
00001e81: JUMPDEST
00001e82: PUSH1 0x00
00001e84: PUSH1 0x60
00001e86: DUP3
00001e87: ADD
00001e88: SWAP1
00001e89: POP
00001e8a: PUSH2 0x1e96
00001e8d: PUSH1 0x00
00001e8f: DUP4
00001e90: ADD
00001e91: DUP7
00001e92: PUSH2 0x1e72
00001e95: JUMP
00001e96: JUMPDEST
00001e97: PUSH2 0x1ea3
00001e9a: PUSH1 0x20
00001e9c: DUP4
00001e9d: ADD
00001e9e: DUP6
00001e9f: PUSH2 0x1e72
00001ea2: JUMP
00001ea3: JUMPDEST
00001ea4: PUSH2 0x1eb0
00001ea7: PUSH1 0x40
00001ea9: DUP4
00001eaa: ADD
00001eab: DUP5
00001eac: PUSH2 0x1e72
00001eaf: JUMP
00001eb0: JUMPDEST
00001eb1: SWAP5
00001eb2: SWAP4
00001eb3: POP
00001eb4: POP
00001eb5: POP
00001eb6: POP
00001eb7: JUMP
00001eb8: JUMPDEST
00001eb9: PUSH1 0x00
00001ebb: PUSH2 0x1ec3
00001ebe: DUP3
00001ebf: PUSH2 0x1d56
00001ec2: JUMP
00001ec3: JUMPDEST
00001ec4: SWAP1
00001ec5: POP
00001ec6: SWAP2
00001ec7: SWAP1
00001ec8: POP
00001ec9: JUMP
00001eca: JUMPDEST
00001ecb: PUSH2 0x1ed3
00001ece: DUP2
00001ecf: PUSH2 0x1eb8
00001ed2: JUMP
00001ed3: JUMPDEST
00001ed4: DUP2
00001ed5: EQ
00001ed6: PUSH2 0x1ede
00001ed9: JUMPI
00001eda: PUSH1 0x00
00001edc: DUP1
00001edd: REVERT
00001ede: JUMPDEST
00001edf: POP
00001ee0: JUMP
00001ee1: JUMPDEST
00001ee2: PUSH1 0x00
00001ee4: DUP2
00001ee5: CALLDATALOAD
00001ee6: SWAP1
00001ee7: POP
00001ee8: PUSH2 0x1ef0
00001eeb: DUP2
00001eec: PUSH2 0x1eca
00001eef: JUMP
00001ef0: JUMPDEST
00001ef1: SWAP3
00001ef2: SWAP2
00001ef3: POP
00001ef4: POP
00001ef5: JUMP
00001ef6: JUMPDEST
00001ef7: PUSH1 0x00
00001ef9: PUSH1 0x20
00001efb: DUP3
00001efc: DUP5
00001efd: SUB
00001efe: SLT
00001eff: ISZERO
00001f00: PUSH2 0x1f0c
00001f03: JUMPI
00001f04: PUSH2 0x1f0b
00001f07: PUSH2 0x1cee
00001f0a: JUMP
00001f0b: JUMPDEST
00001f0c: JUMPDEST
00001f0d: PUSH1 0x00
00001f0f: PUSH2 0x1f1a
00001f12: DUP5
00001f13: DUP3
00001f14: DUP6
00001f15: ADD
00001f16: PUSH2 0x1ee1
00001f19: JUMP
00001f1a: JUMPDEST
00001f1b: SWAP2
00001f1c: POP
00001f1d: POP
00001f1e: SWAP3
00001f1f: SWAP2
00001f20: POP
00001f21: POP
00001f22: JUMP
00001f23: JUMPDEST
00001f24: PUSH2 0x1f2c
00001f27: DUP2
00001f28: PUSH2 0x1cf3
00001f2b: JUMP
00001f2c: JUMPDEST
00001f2d: DUP3
00001f2e: MSTORE
00001f2f: POP
00001f30: POP
00001f31: JUMP
00001f32: JUMPDEST
00001f33: PUSH1 0x00
00001f35: PUSH1 0x20
00001f37: DUP3
00001f38: ADD
00001f39: SWAP1
00001f3a: POP
00001f3b: PUSH2 0x1f47
00001f3e: PUSH1 0x00
00001f40: DUP4
00001f41: ADD
00001f42: DUP5
00001f43: PUSH2 0x1f23
00001f46: JUMP
00001f47: JUMPDEST
00001f48: SWAP3
00001f49: SWAP2
00001f4a: POP
00001f4b: POP
00001f4c: JUMP
00001f4d: JUMPDEST
00001f4e: PUSH1 0x00
00001f50: DUP2
00001f51: ISZERO
00001f52: ISZERO
00001f53: SWAP1
00001f54: POP
00001f55: SWAP2
00001f56: SWAP1
00001f57: POP
00001f58: JUMP
00001f59: JUMPDEST
00001f5a: PUSH2 0x1f62
00001f5d: DUP2
00001f5e: PUSH2 0x1f4d
00001f61: JUMP
00001f62: JUMPDEST
00001f63: DUP3
00001f64: MSTORE
00001f65: POP
00001f66: POP
00001f67: JUMP
00001f68: JUMPDEST
00001f69: PUSH1 0x00
00001f6b: PUSH1 0x20
00001f6d: DUP3
00001f6e: ADD
00001f6f: SWAP1
00001f70: POP
00001f71: PUSH2 0x1f7d
00001f74: PUSH1 0x00
00001f76: DUP4
00001f77: ADD
00001f78: DUP5
00001f79: PUSH2 0x1f59
00001f7c: JUMP
00001f7d: JUMPDEST
00001f7e: SWAP3
00001f7f: SWAP2
00001f80: POP
00001f81: POP
00001f82: JUMP
00001f83: JUMPDEST
00001f84: PUSH1 0x00
00001f86: DUP1
00001f87: PUSH1 0x40
00001f89: DUP4
00001f8a: DUP6
00001f8b: SUB
00001f8c: SLT
00001f8d: ISZERO
00001f8e: PUSH2 0x1f9a
00001f91: JUMPI
00001f92: PUSH2 0x1f99
00001f95: PUSH2 0x1cee
00001f98: JUMP
00001f99: JUMPDEST
00001f9a: JUMPDEST
00001f9b: PUSH1 0x00
00001f9d: PUSH2 0x1fa8
00001fa0: DUP6
00001fa1: DUP3
00001fa2: DUP7
00001fa3: ADD
00001fa4: PUSH2 0x1ee1
00001fa7: JUMP
00001fa8: JUMPDEST
00001fa9: SWAP3
00001faa: POP
00001fab: POP
00001fac: PUSH1 0x20
00001fae: PUSH2 0x1fb9
00001fb1: DUP6
00001fb2: DUP3
00001fb3: DUP7
00001fb4: ADD
00001fb5: PUSH2 0x1d14
00001fb8: JUMP
00001fb9: JUMPDEST
00001fba: SWAP2
00001fbb: POP
00001fbc: POP
00001fbd: SWAP3
00001fbe: POP
00001fbf: SWAP3
00001fc0: SWAP1
00001fc1: POP
00001fc2: JUMP
00001fc3: JUMPDEST
00001fc4: PUSH1 0x00
00001fc6: DUP1
00001fc7: PUSH1 0x40
00001fc9: DUP4
00001fca: DUP6
00001fcb: SUB
00001fcc: SLT
00001fcd: ISZERO
00001fce: PUSH2 0x1fda
00001fd1: JUMPI
00001fd2: PUSH2 0x1fd9
00001fd5: PUSH2 0x1cee
00001fd8: JUMP
00001fd9: JUMPDEST
00001fda: JUMPDEST
00001fdb: PUSH1 0x00
00001fdd: PUSH2 0x1fe8
00001fe0: DUP6
00001fe1: DUP3
00001fe2: DUP7
00001fe3: ADD
00001fe4: PUSH2 0x1d14
00001fe7: JUMP
00001fe8: JUMPDEST
00001fe9: SWAP3
00001fea: POP
00001feb: POP
00001fec: PUSH1 0x20
00001fee: PUSH2 0x1ff9
00001ff1: DUP6
00001ff2: DUP3
00001ff3: DUP7
00001ff4: ADD
00001ff5: PUSH2 0x1ee1
00001ff8: JUMP
00001ff9: JUMPDEST
00001ffa: SWAP2
00001ffb: POP
00001ffc: POP
00001ffd: SWAP3
00001ffe: POP
00001fff: SWAP3
00002000: SWAP1
00002001: POP
00002002: JUMP
00002003: JUMPDEST
00002004: PUSH2 0x200c
00002007: DUP2
00002008: PUSH2 0x1eb8
0000200b: JUMP
0000200c: JUMPDEST
0000200d: DUP3
0000200e: MSTORE
0000200f: POP
00002010: POP
00002011: JUMP
00002012: JUMPDEST
00002013: PUSH1 0x00
00002015: PUSH1 0x20
00002017: DUP3
00002018: ADD
00002019: SWAP1
0000201a: POP
0000201b: PUSH2 0x2027
0000201e: PUSH1 0x00
00002020: DUP4
00002021: ADD
00002022: DUP5
00002023: PUSH2 0x2003
00002026: JUMP
00002027: JUMPDEST
00002028: SWAP3
00002029: SWAP2
0000202a: POP
0000202b: POP
0000202c: JUMP
0000202d: JUMPDEST
0000202e: PUSH1 0x00
00002030: PUSH2 0x2038
00002033: DUP3
00002034: PUSH2 0x1eb8
00002037: JUMP
00002038: JUMPDEST
00002039: SWAP1
0000203a: POP
0000203b: SWAP2
0000203c: SWAP1
0000203d: POP
0000203e: JUMP
0000203f: JUMPDEST
00002040: PUSH2 0x2048
00002043: DUP2
00002044: PUSH2 0x202d
00002047: JUMP
00002048: JUMPDEST
00002049: DUP2
0000204a: EQ
0000204b: PUSH2 0x2053
0000204e: JUMPI
0000204f: PUSH1 0x00
00002051: DUP1
00002052: REVERT
00002053: JUMPDEST
00002054: POP
00002055: JUMP
00002056: JUMPDEST
00002057: PUSH1 0x00
00002059: DUP2
0000205a: CALLDATALOAD
0000205b: SWAP1
0000205c: POP
0000205d: PUSH2 0x2065
00002060: DUP2
00002061: PUSH2 0x203f
00002064: JUMP
00002065: JUMPDEST
00002066: SWAP3
00002067: SWAP2
00002068: POP
00002069: POP
0000206a: JUMP
0000206b: JUMPDEST
0000206c: PUSH1 0x00
0000206e: DUP1
0000206f: PUSH1 0x40
00002071: DUP4
00002072: DUP6
00002073: SUB
00002074: SLT
00002075: ISZERO
00002076: PUSH2 0x2082
00002079: JUMPI
0000207a: PUSH2 0x2081
0000207d: PUSH2 0x1cee
00002080: JUMP
00002081: JUMPDEST
00002082: JUMPDEST
00002083: PUSH1 0x00
00002085: PUSH2 0x2090
00002088: DUP6
00002089: DUP3
0000208a: DUP7
0000208b: ADD
0000208c: PUSH2 0x2056
0000208f: JUMP
00002090: JUMPDEST
00002091: SWAP3
00002092: POP
00002093: POP
00002094: PUSH1 0x20
00002096: PUSH2 0x20a1
00002099: DUP6
0000209a: DUP3
0000209b: DUP7
0000209c: ADD
0000209d: PUSH2 0x1d14
000020a0: JUMP
000020a1: JUMPDEST
000020a2: SWAP2
000020a3: POP
000020a4: POP
000020a5: SWAP3
000020a6: POP
000020a7: SWAP3
000020a8: SWAP1
000020a9: POP
000020aa: JUMP
000020ab: JUMPDEST
000020ac: PUSH1 0x00
000020ae: DUP1
000020af: PUSH1 0x40
000020b1: DUP4
000020b2: DUP6
000020b3: SUB
000020b4: SLT
000020b5: ISZERO
000020b6: PUSH2 0x20c2
000020b9: JUMPI
000020ba: PUSH2 0x20c1
000020bd: PUSH2 0x1cee
000020c0: JUMP
000020c1: JUMPDEST
000020c2: JUMPDEST
000020c3: PUSH1 0x00
000020c5: PUSH2 0x20d0
000020c8: DUP6
000020c9: DUP3
000020ca: DUP7
000020cb: ADD
000020cc: PUSH2 0x1d14
000020cf: JUMP
000020d0: JUMPDEST
000020d1: SWAP3
000020d2: POP
000020d3: POP
000020d4: PUSH1 0x20
000020d6: PUSH2 0x20e1
000020d9: DUP6
000020da: DUP3
000020db: DUP7
000020dc: ADD
000020dd: PUSH2 0x1d14
000020e0: JUMP
000020e1: JUMPDEST
000020e2: SWAP2
000020e3: POP
000020e4: POP
000020e5: SWAP3
000020e6: POP
000020e7: SWAP3
000020e8: SWAP1
000020e9: POP
000020ea: JUMP
000020eb: JUMPDEST
000020ec: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000210d: PUSH1 0x00
0000210f: MSTORE
00002110: PUSH1 0x11
00002112: PUSH1 0x04
00002114: MSTORE
00002115: PUSH1 0x24
00002117: PUSH1 0x00
00002119: REVERT
0000211a: JUMPDEST
0000211b: PUSH1 0x00
0000211d: PUSH2 0x2125
00002120: DUP3
00002121: PUSH2 0x1cf3
00002124: JUMP
00002125: JUMPDEST
00002126: SWAP2
00002127: POP
00002128: PUSH2 0x2130
0000212b: DUP4
0000212c: PUSH2 0x1cf3
0000212f: JUMP
00002130: JUMPDEST
00002131: SWAP3
00002132: POP
00002133: DUP3
00002134: DUP3
00002135: ADD
00002136: SWAP1
00002137: POP
00002138: DUP1
00002139: DUP3
0000213a: GT
0000213b: ISZERO
0000213c: PUSH2 0x2148
0000213f: JUMPI
00002140: PUSH2 0x2147
00002143: PUSH2 0x20eb
00002146: JUMP
00002147: JUMPDEST
00002148: JUMPDEST
00002149: SWAP3
0000214a: SWAP2
0000214b: POP
0000214c: POP
0000214d: JUMP
0000214e: JUMPDEST
0000214f: PUSH1 0x00
00002151: PUSH2 0x2159
00002154: DUP3
00002155: PUSH2 0x1cf3
00002158: JUMP
00002159: JUMPDEST
0000215a: SWAP2
0000215b: POP
0000215c: PUSH2 0x2164
0000215f: DUP4
00002160: PUSH2 0x1cf3
00002163: JUMP
00002164: JUMPDEST
00002165: SWAP3
00002166: POP
00002167: DUP3
00002168: DUP3
00002169: SUB
0000216a: SWAP1
0000216b: POP
0000216c: DUP2
0000216d: DUP2
0000216e: GT
0000216f: ISZERO
00002170: PUSH2 0x217c
00002173: JUMPI
00002174: PUSH2 0x217b
00002177: PUSH2 0x20eb
0000217a: JUMP
0000217b: JUMPDEST
0000217c: JUMPDEST
0000217d: SWAP3
0000217e: SWAP2
0000217f: POP
00002180: POP
00002181: JUMP
00002182: JUMPDEST
00002183: PUSH1 0x00
00002185: PUSH1 0x40
00002187: DUP3
00002188: ADD
00002189: SWAP1
0000218a: POP
0000218b: PUSH2 0x2197
0000218e: PUSH1 0x00
00002190: DUP4
00002191: ADD
00002192: DUP6
00002193: PUSH2 0x2003
00002196: JUMP
00002197: JUMPDEST
00002198: PUSH2 0x21a4
0000219b: PUSH1 0x20
0000219d: DUP4
0000219e: ADD
0000219f: DUP5
000021a0: PUSH2 0x1f23
000021a3: JUMP
000021a4: JUMPDEST
000021a5: SWAP4
000021a6: SWAP3
000021a7: POP
000021a8: POP
000021a9: POP
000021aa: JUMP
000021ab: JUMPDEST
000021ac: PUSH2 0x21b4
000021af: DUP2
000021b0: PUSH2 0x1f4d
000021b3: JUMP
000021b4: JUMPDEST
000021b5: DUP2
000021b6: EQ
000021b7: PUSH2 0x21bf
000021ba: JUMPI
000021bb: PUSH1 0x00
000021bd: DUP1
000021be: REVERT
000021bf: JUMPDEST
000021c0: POP
000021c1: JUMP
000021c2: JUMPDEST
000021c3: PUSH1 0x00
000021c5: DUP2
000021c6: MLOAD
000021c7: SWAP1
000021c8: POP
000021c9: PUSH2 0x21d1
000021cc: DUP2
000021cd: PUSH2 0x21ab
000021d0: JUMP
000021d1: JUMPDEST
000021d2: SWAP3
000021d3: SWAP2
000021d4: POP
000021d5: POP
000021d6: JUMP
000021d7: JUMPDEST
000021d8: PUSH1 0x00
000021da: PUSH1 0x20
000021dc: DUP3
000021dd: DUP5
000021de: SUB
000021df: SLT
000021e0: ISZERO
000021e1: PUSH2 0x21ed
000021e4: JUMPI
000021e5: PUSH2 0x21ec
000021e8: PUSH2 0x1cee
000021eb: JUMP
000021ec: JUMPDEST
000021ed: JUMPDEST
000021ee: PUSH1 0x00
000021f0: PUSH2 0x21fb
000021f3: DUP5
000021f4: DUP3
000021f5: DUP6
000021f6: ADD
000021f7: PUSH2 0x21c2
000021fa: JUMP
000021fb: JUMPDEST
000021fc: SWAP2
000021fd: POP
000021fe: POP
000021ff: SWAP3
00002200: SWAP2
00002201: POP
00002202: POP
00002203: JUMP
00002204: JUMPDEST
00002205: PUSH1 0x00
00002207: PUSH1 0x60
00002209: DUP3
0000220a: ADD
0000220b: SWAP1
0000220c: POP
0000220d: PUSH2 0x2219
00002210: PUSH1 0x00
00002212: DUP4
00002213: ADD
00002214: DUP7
00002215: PUSH2 0x2003
00002218: JUMP
00002219: JUMPDEST
0000221a: PUSH2 0x2226
0000221d: PUSH1 0x20
0000221f: DUP4
00002220: ADD
00002221: DUP6
00002222: PUSH2 0x2003
00002225: JUMP
00002226: JUMPDEST
00002227: PUSH2 0x2233
0000222a: PUSH1 0x40
0000222c: DUP4
0000222d: ADD
0000222e: DUP5
0000222f: PUSH2 0x1f23
00002232: JUMP
00002233: JUMPDEST
00002234: SWAP5
00002235: SWAP4
00002236: POP
00002237: POP
00002238: POP
00002239: POP
0000223a: JUMP
0000223b: JUMPDEST
0000223c: PUSH1 0x00
0000223e: PUSH2 0x2246
00002241: DUP3
00002242: PUSH2 0x1df0
00002245: JUMP
00002246: JUMPDEST
00002247: SWAP2
00002248: POP
00002249: PUSH2 0x2251
0000224c: DUP4
0000224d: PUSH2 0x1df0
00002250: JUMP
00002251: JUMPDEST
00002252: SWAP3
00002253: POP
00002254: DUP3
00002255: DUP3
00002256: ADD
00002257: SWAP1
00002258: POP
00002259: PUSH10 0xffffffffffffffffffff
00002264: DUP2
00002265: GT
00002266: ISZERO
00002267: PUSH2 0x2273
0000226a: JUMPI
0000226b: PUSH2 0x2272
0000226e: PUSH2 0x20eb
00002271: JUMP
00002272: JUMPDEST
00002273: JUMPDEST
00002274: SWAP3
00002275: SWAP2
00002276: POP
00002277: POP
00002278: JUMP
00002279: JUMPDEST
0000227a: PUSH1 0x00
0000227c: PUSH2 0x2284
0000227f: DUP3
00002280: PUSH2 0x1cf3
00002283: JUMP
00002284: JUMPDEST
00002285: SWAP2
00002286: POP
00002287: PUSH2 0x228f
0000228a: DUP4
0000228b: PUSH2 0x1cf3
0000228e: JUMP
0000228f: JUMPDEST
00002290: SWAP3
00002291: POP
00002292: DUP3
00002293: DUP3
00002294: MUL
00002295: PUSH2 0x229d
00002298: DUP2
00002299: PUSH2 0x1cf3
0000229c: JUMP
0000229d: JUMPDEST
0000229e: SWAP2
0000229f: POP
000022a0: DUP3
000022a1: DUP3
000022a2: DIV
000022a3: DUP5
000022a4: EQ
000022a5: DUP4
000022a6: ISZERO
000022a7: OR
000022a8: PUSH2 0x22b4
000022ab: JUMPI
000022ac: PUSH2 0x22b3
000022af: PUSH2 0x20eb
000022b2: JUMP
000022b3: JUMPDEST
000022b4: JUMPDEST
000022b5: POP
000022b6: SWAP3
000022b7: SWAP2
000022b8: POP
000022b9: POP
000022ba: JUMP
000022bb: JUMPDEST
000022bc: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000022dd: PUSH1 0x00
000022df: MSTORE
000022e0: PUSH1 0x12
000022e2: PUSH1 0x04
000022e4: MSTORE
000022e5: PUSH1 0x24
000022e7: PUSH1 0x00
000022e9: REVERT
000022ea: JUMPDEST
000022eb: PUSH1 0x00
000022ed: PUSH2 0x22f5
000022f0: DUP3
000022f1: PUSH2 0x1cf3
000022f4: JUMP
000022f5: JUMPDEST
000022f6: SWAP2
000022f7: POP
000022f8: PUSH2 0x2300
000022fb: DUP4
000022fc: PUSH2 0x1cf3
000022ff: JUMP
00002300: JUMPDEST
00002301: SWAP3
00002302: POP
00002303: DUP3
00002304: PUSH2 0x2310
00002307: JUMPI
00002308: PUSH2 0x230f
0000230b: PUSH2 0x22bb
0000230e: JUMP
0000230f: JUMPDEST
00002310: JUMPDEST
00002311: DUP3
00002312: DUP3
00002313: DIV
00002314: SWAP1
00002315: POP
00002316: SWAP3
00002317: SWAP2
00002318: POP
00002319: POP
0000231a: JUMP
0000231b: JUMPDEST
0000231c: PUSH1 0x00
0000231e: PUSH1 0x60
00002320: DUP3
00002321: ADD
00002322: SWAP1
00002323: POP
00002324: PUSH2 0x2330
00002327: PUSH1 0x00
00002329: DUP4
0000232a: ADD
0000232b: DUP7
0000232c: PUSH2 0x1f23
0000232f: JUMP
00002330: JUMPDEST
00002331: PUSH2 0x233d
00002334: PUSH1 0x20
00002336: DUP4
00002337: ADD
00002338: DUP6
00002339: PUSH2 0x1f23
0000233c: JUMP
0000233d: JUMPDEST
0000233e: PUSH2 0x234a
00002341: PUSH1 0x40
00002343: DUP4
00002344: ADD
00002345: DUP5
00002346: PUSH2 0x1f23
00002349: JUMP
0000234a: JUMPDEST
0000234b: SWAP5
0000234c: SWAP4
0000234d: POP
0000234e: POP
0000234f: POP
00002350: POP
00002351: JUMP
00002352: JUMPDEST
00002353: PUSH1 0x00
00002355: DUP2
00002356: MLOAD
00002357: SWAP1
00002358: POP
00002359: SWAP2
0000235a: SWAP1
0000235b: POP
0000235c: JUMP
0000235d: JUMPDEST
0000235e: PUSH1 0x00
00002360: DUP2
00002361: SWAP1
00002362: POP
00002363: SWAP3
00002364: SWAP2
00002365: POP
00002366: POP
00002367: JUMP
00002368: JUMPDEST
00002369: PUSH1 0x00
0000236b: JUMPDEST
0000236c: DUP4
0000236d: DUP2
0000236e: LT
0000236f: ISZERO
00002370: PUSH2 0x2386
00002373: JUMPI
00002374: DUP1
00002375: DUP3
00002376: ADD
00002377: MLOAD
00002378: DUP2
00002379: DUP5
0000237a: ADD
0000237b: MSTORE
0000237c: PUSH1 0x20
0000237e: DUP2
0000237f: ADD
00002380: SWAP1
00002381: POP
00002382: PUSH2 0x236b
00002385: JUMP
00002386: JUMPDEST
00002387: PUSH1 0x00
00002389: DUP5
0000238a: DUP5
0000238b: ADD
0000238c: MSTORE
0000238d: POP
0000238e: POP
0000238f: POP
00002390: POP
00002391: JUMP
00002392: JUMPDEST
00002393: PUSH1 0x00
00002395: PUSH2 0x239d
00002398: DUP3
00002399: PUSH2 0x2352
0000239c: JUMP
0000239d: JUMPDEST
0000239e: PUSH2 0x23a7
000023a1: DUP2
000023a2: DUP6
000023a3: PUSH2 0x235d
000023a6: JUMP
000023a7: JUMPDEST
000023a8: SWAP4
000023a9: POP
000023aa: PUSH2 0x23b7
000023ad: DUP2
000023ae: DUP6
000023af: PUSH1 0x20
000023b1: DUP7
000023b2: ADD
000023b3: PUSH2 0x2368
000023b6: JUMP
000023b7: JUMPDEST
000023b8: DUP1
000023b9: DUP5
000023ba: ADD
000023bb: SWAP2
000023bc: POP
000023bd: POP
000023be: SWAP3
000023bf: SWAP2
000023c0: POP
000023c1: POP
000023c2: JUMP
000023c3: JUMPDEST
000023c4: PUSH1 0x00
000023c6: PUSH2 0x23cf
000023c9: DUP3
000023ca: DUP5
000023cb: PUSH2 0x2392
000023ce: JUMP
000023cf: JUMPDEST
000023d0: SWAP2
000023d1: POP
000023d2: DUP2
000023d3: SWAP1
000023d4: POP
000023d5: SWAP3
000023d6: SWAP2
000023d7: POP
000023d8: POP
000023d9: JUMP
000023da: INVALID
000023db: LOG2
000023dc: PUSH5 0x6970667358
000023e2: UNKNOWN(0x22)
000023e3: SLT
000023e4: KECCAK256
000023e5: SWAP8
000023e6: UNKNOWN(0xD7)
000023e7: UNKNOWN(0xAD)
000023e8: RETURNDATACOPY
000023e9: UNKNOWN(0x29)
000023ea: KECCAK256
000023eb: UNKNOWN(0xC6)
000023ec: PUSH18 0x88014fff7777915dac50fedcf6fd08f5956b
000023ff: UNKNOWN(0x2D)
00002400: DUP12
00002401: UNKNOWN(0x0D)
00002402: CALLDATALOAD
00002403: MOD
00002404: UNKNOWN(0xC3)
00002405: PUSH5 0x736f6c6343
0000240b: STOP
0000240c: ADDMOD
0000240d: SHL
0000240e: STOP
0000240f: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a
call_targets: 0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb"
    ],
    "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": "0xb7f239a5",
            "selector": "0xb7f239a5",
            "calldata_variants": [
                "0xb7f239a5",
                "0xb7f239a50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc2ed2ef9",
            "selector": "0xc2ed2ef9",
            "calldata_variants": [
                "0xc2ed2ef9",
                "0xc2ed2ef90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd6f23503",
            "selector": "0xd6f23503",
            "calldata_variants": [
                "0xd6f23503",
                "0xd6f235030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf8de3e7",
            "selector": "0xdf8de3e7",
            "calldata_variants": [
                "0xdf8de3e7",
                "0xdf8de3e70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf7aa8057",
            "selector": "0xf7aa8057",
            "calldata_variants": [
                "0xf7aa8057",
                "0xf7aa80570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9369198a",
            "selector": "0x9369198a",
            "calldata_variants": [
                "0x9369198a",
                "0x9369198a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2397,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2969,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4031,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [],
    "untrusted_call_count": 4
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a
call_targets: 0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb"
    ],
    "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": "0xb7f239a5",
            "selector": "0xb7f239a5",
            "calldata_variants": [
                "0xb7f239a5",
                "0xb7f239a50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc2ed2ef9",
            "selector": "0xc2ed2ef9",
            "calldata_variants": [
                "0xc2ed2ef9",
                "0xc2ed2ef90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd6f23503",
            "selector": "0xd6f23503",
            "calldata_variants": [
                "0xd6f23503",
                "0xd6f235030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf8de3e7",
            "selector": "0xdf8de3e7",
            "calldata_variants": [
                "0xdf8de3e7",
                "0xdf8de3e70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf7aa8057",
            "selector": "0xf7aa8057",
            "calldata_variants": [
                "0xf7aa8057",
                "0xf7aa80570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9369198a",
            "selector": "0x9369198a",
            "calldata_variants": [
                "0x9369198a",
                "0x9369198a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2397,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2969,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4031,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": []
}
medium other codex Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens 75 no
view
evidence_json
{
    "evidence": "`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.",
    "locations": [
        "contracts/contracts/JPGDStaking.sol:86",
        "contracts/contracts/JPGDStaking.sol:88",
        "contracts/contracts/JPGDStaking.sol:108",
        "contracts/contracts/JPGDStaking.sol:166"
    ],
    "recommendation": "Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.",
    "exploit_scenario": "If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency."
}
low access_control codex Owner can withdraw any token, breaking solvency for stakers/claimants 65 no
view
evidence_json
{
    "evidence": "`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.",
    "locations": [
        "contracts/contracts/JPGDStaking.sol:228",
        "contracts/contracts/JPGDStaking.sol:231",
        "contracts/contracts/JPGDStaking.sol:232"
    ],
    "recommendation": "Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.",
    "exploit_scenario": "A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers."
}
low access_control codex Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot 65 no
view
evidence_json
{
    "evidence": "`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.",
    "locations": [
        "contracts/contracts/JPGDStaking.sol:153",
        "contracts/contracts/JPGDStaking.sol:182",
        "contracts/contracts/JPGDStaking.sol:213",
        "contracts/contracts/JPGDStaking.sol:214"
    ],
    "recommendation": "Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.",
    "exploit_scenario": "After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely."
}