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

Analysis Run

e566fdea-a7ec-4850-8cb6-a61d047e3f9d

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 11:11 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
Initializer can be called by anyone before owners are set
crit 0 high 0 proxy context implementation known
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
30608 report.consolidate complete 1 / 1 3 months ago
74644 artifact.fetch complete 1 / 3 1 week ago
74645 tool.cast_disasm complete 1 / 3 1 week ago
74646 analysis.bundle complete 1 / 3 1 week ago
74647 capability.graph complete 1 / 3 1 week ago
74648 detector.run complete 1 / 3 1 week ago
74649 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: yes
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
Identified 3 issues: unprotected initializer takeover risk, external call failures consuming the nonce and masking failed transfers, and missing chain/domain separation in signed messages.
View stderr
[codex:1391007] OpenAI Codex v0.77.0 (research preview)
[codex:1391007] --------
[codex:1391007] workdir: /tmp/codex-multi-tiomnrru
[codex:1391007] model: gpt-5.2-codex
[codex:1391007] provider: openai
[codex:1391007] approval: never
[codex:1391007] sandbox: read-only
[codex:1391007] reasoning effort: xhigh
[codex:1391007] reasoning summaries: auto
[codex:1391007] session id: 019b6c5f-0a06-7c53-8100-b66f88448d44
[codex:1391007] --------
[codex:1391007] user
[codex:1391007] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1391007] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1391007] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1391007] 
[codex:1391007] Scope rules:
[codex:1391007] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1391007] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1391007] 
[codex:1391007] Output MUST be valid JSON matching the provided schema.
[codex:1391007] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1391007] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1391007] 
[codex:1391007] Output constraints (IMPORTANT):
[codex:1391007] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1391007] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1391007] mcp startup: no servers
[codex:1391007] 
[codex:1391007] thinking
[codex:1391007] **Preparing to review audit instructions**
[codex:1391007] exec
[codex:1391007] /bin/bash -lc ls in /tmp/codex-multi-tiomnrru succeeded in 5ms:
[codex:1391007] AUDIT_BUNDLE.txt
[codex:1391007] codex-output-schema.json
[codex:1391007] contracts
[codex:1391007] 
[codex:1391007] thinking
[codex:1391007] **Opening AUDIT_BUNDLE file**
[codex:1391007] exec
[codex:1391007] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-tiomnrru succeeded in 5ms:
[codex:1391007] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1391007] 
[codex:1391007] ================================================================================
[codex:1391007] FILE: contracts/Contract.sol
[codex:1391007] ================================================================================
[codex:1391007] pragma solidity >=0.8.0 <0.9.0;
[codex:1391007] 
[codex:1391007] // This is the ETH/ERC20/NFT multisig contract for Ownbit.
[codex:1391007] //
[codex:1391007] // For 2-of-3 multisig, to authorize a spend, two signtures must be provided by 2 of the 3 owners.
[codex:1391007] // To generate the message to be signed, provide the destination address and
[codex:1391007] // spend amount (in wei) to the generateMessageToSign method.
[codex:1391007] // The signatures must be provided as the (v, r, s) hex-encoded coordinates.
[codex:1391007] // The S coordinate must be 0x00 or 0x01 corresponding to 0x1b and 0x1c, respectively.
[codex:1391007] //
[codex:1391007] // WARNING: The generated message is only valid until the next spend is executed.
[codex:1391007] //          after that, a new message will need to be calculated.
[codex:1391007] //
[codex:1391007] //
[codex:1391007] // INFO: This contract is ERC20/ERC721/ERC1155 compatible.
[codex:1391007] 
[codex:1391007] 
[codex:1391007] thinking
[codex:1391007] **Analyzing multisig contract vulnerabilities**
[codex:1391007] 
[codex:1391007] I'm carefully reviewing the multisig contract for security issues like replay attacks, signature malleability, reentrancy, unchecked call failures, and missing initialization protections. There’s a complex discussion about encodePacked collision risks, potential denial-of-service via nonce burn on failed calls, and missing signature validations (like s-value checks). I’m also noting that the initialize function lacks access control, which could be risky if used with proxies, and that signature verification doesn’t guard against some edge cases around vs values or duplicates. This feels like a thorough security audit scan!
[codex:1391007] thinking
[codex:1391007] **Evaluating initialization and call failure issues**
[codex:1391007] 
[codex:1391007] I’m examining how the contract handles initialization without access control, external call failures that don’t revert but still consume the nonce, and unchecked ERC20 return values that could cause silent failures. I’m also noting some signature validation edge cases and the effect of missing chain ID in messages enabling cross-chain replay. Finally, I’m planning to locate precise line numbers in the source code to prepare detailed audit findings.
[codex:1391007] exec
[codex:1391007] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-tiomnrru succeeded in 6ms:
[codex:1391007]      1	pragma solidity >=0.8.0 <0.9.0;
[codex:1391007]      2	
[codex:1391007]      3	// This is the ETH/ERC20/NFT multisig contract for Ownbit.
[codex:1391007]      4	//
[codex:1391007]      5	// For 2-of-3 multisig, to authorize a spend, two signtures must be provided by 2 of the 3 owners.
[codex:1391007]      6	// To generate the message to be signed, provide the destination address and
[codex:1391007]      7	// spend amount (in wei) to the generateMessageToSign method.
[codex:1391007]      8	// The signatures must be provided as the (v, r, s) hex-encoded coordinates.
[codex:1391007]      9	// The S coordinate must be 0x00 or 0x01 corresponding to 0x1b and 0x1c, respectively.
[codex:1391007]     10	//
[codex:1391007]     11	// WARNING: The generated message is only valid until the next spend is executed.
[codex:1391007]     12	//          after that, a new message will need to be calculated.
[codex:1391007]     13	//
[codex:1391007]     14	//
[codex:1391007]     15	// INFO: This contract is ERC20/ERC721/ERC1155 compatible.
[codex:1391007]     16	// This contract can both receive ETH, ERC20 and NFT (ERC721/ERC1155) tokens.
[codex:1391007]     17	// Last update time: 2024-12-31.
[codex:1391007]     18	// version for BEP20 (BSC)
[codex:1391007]     19	// copyright@ownbit.io
[codex:1391007]     20	
[codex:1391007] 
[codex:1391007] thinking
[codex:1391007] **Detailing security findings with references**
[codex:1391007] codex
[codex:1391007] {"no_findings":false,"summary":"Identified 3 issues: unprotected initializer takeover risk, external call failures consuming the nonce and masking failed transfers, and missing chain/domain separation in signed messages.","findings":[{"severity":"high","category":"access_control","title":"Initializer can be called by anyone before owners are set","exploit_scenario":"If the proxy/contract is deployed without immediately calling `initialize`, an attacker can front‑run the first initialization call, set themselves as the sole owner with `required = 1`, and then authorize arbitrary spends to drain funds.","recommendation":"Restrict `initialize` to a trusted deployer/proxy admin (e.g., `initializer` + `onlyProxy`/`onlyOwner`), or set owners in a constructor for non‑proxy deployments. Ensure initialization is performed atomically during deployment.","evidence":"`initialize` is `public` and only checks `owners.length == 0`, with no access control.","locations":["contracts/Contract.sol:46","contracts/Contract.sol:47","contracts/Contract.sol:48","contracts/Contract.sol:57"]},{"severity":"medium","category":"other","title":"External call failures consume nonce and can mask failed token transfers","exploit_scenario":"A signed spend to an ERC20 that returns `false` (without reverting) will still be treated as successful: `sent` is true, `Spent` is emitted, and `spendNonce` increments, but no tokens move. Similarly, any revert or insufficient balance will increment the nonce and burn signatures, forcing new signatures and enabling denial‑of‑service against the intended transfer.","recommendation":"Require `sent` to be true and revert otherwise. For ERC20-style calls, if return data is present, decode it and require it to be `true` to avoid silent failures. Only increment `spendNonce` after successful execution.","evidence":"Low-level call result is only used to emit an event; failures do not revert and return data is ignored.","locations":["contracts/Contract.sol:99","contracts/Contract.sol:102","contracts/Contract.sol:104","contracts/Contract.sol:105","contracts/Contract.sol:107"]},{"severity":"low","category":"auth","title":"Signed message lacks chain/domain separation (cross-chain replay risk)","exploit_scenario":"If the same contract address exists on another chain (e.g., via CREATE2) with the same nonce, a valid signature from one chain can be replayed on the other to authorize a spend.","recommendation":"Include `block.chainid` (or an EIP‑712 domain separator) in the signed message to prevent cross‑chain replay.","evidence":"Message hashing omits `chainid` and domain separation beyond `address(this)`.","locations":["contracts/Contract.sol:81","contracts/Contract.sol:83","contracts/Contract.sol:87","contracts/Contract.sol:90"]}]}
[codex:1391007] tokens used
[codex:1391007] 16,489
[codex:1391007] {"no_findings":false,"summary":"Identified 3 issues: unprotected initializer takeover risk, external call failures consuming the nonce and masking failed transfers, and missing chain/domain separation in signed messages.","findings":[{"severity":"high","category":"access_control","title":"Initializer can be called by anyone before owners are set","exploit_scenario":"If the proxy/contract is deployed without immediately calling `initialize`, an attacker can front‑run the first initialization call, set themselves as the sole owner with `required = 1`, and then authorize arbitrary spends to drain funds.","recommendation":"Restrict `initialize` to a trusted deployer/proxy admin (e.g., `initializer` + `onlyProxy`/`onlyOwner`), or set owners in a constructor for non‑proxy deployments. Ensure initialization is performed atomically during deployment.","evidence":"`initialize` is `public` and only checks `owners.length == 0`, with no access control.","locations":["contracts/Contract.sol:46","contracts/Contract.sol:47","contracts/Contract.sol:48","contracts/Contract.sol:57"]},{"severity":"medium","category":"other","title":"External call failures consume nonce and can mask failed token transfers","exploit_scenario":"A signed spend to an ERC20 that returns `false` (without reverting) will still be treated as successful: `sent` is true, `Spent` is emitted, and `spendNonce` increments, but no tokens move. Similarly, any revert or insufficient balance will increment the nonce and burn signatures, forcing new signatures and enabling denial‑of‑service against the intended transfer.","recommendation":"Require `sent` to be true and revert otherwise. For ERC20-style calls, if return data is present, decode it and require it to be `true` to avoid silent failures. Only increment `spendNonce` after successful execution.","evidence":"Low-level call result is only used to emit an event; failures do not revert and return data is ignored.","locations":["contracts/Contract.sol:99","contracts/Contract.sol:102","contracts/Contract.sol:104","contracts/Contract.sol:105","contracts/Contract.sol:107"]},{"severity":"low","category":"auth","title":"Signed message lacks chain/domain separation (cross-chain replay risk)","exploit_scenario":"If the same contract address exists on another chain (e.g., via CREATE2) with the same nonce, a valid signature from one chain can be replayed on the other to authorize a spend.","recommendation":"Include `block.chainid` (or an EIP‑712 domain separator) in the signed message to prevent cross‑chain replay.","evidence":"Message hashing omits `chainid` and domain separation beyond `address(this)`.","locations":["contracts/Contract.sol:81","contracts/Contract.sol:83","contracts/Contract.sol:87","contracts/Contract.sol:90"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T23:11:22.813724+00:00",
        "returncode": 0
    },
    "summary": "Identified 3 issues: unprotected initializer takeover risk, external call failures consuming the nonce and masking failed transfers, and missing chain/domain separation in signed messages.",
    "raw_final": {
        "summary": "Identified 3 issues: unprotected initializer takeover risk, external call failures consuming the nonce and masking failed transfers, and missing chain/domain separation in signed messages.",
        "findings": [
            {
                "title": "Initializer can be called by anyone before owners are set",
                "category": "access_control",
                "evidence": "`initialize` is `public` and only checks `owners.length == 0`, with no access control.",
                "severity": "high",
                "locations": [
                    "contracts/Contract.sol:46",
                    "contracts/Contract.sol:47",
                    "contracts/Contract.sol:48",
                    "contracts/Contract.sol:57"
                ],
                "recommendation": "Restrict `initialize` to a trusted deployer/proxy admin (e.g., `initializer` + `onlyProxy`/`onlyOwner`), or set owners in a constructor for non\u2011proxy deployments. Ensure initialization is performed atomically during deployment.",
                "exploit_scenario": "If the proxy/contract is deployed without immediately calling `initialize`, an attacker can front\u2011run the first initialization call, set themselves as the sole owner with `required = 1`, and then authorize arbitrary spends to drain funds."
            },
            {
                "title": "External call failures consume nonce and can mask failed token transfers",
                "category": "other",
                "evidence": "Low-level call result is only used to emit an event; failures do not revert and return data is ignored.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:99",
                    "contracts/Contract.sol:102",
                    "contracts/Contract.sol:104",
                    "contracts/Contract.sol:105",
                    "contracts/Contract.sol:107"
                ],
                "recommendation": "Require `sent` to be true and revert otherwise. For ERC20-style calls, if return data is present, decode it and require it to be `true` to avoid silent failures. Only increment `spendNonce` after successful execution.",
                "exploit_scenario": "A signed spend to an ERC20 that returns `false` (without reverting) will still be treated as successful: `sent` is true, `Spent` is emitted, and `spendNonce` increments, but no tokens move. Similarly, any revert or insufficient balance will increment the nonce and burn signatures, forcing new signatures and enabling denial\u2011of\u2011service against the intended transfer."
            },
            {
                "title": "Signed message lacks chain/domain separation (cross-chain replay risk)",
                "category": "auth",
                "evidence": "Message hashing omits `chainid` and domain separation beyond `address(this)`.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:81",
                    "contracts/Contract.sol:83",
                    "contracts/Contract.sol:87",
                    "contracts/Contract.sol:90"
                ],
                "recommendation": "Include `block.chainid` (or an EIP\u2011712 domain separator) in the signed message to prevent cross\u2011chain replay.",
                "exploit_scenario": "If the same contract address exists on another chain (e.g., via CREATE2) with the same nonce, a valid signature from one chain can be replayed on the other to authorize a spend."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
1
Total opcodes
4149
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00aa
0000000c: JUMPI
0000000d: PUSH0
0000000e: CALLDATALOAD
0000000f: PUSH1 0xe0
00000011: SHR
00000012: DUP1
00000013: PUSH4 0x843b1a09
00000018: GT
00000019: PUSH2 0x0063
0000001c: JUMPI
0000001d: DUP1
0000001e: PUSH4 0x843b1a09
00000023: EQ
00000024: PUSH2 0x021c
00000027: JUMPI
00000028: DUP1
00000029: PUSH4 0xa0e67e2b
0000002e: EQ
0000002f: PUSH2 0x0246
00000032: JUMPI
00000033: DUP1
00000034: PUSH4 0xc6a2a9f1
00000039: EQ
0000003a: PUSH2 0x0270
0000003d: JUMPI
0000003e: DUP1
0000003f: PUSH4 0xd74f8edd
00000044: EQ
00000045: PUSH2 0x029a
00000048: JUMPI
00000049: DUP1
0000004a: PUSH4 0xdc8452cd
0000004f: EQ
00000050: PUSH2 0x02c4
00000053: JUMPI
00000054: DUP1
00000055: PUSH4 0xf23a6e61
0000005a: EQ
0000005b: PUSH2 0x02ee
0000005e: JUMPI
0000005f: PUSH2 0x00ea
00000062: JUMP
00000063: JUMPDEST
00000064: DUP1
00000065: PUSH4 0x025e7c27
0000006a: EQ
0000006b: PUSH2 0x00ee
0000006e: JUMPI
0000006f: DUP1
00000070: PUSH4 0x1398a5f6
00000075: EQ
00000076: PUSH2 0x012a
00000079: JUMPI
0000007a: DUP1
0000007b: PUSH4 0x150b7a02
00000080: EQ
00000081: PUSH2 0x0154
00000084: JUMPI
00000085: DUP1
00000086: PUSH4 0x2f54bf6e
0000008b: EQ
0000008c: PUSH2 0x0190
0000008f: JUMPI
00000090: DUP1
00000091: PUSH4 0x60b5bb3f
00000096: EQ
00000097: PUSH2 0x01cc
0000009a: JUMPI
0000009b: DUP1
0000009c: PUSH4 0x7c99df4a
000000a1: EQ
000000a2: PUSH2 0x01f4
000000a5: JUMPI
000000a6: PUSH2 0x00ea
000000a9: JUMP
000000aa: JUMPDEST
000000ab: CALLDATASIZE
000000ac: PUSH2 0x00ea
000000af: JUMPI
000000b0: PUSH32 0x5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a524
000000d1: CALLER
000000d2: CALLVALUE
000000d3: PUSH1 0x40
000000d5: MLOAD
000000d6: PUSH2 0x00e0
000000d9: SWAP3
000000da: SWAP2
000000db: SWAP1
000000dc: PUSH2 0x0c9a
000000df: JUMP
000000e0: JUMPDEST
000000e1: PUSH1 0x40
000000e3: MLOAD
000000e4: DUP1
000000e5: SWAP2
000000e6: SUB
000000e7: SWAP1
000000e8: LOG1
000000e9: STOP
000000ea: JUMPDEST
000000eb: PUSH0
000000ec: DUP1
000000ed: REVERT
000000ee: JUMPDEST
000000ef: CALLVALUE
000000f0: DUP1
000000f1: ISZERO
000000f2: PUSH2 0x00f9
000000f5: JUMPI
000000f6: PUSH0
000000f7: DUP1
000000f8: REVERT
000000f9: JUMPDEST
000000fa: POP
000000fb: PUSH2 0x0114
000000fe: PUSH1 0x04
00000100: DUP1
00000101: CALLDATASIZE
00000102: SUB
00000103: DUP2
00000104: ADD
00000105: SWAP1
00000106: PUSH2 0x010f
00000109: SWAP2
0000010a: SWAP1
0000010b: PUSH2 0x0cfc
0000010e: JUMP
0000010f: JUMPDEST
00000110: PUSH2 0x032a
00000113: JUMP
00000114: JUMPDEST
00000115: PUSH1 0x40
00000117: MLOAD
00000118: PUSH2 0x0121
0000011b: SWAP2
0000011c: SWAP1
0000011d: PUSH2 0x0d27
00000120: JUMP
00000121: JUMPDEST
00000122: PUSH1 0x40
00000124: MLOAD
00000125: DUP1
00000126: SWAP2
00000127: SUB
00000128: SWAP1
00000129: RETURN
0000012a: JUMPDEST
0000012b: CALLVALUE
0000012c: DUP1
0000012d: ISZERO
0000012e: PUSH2 0x0135
00000131: JUMPI
00000132: PUSH0
00000133: DUP1
00000134: REVERT
00000135: JUMPDEST
00000136: POP
00000137: PUSH2 0x013e
0000013a: PUSH2 0x0365
0000013d: JUMP
0000013e: JUMPDEST
0000013f: PUSH1 0x40
00000141: MLOAD
00000142: PUSH2 0x014b
00000145: SWAP2
00000146: SWAP1
00000147: PUSH2 0x0d40
0000014a: JUMP
0000014b: JUMPDEST
0000014c: PUSH1 0x40
0000014e: MLOAD
0000014f: DUP1
00000150: SWAP2
00000151: SUB
00000152: SWAP1
00000153: RETURN
00000154: JUMPDEST
00000155: CALLVALUE
00000156: DUP1
00000157: ISZERO
00000158: PUSH2 0x015f
0000015b: JUMPI
0000015c: PUSH0
0000015d: DUP1
0000015e: REVERT
0000015f: JUMPDEST
00000160: POP
00000161: PUSH2 0x017a
00000164: PUSH1 0x04
00000166: DUP1
00000167: CALLDATASIZE
00000168: SUB
00000169: DUP2
0000016a: ADD
0000016b: SWAP1
0000016c: PUSH2 0x0175
0000016f: SWAP2
00000170: SWAP1
00000171: PUSH2 0x0de4
00000174: JUMP
00000175: JUMPDEST
00000176: PUSH2 0x036e
00000179: JUMP
0000017a: JUMPDEST
0000017b: PUSH1 0x40
0000017d: MLOAD
0000017e: PUSH2 0x0187
00000181: SWAP2
00000182: SWAP1
00000183: PUSH2 0x0ea2
00000186: JUMP
00000187: JUMPDEST
00000188: PUSH1 0x40
0000018a: MLOAD
0000018b: DUP1
0000018c: SWAP2
0000018d: SUB
0000018e: SWAP1
0000018f: RETURN
00000190: JUMPDEST
00000191: CALLVALUE
00000192: DUP1
00000193: ISZERO
00000194: PUSH2 0x019b
00000197: JUMPI
00000198: PUSH0
00000199: DUP1
0000019a: REVERT
0000019b: JUMPDEST
0000019c: POP
0000019d: PUSH2 0x01b6
000001a0: PUSH1 0x04
000001a2: DUP1
000001a3: CALLDATASIZE
000001a4: SUB
000001a5: DUP2
000001a6: ADD
000001a7: SWAP1
000001a8: PUSH2 0x01b1
000001ab: SWAP2
000001ac: SWAP1
000001ad: PUSH2 0x0ebb
000001b0: JUMP
000001b1: JUMPDEST
000001b2: PUSH2 0x039b
000001b5: JUMP
000001b6: JUMPDEST
000001b7: PUSH1 0x40
000001b9: MLOAD
000001ba: PUSH2 0x01c3
000001bd: SWAP2
000001be: SWAP1
000001bf: PUSH2 0x0f00
000001c2: JUMP
000001c3: JUMPDEST
000001c4: PUSH1 0x40
000001c6: MLOAD
000001c7: DUP1
000001c8: SWAP2
000001c9: SUB
000001ca: SWAP1
000001cb: RETURN
000001cc: JUMPDEST
000001cd: CALLVALUE
000001ce: DUP1
000001cf: ISZERO
000001d0: PUSH2 0x01d7
000001d3: JUMPI
000001d4: PUSH0
000001d5: DUP1
000001d6: REVERT
000001d7: JUMPDEST
000001d8: POP
000001d9: PUSH2 0x01f2
000001dc: PUSH1 0x04
000001de: DUP1
000001df: CALLDATASIZE
000001e0: SUB
000001e1: DUP2
000001e2: ADD
000001e3: SWAP1
000001e4: PUSH2 0x01ed
000001e7: SWAP2
000001e8: SWAP1
000001e9: PUSH2 0x1061
000001ec: JUMP
000001ed: JUMPDEST
000001ee: PUSH2 0x03b7
000001f1: JUMP
000001f2: JUMPDEST
000001f3: STOP
000001f4: JUMPDEST
000001f5: CALLVALUE
000001f6: DUP1
000001f7: ISZERO
000001f8: PUSH2 0x01ff
000001fb: JUMPI
000001fc: PUSH0
000001fd: DUP1
000001fe: REVERT
000001ff: JUMPDEST
00000200: POP
00000201: PUSH2 0x021a
00000204: PUSH1 0x04
00000206: DUP1
00000207: CALLDATASIZE
00000208: SUB
00000209: DUP2
0000020a: ADD
0000020b: SWAP1
0000020c: PUSH2 0x0215
0000020f: SWAP2
00000210: SWAP1
00000211: PUSH2 0x12a4
00000214: JUMP
00000215: JUMPDEST
00000216: PUSH2 0x05f1
00000219: JUMP
0000021a: JUMPDEST
0000021b: STOP
0000021c: JUMPDEST
0000021d: CALLVALUE
0000021e: DUP1
0000021f: ISZERO
00000220: PUSH2 0x0227
00000223: JUMPI
00000224: PUSH0
00000225: DUP1
00000226: REVERT
00000227: JUMPDEST
00000228: POP
00000229: PUSH2 0x0230
0000022c: PUSH2 0x07bd
0000022f: JUMP
00000230: JUMPDEST
00000231: PUSH1 0x40
00000233: MLOAD
00000234: PUSH2 0x023d
00000237: SWAP2
00000238: SWAP1
00000239: PUSH2 0x0d40
0000023c: JUMP
0000023d: JUMPDEST
0000023e: PUSH1 0x40
00000240: MLOAD
00000241: DUP1
00000242: SWAP2
00000243: SUB
00000244: SWAP1
00000245: RETURN
00000246: JUMPDEST
00000247: CALLVALUE
00000248: DUP1
00000249: ISZERO
0000024a: PUSH2 0x0251
0000024d: JUMPI
0000024e: PUSH0
0000024f: DUP1
00000250: REVERT
00000251: JUMPDEST
00000252: POP
00000253: PUSH2 0x025a
00000256: PUSH2 0x07c3
00000259: JUMP
0000025a: JUMPDEST
0000025b: PUSH1 0x40
0000025d: MLOAD
0000025e: PUSH2 0x0267
00000261: SWAP2
00000262: SWAP1
00000263: PUSH2 0x1459
00000266: JUMP
00000267: JUMPDEST
00000268: PUSH1 0x40
0000026a: MLOAD
0000026b: DUP1
0000026c: SWAP2
0000026d: SUB
0000026e: SWAP1
0000026f: RETURN
00000270: JUMPDEST
00000271: CALLVALUE
00000272: DUP1
00000273: ISZERO
00000274: PUSH2 0x027b
00000277: JUMPI
00000278: PUSH0
00000279: DUP1
0000027a: REVERT
0000027b: JUMPDEST
0000027c: POP
0000027d: PUSH2 0x0284
00000280: PUSH2 0x084e
00000283: JUMP
00000284: JUMPDEST
00000285: PUSH1 0x40
00000287: MLOAD
00000288: PUSH2 0x0291
0000028b: SWAP2
0000028c: SWAP1
0000028d: PUSH2 0x0d40
00000290: JUMP
00000291: JUMPDEST
00000292: PUSH1 0x40
00000294: MLOAD
00000295: DUP1
00000296: SWAP2
00000297: SUB
00000298: SWAP1
00000299: RETURN
0000029a: JUMPDEST
0000029b: CALLVALUE
0000029c: DUP1
0000029d: ISZERO
0000029e: PUSH2 0x02a5
000002a1: JUMPI
000002a2: PUSH0
000002a3: DUP1
000002a4: REVERT
000002a5: JUMPDEST
000002a6: POP
000002a7: PUSH2 0x02ae
000002aa: PUSH2 0x0857
000002ad: JUMP
000002ae: JUMPDEST
000002af: PUSH1 0x40
000002b1: MLOAD
000002b2: PUSH2 0x02bb
000002b5: SWAP2
000002b6: SWAP1
000002b7: PUSH2 0x0d40
000002ba: JUMP
000002bb: JUMPDEST
000002bc: PUSH1 0x40
000002be: MLOAD
000002bf: DUP1
000002c0: SWAP2
000002c1: SUB
000002c2: SWAP1
000002c3: RETURN
000002c4: JUMPDEST
000002c5: CALLVALUE
000002c6: DUP1
000002c7: ISZERO
000002c8: PUSH2 0x02cf
000002cb: JUMPI
000002cc: PUSH0
000002cd: DUP1
000002ce: REVERT
000002cf: JUMPDEST
000002d0: POP
000002d1: PUSH2 0x02d8
000002d4: PUSH2 0x085c
000002d7: JUMP
000002d8: JUMPDEST
000002d9: PUSH1 0x40
000002db: MLOAD
000002dc: PUSH2 0x02e5
000002df: SWAP2
000002e0: SWAP1
000002e1: PUSH2 0x0d40
000002e4: JUMP
000002e5: JUMPDEST
000002e6: PUSH1 0x40
000002e8: MLOAD
000002e9: DUP1
000002ea: SWAP2
000002eb: SUB
000002ec: SWAP1
000002ed: RETURN
000002ee: JUMPDEST
000002ef: CALLVALUE
000002f0: DUP1
000002f1: ISZERO
000002f2: PUSH2 0x02f9
000002f5: JUMPI
000002f6: PUSH0
000002f7: DUP1
000002f8: REVERT
000002f9: JUMPDEST
000002fa: POP
000002fb: PUSH2 0x0314
000002fe: PUSH1 0x04
00000300: DUP1
00000301: CALLDATASIZE
00000302: SUB
00000303: DUP2
00000304: ADD
00000305: SWAP1
00000306: PUSH2 0x030f
00000309: SWAP2
0000030a: SWAP1
0000030b: PUSH2 0x1479
0000030e: JUMP
0000030f: JUMPDEST
00000310: PUSH2 0x0862
00000313: JUMP
00000314: JUMPDEST
00000315: PUSH1 0x40
00000317: MLOAD
00000318: PUSH2 0x0321
0000031b: SWAP2
0000031c: SWAP1
0000031d: PUSH2 0x0ea2
00000320: JUMP
00000321: JUMPDEST
00000322: PUSH1 0x40
00000324: MLOAD
00000325: DUP1
00000326: SWAP2
00000327: SUB
00000328: SWAP1
00000329: RETURN
0000032a: JUMPDEST
0000032b: PUSH1 0x01
0000032d: DUP2
0000032e: DUP2
0000032f: SLOAD
00000330: DUP2
00000331: LT
00000332: PUSH2 0x0339
00000335: JUMPI
00000336: PUSH0
00000337: DUP1
00000338: REVERT
00000339: JUMPDEST
0000033a: SWAP1
0000033b: PUSH0
0000033c: MSTORE
0000033d: PUSH1 0x20
0000033f: PUSH0
00000340: KECCAK256
00000341: ADD
00000342: PUSH0
00000343: SWAP2
00000344: POP
00000345: SLOAD
00000346: SWAP1
00000347: PUSH2 0x0100
0000034a: EXP
0000034b: SWAP1
0000034c: DIV
0000034d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000362: AND
00000363: DUP2
00000364: JUMP
00000365: JUMPDEST
00000366: PUSH0
00000367: PUSH1 0x02
00000369: SLOAD
0000036a: SWAP1
0000036b: POP
0000036c: SWAP1
0000036d: JUMP
0000036e: JUMPDEST
0000036f: PUSH0
00000370: PUSH32 0x150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f
00000391: SWAP1
00000392: POP
00000393: SWAP6
00000394: SWAP5
00000395: POP
00000396: POP
00000397: POP
00000398: POP
00000399: POP
0000039a: JUMP
0000039b: JUMPDEST
0000039c: PUSH0
0000039d: PUSH1 0x20
0000039f: MSTORE
000003a0: DUP1
000003a1: PUSH0
000003a2: MSTORE
000003a3: PUSH1 0x40
000003a5: PUSH0
000003a6: KECCAK256
000003a7: PUSH0
000003a8: SWAP2
000003a9: POP
000003aa: SLOAD
000003ab: SWAP1
000003ac: PUSH2 0x0100
000003af: EXP
000003b0: SWAP1
000003b1: DIV
000003b2: PUSH1 0xff
000003b4: AND
000003b5: DUP2
000003b6: JUMP
000003b7: JUMPDEST
000003b8: DUP2
000003b9: MLOAD
000003ba: DUP2
000003bb: PUSH1 0x09
000003bd: DUP3
000003be: GT
000003bf: ISZERO
000003c0: DUP1
000003c1: ISZERO
000003c2: PUSH2 0x03cb
000003c5: JUMPI
000003c6: POP
000003c7: DUP2
000003c8: DUP2
000003c9: GT
000003ca: ISZERO
000003cb: JUMPDEST
000003cc: DUP1
000003cd: ISZERO
000003ce: PUSH2 0x03d8
000003d1: JUMPI
000003d2: POP
000003d3: PUSH1 0x01
000003d5: DUP2
000003d6: LT
000003d7: ISZERO
000003d8: JUMPDEST
000003d9: PUSH2 0x03e0
000003dc: JUMPI
000003dd: PUSH0
000003de: DUP1
000003df: REVERT
000003e0: JUMPDEST
000003e1: PUSH0
000003e2: PUSH1 0x01
000003e4: DUP1
000003e5: SLOAD
000003e6: SWAP1
000003e7: POP
000003e8: EQ
000003e9: PUSH2 0x0427
000003ec: JUMPI
000003ed: PUSH1 0x40
000003ef: MLOAD
000003f0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000411: DUP2
00000412: MSTORE
00000413: PUSH1 0x04
00000415: ADD
00000416: PUSH2 0x041e
00000419: SWAP1
0000041a: PUSH2 0x1569
0000041d: JUMP
0000041e: JUMPDEST
0000041f: PUSH1 0x40
00000421: MLOAD
00000422: DUP1
00000423: SWAP2
00000424: SUB
00000425: SWAP1
00000426: REVERT
00000427: JUMPDEST
00000428: PUSH0
00000429: JUMPDEST
0000042a: DUP5
0000042b: MLOAD
0000042c: DUP2
0000042d: LT
0000042e: ISZERO
0000042f: PUSH2 0x05e3
00000432: JUMPI
00000433: PUSH0
00000434: DUP1
00000435: DUP7
00000436: DUP4
00000437: DUP2
00000438: MLOAD
00000439: DUP2
0000043a: LT
0000043b: PUSH2 0x0447
0000043e: JUMPI
0000043f: PUSH2 0x0446
00000442: PUSH2 0x1587
00000445: JUMP
00000446: JUMPDEST
00000447: JUMPDEST
00000448: PUSH1 0x20
0000044a: MUL
0000044b: PUSH1 0x20
0000044d: ADD
0000044e: ADD
0000044f: MLOAD
00000450: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000465: AND
00000466: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000047b: AND
0000047c: DUP2
0000047d: MSTORE
0000047e: PUSH1 0x20
00000480: ADD
00000481: SWAP1
00000482: DUP2
00000483: MSTORE
00000484: PUSH1 0x20
00000486: ADD
00000487: PUSH0
00000488: KECCAK256
00000489: PUSH0
0000048a: SWAP1
0000048b: SLOAD
0000048c: SWAP1
0000048d: PUSH2 0x0100
00000490: EXP
00000491: SWAP1
00000492: DIV
00000493: PUSH1 0xff
00000495: AND
00000496: DUP1
00000497: PUSH2 0x04e5
0000049a: JUMPI
0000049b: POP
0000049c: PUSH0
0000049d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004b2: AND
000004b3: DUP6
000004b4: DUP3
000004b5: DUP2
000004b6: MLOAD
000004b7: DUP2
000004b8: LT
000004b9: PUSH2 0x04c5
000004bc: JUMPI
000004bd: PUSH2 0x04c4
000004c0: PUSH2 0x1587
000004c3: JUMP
000004c4: JUMPDEST
000004c5: JUMPDEST
000004c6: PUSH1 0x20
000004c8: MUL
000004c9: PUSH1 0x20
000004cb: ADD
000004cc: ADD
000004cd: MLOAD
000004ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004e3: AND
000004e4: EQ
000004e5: JUMPDEST
000004e6: ISZERO
000004e7: PUSH2 0x04ee
000004ea: JUMPI
000004eb: PUSH0
000004ec: DUP1
000004ed: REVERT
000004ee: JUMPDEST
000004ef: PUSH1 0x01
000004f1: PUSH0
000004f2: DUP1
000004f3: DUP8
000004f4: DUP5
000004f5: DUP2
000004f6: MLOAD
000004f7: DUP2
000004f8: LT
000004f9: PUSH2 0x0505
000004fc: JUMPI
000004fd: PUSH2 0x0504
00000500: PUSH2 0x1587
00000503: JUMP
00000504: JUMPDEST
00000505: JUMPDEST
00000506: PUSH1 0x20
00000508: MUL
00000509: PUSH1 0x20
0000050b: ADD
0000050c: ADD
0000050d: MLOAD
0000050e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000523: AND
00000524: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000539: AND
0000053a: DUP2
0000053b: MSTORE
0000053c: PUSH1 0x20
0000053e: ADD
0000053f: SWAP1
00000540: DUP2
00000541: MSTORE
00000542: PUSH1 0x20
00000544: ADD
00000545: PUSH0
00000546: KECCAK256
00000547: PUSH0
00000548: PUSH2 0x0100
0000054b: EXP
0000054c: DUP2
0000054d: SLOAD
0000054e: DUP2
0000054f: PUSH1 0xff
00000551: MUL
00000552: NOT
00000553: AND
00000554: SWAP1
00000555: DUP4
00000556: ISZERO
00000557: ISZERO
00000558: MUL
00000559: OR
0000055a: SWAP1
0000055b: SSTORE
0000055c: POP
0000055d: PUSH1 0x01
0000055f: DUP6
00000560: DUP3
00000561: DUP2
00000562: MLOAD
00000563: DUP2
00000564: LT
00000565: PUSH2 0x0571
00000568: JUMPI
00000569: PUSH2 0x0570
0000056c: PUSH2 0x1587
0000056f: JUMP
00000570: JUMPDEST
00000571: JUMPDEST
00000572: PUSH1 0x20
00000574: MUL
00000575: PUSH1 0x20
00000577: ADD
00000578: ADD
00000579: MLOAD
0000057a: SWAP1
0000057b: DUP1
0000057c: PUSH1 0x01
0000057e: DUP2
0000057f: SLOAD
00000580: ADD
00000581: DUP1
00000582: DUP3
00000583: SSTORE
00000584: DUP1
00000585: SWAP2
00000586: POP
00000587: POP
00000588: PUSH1 0x01
0000058a: SWAP1
0000058b: SUB
0000058c: SWAP1
0000058d: PUSH0
0000058e: MSTORE
0000058f: PUSH1 0x20
00000591: PUSH0
00000592: KECCAK256
00000593: ADD
00000594: PUSH0
00000595: SWAP1
00000596: SWAP2
00000597: SWAP1
00000598: SWAP2
00000599: SWAP1
0000059a: SWAP2
0000059b: PUSH2 0x0100
0000059e: EXP
0000059f: DUP2
000005a0: SLOAD
000005a1: DUP2
000005a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005b7: MUL
000005b8: NOT
000005b9: AND
000005ba: SWAP1
000005bb: DUP4
000005bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005d1: AND
000005d2: MUL
000005d3: OR
000005d4: SWAP1
000005d5: SSTORE
000005d6: POP
000005d7: DUP1
000005d8: DUP1
000005d9: PUSH1 0x01
000005db: ADD
000005dc: SWAP2
000005dd: POP
000005de: POP
000005df: PUSH2 0x0429
000005e2: JUMP
000005e3: JUMPDEST
000005e4: POP
000005e5: DUP3
000005e6: PUSH1 0x02
000005e8: DUP2
000005e9: SWAP1
000005ea: SSTORE
000005eb: POP
000005ec: POP
000005ed: POP
000005ee: POP
000005ef: POP
000005f0: JUMP
000005f1: JUMPDEST
000005f2: ADDRESS
000005f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000608: AND
00000609: DUP8
0000060a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000061f: AND
00000620: SUB
00000621: PUSH2 0x065f
00000624: JUMPI
00000625: PUSH1 0x40
00000627: MLOAD
00000628: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000649: DUP2
0000064a: MSTORE
0000064b: PUSH1 0x04
0000064d: ADD
0000064e: PUSH2 0x0656
00000651: SWAP1
00000652: PUSH2 0x15fe
00000655: JUMP
00000656: JUMPDEST
00000657: PUSH1 0x40
00000659: MLOAD
0000065a: DUP1
0000065b: SWAP2
0000065c: SUB
0000065d: SWAP1
0000065e: REVERT
0000065f: JUMPDEST
00000660: PUSH2 0x06b0
00000663: DUP8
00000664: DUP8
00000665: DUP8
00000666: DUP8
00000667: DUP8
00000668: DUP8
00000669: DUP8
0000066a: DUP1
0000066b: DUP1
0000066c: PUSH1 0x1f
0000066e: ADD
0000066f: PUSH1 0x20
00000671: DUP1
00000672: SWAP2
00000673: DIV
00000674: MUL
00000675: PUSH1 0x20
00000677: ADD
00000678: PUSH1 0x40
0000067a: MLOAD
0000067b: SWAP1
0000067c: DUP2
0000067d: ADD
0000067e: PUSH1 0x40
00000680: MSTORE
00000681: DUP1
00000682: SWAP4
00000683: SWAP3
00000684: SWAP2
00000685: SWAP1
00000686: DUP2
00000687: DUP2
00000688: MSTORE
00000689: PUSH1 0x20
0000068b: ADD
0000068c: DUP4
0000068d: DUP4
0000068e: DUP1
0000068f: DUP3
00000690: DUP5
00000691: CALLDATACOPY
00000692: PUSH0
00000693: DUP2
00000694: DUP5
00000695: ADD
00000696: MSTORE
00000697: PUSH1 0x1f
00000699: NOT
0000069a: PUSH1 0x1f
0000069c: DUP3
0000069d: ADD
0000069e: AND
0000069f: SWAP1
000006a0: POP
000006a1: DUP1
000006a2: DUP4
000006a3: ADD
000006a4: SWAP3
000006a5: POP
000006a6: POP
000006a7: POP
000006a8: POP
000006a9: POP
000006aa: POP
000006ab: POP
000006ac: PUSH2 0x0890
000006af: JUMP
000006b0: JUMPDEST
000006b1: PUSH2 0x06ef
000006b4: JUMPI
000006b5: PUSH1 0x40
000006b7: MLOAD
000006b8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006d9: DUP2
000006da: MSTORE
000006db: PUSH1 0x04
000006dd: ADD
000006de: PUSH2 0x06e6
000006e1: SWAP1
000006e2: PUSH2 0x1666
000006e5: JUMP
000006e6: JUMPDEST
000006e7: PUSH1 0x40
000006e9: MLOAD
000006ea: DUP1
000006eb: SWAP2
000006ec: SUB
000006ed: SWAP1
000006ee: REVERT
000006ef: JUMPDEST
000006f0: PUSH1 0x01
000006f2: PUSH1 0x03
000006f4: SLOAD
000006f5: PUSH2 0x06fe
000006f8: SWAP2
000006f9: SWAP1
000006fa: PUSH2 0x16b1
000006fd: JUMP
000006fe: JUMPDEST
000006ff: PUSH1 0x03
00000701: DUP2
00000702: SWAP1
00000703: SSTORE
00000704: POP
00000705: PUSH0
00000706: DUP1
00000707: DUP9
00000708: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000071d: AND
0000071e: DUP9
0000071f: DUP6
00000720: DUP6
00000721: PUSH1 0x40
00000723: MLOAD
00000724: PUSH2 0x072e
00000727: SWAP3
00000728: SWAP2
00000729: SWAP1
0000072a: PUSH2 0x1720
0000072d: JUMP
0000072e: JUMPDEST
0000072f: PUSH0
00000730: PUSH1 0x40
00000732: MLOAD
00000733: DUP1
00000734: DUP4
00000735: SUB
00000736: DUP2
00000737: DUP6
00000738: DUP8
00000739: GAS
0000073a: CALL
0000073b: SWAP3
0000073c: POP
0000073d: POP
0000073e: POP
0000073f: RETURNDATASIZE
00000740: DUP1
00000741: PUSH0
00000742: DUP2
00000743: EQ
00000744: PUSH2 0x0768
00000747: JUMPI
00000748: PUSH1 0x40
0000074a: MLOAD
0000074b: SWAP2
0000074c: POP
0000074d: PUSH1 0x1f
0000074f: NOT
00000750: PUSH1 0x3f
00000752: RETURNDATASIZE
00000753: ADD
00000754: AND
00000755: DUP3
00000756: ADD
00000757: PUSH1 0x40
00000759: MSTORE
0000075a: RETURNDATASIZE
0000075b: DUP3
0000075c: MSTORE
0000075d: RETURNDATASIZE
0000075e: PUSH0
0000075f: PUSH1 0x20
00000761: DUP5
00000762: ADD
00000763: RETURNDATACOPY
00000764: PUSH2 0x076d
00000767: JUMP
00000768: JUMPDEST
00000769: PUSH1 0x60
0000076b: SWAP2
0000076c: POP
0000076d: JUMPDEST
0000076e: POP
0000076f: SWAP2
00000770: POP
00000771: SWAP2
00000772: POP
00000773: DUP2
00000774: ISZERO
00000775: PUSH2 0x07b2
00000778: JUMPI
00000779: PUSH32 0xd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b6
0000079a: DUP10
0000079b: DUP10
0000079c: PUSH1 0x40
0000079e: MLOAD
0000079f: PUSH2 0x07a9
000007a2: SWAP3
000007a3: SWAP2
000007a4: SWAP1
000007a5: PUSH2 0x0c9a
000007a8: JUMP
000007a9: JUMPDEST
000007aa: PUSH1 0x40
000007ac: MLOAD
000007ad: DUP1
000007ae: SWAP2
000007af: SUB
000007b0: SWAP1
000007b1: LOG1
000007b2: JUMPDEST
000007b3: POP
000007b4: POP
000007b5: POP
000007b6: POP
000007b7: POP
000007b8: POP
000007b9: POP
000007ba: POP
000007bb: POP
000007bc: JUMP
000007bd: JUMPDEST
000007be: PUSH1 0x03
000007c0: SLOAD
000007c1: DUP2
000007c2: JUMP
000007c3: JUMPDEST
000007c4: PUSH1 0x60
000007c6: PUSH1 0x01
000007c8: DUP1
000007c9: SLOAD
000007ca: DUP1
000007cb: PUSH1 0x20
000007cd: MUL
000007ce: PUSH1 0x20
000007d0: ADD
000007d1: PUSH1 0x40
000007d3: MLOAD
000007d4: SWAP1
000007d5: DUP2
000007d6: ADD
000007d7: PUSH1 0x40
000007d9: MSTORE
000007da: DUP1
000007db: SWAP3
000007dc: SWAP2
000007dd: SWAP1
000007de: DUP2
000007df: DUP2
000007e0: MSTORE
000007e1: PUSH1 0x20
000007e3: ADD
000007e4: DUP3
000007e5: DUP1
000007e6: SLOAD
000007e7: DUP1
000007e8: ISZERO
000007e9: PUSH2 0x0844
000007ec: JUMPI
000007ed: PUSH1 0x20
000007ef: MUL
000007f0: DUP3
000007f1: ADD
000007f2: SWAP2
000007f3: SWAP1
000007f4: PUSH0
000007f5: MSTORE
000007f6: PUSH1 0x20
000007f8: PUSH0
000007f9: KECCAK256
000007fa: SWAP1
000007fb: JUMPDEST
000007fc: DUP2
000007fd: PUSH0
000007fe: SWAP1
000007ff: SLOAD
00000800: SWAP1
00000801: PUSH2 0x0100
00000804: EXP
00000805: SWAP1
00000806: DIV
00000807: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000081c: AND
0000081d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000832: AND
00000833: DUP2
00000834: MSTORE
00000835: PUSH1 0x20
00000837: ADD
00000838: SWAP1
00000839: PUSH1 0x01
0000083b: ADD
0000083c: SWAP1
0000083d: DUP1
0000083e: DUP4
0000083f: GT
00000840: PUSH2 0x07fb
00000843: JUMPI
00000844: JUMPDEST
00000845: POP
00000846: POP
00000847: POP
00000848: POP
00000849: POP
0000084a: SWAP1
0000084b: POP
0000084c: SWAP1
0000084d: JUMP
0000084e: JUMPDEST
0000084f: PUSH0
00000850: PUSH1 0x03
00000852: SLOAD
00000853: SWAP1
00000854: POP
00000855: SWAP1
00000856: JUMP
00000857: JUMPDEST
00000858: PUSH1 0x09
0000085a: DUP2
0000085b: JUMP
0000085c: JUMPDEST
0000085d: PUSH1 0x02
0000085f: SLOAD
00000860: DUP2
00000861: JUMP
00000862: JUMPDEST
00000863: PUSH0
00000864: PUSH32 0xf23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf97
00000885: SWAP1
00000886: POP
00000887: SWAP7
00000888: SWAP6
00000889: POP
0000088a: POP
0000088b: POP
0000088c: POP
0000088d: POP
0000088e: POP
0000088f: JUMP
00000890: JUMPDEST
00000891: PUSH0
00000892: DUP4
00000893: MLOAD
00000894: DUP6
00000895: MLOAD
00000896: EQ
00000897: PUSH2 0x089e
0000089a: JUMPI
0000089b: PUSH0
0000089c: DUP1
0000089d: REVERT
0000089e: JUMPDEST
0000089f: DUP3
000008a0: MLOAD
000008a1: DUP5
000008a2: MLOAD
000008a3: EQ
000008a4: PUSH2 0x08ab
000008a7: JUMPI
000008a8: PUSH0
000008a9: DUP1
000008aa: REVERT
000008ab: JUMPDEST
000008ac: PUSH1 0x01
000008ae: DUP1
000008af: SLOAD
000008b0: SWAP1
000008b1: POP
000008b2: DUP6
000008b3: MLOAD
000008b4: GT
000008b5: ISZERO
000008b6: PUSH2 0x08bd
000008b9: JUMPI
000008ba: PUSH0
000008bb: DUP1
000008bc: REVERT
000008bd: JUMPDEST
000008be: PUSH1 0x02
000008c0: SLOAD
000008c1: DUP6
000008c2: MLOAD
000008c3: LT
000008c4: ISZERO
000008c5: PUSH2 0x08cc
000008c8: JUMPI
000008c9: PUSH0
000008ca: DUP1
000008cb: REVERT
000008cc: JUMPDEST
000008cd: PUSH0
000008ce: PUSH2 0x08d8
000008d1: DUP9
000008d2: DUP9
000008d3: DUP6
000008d4: PUSH2 0x0a54
000008d7: JUMP
000008d8: JUMPDEST
000008d9: SWAP1
000008da: POP
000008db: PUSH0
000008dc: DUP7
000008dd: MLOAD
000008de: PUSH8 0xffffffffffffffff
000008e7: DUP2
000008e8: GT
000008e9: ISZERO
000008ea: PUSH2 0x08f6
000008ed: JUMPI
000008ee: PUSH2 0x08f5
000008f1: PUSH2 0x0f29
000008f4: JUMP
000008f5: JUMPDEST
000008f6: JUMPDEST
000008f7: PUSH1 0x40
000008f9: MLOAD
000008fa: SWAP1
000008fb: DUP1
000008fc: DUP3
000008fd: MSTORE
000008fe: DUP1
000008ff: PUSH1 0x20
00000901: MUL
00000902: PUSH1 0x20
00000904: ADD
00000905: DUP3
00000906: ADD
00000907: PUSH1 0x40
00000909: MSTORE
0000090a: DUP1
0000090b: ISZERO
0000090c: PUSH2 0x0924
0000090f: JUMPI
00000910: DUP2
00000911: PUSH1 0x20
00000913: ADD
00000914: PUSH1 0x20
00000916: DUP3
00000917: MUL
00000918: DUP1
00000919: CALLDATASIZE
0000091a: DUP4
0000091b: CALLDATACOPY
0000091c: DUP1
0000091d: DUP3
0000091e: ADD
0000091f: SWAP2
00000920: POP
00000921: POP
00000922: SWAP1
00000923: POP
00000924: JUMPDEST
00000925: POP
00000926: SWAP1
00000927: POP
00000928: PUSH0
00000929: JUMPDEST
0000092a: DUP8
0000092b: MLOAD
0000092c: DUP2
0000092d: LT
0000092e: ISZERO
0000092f: PUSH2 0x0a32
00000932: JUMPI
00000933: PUSH1 0x01
00000935: DUP4
00000936: PUSH1 0x1b
00000938: DUP11
00000939: DUP5
0000093a: DUP2
0000093b: MLOAD
0000093c: DUP2
0000093d: LT
0000093e: PUSH2 0x094a
00000941: JUMPI
00000942: PUSH2 0x0949
00000945: PUSH2 0x1587
00000948: JUMP
00000949: JUMPDEST
0000094a: JUMPDEST
0000094b: PUSH1 0x20
0000094d: MUL
0000094e: PUSH1 0x20
00000950: ADD
00000951: ADD
00000952: MLOAD
00000953: PUSH2 0x095c
00000956: SWAP2
00000957: SWAP1
00000958: PUSH2 0x1738
0000095b: JUMP
0000095c: JUMPDEST
0000095d: DUP10
0000095e: DUP5
0000095f: DUP2
00000960: MLOAD
00000961: DUP2
00000962: LT
00000963: PUSH2 0x096f
00000966: JUMPI
00000967: PUSH2 0x096e
0000096a: PUSH2 0x1587
0000096d: JUMP
0000096e: JUMPDEST
0000096f: JUMPDEST
00000970: PUSH1 0x20
00000972: MUL
00000973: PUSH1 0x20
00000975: ADD
00000976: ADD
00000977: MLOAD
00000978: DUP10
00000979: DUP6
0000097a: DUP2
0000097b: MLOAD
0000097c: DUP2
0000097d: LT
0000097e: PUSH2 0x098a
00000981: JUMPI
00000982: PUSH2 0x0989
00000985: PUSH2 0x1587
00000988: JUMP
00000989: JUMPDEST
0000098a: JUMPDEST
0000098b: PUSH1 0x20
0000098d: MUL
0000098e: PUSH1 0x20
00000990: ADD
00000991: ADD
00000992: MLOAD
00000993: PUSH1 0x40
00000995: MLOAD
00000996: PUSH0
00000997: DUP2
00000998: MSTORE
00000999: PUSH1 0x20
0000099b: ADD
0000099c: PUSH1 0x40
0000099e: MSTORE
0000099f: PUSH1 0x40
000009a1: MLOAD
000009a2: PUSH2 0x09ae
000009a5: SWAP5
000009a6: SWAP4
000009a7: SWAP3
000009a8: SWAP2
000009a9: SWAP1
000009aa: PUSH2 0x178a
000009ad: JUMP
000009ae: JUMPDEST
000009af: PUSH1 0x20
000009b1: PUSH1 0x40
000009b3: MLOAD
000009b4: PUSH1 0x20
000009b6: DUP2
000009b7: SUB
000009b8: SWAP1
000009b9: DUP1
000009ba: DUP5
000009bb: SUB
000009bc: SWAP1
000009bd: DUP6
000009be: GAS
000009bf: STATICCALL
000009c0: ISZERO
000009c1: DUP1
000009c2: ISZERO
000009c3: PUSH2 0x09ce
000009c6: JUMPI
000009c7: RETURNDATASIZE
000009c8: PUSH0
000009c9: DUP1
000009ca: RETURNDATACOPY
000009cb: RETURNDATASIZE
000009cc: PUSH0
000009cd: REVERT
000009ce: JUMPDEST
000009cf: POP
000009d0: POP
000009d1: POP
000009d2: PUSH1 0x20
000009d4: PUSH1 0x40
000009d6: MLOAD
000009d7: SUB
000009d8: MLOAD
000009d9: DUP3
000009da: DUP3
000009db: DUP2
000009dc: MLOAD
000009dd: DUP2
000009de: LT
000009df: PUSH2 0x09eb
000009e2: JUMPI
000009e3: PUSH2 0x09ea
000009e6: PUSH2 0x1587
000009e9: JUMP
000009ea: JUMPDEST
000009eb: JUMPDEST
000009ec: PUSH1 0x20
000009ee: MUL
000009ef: PUSH1 0x20
000009f1: ADD
000009f2: ADD
000009f3: SWAP1
000009f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a09: AND
00000a0a: SWAP1
00000a0b: DUP2
00000a0c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a21: AND
00000a22: DUP2
00000a23: MSTORE
00000a24: POP
00000a25: POP
00000a26: DUP1
00000a27: DUP1
00000a28: PUSH1 0x01
00000a2a: ADD
00000a2b: SWAP2
00000a2c: POP
00000a2d: POP
00000a2e: PUSH2 0x0929
00000a31: JUMP
00000a32: JUMPDEST
00000a33: POP
00000a34: PUSH2 0x0a3c
00000a37: DUP2
00000a38: PUSH2 0x0ad0
00000a3b: JUMP
00000a3c: JUMPDEST
00000a3d: PUSH2 0x0a44
00000a40: JUMPI
00000a41: PUSH0
00000a42: DUP1
00000a43: REVERT
00000a44: JUMPDEST
00000a45: PUSH1 0x01
00000a47: SWAP3
00000a48: POP
00000a49: POP
00000a4a: POP
00000a4b: SWAP7
00000a4c: SWAP6
00000a4d: POP
00000a4e: POP
00000a4f: POP
00000a50: POP
00000a51: POP
00000a52: POP
00000a53: JUMP
00000a54: JUMPDEST
00000a55: PUSH0
00000a56: DUP1
00000a57: PUSH2 0x0a61
00000a5a: DUP6
00000a5b: DUP6
00000a5c: DUP6
00000a5d: PUSH2 0x0c03
00000a60: JUMP
00000a61: JUMPDEST
00000a62: SWAP1
00000a63: POP
00000a64: PUSH0
00000a65: PUSH1 0x40
00000a67: MLOAD
00000a68: DUP1
00000a69: PUSH1 0x40
00000a6b: ADD
00000a6c: PUSH1 0x40
00000a6e: MSTORE
00000a6f: DUP1
00000a70: PUSH1 0x1c
00000a72: DUP2
00000a73: MSTORE
00000a74: PUSH1 0x20
00000a76: ADD
00000a77: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000
00000a98: DUP2
00000a99: MSTORE
00000a9a: POP
00000a9b: SWAP1
00000a9c: POP
00000a9d: DUP1
00000a9e: DUP3
00000a9f: PUSH1 0x40
00000aa1: MLOAD
00000aa2: PUSH1 0x20
00000aa4: ADD
00000aa5: PUSH2 0x0aaf
00000aa8: SWAP3
00000aa9: SWAP2
00000aaa: SWAP1
00000aab: PUSH2 0x1835
00000aae: JUMP
00000aaf: JUMPDEST
00000ab0: PUSH1 0x40
00000ab2: MLOAD
00000ab3: PUSH1 0x20
00000ab5: DUP2
00000ab6: DUP4
00000ab7: SUB
00000ab8: SUB
00000ab9: DUP2
00000aba: MSTORE
00000abb: SWAP1
00000abc: PUSH1 0x40
00000abe: MSTORE
00000abf: DUP1
00000ac0: MLOAD
00000ac1: SWAP1
00000ac2: PUSH1 0x20
00000ac4: ADD
00000ac5: KECCAK256
00000ac6: SWAP3
00000ac7: POP
00000ac8: POP
00000ac9: POP
00000aca: SWAP4
00000acb: SWAP3
00000acc: POP
00000acd: POP
00000ace: POP
00000acf: JUMP
00000ad0: JUMPDEST
00000ad1: PUSH0
00000ad2: PUSH1 0x01
00000ad4: DUP1
00000ad5: SLOAD
00000ad6: SWAP1
00000ad7: POP
00000ad8: DUP3
00000ad9: MLOAD
00000ada: GT
00000adb: ISZERO
00000adc: PUSH2 0x0ae7
00000adf: JUMPI
00000ae0: PUSH0
00000ae1: SWAP1
00000ae2: POP
00000ae3: PUSH2 0x0bfe
00000ae6: JUMP
00000ae7: JUMPDEST
00000ae8: PUSH0
00000ae9: JUMPDEST
00000aea: DUP3
00000aeb: MLOAD
00000aec: DUP2
00000aed: LT
00000aee: ISZERO
00000aef: PUSH2 0x0bf8
00000af2: JUMPI
00000af3: PUSH0
00000af4: DUP1
00000af5: DUP5
00000af6: DUP4
00000af7: DUP2
00000af8: MLOAD
00000af9: DUP2
00000afa: LT
00000afb: PUSH2 0x0b07
00000afe: JUMPI
00000aff: PUSH2 0x0b06
00000b02: PUSH2 0x1587
00000b05: JUMP
00000b06: JUMPDEST
00000b07: JUMPDEST
00000b08: PUSH1 0x20
00000b0a: MUL
00000b0b: PUSH1 0x20
00000b0d: ADD
00000b0e: ADD
00000b0f: MLOAD
00000b10: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b25: AND
00000b26: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b3b: AND
00000b3c: DUP2
00000b3d: MSTORE
00000b3e: PUSH1 0x20
00000b40: ADD
00000b41: SWAP1
00000b42: DUP2
00000b43: MSTORE
00000b44: PUSH1 0x20
00000b46: ADD
00000b47: PUSH0
00000b48: KECCAK256
00000b49: PUSH0
00000b4a: SWAP1
00000b4b: SLOAD
00000b4c: SWAP1
00000b4d: PUSH2 0x0100
00000b50: EXP
00000b51: SWAP1
00000b52: DIV
00000b53: PUSH1 0xff
00000b55: AND
00000b56: PUSH2 0x0b62
00000b59: JUMPI
00000b5a: PUSH0
00000b5b: SWAP2
00000b5c: POP
00000b5d: POP
00000b5e: PUSH2 0x0bfe
00000b61: JUMP
00000b62: JUMPDEST
00000b63: PUSH0
00000b64: JUMPDEST
00000b65: DUP2
00000b66: DUP2
00000b67: LT
00000b68: ISZERO
00000b69: PUSH2 0x0bea
00000b6c: JUMPI
00000b6d: DUP4
00000b6e: DUP2
00000b6f: DUP2
00000b70: MLOAD
00000b71: DUP2
00000b72: LT
00000b73: PUSH2 0x0b7f
00000b76: JUMPI
00000b77: PUSH2 0x0b7e
00000b7a: PUSH2 0x1587
00000b7d: JUMP
00000b7e: JUMPDEST
00000b7f: JUMPDEST
00000b80: PUSH1 0x20
00000b82: MUL
00000b83: PUSH1 0x20
00000b85: ADD
00000b86: ADD
00000b87: MLOAD
00000b88: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b9d: AND
00000b9e: DUP5
00000b9f: DUP4
00000ba0: DUP2
00000ba1: MLOAD
00000ba2: DUP2
00000ba3: LT
00000ba4: PUSH2 0x0bb0
00000ba7: JUMPI
00000ba8: PUSH2 0x0baf
00000bab: PUSH2 0x1587
00000bae: JUMP
00000baf: JUMPDEST
00000bb0: JUMPDEST
00000bb1: PUSH1 0x20
00000bb3: MUL
00000bb4: PUSH1 0x20
00000bb6: ADD
00000bb7: ADD
00000bb8: MLOAD
00000bb9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bce: AND
00000bcf: SUB
00000bd0: PUSH2 0x0bdd
00000bd3: JUMPI
00000bd4: PUSH0
00000bd5: SWAP3
00000bd6: POP
00000bd7: POP
00000bd8: POP
00000bd9: PUSH2 0x0bfe
00000bdc: JUMP
00000bdd: JUMPDEST
00000bde: DUP1
00000bdf: DUP1
00000be0: PUSH1 0x01
00000be2: ADD
00000be3: SWAP2
00000be4: POP
00000be5: POP
00000be6: PUSH2 0x0b64
00000be9: JUMP
00000bea: JUMPDEST
00000beb: POP
00000bec: DUP1
00000bed: DUP1
00000bee: PUSH1 0x01
00000bf0: ADD
00000bf1: SWAP2
00000bf2: POP
00000bf3: POP
00000bf4: PUSH2 0x0ae9
00000bf7: JUMP
00000bf8: JUMPDEST
00000bf9: POP
00000bfa: PUSH1 0x01
00000bfc: SWAP1
00000bfd: POP
00000bfe: JUMPDEST
00000bff: SWAP2
00000c00: SWAP1
00000c01: POP
00000c02: JUMP
00000c03: JUMPDEST
00000c04: PUSH0
00000c05: DUP1
00000c06: ADDRESS
00000c07: DUP6
00000c08: DUP6
00000c09: DUP6
00000c0a: PUSH1 0x03
00000c0c: SLOAD
00000c0d: PUSH1 0x40
00000c0f: MLOAD
00000c10: PUSH1 0x20
00000c12: ADD
00000c13: PUSH2 0x0c20
00000c16: SWAP6
00000c17: SWAP5
00000c18: SWAP4
00000c19: SWAP3
00000c1a: SWAP2
00000c1b: SWAP1
00000c1c: PUSH2 0x18c1
00000c1f: JUMP
00000c20: JUMPDEST
00000c21: PUSH1 0x40
00000c23: MLOAD
00000c24: PUSH1 0x20
00000c26: DUP2
00000c27: DUP4
00000c28: SUB
00000c29: SUB
00000c2a: DUP2
00000c2b: MSTORE
00000c2c: SWAP1
00000c2d: PUSH1 0x40
00000c2f: MSTORE
00000c30: DUP1
00000c31: MLOAD
00000c32: SWAP1
00000c33: PUSH1 0x20
00000c35: ADD
00000c36: KECCAK256
00000c37: SWAP1
00000c38: POP
00000c39: DUP1
00000c3a: SWAP2
00000c3b: POP
00000c3c: POP
00000c3d: SWAP4
00000c3e: SWAP3
00000c3f: POP
00000c40: POP
00000c41: POP
00000c42: JUMP
00000c43: JUMPDEST
00000c44: PUSH0
00000c45: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c5a: DUP3
00000c5b: AND
00000c5c: SWAP1
00000c5d: POP
00000c5e: SWAP2
00000c5f: SWAP1
00000c60: POP
00000c61: JUMP
00000c62: JUMPDEST
00000c63: PUSH0
00000c64: PUSH2 0x0c6c
00000c67: DUP3
00000c68: PUSH2 0x0c43
00000c6b: JUMP
00000c6c: JUMPDEST
00000c6d: SWAP1
00000c6e: POP
00000c6f: SWAP2
00000c70: SWAP1
00000c71: POP
00000c72: JUMP
00000c73: JUMPDEST
00000c74: PUSH2 0x0c7c
00000c77: DUP2
00000c78: PUSH2 0x0c62
00000c7b: JUMP
00000c7c: JUMPDEST
00000c7d: DUP3
00000c7e: MSTORE
00000c7f: POP
00000c80: POP
00000c81: JUMP
00000c82: JUMPDEST
00000c83: PUSH0
00000c84: DUP2
00000c85: SWAP1
00000c86: POP
00000c87: SWAP2
00000c88: SWAP1
00000c89: POP
00000c8a: JUMP
00000c8b: JUMPDEST
00000c8c: PUSH2 0x0c94
00000c8f: DUP2
00000c90: PUSH2 0x0c82
00000c93: JUMP
00000c94: JUMPDEST
00000c95: DUP3
00000c96: MSTORE
00000c97: POP
00000c98: POP
00000c99: JUMP
00000c9a: JUMPDEST
00000c9b: PUSH0
00000c9c: PUSH1 0x40
00000c9e: DUP3
00000c9f: ADD
00000ca0: SWAP1
00000ca1: POP
00000ca2: PUSH2 0x0cad
00000ca5: PUSH0
00000ca6: DUP4
00000ca7: ADD
00000ca8: DUP6
00000ca9: PUSH2 0x0c73
00000cac: JUMP
00000cad: JUMPDEST
00000cae: PUSH2 0x0cba
00000cb1: PUSH1 0x20
00000cb3: DUP4
00000cb4: ADD
00000cb5: DUP5
00000cb6: PUSH2 0x0c8b
00000cb9: JUMP
00000cba: JUMPDEST
00000cbb: SWAP4
00000cbc: SWAP3
00000cbd: POP
00000cbe: POP
00000cbf: POP
00000cc0: JUMP
00000cc1: JUMPDEST
00000cc2: PUSH0
00000cc3: PUSH1 0x40
00000cc5: MLOAD
00000cc6: SWAP1
00000cc7: POP
00000cc8: SWAP1
00000cc9: JUMP
00000cca: JUMPDEST
00000ccb: PUSH0
00000ccc: DUP1
00000ccd: REVERT
00000cce: JUMPDEST
00000ccf: PUSH0
00000cd0: DUP1
00000cd1: REVERT
00000cd2: JUMPDEST
00000cd3: PUSH2 0x0cdb
00000cd6: DUP2
00000cd7: PUSH2 0x0c82
00000cda: JUMP
00000cdb: JUMPDEST
00000cdc: DUP2
00000cdd: EQ
00000cde: PUSH2 0x0ce5
00000ce1: JUMPI
00000ce2: PUSH0
00000ce3: DUP1
00000ce4: REVERT
00000ce5: JUMPDEST
00000ce6: POP
00000ce7: JUMP
00000ce8: JUMPDEST
00000ce9: PUSH0
00000cea: DUP2
00000ceb: CALLDATALOAD
00000cec: SWAP1
00000ced: POP
00000cee: PUSH2 0x0cf6
00000cf1: DUP2
00000cf2: PUSH2 0x0cd2
00000cf5: JUMP
00000cf6: JUMPDEST
00000cf7: SWAP3
00000cf8: SWAP2
00000cf9: POP
00000cfa: POP
00000cfb: JUMP
00000cfc: JUMPDEST
00000cfd: PUSH0
00000cfe: PUSH1 0x20
00000d00: DUP3
00000d01: DUP5
00000d02: SUB
00000d03: SLT
00000d04: ISZERO
00000d05: PUSH2 0x0d11
00000d08: JUMPI
00000d09: PUSH2 0x0d10
00000d0c: PUSH2 0x0cca
00000d0f: JUMP
00000d10: JUMPDEST
00000d11: JUMPDEST
00000d12: PUSH0
00000d13: PUSH2 0x0d1e
00000d16: DUP5
00000d17: DUP3
00000d18: DUP6
00000d19: ADD
00000d1a: PUSH2 0x0ce8
00000d1d: JUMP
00000d1e: JUMPDEST
00000d1f: SWAP2
00000d20: POP
00000d21: POP
00000d22: SWAP3
00000d23: SWAP2
00000d24: POP
00000d25: POP
00000d26: JUMP
00000d27: JUMPDEST
00000d28: PUSH0
00000d29: PUSH1 0x20
00000d2b: DUP3
00000d2c: ADD
00000d2d: SWAP1
00000d2e: POP
00000d2f: PUSH2 0x0d3a
00000d32: PUSH0
00000d33: DUP4
00000d34: ADD
00000d35: DUP5
00000d36: PUSH2 0x0c73
00000d39: JUMP
00000d3a: JUMPDEST
00000d3b: SWAP3
00000d3c: SWAP2
00000d3d: POP
00000d3e: POP
00000d3f: JUMP
00000d40: JUMPDEST
00000d41: PUSH0
00000d42: PUSH1 0x20
00000d44: DUP3
00000d45: ADD
00000d46: SWAP1
00000d47: POP
00000d48: PUSH2 0x0d53
00000d4b: PUSH0
00000d4c: DUP4
00000d4d: ADD
00000d4e: DUP5
00000d4f: PUSH2 0x0c8b
00000d52: JUMP
00000d53: JUMPDEST
00000d54: SWAP3
00000d55: SWAP2
00000d56: POP
00000d57: POP
00000d58: JUMP
00000d59: JUMPDEST
00000d5a: PUSH2 0x0d62
00000d5d: DUP2
00000d5e: PUSH2 0x0c62
00000d61: JUMP
00000d62: JUMPDEST
00000d63: DUP2
00000d64: EQ
00000d65: PUSH2 0x0d6c
00000d68: JUMPI
00000d69: PUSH0
00000d6a: DUP1
00000d6b: REVERT
00000d6c: JUMPDEST
00000d6d: POP
00000d6e: JUMP
00000d6f: JUMPDEST
00000d70: PUSH0
00000d71: DUP2
00000d72: CALLDATALOAD
00000d73: SWAP1
00000d74: POP
00000d75: PUSH2 0x0d7d
00000d78: DUP2
00000d79: PUSH2 0x0d59
00000d7c: JUMP
00000d7d: JUMPDEST
00000d7e: SWAP3
00000d7f: SWAP2
00000d80: POP
00000d81: POP
00000d82: JUMP
00000d83: JUMPDEST
00000d84: PUSH0
00000d85: DUP1
00000d86: REVERT
00000d87: JUMPDEST
00000d88: PUSH0
00000d89: DUP1
00000d8a: REVERT
00000d8b: JUMPDEST
00000d8c: PUSH0
00000d8d: DUP1
00000d8e: REVERT
00000d8f: JUMPDEST
00000d90: PUSH0
00000d91: DUP1
00000d92: DUP4
00000d93: PUSH1 0x1f
00000d95: DUP5
00000d96: ADD
00000d97: SLT
00000d98: PUSH2 0x0da4
00000d9b: JUMPI
00000d9c: PUSH2 0x0da3
00000d9f: PUSH2 0x0d83
00000da2: JUMP
00000da3: JUMPDEST
00000da4: JUMPDEST
00000da5: DUP3
00000da6: CALLDATALOAD
00000da7: SWAP1
00000da8: POP
00000da9: PUSH8 0xffffffffffffffff
00000db2: DUP2
00000db3: GT
00000db4: ISZERO
00000db5: PUSH2 0x0dc1
00000db8: JUMPI
00000db9: PUSH2 0x0dc0
00000dbc: PUSH2 0x0d87
00000dbf: JUMP
00000dc0: JUMPDEST
00000dc1: JUMPDEST
00000dc2: PUSH1 0x20
00000dc4: DUP4
00000dc5: ADD
00000dc6: SWAP2
00000dc7: POP
00000dc8: DUP4
00000dc9: PUSH1 0x01
00000dcb: DUP3
00000dcc: MUL
00000dcd: DUP4
00000dce: ADD
00000dcf: GT
00000dd0: ISZERO
00000dd1: PUSH2 0x0ddd
00000dd4: JUMPI
00000dd5: PUSH2 0x0ddc
00000dd8: PUSH2 0x0d8b
00000ddb: JUMP
00000ddc: JUMPDEST
00000ddd: JUMPDEST
00000dde: SWAP3
00000ddf: POP
00000de0: SWAP3
00000de1: SWAP1
00000de2: POP
00000de3: JUMP
00000de4: JUMPDEST
00000de5: PUSH0
00000de6: DUP1
00000de7: PUSH0
00000de8: DUP1
00000de9: PUSH0
00000dea: PUSH1 0x80
00000dec: DUP7
00000ded: DUP9
00000dee: SUB
00000def: SLT
00000df0: ISZERO
00000df1: PUSH2 0x0dfd
00000df4: JUMPI
00000df5: PUSH2 0x0dfc
00000df8: PUSH2 0x0cca
00000dfb: JUMP
00000dfc: JUMPDEST
00000dfd: JUMPDEST
00000dfe: PUSH0
00000dff: PUSH2 0x0e0a
00000e02: DUP9
00000e03: DUP3
00000e04: DUP10
00000e05: ADD
00000e06: PUSH2 0x0d6f
00000e09: JUMP
00000e0a: JUMPDEST
00000e0b: SWAP6
00000e0c: POP
00000e0d: POP
00000e0e: PUSH1 0x20
00000e10: PUSH2 0x0e1b
00000e13: DUP9
00000e14: DUP3
00000e15: DUP10
00000e16: ADD
00000e17: PUSH2 0x0d6f
00000e1a: JUMP
00000e1b: JUMPDEST
00000e1c: SWAP5
00000e1d: POP
00000e1e: POP
00000e1f: PUSH1 0x40
00000e21: PUSH2 0x0e2c
00000e24: DUP9
00000e25: DUP3
00000e26: DUP10
00000e27: ADD
00000e28: PUSH2 0x0ce8
00000e2b: JUMP
00000e2c: JUMPDEST
00000e2d: SWAP4
00000e2e: POP
00000e2f: POP
00000e30: PUSH1 0x60
00000e32: DUP7
00000e33: ADD
00000e34: CALLDATALOAD
00000e35: PUSH8 0xffffffffffffffff
00000e3e: DUP2
00000e3f: GT
00000e40: ISZERO
00000e41: PUSH2 0x0e4d
00000e44: JUMPI
00000e45: PUSH2 0x0e4c
00000e48: PUSH2 0x0cce
00000e4b: JUMP
00000e4c: JUMPDEST
00000e4d: JUMPDEST
00000e4e: PUSH2 0x0e59
00000e51: DUP9
00000e52: DUP3
00000e53: DUP10
00000e54: ADD
00000e55: PUSH2 0x0d8f
00000e58: JUMP
00000e59: JUMPDEST
00000e5a: SWAP3
00000e5b: POP
00000e5c: SWAP3
00000e5d: POP
00000e5e: POP
00000e5f: SWAP3
00000e60: SWAP6
00000e61: POP
00000e62: SWAP3
00000e63: SWAP6
00000e64: SWAP1
00000e65: SWAP4
00000e66: POP
00000e67: JUMP
00000e68: JUMPDEST
00000e69: PUSH0
00000e6a: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00000e8b: DUP3
00000e8c: AND
00000e8d: SWAP1
00000e8e: POP
00000e8f: SWAP2
00000e90: SWAP1
00000e91: POP
00000e92: JUMP
00000e93: JUMPDEST
00000e94: PUSH2 0x0e9c
00000e97: DUP2
00000e98: PUSH2 0x0e68
00000e9b: JUMP
00000e9c: JUMPDEST
00000e9d: DUP3
00000e9e: MSTORE
00000e9f: POP
00000ea0: POP
00000ea1: JUMP
00000ea2: JUMPDEST
00000ea3: PUSH0
00000ea4: PUSH1 0x20
00000ea6: DUP3
00000ea7: ADD
00000ea8: SWAP1
00000ea9: POP
00000eaa: PUSH2 0x0eb5
00000ead: PUSH0
00000eae: DUP4
00000eaf: ADD
00000eb0: DUP5
00000eb1: PUSH2 0x0e93
00000eb4: JUMP
00000eb5: JUMPDEST
00000eb6: SWAP3
00000eb7: SWAP2
00000eb8: POP
00000eb9: POP
00000eba: JUMP
00000ebb: JUMPDEST
00000ebc: PUSH0
00000ebd: PUSH1 0x20
00000ebf: DUP3
00000ec0: DUP5
00000ec1: SUB
00000ec2: SLT
00000ec3: ISZERO
00000ec4: PUSH2 0x0ed0
00000ec7: JUMPI
00000ec8: PUSH2 0x0ecf
00000ecb: PUSH2 0x0cca
00000ece: JUMP
00000ecf: JUMPDEST
00000ed0: JUMPDEST
00000ed1: PUSH0
00000ed2: PUSH2 0x0edd
00000ed5: DUP5
00000ed6: DUP3
00000ed7: DUP6
00000ed8: ADD
00000ed9: PUSH2 0x0d6f
00000edc: JUMP
00000edd: JUMPDEST
00000ede: SWAP2
00000edf: POP
00000ee0: POP
00000ee1: SWAP3
00000ee2: SWAP2
00000ee3: POP
00000ee4: POP
00000ee5: JUMP
00000ee6: JUMPDEST
00000ee7: PUSH0
00000ee8: DUP2
00000ee9: ISZERO
00000eea: ISZERO
00000eeb: SWAP1
00000eec: POP
00000eed: SWAP2
00000eee: SWAP1
00000eef: POP
00000ef0: JUMP
00000ef1: JUMPDEST
00000ef2: PUSH2 0x0efa
00000ef5: DUP2
00000ef6: PUSH2 0x0ee6
00000ef9: JUMP
00000efa: JUMPDEST
00000efb: DUP3
00000efc: MSTORE
00000efd: POP
00000efe: POP
00000eff: JUMP
00000f00: JUMPDEST
00000f01: PUSH0
00000f02: PUSH1 0x20
00000f04: DUP3
00000f05: ADD
00000f06: SWAP1
00000f07: POP
00000f08: PUSH2 0x0f13
00000f0b: PUSH0
00000f0c: DUP4
00000f0d: ADD
00000f0e: DUP5
00000f0f: PUSH2 0x0ef1
00000f12: JUMP
00000f13: JUMPDEST
00000f14: SWAP3
00000f15: SWAP2
00000f16: POP
00000f17: POP
00000f18: JUMP
00000f19: JUMPDEST
00000f1a: PUSH0
00000f1b: PUSH1 0x1f
00000f1d: NOT
00000f1e: PUSH1 0x1f
00000f20: DUP4
00000f21: ADD
00000f22: AND
00000f23: SWAP1
00000f24: POP
00000f25: SWAP2
00000f26: SWAP1
00000f27: POP
00000f28: JUMP
00000f29: JUMPDEST
00000f2a: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00000f4b: PUSH0
00000f4c: MSTORE
00000f4d: PUSH1 0x41
00000f4f: PUSH1 0x04
00000f51: MSTORE
00000f52: PUSH1 0x24
00000f54: PUSH0
00000f55: REVERT
00000f56: JUMPDEST
00000f57: PUSH2 0x0f5f
00000f5a: DUP3
00000f5b: PUSH2 0x0f19
00000f5e: JUMP
00000f5f: JUMPDEST
00000f60: DUP2
00000f61: ADD
00000f62: DUP2
00000f63: DUP2
00000f64: LT
00000f65: PUSH8 0xffffffffffffffff
00000f6e: DUP3
00000f6f: GT
00000f70: OR
00000f71: ISZERO
00000f72: PUSH2 0x0f7e
00000f75: JUMPI
00000f76: PUSH2 0x0f7d
00000f79: PUSH2 0x0f29
00000f7c: JUMP
00000f7d: JUMPDEST
00000f7e: JUMPDEST
00000f7f: DUP1
00000f80: PUSH1 0x40
00000f82: MSTORE
00000f83: POP
00000f84: POP
00000f85: POP
00000f86: JUMP
00000f87: JUMPDEST
00000f88: PUSH0
00000f89: PUSH2 0x0f90
00000f8c: PUSH2 0x0cc1
00000f8f: JUMP
00000f90: JUMPDEST
00000f91: SWAP1
00000f92: POP
00000f93: PUSH2 0x0f9c
00000f96: DUP3
00000f97: DUP3
00000f98: PUSH2 0x0f56
00000f9b: JUMP
00000f9c: JUMPDEST
00000f9d: SWAP2
00000f9e: SWAP1
00000f9f: POP
00000fa0: JUMP
00000fa1: JUMPDEST
00000fa2: PUSH0
00000fa3: PUSH8 0xffffffffffffffff
00000fac: DUP3
00000fad: GT
00000fae: ISZERO
00000faf: PUSH2 0x0fbb
00000fb2: JUMPI
00000fb3: PUSH2 0x0fba
00000fb6: PUSH2 0x0f29
00000fb9: JUMP
00000fba: JUMPDEST
00000fbb: JUMPDEST
00000fbc: PUSH1 0x20
00000fbe: DUP3
00000fbf: MUL
00000fc0: SWAP1
00000fc1: POP
00000fc2: PUSH1 0x20
00000fc4: DUP2
00000fc5: ADD
00000fc6: SWAP1
00000fc7: POP
00000fc8: SWAP2
00000fc9: SWAP1
00000fca: POP
00000fcb: JUMP
00000fcc: JUMPDEST
00000fcd: PUSH0
00000fce: PUSH2 0x0fde
00000fd1: PUSH2 0x0fd9
00000fd4: DUP5
00000fd5: PUSH2 0x0fa1
00000fd8: JUMP
00000fd9: JUMPDEST
00000fda: PUSH2 0x0f87
00000fdd: JUMP
00000fde: JUMPDEST
00000fdf: SWAP1
00000fe0: POP
00000fe1: DUP1
00000fe2: DUP4
00000fe3: DUP3
00000fe4: MSTORE
00000fe5: PUSH1 0x20
00000fe7: DUP3
00000fe8: ADD
00000fe9: SWAP1
00000fea: POP
00000feb: PUSH1 0x20
00000fed: DUP5
00000fee: MUL
00000fef: DUP4
00000ff0: ADD
00000ff1: DUP6
00000ff2: DUP2
00000ff3: GT
00000ff4: ISZERO
00000ff5: PUSH2 0x1001
00000ff8: JUMPI
00000ff9: PUSH2 0x1000
00000ffc: PUSH2 0x0d8b
00000fff: JUMP
00001000: JUMPDEST
00001001: JUMPDEST
00001002: DUP4
00001003: JUMPDEST
00001004: DUP2
00001005: DUP2
00001006: LT
00001007: ISZERO
00001008: PUSH2 0x102a
0000100b: JUMPI
0000100c: DUP1
0000100d: PUSH2 0x1016
00001010: DUP9
00001011: DUP3
00001012: PUSH2 0x0d6f
00001015: JUMP
00001016: JUMPDEST
00001017: DUP5
00001018: MSTORE
00001019: PUSH1 0x20
0000101b: DUP5
0000101c: ADD
0000101d: SWAP4
0000101e: POP
0000101f: POP
00001020: PUSH1 0x20
00001022: DUP2
00001023: ADD
00001024: SWAP1
00001025: POP
00001026: PUSH2 0x1003
00001029: JUMP
0000102a: JUMPDEST
0000102b: POP
0000102c: POP
0000102d: POP
0000102e: SWAP4
0000102f: SWAP3
00001030: POP
00001031: POP
00001032: POP
00001033: JUMP
00001034: JUMPDEST
00001035: PUSH0
00001036: DUP3
00001037: PUSH1 0x1f
00001039: DUP4
0000103a: ADD
0000103b: SLT
0000103c: PUSH2 0x1048
0000103f: JUMPI
00001040: PUSH2 0x1047
00001043: PUSH2 0x0d83
00001046: JUMP
00001047: JUMPDEST
00001048: JUMPDEST
00001049: DUP2
0000104a: CALLDATALOAD
0000104b: PUSH2 0x1058
0000104e: DUP5
0000104f: DUP3
00001050: PUSH1 0x20
00001052: DUP7
00001053: ADD
00001054: PUSH2 0x0fcc
00001057: JUMP
00001058: JUMPDEST
00001059: SWAP2
0000105a: POP
0000105b: POP
0000105c: SWAP3
0000105d: SWAP2
0000105e: POP
0000105f: POP
00001060: JUMP
00001061: JUMPDEST
00001062: PUSH0
00001063: DUP1
00001064: PUSH1 0x40
00001066: DUP4
00001067: DUP6
00001068: SUB
00001069: SLT
0000106a: ISZERO
0000106b: PUSH2 0x1077
0000106e: JUMPI
0000106f: PUSH2 0x1076
00001072: PUSH2 0x0cca
00001075: JUMP
00001076: JUMPDEST
00001077: JUMPDEST
00001078: PUSH0
00001079: DUP4
0000107a: ADD
0000107b: CALLDATALOAD
0000107c: PUSH8 0xffffffffffffffff
00001085: DUP2
00001086: GT
00001087: ISZERO
00001088: PUSH2 0x1094
0000108b: JUMPI
0000108c: PUSH2 0x1093
0000108f: PUSH2 0x0cce
00001092: JUMP
00001093: JUMPDEST
00001094: JUMPDEST
00001095: PUSH2 0x10a0
00001098: DUP6
00001099: DUP3
0000109a: DUP7
0000109b: ADD
0000109c: PUSH2 0x1034
0000109f: JUMP
000010a0: JUMPDEST
000010a1: SWAP3
000010a2: POP
000010a3: POP
000010a4: PUSH1 0x20
000010a6: PUSH2 0x10b1
000010a9: DUP6
000010aa: DUP3
000010ab: DUP7
000010ac: ADD
000010ad: PUSH2 0x0ce8
000010b0: JUMP
000010b1: JUMPDEST
000010b2: SWAP2
000010b3: POP
000010b4: POP
000010b5: SWAP3
000010b6: POP
000010b7: SWAP3
000010b8: SWAP1
000010b9: POP
000010ba: JUMP
000010bb: JUMPDEST
000010bc: PUSH0
000010bd: PUSH8 0xffffffffffffffff
000010c6: DUP3
000010c7: GT
000010c8: ISZERO
000010c9: PUSH2 0x10d5
000010cc: JUMPI
000010cd: PUSH2 0x10d4
000010d0: PUSH2 0x0f29
000010d3: JUMP
000010d4: JUMPDEST
000010d5: JUMPDEST
000010d6: PUSH1 0x20
000010d8: DUP3
000010d9: MUL
000010da: SWAP1
000010db: POP
000010dc: PUSH1 0x20
000010de: DUP2
000010df: ADD
000010e0: SWAP1
000010e1: POP
000010e2: SWAP2
000010e3: SWAP1
000010e4: POP
000010e5: JUMP
000010e6: JUMPDEST
000010e7: PUSH0
000010e8: PUSH1 0xff
000010ea: DUP3
000010eb: AND
000010ec: SWAP1
000010ed: POP
000010ee: SWAP2
000010ef: SWAP1
000010f0: POP
000010f1: JUMP
000010f2: JUMPDEST
000010f3: PUSH2 0x10fb
000010f6: DUP2
000010f7: PUSH2 0x10e6
000010fa: JUMP
000010fb: JUMPDEST
000010fc: DUP2
000010fd: EQ
000010fe: PUSH2 0x1105
00001101: JUMPI
00001102: PUSH0
00001103: DUP1
00001104: REVERT
00001105: JUMPDEST
00001106: POP
00001107: JUMP
00001108: JUMPDEST
00001109: PUSH0
0000110a: DUP2
0000110b: CALLDATALOAD
0000110c: SWAP1
0000110d: POP
0000110e: PUSH2 0x1116
00001111: DUP2
00001112: PUSH2 0x10f2
00001115: JUMP
00001116: JUMPDEST
00001117: SWAP3
00001118: SWAP2
00001119: POP
0000111a: POP
0000111b: JUMP
0000111c: JUMPDEST
0000111d: PUSH0
0000111e: PUSH2 0x112e
00001121: PUSH2 0x1129
00001124: DUP5
00001125: PUSH2 0x10bb
00001128: JUMP
00001129: JUMPDEST
0000112a: PUSH2 0x0f87
0000112d: JUMP
0000112e: JUMPDEST
0000112f: SWAP1
00001130: POP
00001131: DUP1
00001132: DUP4
00001133: DUP3
00001134: MSTORE
00001135: PUSH1 0x20
00001137: DUP3
00001138: ADD
00001139: SWAP1
0000113a: POP
0000113b: PUSH1 0x20
0000113d: DUP5
0000113e: MUL
0000113f: DUP4
00001140: ADD
00001141: DUP6
00001142: DUP2
00001143: GT
00001144: ISZERO
00001145: PUSH2 0x1151
00001148: JUMPI
00001149: PUSH2 0x1150
0000114c: PUSH2 0x0d8b
0000114f: JUMP
00001150: JUMPDEST
00001151: JUMPDEST
00001152: DUP4
00001153: JUMPDEST
00001154: DUP2
00001155: DUP2
00001156: LT
00001157: ISZERO
00001158: PUSH2 0x117a
0000115b: JUMPI
0000115c: DUP1
0000115d: PUSH2 0x1166
00001160: DUP9
00001161: DUP3
00001162: PUSH2 0x1108
00001165: JUMP
00001166: JUMPDEST
00001167: DUP5
00001168: MSTORE
00001169: PUSH1 0x20
0000116b: DUP5
0000116c: ADD
0000116d: SWAP4
0000116e: POP
0000116f: POP
00001170: PUSH1 0x20
00001172: DUP2
00001173: ADD
00001174: SWAP1
00001175: POP
00001176: PUSH2 0x1153
00001179: JUMP
0000117a: JUMPDEST
0000117b: POP
0000117c: POP
0000117d: POP
0000117e: SWAP4
0000117f: SWAP3
00001180: POP
00001181: POP
00001182: POP
00001183: JUMP
00001184: JUMPDEST
00001185: PUSH0
00001186: DUP3
00001187: PUSH1 0x1f
00001189: DUP4
0000118a: ADD
0000118b: SLT
0000118c: PUSH2 0x1198
0000118f: JUMPI
00001190: PUSH2 0x1197
00001193: PUSH2 0x0d83
00001196: JUMP
00001197: JUMPDEST
00001198: JUMPDEST
00001199: DUP2
0000119a: CALLDATALOAD
0000119b: PUSH2 0x11a8
0000119e: DUP5
0000119f: DUP3
000011a0: PUSH1 0x20
000011a2: DUP7
000011a3: ADD
000011a4: PUSH2 0x111c
000011a7: JUMP
000011a8: JUMPDEST
000011a9: SWAP2
000011aa: POP
000011ab: POP
000011ac: SWAP3
000011ad: SWAP2
000011ae: POP
000011af: POP
000011b0: JUMP
000011b1: JUMPDEST
000011b2: PUSH0
000011b3: PUSH8 0xffffffffffffffff
000011bc: DUP3
000011bd: GT
000011be: ISZERO
000011bf: PUSH2 0x11cb
000011c2: JUMPI
000011c3: PUSH2 0x11ca
000011c6: PUSH2 0x0f29
000011c9: JUMP
000011ca: JUMPDEST
000011cb: JUMPDEST
000011cc: PUSH1 0x20
000011ce: DUP3
000011cf: MUL
000011d0: SWAP1
000011d1: POP
000011d2: PUSH1 0x20
000011d4: DUP2
000011d5: ADD
000011d6: SWAP1
000011d7: POP
000011d8: SWAP2
000011d9: SWAP1
000011da: POP
000011db: JUMP
000011dc: JUMPDEST
000011dd: PUSH0
000011de: DUP2
000011df: SWAP1
000011e0: POP
000011e1: SWAP2
000011e2: SWAP1
000011e3: POP
000011e4: JUMP
000011e5: JUMPDEST
000011e6: PUSH2 0x11ee
000011e9: DUP2
000011ea: PUSH2 0x11dc
000011ed: JUMP
000011ee: JUMPDEST
000011ef: DUP2
000011f0: EQ
000011f1: PUSH2 0x11f8
000011f4: JUMPI
000011f5: PUSH0
000011f6: DUP1
000011f7: REVERT
000011f8: JUMPDEST
000011f9: POP
000011fa: JUMP
000011fb: JUMPDEST
000011fc: PUSH0
000011fd: DUP2
000011fe: CALLDATALOAD
000011ff: SWAP1
00001200: POP
00001201: PUSH2 0x1209
00001204: DUP2
00001205: PUSH2 0x11e5
00001208: JUMP
00001209: JUMPDEST
0000120a: SWAP3
0000120b: SWAP2
0000120c: POP
0000120d: POP
0000120e: JUMP
0000120f: JUMPDEST
00001210: PUSH0
00001211: PUSH2 0x1221
00001214: PUSH2 0x121c
00001217: DUP5
00001218: PUSH2 0x11b1
0000121b: JUMP
0000121c: JUMPDEST
0000121d: PUSH2 0x0f87
00001220: JUMP
00001221: JUMPDEST
00001222: SWAP1
00001223: POP
00001224: DUP1
00001225: DUP4
00001226: DUP3
00001227: MSTORE
00001228: PUSH1 0x20
0000122a: DUP3
0000122b: ADD
0000122c: SWAP1
0000122d: POP
0000122e: PUSH1 0x20
00001230: DUP5
00001231: MUL
00001232: DUP4
00001233: ADD
00001234: DUP6
00001235: DUP2
00001236: GT
00001237: ISZERO
00001238: PUSH2 0x1244
0000123b: JUMPI
0000123c: PUSH2 0x1243
0000123f: PUSH2 0x0d8b
00001242: JUMP
00001243: JUMPDEST
00001244: JUMPDEST
00001245: DUP4
00001246: JUMPDEST
00001247: DUP2
00001248: DUP2
00001249: LT
0000124a: ISZERO
0000124b: PUSH2 0x126d
0000124e: JUMPI
0000124f: DUP1
00001250: PUSH2 0x1259
00001253: DUP9
00001254: DUP3
00001255: PUSH2 0x11fb
00001258: JUMP
00001259: JUMPDEST
0000125a: DUP5
0000125b: MSTORE
0000125c: PUSH1 0x20
0000125e: DUP5
0000125f: ADD
00001260: SWAP4
00001261: POP
00001262: POP
00001263: PUSH1 0x20
00001265: DUP2
00001266: ADD
00001267: SWAP1
00001268: POP
00001269: PUSH2 0x1246
0000126c: JUMP
0000126d: JUMPDEST
0000126e: POP
0000126f: POP
00001270: POP
00001271: SWAP4
00001272: SWAP3
00001273: POP
00001274: POP
00001275: POP
00001276: JUMP
00001277: JUMPDEST
00001278: PUSH0
00001279: DUP3
0000127a: PUSH1 0x1f
0000127c: DUP4
0000127d: ADD
0000127e: SLT
0000127f: PUSH2 0x128b
00001282: JUMPI
00001283: PUSH2 0x128a
00001286: PUSH2 0x0d83
00001289: JUMP
0000128a: JUMPDEST
0000128b: JUMPDEST
0000128c: DUP2
0000128d: CALLDATALOAD
0000128e: PUSH2 0x129b
00001291: DUP5
00001292: DUP3
00001293: PUSH1 0x20
00001295: DUP7
00001296: ADD
00001297: PUSH2 0x120f
0000129a: JUMP
0000129b: JUMPDEST
0000129c: SWAP2
0000129d: POP
0000129e: POP
0000129f: SWAP3
000012a0: SWAP2
000012a1: POP
000012a2: POP
000012a3: JUMP
000012a4: JUMPDEST
000012a5: PUSH0
000012a6: DUP1
000012a7: PUSH0
000012a8: DUP1
000012a9: PUSH0
000012aa: DUP1
000012ab: PUSH0
000012ac: PUSH1 0xc0
000012ae: DUP9
000012af: DUP11
000012b0: SUB
000012b1: SLT
000012b2: ISZERO
000012b3: PUSH2 0x12bf
000012b6: JUMPI
000012b7: PUSH2 0x12be
000012ba: PUSH2 0x0cca
000012bd: JUMP
000012be: JUMPDEST
000012bf: JUMPDEST
000012c0: PUSH0
000012c1: PUSH2 0x12cc
000012c4: DUP11
000012c5: DUP3
000012c6: DUP12
000012c7: ADD
000012c8: PUSH2 0x0d6f
000012cb: JUMP
000012cc: JUMPDEST
000012cd: SWAP8
000012ce: POP
000012cf: POP
000012d0: PUSH1 0x20
000012d2: PUSH2 0x12dd
000012d5: DUP11
000012d6: DUP3
000012d7: DUP12
000012d8: ADD
000012d9: PUSH2 0x0ce8
000012dc: JUMP
000012dd: JUMPDEST
000012de: SWAP7
000012df: POP
000012e0: POP
000012e1: PUSH1 0x40
000012e3: DUP9
000012e4: ADD
000012e5: CALLDATALOAD
000012e6: PUSH8 0xffffffffffffffff
000012ef: DUP2
000012f0: GT
000012f1: ISZERO
000012f2: PUSH2 0x12fe
000012f5: JUMPI
000012f6: PUSH2 0x12fd
000012f9: PUSH2 0x0cce
000012fc: JUMP
000012fd: JUMPDEST
000012fe: JUMPDEST
000012ff: PUSH2 0x130a
00001302: DUP11
00001303: DUP3
00001304: DUP12
00001305: ADD
00001306: PUSH2 0x1184
00001309: JUMP
0000130a: JUMPDEST
0000130b: SWAP6
0000130c: POP
0000130d: POP
0000130e: PUSH1 0x60
00001310: DUP9
00001311: ADD
00001312: CALLDATALOAD
00001313: PUSH8 0xffffffffffffffff
0000131c: DUP2
0000131d: GT
0000131e: ISZERO
0000131f: PUSH2 0x132b
00001322: JUMPI
00001323: PUSH2 0x132a
00001326: PUSH2 0x0cce
00001329: JUMP
0000132a: JUMPDEST
0000132b: JUMPDEST
0000132c: PUSH2 0x1337
0000132f: DUP11
00001330: DUP3
00001331: DUP12
00001332: ADD
00001333: PUSH2 0x1277
00001336: JUMP
00001337: JUMPDEST
00001338: SWAP5
00001339: POP
0000133a: POP
0000133b: PUSH1 0x80
0000133d: DUP9
0000133e: ADD
0000133f: CALLDATALOAD
00001340: PUSH8 0xffffffffffffffff
00001349: DUP2
0000134a: GT
0000134b: ISZERO
0000134c: PUSH2 0x1358
0000134f: JUMPI
00001350: PUSH2 0x1357
00001353: PUSH2 0x0cce
00001356: JUMP
00001357: JUMPDEST
00001358: JUMPDEST
00001359: PUSH2 0x1364
0000135c: DUP11
0000135d: DUP3
0000135e: DUP12
0000135f: ADD
00001360: PUSH2 0x1277
00001363: JUMP
00001364: JUMPDEST
00001365: SWAP4
00001366: POP
00001367: POP
00001368: PUSH1 0xa0
0000136a: DUP9
0000136b: ADD
0000136c: CALLDATALOAD
0000136d: PUSH8 0xffffffffffffffff
00001376: DUP2
00001377: GT
00001378: ISZERO
00001379: PUSH2 0x1385
0000137c: JUMPI
0000137d: PUSH2 0x1384
00001380: PUSH2 0x0cce
00001383: JUMP
00001384: JUMPDEST
00001385: JUMPDEST
00001386: PUSH2 0x1391
00001389: DUP11
0000138a: DUP3
0000138b: DUP12
0000138c: ADD
0000138d: PUSH2 0x0d8f
00001390: JUMP
00001391: JUMPDEST
00001392: SWAP3
00001393: POP
00001394: SWAP3
00001395: POP
00001396: POP
00001397: SWAP3
00001398: SWAP6
00001399: SWAP9
0000139a: SWAP2
0000139b: SWAP5
0000139c: SWAP8
0000139d: POP
0000139e: SWAP3
0000139f: SWAP6
000013a0: POP
000013a1: JUMP
000013a2: JUMPDEST
000013a3: PUSH0
000013a4: DUP2
000013a5: MLOAD
000013a6: SWAP1
000013a7: POP
000013a8: SWAP2
000013a9: SWAP1
000013aa: POP
000013ab: JUMP
000013ac: JUMPDEST
000013ad: PUSH0
000013ae: DUP3
000013af: DUP3
000013b0: MSTORE
000013b1: PUSH1 0x20
000013b3: DUP3
000013b4: ADD
000013b5: SWAP1
000013b6: POP
000013b7: SWAP3
000013b8: SWAP2
000013b9: POP
000013ba: POP
000013bb: JUMP
000013bc: JUMPDEST
000013bd: PUSH0
000013be: DUP2
000013bf: SWAP1
000013c0: POP
000013c1: PUSH1 0x20
000013c3: DUP3
000013c4: ADD
000013c5: SWAP1
000013c6: POP
000013c7: SWAP2
000013c8: SWAP1
000013c9: POP
000013ca: JUMP
000013cb: JUMPDEST
000013cc: PUSH2 0x13d4
000013cf: DUP2
000013d0: PUSH2 0x0c62
000013d3: JUMP
000013d4: JUMPDEST
000013d5: DUP3
000013d6: MSTORE
000013d7: POP
000013d8: POP
000013d9: JUMP
000013da: JUMPDEST
000013db: PUSH0
000013dc: PUSH2 0x13e5
000013df: DUP4
000013e0: DUP4
000013e1: PUSH2 0x13cb
000013e4: JUMP
000013e5: JUMPDEST
000013e6: PUSH1 0x20
000013e8: DUP4
000013e9: ADD
000013ea: SWAP1
000013eb: POP
000013ec: SWAP3
000013ed: SWAP2
000013ee: POP
000013ef: POP
000013f0: JUMP
000013f1: JUMPDEST
000013f2: PUSH0
000013f3: PUSH1 0x20
000013f5: DUP3
000013f6: ADD
000013f7: SWAP1
000013f8: POP
000013f9: SWAP2
000013fa: SWAP1
000013fb: POP
000013fc: JUMP
000013fd: JUMPDEST
000013fe: PUSH0
000013ff: PUSH2 0x1407
00001402: DUP3
00001403: PUSH2 0x13a2
00001406: JUMP
00001407: JUMPDEST
00001408: PUSH2 0x1411
0000140b: DUP2
0000140c: DUP6
0000140d: PUSH2 0x13ac
00001410: JUMP
00001411: JUMPDEST
00001412: SWAP4
00001413: POP
00001414: PUSH2 0x141c
00001417: DUP4
00001418: PUSH2 0x13bc
0000141b: JUMP
0000141c: JUMPDEST
0000141d: DUP1
0000141e: PUSH0
0000141f: JUMPDEST
00001420: DUP4
00001421: DUP2
00001422: LT
00001423: ISZERO
00001424: PUSH2 0x144c
00001427: JUMPI
00001428: DUP2
00001429: MLOAD
0000142a: PUSH2 0x1433
0000142d: DUP9
0000142e: DUP3
0000142f: PUSH2 0x13da
00001432: JUMP
00001433: JUMPDEST
00001434: SWAP8
00001435: POP
00001436: PUSH2 0x143e
00001439: DUP4
0000143a: PUSH2 0x13f1
0000143d: JUMP
0000143e: JUMPDEST
0000143f: SWAP3
00001440: POP
00001441: POP
00001442: PUSH1 0x01
00001444: DUP2
00001445: ADD
00001446: SWAP1
00001447: POP
00001448: PUSH2 0x141f
0000144b: JUMP
0000144c: JUMPDEST
0000144d: POP
0000144e: DUP6
0000144f: SWAP4
00001450: POP
00001451: POP
00001452: POP
00001453: POP
00001454: SWAP3
00001455: SWAP2
00001456: POP
00001457: POP
00001458: JUMP
00001459: JUMPDEST
0000145a: PUSH0
0000145b: PUSH1 0x20
0000145d: DUP3
0000145e: ADD
0000145f: SWAP1
00001460: POP
00001461: DUP2
00001462: DUP2
00001463: SUB
00001464: PUSH0
00001465: DUP4
00001466: ADD
00001467: MSTORE
00001468: PUSH2 0x1471
0000146b: DUP2
0000146c: DUP5
0000146d: PUSH2 0x13fd
00001470: JUMP
00001471: JUMPDEST
00001472: SWAP1
00001473: POP
00001474: SWAP3
00001475: SWAP2
00001476: POP
00001477: POP
00001478: JUMP
00001479: JUMPDEST
0000147a: PUSH0
0000147b: DUP1
0000147c: PUSH0
0000147d: DUP1
0000147e: PUSH0
0000147f: DUP1
00001480: PUSH1 0xa0
00001482: DUP8
00001483: DUP10
00001484: SUB
00001485: SLT
00001486: ISZERO
00001487: PUSH2 0x1493
0000148a: JUMPI
0000148b: PUSH2 0x1492
0000148e: PUSH2 0x0cca
00001491: JUMP
00001492: JUMPDEST
00001493: JUMPDEST
00001494: PUSH0
00001495: PUSH2 0x14a0
00001498: DUP10
00001499: DUP3
0000149a: DUP11
0000149b: ADD
0000149c: PUSH2 0x0d6f
0000149f: JUMP
000014a0: JUMPDEST
000014a1: SWAP7
000014a2: POP
000014a3: POP
000014a4: PUSH1 0x20
000014a6: PUSH2 0x14b1
000014a9: DUP10
000014aa: DUP3
000014ab: DUP11
000014ac: ADD
000014ad: PUSH2 0x0d6f
000014b0: JUMP
000014b1: JUMPDEST
000014b2: SWAP6
000014b3: POP
000014b4: POP
000014b5: PUSH1 0x40
000014b7: PUSH2 0x14c2
000014ba: DUP10
000014bb: DUP3
000014bc: DUP11
000014bd: ADD
000014be: PUSH2 0x0ce8
000014c1: JUMP
000014c2: JUMPDEST
000014c3: SWAP5
000014c4: POP
000014c5: POP
000014c6: PUSH1 0x60
000014c8: PUSH2 0x14d3
000014cb: DUP10
000014cc: DUP3
000014cd: DUP11
000014ce: ADD
000014cf: PUSH2 0x0ce8
000014d2: JUMP
000014d3: JUMPDEST
000014d4: SWAP4
000014d5: POP
000014d6: POP
000014d7: PUSH1 0x80
000014d9: DUP8
000014da: ADD
000014db: CALLDATALOAD
000014dc: PUSH8 0xffffffffffffffff
000014e5: DUP2
000014e6: GT
000014e7: ISZERO
000014e8: PUSH2 0x14f4
000014eb: JUMPI
000014ec: PUSH2 0x14f3
000014ef: PUSH2 0x0cce
000014f2: JUMP
000014f3: JUMPDEST
000014f4: JUMPDEST
000014f5: PUSH2 0x1500
000014f8: DUP10
000014f9: DUP3
000014fa: DUP11
000014fb: ADD
000014fc: PUSH2 0x0d8f
000014ff: JUMP
00001500: JUMPDEST
00001501: SWAP3
00001502: POP
00001503: SWAP3
00001504: POP
00001505: POP
00001506: SWAP3
00001507: SWAP6
00001508: POP
00001509: SWAP3
0000150a: SWAP6
0000150b: POP
0000150c: SWAP3
0000150d: SWAP6
0000150e: JUMP
0000150f: JUMPDEST
00001510: PUSH0
00001511: DUP3
00001512: DUP3
00001513: MSTORE
00001514: PUSH1 0x20
00001516: DUP3
00001517: ADD
00001518: SWAP1
00001519: POP
0000151a: SWAP3
0000151b: SWAP2
0000151c: POP
0000151d: POP
0000151e: JUMP
0000151f: JUMPDEST
00001520: PUSH32 0x416c726561647920696e697469616c697a656400000000000000000000000000
00001541: PUSH0
00001542: DUP3
00001543: ADD
00001544: MSTORE
00001545: POP
00001546: JUMP
00001547: JUMPDEST
00001548: PUSH0
00001549: PUSH2 0x1553
0000154c: PUSH1 0x13
0000154e: DUP4
0000154f: PUSH2 0x150f
00001552: JUMP
00001553: JUMPDEST
00001554: SWAP2
00001555: POP
00001556: PUSH2 0x155e
00001559: DUP3
0000155a: PUSH2 0x151f
0000155d: JUMP
0000155e: JUMPDEST
0000155f: PUSH1 0x20
00001561: DUP3
00001562: ADD
00001563: SWAP1
00001564: POP
00001565: SWAP2
00001566: SWAP1
00001567: POP
00001568: JUMP
00001569: JUMPDEST
0000156a: PUSH0
0000156b: PUSH1 0x20
0000156d: DUP3
0000156e: ADD
0000156f: SWAP1
00001570: POP
00001571: DUP2
00001572: DUP2
00001573: SUB
00001574: PUSH0
00001575: DUP4
00001576: ADD
00001577: MSTORE
00001578: PUSH2 0x1580
0000157b: DUP2
0000157c: PUSH2 0x1547
0000157f: JUMP
00001580: JUMPDEST
00001581: SWAP1
00001582: POP
00001583: SWAP2
00001584: SWAP1
00001585: POP
00001586: JUMP
00001587: JUMPDEST
00001588: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000015a9: PUSH0
000015aa: MSTORE
000015ab: PUSH1 0x32
000015ad: PUSH1 0x04
000015af: MSTORE
000015b0: PUSH1 0x24
000015b2: PUSH0
000015b3: REVERT
000015b4: JUMPDEST
000015b5: PUSH32 0x4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c66000000
000015d6: PUSH0
000015d7: DUP3
000015d8: ADD
000015d9: MSTORE
000015da: POP
000015db: JUMP
000015dc: JUMPDEST
000015dd: PUSH0
000015de: PUSH2 0x15e8
000015e1: PUSH1 0x1d
000015e3: DUP4
000015e4: PUSH2 0x150f
000015e7: JUMP
000015e8: JUMPDEST
000015e9: SWAP2
000015ea: POP
000015eb: PUSH2 0x15f3
000015ee: DUP3
000015ef: PUSH2 0x15b4
000015f2: JUMP
000015f3: JUMPDEST
000015f4: PUSH1 0x20
000015f6: DUP3
000015f7: ADD
000015f8: SWAP1
000015f9: POP
000015fa: SWAP2
000015fb: SWAP1
000015fc: POP
000015fd: JUMP
000015fe: JUMPDEST
000015ff: PUSH0
00001600: PUSH1 0x20
00001602: DUP3
00001603: ADD
00001604: SWAP1
00001605: POP
00001606: DUP2
00001607: DUP2
00001608: SUB
00001609: PUSH0
0000160a: DUP4
0000160b: ADD
0000160c: MSTORE
0000160d: PUSH2 0x1615
00001610: DUP2
00001611: PUSH2 0x15dc
00001614: JUMP
00001615: JUMPDEST
00001616: SWAP1
00001617: POP
00001618: SWAP2
00001619: SWAP1
0000161a: POP
0000161b: JUMP
0000161c: JUMPDEST
0000161d: PUSH32 0x696e76616c6964207369676e6174757265730000000000000000000000000000
0000163e: PUSH0
0000163f: DUP3
00001640: ADD
00001641: MSTORE
00001642: POP
00001643: JUMP
00001644: JUMPDEST
00001645: PUSH0
00001646: PUSH2 0x1650
00001649: PUSH1 0x12
0000164b: DUP4
0000164c: PUSH2 0x150f
0000164f: JUMP
00001650: JUMPDEST
00001651: SWAP2
00001652: POP
00001653: PUSH2 0x165b
00001656: DUP3
00001657: PUSH2 0x161c
0000165a: JUMP
0000165b: JUMPDEST
0000165c: PUSH1 0x20
0000165e: DUP3
0000165f: ADD
00001660: SWAP1
00001661: POP
00001662: SWAP2
00001663: SWAP1
00001664: POP
00001665: JUMP
00001666: JUMPDEST
00001667: PUSH0
00001668: PUSH1 0x20
0000166a: DUP3
0000166b: ADD
0000166c: SWAP1
0000166d: POP
0000166e: DUP2
0000166f: DUP2
00001670: SUB
00001671: PUSH0
00001672: DUP4
00001673: ADD
00001674: MSTORE
00001675: PUSH2 0x167d
00001678: DUP2
00001679: PUSH2 0x1644
0000167c: JUMP
0000167d: JUMPDEST
0000167e: SWAP1
0000167f: POP
00001680: SWAP2
00001681: SWAP1
00001682: POP
00001683: JUMP
00001684: JUMPDEST
00001685: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000016a6: PUSH0
000016a7: MSTORE
000016a8: PUSH1 0x11
000016aa: PUSH1 0x04
000016ac: MSTORE
000016ad: PUSH1 0x24
000016af: PUSH0
000016b0: REVERT
000016b1: JUMPDEST
000016b2: PUSH0
000016b3: PUSH2 0x16bb
000016b6: DUP3
000016b7: PUSH2 0x0c82
000016ba: JUMP
000016bb: JUMPDEST
000016bc: SWAP2
000016bd: POP
000016be: PUSH2 0x16c6
000016c1: DUP4
000016c2: PUSH2 0x0c82
000016c5: JUMP
000016c6: JUMPDEST
000016c7: SWAP3
000016c8: POP
000016c9: DUP3
000016ca: DUP3
000016cb: ADD
000016cc: SWAP1
000016cd: POP
000016ce: DUP1
000016cf: DUP3
000016d0: GT
000016d1: ISZERO
000016d2: PUSH2 0x16de
000016d5: JUMPI
000016d6: PUSH2 0x16dd
000016d9: PUSH2 0x1684
000016dc: JUMP
000016dd: JUMPDEST
000016de: JUMPDEST
000016df: SWAP3
000016e0: SWAP2
000016e1: POP
000016e2: POP
000016e3: JUMP
000016e4: JUMPDEST
000016e5: PUSH0
000016e6: DUP2
000016e7: SWAP1
000016e8: POP
000016e9: SWAP3
000016ea: SWAP2
000016eb: POP
000016ec: POP
000016ed: JUMP
000016ee: JUMPDEST
000016ef: DUP3
000016f0: DUP2
000016f1: DUP4
000016f2: CALLDATACOPY
000016f3: PUSH0
000016f4: DUP4
000016f5: DUP4
000016f6: ADD
000016f7: MSTORE
000016f8: POP
000016f9: POP
000016fa: POP
000016fb: JUMP
000016fc: JUMPDEST
000016fd: PUSH0
000016fe: PUSH2 0x1707
00001701: DUP4
00001702: DUP6
00001703: PUSH2 0x16e4
00001706: JUMP
00001707: JUMPDEST
00001708: SWAP4
00001709: POP
0000170a: PUSH2 0x1714
0000170d: DUP4
0000170e: DUP6
0000170f: DUP5
00001710: PUSH2 0x16ee
00001713: JUMP
00001714: JUMPDEST
00001715: DUP3
00001716: DUP5
00001717: ADD
00001718: SWAP1
00001719: POP
0000171a: SWAP4
0000171b: SWAP3
0000171c: POP
0000171d: POP
0000171e: POP
0000171f: JUMP
00001720: JUMPDEST
00001721: PUSH0
00001722: PUSH2 0x172c
00001725: DUP3
00001726: DUP5
00001727: DUP7
00001728: PUSH2 0x16fc
0000172b: JUMP
0000172c: JUMPDEST
0000172d: SWAP2
0000172e: POP
0000172f: DUP2
00001730: SWAP1
00001731: POP
00001732: SWAP4
00001733: SWAP3
00001734: POP
00001735: POP
00001736: POP
00001737: JUMP
00001738: JUMPDEST
00001739: PUSH0
0000173a: PUSH2 0x1742
0000173d: DUP3
0000173e: PUSH2 0x10e6
00001741: JUMP
00001742: JUMPDEST
00001743: SWAP2
00001744: POP
00001745: PUSH2 0x174d
00001748: DUP4
00001749: PUSH2 0x10e6
0000174c: JUMP
0000174d: JUMPDEST
0000174e: SWAP3
0000174f: POP
00001750: DUP3
00001751: DUP3
00001752: ADD
00001753: SWAP1
00001754: POP
00001755: PUSH1 0xff
00001757: DUP2
00001758: GT
00001759: ISZERO
0000175a: PUSH2 0x1766
0000175d: JUMPI
0000175e: PUSH2 0x1765
00001761: PUSH2 0x1684
00001764: JUMP
00001765: JUMPDEST
00001766: JUMPDEST
00001767: SWAP3
00001768: SWAP2
00001769: POP
0000176a: POP
0000176b: JUMP
0000176c: JUMPDEST
0000176d: PUSH2 0x1775
00001770: DUP2
00001771: PUSH2 0x11dc
00001774: JUMP
00001775: JUMPDEST
00001776: DUP3
00001777: MSTORE
00001778: POP
00001779: POP
0000177a: JUMP
0000177b: JUMPDEST
0000177c: PUSH2 0x1784
0000177f: DUP2
00001780: PUSH2 0x10e6
00001783: JUMP
00001784: JUMPDEST
00001785: DUP3
00001786: MSTORE
00001787: POP
00001788: POP
00001789: JUMP
0000178a: JUMPDEST
0000178b: PUSH0
0000178c: PUSH1 0x80
0000178e: DUP3
0000178f: ADD
00001790: SWAP1
00001791: POP
00001792: PUSH2 0x179d
00001795: PUSH0
00001796: DUP4
00001797: ADD
00001798: DUP8
00001799: PUSH2 0x176c
0000179c: JUMP
0000179d: JUMPDEST
0000179e: PUSH2 0x17aa
000017a1: PUSH1 0x20
000017a3: DUP4
000017a4: ADD
000017a5: DUP7
000017a6: PUSH2 0x177b
000017a9: JUMP
000017aa: JUMPDEST
000017ab: PUSH2 0x17b7
000017ae: PUSH1 0x40
000017b0: DUP4
000017b1: ADD
000017b2: DUP6
000017b3: PUSH2 0x176c
000017b6: JUMP
000017b7: JUMPDEST
000017b8: PUSH2 0x17c4
000017bb: PUSH1 0x60
000017bd: DUP4
000017be: ADD
000017bf: DUP5
000017c0: PUSH2 0x176c
000017c3: JUMP
000017c4: JUMPDEST
000017c5: SWAP6
000017c6: SWAP5
000017c7: POP
000017c8: POP
000017c9: POP
000017ca: POP
000017cb: POP
000017cc: JUMP
000017cd: JUMPDEST
000017ce: PUSH0
000017cf: DUP2
000017d0: MLOAD
000017d1: SWAP1
000017d2: POP
000017d3: SWAP2
000017d4: SWAP1
000017d5: POP
000017d6: JUMP
000017d7: JUMPDEST
000017d8: DUP3
000017d9: DUP2
000017da: DUP4
000017db: MCOPY
000017dc: PUSH0
000017dd: DUP4
000017de: DUP4
000017df: ADD
000017e0: MSTORE
000017e1: POP
000017e2: POP
000017e3: POP
000017e4: JUMP
000017e5: JUMPDEST
000017e6: PUSH0
000017e7: PUSH2 0x17ef
000017ea: DUP3
000017eb: PUSH2 0x17cd
000017ee: JUMP
000017ef: JUMPDEST
000017f0: PUSH2 0x17f9
000017f3: DUP2
000017f4: DUP6
000017f5: PUSH2 0x16e4
000017f8: JUMP
000017f9: JUMPDEST
000017fa: SWAP4
000017fb: POP
000017fc: PUSH2 0x1809
000017ff: DUP2
00001800: DUP6
00001801: PUSH1 0x20
00001803: DUP7
00001804: ADD
00001805: PUSH2 0x17d7
00001808: JUMP
00001809: JUMPDEST
0000180a: DUP1
0000180b: DUP5
0000180c: ADD
0000180d: SWAP2
0000180e: POP
0000180f: POP
00001810: SWAP3
00001811: SWAP2
00001812: POP
00001813: POP
00001814: JUMP
00001815: JUMPDEST
00001816: PUSH0
00001817: DUP2
00001818: SWAP1
00001819: POP
0000181a: SWAP2
0000181b: SWAP1
0000181c: POP
0000181d: JUMP
0000181e: JUMPDEST
0000181f: PUSH2 0x182f
00001822: PUSH2 0x182a
00001825: DUP3
00001826: PUSH2 0x11dc
00001829: JUMP
0000182a: JUMPDEST
0000182b: PUSH2 0x1815
0000182e: JUMP
0000182f: JUMPDEST
00001830: DUP3
00001831: MSTORE
00001832: POP
00001833: POP
00001834: JUMP
00001835: JUMPDEST
00001836: PUSH0
00001837: PUSH2 0x1840
0000183a: DUP3
0000183b: DUP6
0000183c: PUSH2 0x17e5
0000183f: JUMP
00001840: JUMPDEST
00001841: SWAP2
00001842: POP
00001843: PUSH2 0x184c
00001846: DUP3
00001847: DUP5
00001848: PUSH2 0x181e
0000184b: JUMP
0000184c: JUMPDEST
0000184d: PUSH1 0x20
0000184f: DUP3
00001850: ADD
00001851: SWAP2
00001852: POP
00001853: DUP2
00001854: SWAP1
00001855: POP
00001856: SWAP4
00001857: SWAP3
00001858: POP
00001859: POP
0000185a: POP
0000185b: JUMP
0000185c: JUMPDEST
0000185d: PUSH0
0000185e: DUP2
0000185f: PUSH1 0x60
00001861: SHL
00001862: SWAP1
00001863: POP
00001864: SWAP2
00001865: SWAP1
00001866: POP
00001867: JUMP
00001868: JUMPDEST
00001869: PUSH0
0000186a: PUSH2 0x1872
0000186d: DUP3
0000186e: PUSH2 0x185c
00001871: JUMP
00001872: JUMPDEST
00001873: SWAP1
00001874: POP
00001875: SWAP2
00001876: SWAP1
00001877: POP
00001878: JUMP
00001879: JUMPDEST
0000187a: PUSH0
0000187b: PUSH2 0x1883
0000187e: DUP3
0000187f: PUSH2 0x1868
00001882: JUMP
00001883: JUMPDEST
00001884: SWAP1
00001885: POP
00001886: SWAP2
00001887: SWAP1
00001888: POP
00001889: JUMP
0000188a: JUMPDEST
0000188b: PUSH2 0x189b
0000188e: PUSH2 0x1896
00001891: DUP3
00001892: PUSH2 0x0c62
00001895: JUMP
00001896: JUMPDEST
00001897: PUSH2 0x1879
0000189a: JUMP
0000189b: JUMPDEST
0000189c: DUP3
0000189d: MSTORE
0000189e: POP
0000189f: POP
000018a0: JUMP
000018a1: JUMPDEST
000018a2: PUSH0
000018a3: DUP2
000018a4: SWAP1
000018a5: POP
000018a6: SWAP2
000018a7: SWAP1
000018a8: POP
000018a9: JUMP
000018aa: JUMPDEST
000018ab: PUSH2 0x18bb
000018ae: PUSH2 0x18b6
000018b1: DUP3
000018b2: PUSH2 0x0c82
000018b5: JUMP
000018b6: JUMPDEST
000018b7: PUSH2 0x18a1
000018ba: JUMP
000018bb: JUMPDEST
000018bc: DUP3
000018bd: MSTORE
000018be: POP
000018bf: POP
000018c0: JUMP
000018c1: JUMPDEST
000018c2: PUSH0
000018c3: PUSH2 0x18cc
000018c6: DUP3
000018c7: DUP9
000018c8: PUSH2 0x188a
000018cb: JUMP
000018cc: JUMPDEST
000018cd: PUSH1 0x14
000018cf: DUP3
000018d0: ADD
000018d1: SWAP2
000018d2: POP
000018d3: PUSH2 0x18dc
000018d6: DUP3
000018d7: DUP8
000018d8: PUSH2 0x188a
000018db: JUMP
000018dc: JUMPDEST
000018dd: PUSH1 0x14
000018df: DUP3
000018e0: ADD
000018e1: SWAP2
000018e2: POP
000018e3: PUSH2 0x18ec
000018e6: DUP3
000018e7: DUP7
000018e8: PUSH2 0x18aa
000018eb: JUMP
000018ec: JUMPDEST
000018ed: PUSH1 0x20
000018ef: DUP3
000018f0: ADD
000018f1: SWAP2
000018f2: POP
000018f3: PUSH2 0x18fc
000018f6: DUP3
000018f7: DUP6
000018f8: PUSH2 0x17e5
000018fb: JUMP
000018fc: JUMPDEST
000018fd: SWAP2
000018fe: POP
000018ff: PUSH2 0x1908
00001902: DUP3
00001903: DUP5
00001904: PUSH2 0x18aa
00001907: JUMP
00001908: JUMPDEST
00001909: PUSH1 0x20
0000190b: DUP3
0000190c: ADD
0000190d: SWAP2
0000190e: POP
0000190f: DUP2
00001910: SWAP1
00001911: POP
00001912: SWAP7
00001913: SWAP6
00001914: POP
00001915: POP
00001916: POP
00001917: POP
00001918: POP
00001919: POP
0000191a: JUMP
0000191b: INVALID
0000191c: LOG2
0000191d: PUSH5 0x6970667358
00001923: UNKNOWN(0x22)
00001924: SLT
00001925: KECCAK256
00001926: SWAP11
00001927: SLOAD
00001928: UNKNOWN(0xA6)
00001929: POP
0000192a: TSTORE
0000192b: UNKNOWN(0xAE)
0000192c: SWAP5
0000192d: UNKNOWN(0xA5)
0000192e: DUP13
0000192f: BALANCE
00001930: UNKNOWN(0xFC)
00001931: UNKNOWN(0xE9)
00001932: PUSH28 0x0f775bcc3224ff8c43dafd758eca0f92a2097464736f6c634300081a
0000194f: STOP
00001950: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high access_control codex Initializer can be called by anyone before owners are set 85 no
view
evidence_json
{
    "evidence": "`initialize` is `public` and only checks `owners.length == 0`, with no access control.",
    "locations": [
        "contracts/Contract.sol:46",
        "contracts/Contract.sol:47",
        "contracts/Contract.sol:48",
        "contracts/Contract.sol:57"
    ],
    "recommendation": "Restrict `initialize` to a trusted deployer/proxy admin (e.g., `initializer` + `onlyProxy`/`onlyOwner`), or set owners in a constructor for non\u2011proxy deployments. Ensure initialization is performed atomically during deployment.",
    "exploit_scenario": "If the proxy/contract is deployed without immediately calling `initialize`, an attacker can front\u2011run the first initialization call, set themselves as the sole owner with `required = 1`, and then authorize arbitrary spends to drain funds."
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xd34f0afb5d99e15611c338f5c67085e554371194322979bb9e71971b631d4448
call_targets: 0x95ca2f7959f8848795dfb0868c1b0c59dd4e9330
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xd34f0afb5d99e15611c338f5c67085e554371194322979bb9e71971b631d4448",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x95ca2f7959f8848795dfb0868c1b0c59dd4e9330"
    ],
    "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": "0x843b1a09",
            "selector": "0x843b1a09",
            "calldata_variants": [
                "0x843b1a09",
                "0x843b1a090000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa0e67e2b",
            "selector": "0xa0e67e2b",
            "calldata_variants": [
                "0xa0e67e2b",
                "0xa0e67e2b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc6a2a9f1",
            "selector": "0xc6a2a9f1",
            "calldata_variants": [
                "0xc6a2a9f1",
                "0xc6a2a9f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd74f8edd",
            "selector": "0xd74f8edd",
            "calldata_variants": [
                "0xd74f8edd",
                "0xd74f8edd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdc8452cd",
            "selector": "0xdc8452cd",
            "calldata_variants": [
                "0xdc8452cd",
                "0xdc8452cd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf23a6e61",
            "selector": "0xf23a6e61",
            "calldata_variants": [
                "0xf23a6e61",
                "0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x025e7c27",
            "selector": "0x025e7c27",
            "calldata_variants": [
                "0x025e7c27",
                "0x025e7c270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1398a5f6",
            "selector": "0x1398a5f6",
            "calldata_variants": [
                "0x1398a5f6",
                "0x1398a5f60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1850,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [],
    "untrusted_call_count": 1
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xd34f0afb5d99e15611c338f5c67085e554371194322979bb9e71971b631d4448
call_targets: 0x95ca2f7959f8848795dfb0868c1b0c59dd4e9330
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xd34f0afb5d99e15611c338f5c67085e554371194322979bb9e71971b631d4448",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x95ca2f7959f8848795dfb0868c1b0c59dd4e9330"
    ],
    "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": "0x843b1a09",
            "selector": "0x843b1a09",
            "calldata_variants": [
                "0x843b1a09",
                "0x843b1a090000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa0e67e2b",
            "selector": "0xa0e67e2b",
            "calldata_variants": [
                "0xa0e67e2b",
                "0xa0e67e2b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc6a2a9f1",
            "selector": "0xc6a2a9f1",
            "calldata_variants": [
                "0xc6a2a9f1",
                "0xc6a2a9f10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd74f8edd",
            "selector": "0xd74f8edd",
            "calldata_variants": [
                "0xd74f8edd",
                "0xd74f8edd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdc8452cd",
            "selector": "0xdc8452cd",
            "calldata_variants": [
                "0xdc8452cd",
                "0xdc8452cd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf23a6e61",
            "selector": "0xf23a6e61",
            "calldata_variants": [
                "0xf23a6e61",
                "0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x025e7c27",
            "selector": "0x025e7c27",
            "calldata_variants": [
                "0x025e7c27",
                "0x025e7c270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1398a5f6",
            "selector": "0x1398a5f6",
            "calldata_variants": [
                "0x1398a5f6",
                "0x1398a5f60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1850,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}
medium other codex External call failures consume nonce and can mask failed token transfers 75 no
view
evidence_json
{
    "evidence": "Low-level call result is only used to emit an event; failures do not revert and return data is ignored.",
    "locations": [
        "contracts/Contract.sol:99",
        "contracts/Contract.sol:102",
        "contracts/Contract.sol:104",
        "contracts/Contract.sol:105",
        "contracts/Contract.sol:107"
    ],
    "recommendation": "Require `sent` to be true and revert otherwise. For ERC20-style calls, if return data is present, decode it and require it to be `true` to avoid silent failures. Only increment `spendNonce` after successful execution.",
    "exploit_scenario": "A signed spend to an ERC20 that returns `false` (without reverting) will still be treated as successful: `sent` is true, `Spent` is emitted, and `spendNonce` increments, but no tokens move. Similarly, any revert or insufficient balance will increment the nonce and burn signatures, forcing new signatures and enabling denial\u2011of\u2011service against the intended transfer."
}
low auth codex Signed message lacks chain/domain separation (cross-chain replay risk) 65 no
view
evidence_json
{
    "evidence": "Message hashing omits `chainid` and domain separation beyond `address(this)`.",
    "locations": [
        "contracts/Contract.sol:81",
        "contracts/Contract.sol:83",
        "contracts/Contract.sol:87",
        "contracts/Contract.sol:90"
    ],
    "recommendation": "Include `block.chainid` (or an EIP\u2011712 domain separator) in the signed message to prevent cross\u2011chain replay.",
    "exploit_scenario": "If the same contract address exists on another chain (e.g., via CREATE2) with the same nonce, a valid signature from one chain can be replayed on the other to authorize a spend."
}