019ba9e0-be33-70d3-85ba-7d14b6e68e64
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 38089 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38090 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38091 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38092 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38093 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38094 | detector.run | complete | 1 / 3 | 3 months ago |
| 38095 | validation.fork | complete | 1 / 3 | 3 months ago |
| 38182 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 38183 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-dif0hscn)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-dif0hscn)
Reentrancy in MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341):
External calls:
- (success,None) = transaction.destination.call{value: transaction.value}(transaction.data) (contracts/MultiSigWalletWithTimelock.sol#332)
State variables written after the call(s):
- transaction.executed = false (contracts/MultiSigWalletWithTimelock.sol#337)
MultiSigWalletWithTimelock.transactions (contracts/MultiSigWalletWithTimelock.sol#22) can be used in cross function reentrancies:
- MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341)
- MultiSigWalletWithTimelock.getTransactionCount(bool,bool) (contracts/MultiSigWalletWithTimelock.sol#390-400)
- MultiSigWalletWithTimelock.isEmergencyCall(uint256) (contracts/MultiSigWalletWithTimelock.sol#278-301)
- MultiSigWalletWithTimelock.notExecuted(uint256) (contracts/MultiSigWalletWithTimelock.sol#82-86)
- MultiSigWalletWithTimelock.submitTransaction(address,uint256,bytes) (contracts/MultiSigWalletWithTimelock.sol#241-257)
- MultiSigWalletWithTimelock.transactionExists(uint256) (contracts/MultiSigWalletWithTimelock.sol#64-68)
- MultiSigWalletWithTimelock.transactions (contracts/MultiSigWalletWithTimelock.sol#22)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
Reentrancy in MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341):
External calls:
- (success,None) = transaction.destination.call{value: transaction.value}(transaction.data) (contracts/MultiSigWalletWithTimelock.sol#332)
Event emitted after the call(s):
- Execution(transactionId) (contracts/MultiSigWalletWithTimelock.sol#334)
- ExecutionFailure(transactionId) (contracts/MultiSigWalletWithTimelock.sol#336)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= unlockTimes[transactionId],TRANSACTION_NEED_TO_UNLOCK) (contracts/MultiSigWalletWithTimelock.sol#324-327)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Low level call in MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341):
- (success,None) = transaction.destination.call{value: transaction.value}(transaction.data) (contracts/MultiSigWalletWithTimelock.sol#332)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Parameter MultiSigWalletWithTimelock.changeRequirement(uint256)._required (contracts/MultiSigWalletWithTimelock.sol#215) is not in mixedCase
Parameter MultiSigWalletWithTimelock.changeLockSeconds(uint256)._lockSeconds (contracts/MultiSigWalletWithTimelock.sol#227) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Loop condition i < owners.length (contracts/MultiSigWalletWithTimelock.sol#378) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < emergencyCalls.length (contracts/MultiSigWalletWithTimelock.sol#285) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < owners.length (contracts/MultiSigWalletWithTimelock.sol#426) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < owners.length (contracts/MultiSigWalletWithTimelock.sol#199) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < owners.length (contracts/MultiSigWalletWithTimelock.sol#354) should use cached array length instead of referencing `length` member of the storage array.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length
. analyzed (1 contracts with 100 detectors), 11 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.25",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.25",
"install_stderr": null,
"install_stdout": "Installing solc '0.8.25'...\nVersion '0.8.25' installed."
},
"solc_args": "--base-path /tmp/slither-dif0hscn --allow-paths /tmp/slither-dif0hscn,/tmp/slither-dif0hscn/lib,/tmp/slither-dif0hscn/src",
"remappings": [],
"source_files": [
"contracts/MultiSigWalletWithTimelock.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 11,
"workspace_hash": "2bf0ef932787159eb8a1761a5326743592fb575bf6d99a2d91ec77af18400f85",
"duration_seconds": 1.0329816341400146,
"solc_version_requested": "0.8.25"
}
{"no_findings":false,"summary":"Identified two timelock-logic flaws that allow bypassing or shortening the intended delay on transactions.","findings":[{"severity":"medium","category":"access_control","title":"Timelock bypass for any destination via emergency selector match","exploit_scenario":"Owners submit a transaction to an attacker-controlled contract that implements `setMarketBorrowUsability(uint16,bool)`. Because the calldata selector/length matches an emergency pattern, `unlockTimes` is never set, so the transaction can execute immediately once confirmations reach the threshold, bypassing the timelock even though the destination is not the intended emergency target.","recommendation":"Bind emergency-call exemptions to specific destination addresses (or full calldata hashes) instead of selector/length alone, or remove the bypass. At minimum, maintain a whitelist of allowed destinations for each emergency selector and enforce it in `isEmergencyCall`.","evidence":"`confirmTransaction` only sets `unlockTimes` when `!isEmergencyCall(...)`, and `isEmergencyCall` checks only selector and calldata length, not destination.","locations":["contracts/MultiSigWalletWithTimelock.sol:271","contracts/MultiSigWalletWithTimelock.sol:278"]},{"severity":"medium","category":"access_control","title":"Unlock time persists after revocation, enabling immediate execution after re-confirmation","exploit_scenario":"Owners reach the confirmation threshold to set `unlockTimes`, then revoke to drop below the threshold. After the unlock time passes, they can re-confirm and execute immediately, bypassing the intended delay from the final approval. Observers could be misled into thinking the transaction is inactive until it suddenly executes without a fresh timelock window.","recommendation":"Clear or recompute `unlockTimes[transactionId]` when confirmations fall below `required`, or store and enforce a `lastThresholdReachedAt` that updates every time the required confirmation count is regained.","evidence":"`confirmTransaction` sets `unlockTimes` once when the threshold is met, but `revokeConfirmation` does not reset it; `executeTransaction` only checks the stored `unlockTimes`.","locations":["contracts/MultiSigWalletWithTimelock.sol:271","contracts/MultiSigWalletWithTimelock.sol:306","contracts/MultiSigWalletWithTimelock.sol:324"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-o11gq_z8
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019baa71-3131-7841-8197-a23fc129d6bb
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading audit bundle**
exec
/bin/bash -lc ls in /tmp/codex-o11gq_z8 succeeded in 9ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-o11gq_z8 succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/MultiSigWalletWithTimelock.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;
contract MultiSigWalletWithTimelock {
uint256 constant public MAX_OWNER_COUNT = 50;
uint256 public lockSeconds = 0;
event Confirmation(address indexed sender, uint256 indexed transactionId);
event Revocation(address indexed sender, uint256 indexed transactionId);
event Submission(uint256 indexed transactionId);
event Execution(uint256 indexed transactionId);
event ExecutionFailure(uint256 indexed transactionId);
thinking
**Analyzing multisig timelock and emergency call risks**
I’m auditing a multisig contract with a timelock and emergency call bypass, finding two main issues: first, the emergency call bypass lets any call with a specific function selector skip the timelock regardless of destination, which could be exploited to execute malicious calls quickly; second, the timelock’s unlock time isn’t reset if confirmations are revoked and later regained, letting owners circumvent the intended delay. These vulnerabilities both fall under access control concerns and need clear documented findings with example exploit scenarios and source locations.
exec
/bin/bash -lc 'nl -ba contracts/MultiSigWalletWithTimelock.sol' in /tmp/codex-o11gq_z8 succeeded in 22ms:
1 // SPDX-License-Identifier: MIT
2
3 pragma solidity 0.8.25;
4
5 contract MultiSigWalletWithTimelock {
6
7 uint256 constant public MAX_OWNER_COUNT = 50;
8 uint256 public lockSeconds = 0;
9
10 event Confirmation(address indexed sender, uint256 indexed transactionId);
11 event Revocation(address indexed sender, uint256 indexed transactionId);
12 event Submission(uint256 indexed transactionId);
13 event Execution(uint256 indexed transactionId);
14 event ExecutionFailure(uint256 indexed transactionId);
15 event Deposit(address indexed sender, uint256 value);
16 event OwnerAddition(address indexed owner);
17 event OwnerRemoval(address indexed owner);
18 event RequirementChange(uint256 required);
19 event UnlockTimeSet(uint256 indexed transactionId, uint256 confirmationTime);
20 event LockSecondsChange(uint256 lockSeconds);
thinking
**Drafting detailed findings JSON with line references**
I'm carefully organizing two findings about timelock bypass and unlock time handling, highlighting exploit scenarios, recommendations, evidence lines, and categorizing severity and access control. I'll produce a JSON matching the schema with precise code locations and concise summaries for the user.
codex
{"no_findings":false,"summary":"Identified two timelock-logic flaws that allow bypassing or shortening the intended delay on transactions.","findings":[{"severity":"medium","category":"access_control","title":"Timelock bypass for any destination via emergency selector match","exploit_scenario":"Owners submit a transaction to an attacker-controlled contract that implements `setMarketBorrowUsability(uint16,bool)`. Because the calldata selector/length matches an emergency pattern, `unlockTimes` is never set, so the transaction can execute immediately once confirmations reach the threshold, bypassing the timelock even though the destination is not the intended emergency target.","recommendation":"Bind emergency-call exemptions to specific destination addresses (or full calldata hashes) instead of selector/length alone, or remove the bypass. At minimum, maintain a whitelist of allowed destinations for each emergency selector and enforce it in `isEmergencyCall`.","evidence":"`confirmTransaction` only sets `unlockTimes` when `!isEmergencyCall(...)`, and `isEmergencyCall` checks only selector and calldata length, not destination.","locations":["contracts/MultiSigWalletWithTimelock.sol:271","contracts/MultiSigWalletWithTimelock.sol:278"]},{"severity":"medium","category":"access_control","title":"Unlock time persists after revocation, enabling immediate execution after re-confirmation","exploit_scenario":"Owners reach the confirmation threshold to set `unlockTimes`, then revoke to drop below the threshold. After the unlock time passes, they can re-confirm and execute immediately, bypassing the intended delay from the final approval. Observers could be misled into thinking the transaction is inactive until it suddenly executes without a fresh timelock window.","recommendation":"Clear or recompute `unlockTimes[transactionId]` when confirmations fall below `required`, or store and enforce a `lastThresholdReachedAt` that updates every time the required confirmation count is regained.","evidence":"`confirmTransaction` sets `unlockTimes` once when the threshold is met, but `revokeConfirmation` does not reset it; `executeTransaction` only checks the stored `unlockTimes`.","locations":["contracts/MultiSigWalletWithTimelock.sol:271","contracts/MultiSigWalletWithTimelock.sol:306","contracts/MultiSigWalletWithTimelock.sol:324"]}]}
tokens used
20,669
{
"codex": {
"ran_at": "2026-01-11T00:26:24.401447+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Identified two timelock-logic flaws that allow bypassing or shortening the intended delay on transactions.",
"raw_final": {
"summary": "Identified two timelock-logic flaws that allow bypassing or shortening the intended delay on transactions.",
"findings": [
{
"title": "Timelock bypass for any destination via emergency selector match",
"category": "access_control",
"evidence": "`confirmTransaction` only sets `unlockTimes` when `!isEmergencyCall(...)`, and `isEmergencyCall` checks only selector and calldata length, not destination.",
"severity": "medium",
"locations": [
"contracts/MultiSigWalletWithTimelock.sol:271",
"contracts/MultiSigWalletWithTimelock.sol:278"
],
"recommendation": "Bind emergency-call exemptions to specific destination addresses (or full calldata hashes) instead of selector/length alone, or remove the bypass. At minimum, maintain a whitelist of allowed destinations for each emergency selector and enforce it in `isEmergencyCall`.",
"exploit_scenario": "Owners submit a transaction to an attacker-controlled contract that implements `setMarketBorrowUsability(uint16,bool)`. Because the calldata selector/length matches an emergency pattern, `unlockTimes` is never set, so the transaction can execute immediately once confirmations reach the threshold, bypassing the timelock even though the destination is not the intended emergency target."
},
{
"title": "Unlock time persists after revocation, enabling immediate execution after re-confirmation",
"category": "access_control",
"evidence": "`confirmTransaction` sets `unlockTimes` once when the threshold is met, but `revokeConfirmation` does not reset it; `executeTransaction` only checks the stored `unlockTimes`.",
"severity": "medium",
"locations": [
"contracts/MultiSigWalletWithTimelock.sol:271",
"contracts/MultiSigWalletWithTimelock.sol:306",
"contracts/MultiSigWalletWithTimelock.sol:324"
],
"recommendation": "Clear or recompute `unlockTimes[transactionId]` when confirmations fall below `required`, or store and enforce a `lastThresholdReachedAt` that updates every time the required confirmation count is regained.",
"exploit_scenario": "Owners reach the confirmation threshold to set `unlockTimes`, then revoke to drop below the threshold. After the unlock time passes, they can re-confirm and execute immediately, bypassing the intended delay from the final approval. Observers could be misled into thinking the transaction is inactive until it suddenly executes without a fresh timelock window."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x016a 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x9ace38c2 00000019: GT 0000001a: PUSH2 0x00d1 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xc01a8c84 00000024: GT 00000025: PUSH2 0x008a 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd74f8edd 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd74f8edd 0000003a: EQ 0000003b: PUSH2 0x0501 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xdc8452cd 00000045: EQ 00000046: PUSH2 0x0516 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xe20056e6 00000050: EQ 00000051: PUSH2 0x052c 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xee22610b 0000005b: EQ 0000005c: PUSH2 0x054c 0000005f: JUMPI 00000060: PUSH2 0x01ae 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xc01a8c84 0000006b: EQ 0000006c: PUSH2 0x04ac 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xc0af0227 00000076: EQ 00000077: PUSH2 0x04cc 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xc6427474 00000081: EQ 00000082: PUSH2 0x04e1 00000085: JUMPI 00000086: PUSH2 0x01ae 00000089: JUMP 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0x9ace38c2 00000091: EQ 00000092: PUSH2 0x03ee 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xa0e67e2b 0000009c: EQ 0000009d: PUSH2 0x041e 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xb5dc40c3 000000a7: EQ 000000a8: PUSH2 0x0440 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xb77bf600 000000b2: EQ 000000b3: PUSH2 0x0460 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xba51a6df 000000bd: EQ 000000be: PUSH2 0x0476 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0xbfa6fddb 000000c8: EQ 000000c9: PUSH2 0x0496 000000cc: JUMPI 000000cd: PUSH2 0x01ae 000000d0: JUMP 000000d1: JUMPDEST 000000d2: DUP1 000000d3: PUSH4 0x7065cb48 000000d8: GT 000000d9: PUSH2 0x0123 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x7065cb48 000000e3: EQ 000000e4: PUSH2 0x030c 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x76ac947a 000000ee: EQ 000000ef: PUSH2 0x032c 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x784547a7 000000f9: EQ 000000fa: PUSH2 0x0359 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x86384afc 00000104: EQ 00000105: PUSH2 0x0379 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x8b51d13f 0000010f: EQ 00000110: PUSH2 0x03ae 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x8c22d5d3 0000011a: EQ 0000011b: PUSH2 0x03ce 0000011e: JUMPI 0000011f: PUSH2 0x01ae 00000122: JUMP 00000123: JUMPDEST 00000124: DUP1 00000125: PUSH4 0x025e7c27 0000012a: EQ 0000012b: PUSH2 0x01e6 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x173825d9 00000135: EQ 00000136: PUSH2 0x0223 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x20ea8d86 00000140: EQ 00000141: PUSH2 0x0243 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0x2f54bf6e 0000014b: EQ 0000014c: PUSH2 0x0263 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x3411c81c 00000156: EQ 00000157: PUSH2 0x02a3 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x54741525 00000161: EQ 00000162: PUSH2 0x02de 00000165: JUMPI 00000166: PUSH2 0x01ae 00000169: JUMP 0000016a: JUMPDEST 0000016b: CALLDATASIZE 0000016c: PUSH2 0x01ae 0000016f: JUMPI 00000170: CALLVALUE 00000171: ISZERO 00000172: PUSH2 0x01ac 00000175: JUMPI 00000176: PUSH1 0x40 00000178: MLOAD 00000179: CALLVALUE 0000017a: DUP2 0000017b: MSTORE 0000017c: CALLER 0000017d: SWAP1 0000017e: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 0000019f: SWAP1 000001a0: PUSH1 0x20 000001a2: ADD 000001a3: JUMPDEST 000001a4: PUSH1 0x40 000001a6: MLOAD 000001a7: DUP1 000001a8: SWAP2 000001a9: SUB 000001aa: SWAP1 000001ab: LOG2 000001ac: JUMPDEST 000001ad: STOP 000001ae: JUMPDEST 000001af: CALLVALUE 000001b0: ISZERO 000001b1: PUSH2 0x01ac 000001b4: JUMPI 000001b5: PUSH1 0x40 000001b7: MLOAD 000001b8: CALLVALUE 000001b9: DUP2 000001ba: MSTORE 000001bb: CALLER 000001bc: SWAP1 000001bd: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 000001de: SWAP1 000001df: PUSH1 0x20 000001e1: ADD 000001e2: PUSH2 0x01a3 000001e5: JUMP 000001e6: JUMPDEST 000001e7: CALLVALUE 000001e8: DUP1 000001e9: ISZERO 000001ea: PUSH2 0x01f2 000001ed: JUMPI 000001ee: PUSH1 0x00 000001f0: DUP1 000001f1: REVERT 000001f2: JUMPDEST 000001f3: POP 000001f4: PUSH2 0x0206 000001f7: PUSH2 0x0201 000001fa: CALLDATASIZE 000001fb: PUSH1 0x04 000001fd: PUSH2 0x19d1 00000200: JUMP 00000201: JUMPDEST 00000202: PUSH2 0x056c 00000205: JUMP 00000206: JUMPDEST 00000207: PUSH1 0x40 00000209: MLOAD 0000020a: PUSH1 0x01 0000020c: PUSH1 0x01 0000020e: PUSH1 0xa0 00000210: SHL 00000211: SUB 00000212: SWAP1 00000213: SWAP2 00000214: AND 00000215: DUP2 00000216: MSTORE 00000217: PUSH1 0x20 00000219: ADD 0000021a: JUMPDEST 0000021b: PUSH1 0x40 0000021d: MLOAD 0000021e: DUP1 0000021f: SWAP2 00000220: SUB 00000221: SWAP1 00000222: RETURN 00000223: JUMPDEST 00000224: CALLVALUE 00000225: DUP1 00000226: ISZERO 00000227: PUSH2 0x022f 0000022a: JUMPI 0000022b: PUSH1 0x00 0000022d: DUP1 0000022e: REVERT 0000022f: JUMPDEST 00000230: POP 00000231: PUSH2 0x01ac 00000234: PUSH2 0x023e 00000237: CALLDATASIZE 00000238: PUSH1 0x04 0000023a: PUSH2 0x1a06 0000023d: JUMP 0000023e: JUMPDEST 0000023f: PUSH2 0x0596 00000242: JUMP 00000243: JUMPDEST 00000244: CALLVALUE 00000245: DUP1 00000246: ISZERO 00000247: PUSH2 0x024f 0000024a: JUMPI 0000024b: PUSH1 0x00 0000024d: DUP1 0000024e: REVERT 0000024f: JUMPDEST 00000250: POP 00000251: PUSH2 0x01ac 00000254: PUSH2 0x025e 00000257: CALLDATASIZE 00000258: PUSH1 0x04 0000025a: PUSH2 0x19d1 0000025d: JUMP 0000025e: JUMPDEST 0000025f: PUSH2 0x0771 00000262: JUMP 00000263: JUMPDEST 00000264: CALLVALUE 00000265: DUP1 00000266: ISZERO 00000267: PUSH2 0x026f 0000026a: JUMPI 0000026b: PUSH1 0x00 0000026d: DUP1 0000026e: REVERT 0000026f: JUMPDEST 00000270: POP 00000271: PUSH2 0x0293 00000274: PUSH2 0x027e 00000277: CALLDATASIZE 00000278: PUSH1 0x04 0000027a: PUSH2 0x1a06 0000027d: JUMP 0000027e: JUMPDEST 0000027f: PUSH1 0x03 00000281: PUSH1 0x20 00000283: MSTORE 00000284: PUSH1 0x00 00000286: SWAP1 00000287: DUP2 00000288: MSTORE 00000289: PUSH1 0x40 0000028b: SWAP1 0000028c: KECCAK256 0000028d: SLOAD 0000028e: PUSH1 0xff 00000290: AND 00000291: DUP2 00000292: JUMP 00000293: JUMPDEST 00000294: PUSH1 0x40 00000296: MLOAD 00000297: SWAP1 00000298: ISZERO 00000299: ISZERO 0000029a: DUP2 0000029b: MSTORE 0000029c: PUSH1 0x20 0000029e: ADD 0000029f: PUSH2 0x021a 000002a2: JUMP 000002a3: JUMPDEST 000002a4: CALLVALUE 000002a5: DUP1 000002a6: ISZERO 000002a7: PUSH2 0x02af 000002aa: JUMPI 000002ab: PUSH1 0x00 000002ad: DUP1 000002ae: REVERT 000002af: JUMPDEST 000002b0: POP 000002b1: PUSH2 0x0293 000002b4: PUSH2 0x02be 000002b7: CALLDATASIZE 000002b8: PUSH1 0x04 000002ba: PUSH2 0x1a28 000002bd: JUMP 000002be: JUMPDEST 000002bf: PUSH1 0x02 000002c1: PUSH1 0x20 000002c3: SWAP1 000002c4: DUP2 000002c5: MSTORE 000002c6: PUSH1 0x00 000002c8: SWAP3 000002c9: DUP4 000002ca: MSTORE 000002cb: PUSH1 0x40 000002cd: DUP1 000002ce: DUP5 000002cf: KECCAK256 000002d0: SWAP1 000002d1: SWAP2 000002d2: MSTORE 000002d3: SWAP1 000002d4: DUP3 000002d5: MSTORE 000002d6: SWAP1 000002d7: KECCAK256 000002d8: SLOAD 000002d9: PUSH1 0xff 000002db: AND 000002dc: DUP2 000002dd: JUMP 000002de: JUMPDEST 000002df: CALLVALUE 000002e0: DUP1 000002e1: ISZERO 000002e2: PUSH2 0x02ea 000002e5: JUMPI 000002e6: PUSH1 0x00 000002e8: DUP1 000002e9: REVERT 000002ea: JUMPDEST 000002eb: POP 000002ec: PUSH2 0x02fe 000002ef: PUSH2 0x02f9 000002f2: CALLDATASIZE 000002f3: PUSH1 0x04 000002f5: PUSH2 0x1a64 000002f8: JUMP 000002f9: JUMPDEST 000002fa: PUSH2 0x08a7 000002fd: JUMP 000002fe: JUMPDEST 000002ff: PUSH1 0x40 00000301: MLOAD 00000302: SWAP1 00000303: DUP2 00000304: MSTORE 00000305: PUSH1 0x20 00000307: ADD 00000308: PUSH2 0x021a 0000030b: JUMP 0000030c: JUMPDEST 0000030d: CALLVALUE 0000030e: DUP1 0000030f: ISZERO 00000310: PUSH2 0x0318 00000313: JUMPI 00000314: PUSH1 0x00 00000316: DUP1 00000317: REVERT 00000318: JUMPDEST 00000319: POP 0000031a: PUSH2 0x01ac 0000031d: PUSH2 0x0327 00000320: CALLDATASIZE 00000321: PUSH1 0x04 00000323: PUSH2 0x1a06 00000326: JUMP 00000327: JUMPDEST 00000328: PUSH2 0x091a 0000032b: JUMP 0000032c: JUMPDEST 0000032d: CALLVALUE 0000032e: DUP1 0000032f: ISZERO 00000330: PUSH2 0x0338 00000333: JUMPI 00000334: PUSH1 0x00 00000336: DUP1 00000337: REVERT 00000338: JUMPDEST 00000339: POP 0000033a: PUSH2 0x02fe 0000033d: PUSH2 0x0347 00000340: CALLDATASIZE 00000341: PUSH1 0x04 00000343: PUSH2 0x19d1 00000346: JUMP 00000347: JUMPDEST 00000348: PUSH1 0x04 0000034a: PUSH1 0x20 0000034c: MSTORE 0000034d: PUSH1 0x00 0000034f: SWAP1 00000350: DUP2 00000351: MSTORE 00000352: PUSH1 0x40 00000354: SWAP1 00000355: KECCAK256 00000356: SLOAD 00000357: DUP2 00000358: JUMP 00000359: JUMPDEST 0000035a: CALLVALUE 0000035b: DUP1 0000035c: ISZERO 0000035d: PUSH2 0x0365 00000360: JUMPI 00000361: PUSH1 0x00 00000363: DUP1 00000364: REVERT 00000365: JUMPDEST 00000366: POP 00000367: PUSH2 0x0293 0000036a: PUSH2 0x0374 0000036d: CALLDATASIZE 0000036e: PUSH1 0x04 00000370: PUSH2 0x19d1 00000373: JUMP 00000374: JUMPDEST 00000375: PUSH2 0x0af4 00000378: JUMP 00000379: JUMPDEST 0000037a: CALLVALUE 0000037b: DUP1 0000037c: ISZERO 0000037d: PUSH2 0x0385 00000380: JUMPI 00000381: PUSH1 0x00 00000383: DUP1 00000384: REVERT 00000385: JUMPDEST 00000386: POP 00000387: PUSH2 0x0399 0000038a: PUSH2 0x0394 0000038d: CALLDATASIZE 0000038e: PUSH1 0x04 00000390: PUSH2 0x19d1 00000393: JUMP 00000394: JUMPDEST 00000395: PUSH2 0x0b88 00000398: JUMP 00000399: JUMPDEST 0000039a: PUSH1 0x40 0000039c: DUP1 0000039d: MLOAD 0000039e: SWAP3 0000039f: DUP4 000003a0: MSTORE 000003a1: PUSH1 0x20 000003a3: DUP4 000003a4: ADD 000003a5: SWAP2 000003a6: SWAP1 000003a7: SWAP2 000003a8: MSTORE 000003a9: ADD 000003aa: PUSH2 0x021a 000003ad: JUMP 000003ae: JUMPDEST 000003af: CALLVALUE 000003b0: DUP1 000003b1: ISZERO 000003b2: PUSH2 0x03ba 000003b5: JUMPI 000003b6: PUSH1 0x00 000003b8: DUP1 000003b9: REVERT 000003ba: JUMPDEST 000003bb: POP 000003bc: PUSH2 0x02fe 000003bf: PUSH2 0x03c9 000003c2: CALLDATASIZE 000003c3: PUSH1 0x04 000003c5: PUSH2 0x19d1 000003c8: JUMP 000003c9: JUMPDEST 000003ca: PUSH2 0x0bb6 000003cd: JUMP 000003ce: JUMPDEST 000003cf: CALLVALUE 000003d0: DUP1 000003d1: ISZERO 000003d2: PUSH2 0x03da 000003d5: JUMPI 000003d6: PUSH1 0x00 000003d8: DUP1 000003d9: REVERT 000003da: JUMPDEST 000003db: POP 000003dc: PUSH2 0x01ac 000003df: PUSH2 0x03e9 000003e2: CALLDATASIZE 000003e3: PUSH1 0x04 000003e5: PUSH2 0x19d1 000003e8: JUMP 000003e9: JUMPDEST 000003ea: PUSH2 0x0c32 000003ed: JUMP 000003ee: JUMPDEST 000003ef: CALLVALUE 000003f0: DUP1 000003f1: ISZERO 000003f2: PUSH2 0x03fa 000003f5: JUMPI 000003f6: PUSH1 0x00 000003f8: DUP1 000003f9: REVERT 000003fa: JUMPDEST 000003fb: POP 000003fc: PUSH2 0x040e 000003ff: PUSH2 0x0409 00000402: CALLDATASIZE 00000403: PUSH1 0x04 00000405: PUSH2 0x19d1 00000408: JUMP 00000409: JUMPDEST 0000040a: PUSH2 0x0c8c 0000040d: JUMP 0000040e: JUMPDEST 0000040f: PUSH1 0x40 00000411: MLOAD 00000412: PUSH2 0x021a 00000415: SWAP5 00000416: SWAP4 00000417: SWAP3 00000418: SWAP2 00000419: SWAP1 0000041a: PUSH2 0x1a8e 0000041d: JUMP 0000041e: JUMPDEST 0000041f: CALLVALUE 00000420: DUP1 00000421: ISZERO 00000422: PUSH2 0x042a 00000425: JUMPI 00000426: PUSH1 0x00 00000428: DUP1 00000429: REVERT 0000042a: JUMPDEST 0000042b: POP 0000042c: PUSH2 0x0433 0000042f: PUSH2 0x0d4d 00000432: JUMP 00000433: JUMPDEST 00000434: PUSH1 0x40 00000436: MLOAD 00000437: PUSH2 0x021a 0000043a: SWAP2 0000043b: SWAP1 0000043c: PUSH2 0x1afd 0000043f: JUMP 00000440: JUMPDEST 00000441: CALLVALUE 00000442: DUP1 00000443: ISZERO 00000444: PUSH2 0x044c 00000447: JUMPI 00000448: PUSH1 0x00 0000044a: DUP1 0000044b: REVERT 0000044c: JUMPDEST 0000044d: POP 0000044e: PUSH2 0x0433 00000451: PUSH2 0x045b 00000454: CALLDATASIZE 00000455: PUSH1 0x04 00000457: PUSH2 0x19d1 0000045a: JUMP 0000045b: JUMPDEST 0000045c: PUSH2 0x0daf 0000045f: JUMP 00000460: JUMPDEST 00000461: CALLVALUE 00000462: DUP1 00000463: ISZERO 00000464: PUSH2 0x046c 00000467: JUMPI 00000468: PUSH1 0x00 0000046a: DUP1 0000046b: REVERT 0000046c: JUMPDEST 0000046d: POP 0000046e: PUSH2 0x02fe 00000471: PUSH1 0x07 00000473: SLOAD 00000474: DUP2 00000475: JUMP 00000476: JUMPDEST 00000477: CALLVALUE 00000478: DUP1 00000479: ISZERO 0000047a: PUSH2 0x0482 0000047d: JUMPI 0000047e: PUSH1 0x00 00000480: DUP1 00000481: REVERT 00000482: JUMPDEST 00000483: POP 00000484: PUSH2 0x01ac 00000487: PUSH2 0x0491 0000048a: CALLDATASIZE 0000048b: PUSH1 0x04 0000048d: PUSH2 0x19d1 00000490: JUMP 00000491: JUMPDEST 00000492: PUSH2 0x0f73 00000495: JUMP 00000496: JUMPDEST 00000497: CALLVALUE 00000498: DUP1 00000499: ISZERO 0000049a: PUSH2 0x04a2 0000049d: JUMPI 0000049e: PUSH1 0x00 000004a0: DUP1 000004a1: REVERT 000004a2: JUMPDEST 000004a3: POP 000004a4: PUSH2 0x02fe 000004a7: PUSH1 0x00 000004a9: SLOAD 000004aa: DUP2 000004ab: JUMP 000004ac: JUMPDEST 000004ad: CALLVALUE 000004ae: DUP1 000004af: ISZERO 000004b0: PUSH2 0x04b8 000004b3: JUMPI 000004b4: PUSH1 0x00 000004b6: DUP1 000004b7: REVERT 000004b8: JUMPDEST 000004b9: POP 000004ba: PUSH2 0x01ac 000004bd: PUSH2 0x04c7 000004c0: CALLDATASIZE 000004c1: PUSH1 0x04 000004c3: PUSH2 0x19d1 000004c6: JUMP 000004c7: JUMPDEST 000004c8: PUSH2 0x103a 000004cb: JUMP 000004cc: JUMPDEST 000004cd: CALLVALUE 000004ce: DUP1 000004cf: ISZERO 000004d0: PUSH2 0x04d8 000004d3: JUMPI 000004d4: PUSH1 0x00 000004d6: DUP1 000004d7: REVERT 000004d8: JUMPDEST 000004d9: POP 000004da: PUSH1 0x08 000004dc: SLOAD 000004dd: PUSH2 0x02fe 000004e0: JUMP 000004e1: JUMPDEST 000004e2: CALLVALUE 000004e3: DUP1 000004e4: ISZERO 000004e5: PUSH2 0x04ed 000004e8: JUMPI 000004e9: PUSH1 0x00 000004eb: DUP1 000004ec: REVERT 000004ed: JUMPDEST 000004ee: POP 000004ef: PUSH2 0x02fe 000004f2: PUSH2 0x04fc 000004f5: CALLDATASIZE 000004f6: PUSH1 0x04 000004f8: PUSH2 0x1b4a 000004fb: JUMP 000004fc: JUMPDEST 000004fd: PUSH2 0x121d 00000500: JUMP 00000501: JUMPDEST 00000502: CALLVALUE 00000503: DUP1 00000504: ISZERO 00000505: PUSH2 0x050d 00000508: JUMPI 00000509: PUSH1 0x00 0000050b: DUP1 0000050c: REVERT 0000050d: JUMPDEST 0000050e: POP 0000050f: PUSH2 0x02fe 00000512: PUSH1 0x32 00000514: DUP2 00000515: JUMP 00000516: JUMPDEST 00000517: CALLVALUE 00000518: DUP1 00000519: ISZERO 0000051a: PUSH2 0x0522 0000051d: JUMPI 0000051e: PUSH1 0x00 00000520: DUP1 00000521: REVERT 00000522: JUMPDEST 00000523: POP 00000524: PUSH2 0x02fe 00000527: PUSH1 0x06 00000529: SLOAD 0000052a: DUP2 0000052b: JUMP 0000052c: JUMPDEST 0000052d: CALLVALUE 0000052e: DUP1 0000052f: ISZERO 00000530: PUSH2 0x0538 00000533: JUMPI 00000534: PUSH1 0x00 00000536: DUP1 00000537: REVERT 00000538: JUMPDEST 00000539: POP 0000053a: PUSH2 0x01ac 0000053d: PUSH2 0x0547 00000540: CALLDATASIZE 00000541: PUSH1 0x04 00000543: PUSH2 0x1bd1 00000546: JUMP 00000547: JUMPDEST 00000548: PUSH2 0x13b5 0000054b: JUMP 0000054c: JUMPDEST 0000054d: CALLVALUE 0000054e: DUP1 0000054f: ISZERO 00000550: PUSH2 0x0558 00000553: JUMPI 00000554: PUSH1 0x00 00000556: DUP1 00000557: REVERT 00000558: JUMPDEST 00000559: POP 0000055a: PUSH2 0x01ac 0000055d: PUSH2 0x0567 00000560: CALLDATASIZE 00000561: PUSH1 0x04 00000563: PUSH2 0x19d1 00000566: JUMP 00000567: JUMPDEST 00000568: PUSH2 0x15a6 0000056b: JUMP 0000056c: JUMPDEST 0000056d: PUSH1 0x05 0000056f: DUP2 00000570: DUP2 00000571: SLOAD 00000572: DUP2 00000573: LT 00000574: PUSH2 0x057c 00000577: JUMPI 00000578: PUSH1 0x00 0000057a: DUP1 0000057b: REVERT 0000057c: JUMPDEST 0000057d: PUSH1 0x00 0000057f: SWAP2 00000580: DUP3 00000581: MSTORE 00000582: PUSH1 0x20 00000584: SWAP1 00000585: SWAP2 00000586: KECCAK256 00000587: ADD 00000588: SLOAD 00000589: PUSH1 0x01 0000058b: PUSH1 0x01 0000058d: PUSH1 0xa0 0000058f: SHL 00000590: SUB 00000591: AND 00000592: SWAP1 00000593: POP 00000594: DUP2 00000595: JUMP 00000596: JUMPDEST 00000597: CALLER 00000598: ADDRESS 00000599: EQ 0000059a: PUSH2 0x05be 0000059d: JUMPI 0000059e: PUSH1 0x40 000005a0: MLOAD 000005a1: PUSH3 0x461bcd 000005a5: PUSH1 0xe5 000005a7: SHL 000005a8: DUP2 000005a9: MSTORE 000005aa: PUSH1 0x04 000005ac: ADD 000005ad: PUSH2 0x05b5 000005b0: SWAP1 000005b1: PUSH2 0x1bfb 000005b4: JUMP 000005b5: JUMPDEST 000005b6: PUSH1 0x40 000005b8: MLOAD 000005b9: DUP1 000005ba: SWAP2 000005bb: SUB 000005bc: SWAP1 000005bd: REVERT 000005be: JUMPDEST 000005bf: PUSH1 0x01 000005c1: PUSH1 0x01 000005c3: PUSH1 0xa0 000005c5: SHL 000005c6: SUB 000005c7: DUP2 000005c8: AND 000005c9: PUSH1 0x00 000005cb: SWAP1 000005cc: DUP2 000005cd: MSTORE 000005ce: PUSH1 0x03 000005d0: PUSH1 0x20 000005d2: MSTORE 000005d3: PUSH1 0x40 000005d5: SWAP1 000005d6: KECCAK256 000005d7: SLOAD 000005d8: DUP2 000005d9: SWAP1 000005da: PUSH1 0xff 000005dc: AND 000005dd: PUSH2 0x05f8 000005e0: JUMPI 000005e1: PUSH1 0x40 000005e3: MLOAD 000005e4: PUSH3 0x461bcd 000005e8: PUSH1 0xe5 000005ea: SHL 000005eb: DUP2 000005ec: MSTORE 000005ed: PUSH1 0x04 000005ef: ADD 000005f0: PUSH2 0x05b5 000005f3: SWAP1 000005f4: PUSH2 0x1c26 000005f7: JUMP 000005f8: JUMPDEST 000005f9: PUSH1 0x01 000005fb: PUSH1 0x01 000005fd: PUSH1 0xa0 000005ff: SHL 00000600: SUB 00000601: DUP3 00000602: AND 00000603: PUSH1 0x00 00000605: SWAP1 00000606: DUP2 00000607: MSTORE 00000608: PUSH1 0x03 0000060a: PUSH1 0x20 0000060c: MSTORE 0000060d: PUSH1 0x40 0000060f: DUP2 00000610: KECCAK256 00000611: DUP1 00000612: SLOAD 00000613: PUSH1 0xff 00000615: NOT 00000616: AND 00000617: SWAP1 00000618: SSTORE 00000619: JUMPDEST 0000061a: PUSH1 0x05 0000061c: SLOAD 0000061d: PUSH2 0x0628 00000620: SWAP1 00000621: PUSH1 0x01 00000623: SWAP1 00000624: PUSH2 0x1c68 00000627: JUMP 00000628: JUMPDEST 00000629: DUP2 0000062a: LT 0000062b: ISZERO 0000062c: PUSH2 0x06ed 0000062f: JUMPI 00000630: DUP3 00000631: PUSH1 0x01 00000633: PUSH1 0x01 00000635: PUSH1 0xa0 00000637: SHL 00000638: SUB 00000639: AND 0000063a: PUSH1 0x05 0000063c: DUP3 0000063d: DUP2 0000063e: SLOAD 0000063f: DUP2 00000640: LT 00000641: PUSH2 0x064c 00000644: JUMPI 00000645: PUSH2 0x064c 00000648: PUSH2 0x1c81 0000064b: JUMP 0000064c: JUMPDEST 0000064d: PUSH1 0x00 0000064f: SWAP2 00000650: DUP3 00000651: MSTORE 00000652: PUSH1 0x20 00000654: SWAP1 00000655: SWAP2 00000656: KECCAK256 00000657: ADD 00000658: SLOAD 00000659: PUSH1 0x01 0000065b: PUSH1 0x01 0000065d: PUSH1 0xa0 0000065f: SHL 00000660: SUB 00000661: AND 00000662: SUB 00000663: PUSH2 0x06e5 00000666: JUMPI 00000667: PUSH1 0x05 00000669: DUP1 0000066a: SLOAD 0000066b: PUSH2 0x0676 0000066e: SWAP1 0000066f: PUSH1 0x01 00000671: SWAP1 00000672: PUSH2 0x1c68 00000675: JUMP 00000676: JUMPDEST 00000677: DUP2 00000678: SLOAD 00000679: DUP2 0000067a: LT 0000067b: PUSH2 0x0686 0000067e: JUMPI 0000067f: PUSH2 0x0686 00000682: PUSH2 0x1c81 00000685: JUMP 00000686: JUMPDEST 00000687: PUSH1 0x00 00000689: SWAP2 0000068a: DUP3 0000068b: MSTORE 0000068c: PUSH1 0x20 0000068e: SWAP1 0000068f: SWAP2 00000690: KECCAK256 00000691: ADD 00000692: SLOAD 00000693: PUSH1 0x05 00000695: DUP1 00000696: SLOAD 00000697: PUSH1 0x01 00000699: PUSH1 0x01 0000069b: PUSH1 0xa0 0000069d: SHL 0000069e: SUB 0000069f: SWAP1 000006a0: SWAP3 000006a1: AND 000006a2: SWAP2 000006a3: DUP4 000006a4: SWAP1 000006a5: DUP2 000006a6: LT 000006a7: PUSH2 0x06b2 000006aa: JUMPI 000006ab: PUSH2 0x06b2 000006ae: PUSH2 0x1c81 000006b1: JUMP 000006b2: JUMPDEST 000006b3: SWAP1 000006b4: PUSH1 0x00 000006b6: MSTORE 000006b7: PUSH1 0x20 000006b9: PUSH1 0x00 000006bb: KECCAK256 000006bc: ADD 000006bd: PUSH1 0x00 000006bf: PUSH2 0x0100 000006c2: EXP 000006c3: DUP2 000006c4: SLOAD 000006c5: DUP2 000006c6: PUSH1 0x01 000006c8: PUSH1 0x01 000006ca: PUSH1 0xa0 000006cc: SHL 000006cd: SUB 000006ce: MUL 000006cf: NOT 000006d0: AND 000006d1: SWAP1 000006d2: DUP4 000006d3: PUSH1 0x01 000006d5: PUSH1 0x01 000006d7: PUSH1 0xa0 000006d9: SHL 000006da: SUB 000006db: AND 000006dc: MUL 000006dd: OR 000006de: SWAP1 000006df: SSTORE 000006e0: POP 000006e1: PUSH2 0x06ed 000006e4: JUMP 000006e5: JUMPDEST 000006e6: PUSH1 0x01 000006e8: ADD 000006e9: PUSH2 0x0619 000006ec: JUMP 000006ed: JUMPDEST 000006ee: POP 000006ef: PUSH1 0x05 000006f1: DUP1 000006f2: SLOAD 000006f3: DUP1 000006f4: PUSH2 0x06ff 000006f7: JUMPI 000006f8: PUSH2 0x06ff 000006fb: PUSH2 0x1c97 000006fe: JUMP 000006ff: JUMPDEST 00000700: PUSH1 0x00 00000702: DUP3 00000703: DUP2 00000704: MSTORE 00000705: PUSH1 0x20 00000707: SWAP1 00000708: KECCAK256 00000709: DUP2 0000070a: ADD 0000070b: PUSH1 0x00 0000070d: NOT 0000070e: SWAP1 0000070f: DUP2 00000710: ADD 00000711: DUP1 00000712: SLOAD 00000713: PUSH1 0x01 00000715: PUSH1 0x01 00000717: PUSH1 0xa0 00000719: SHL 0000071a: SUB 0000071b: NOT 0000071c: AND 0000071d: SWAP1 0000071e: SSTORE 0000071f: ADD 00000720: SWAP1 00000721: SSTORE 00000722: PUSH1 0x05 00000724: SLOAD 00000725: PUSH1 0x06 00000727: SLOAD 00000728: GT 00000729: ISZERO 0000072a: PUSH2 0x0739 0000072d: JUMPI 0000072e: PUSH1 0x05 00000730: SLOAD 00000731: PUSH2 0x0739 00000734: SWAP1 00000735: PUSH2 0x0f73 00000738: JUMP 00000739: JUMPDEST 0000073a: PUSH1 0x40 0000073c: MLOAD 0000073d: PUSH1 0x01 0000073f: PUSH1 0x01 00000741: PUSH1 0xa0 00000743: SHL 00000744: SUB 00000745: DUP4 00000746: AND 00000747: SWAP1 00000748: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 00000769: SWAP1 0000076a: PUSH1 0x00 0000076c: SWAP1 0000076d: LOG2 0000076e: POP 0000076f: POP 00000770: JUMP 00000771: JUMPDEST 00000772: CALLER 00000773: PUSH1 0x00 00000775: DUP2 00000776: DUP2 00000777: MSTORE 00000778: PUSH1 0x03 0000077a: PUSH1 0x20 0000077c: MSTORE 0000077d: PUSH1 0x40 0000077f: SWAP1 00000780: KECCAK256 00000781: SLOAD 00000782: PUSH1 0xff 00000784: AND 00000785: PUSH2 0x07a0 00000788: JUMPI 00000789: PUSH1 0x40 0000078b: MLOAD 0000078c: PUSH3 0x461bcd 00000790: PUSH1 0xe5 00000792: SHL 00000793: DUP2 00000794: MSTORE 00000795: PUSH1 0x04 00000797: ADD 00000798: PUSH2 0x05b5 0000079b: SWAP1 0000079c: PUSH2 0x1c26 0000079f: JUMP 000007a0: JUMPDEST 000007a1: PUSH1 0x00 000007a3: DUP3 000007a4: DUP2 000007a5: MSTORE 000007a6: PUSH1 0x02 000007a8: PUSH1 0x20 000007aa: SWAP1 000007ab: DUP2 000007ac: MSTORE 000007ad: PUSH1 0x40 000007af: DUP1 000007b0: DUP4 000007b1: KECCAK256 000007b2: CALLER 000007b3: DUP1 000007b4: DUP6 000007b5: MSTORE 000007b6: SWAP3 000007b7: MSTORE 000007b8: SWAP1 000007b9: SWAP2 000007ba: KECCAK256 000007bb: SLOAD 000007bc: DUP4 000007bd: SWAP2 000007be: SWAP1 000007bf: PUSH1 0xff 000007c1: AND 000007c2: PUSH2 0x07ff 000007c5: JUMPI 000007c6: PUSH1 0x40 000007c8: MLOAD 000007c9: PUSH3 0x461bcd 000007cd: PUSH1 0xe5 000007cf: SHL 000007d0: DUP2 000007d1: MSTORE 000007d2: PUSH1 0x20 000007d4: PUSH1 0x04 000007d6: DUP3 000007d7: ADD 000007d8: MSTORE 000007d9: PUSH1 0x0f 000007db: PUSH1 0x24 000007dd: DUP3 000007de: ADD 000007df: MSTORE 000007e0: PUSH15 0x21a7a72324a926a2a22fa2a92927a9 000007f0: PUSH1 0x89 000007f2: SHL 000007f3: PUSH1 0x44 000007f5: DUP3 000007f6: ADD 000007f7: MSTORE 000007f8: PUSH1 0x64 000007fa: ADD 000007fb: PUSH2 0x05b5 000007fe: JUMP 000007ff: JUMPDEST 00000800: PUSH1 0x00 00000802: DUP5 00000803: DUP2 00000804: MSTORE 00000805: PUSH1 0x01 00000807: PUSH1 0x20 00000809: MSTORE 0000080a: PUSH1 0x40 0000080c: SWAP1 0000080d: KECCAK256 0000080e: PUSH1 0x03 00000810: ADD 00000811: SLOAD 00000812: DUP5 00000813: SWAP1 00000814: PUSH1 0xff 00000816: AND 00000817: ISZERO 00000818: PUSH2 0x0858 0000081b: JUMPI 0000081c: PUSH1 0x40 0000081e: MLOAD 0000081f: PUSH3 0x461bcd 00000823: PUSH1 0xe5 00000825: SHL 00000826: DUP2 00000827: MSTORE 00000828: PUSH1 0x20 0000082a: PUSH1 0x04 0000082c: DUP3 0000082d: ADD 0000082e: MSTORE 0000082f: PUSH1 0x12 00000831: PUSH1 0x24 00000833: DUP3 00000834: ADD 00000835: MSTORE 00000836: PUSH18 0x2727aa2fa2ac22a1aaaa22a22fa2a92927a9 00000849: PUSH1 0x71 0000084b: SHL 0000084c: PUSH1 0x44 0000084e: DUP3 0000084f: ADD 00000850: MSTORE 00000851: PUSH1 0x64 00000853: ADD 00000854: PUSH2 0x05b5 00000857: JUMP 00000858: JUMPDEST 00000859: PUSH1 0x00 0000085b: DUP6 0000085c: DUP2 0000085d: MSTORE 0000085e: PUSH1 0x02 00000860: PUSH1 0x20 00000862: SWAP1 00000863: DUP2 00000864: MSTORE 00000865: PUSH1 0x40 00000867: DUP1 00000868: DUP4 00000869: KECCAK256 0000086a: CALLER 0000086b: DUP1 0000086c: DUP6 0000086d: MSTORE 0000086e: SWAP3 0000086f: MSTORE 00000870: DUP1 00000871: DUP4 00000872: KECCAK256 00000873: DUP1 00000874: SLOAD 00000875: PUSH1 0xff 00000877: NOT 00000878: AND 00000879: SWAP1 0000087a: SSTORE 0000087b: MLOAD 0000087c: DUP8 0000087d: SWAP3 0000087e: PUSH32 0xf6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e9 0000089f: SWAP2 000008a0: LOG3 000008a1: POP 000008a2: POP 000008a3: POP 000008a4: POP 000008a5: POP 000008a6: JUMP 000008a7: JUMPDEST 000008a8: PUSH1 0x00 000008aa: DUP1 000008ab: JUMPDEST 000008ac: PUSH1 0x07 000008ae: SLOAD 000008af: DUP2 000008b0: LT 000008b1: ISZERO 000008b2: PUSH2 0x0913 000008b5: JUMPI 000008b6: DUP4 000008b7: DUP1 000008b8: ISZERO 000008b9: PUSH2 0x08d4 000008bc: JUMPI 000008bd: POP 000008be: PUSH1 0x00 000008c0: DUP2 000008c1: DUP2 000008c2: MSTORE 000008c3: PUSH1 0x01 000008c5: PUSH1 0x20 000008c7: MSTORE 000008c8: PUSH1 0x40 000008ca: SWAP1 000008cb: KECCAK256 000008cc: PUSH1 0x03 000008ce: ADD 000008cf: SLOAD 000008d0: PUSH1 0xff 000008d2: AND 000008d3: ISZERO 000008d4: JUMPDEST 000008d5: DUP1 000008d6: PUSH2 0x08f8 000008d9: JUMPI 000008da: POP 000008db: DUP3 000008dc: DUP1 000008dd: ISZERO 000008de: PUSH2 0x08f8 000008e1: JUMPI 000008e2: POP 000008e3: PUSH1 0x00 000008e5: DUP2 000008e6: DUP2 000008e7: MSTORE 000008e8: PUSH1 0x01 000008ea: PUSH1 0x20 000008ec: MSTORE 000008ed: PUSH1 0x40 000008ef: SWAP1 000008f0: KECCAK256 000008f1: PUSH1 0x03 000008f3: ADD 000008f4: SLOAD 000008f5: PUSH1 0xff 000008f7: AND 000008f8: JUMPDEST 000008f9: ISZERO 000008fa: PUSH2 0x090b 000008fd: JUMPI 000008fe: PUSH2 0x0908 00000901: PUSH1 0x01 00000903: DUP4 00000904: PUSH2 0x1cad 00000907: JUMP 00000908: JUMPDEST 00000909: SWAP2 0000090a: POP 0000090b: JUMPDEST 0000090c: PUSH1 0x01 0000090e: ADD 0000090f: PUSH2 0x08ab 00000912: JUMP 00000913: JUMPDEST 00000914: POP 00000915: SWAP3 00000916: SWAP2 00000917: POP 00000918: POP 00000919: JUMP 0000091a: JUMPDEST 0000091b: CALLER 0000091c: ADDRESS 0000091d: EQ 0000091e: PUSH2 0x0939 00000921: JUMPI 00000922: PUSH1 0x40 00000924: MLOAD 00000925: PUSH3 0x461bcd 00000929: PUSH1 0xe5 0000092b: SHL 0000092c: DUP2 0000092d: MSTORE 0000092e: PUSH1 0x04 00000930: ADD 00000931: PUSH2 0x05b5 00000934: SWAP1 00000935: PUSH2 0x1bfb 00000938: JUMP 00000939: JUMPDEST 0000093a: PUSH1 0x01 0000093c: PUSH1 0x01 0000093e: PUSH1 0xa0 00000940: SHL 00000941: SUB 00000942: DUP2 00000943: AND 00000944: PUSH1 0x00 00000946: SWAP1 00000947: DUP2 00000948: MSTORE 00000949: PUSH1 0x03 0000094b: PUSH1 0x20 0000094d: MSTORE 0000094e: PUSH1 0x40 00000950: SWAP1 00000951: KECCAK256 00000952: SLOAD 00000953: DUP2 00000954: SWAP1 00000955: PUSH1 0xff 00000957: AND 00000958: ISZERO 00000959: PUSH2 0x09a4 0000095c: JUMPI 0000095d: PUSH1 0x40 0000095f: MLOAD 00000960: PUSH3 0x461bcd 00000964: PUSH1 0xe5 00000966: SHL 00000967: DUP2 00000968: MSTORE 00000969: PUSH1 0x20 0000096b: PUSH1 0x04 0000096d: DUP3 0000096e: ADD 0000096f: MSTORE 00000970: PUSH1 0x1a 00000972: PUSH1 0x24 00000974: DUP3 00000975: ADD 00000976: MSTORE 00000977: PUSH32 0x4f574e45525f444f45535f4e4f545f45584953545f4552524f52000000000000 00000998: PUSH1 0x44 0000099a: DUP3 0000099b: ADD 0000099c: MSTORE 0000099d: PUSH1 0x64 0000099f: ADD 000009a0: PUSH2 0x05b5 000009a3: JUMP 000009a4: JUMPDEST 000009a5: DUP2 000009a6: PUSH1 0x01 000009a8: PUSH1 0x01 000009aa: PUSH1 0xa0 000009ac: SHL 000009ad: SUB 000009ae: DUP2 000009af: AND 000009b0: PUSH2 0x09ec 000009b3: JUMPI 000009b4: PUSH1 0x40 000009b6: MLOAD 000009b7: PUSH3 0x461bcd 000009bb: PUSH1 0xe5 000009bd: SHL 000009be: DUP2 000009bf: MSTORE 000009c0: PUSH1 0x20 000009c2: PUSH1 0x04 000009c4: DUP3 000009c5: ADD 000009c6: MSTORE 000009c7: PUSH1 0x0e 000009c9: PUSH1 0x24 000009cb: DUP3 000009cc: ADD 000009cd: MSTORE 000009ce: PUSH14 0x2727aa2fa72aa6262fa2a92927a9 000009dd: PUSH1 0x91 000009df: SHL 000009e0: PUSH1 0x44 000009e2: DUP3 000009e3: ADD 000009e4: MSTORE 000009e5: PUSH1 0x64 000009e7: ADD 000009e8: PUSH2 0x05b5 000009eb: JUMP 000009ec: JUMPDEST 000009ed: PUSH1 0x05 000009ef: SLOAD 000009f0: PUSH2 0x09fa 000009f3: SWAP1 000009f4: PUSH1 0x01 000009f6: PUSH2 0x1cad 000009f9: JUMP 000009fa: JUMPDEST 000009fb: PUSH1 0x06 000009fd: SLOAD 000009fe: PUSH1 0x32 00000a00: DUP3 00000a01: GT 00000a02: DUP1 00000a03: PUSH2 0x0a0b 00000a06: JUMPI 00000a07: POP 00000a08: DUP2 00000a09: DUP2 00000a0a: GT 00000a0b: JUMPDEST 00000a0c: DUP1 00000a0d: PUSH2 0x0a14 00000a10: JUMPI 00000a11: POP 00000a12: DUP1 00000a13: ISZERO 00000a14: JUMPDEST 00000a15: DUP1 00000a16: PUSH2 0x0a1d 00000a19: JUMPI 00000a1a: POP 00000a1b: DUP2 00000a1c: ISZERO 00000a1d: JUMPDEST 00000a1e: ISZERO 00000a1f: PUSH2 0x0a64 00000a22: JUMPI 00000a23: PUSH1 0x40 00000a25: MLOAD 00000a26: PUSH3 0x461bcd 00000a2a: PUSH1 0xe5 00000a2c: SHL 00000a2d: DUP2 00000a2e: MSTORE 00000a2f: PUSH1 0x20 00000a31: PUSH1 0x04 00000a33: DUP3 00000a34: ADD 00000a35: MSTORE 00000a36: PUSH1 0x17 00000a38: PUSH1 0x24 00000a3a: DUP3 00000a3b: ADD 00000a3c: MSTORE 00000a3d: PUSH23 0x2b20a624a22fa922a8aaa4a922a6a2a72a2fa2a92927a9 00000a55: PUSH1 0x49 00000a57: SHL 00000a58: PUSH1 0x44 00000a5a: DUP3 00000a5b: ADD 00000a5c: MSTORE 00000a5d: PUSH1 0x64 00000a5f: ADD 00000a60: PUSH2 0x05b5 00000a63: JUMP 00000a64: JUMPDEST 00000a65: PUSH1 0x01 00000a67: PUSH1 0x01 00000a69: PUSH1 0xa0 00000a6b: SHL 00000a6c: SUB 00000a6d: DUP6 00000a6e: AND 00000a6f: PUSH1 0x00 00000a71: DUP2 00000a72: DUP2 00000a73: MSTORE 00000a74: PUSH1 0x03 00000a76: PUSH1 0x20 00000a78: MSTORE 00000a79: PUSH1 0x40 00000a7b: DUP1 00000a7c: DUP3 00000a7d: KECCAK256 00000a7e: DUP1 00000a7f: SLOAD 00000a80: PUSH1 0xff 00000a82: NOT 00000a83: AND 00000a84: PUSH1 0x01 00000a86: SWAP1 00000a87: DUP2 00000a88: OR 00000a89: SWAP1 00000a8a: SWAP2 00000a8b: SSTORE 00000a8c: PUSH1 0x05 00000a8e: DUP1 00000a8f: SLOAD 00000a90: SWAP2 00000a91: DUP3 00000a92: ADD 00000a93: DUP2 00000a94: SSTORE 00000a95: DUP4 00000a96: MSTORE 00000a97: PUSH32 0x036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0 00000ab8: ADD 00000ab9: DUP1 00000aba: SLOAD 00000abb: PUSH1 0x01 00000abd: PUSH1 0x01 00000abf: PUSH1 0xa0 00000ac1: SHL 00000ac2: SUB 00000ac3: NOT 00000ac4: AND 00000ac5: DUP5 00000ac6: OR 00000ac7: SWAP1 00000ac8: SSTORE 00000ac9: MLOAD 00000aca: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 00000aeb: SWAP2 00000aec: SWAP1 00000aed: LOG2 00000aee: POP 00000aef: POP 00000af0: POP 00000af1: POP 00000af2: POP 00000af3: JUMP 00000af4: JUMPDEST 00000af5: PUSH1 0x00 00000af7: DUP1 00000af8: DUP1 00000af9: JUMPDEST 00000afa: PUSH1 0x05 00000afc: SLOAD 00000afd: DUP2 00000afe: LT 00000aff: ISZERO 00000b00: PUSH2 0x0b7e 00000b03: JUMPI 00000b04: PUSH1 0x00 00000b06: DUP5 00000b07: DUP2 00000b08: MSTORE 00000b09: PUSH1 0x02 00000b0b: PUSH1 0x20 00000b0d: MSTORE 00000b0e: PUSH1 0x40 00000b10: DUP2 00000b11: KECCAK256 00000b12: PUSH1 0x05 00000b14: DUP1 00000b15: SLOAD 00000b16: SWAP2 00000b17: SWAP3 00000b18: SWAP2 00000b19: DUP5 00000b1a: SWAP1 00000b1b: DUP2 00000b1c: LT 00000b1d: PUSH2 0x0b28 00000b20: JUMPI 00000b21: PUSH2 0x0b28 00000b24: PUSH2 0x1c81 00000b27: JUMP 00000b28: JUMPDEST 00000b29: PUSH1 0x00 00000b2b: SWAP2 00000b2c: DUP3 00000b2d: MSTORE 00000b2e: PUSH1 0x20 00000b30: DUP1 00000b31: DUP4 00000b32: KECCAK256 00000b33: SWAP1 00000b34: SWAP2 00000b35: ADD 00000b36: SLOAD 00000b37: PUSH1 0x01 00000b39: PUSH1 0x01 00000b3b: PUSH1 0xa0 00000b3d: SHL 00000b3e: SUB 00000b3f: AND 00000b40: DUP4 00000b41: MSTORE 00000b42: DUP3 00000b43: ADD 00000b44: SWAP3 00000b45: SWAP1 00000b46: SWAP3 00000b47: MSTORE 00000b48: PUSH1 0x40 00000b4a: ADD 00000b4b: SWAP1 00000b4c: KECCAK256 00000b4d: SLOAD 00000b4e: PUSH1 0xff 00000b50: AND 00000b51: ISZERO 00000b52: PUSH2 0x0b63 00000b55: JUMPI 00000b56: PUSH2 0x0b60 00000b59: PUSH1 0x01 00000b5b: DUP4 00000b5c: PUSH2 0x1cad 00000b5f: JUMP 00000b60: JUMPDEST 00000b61: SWAP2 00000b62: POP 00000b63: JUMPDEST 00000b64: PUSH1 0x06 00000b66: SLOAD 00000b67: DUP3 00000b68: LT 00000b69: PUSH2 0x0b76 00000b6c: JUMPI 00000b6d: POP 00000b6e: PUSH1 0x01 00000b70: SWAP4 00000b71: SWAP3 00000b72: POP 00000b73: POP 00000b74: POP 00000b75: JUMP 00000b76: JUMPDEST 00000b77: PUSH1 0x01 00000b79: ADD 00000b7a: PUSH2 0x0af9 00000b7d: JUMP 00000b7e: JUMPDEST 00000b7f: POP 00000b80: PUSH1 0x00 00000b82: SWAP4 00000b83: SWAP3 00000b84: POP 00000b85: POP 00000b86: POP 00000b87: JUMP 00000b88: JUMPDEST 00000b89: PUSH1 0x08 00000b8b: DUP2 00000b8c: DUP2 00000b8d: SLOAD 00000b8e: DUP2 00000b8f: LT 00000b90: PUSH2 0x0b98 00000b93: JUMPI 00000b94: PUSH1 0x00 00000b96: DUP1 00000b97: REVERT 00000b98: JUMPDEST 00000b99: PUSH1 0x00 00000b9b: SWAP2 00000b9c: DUP3 00000b9d: MSTORE 00000b9e: PUSH1 0x20 00000ba0: SWAP1 00000ba1: SWAP2 00000ba2: KECCAK256 00000ba3: PUSH1 0x02 00000ba5: SWAP1 00000ba6: SWAP2 00000ba7: MUL 00000ba8: ADD 00000ba9: DUP1 00000baa: SLOAD 00000bab: PUSH1 0x01 00000bad: SWAP1 00000bae: SWAP2 00000baf: ADD 00000bb0: SLOAD 00000bb1: SWAP1 00000bb2: SWAP2 00000bb3: POP 00000bb4: DUP3 00000bb5: JUMP 00000bb6: JUMPDEST 00000bb7: PUSH1 0x00 00000bb9: DUP1 00000bba: JUMPDEST 00000bbb: PUSH1 0x05 00000bbd: SLOAD 00000bbe: DUP2 00000bbf: LT 00000bc0: ISZERO 00000bc1: PUSH2 0x0c2c 00000bc4: JUMPI 00000bc5: PUSH1 0x00 00000bc7: DUP4 00000bc8: DUP2 00000bc9: MSTORE 00000bca: PUSH1 0x02 00000bcc: PUSH1 0x20 00000bce: MSTORE 00000bcf: PUSH1 0x40 00000bd1: DUP2 00000bd2: KECCAK256 00000bd3: PUSH1 0x05 00000bd5: DUP1 00000bd6: SLOAD 00000bd7: SWAP2 00000bd8: SWAP3 00000bd9: SWAP2 00000bda: DUP5 00000bdb: SWAP1 00000bdc: DUP2 00000bdd: LT 00000bde: PUSH2 0x0be9 00000be1: JUMPI 00000be2: PUSH2 0x0be9 00000be5: PUSH2 0x1c81 00000be8: JUMP 00000be9: JUMPDEST 00000bea: PUSH1 0x00 00000bec: SWAP2 00000bed: DUP3 00000bee: MSTORE 00000bef: PUSH1 0x20 00000bf1: DUP1 00000bf2: DUP4 00000bf3: KECCAK256 00000bf4: SWAP1 00000bf5: SWAP2 00000bf6: ADD 00000bf7: SLOAD 00000bf8: PUSH1 0x01 00000bfa: PUSH1 0x01 00000bfc: PUSH1 0xa0 00000bfe: SHL 00000bff: SUB 00000c00: AND 00000c01: DUP4 00000c02: MSTORE 00000c03: DUP3 00000c04: ADD 00000c05: SWAP3 00000c06: SWAP1 00000c07: SWAP3 00000c08: MSTORE 00000c09: PUSH1 0x40 00000c0b: ADD 00000c0c: SWAP1 00000c0d: KECCAK256 00000c0e: SLOAD 00000c0f: PUSH1 0xff 00000c11: AND 00000c12: ISZERO 00000c13: PUSH2 0x0c24 00000c16: JUMPI 00000c17: PUSH2 0x0c21 00000c1a: PUSH1 0x01 00000c1c: DUP4 00000c1d: PUSH2 0x1cad 00000c20: JUMP 00000c21: JUMPDEST 00000c22: SWAP2 00000c23: POP 00000c24: JUMPDEST 00000c25: PUSH1 0x01 00000c27: ADD 00000c28: PUSH2 0x0bba 00000c2b: JUMP 00000c2c: JUMPDEST 00000c2d: POP 00000c2e: SWAP2 00000c2f: SWAP1 00000c30: POP 00000c31: JUMP 00000c32: JUMPDEST 00000c33: CALLER 00000c34: ADDRESS 00000c35: EQ 00000c36: PUSH2 0x0c51 00000c39: JUMPI 00000c3a: PUSH1 0x40 00000c3c: MLOAD 00000c3d: PUSH3 0x461bcd 00000c41: PUSH1 0xe5 00000c43: SHL 00000c44: DUP2 00000c45: MSTORE 00000c46: PUSH1 0x04 00000c48: ADD 00000c49: PUSH2 0x05b5 00000c4c: SWAP1 00000c4d: PUSH2 0x1bfb 00000c50: JUMP 00000c51: JUMPDEST 00000c52: PUSH1 0x00 00000c54: DUP2 00000c55: SWAP1 00000c56: SSTORE 00000c57: PUSH1 0x40 00000c59: MLOAD 00000c5a: DUP2 00000c5b: DUP2 00000c5c: MSTORE 00000c5d: PUSH32 0x884d6758bafbcb4b5e2e0393178ca1f3da3dd380a54ce05ab60aa59756db9dc1 00000c7e: SWAP1 00000c7f: PUSH1 0x20 00000c81: ADD 00000c82: PUSH1 0x40 00000c84: MLOAD 00000c85: DUP1 00000c86: SWAP2 00000c87: SUB 00000c88: SWAP1 00000c89: LOG1 00000c8a: POP 00000c8b: JUMP 00000c8c: JUMPDEST 00000c8d: PUSH1 0x01 00000c8f: PUSH1 0x20 00000c91: DUP2 00000c92: SWAP1 00000c93: MSTORE 00000c94: PUSH1 0x00 00000c96: SWAP2 00000c97: DUP3 00000c98: MSTORE 00000c99: PUSH1 0x40 00000c9b: SWAP1 00000c9c: SWAP2 00000c9d: KECCAK256 00000c9e: DUP1 00000c9f: SLOAD 00000ca0: SWAP2 00000ca1: DUP2 00000ca2: ADD 00000ca3: SLOAD 00000ca4: PUSH1 0x02 00000ca6: DUP3 00000ca7: ADD 00000ca8: DUP1 00000ca9: SLOAD 00000caa: PUSH1 0x01 00000cac: PUSH1 0x01 00000cae: PUSH1 0xa0 00000cb0: SHL 00000cb1: SUB 00000cb2: SWAP1 00000cb3: SWAP5 00000cb4: AND 00000cb5: SWAP4 00000cb6: SWAP2 00000cb7: SWAP3 00000cb8: SWAP2 00000cb9: PUSH2 0x0cc1 00000cbc: SWAP1 00000cbd: PUSH2 0x1cc0 00000cc0: JUMP 00000cc1: JUMPDEST 00000cc2: DUP1 00000cc3: PUSH1 0x1f 00000cc5: ADD 00000cc6: PUSH1 0x20 00000cc8: DUP1 00000cc9: SWAP2 00000cca: DIV 00000ccb: MUL 00000ccc: PUSH1 0x20 00000cce: ADD 00000ccf: PUSH1 0x40 00000cd1: MLOAD 00000cd2: SWAP1 00000cd3: DUP2 00000cd4: ADD 00000cd5: PUSH1 0x40 00000cd7: MSTORE 00000cd8: DUP1 00000cd9: SWAP3 00000cda: SWAP2 00000cdb: SWAP1 00000cdc: DUP2 00000cdd: DUP2 00000cde: MSTORE 00000cdf: PUSH1 0x20 00000ce1: ADD 00000ce2: DUP3 00000ce3: DUP1 00000ce4: SLOAD 00000ce5: PUSH2 0x0ced 00000ce8: SWAP1 00000ce9: PUSH2 0x1cc0 00000cec: JUMP 00000ced: JUMPDEST 00000cee: DUP1 00000cef: ISZERO 00000cf0: PUSH2 0x0d3a 00000cf3: JUMPI 00000cf4: DUP1 00000cf5: PUSH1 0x1f 00000cf7: LT 00000cf8: PUSH2 0x0d0f 00000cfb: JUMPI 00000cfc: PUSH2 0x0100 00000cff: DUP1 00000d00: DUP4 00000d01: SLOAD 00000d02: DIV 00000d03: MUL 00000d04: DUP4 00000d05: MSTORE 00000d06: SWAP2 00000d07: PUSH1 0x20 00000d09: ADD 00000d0a: SWAP2 00000d0b: PUSH2 0x0d3a 00000d0e: JUMP 00000d0f: JUMPDEST 00000d10: DUP3 00000d11: ADD 00000d12: SWAP2 00000d13: SWAP1 00000d14: PUSH1 0x00 00000d16: MSTORE 00000d17: PUSH1 0x20 00000d19: PUSH1 0x00 00000d1b: KECCAK256 00000d1c: SWAP1 00000d1d: JUMPDEST 00000d1e: DUP2 00000d1f: SLOAD 00000d20: DUP2 00000d21: MSTORE 00000d22: SWAP1 00000d23: PUSH1 0x01 00000d25: ADD 00000d26: SWAP1 00000d27: PUSH1 0x20 00000d29: ADD 00000d2a: DUP1 00000d2b: DUP4 00000d2c: GT 00000d2d: PUSH2 0x0d1d 00000d30: JUMPI 00000d31: DUP3 00000d32: SWAP1 00000d33: SUB 00000d34: PUSH1 0x1f 00000d36: AND 00000d37: DUP3 00000d38: ADD 00000d39: SWAP2 00000d3a: JUMPDEST 00000d3b: POP 00000d3c: POP 00000d3d: POP 00000d3e: PUSH1 0x03 00000d40: SWAP1 00000d41: SWAP4 00000d42: ADD 00000d43: SLOAD 00000d44: SWAP2 00000d45: SWAP3 00000d46: POP 00000d47: POP 00000d48: PUSH1 0xff 00000d4a: AND 00000d4b: DUP5 00000d4c: JUMP 00000d4d: JUMPDEST 00000d4e: PUSH1 0x60 00000d50: PUSH1 0x05 00000d52: DUP1 00000d53: SLOAD 00000d54: DUP1 00000d55: PUSH1 0x20 00000d57: MUL 00000d58: PUSH1 0x20 00000d5a: ADD 00000d5b: PUSH1 0x40 00000d5d: MLOAD 00000d5e: SWAP1 00000d5f: DUP2 00000d60: ADD 00000d61: PUSH1 0x40 00000d63: MSTORE 00000d64: DUP1 00000d65: SWAP3 00000d66: SWAP2 00000d67: SWAP1 00000d68: DUP2 00000d69: DUP2 00000d6a: MSTORE 00000d6b: PUSH1 0x20 00000d6d: ADD 00000d6e: DUP3 00000d6f: DUP1 00000d70: SLOAD 00000d71: DUP1 00000d72: ISZERO 00000d73: PUSH2 0x0da5 00000d76: JUMPI 00000d77: PUSH1 0x20 00000d79: MUL 00000d7a: DUP3 00000d7b: ADD 00000d7c: SWAP2 00000d7d: SWAP1 00000d7e: PUSH1 0x00 00000d80: MSTORE 00000d81: PUSH1 0x20 00000d83: PUSH1 0x00 00000d85: KECCAK256 00000d86: SWAP1 00000d87: JUMPDEST 00000d88: DUP2 00000d89: SLOAD 00000d8a: PUSH1 0x01 00000d8c: PUSH1 0x01 00000d8e: PUSH1 0xa0 00000d90: SHL 00000d91: SUB 00000d92: AND 00000d93: DUP2 00000d94: MSTORE 00000d95: PUSH1 0x01 00000d97: SWAP1 00000d98: SWAP2 00000d99: ADD 00000d9a: SWAP1 00000d9b: PUSH1 0x20 00000d9d: ADD 00000d9e: DUP1 00000d9f: DUP4 00000da0: GT 00000da1: PUSH2 0x0d87 00000da4: JUMPI 00000da5: JUMPDEST 00000da6: POP 00000da7: POP 00000da8: POP 00000da9: POP 00000daa: POP 00000dab: SWAP1 00000dac: POP 00000dad: SWAP1 00000dae: JUMP 00000daf: JUMPDEST 00000db0: PUSH1 0x05 00000db2: SLOAD 00000db3: PUSH1 0x60 00000db5: SWAP1 00000db6: PUSH1 0x00 00000db8: SWAP1 00000db9: PUSH8 0xffffffffffffffff 00000dc2: DUP2 00000dc3: GT 00000dc4: ISZERO 00000dc5: PUSH2 0x0dd0 00000dc8: JUMPI 00000dc9: PUSH2 0x0dd0 00000dcc: PUSH2 0x1cf4 00000dcf: JUMP 00000dd0: JUMPDEST 00000dd1: PUSH1 0x40 00000dd3: MLOAD 00000dd4: SWAP1 00000dd5: DUP1 00000dd6: DUP3 00000dd7: MSTORE 00000dd8: DUP1 00000dd9: PUSH1 0x20 00000ddb: MUL 00000ddc: PUSH1 0x20 00000dde: ADD 00000ddf: DUP3 00000de0: ADD 00000de1: PUSH1 0x40 00000de3: MSTORE 00000de4: DUP1 00000de5: ISZERO 00000de6: PUSH2 0x0df9 00000de9: JUMPI 00000dea: DUP2 00000deb: PUSH1 0x20 00000ded: ADD 00000dee: PUSH1 0x20 00000df0: DUP3 00000df1: MUL 00000df2: DUP1 00000df3: CALLDATASIZE 00000df4: DUP4 00000df5: CALLDATACOPY 00000df6: ADD 00000df7: SWAP1 00000df8: POP 00000df9: JUMPDEST 00000dfa: POP 00000dfb: SWAP1 00000dfc: POP 00000dfd: PUSH1 0x00 00000dff: DUP1 00000e00: JUMPDEST 00000e01: PUSH1 0x05 00000e03: SLOAD 00000e04: DUP2 00000e05: LT 00000e06: ISZERO 00000e07: PUSH2 0x0ecd 00000e0a: JUMPI 00000e0b: PUSH1 0x00 00000e0d: DUP6 00000e0e: DUP2 00000e0f: MSTORE 00000e10: PUSH1 0x02 00000e12: PUSH1 0x20 00000e14: MSTORE 00000e15: PUSH1 0x40 00000e17: DUP2 00000e18: KECCAK256 00000e19: PUSH1 0x05 00000e1b: DUP1 00000e1c: SLOAD 00000e1d: SWAP2 00000e1e: SWAP3 00000e1f: SWAP2 00000e20: DUP5 00000e21: SWAP1 00000e22: DUP2 00000e23: LT 00000e24: PUSH2 0x0e2f 00000e27: JUMPI 00000e28: PUSH2 0x0e2f 00000e2b: PUSH2 0x1c81 00000e2e: JUMP 00000e2f: JUMPDEST 00000e30: PUSH1 0x00 00000e32: SWAP2 00000e33: DUP3 00000e34: MSTORE 00000e35: PUSH1 0x20 00000e37: DUP1 00000e38: DUP4 00000e39: KECCAK256 00000e3a: SWAP1 00000e3b: SWAP2 00000e3c: ADD 00000e3d: SLOAD 00000e3e: PUSH1 0x01 00000e40: PUSH1 0x01 00000e42: PUSH1 0xa0 00000e44: SHL 00000e45: SUB 00000e46: AND 00000e47: DUP4 00000e48: MSTORE 00000e49: DUP3 00000e4a: ADD 00000e4b: SWAP3 00000e4c: SWAP1 00000e4d: SWAP3 00000e4e: MSTORE 00000e4f: PUSH1 0x40 00000e51: ADD 00000e52: SWAP1 00000e53: KECCAK256 00000e54: SLOAD 00000e55: PUSH1 0xff 00000e57: AND 00000e58: ISZERO 00000e59: PUSH2 0x0ec5 00000e5c: JUMPI 00000e5d: PUSH1 0x05 00000e5f: DUP2 00000e60: DUP2 00000e61: SLOAD 00000e62: DUP2 00000e63: LT 00000e64: PUSH2 0x0e6f 00000e67: JUMPI 00000e68: PUSH2 0x0e6f 00000e6b: PUSH2 0x1c81 00000e6e: JUMP 00000e6f: JUMPDEST 00000e70: SWAP1 00000e71: PUSH1 0x00 00000e73: MSTORE 00000e74: PUSH1 0x20 00000e76: PUSH1 0x00 00000e78: KECCAK256 00000e79: ADD 00000e7a: PUSH1 0x00 00000e7c: SWAP1 00000e7d: SLOAD 00000e7e: SWAP1 00000e7f: PUSH2 0x0100 00000e82: EXP 00000e83: SWAP1 00000e84: DIV 00000e85: PUSH1 0x01 00000e87: PUSH1 0x01 00000e89: PUSH1 0xa0 00000e8b: SHL 00000e8c: SUB 00000e8d: AND 00000e8e: DUP4 00000e8f: DUP4 00000e90: DUP2 00000e91: MLOAD 00000e92: DUP2 00000e93: LT 00000e94: PUSH2 0x0e9f 00000e97: JUMPI 00000e98: PUSH2 0x0e9f 00000e9b: PUSH2 0x1c81 00000e9e: JUMP 00000e9f: JUMPDEST 00000ea0: PUSH1 0x01 00000ea2: PUSH1 0x01 00000ea4: PUSH1 0xa0 00000ea6: SHL 00000ea7: SUB 00000ea8: SWAP1 00000ea9: SWAP3 00000eaa: AND 00000eab: PUSH1 0x20 00000ead: SWAP3 00000eae: DUP4 00000eaf: MUL 00000eb0: SWAP2 00000eb1: SWAP1 00000eb2: SWAP2 00000eb3: ADD 00000eb4: SWAP1 00000eb5: SWAP2 00000eb6: ADD 00000eb7: MSTORE 00000eb8: PUSH2 0x0ec2 00000ebb: PUSH1 0x01 00000ebd: DUP4 00000ebe: PUSH2 0x1cad 00000ec1: JUMP 00000ec2: JUMPDEST 00000ec3: SWAP2 00000ec4: POP 00000ec5: JUMPDEST 00000ec6: PUSH1 0x01 00000ec8: ADD 00000ec9: PUSH2 0x0e00 00000ecc: JUMP 00000ecd: JUMPDEST 00000ece: DUP2 00000ecf: PUSH8 0xffffffffffffffff 00000ed8: DUP2 00000ed9: GT 00000eda: ISZERO 00000edb: PUSH2 0x0ee6 00000ede: JUMPI 00000edf: PUSH2 0x0ee6 00000ee2: PUSH2 0x1cf4 00000ee5: JUMP 00000ee6: JUMPDEST 00000ee7: PUSH1 0x40 00000ee9: MLOAD 00000eea: SWAP1 00000eeb: DUP1 00000eec: DUP3 00000eed: MSTORE 00000eee: DUP1 00000eef: PUSH1 0x20 00000ef1: MUL 00000ef2: PUSH1 0x20 00000ef4: ADD 00000ef5: DUP3 00000ef6: ADD 00000ef7: PUSH1 0x40 00000ef9: MSTORE 00000efa: DUP1 00000efb: ISZERO 00000efc: PUSH2 0x0f0f 00000eff: JUMPI 00000f00: DUP2 00000f01: PUSH1 0x20 00000f03: ADD 00000f04: PUSH1 0x20 00000f06: DUP3 00000f07: MUL 00000f08: DUP1 00000f09: CALLDATASIZE 00000f0a: DUP4 00000f0b: CALLDATACOPY 00000f0c: ADD 00000f0d: SWAP1 00000f0e: POP 00000f0f: JUMPDEST 00000f10: POP 00000f11: SWAP4 00000f12: POP 00000f13: PUSH1 0x00 00000f15: SWAP1 00000f16: POP 00000f17: JUMPDEST 00000f18: DUP2 00000f19: DUP2 00000f1a: LT 00000f1b: ISZERO 00000f1c: PUSH2 0x0f6b 00000f1f: JUMPI 00000f20: DUP3 00000f21: DUP2 00000f22: DUP2 00000f23: MLOAD 00000f24: DUP2 00000f25: LT 00000f26: PUSH2 0x0f31 00000f29: JUMPI 00000f2a: PUSH2 0x0f31 00000f2d: PUSH2 0x1c81 00000f30: JUMP 00000f31: JUMPDEST 00000f32: PUSH1 0x20 00000f34: MUL 00000f35: PUSH1 0x20 00000f37: ADD 00000f38: ADD 00000f39: MLOAD 00000f3a: DUP5 00000f3b: DUP3 00000f3c: DUP2 00000f3d: MLOAD 00000f3e: DUP2 00000f3f: LT 00000f40: PUSH2 0x0f4b 00000f43: JUMPI 00000f44: PUSH2 0x0f4b 00000f47: PUSH2 0x1c81 00000f4a: JUMP 00000f4b: JUMPDEST 00000f4c: PUSH1 0x01 00000f4e: PUSH1 0x01 00000f50: PUSH1 0xa0 00000f52: SHL 00000f53: SUB 00000f54: SWAP1 00000f55: SWAP3 00000f56: AND 00000f57: PUSH1 0x20 00000f59: SWAP3 00000f5a: DUP4 00000f5b: MUL 00000f5c: SWAP2 00000f5d: SWAP1 00000f5e: SWAP2 00000f5f: ADD 00000f60: SWAP1 00000f61: SWAP2 00000f62: ADD 00000f63: MSTORE 00000f64: PUSH1 0x01 00000f66: ADD 00000f67: PUSH2 0x0f17 00000f6a: JUMP 00000f6b: JUMPDEST 00000f6c: POP 00000f6d: POP 00000f6e: POP 00000f6f: SWAP2 00000f70: SWAP1 00000f71: POP 00000f72: JUMP 00000f73: JUMPDEST 00000f74: CALLER 00000f75: ADDRESS 00000f76: EQ 00000f77: PUSH2 0x0f92 00000f7a: JUMPI 00000f7b: PUSH1 0x40 00000f7d: MLOAD 00000f7e: PUSH3 0x461bcd 00000f82: PUSH1 0xe5 00000f84: SHL 00000f85: DUP2 00000f86: MSTORE 00000f87: PUSH1 0x04 00000f89: ADD 00000f8a: PUSH2 0x05b5 00000f8d: SWAP1 00000f8e: PUSH2 0x1bfb 00000f91: JUMP 00000f92: JUMPDEST 00000f93: PUSH1 0x05 00000f95: SLOAD 00000f96: DUP2 00000f97: PUSH1 0x32 00000f99: DUP3 00000f9a: GT 00000f9b: DUP1 00000f9c: PUSH2 0x0fa4 00000f9f: JUMPI 00000fa0: POP 00000fa1: DUP2 00000fa2: DUP2 00000fa3: GT 00000fa4: JUMPDEST 00000fa5: DUP1 00000fa6: PUSH2 0x0fad 00000fa9: JUMPI 00000faa: POP 00000fab: DUP1 00000fac: ISZERO 00000fad: JUMPDEST 00000fae: DUP1 00000faf: PUSH2 0x0fb6 00000fb2: JUMPI 00000fb3: POP 00000fb4: DUP2 00000fb5: ISZERO 00000fb6: JUMPDEST 00000fb7: ISZERO 00000fb8: PUSH2 0x0ffd 00000fbb: JUMPI 00000fbc: PUSH1 0x40 00000fbe: MLOAD 00000fbf: PUSH3 0x461bcd 00000fc3: PUSH1 0xe5 00000fc5: SHL 00000fc6: DUP2 00000fc7: MSTORE 00000fc8: PUSH1 0x20 00000fca: PUSH1 0x04 00000fcc: DUP3 00000fcd: ADD 00000fce: MSTORE 00000fcf: PUSH1 0x17 00000fd1: PUSH1 0x24 00000fd3: DUP3 00000fd4: ADD 00000fd5: MSTORE 00000fd6: PUSH23 0x2b20a624a22fa922a8aaa4a922a6a2a72a2fa2a92927a9 00000fee: PUSH1 0x49 00000ff0: SHL 00000ff1: PUSH1 0x44 00000ff3: DUP3 00000ff4: ADD 00000ff5: MSTORE 00000ff6: PUSH1 0x64 00000ff8: ADD 00000ff9: PUSH2 0x05b5 00000ffc: JUMP 00000ffd: JUMPDEST 00000ffe: PUSH1 0x06 00001000: DUP4 00001001: SWAP1 00001002: SSTORE 00001003: PUSH1 0x40 00001005: MLOAD 00001006: DUP4 00001007: DUP2 00001008: MSTORE 00001009: PUSH32 0xa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a 0000102a: SWAP1 0000102b: PUSH1 0x20 0000102d: ADD 0000102e: PUSH1 0x40 00001030: MLOAD 00001031: DUP1 00001032: SWAP2 00001033: SUB 00001034: SWAP1 00001035: LOG1 00001036: POP 00001037: POP 00001038: POP 00001039: JUMP 0000103a: JUMPDEST 0000103b: CALLER 0000103c: PUSH1 0x00 0000103e: DUP2 0000103f: DUP2 00001040: MSTORE 00001041: PUSH1 0x03 00001043: PUSH1 0x20 00001045: MSTORE 00001046: PUSH1 0x40 00001048: SWAP1 00001049: KECCAK256 0000104a: SLOAD 0000104b: PUSH1 0xff 0000104d: AND 0000104e: PUSH2 0x1069 00001051: JUMPI 00001052: PUSH1 0x40 00001054: MLOAD 00001055: PUSH3 0x461bcd 00001059: PUSH1 0xe5 0000105b: SHL 0000105c: DUP2 0000105d: MSTORE 0000105e: PUSH1 0x04 00001060: ADD 00001061: PUSH2 0x05b5 00001064: SWAP1 00001065: PUSH2 0x1c26 00001068: JUMP 00001069: JUMPDEST 0000106a: PUSH1 0x00 0000106c: DUP3 0000106d: DUP2 0000106e: MSTORE 0000106f: PUSH1 0x01 00001071: PUSH1 0x20 00001073: MSTORE 00001074: PUSH1 0x40 00001076: SWAP1 00001077: KECCAK256 00001078: SLOAD 00001079: DUP3 0000107a: SWAP1 0000107b: PUSH1 0x01 0000107d: PUSH1 0x01 0000107f: PUSH1 0xa0 00001081: SHL 00001082: SUB 00001083: AND 00001084: PUSH2 0x10cf 00001087: JUMPI 00001088: PUSH1 0x40 0000108a: MLOAD 0000108b: PUSH3 0x461bcd 0000108f: PUSH1 0xe5 00001091: SHL 00001092: DUP2 00001093: MSTORE 00001094: PUSH1 0x20 00001096: PUSH1 0x04 00001098: DUP3 00001099: ADD 0000109a: MSTORE 0000109b: PUSH1 0x18 0000109d: PUSH1 0x24 0000109f: DUP3 000010a0: ADD 000010a1: MSTORE 000010a2: PUSH32 0x5452414e53414354494f4e5f4558495354535f4552524f520000000000000000 000010c3: PUSH1 0x44 000010c5: DUP3 000010c6: ADD 000010c7: MSTORE 000010c8: PUSH1 0x64 000010ca: ADD 000010cb: PUSH2 0x05b5 000010ce: JUMP 000010cf: JUMPDEST 000010d0: PUSH1 0x00 000010d2: DUP4 000010d3: DUP2 000010d4: MSTORE 000010d5: PUSH1 0x02 000010d7: PUSH1 0x20 000010d9: SWAP1 000010da: DUP2 000010db: MSTORE 000010dc: PUSH1 0x40 000010de: DUP1 000010df: DUP4 000010e0: KECCAK256 000010e1: CALLER 000010e2: DUP1 000010e3: DUP6 000010e4: MSTORE 000010e5: SWAP3 000010e6: MSTORE 000010e7: SWAP1 000010e8: SWAP2 000010e9: KECCAK256 000010ea: SLOAD 000010eb: DUP5 000010ec: SWAP2 000010ed: SWAP1 000010ee: PUSH1 0xff 000010f0: AND 000010f1: ISZERO 000010f2: PUSH2 0x1133 000010f5: JUMPI 000010f6: PUSH1 0x40 000010f8: MLOAD 000010f9: PUSH3 0x461bcd 000010fd: PUSH1 0xe5 000010ff: SHL 00001100: DUP2 00001101: MSTORE 00001102: PUSH1 0x20 00001104: PUSH1 0x04 00001106: DUP3 00001107: ADD 00001108: MSTORE 00001109: PUSH1 0x13 0000110b: PUSH1 0x24 0000110d: DUP3 0000110e: ADD 0000110f: MSTORE 00001110: PUSH19 0x2727aa2fa1a7a72324a926a2a22fa2a92927a9 00001124: PUSH1 0x69 00001126: SHL 00001127: PUSH1 0x44 00001129: DUP3 0000112a: ADD 0000112b: MSTORE 0000112c: PUSH1 0x64 0000112e: ADD 0000112f: PUSH2 0x05b5 00001132: JUMP 00001133: JUMPDEST 00001134: PUSH1 0x00 00001136: DUP6 00001137: DUP2 00001138: MSTORE 00001139: PUSH1 0x02 0000113b: PUSH1 0x20 0000113d: SWAP1 0000113e: DUP2 0000113f: MSTORE 00001140: PUSH1 0x40 00001142: DUP1 00001143: DUP4 00001144: KECCAK256 00001145: CALLER 00001146: DUP1 00001147: DUP6 00001148: MSTORE 00001149: SWAP3 0000114a: MSTORE 0000114b: DUP1 0000114c: DUP4 0000114d: KECCAK256 0000114e: DUP1 0000114f: SLOAD 00001150: PUSH1 0xff 00001152: NOT 00001153: AND 00001154: PUSH1 0x01 00001156: OR 00001157: SWAP1 00001158: SSTORE 00001159: MLOAD 0000115a: DUP8 0000115b: SWAP3 0000115c: PUSH32 0x4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef 0000117d: SWAP2 0000117e: LOG3 0000117f: PUSH2 0x1187 00001182: DUP6 00001183: PUSH2 0x0af4 00001186: JUMP 00001187: JUMPDEST 00001188: DUP1 00001189: ISZERO 0000118a: PUSH2 0x119f 0000118d: JUMPI 0000118e: POP 0000118f: PUSH1 0x00 00001191: DUP6 00001192: DUP2 00001193: MSTORE 00001194: PUSH1 0x04 00001196: PUSH1 0x20 00001198: MSTORE 00001199: PUSH1 0x40 0000119b: SWAP1 0000119c: KECCAK256 0000119d: SLOAD 0000119e: ISZERO 0000119f: JUMPDEST 000011a0: DUP1 000011a1: ISZERO 000011a2: PUSH2 0x11b1 000011a5: JUMPI 000011a6: POP 000011a7: PUSH2 0x11af 000011aa: DUP6 000011ab: PUSH2 0x17d0 000011ae: JUMP 000011af: JUMPDEST 000011b0: ISZERO 000011b1: JUMPDEST 000011b2: ISZERO 000011b3: PUSH2 0x1216 000011b6: JUMPI 000011b7: PUSH1 0x00 000011b9: DUP1 000011ba: SLOAD 000011bb: PUSH2 0x11c4 000011be: SWAP1 000011bf: TIMESTAMP 000011c0: PUSH2 0x1cad 000011c3: JUMP 000011c4: JUMPDEST 000011c5: PUSH1 0x00 000011c7: DUP8 000011c8: DUP2 000011c9: MSTORE 000011ca: PUSH1 0x04 000011cc: PUSH1 0x20 000011ce: MSTORE 000011cf: PUSH1 0x40 000011d1: SWAP1 000011d2: DUP2 000011d3: SWAP1 000011d4: KECCAK256 000011d5: DUP3 000011d6: SWAP1 000011d7: SSTORE 000011d8: MLOAD 000011d9: SWAP1 000011da: SWAP2 000011db: POP 000011dc: DUP7 000011dd: SWAP1 000011de: PUSH32 0x280af6a3ba059a74f0e894262aa07f2c4d0de1e231882263c0d7dcda111b1a44 000011ff: SWAP1 00001200: PUSH2 0x120c 00001203: SWAP1 00001204: DUP5 00001205: DUP2 00001206: MSTORE 00001207: PUSH1 0x20 00001209: ADD 0000120a: SWAP1 0000120b: JUMP 0000120c: JUMPDEST 0000120d: PUSH1 0x40 0000120f: MLOAD 00001210: DUP1 00001211: SWAP2 00001212: SUB 00001213: SWAP1 00001214: LOG2 00001215: POP 00001216: JUMPDEST 00001217: POP 00001218: POP 00001219: POP 0000121a: POP 0000121b: POP 0000121c: JUMP 0000121d: JUMPDEST 0000121e: CALLER 0000121f: PUSH1 0x00 00001221: DUP2 00001222: DUP2 00001223: MSTORE 00001224: PUSH1 0x03 00001226: PUSH1 0x20 00001228: MSTORE 00001229: PUSH1 0x40 0000122b: DUP2 0000122c: KECCAK256 0000122d: SLOAD 0000122e: SWAP1 0000122f: SWAP2 00001230: SWAP1 00001231: PUSH1 0xff 00001233: AND 00001234: PUSH2 0x124f 00001237: JUMPI 00001238: PUSH1 0x40 0000123a: MLOAD 0000123b: PUSH3 0x461bcd 0000123f: PUSH1 0xe5 00001241: SHL 00001242: DUP2 00001243: MSTORE 00001244: PUSH1 0x04 00001246: ADD 00001247: PUSH2 0x05b5 0000124a: SWAP1 0000124b: PUSH2 0x1c26 0000124e: JUMP 0000124f: JUMPDEST 00001250: DUP6 00001251: PUSH1 0x01 00001253: PUSH1 0x01 00001255: PUSH1 0xa0 00001257: SHL 00001258: SUB 00001259: DUP2 0000125a: AND 0000125b: PUSH2 0x1297 0000125e: JUMPI 0000125f: PUSH1 0x40 00001261: MLOAD 00001262: PUSH3 0x461bcd 00001266: PUSH1 0xe5 00001268: SHL 00001269: DUP2 0000126a: MSTORE 0000126b: PUSH1 0x20 0000126d: PUSH1 0x04 0000126f: DUP3 00001270: ADD 00001271: MSTORE 00001272: PUSH1 0x0e 00001274: PUSH1 0x24 00001276: DUP3 00001277: ADD 00001278: MSTORE 00001279: PUSH14 0x2727aa2fa72aa6262fa2a92927a9 00001288: PUSH1 0x91 0000128a: SHL 0000128b: PUSH1 0x44 0000128d: DUP3 0000128e: ADD 0000128f: MSTORE 00001290: PUSH1 0x64 00001292: ADD 00001293: PUSH2 0x05b5 00001296: JUMP 00001297: JUMPDEST 00001298: PUSH1 0x07 0000129a: SLOAD 0000129b: SWAP3 0000129c: POP 0000129d: PUSH1 0x40 0000129f: MLOAD 000012a0: DUP1 000012a1: PUSH1 0x80 000012a3: ADD 000012a4: PUSH1 0x40 000012a6: MSTORE 000012a7: DUP1 000012a8: DUP9 000012a9: PUSH1 0x01 000012ab: PUSH1 0x01 000012ad: PUSH1 0xa0 000012af: SHL 000012b0: SUB 000012b1: AND 000012b2: DUP2 000012b3: MSTORE 000012b4: PUSH1 0x20 000012b6: ADD 000012b7: DUP8 000012b8: DUP2 000012b9: MSTORE 000012ba: PUSH1 0x20 000012bc: ADD 000012bd: DUP7 000012be: DUP7 000012bf: DUP1 000012c0: DUP1 000012c1: PUSH1 0x1f 000012c3: ADD 000012c4: PUSH1 0x20 000012c6: DUP1 000012c7: SWAP2 000012c8: DIV 000012c9: MUL 000012ca: PUSH1 0x20 000012cc: ADD 000012cd: PUSH1 0x40 000012cf: MLOAD 000012d0: SWAP1 000012d1: DUP2 000012d2: ADD 000012d3: PUSH1 0x40 000012d5: MSTORE 000012d6: DUP1 000012d7: SWAP4 000012d8: SWAP3 000012d9: SWAP2 000012da: SWAP1 000012db: DUP2 000012dc: DUP2 000012dd: MSTORE 000012de: PUSH1 0x20 000012e0: ADD 000012e1: DUP4 000012e2: DUP4 000012e3: DUP1 000012e4: DUP3 000012e5: DUP5 000012e6: CALLDATACOPY 000012e7: PUSH1 0x00 000012e9: SWAP3 000012ea: ADD 000012eb: DUP3 000012ec: SWAP1 000012ed: MSTORE 000012ee: POP 000012ef: SWAP4 000012f0: DUP6 000012f1: MSTORE 000012f2: POP 000012f3: POP 000012f4: POP 000012f5: PUSH1 0x20 000012f7: SWAP2 000012f8: DUP3 000012f9: ADD 000012fa: DUP2 000012fb: SWAP1 000012fc: MSTORE 000012fd: DUP6 000012fe: DUP2 000012ff: MSTORE 00001300: PUSH1 0x01 00001302: DUP1 00001303: DUP4 00001304: MSTORE 00001305: PUSH1 0x40 00001307: SWAP2 00001308: DUP3 00001309: SWAP1 0000130a: KECCAK256 0000130b: DUP5 0000130c: MLOAD 0000130d: DUP2 0000130e: SLOAD 0000130f: PUSH1 0x01 00001311: PUSH1 0x01 00001313: PUSH1 0xa0 00001315: SHL 00001316: SUB 00001317: NOT 00001318: AND 00001319: PUSH1 0x01 0000131b: PUSH1 0x01 0000131d: PUSH1 0xa0 0000131f: SHL 00001320: SUB 00001321: SWAP1 00001322: SWAP2 00001323: AND 00001324: OR 00001325: DUP2 00001326: SSTORE 00001327: SWAP3 00001328: DUP5 00001329: ADD 0000132a: MLOAD 0000132b: SWAP1 0000132c: DUP4 0000132d: ADD 0000132e: SSTORE 0000132f: DUP3 00001330: ADD 00001331: MLOAD 00001332: PUSH1 0x02 00001334: DUP3 00001335: ADD 00001336: SWAP1 00001337: PUSH2 0x1340 0000133a: SWAP1 0000133b: DUP3 0000133c: PUSH2 0x1d5a 0000133f: JUMP 00001340: JUMPDEST 00001341: POP 00001342: PUSH1 0x60 00001344: SWAP2 00001345: SWAP1 00001346: SWAP2 00001347: ADD 00001348: MLOAD 00001349: PUSH1 0x03 0000134b: SWAP1 0000134c: SWAP2 0000134d: ADD 0000134e: DUP1 0000134f: SLOAD 00001350: PUSH1 0xff 00001352: NOT 00001353: AND 00001354: SWAP2 00001355: ISZERO 00001356: ISZERO 00001357: SWAP2 00001358: SWAP1 00001359: SWAP2 0000135a: OR 0000135b: SWAP1 0000135c: SSTORE 0000135d: PUSH1 0x07 0000135f: DUP1 00001360: SLOAD 00001361: PUSH1 0x01 00001363: SWAP2 00001364: SWAP1 00001365: PUSH1 0x00 00001367: SWAP1 00001368: PUSH2 0x1372 0000136b: SWAP1 0000136c: DUP5 0000136d: SWAP1 0000136e: PUSH2 0x1cad 00001371: JUMP 00001372: JUMPDEST 00001373: SWAP1 00001374: SWAP2 00001375: SSTORE 00001376: POP 00001377: POP 00001378: PUSH1 0x40 0000137a: MLOAD 0000137b: DUP4 0000137c: SWAP1 0000137d: PUSH32 0xc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e51 0000139e: SWAP1 0000139f: PUSH1 0x00 000013a1: SWAP1 000013a2: LOG2 000013a3: PUSH2 0x13ab 000013a6: DUP4 000013a7: PUSH2 0x103a 000013aa: JUMP 000013ab: JUMPDEST 000013ac: POP 000013ad: POP 000013ae: SWAP5 000013af: SWAP4 000013b0: POP 000013b1: POP 000013b2: POP 000013b3: POP 000013b4: JUMP 000013b5: JUMPDEST 000013b6: CALLER 000013b7: ADDRESS 000013b8: EQ 000013b9: PUSH2 0x13d4 000013bc: JUMPI 000013bd: PUSH1 0x40 000013bf: MLOAD 000013c0: PUSH3 0x461bcd 000013c4: PUSH1 0xe5 000013c6: SHL 000013c7: DUP2 000013c8: MSTORE 000013c9: PUSH1 0x04 000013cb: ADD 000013cc: PUSH2 0x05b5 000013cf: SWAP1 000013d0: PUSH2 0x1bfb 000013d3: JUMP 000013d4: JUMPDEST 000013d5: PUSH1 0x01 000013d7: PUSH1 0x01 000013d9: PUSH1 0xa0 000013db: SHL 000013dc: SUB 000013dd: DUP3 000013de: AND 000013df: PUSH1 0x00 000013e1: SWAP1 000013e2: DUP2 000013e3: MSTORE 000013e4: PUSH1 0x03 000013e6: PUSH1 0x20 000013e8: MSTORE 000013e9: PUSH1 0x40 000013eb: SWAP1 000013ec: KECCAK256 000013ed: SLOAD 000013ee: DUP3 000013ef: SWAP1 000013f0: PUSH1 0xff 000013f2: AND 000013f3: PUSH2 0x140e 000013f6: JUMPI 000013f7: PUSH1 0x40 000013f9: MLOAD 000013fa: PUSH3 0x461bcd 000013fe: PUSH1 0xe5 00001400: SHL 00001401: DUP2 00001402: MSTORE 00001403: PUSH1 0x04 00001405: ADD 00001406: PUSH2 0x05b5 00001409: SWAP1 0000140a: PUSH2 0x1c26 0000140d: JUMP 0000140e: JUMPDEST 0000140f: PUSH1 0x01 00001411: PUSH1 0x01 00001413: PUSH1 0xa0 00001415: SHL 00001416: SUB 00001417: DUP3 00001418: AND 00001419: PUSH1 0x00 0000141b: SWAP1 0000141c: DUP2 0000141d: MSTORE 0000141e: PUSH1 0x03 00001420: PUSH1 0x20 00001422: MSTORE 00001423: PUSH1 0x40 00001425: SWAP1 00001426: KECCAK256 00001427: SLOAD 00001428: DUP3 00001429: SWAP1 0000142a: PUSH1 0xff 0000142c: AND 0000142d: ISZERO 0000142e: PUSH2 0x1479 00001431: JUMPI 00001432: PUSH1 0x40 00001434: MLOAD 00001435: PUSH3 0x461bcd 00001439: PUSH1 0xe5 0000143b: SHL 0000143c: DUP2 0000143d: MSTORE 0000143e: PUSH1 0x20 00001440: PUSH1 0x04 00001442: DUP3 00001443: ADD 00001444: MSTORE 00001445: PUSH1 0x1a 00001447: PUSH1 0x24 00001449: DUP3 0000144a: ADD 0000144b: MSTORE 0000144c: PUSH32 0x4f574e45525f444f45535f4e4f545f45584953545f4552524f52000000000000 0000146d: PUSH1 0x44 0000146f: DUP3 00001470: ADD 00001471: MSTORE 00001472: PUSH1 0x64 00001474: ADD 00001475: PUSH2 0x05b5 00001478: JUMP 00001479: JUMPDEST 0000147a: PUSH1 0x00 0000147c: JUMPDEST 0000147d: PUSH1 0x05 0000147f: SLOAD 00001480: DUP2 00001481: LT 00001482: ISZERO 00001483: PUSH2 0x150c 00001486: JUMPI 00001487: DUP5 00001488: PUSH1 0x01 0000148a: PUSH1 0x01 0000148c: PUSH1 0xa0 0000148e: SHL 0000148f: SUB 00001490: AND 00001491: PUSH1 0x05 00001493: DUP3 00001494: DUP2 00001495: SLOAD 00001496: DUP2 00001497: LT 00001498: PUSH2 0x14a3 0000149b: JUMPI 0000149c: PUSH2 0x14a3 0000149f: PUSH2 0x1c81 000014a2: JUMP 000014a3: JUMPDEST 000014a4: PUSH1 0x00 000014a6: SWAP2 000014a7: DUP3 000014a8: MSTORE 000014a9: PUSH1 0x20 000014ab: SWAP1 000014ac: SWAP2 000014ad: KECCAK256 000014ae: ADD 000014af: SLOAD 000014b0: PUSH1 0x01 000014b2: PUSH1 0x01 000014b4: PUSH1 0xa0 000014b6: SHL 000014b7: SUB 000014b8: AND 000014b9: SUB 000014ba: PUSH2 0x1504 000014bd: JUMPI 000014be: DUP4 000014bf: PUSH1 0x05 000014c1: DUP3 000014c2: DUP2 000014c3: SLOAD 000014c4: DUP2 000014c5: LT 000014c6: PUSH2 0x14d1 000014c9: JUMPI 000014ca: PUSH2 0x14d1 000014cd: PUSH2 0x1c81 000014d0: JUMP 000014d1: JUMPDEST 000014d2: SWAP1 000014d3: PUSH1 0x00 000014d5: MSTORE 000014d6: PUSH1 0x20 000014d8: PUSH1 0x00 000014da: KECCAK256 000014db: ADD 000014dc: PUSH1 0x00 000014de: PUSH2 0x0100 000014e1: EXP 000014e2: DUP2 000014e3: SLOAD 000014e4: DUP2 000014e5: PUSH1 0x01 000014e7: PUSH1 0x01 000014e9: PUSH1 0xa0 000014eb: SHL 000014ec: SUB 000014ed: MUL 000014ee: NOT 000014ef: AND 000014f0: SWAP1 000014f1: DUP4 000014f2: PUSH1 0x01 000014f4: PUSH1 0x01 000014f6: PUSH1 0xa0 000014f8: SHL 000014f9: SUB 000014fa: AND 000014fb: MUL 000014fc: OR 000014fd: SWAP1 000014fe: SSTORE 000014ff: POP 00001500: PUSH2 0x150c 00001503: JUMP 00001504: JUMPDEST 00001505: PUSH1 0x01 00001507: ADD 00001508: PUSH2 0x147c 0000150b: JUMP 0000150c: JUMPDEST 0000150d: POP 0000150e: PUSH1 0x01 00001510: PUSH1 0x01 00001512: PUSH1 0xa0 00001514: SHL 00001515: SUB 00001516: DUP1 00001517: DUP6 00001518: AND 00001519: PUSH1 0x00 0000151b: DUP2 0000151c: DUP2 0000151d: MSTORE 0000151e: PUSH1 0x03 00001520: PUSH1 0x20 00001522: MSTORE 00001523: PUSH1 0x40 00001525: DUP1 00001526: DUP3 00001527: KECCAK256 00001528: DUP1 00001529: SLOAD 0000152a: PUSH1 0xff 0000152c: NOT 0000152d: SWAP1 0000152e: DUP2 0000152f: AND 00001530: SWAP1 00001531: SWAP2 00001532: SSTORE 00001533: SWAP4 00001534: DUP8 00001535: AND 00001536: DUP3 00001537: MSTORE 00001538: DUP1 00001539: DUP3 0000153a: KECCAK256 0000153b: DUP1 0000153c: SLOAD 0000153d: SWAP1 0000153e: SWAP5 0000153f: AND 00001540: PUSH1 0x01 00001542: OR 00001543: SWAP1 00001544: SWAP4 00001545: SSTORE 00001546: SWAP2 00001547: MLOAD 00001548: SWAP1 00001549: SWAP2 0000154a: PUSH32 0x8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b90 0000156b: SWAP2 0000156c: LOG2 0000156d: PUSH1 0x40 0000156f: MLOAD 00001570: PUSH1 0x01 00001572: PUSH1 0x01 00001574: PUSH1 0xa0 00001576: SHL 00001577: SUB 00001578: DUP5 00001579: AND 0000157a: SWAP1 0000157b: PUSH32 0xf39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d 0000159c: SWAP1 0000159d: PUSH1 0x00 0000159f: SWAP1 000015a0: LOG2 000015a1: POP 000015a2: POP 000015a3: POP 000015a4: POP 000015a5: JUMP 000015a6: JUMPDEST 000015a7: CALLER 000015a8: PUSH1 0x00 000015aa: DUP2 000015ab: DUP2 000015ac: MSTORE 000015ad: PUSH1 0x03 000015af: PUSH1 0x20 000015b1: MSTORE 000015b2: PUSH1 0x40 000015b4: SWAP1 000015b5: KECCAK256 000015b6: SLOAD 000015b7: PUSH1 0xff 000015b9: AND 000015ba: PUSH2 0x15d5 000015bd: JUMPI 000015be: PUSH1 0x40 000015c0: MLOAD 000015c1: PUSH3 0x461bcd 000015c5: PUSH1 0xe5 000015c7: SHL 000015c8: DUP2 000015c9: MSTORE 000015ca: PUSH1 0x04 000015cc: ADD 000015cd: PUSH2 0x05b5 000015d0: SWAP1 000015d1: PUSH2 0x1c26 000015d4: JUMP 000015d5: JUMPDEST 000015d6: PUSH1 0x00 000015d8: DUP3 000015d9: DUP2 000015da: MSTORE 000015db: PUSH1 0x01 000015dd: PUSH1 0x20 000015df: MSTORE 000015e0: PUSH1 0x40 000015e2: SWAP1 000015e3: KECCAK256 000015e4: PUSH1 0x03 000015e6: ADD 000015e7: SLOAD 000015e8: DUP3 000015e9: SWAP1 000015ea: PUSH1 0xff 000015ec: AND 000015ed: ISZERO 000015ee: PUSH2 0x162e 000015f1: JUMPI 000015f2: PUSH1 0x40 000015f4: MLOAD 000015f5: PUSH3 0x461bcd 000015f9: PUSH1 0xe5 000015fb: SHL 000015fc: DUP2 000015fd: MSTORE 000015fe: PUSH1 0x20 00001600: PUSH1 0x04 00001602: DUP3 00001603: ADD 00001604: MSTORE 00001605: PUSH1 0x12 00001607: PUSH1 0x24 00001609: DUP3 0000160a: ADD 0000160b: MSTORE 0000160c: PUSH18 0x2727aa2fa2ac22a1aaaa22a22fa2a92927a9 0000161f: PUSH1 0x71 00001621: SHL 00001622: PUSH1 0x44 00001624: DUP3 00001625: ADD 00001626: MSTORE 00001627: PUSH1 0x64 00001629: ADD 0000162a: PUSH2 0x05b5 0000162d: JUMP 0000162e: JUMPDEST 0000162f: PUSH1 0x00 00001631: DUP4 00001632: DUP2 00001633: MSTORE 00001634: PUSH1 0x04 00001636: PUSH1 0x20 00001638: MSTORE 00001639: PUSH1 0x40 0000163b: SWAP1 0000163c: KECCAK256 0000163d: SLOAD 0000163e: TIMESTAMP 0000163f: LT 00001640: ISZERO 00001641: PUSH2 0x168c 00001644: JUMPI 00001645: PUSH1 0x40 00001647: MLOAD 00001648: PUSH3 0x461bcd 0000164c: PUSH1 0xe5 0000164e: SHL 0000164f: DUP2 00001650: MSTORE 00001651: PUSH1 0x20 00001653: PUSH1 0x04 00001655: DUP3 00001656: ADD 00001657: MSTORE 00001658: PUSH1 0x1a 0000165a: PUSH1 0x24 0000165c: DUP3 0000165d: ADD 0000165e: MSTORE 0000165f: PUSH32 0x5452414e53414354494f4e5f4e4545445f544f5f554e4c4f434b000000000000 00001680: PUSH1 0x44 00001682: DUP3 00001683: ADD 00001684: MSTORE 00001685: PUSH1 0x64 00001687: ADD 00001688: PUSH2 0x05b5 0000168b: JUMP 0000168c: JUMPDEST 0000168d: PUSH2 0x1695 00001690: DUP4 00001691: PUSH2 0x0af4 00001694: JUMP 00001695: JUMPDEST 00001696: ISZERO 00001697: PUSH2 0x17cb 0000169a: JUMPI 0000169b: PUSH1 0x00 0000169d: DUP4 0000169e: DUP2 0000169f: MSTORE 000016a0: PUSH1 0x01 000016a2: PUSH1 0x20 000016a4: DUP2 000016a5: SWAP1 000016a6: MSTORE 000016a7: PUSH1 0x40 000016a9: DUP1 000016aa: DUP4 000016ab: KECCAK256 000016ac: PUSH1 0x03 000016ae: DUP2 000016af: ADD 000016b0: DUP1 000016b1: SLOAD 000016b2: PUSH1 0xff 000016b4: NOT 000016b5: AND 000016b6: DUP5 000016b7: OR 000016b8: SWAP1 000016b9: SSTORE 000016ba: DUP1 000016bb: SLOAD 000016bc: SWAP3 000016bd: DUP2 000016be: ADD 000016bf: SLOAD 000016c0: SWAP2 000016c1: MLOAD 000016c2: SWAP1 000016c3: SWAP4 000016c4: SWAP3 000016c5: PUSH1 0x01 000016c7: PUSH1 0x01 000016c9: PUSH1 0xa0 000016cb: SHL 000016cc: SUB 000016cd: AND 000016ce: SWAP2 000016cf: SWAP1 000016d0: PUSH2 0x16dd 000016d3: SWAP1 000016d4: PUSH1 0x02 000016d6: DUP7 000016d7: ADD 000016d8: SWAP1 000016d9: PUSH2 0x1e1a 000016dc: JUMP 000016dd: JUMPDEST 000016de: PUSH1 0x00 000016e0: PUSH1 0x40 000016e2: MLOAD 000016e3: DUP1 000016e4: DUP4 000016e5: SUB 000016e6: DUP2 000016e7: DUP6 000016e8: DUP8 000016e9: GAS 000016ea: CALL 000016eb: SWAP3 000016ec: POP 000016ed: POP 000016ee: POP 000016ef: RETURNDATASIZE 000016f0: DUP1 000016f1: PUSH1 0x00 000016f3: DUP2 000016f4: EQ 000016f5: PUSH2 0x171a 000016f8: JUMPI 000016f9: PUSH1 0x40 000016fb: MLOAD 000016fc: SWAP2 000016fd: POP 000016fe: PUSH1 0x1f 00001700: NOT 00001701: PUSH1 0x3f 00001703: RETURNDATASIZE 00001704: ADD 00001705: AND 00001706: DUP3 00001707: ADD 00001708: PUSH1 0x40 0000170a: MSTORE 0000170b: RETURNDATASIZE 0000170c: DUP3 0000170d: MSTORE 0000170e: RETURNDATASIZE 0000170f: PUSH1 0x00 00001711: PUSH1 0x20 00001713: DUP5 00001714: ADD 00001715: RETURNDATACOPY 00001716: PUSH2 0x171f 00001719: JUMP 0000171a: JUMPDEST 0000171b: PUSH1 0x60 0000171d: SWAP2 0000171e: POP 0000171f: JUMPDEST 00001720: POP 00001721: POP 00001722: SWAP1 00001723: POP 00001724: DUP1 00001725: ISZERO 00001726: PUSH2 0x1759 00001729: JUMPI 0000172a: PUSH1 0x40 0000172c: MLOAD 0000172d: DUP6 0000172e: SWAP1 0000172f: PUSH32 0x33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed75 00001750: SWAP1 00001751: PUSH1 0x00 00001753: SWAP1 00001754: LOG2 00001755: PUSH2 0x1216 00001758: JUMP 00001759: JUMPDEST 0000175a: PUSH1 0x40 0000175c: MLOAD 0000175d: DUP6 0000175e: SWAP1 0000175f: PUSH32 0x526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b79236 00001780: SWAP1 00001781: PUSH1 0x00 00001783: SWAP1 00001784: LOG2 00001785: PUSH1 0x03 00001787: DUP3 00001788: ADD 00001789: DUP1 0000178a: SLOAD 0000178b: PUSH1 0xff 0000178d: NOT 0000178e: AND 0000178f: SWAP1 00001790: SSTORE 00001791: PUSH1 0x40 00001793: MLOAD 00001794: PUSH3 0x461bcd 00001798: PUSH1 0xe5 0000179a: SHL 0000179b: DUP2 0000179c: MSTORE 0000179d: PUSH1 0x20 0000179f: PUSH1 0x04 000017a1: DUP3 000017a2: ADD 000017a3: MSTORE 000017a4: PUSH1 0x10 000017a6: PUSH1 0x24 000017a8: DUP3 000017a9: ADD 000017aa: MSTORE 000017ab: PUSH16 0x1514905394d050d51253d38811905253 000017bc: PUSH1 0x82 000017be: SHL 000017bf: PUSH1 0x44 000017c1: DUP3 000017c2: ADD 000017c3: MSTORE 000017c4: PUSH1 0x64 000017c6: ADD 000017c7: PUSH2 0x05b5 000017ca: JUMP 000017cb: JUMPDEST 000017cc: POP 000017cd: POP 000017ce: POP 000017cf: JUMP 000017d0: JUMPDEST 000017d1: PUSH1 0x00 000017d3: DUP2 000017d4: DUP2 000017d5: MSTORE 000017d6: PUSH1 0x01 000017d8: PUSH1 0x20 000017da: MSTORE 000017db: PUSH1 0x40 000017dd: DUP2 000017de: KECCAK256 000017df: PUSH1 0x02 000017e1: ADD 000017e2: DUP1 000017e3: SLOAD 000017e4: DUP3 000017e5: SWAP2 000017e6: SWAP1 000017e7: PUSH2 0x17ef 000017ea: SWAP1 000017eb: PUSH2 0x1cc0 000017ee: JUMP 000017ef: JUMPDEST 000017f0: DUP1 000017f1: PUSH1 0x1f 000017f3: ADD 000017f4: PUSH1 0x20 000017f6: DUP1 000017f7: SWAP2 000017f8: DIV 000017f9: MUL 000017fa: PUSH1 0x20 000017fc: ADD 000017fd: PUSH1 0x40 000017ff: MLOAD 00001800: SWAP1 00001801: DUP2 00001802: ADD 00001803: PUSH1 0x40 00001805: MSTORE 00001806: DUP1 00001807: SWAP3 00001808: SWAP2 00001809: SWAP1 0000180a: DUP2 0000180b: DUP2 0000180c: MSTORE 0000180d: PUSH1 0x20 0000180f: ADD 00001810: DUP3 00001811: DUP1 00001812: SLOAD 00001813: PUSH2 0x181b 00001816: SWAP1 00001817: PUSH2 0x1cc0 0000181a: JUMP 0000181b: JUMPDEST 0000181c: DUP1 0000181d: ISZERO 0000181e: PUSH2 0x1868 00001821: JUMPI 00001822: DUP1 00001823: PUSH1 0x1f 00001825: LT 00001826: PUSH2 0x183d 00001829: JUMPI 0000182a: PUSH2 0x0100 0000182d: DUP1 0000182e: DUP4 0000182f: SLOAD 00001830: DIV 00001831: MUL 00001832: DUP4 00001833: MSTORE 00001834: SWAP2 00001835: PUSH1 0x20 00001837: ADD 00001838: SWAP2 00001839: PUSH2 0x1868 0000183c: JUMP 0000183d: JUMPDEST 0000183e: DUP3 0000183f: ADD 00001840: SWAP2 00001841: SWAP1 00001842: PUSH1 0x00 00001844: MSTORE 00001845: PUSH1 0x20 00001847: PUSH1 0x00 00001849: KECCAK256 0000184a: SWAP1 0000184b: JUMPDEST 0000184c: DUP2 0000184d: SLOAD 0000184e: DUP2 0000184f: MSTORE 00001850: SWAP1 00001851: PUSH1 0x01 00001853: ADD 00001854: SWAP1 00001855: PUSH1 0x20 00001857: ADD 00001858: DUP1 00001859: DUP4 0000185a: GT 0000185b: PUSH2 0x184b 0000185e: JUMPI 0000185f: DUP3 00001860: SWAP1 00001861: SUB 00001862: PUSH1 0x1f 00001864: AND 00001865: DUP3 00001866: ADD 00001867: SWAP2 00001868: JUMPDEST 00001869: POP 0000186a: POP 0000186b: POP 0000186c: POP 0000186d: POP 0000186e: SWAP1 0000186f: POP 00001870: PUSH1 0x00 00001872: JUMPDEST 00001873: PUSH1 0x08 00001875: SLOAD 00001876: DUP2 00001877: LT 00001878: ISZERO 00001879: PUSH2 0x0b7e 0000187c: JUMPI 0000187d: PUSH1 0x00 0000187f: PUSH1 0x08 00001881: DUP3 00001882: DUP2 00001883: SLOAD 00001884: DUP2 00001885: LT 00001886: PUSH2 0x1891 00001889: JUMPI 0000188a: PUSH2 0x1891 0000188d: PUSH2 0x1c81 00001890: JUMP 00001891: JUMPDEST 00001892: PUSH1 0x00 00001894: SWAP2 00001895: DUP3 00001896: MSTORE 00001897: PUSH1 0x20 00001899: SWAP2 0000189a: DUP3 0000189b: SWAP1 0000189c: KECCAK256 0000189d: PUSH1 0x40 0000189f: DUP1 000018a0: MLOAD 000018a1: DUP1 000018a2: DUP3 000018a3: ADD 000018a4: SWAP1 000018a5: SWAP2 000018a6: MSTORE 000018a7: PUSH1 0x02 000018a9: SWAP1 000018aa: SWAP3 000018ab: MUL 000018ac: ADD 000018ad: DUP1 000018ae: SLOAD 000018af: DUP3 000018b0: MSTORE 000018b1: PUSH1 0x01 000018b3: ADD 000018b4: SLOAD 000018b5: SWAP2 000018b6: DUP2 000018b7: ADD 000018b8: DUP3 000018b9: SWAP1 000018ba: MSTORE 000018bb: SWAP2 000018bc: POP 000018bd: PUSH2 0x18c7 000018c0: SWAP1 000018c1: PUSH1 0x04 000018c3: PUSH2 0x1cad 000018c6: JUMP 000018c7: JUMPDEST 000018c8: DUP4 000018c9: MLOAD 000018ca: EQ 000018cb: DUP1 000018cc: ISZERO 000018cd: PUSH2 0x18d8 000018d0: JUMPI 000018d1: POP 000018d2: PUSH1 0x04 000018d4: DUP4 000018d5: MLOAD 000018d6: LT 000018d7: ISZERO 000018d8: JUMPDEST 000018d9: DUP1 000018da: ISZERO 000018db: PUSH2 0x1910 000018de: JUMPI 000018df: POP 000018e0: DUP3 000018e1: PUSH1 0x00 000018e3: DUP2 000018e4: MLOAD 000018e5: DUP2 000018e6: LT 000018e7: PUSH2 0x18f2 000018ea: JUMPI 000018eb: PUSH2 0x18f2 000018ee: PUSH2 0x1c81 000018f1: JUMP 000018f2: JUMPDEST 000018f3: PUSH1 0x20 000018f5: SWAP2 000018f6: ADD 000018f7: ADD 000018f8: MLOAD 000018f9: DUP2 000018fa: MLOAD 000018fb: PUSH1 0x00 000018fd: BYTE 000018fe: PUSH1 0xf8 00001900: SHL 00001901: PUSH1 0x01 00001903: PUSH1 0x01 00001905: PUSH1 0xf8 00001907: SHL 00001908: SUB 00001909: NOT 0000190a: SWAP1 0000190b: DUP2 0000190c: AND 0000190d: SWAP2 0000190e: AND 0000190f: EQ 00001910: JUMPDEST 00001911: DUP1 00001912: ISZERO 00001913: PUSH2 0x1948 00001916: JUMPI 00001917: POP 00001918: DUP3 00001919: PUSH1 0x01 0000191b: DUP2 0000191c: MLOAD 0000191d: DUP2 0000191e: LT 0000191f: PUSH2 0x192a 00001922: JUMPI 00001923: PUSH2 0x192a 00001926: PUSH2 0x1c81 00001929: JUMP 0000192a: JUMPDEST 0000192b: PUSH1 0x20 0000192d: SWAP2 0000192e: ADD 0000192f: ADD 00001930: MLOAD 00001931: DUP2 00001932: MLOAD 00001933: PUSH1 0x01 00001935: BYTE 00001936: PUSH1 0xf8 00001938: SHL 00001939: PUSH1 0x01 0000193b: PUSH1 0x01 0000193d: PUSH1 0xf8 0000193f: SHL 00001940: SUB 00001941: NOT 00001942: SWAP1 00001943: DUP2 00001944: AND 00001945: SWAP2 00001946: AND 00001947: EQ 00001948: JUMPDEST 00001949: DUP1 0000194a: ISZERO 0000194b: PUSH2 0x1980 0000194e: JUMPI 0000194f: POP 00001950: DUP3 00001951: PUSH1 0x02 00001953: DUP2 00001954: MLOAD 00001955: DUP2 00001956: LT 00001957: PUSH2 0x1962 0000195a: JUMPI 0000195b: PUSH2 0x1962 0000195e: PUSH2 0x1c81 00001961: JUMP 00001962: JUMPDEST 00001963: PUSH1 0x20 00001965: SWAP2 00001966: ADD 00001967: ADD 00001968: MLOAD 00001969: DUP2 0000196a: MLOAD 0000196b: PUSH1 0x02 0000196d: BYTE 0000196e: PUSH1 0xf8 00001970: SHL 00001971: PUSH1 0x01 00001973: PUSH1 0x01 00001975: PUSH1 0xf8 00001977: SHL 00001978: SUB 00001979: NOT 0000197a: SWAP1 0000197b: DUP2 0000197c: AND 0000197d: SWAP2 0000197e: AND 0000197f: EQ 00001980: JUMPDEST 00001981: DUP1 00001982: ISZERO 00001983: PUSH2 0x19b8 00001986: JUMPI 00001987: POP 00001988: DUP3 00001989: PUSH1 0x03 0000198b: DUP2 0000198c: MLOAD 0000198d: DUP2 0000198e: LT 0000198f: PUSH2 0x199a 00001992: JUMPI 00001993: PUSH2 0x199a 00001996: PUSH2 0x1c81 00001999: JUMP 0000199a: JUMPDEST 0000199b: PUSH1 0x20 0000199d: SWAP2 0000199e: ADD 0000199f: ADD 000019a0: MLOAD 000019a1: DUP2 000019a2: MLOAD 000019a3: PUSH1 0x03 000019a5: BYTE 000019a6: PUSH1 0xf8 000019a8: SHL 000019a9: PUSH1 0x01 000019ab: PUSH1 0x01 000019ad: PUSH1 0xf8 000019af: SHL 000019b0: SUB 000019b1: NOT 000019b2: SWAP1 000019b3: DUP2 000019b4: AND 000019b5: SWAP2 000019b6: AND 000019b7: EQ 000019b8: JUMPDEST 000019b9: ISZERO 000019ba: PUSH2 0x19c8 000019bd: JUMPI 000019be: POP 000019bf: PUSH1 0x01 000019c1: SWAP5 000019c2: SWAP4 000019c3: POP 000019c4: POP 000019c5: POP 000019c6: POP 000019c7: JUMP 000019c8: JUMPDEST 000019c9: POP 000019ca: PUSH1 0x01 000019cc: ADD 000019cd: PUSH2 0x1872 000019d0: JUMP 000019d1: JUMPDEST 000019d2: PUSH1 0x00 000019d4: PUSH1 0x20 000019d6: DUP3 000019d7: DUP5 000019d8: SUB 000019d9: SLT 000019da: ISZERO 000019db: PUSH2 0x19e3 000019de: JUMPI 000019df: PUSH1 0x00 000019e1: DUP1 000019e2: REVERT 000019e3: JUMPDEST 000019e4: POP 000019e5: CALLDATALOAD 000019e6: SWAP2 000019e7: SWAP1 000019e8: POP 000019e9: JUMP 000019ea: JUMPDEST 000019eb: DUP1 000019ec: CALLDATALOAD 000019ed: PUSH1 0x01 000019ef: PUSH1 0x01 000019f1: PUSH1 0xa0 000019f3: SHL 000019f4: SUB 000019f5: DUP2 000019f6: AND 000019f7: DUP2 000019f8: EQ 000019f9: PUSH2 0x1a01 000019fc: JUMPI 000019fd: PUSH1 0x00 000019ff: DUP1 00001a00: REVERT 00001a01: JUMPDEST 00001a02: SWAP2 00001a03: SWAP1 00001a04: POP 00001a05: JUMP 00001a06: JUMPDEST 00001a07: PUSH1 0x00 00001a09: PUSH1 0x20 00001a0b: DUP3 00001a0c: DUP5 00001a0d: SUB 00001a0e: SLT 00001a0f: ISZERO 00001a10: PUSH2 0x1a18 00001a13: JUMPI 00001a14: PUSH1 0x00 00001a16: DUP1 00001a17: REVERT 00001a18: JUMPDEST 00001a19: PUSH2 0x1a21 00001a1c: DUP3 00001a1d: PUSH2 0x19ea 00001a20: JUMP 00001a21: JUMPDEST 00001a22: SWAP4 00001a23: SWAP3 00001a24: POP 00001a25: POP 00001a26: POP 00001a27: JUMP 00001a28: JUMPDEST 00001a29: PUSH1 0x00 00001a2b: DUP1 00001a2c: PUSH1 0x40 00001a2e: DUP4 00001a2f: DUP6 00001a30: SUB 00001a31: SLT 00001a32: ISZERO 00001a33: PUSH2 0x1a3b 00001a36: JUMPI 00001a37: PUSH1 0x00 00001a39: DUP1 00001a3a: REVERT 00001a3b: JUMPDEST 00001a3c: DUP3 00001a3d: CALLDATALOAD 00001a3e: SWAP2 00001a3f: POP 00001a40: PUSH2 0x1a4b 00001a43: PUSH1 0x20 00001a45: DUP5 00001a46: ADD 00001a47: PUSH2 0x19ea 00001a4a: JUMP 00001a4b: JUMPDEST 00001a4c: SWAP1 00001a4d: POP 00001a4e: SWAP3 00001a4f: POP 00001a50: SWAP3 00001a51: SWAP1 00001a52: POP 00001a53: JUMP 00001a54: JUMPDEST 00001a55: DUP1 00001a56: CALLDATALOAD 00001a57: DUP1 00001a58: ISZERO 00001a59: ISZERO 00001a5a: DUP2 00001a5b: EQ 00001a5c: PUSH2 0x1a01 00001a5f: JUMPI 00001a60: PUSH1 0x00 00001a62: DUP1 00001a63: REVERT 00001a64: JUMPDEST 00001a65: PUSH1 0x00 00001a67: DUP1 00001a68: PUSH1 0x40 00001a6a: DUP4 00001a6b: DUP6 00001a6c: SUB 00001a6d: SLT 00001a6e: ISZERO 00001a6f: PUSH2 0x1a77 00001a72: JUMPI 00001a73: PUSH1 0x00 00001a75: DUP1 00001a76: REVERT 00001a77: JUMPDEST 00001a78: PUSH2 0x1a80 00001a7b: DUP4 00001a7c: PUSH2 0x1a54 00001a7f: JUMP 00001a80: JUMPDEST 00001a81: SWAP2 00001a82: POP 00001a83: PUSH2 0x1a4b 00001a86: PUSH1 0x20 00001a88: DUP5 00001a89: ADD 00001a8a: PUSH2 0x1a54 00001a8d: JUMP 00001a8e: JUMPDEST 00001a8f: PUSH1 0x01 00001a91: DUP1 00001a92: PUSH1 0xa0 00001a94: SHL 00001a95: SUB 00001a96: DUP6 00001a97: AND 00001a98: DUP2 00001a99: MSTORE 00001a9a: PUSH1 0x00 00001a9c: PUSH1 0x20 00001a9e: DUP6 00001a9f: PUSH1 0x20 00001aa1: DUP5 00001aa2: ADD 00001aa3: MSTORE 00001aa4: PUSH1 0x80 00001aa6: PUSH1 0x40 00001aa8: DUP5 00001aa9: ADD 00001aaa: MSTORE 00001aab: DUP5 00001aac: MLOAD 00001aad: DUP1 00001aae: PUSH1 0x80 00001ab0: DUP6 00001ab1: ADD 00001ab2: MSTORE 00001ab3: PUSH1 0x00 00001ab5: JUMPDEST 00001ab6: DUP2 00001ab7: DUP2 00001ab8: LT 00001ab9: ISZERO 00001aba: PUSH2 0x1ad1 00001abd: JUMPI 00001abe: DUP7 00001abf: DUP2 00001ac0: ADD 00001ac1: DUP4 00001ac2: ADD 00001ac3: MLOAD 00001ac4: DUP6 00001ac5: DUP3 00001ac6: ADD 00001ac7: PUSH1 0xa0 00001ac9: ADD 00001aca: MSTORE 00001acb: DUP3 00001acc: ADD 00001acd: PUSH2 0x1ab5 00001ad0: JUMP 00001ad1: JUMPDEST 00001ad2: POP 00001ad3: PUSH1 0x00 00001ad5: PUSH1 0xa0 00001ad7: DUP3 00001ad8: DUP7 00001ad9: ADD 00001ada: ADD 00001adb: MSTORE 00001adc: PUSH1 0xa0 00001ade: PUSH1 0x1f 00001ae0: NOT 00001ae1: PUSH1 0x1f 00001ae3: DUP4 00001ae4: ADD 00001ae5: AND 00001ae6: DUP6 00001ae7: ADD 00001ae8: ADD 00001ae9: SWAP3 00001aea: POP 00001aeb: POP 00001aec: POP 00001aed: DUP3 00001aee: ISZERO 00001aef: ISZERO 00001af0: PUSH1 0x60 00001af2: DUP4 00001af3: ADD 00001af4: MSTORE 00001af5: SWAP6 00001af6: SWAP5 00001af7: POP 00001af8: POP 00001af9: POP 00001afa: POP 00001afb: POP 00001afc: JUMP 00001afd: JUMPDEST 00001afe: PUSH1 0x20 00001b00: DUP1 00001b01: DUP3 00001b02: MSTORE 00001b03: DUP3 00001b04: MLOAD 00001b05: DUP3 00001b06: DUP3 00001b07: ADD 00001b08: DUP2 00001b09: SWAP1 00001b0a: MSTORE 00001b0b: PUSH1 0x00 00001b0d: SWAP2 00001b0e: SWAP1 00001b0f: DUP5 00001b10: DUP3 00001b11: ADD 00001b12: SWAP1 00001b13: PUSH1 0x40 00001b15: DUP6 00001b16: ADD 00001b17: SWAP1 00001b18: DUP5 00001b19: JUMPDEST 00001b1a: DUP2 00001b1b: DUP2 00001b1c: LT 00001b1d: ISZERO 00001b1e: PUSH2 0x1b3e 00001b21: JUMPI 00001b22: DUP4 00001b23: MLOAD 00001b24: PUSH1 0x01 00001b26: PUSH1 0x01 00001b28: PUSH1 0xa0 00001b2a: SHL 00001b2b: SUB 00001b2c: AND 00001b2d: DUP4 00001b2e: MSTORE 00001b2f: SWAP3 00001b30: DUP5 00001b31: ADD 00001b32: SWAP3 00001b33: SWAP2 00001b34: DUP5 00001b35: ADD 00001b36: SWAP2 00001b37: PUSH1 0x01 00001b39: ADD 00001b3a: PUSH2 0x1b19 00001b3d: JUMP 00001b3e: JUMPDEST 00001b3f: POP 00001b40: SWAP1 00001b41: SWAP7 00001b42: SWAP6 00001b43: POP 00001b44: POP 00001b45: POP 00001b46: POP 00001b47: POP 00001b48: POP 00001b49: JUMP 00001b4a: JUMPDEST 00001b4b: PUSH1 0x00 00001b4d: DUP1 00001b4e: PUSH1 0x00 00001b50: DUP1 00001b51: PUSH1 0x60 00001b53: DUP6 00001b54: DUP8 00001b55: SUB 00001b56: SLT 00001b57: ISZERO 00001b58: PUSH2 0x1b60 00001b5b: JUMPI 00001b5c: PUSH1 0x00 00001b5e: DUP1 00001b5f: REVERT 00001b60: JUMPDEST 00001b61: PUSH2 0x1b69 00001b64: DUP6 00001b65: PUSH2 0x19ea 00001b68: JUMP 00001b69: JUMPDEST 00001b6a: SWAP4 00001b6b: POP 00001b6c: PUSH1 0x20 00001b6e: DUP6 00001b6f: ADD 00001b70: CALLDATALOAD 00001b71: SWAP3 00001b72: POP 00001b73: PUSH1 0x40 00001b75: DUP6 00001b76: ADD 00001b77: CALLDATALOAD 00001b78: PUSH8 0xffffffffffffffff 00001b81: DUP1 00001b82: DUP3 00001b83: GT 00001b84: ISZERO 00001b85: PUSH2 0x1b8d 00001b88: JUMPI 00001b89: PUSH1 0x00 00001b8b: DUP1 00001b8c: REVERT 00001b8d: JUMPDEST 00001b8e: DUP2 00001b8f: DUP8 00001b90: ADD 00001b91: SWAP2 00001b92: POP 00001b93: DUP8 00001b94: PUSH1 0x1f 00001b96: DUP4 00001b97: ADD 00001b98: SLT 00001b99: PUSH2 0x1ba1 00001b9c: JUMPI 00001b9d: PUSH1 0x00 00001b9f: DUP1 00001ba0: REVERT 00001ba1: JUMPDEST 00001ba2: DUP2 00001ba3: CALLDATALOAD 00001ba4: DUP2 00001ba5: DUP2 00001ba6: GT 00001ba7: ISZERO 00001ba8: PUSH2 0x1bb0 00001bab: JUMPI 00001bac: PUSH1 0x00 00001bae: DUP1 00001baf: REVERT 00001bb0: JUMPDEST 00001bb1: DUP9 00001bb2: PUSH1 0x20 00001bb4: DUP3 00001bb5: DUP6 00001bb6: ADD 00001bb7: ADD 00001bb8: GT 00001bb9: ISZERO 00001bba: PUSH2 0x1bc2 00001bbd: JUMPI 00001bbe: PUSH1 0x00 00001bc0: DUP1 00001bc1: REVERT 00001bc2: JUMPDEST 00001bc3: SWAP6 00001bc4: SWAP9 00001bc5: SWAP5 00001bc6: SWAP8 00001bc7: POP 00001bc8: POP 00001bc9: PUSH1 0x20 00001bcb: ADD 00001bcc: SWAP5 00001bcd: POP 00001bce: POP 00001bcf: POP 00001bd0: JUMP 00001bd1: JUMPDEST 00001bd2: PUSH1 0x00 00001bd4: DUP1 00001bd5: PUSH1 0x40 00001bd7: DUP4 00001bd8: DUP6 00001bd9: SUB 00001bda: SLT 00001bdb: ISZERO 00001bdc: PUSH2 0x1be4 00001bdf: JUMPI 00001be0: PUSH1 0x00 00001be2: DUP1 00001be3: REVERT 00001be4: JUMPDEST 00001be5: PUSH2 0x1bed 00001be8: DUP4 00001be9: PUSH2 0x19ea 00001bec: JUMP 00001bed: JUMPDEST 00001bee: SWAP2 00001bef: POP 00001bf0: PUSH2 0x1a4b 00001bf3: PUSH1 0x20 00001bf5: DUP5 00001bf6: ADD 00001bf7: PUSH2 0x19ea 00001bfa: JUMP 00001bfb: JUMPDEST 00001bfc: PUSH1 0x20 00001bfe: DUP1 00001bff: DUP3 00001c00: MSTORE 00001c01: PUSH1 0x11 00001c03: SWAP1 00001c04: DUP3 00001c05: ADD 00001c06: MSTORE 00001c07: PUSH17 0x27a7262cafaba0a62622aa2fa2a92927a9 00001c19: PUSH1 0x79 00001c1b: SHL 00001c1c: PUSH1 0x40 00001c1e: DUP3 00001c1f: ADD 00001c20: MSTORE 00001c21: PUSH1 0x60 00001c23: ADD 00001c24: SWAP1 00001c25: JUMP 00001c26: JUMPDEST 00001c27: PUSH1 0x20 00001c29: DUP1 00001c2a: DUP3 00001c2b: MSTORE 00001c2c: PUSH1 0x12 00001c2e: SWAP1 00001c2f: DUP3 00001c30: ADD 00001c31: MSTORE 00001c32: PUSH18 0x27aba722a92fa2ac24a9aa29afa2a92927a9 00001c45: PUSH1 0x71 00001c47: SHL 00001c48: PUSH1 0x40 00001c4a: DUP3 00001c4b: ADD 00001c4c: MSTORE 00001c4d: PUSH1 0x60 00001c4f: ADD 00001c50: SWAP1 00001c51: JUMP 00001c52: JUMPDEST 00001c53: PUSH4 0x4e487b71 00001c58: PUSH1 0xe0 00001c5a: SHL 00001c5b: PUSH1 0x00 00001c5d: MSTORE 00001c5e: PUSH1 0x11 00001c60: PUSH1 0x04 00001c62: MSTORE 00001c63: PUSH1 0x24 00001c65: PUSH1 0x00 00001c67: REVERT 00001c68: JUMPDEST 00001c69: DUP2 00001c6a: DUP2 00001c6b: SUB 00001c6c: DUP2 00001c6d: DUP2 00001c6e: GT 00001c6f: ISZERO 00001c70: PUSH2 0x1c7b 00001c73: JUMPI 00001c74: PUSH2 0x1c7b 00001c77: PUSH2 0x1c52 00001c7a: JUMP 00001c7b: JUMPDEST 00001c7c: SWAP3 00001c7d: SWAP2 00001c7e: POP 00001c7f: POP 00001c80: JUMP 00001c81: JUMPDEST 00001c82: PUSH4 0x4e487b71 00001c87: PUSH1 0xe0 00001c89: SHL 00001c8a: PUSH1 0x00 00001c8c: MSTORE 00001c8d: PUSH1 0x32 00001c8f: PUSH1 0x04 00001c91: MSTORE 00001c92: PUSH1 0x24 00001c94: PUSH1 0x00 00001c96: REVERT 00001c97: JUMPDEST 00001c98: PUSH4 0x4e487b71 00001c9d: PUSH1 0xe0 00001c9f: SHL 00001ca0: PUSH1 0x00 00001ca2: MSTORE 00001ca3: PUSH1 0x31 00001ca5: PUSH1 0x04 00001ca7: MSTORE 00001ca8: PUSH1 0x24 00001caa: PUSH1 0x00 00001cac: REVERT 00001cad: JUMPDEST 00001cae: DUP1 00001caf: DUP3 00001cb0: ADD 00001cb1: DUP1 00001cb2: DUP3 00001cb3: GT 00001cb4: ISZERO 00001cb5: PUSH2 0x1c7b 00001cb8: JUMPI 00001cb9: PUSH2 0x1c7b 00001cbc: PUSH2 0x1c52 00001cbf: JUMP 00001cc0: JUMPDEST 00001cc1: PUSH1 0x01 00001cc3: DUP2 00001cc4: DUP2 00001cc5: SHR 00001cc6: SWAP1 00001cc7: DUP3 00001cc8: AND 00001cc9: DUP1 00001cca: PUSH2 0x1cd4 00001ccd: JUMPI 00001cce: PUSH1 0x7f 00001cd0: DUP3 00001cd1: AND 00001cd2: SWAP2 00001cd3: POP 00001cd4: JUMPDEST 00001cd5: PUSH1 0x20 00001cd7: DUP3 00001cd8: LT 00001cd9: DUP2 00001cda: SUB 00001cdb: PUSH2 0x0c2c 00001cde: JUMPI 00001cdf: PUSH4 0x4e487b71 00001ce4: PUSH1 0xe0 00001ce6: SHL 00001ce7: PUSH1 0x00 00001ce9: MSTORE 00001cea: PUSH1 0x22 00001cec: PUSH1 0x04 00001cee: MSTORE 00001cef: PUSH1 0x24 00001cf1: PUSH1 0x00 00001cf3: REVERT 00001cf4: JUMPDEST 00001cf5: PUSH4 0x4e487b71 00001cfa: PUSH1 0xe0 00001cfc: SHL 00001cfd: PUSH1 0x00 00001cff: MSTORE 00001d00: PUSH1 0x41 00001d02: PUSH1 0x04 00001d04: MSTORE 00001d05: PUSH1 0x24 00001d07: PUSH1 0x00 00001d09: REVERT 00001d0a: JUMPDEST 00001d0b: PUSH1 0x1f 00001d0d: DUP3 00001d0e: GT 00001d0f: ISZERO 00001d10: PUSH2 0x17cb 00001d13: JUMPI 00001d14: PUSH1 0x00 00001d16: DUP2 00001d17: PUSH1 0x00 00001d19: MSTORE 00001d1a: PUSH1 0x20 00001d1c: PUSH1 0x00 00001d1e: KECCAK256 00001d1f: PUSH1 0x1f 00001d21: DUP6 00001d22: ADD 00001d23: PUSH1 0x05 00001d25: SHR 00001d26: DUP2 00001d27: ADD 00001d28: PUSH1 0x20 00001d2a: DUP7 00001d2b: LT 00001d2c: ISZERO 00001d2d: PUSH2 0x1d33 00001d30: JUMPI 00001d31: POP 00001d32: DUP1 00001d33: JUMPDEST 00001d34: PUSH1 0x1f 00001d36: DUP6 00001d37: ADD 00001d38: PUSH1 0x05 00001d3a: SHR 00001d3b: DUP3 00001d3c: ADD 00001d3d: SWAP2 00001d3e: POP 00001d3f: JUMPDEST 00001d40: DUP2 00001d41: DUP2 00001d42: LT 00001d43: ISZERO 00001d44: PUSH2 0x1d52 00001d47: JUMPI 00001d48: DUP3 00001d49: DUP2 00001d4a: SSTORE 00001d4b: PUSH1 0x01 00001d4d: ADD 00001d4e: PUSH2 0x1d3f 00001d51: JUMP 00001d52: JUMPDEST 00001d53: POP 00001d54: POP 00001d55: POP 00001d56: POP 00001d57: POP 00001d58: POP 00001d59: JUMP 00001d5a: JUMPDEST 00001d5b: DUP2 00001d5c: MLOAD 00001d5d: PUSH8 0xffffffffffffffff 00001d66: DUP2 00001d67: GT 00001d68: ISZERO 00001d69: PUSH2 0x1d74 00001d6c: JUMPI 00001d6d: PUSH2 0x1d74 00001d70: PUSH2 0x1cf4 00001d73: JUMP 00001d74: JUMPDEST 00001d75: PUSH2 0x1d88 00001d78: DUP2 00001d79: PUSH2 0x1d82 00001d7c: DUP5 00001d7d: SLOAD 00001d7e: PUSH2 0x1cc0 00001d81: JUMP 00001d82: JUMPDEST 00001d83: DUP5 00001d84: PUSH2 0x1d0a 00001d87: JUMP 00001d88: JUMPDEST 00001d89: PUSH1 0x20 00001d8b: DUP1 00001d8c: PUSH1 0x1f 00001d8e: DUP4 00001d8f: GT 00001d90: PUSH1 0x01 00001d92: DUP2 00001d93: EQ 00001d94: PUSH2 0x1dbd 00001d97: JUMPI 00001d98: PUSH1 0x00 00001d9a: DUP5 00001d9b: ISZERO 00001d9c: PUSH2 0x1da5 00001d9f: JUMPI 00001da0: POP 00001da1: DUP6 00001da2: DUP4 00001da3: ADD 00001da4: MLOAD 00001da5: JUMPDEST 00001da6: PUSH1 0x00 00001da8: NOT 00001da9: PUSH1 0x03 00001dab: DUP7 00001dac: SWAP1 00001dad: SHL 00001dae: SHR 00001daf: NOT 00001db0: AND 00001db1: PUSH1 0x01 00001db3: DUP6 00001db4: SWAP1 00001db5: SHL 00001db6: OR 00001db7: DUP6 00001db8: SSTORE 00001db9: PUSH2 0x1d52 00001dbc: JUMP 00001dbd: JUMPDEST 00001dbe: PUSH1 0x00 00001dc0: DUP6 00001dc1: DUP2 00001dc2: MSTORE 00001dc3: PUSH1 0x20 00001dc5: DUP2 00001dc6: KECCAK256 00001dc7: PUSH1 0x1f 00001dc9: NOT 00001dca: DUP7 00001dcb: AND 00001dcc: SWAP2 00001dcd: JUMPDEST 00001dce: DUP3 00001dcf: DUP2 00001dd0: LT 00001dd1: ISZERO 00001dd2: PUSH2 0x1dec 00001dd5: JUMPI 00001dd6: DUP9 00001dd7: DUP7 00001dd8: ADD 00001dd9: MLOAD 00001dda: DUP3 00001ddb: SSTORE 00001ddc: SWAP5 00001ddd: DUP5 00001dde: ADD 00001ddf: SWAP5 00001de0: PUSH1 0x01 00001de2: SWAP1 00001de3: SWAP2 00001de4: ADD 00001de5: SWAP1 00001de6: DUP5 00001de7: ADD 00001de8: PUSH2 0x1dcd 00001deb: JUMP 00001dec: JUMPDEST 00001ded: POP 00001dee: DUP6 00001def: DUP3 00001df0: LT 00001df1: ISZERO 00001df2: PUSH2 0x1e0a 00001df5: JUMPI 00001df6: DUP8 00001df7: DUP6 00001df8: ADD 00001df9: MLOAD 00001dfa: PUSH1 0x00 00001dfc: NOT 00001dfd: PUSH1 0x03 00001dff: DUP9 00001e00: SWAP1 00001e01: SHL 00001e02: PUSH1 0xf8 00001e04: AND 00001e05: SHR 00001e06: NOT 00001e07: AND 00001e08: DUP2 00001e09: SSTORE 00001e0a: JUMPDEST 00001e0b: POP 00001e0c: POP 00001e0d: POP 00001e0e: POP 00001e0f: POP 00001e10: PUSH1 0x01 00001e12: SWAP1 00001e13: DUP2 00001e14: SHL 00001e15: ADD 00001e16: SWAP1 00001e17: SSTORE 00001e18: POP 00001e19: JUMP 00001e1a: JUMPDEST 00001e1b: PUSH1 0x00 00001e1d: DUP1 00001e1e: DUP4 00001e1f: SLOAD 00001e20: PUSH2 0x1e28 00001e23: DUP2 00001e24: PUSH2 0x1cc0 00001e27: JUMP 00001e28: JUMPDEST 00001e29: PUSH1 0x01 00001e2b: DUP3 00001e2c: DUP2 00001e2d: AND 00001e2e: DUP1 00001e2f: ISZERO 00001e30: PUSH2 0x1e40 00001e33: JUMPI 00001e34: PUSH1 0x01 00001e36: DUP2 00001e37: EQ 00001e38: PUSH2 0x1e55 00001e3b: JUMPI 00001e3c: PUSH2 0x1e84 00001e3f: JUMP 00001e40: JUMPDEST 00001e41: PUSH1 0xff 00001e43: NOT 00001e44: DUP5 00001e45: AND 00001e46: DUP8 00001e47: MSTORE 00001e48: DUP3 00001e49: ISZERO 00001e4a: ISZERO 00001e4b: DUP4 00001e4c: MUL 00001e4d: DUP8 00001e4e: ADD 00001e4f: SWAP5 00001e50: POP 00001e51: PUSH2 0x1e84 00001e54: JUMP 00001e55: JUMPDEST 00001e56: DUP8 00001e57: PUSH1 0x00 00001e59: MSTORE 00001e5a: PUSH1 0x20 00001e5c: DUP1 00001e5d: PUSH1 0x00 00001e5f: KECCAK256 00001e60: PUSH1 0x00 00001e62: JUMPDEST 00001e63: DUP6 00001e64: DUP2 00001e65: LT 00001e66: ISZERO 00001e67: PUSH2 0x1e7b 00001e6a: JUMPI 00001e6b: DUP2 00001e6c: SLOAD 00001e6d: DUP11 00001e6e: DUP3 00001e6f: ADD 00001e70: MSTORE 00001e71: SWAP1 00001e72: DUP5 00001e73: ADD 00001e74: SWAP1 00001e75: DUP3 00001e76: ADD 00001e77: PUSH2 0x1e62 00001e7a: JUMP 00001e7b: JUMPDEST 00001e7c: POP 00001e7d: POP 00001e7e: POP 00001e7f: DUP3 00001e80: DUP8 00001e81: ADD 00001e82: SWAP5 00001e83: POP 00001e84: JUMPDEST 00001e85: POP 00001e86: SWAP3 00001e87: SWAP7 00001e88: SWAP6 00001e89: POP 00001e8a: POP 00001e8b: POP 00001e8c: POP 00001e8d: POP 00001e8e: POP 00001e8f: JUMP 00001e90: INVALID 00001e91: LOG2 00001e92: PUSH5 0x6970667358 00001e98: UNKNOWN(0x22) 00001e99: SLT 00001e9a: KECCAK256 00001e9b: PUSH14 0x290a0cfe290c01c6c579d1cb5271 00001eaa: UNKNOWN(0xEE) 00001eab: PUSH24 0x34efccef2b15f11c71dd8369a74c5564736f6c6343000819 00001ec4: STOP 00001ec5: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x98aa31310d246d102606ee5edd923a7a0934c24d6ebfdfcb8b25de988431d0f9
call_targets:
0x67cb903ca9d07107784bc9398a75a0543524c353
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x98aa31310d246d102606ee5edd923a7a0934c24d6ebfdfcb8b25de988431d0f9",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x67cb903ca9d07107784bc9398a75a0543524c353"
],
"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": "0xd74f8edd",
"selector": "0xd74f8edd",
"calldata_variants": [
"0xd74f8edd",
"0xd74f8edd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc8452cd",
"selector": "0xdc8452cd",
"calldata_variants": [
"0xdc8452cd",
"0xdc8452cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe20056e6",
"selector": "0xe20056e6",
"calldata_variants": [
"0xe20056e6",
"0xe20056e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee22610b",
"selector": "0xee22610b",
"calldata_variants": [
"0xee22610b",
"0xee22610b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc01a8c84",
"selector": "0xc01a8c84",
"calldata_variants": [
"0xc01a8c84",
"0xc01a8c840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0af0227",
"selector": "0xc0af0227",
"calldata_variants": [
"0xc0af0227",
"0xc0af02270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc6427474",
"selector": "0xc6427474",
"calldata_variants": [
"0xc6427474",
"0xc64274740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9ace38c2",
"selector": "0x9ace38c2",
"calldata_variants": [
"0x9ace38c2",
"0x9ace38c20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5866,
"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 |
viewtrace_id: 0x98aa31310d246d102606ee5edd923a7a0934c24d6ebfdfcb8b25de988431d0f9
call_targets:
0x67cb903ca9d07107784bc9398a75a0543524c353
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x98aa31310d246d102606ee5edd923a7a0934c24d6ebfdfcb8b25de988431d0f9",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x67cb903ca9d07107784bc9398a75a0543524c353"
],
"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": "0xd74f8edd",
"selector": "0xd74f8edd",
"calldata_variants": [
"0xd74f8edd",
"0xd74f8edd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc8452cd",
"selector": "0xdc8452cd",
"calldata_variants": [
"0xdc8452cd",
"0xdc8452cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe20056e6",
"selector": "0xe20056e6",
"calldata_variants": [
"0xe20056e6",
"0xe20056e60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee22610b",
"selector": "0xee22610b",
"calldata_variants": [
"0xee22610b",
"0xee22610b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc01a8c84",
"selector": "0xc01a8c84",
"calldata_variants": [
"0xc01a8c84",
"0xc01a8c840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc0af0227",
"selector": "0xc0af0227",
"calldata_variants": [
"0xc0af0227",
"0xc0af02270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc6427474",
"selector": "0xc6427474",
"calldata_variants": [
"0xc6427474",
"0xc64274740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9ace38c2",
"selector": "0x9ace38c2",
"calldata_variants": [
"0x9ace38c2",
"0x9ace38c20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5866,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | reentrancy | slither | Reentrancy in MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "executeTransaction",
"type": "function",
"source_mapping": {
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341
],
"start": 9716,
"length": 796,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
},
"type_specific_fields": {
"parent": {
"name": "MultiSigWalletWithTimelock",
"type": "contract",
"source_mapping": {
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440
],
"start": 58,
"length": 13164,
"ending_column": 0,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
}
},
"signature": "executeTransaction(uint256)"
}
},
{
"name": "(success,None) = transaction.destination.call{value: transaction.value}(transaction.data)",
"type": "node",
"source_mapping": {
"lines": [
332
],
"start": 10156,
"length": 90,
"ending_column": 103,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "executeTransaction",
"type": "function",
"source_mapping": {
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341
],
"start": 9716,
"length": 796,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
},
"type_specific_fields": {
"parent": {
"name": "MultiSigWalletWithTimelock",
"type": "contract",
"source_mapping": {
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440
],
"start": 58,
"length": 13164,
"ending_column": 0,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
}
},
"signature": "executeTransaction(uint256)"
}
}
}
},
{
"name": "transaction.executed = false",
"type": "node",
"source_mapping": {
"lines": [
337
],
"start": 10409,
"length": 28,
"ending_column": 45,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 17,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
},
"additional_fields": {
"variable_name": "transactions",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "executeTransaction",
"type": "function",
"source_mapping": {
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341
],
"start": 9716,
"length": 796,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
},
"type_specific_fields": {
"parent": {
"name": "MultiSigWalletWithTimelock",
"type": "contract",
"source_mapping": {
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440
],
"start": 58,
"length": 13164,
"ending_column": 0,
"is_dependency": false,
"filename_short": "contracts/MultiSigWalletWithTimelock.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-dif0hscn/contracts/MultiSigWalletWithTimelock.sol",
"filename_relative": "contracts/MultiSigWalletWithTimelock.sol"
}
},
"signature": "executeTransaction(uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/MultiSigWalletWithTimelock.sol",
"name": "executeTransaction",
"type": "function",
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341
]
},
{
"file": "contracts/MultiSigWalletWithTimelock.sol",
"name": "(success,None) = transaction.destination.call{value: transaction.value}(transaction.data)",
"type": "node",
"lines": [
332
]
},
{
"file": "contracts/MultiSigWalletWithTimelock.sol",
"name": "transaction.executed = false",
"type": "node",
"lines": [
337
]
}
],
"description": "Reentrancy in MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341):\n\tExternal calls:\n\t- (success,None) = transaction.destination.call{value: transaction.value}(transaction.data) (contracts/MultiSigWalletWithTimelock.sol#332)\n\tState variables written after the call(s):\n\t- transaction.executed = false (contracts/MultiSigWalletWithTimelock.sol#337)\n\tMultiSigWalletWithTimelock.transactions (contracts/MultiSigWalletWithTimelock.sol#22) can be used in cross function reentrancies:\n\t- MultiSigWalletWithTimelock.executeTransaction(uint256) (contracts/MultiSigWalletWithTimelock.sol#319-341)\n\t- MultiSigWalletWithTimelock.getTransactionCount(bool,bool) (contracts/MultiSigWalletWithTimelock.sol#390-400)\n\t- MultiSigWalletWithTimelock.isEmergencyCall(uint256) (contracts/MultiSigWalletWithTimelock.sol#278-301)\n\t- MultiSigWalletWithTimelock.notExecuted(uint256) (contracts/MultiSigWalletWithTimelock.sol#82-86)\n\t- MultiSigWalletWithTimelock.submitTransaction(address,uint256,bytes) (contracts/MultiSigWalletWithTimelock.sol#241-257)\n\t- MultiSigWalletWithTimelock.transactionExists(uint256) (contracts/MultiSigWalletWithTimelock.sol#64-68)\n\t- MultiSigWalletWithTimelock.transactions (contracts/MultiSigWalletWithTimelock.sol#22)"
}
|
| medium | access_control | codex | Timelock bypass for any destination via emergency selector match | 75 | no | — |
viewevidence_json{
"evidence": "`confirmTransaction` only sets `unlockTimes` when `!isEmergencyCall(...)`, and `isEmergencyCall` checks only selector and calldata length, not destination.",
"locations": [
"contracts/MultiSigWalletWithTimelock.sol:271",
"contracts/MultiSigWalletWithTimelock.sol:278"
],
"recommendation": "Bind emergency-call exemptions to specific destination addresses (or full calldata hashes) instead of selector/length alone, or remove the bypass. At minimum, maintain a whitelist of allowed destinations for each emergency selector and enforce it in `isEmergencyCall`.",
"exploit_scenario": "Owners submit a transaction to an attacker-controlled contract that implements `setMarketBorrowUsability(uint16,bool)`. Because the calldata selector/length matches an emergency pattern, `unlockTimes` is never set, so the transaction can execute immediately once confirmations reach the threshold, bypassing the timelock even though the destination is not the intended emergency target."
}
|
| medium | access_control | codex | Unlock time persists after revocation, enabling immediate execution after re-confirmation | 75 | no | — |
viewevidence_json{
"evidence": "`confirmTransaction` sets `unlockTimes` once when the threshold is met, but `revokeConfirmation` does not reset it; `executeTransaction` only checks the stored `unlockTimes`.",
"locations": [
"contracts/MultiSigWalletWithTimelock.sol:271",
"contracts/MultiSigWalletWithTimelock.sol:306",
"contracts/MultiSigWalletWithTimelock.sol:324"
],
"recommendation": "Clear or recompute `unlockTimes[transactionId]` when confirmations fall below `required`, or store and enforce a `lastThresholdReachedAt` that updates every time the required confirmation count is regained.",
"exploit_scenario": "Owners reach the confirmation threshold to set `unlockTimes`, then revoke to drop below the threshold. After the unlock time passes, they can re-confirm and execute immediately, bypassing the intended delay from the final approval. Observers could be misled into thinking the transaction is inactive until it suddenly executes without a fresh timelock window."
}
|