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

Analysis Run

019be3d6-84db-708f-a189-cf52464f8961

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 22, 2026 3:54 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Reentrancy in Wallet.confirm(bytes32) (contracts/Contract.sol#301-308):
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
41128 artifact.fetch complete 1 / 3 2 months ago
41129 proxy.resolve complete 1 / 3 2 months ago
41130 tool.cast_disasm complete 1 / 3 2 months ago
41131 analysis.bundle complete 1 / 3 2 months ago
41132 capability.graph complete 1 / 3 2 months ago
41133 detector.run complete 1 / 3 2 months ago
41134 validation.fork complete 1 / 3 2 months ago
41437 report.consolidate complete 1 / 6 2 months ago
41438 tool.slither complete 1 / 2 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
complete
Attempts
1 / 2
Findings
2
Solc
0.4.15 (solc-select)
View stderr
'forge clean' running (wd: /tmp/slither-2i60cq9j)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-2i60cq9j)

Reentrancy in Wallet.confirm(bytes32) (contracts/Contract.sol#301-308):
	External calls:
	- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)
	State variables written after the call(s):
	- delete m_txs[_h] (contracts/Contract.sol#307)
	Wallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:
	- Wallet.clearPending() (contracts/Contract.sol#309-312)
	- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)
	- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)
Reentrancy in Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296):
	External calls:
	- ! confirm(_r) && m_txs[_r].to == 0 (contracts/Contract.sol#293-294)
		- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)
	State variables written after the call(s):
	- m_txs[_r].to = _to (contracts/Contract.sol#294)
	Wallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:
	- Wallet.clearPending() (contracts/Contract.sol#309-312)
	- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)
	- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)
	- m_txs[_r].value = _value (contracts/Contract.sol#294-295)
	Wallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:
	- Wallet.clearPending() (contracts/Contract.sol#309-312)
	- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)
	- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)
	- m_txs[_r].data = _data (contracts/Contract.sol#295)
	Wallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:
	- Wallet.clearPending() (contracts/Contract.sol#309-312)
	- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)
	- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities

Modifier multiowned.onlyowner() (contracts/Contract.sol#41-43) does not always execute _; or revert
Modifier multiowned.onlymanyowners(bytes32) (contracts/Contract.sol#48-51) does not always execute _; or revert
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier

Reentrancy in Wallet.confirm(bytes32) (contracts/Contract.sol#301-308):
	External calls:
	- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)
	Event emitted after the call(s):
	- MultiTransact(msg.sender,_h,m_txs[_h].value,m_txs[_h].to,m_txs[_h].data) (contracts/Contract.sol#306-307)
Reentrancy in Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296):
	External calls:
	- ! confirm(_r) && m_txs[_r].to == 0 (contracts/Contract.sol#293-294)
		- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)
	Event emitted after the call(s):
	- ConfirmationNeeded(_r,msg.sender,_value,_to,_data) (contracts/Contract.sol#295-296)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3

Deprecated standard detected onlymanyowners(sha3()(msg.data)) (contracts/Contract.sol#84):
	- Usage of "sha3()" should be replaced with "keccak256()"
Deprecated standard detected onlymanyowners(sha3()(msg.data)) (contracts/Contract.sol#93-94):
	- Usage of "sha3()" should be replaced with "keccak256()"
Deprecated standard detected onlymanyowners(sha3()(msg.data)) (contracts/Contract.sol#107-108):
	- Usage of "sha3()" should be replaced with "keccak256()"
Deprecated standard detected onlymanyowners(sha3()(msg.data)) (contracts/Contract.sol#119-120):
	- Usage of "sha3()" should be replaced with "keccak256()"
Deprecated standard detected _r = sha3()(msg.data,block.number) (contracts/Contract.sol#293):
	- Usage of "sha3()" should be replaced with "keccak256()"
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards

Version constraint ^0.4.15 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- UninitializedFunctionPointerInConstructor_0.4.x
	- IncorrectEventSignatureInLibraries_0.4.x
	- ExpExponentCleanup
	- NestedArrayFunctionCallDecoder
	- ZeroFunctionSelector.
It is used by:
	- ^0.4.15 (contracts/Contract.sol#12-14)
solc-0.4.15 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

Low level call in Wallet.confirm(bytes32) (contracts/Contract.sol#301-308):
	- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls

Contract multiowned (contracts/Contract.sol#14-227) is not in CapWords
Parameter multiowned.revoke(bytes32)._operation (contracts/Contract.sol#70) is not in mixedCase
Parameter multiowned.changeOwner(address,address)._from (contracts/Contract.sol#83-84) is not in mixedCase
Parameter multiowned.changeOwner(address,address)._to (contracts/Contract.sol#84) is not in mixedCase
Parameter multiowned.addOwner(address)._owner (contracts/Contract.sol#93) is not in mixedCase
Parameter multiowned.removeOwner(address)._owner (contracts/Contract.sol#107) is not in mixedCase
Parameter multiowned.changeRequirement(uint256)._newRequired (contracts/Contract.sol#119) is not in mixedCase
Parameter multiowned.isOwner(address)._addr (contracts/Contract.sol#132) is not in mixedCase
Parameter multiowned.hasConfirmed(bytes32,address)._operation (contracts/Contract.sol#136) is not in mixedCase
Parameter multiowned.hasConfirmed(bytes32,address)._owner (contracts/Contract.sol#136) is not in mixedCase
Parameter multiowned.confirmAndCheck(bytes32)._operation (contracts/Contract.sol#148) is not in mixedCase
Variable multiowned.m_required (contracts/Contract.sol#213-214) is not in mixedCase
Variable multiowned.m_numOwners (contracts/Contract.sol#215-216) is not in mixedCase
Variable multiowned.m_owners (contracts/Contract.sol#220) is not in mixedCase
Constant multiowned.c_maxOwners (contracts/Contract.sol#220) is not in UPPER_CASE_WITH_UNDERSCORES
Variable multiowned.m_ownerIndex (contracts/Contract.sol#222) is not in mixedCase
Variable multiowned.m_pending (contracts/Contract.sol#223-226) is not in mixedCase
Variable multiowned.m_pendingIndex (contracts/Contract.sol#226-227) is not in mixedCase
Contract multisig (contracts/Contract.sol#228-251) is not in CapWords
Parameter Wallet.execute(address,uint256,bytes)._to (contracts/Contract.sol#292) is not in mixedCase
Parameter Wallet.execute(address,uint256,bytes)._value (contracts/Contract.sol#292) is not in mixedCase
Parameter Wallet.execute(address,uint256,bytes)._data (contracts/Contract.sol#292) is not in mixedCase
Parameter Wallet.confirm(bytes32)._h (contracts/Contract.sol#301) is not in mixedCase
Variable Wallet.m_txs (contracts/Contract.sol#314-317) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
. analyzed (3 contracts with 100 detectors), 38 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.4.15",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.4.15",
        "install_stderr": null,
        "install_stdout": "Version '0.4.15' is already installed, skipping..."
    },
    "solc_args": "--base-path /tmp/slither-2i60cq9j --allow-paths /tmp/slither-2i60cq9j,/tmp/slither-2i60cq9j/lib,/tmp/slither-2i60cq9j/src",
    "remappings": [],
    "source_files": [
        "contracts/Contract.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 38,
    "workspace_hash": "74f5f9647a3dba3ef3e1f787c5c6047f5c93e435690ec68cea1c6b092f463e85",
    "duration_seconds": 0.950169563293457,
    "solc_version_requested": "0.4.15"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
1
No findings?
no
Summary
One low-severity issue: the wallet ignores the success/failure of low-level calls and deletes the queued transaction regardless, which can silently drop failed executions.
View stdout
{"no_findings":false,"summary":"One low-severity issue: the wallet ignores the success/failure of low-level calls and deletes the queued transaction regardless, which can silently drop failed executions.","findings":[{"severity":"low","category":"other","title":"Unchecked low-level call result drops failed transaction","exploit_scenario":"If a queued transaction’s target contract reverts (or runs out of gas), `confirm` still emits `MultiTransact` and deletes the transaction. Owners may believe the transfer/execution succeeded even though no external effect occurred, and the failed operation cannot be retried without re-creating it.","recommendation":"Check the return value of the low-level call and only delete the transaction (and emit success) on success. Otherwise keep the tx pending or emit a failure event and return false. Example: `bool ok = m_txs[_h].to.call.value(...)(...); if (!ok) return false;`.","evidence":"`confirm` performs a low-level call, ignores its return value, emits success, and deletes the transaction unconditionally.","locations":["contracts/Contract.sol:308","contracts/Contract.sol:310","contracts/Contract.sol:311","contracts/Contract.sol:312"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-0dxlgf3e
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be499-90a7-7db3-9514-32811136c273
--------
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 content**
exec
/bin/bash -lc ls in /tmp/codex-0dxlgf3e succeeded in 5ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-0dxlgf3e succeeded in 19ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/Contract.sol
================================================================================
//sol Wallet
// Multi-sig account proxy/wallet.
// @authors:
// Gav Wood <g@ethdev.com>
// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a
// single, or, crucially, each of a number of, designated owners.
// usage:
// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by
// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the
// interior is executed.
// 
// Token/no-daylimit modifications: Dmitry Khovratovich <khovratovich@gmail.com> based on https://github.com/ethereum/dapp-bin/blob/dd5c485359074d49f571693ae064ce78970f3d6d/wallet/wallet.sol

pragma solidity ^0.4.15;




thinking
**Analyzing reentrancy and ownership checks**

The contract lacks revert in onlyowner modifier, causing silent failures but not direct exploits. The external call with call.value occurs before deleting pending transactions, creating potential reentrancy if an owner is a contract that calls back into confirm before state clears. I'll continue assessing if the pending state properly prevents reentrant confirms.
thinking
**Identifying serious reentrancy risk with single-owner multisig**

External call occurs before deleting the transaction, allowing an owner who is also a contract to reenter confirm with the same operation hash and repeatedly execute the transaction if m_required equals 1. This enables multiple withdrawals of the same funds, posing a critical reentrancy vulnerability in single-owner setups.
thinking
**Confirming reentrancy limited to single-owner setups**

Reentrancy doesn’t lead to repeated executions when required confirmations exceed one, since repeated confirms need multiple owners. The unchecked external call return is low risk but can cause lost action attempts. Operator precedence issues are not actual bugs after verifying Solidity’s precedence rules. Duplicate owners and block.number in operation hashes pose misconfiguration or minor quirks rather than direct vulnerabilities.
thinking
**Flagging unchecked call result as low severity**

The external low-level call in confirm ignores its success result and deletes the transaction regardless, which can cause silent failures and stuck transactions; this is a correctness issue worth noting though it doesn't enable direct exploits.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '180,260p'" in /tmp/codex-0dxlgf3e succeeded in 16ms:
   180	            if (pending.yetNeeded <= 1) {
   181	                // enough confirmations: reset and run interior.
   182	                delete m_pendingIndex[m_pending[_operation].index];
   183	                delete m_pending[_operation];
   184	                return true;
   185	            }
   186	            else
   187	            {
   188	                // not enough: record that this owner in particular confirmed.
   189	                pending.yetNeeded--;
   190	                pending.ownersDone |= ownerIndexBit;
   191	            }
   192	        }
   193	    }
   194	
   195	    function reorganizeOwners() private {
   196	        uint free = 1;
   197	        while (free < m_numOwners)
   198	        {
   199	            while (free < m_numOwners && m_owners[free] != 0) free++;
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '300,420p'" in /tmp/codex-0dxlgf3e succeeded in 7ms:
   300	            m_txs[_r].value = _value;
   301	            m_txs[_r].data = _data;
   302	            ConfirmationNeeded(_r, msg.sender, _value, _to, _data);
   303	        }
   304	    }
   305	    
   306	    // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
   307	    // to determine the body of the transaction from the hash provided.
   308	    function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
   309	        if (m_txs[_h].to != 0) {
   310	            var x= m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
   311	            MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
   312	            delete m_txs[_h];
   313	            return true;
   314	        }
   315	    }
   316	    
   317	    // INTERNAL METHODS
   318	    
   319	    function clearPending() internal {


thinking
**Assessing unchecked call return**

The external call forwards all gas enabling potential reentrancy, but due to owner checks and multisig requirements, reentrancy isn't exploitable here. The unchecked return value poses no direct exploit risk but may cause inconsistent off-chain records, so it’s flagged as a low-severity finding per the audit scope.
thinking
**Drafting exploit scenario and recommendation**

The exploit involves a reverted call causing the wallet to emit success events and delete transactions, misleading owners and preventing retries, potentially locking funds until a new transaction is created. The recommendation is to check call return values, revert or keep transactions pending on failure, and emit failure events, with details and suggestions for Solidity 0.4.15 usage.
codex
{"no_findings":false,"summary":"One low-severity issue: the wallet ignores the success/failure of low-level calls and deletes the queued transaction regardless, which can silently drop failed executions.","findings":[{"severity":"low","category":"other","title":"Unchecked low-level call result drops failed transaction","exploit_scenario":"If a queued transaction’s target contract reverts (or runs out of gas), `confirm` still emits `MultiTransact` and deletes the transaction. Owners may believe the transfer/execution succeeded even though no external effect occurred, and the failed operation cannot be retried without re-creating it.","recommendation":"Check the return value of the low-level call and only delete the transaction (and emit success) on success. Otherwise keep the tx pending or emit a failure event and return false. Example: `bool ok = m_txs[_h].to.call.value(...)(...); if (!ok) return false;`.","evidence":"`confirm` performs a low-level call, ignores its return value, emits success, and deletes the transaction unconditionally.","locations":["contracts/Contract.sol:308","contracts/Contract.sol:310","contracts/Contract.sol:311","contracts/Contract.sol:312"]}]}
tokens used
17,070
Metadata
{
    "codex": {
        "ran_at": "2026-01-22T07:31:31.295075+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "One low-severity issue: the wallet ignores the success/failure of low-level calls and deletes the queued transaction regardless, which can silently drop failed executions.",
    "raw_final": {
        "summary": "One low-severity issue: the wallet ignores the success/failure of low-level calls and deletes the queued transaction regardless, which can silently drop failed executions.",
        "findings": [
            {
                "title": "Unchecked low-level call result drops failed transaction",
                "category": "other",
                "evidence": "`confirm` performs a low-level call, ignores its return value, emits success, and deletes the transaction unconditionally.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:308",
                    "contracts/Contract.sol:310",
                    "contracts/Contract.sol:311",
                    "contracts/Contract.sol:312"
                ],
                "recommendation": "Check the return value of the low-level call and only delete the transaction (and emit success) on success. Otherwise keep the tx pending or emit a failure event and return false. Example: `bool ok = m_txs[_h].to.call.value(...)(...); if (!ok) return false;`.",
                "exploit_scenario": "If a queued transaction\u2019s target contract reverts (or runs out of gas), `confirm` still emits `MultiTransact` and deletes the transaction. Owners may believe the transfer/execution succeeded even though no external effect occurred, and the failed operation cannot be retried without re-creating it."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
0
Total opcodes
2820
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00b7
0000000a: JUMPI
0000000b: PUSH4 0xffffffff
00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002e: PUSH1 0x00
00000030: CALLDATALOAD
00000031: DIV
00000032: AND
00000033: PUSH4 0x173825d9
00000038: DUP2
00000039: EQ
0000003a: PUSH2 0x0109
0000003d: JUMPI
0000003e: DUP1
0000003f: PUSH4 0x2f54bf6e
00000044: EQ
00000045: PUSH2 0x012a
00000048: JUMPI
00000049: DUP1
0000004a: PUSH4 0x4123cb6b
0000004f: EQ
00000050: PUSH2 0x015d
00000053: JUMPI
00000054: DUP1
00000055: PUSH4 0x7065cb48
0000005a: EQ
0000005b: PUSH2 0x0182
0000005e: JUMPI
0000005f: DUP1
00000060: PUSH4 0x746c9171
00000065: EQ
00000066: PUSH2 0x01a3
00000069: JUMPI
0000006a: DUP1
0000006b: PUSH4 0x797af627
00000070: EQ
00000071: PUSH2 0x01c8
00000074: JUMPI
00000075: DUP1
00000076: PUSH4 0xb61d27f6
0000007b: EQ
0000007c: PUSH2 0x01f2
0000007f: JUMPI
00000080: DUP1
00000081: PUSH4 0xb75c7dc6
00000086: EQ
00000087: PUSH2 0x0233
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0xba51a6df
00000091: EQ
00000092: PUSH2 0x024b
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xc2cf7326
0000009c: EQ
0000009d: PUSH2 0x0263
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xc41a360a
000000a7: EQ
000000a8: PUSH2 0x0299
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0xf00d4b5d
000000b2: EQ
000000b3: PUSH2 0x02cb
000000b6: JUMPI
000000b7: JUMPDEST
000000b8: JUMPDEST
000000b9: PUSH1 0x00
000000bb: CALLVALUE
000000bc: GT
000000bd: ISZERO
000000be: PUSH2 0x0106
000000c1: JUMPI
000000c2: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c
000000e3: CALLER
000000e4: CALLVALUE
000000e5: PUSH1 0x40
000000e7: MLOAD
000000e8: PUSH1 0x01
000000ea: PUSH1 0xa0
000000ec: PUSH1 0x02
000000ee: EXP
000000ef: SUB
000000f0: SWAP1
000000f1: SWAP3
000000f2: AND
000000f3: DUP3
000000f4: MSTORE
000000f5: PUSH1 0x20
000000f7: DUP3
000000f8: ADD
000000f9: MSTORE
000000fa: PUSH1 0x40
000000fc: SWAP1
000000fd: DUP2
000000fe: ADD
000000ff: SWAP1
00000100: MLOAD
00000101: DUP1
00000102: SWAP2
00000103: SUB
00000104: SWAP1
00000105: LOG1
00000106: JUMPDEST
00000107: JUMPDEST
00000108: STOP
00000109: JUMPDEST
0000010a: CALLVALUE
0000010b: ISZERO
0000010c: PUSH2 0x0114
0000010f: JUMPI
00000110: PUSH1 0x00
00000112: DUP1
00000113: REVERT
00000114: JUMPDEST
00000115: PUSH2 0x0106
00000118: PUSH1 0x01
0000011a: PUSH1 0xa0
0000011c: PUSH1 0x02
0000011e: EXP
0000011f: SUB
00000120: PUSH1 0x04
00000122: CALLDATALOAD
00000123: AND
00000124: PUSH2 0x02f2
00000127: JUMP
00000128: JUMPDEST
00000129: STOP
0000012a: JUMPDEST
0000012b: CALLVALUE
0000012c: ISZERO
0000012d: PUSH2 0x0135
00000130: JUMPI
00000131: PUSH1 0x00
00000133: DUP1
00000134: REVERT
00000135: JUMPDEST
00000136: PUSH2 0x0149
00000139: PUSH1 0x01
0000013b: PUSH1 0xa0
0000013d: PUSH1 0x02
0000013f: EXP
00000140: SUB
00000141: PUSH1 0x04
00000143: CALLDATALOAD
00000144: AND
00000145: PUSH2 0x03df
00000148: JUMP
00000149: JUMPDEST
0000014a: PUSH1 0x40
0000014c: MLOAD
0000014d: SWAP1
0000014e: ISZERO
0000014f: ISZERO
00000150: DUP2
00000151: MSTORE
00000152: PUSH1 0x20
00000154: ADD
00000155: PUSH1 0x40
00000157: MLOAD
00000158: DUP1
00000159: SWAP2
0000015a: SUB
0000015b: SWAP1
0000015c: RETURN
0000015d: JUMPDEST
0000015e: CALLVALUE
0000015f: ISZERO
00000160: PUSH2 0x0168
00000163: JUMPI
00000164: PUSH1 0x00
00000166: DUP1
00000167: REVERT
00000168: JUMPDEST
00000169: PUSH2 0x0170
0000016c: PUSH2 0x0400
0000016f: JUMP
00000170: JUMPDEST
00000171: PUSH1 0x40
00000173: MLOAD
00000174: SWAP1
00000175: DUP2
00000176: MSTORE
00000177: PUSH1 0x20
00000179: ADD
0000017a: PUSH1 0x40
0000017c: MLOAD
0000017d: DUP1
0000017e: SWAP2
0000017f: SUB
00000180: SWAP1
00000181: RETURN
00000182: JUMPDEST
00000183: CALLVALUE
00000184: ISZERO
00000185: PUSH2 0x018d
00000188: JUMPI
00000189: PUSH1 0x00
0000018b: DUP1
0000018c: REVERT
0000018d: JUMPDEST
0000018e: PUSH2 0x0106
00000191: PUSH1 0x01
00000193: PUSH1 0xa0
00000195: PUSH1 0x02
00000197: EXP
00000198: SUB
00000199: PUSH1 0x04
0000019b: CALLDATALOAD
0000019c: AND
0000019d: PUSH2 0x0406
000001a0: JUMP
000001a1: JUMPDEST
000001a2: STOP
000001a3: JUMPDEST
000001a4: CALLVALUE
000001a5: ISZERO
000001a6: PUSH2 0x01ae
000001a9: JUMPI
000001aa: PUSH1 0x00
000001ac: DUP1
000001ad: REVERT
000001ae: JUMPDEST
000001af: PUSH2 0x0170
000001b2: PUSH2 0x0500
000001b5: JUMP
000001b6: JUMPDEST
000001b7: PUSH1 0x40
000001b9: MLOAD
000001ba: SWAP1
000001bb: DUP2
000001bc: MSTORE
000001bd: PUSH1 0x20
000001bf: ADD
000001c0: PUSH1 0x40
000001c2: MLOAD
000001c3: DUP1
000001c4: SWAP2
000001c5: SUB
000001c6: SWAP1
000001c7: RETURN
000001c8: JUMPDEST
000001c9: CALLVALUE
000001ca: ISZERO
000001cb: PUSH2 0x01d3
000001ce: JUMPI
000001cf: PUSH1 0x00
000001d1: DUP1
000001d2: REVERT
000001d3: JUMPDEST
000001d4: PUSH2 0x0149
000001d7: PUSH1 0x04
000001d9: CALLDATALOAD
000001da: PUSH2 0x0506
000001dd: JUMP
000001de: JUMPDEST
000001df: PUSH1 0x40
000001e1: MLOAD
000001e2: SWAP1
000001e3: ISZERO
000001e4: ISZERO
000001e5: DUP2
000001e6: MSTORE
000001e7: PUSH1 0x20
000001e9: ADD
000001ea: PUSH1 0x40
000001ec: MLOAD
000001ed: DUP1
000001ee: SWAP2
000001ef: SUB
000001f0: SWAP1
000001f1: RETURN
000001f2: JUMPDEST
000001f3: CALLVALUE
000001f4: ISZERO
000001f5: PUSH2 0x01fd
000001f8: JUMPI
000001f9: PUSH1 0x00
000001fb: DUP1
000001fc: REVERT
000001fd: JUMPDEST
000001fe: PUSH2 0x0170
00000201: PUSH1 0x04
00000203: DUP1
00000204: CALLDATALOAD
00000205: PUSH1 0x01
00000207: PUSH1 0xa0
00000209: PUSH1 0x02
0000020b: EXP
0000020c: SUB
0000020d: AND
0000020e: SWAP1
0000020f: PUSH1 0x24
00000211: DUP1
00000212: CALLDATALOAD
00000213: SWAP2
00000214: PUSH1 0x44
00000216: CALLDATALOAD
00000217: SWAP2
00000218: DUP3
00000219: ADD
0000021a: SWAP2
0000021b: ADD
0000021c: CALLDATALOAD
0000021d: PUSH2 0x072c
00000220: JUMP
00000221: JUMPDEST
00000222: PUSH1 0x40
00000224: MLOAD
00000225: SWAP1
00000226: DUP2
00000227: MSTORE
00000228: PUSH1 0x20
0000022a: ADD
0000022b: PUSH1 0x40
0000022d: MLOAD
0000022e: DUP1
0000022f: SWAP2
00000230: SUB
00000231: SWAP1
00000232: RETURN
00000233: JUMPDEST
00000234: CALLVALUE
00000235: ISZERO
00000236: PUSH2 0x023e
00000239: JUMPI
0000023a: PUSH1 0x00
0000023c: DUP1
0000023d: REVERT
0000023e: JUMPDEST
0000023f: PUSH2 0x0106
00000242: PUSH1 0x04
00000244: CALLDATALOAD
00000245: PUSH2 0x0865
00000248: JUMP
00000249: JUMPDEST
0000024a: STOP
0000024b: JUMPDEST
0000024c: CALLVALUE
0000024d: ISZERO
0000024e: PUSH2 0x0256
00000251: JUMPI
00000252: PUSH1 0x00
00000254: DUP1
00000255: REVERT
00000256: JUMPDEST
00000257: PUSH2 0x0106
0000025a: PUSH1 0x04
0000025c: CALLDATALOAD
0000025d: PUSH2 0x0910
00000260: JUMP
00000261: JUMPDEST
00000262: STOP
00000263: JUMPDEST
00000264: CALLVALUE
00000265: ISZERO
00000266: PUSH2 0x026e
00000269: JUMPI
0000026a: PUSH1 0x00
0000026c: DUP1
0000026d: REVERT
0000026e: JUMPDEST
0000026f: PUSH2 0x0149
00000272: PUSH1 0x04
00000274: CALLDATALOAD
00000275: PUSH1 0x01
00000277: PUSH1 0xa0
00000279: PUSH1 0x02
0000027b: EXP
0000027c: SUB
0000027d: PUSH1 0x24
0000027f: CALLDATALOAD
00000280: AND
00000281: PUSH2 0x0992
00000284: JUMP
00000285: JUMPDEST
00000286: PUSH1 0x40
00000288: MLOAD
00000289: SWAP1
0000028a: ISZERO
0000028b: ISZERO
0000028c: DUP2
0000028d: MSTORE
0000028e: PUSH1 0x20
00000290: ADD
00000291: PUSH1 0x40
00000293: MLOAD
00000294: DUP1
00000295: SWAP2
00000296: SUB
00000297: SWAP1
00000298: RETURN
00000299: JUMPDEST
0000029a: CALLVALUE
0000029b: ISZERO
0000029c: PUSH2 0x02a4
0000029f: JUMPI
000002a0: PUSH1 0x00
000002a2: DUP1
000002a3: REVERT
000002a4: JUMPDEST
000002a5: PUSH2 0x02af
000002a8: PUSH1 0x04
000002aa: CALLDATALOAD
000002ab: PUSH2 0x09e7
000002ae: JUMP
000002af: JUMPDEST
000002b0: PUSH1 0x40
000002b2: MLOAD
000002b3: PUSH1 0x01
000002b5: PUSH1 0xa0
000002b7: PUSH1 0x02
000002b9: EXP
000002ba: SUB
000002bb: SWAP1
000002bc: SWAP2
000002bd: AND
000002be: DUP2
000002bf: MSTORE
000002c0: PUSH1 0x20
000002c2: ADD
000002c3: PUSH1 0x40
000002c5: MLOAD
000002c6: DUP1
000002c7: SWAP2
000002c8: SUB
000002c9: SWAP1
000002ca: RETURN
000002cb: JUMPDEST
000002cc: CALLVALUE
000002cd: ISZERO
000002ce: PUSH2 0x02d6
000002d1: JUMPI
000002d2: PUSH1 0x00
000002d4: DUP1
000002d5: REVERT
000002d6: JUMPDEST
000002d7: PUSH2 0x0106
000002da: PUSH1 0x01
000002dc: PUSH1 0xa0
000002de: PUSH1 0x02
000002e0: EXP
000002e1: SUB
000002e2: PUSH1 0x04
000002e4: CALLDATALOAD
000002e5: DUP2
000002e6: AND
000002e7: SWAP1
000002e8: PUSH1 0x24
000002ea: CALLDATALOAD
000002eb: AND
000002ec: PUSH2 0x0a08
000002ef: JUMP
000002f0: JUMPDEST
000002f1: STOP
000002f2: JUMPDEST
000002f3: PUSH1 0x00
000002f5: DUP1
000002f6: CALLDATASIZE
000002f7: PUSH1 0x40
000002f9: MLOAD
000002fa: DUP1
000002fb: DUP4
000002fc: DUP4
000002fd: DUP1
000002fe: DUP3
000002ff: DUP5
00000300: CALLDATACOPY
00000301: DUP3
00000302: ADD
00000303: SWAP2
00000304: POP
00000305: POP
00000306: SWAP3
00000307: POP
00000308: POP
00000309: POP
0000030a: PUSH1 0x40
0000030c: MLOAD
0000030d: DUP1
0000030e: SWAP2
0000030f: SUB
00000310: SWAP1
00000311: KECCAK256
00000312: PUSH2 0x031a
00000315: DUP2
00000316: PUSH2 0x0b0f
00000319: JUMP
0000031a: JUMPDEST
0000031b: ISZERO
0000031c: PUSH2 0x03d8
0000031f: JUMPI
00000320: PUSH1 0x01
00000322: PUSH1 0xa0
00000324: PUSH1 0x02
00000326: EXP
00000327: SUB
00000328: DUP4
00000329: AND
0000032a: PUSH1 0x00
0000032c: SWAP1
0000032d: DUP2
0000032e: MSTORE
0000032f: PUSH2 0x0102
00000332: PUSH1 0x20
00000334: MSTORE
00000335: PUSH1 0x40
00000337: SWAP1
00000338: KECCAK256
00000339: SLOAD
0000033a: SWAP2
0000033b: POP
0000033c: DUP2
0000033d: ISZERO
0000033e: ISZERO
0000033f: PUSH2 0x0347
00000342: JUMPI
00000343: PUSH2 0x03d8
00000346: JUMP
00000347: JUMPDEST
00000348: PUSH1 0x01
0000034a: DUP1
0000034b: SLOAD
0000034c: SUB
0000034d: PUSH1 0x00
0000034f: SLOAD
00000350: GT
00000351: ISZERO
00000352: PUSH2 0x035a
00000355: JUMPI
00000356: PUSH2 0x03d8
00000359: JUMP
0000035a: JUMPDEST
0000035b: PUSH1 0x00
0000035d: PUSH1 0x02
0000035f: DUP4
00000360: PUSH2 0x0100
00000363: DUP2
00000364: LT
00000365: PUSH2 0x036a
00000368: JUMPI
00000369: INVALID
0000036a: JUMPDEST
0000036b: ADD
0000036c: PUSH1 0x00
0000036e: JUMPDEST
0000036f: POP
00000370: SSTORE
00000371: PUSH1 0x01
00000373: PUSH1 0xa0
00000375: PUSH1 0x02
00000377: EXP
00000378: SUB
00000379: DUP4
0000037a: AND
0000037b: PUSH1 0x00
0000037d: SWAP1
0000037e: DUP2
0000037f: MSTORE
00000380: PUSH2 0x0102
00000383: PUSH1 0x20
00000385: MSTORE
00000386: PUSH1 0x40
00000388: DUP2
00000389: KECCAK256
0000038a: SSTORE
0000038b: PUSH2 0x0392
0000038e: PUSH2 0x0c7a
00000391: JUMP
00000392: JUMPDEST
00000393: PUSH2 0x039a
00000396: PUSH2 0x0d08
00000399: JUMP
0000039a: JUMPDEST
0000039b: PUSH32 0x58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da
000003bc: DUP4
000003bd: PUSH1 0x40
000003bf: MLOAD
000003c0: PUSH1 0x01
000003c2: PUSH1 0xa0
000003c4: PUSH1 0x02
000003c6: EXP
000003c7: SUB
000003c8: SWAP1
000003c9: SWAP2
000003ca: AND
000003cb: DUP2
000003cc: MSTORE
000003cd: PUSH1 0x20
000003cf: ADD
000003d0: PUSH1 0x40
000003d2: MLOAD
000003d3: DUP1
000003d4: SWAP2
000003d5: SUB
000003d6: SWAP1
000003d7: LOG1
000003d8: JUMPDEST
000003d9: JUMPDEST
000003da: JUMPDEST
000003db: POP
000003dc: POP
000003dd: POP
000003de: JUMP
000003df: JUMPDEST
000003e0: PUSH1 0x01
000003e2: PUSH1 0xa0
000003e4: PUSH1 0x02
000003e6: EXP
000003e7: SUB
000003e8: DUP2
000003e9: AND
000003ea: PUSH1 0x00
000003ec: SWAP1
000003ed: DUP2
000003ee: MSTORE
000003ef: PUSH2 0x0102
000003f2: PUSH1 0x20
000003f4: MSTORE
000003f5: PUSH1 0x40
000003f7: DUP2
000003f8: KECCAK256
000003f9: SLOAD
000003fa: GT
000003fb: JUMPDEST
000003fc: SWAP2
000003fd: SWAP1
000003fe: POP
000003ff: JUMP
00000400: JUMPDEST
00000401: PUSH1 0x01
00000403: SLOAD
00000404: DUP2
00000405: JUMP
00000406: JUMPDEST
00000407: PUSH1 0x00
00000409: CALLDATASIZE
0000040a: PUSH1 0x40
0000040c: MLOAD
0000040d: DUP1
0000040e: DUP4
0000040f: DUP4
00000410: DUP1
00000411: DUP3
00000412: DUP5
00000413: CALLDATACOPY
00000414: DUP3
00000415: ADD
00000416: SWAP2
00000417: POP
00000418: POP
00000419: SWAP3
0000041a: POP
0000041b: POP
0000041c: POP
0000041d: PUSH1 0x40
0000041f: MLOAD
00000420: DUP1
00000421: SWAP2
00000422: SUB
00000423: SWAP1
00000424: KECCAK256
00000425: PUSH2 0x042d
00000428: DUP2
00000429: PUSH2 0x0b0f
0000042c: JUMP
0000042d: JUMPDEST
0000042e: ISZERO
0000042f: PUSH2 0x04fa
00000432: JUMPI
00000433: PUSH2 0x043b
00000436: DUP3
00000437: PUSH2 0x03df
0000043a: JUMP
0000043b: JUMPDEST
0000043c: ISZERO
0000043d: PUSH2 0x0445
00000440: JUMPI
00000441: PUSH2 0x04fa
00000444: JUMP
00000445: JUMPDEST
00000446: PUSH2 0x044d
00000449: PUSH2 0x0c7a
0000044c: JUMP
0000044d: JUMPDEST
0000044e: PUSH1 0x01
00000450: SLOAD
00000451: PUSH1 0xfa
00000453: SWAP1
00000454: LT
00000455: PUSH2 0x0460
00000458: JUMPI
00000459: PUSH2 0x0460
0000045c: PUSH2 0x0d08
0000045f: JUMP
00000460: JUMPDEST
00000461: JUMPDEST
00000462: PUSH1 0x01
00000464: SLOAD
00000465: PUSH1 0xfa
00000467: SWAP1
00000468: LT
00000469: PUSH2 0x0471
0000046c: JUMPI
0000046d: PUSH2 0x04fa
00000470: JUMP
00000471: JUMPDEST
00000472: PUSH1 0x01
00000474: DUP1
00000475: SLOAD
00000476: DUP2
00000477: ADD
00000478: SWAP1
00000479: DUP2
0000047a: SWAP1
0000047b: SSTORE
0000047c: PUSH1 0x01
0000047e: PUSH1 0xa0
00000480: PUSH1 0x02
00000482: EXP
00000483: SUB
00000484: DUP4
00000485: AND
00000486: SWAP1
00000487: PUSH1 0x02
00000489: SWAP1
0000048a: PUSH2 0x0100
0000048d: DUP2
0000048e: LT
0000048f: PUSH2 0x0494
00000492: JUMPI
00000493: INVALID
00000494: JUMPDEST
00000495: ADD
00000496: PUSH1 0x00
00000498: JUMPDEST
00000499: POP
0000049a: SSTORE
0000049b: PUSH1 0x01
0000049d: SLOAD
0000049e: PUSH1 0x01
000004a0: PUSH1 0xa0
000004a2: PUSH1 0x02
000004a4: EXP
000004a5: SUB
000004a6: DUP4
000004a7: AND
000004a8: PUSH1 0x00
000004aa: SWAP1
000004ab: DUP2
000004ac: MSTORE
000004ad: PUSH2 0x0102
000004b0: PUSH1 0x20
000004b2: MSTORE
000004b3: PUSH1 0x40
000004b5: SWAP1
000004b6: DUP2
000004b7: SWAP1
000004b8: KECCAK256
000004b9: SWAP2
000004ba: SWAP1
000004bb: SWAP2
000004bc: SSTORE
000004bd: PUSH32 0x994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3
000004de: SWAP1
000004df: DUP4
000004e0: SWAP1
000004e1: MLOAD
000004e2: PUSH1 0x01
000004e4: PUSH1 0xa0
000004e6: PUSH1 0x02
000004e8: EXP
000004e9: SUB
000004ea: SWAP1
000004eb: SWAP2
000004ec: AND
000004ed: DUP2
000004ee: MSTORE
000004ef: PUSH1 0x20
000004f1: ADD
000004f2: PUSH1 0x40
000004f4: MLOAD
000004f5: DUP1
000004f6: SWAP2
000004f7: SUB
000004f8: SWAP1
000004f9: LOG1
000004fa: JUMPDEST
000004fb: JUMPDEST
000004fc: JUMPDEST
000004fd: POP
000004fe: POP
000004ff: JUMP
00000500: JUMPDEST
00000501: PUSH1 0x00
00000503: SLOAD
00000504: DUP2
00000505: JUMP
00000506: JUMPDEST
00000507: PUSH1 0x00
00000509: DUP1
0000050a: DUP3
0000050b: PUSH2 0x0513
0000050e: DUP2
0000050f: PUSH2 0x0b0f
00000512: JUMP
00000513: JUMPDEST
00000514: ISZERO
00000515: PUSH2 0x0722
00000518: JUMPI
00000519: PUSH1 0x00
0000051b: DUP5
0000051c: DUP2
0000051d: MSTORE
0000051e: PUSH2 0x0105
00000521: PUSH1 0x20
00000523: MSTORE
00000524: PUSH1 0x40
00000526: SWAP1
00000527: KECCAK256
00000528: SLOAD
00000529: PUSH1 0x01
0000052b: PUSH1 0xa0
0000052d: PUSH1 0x02
0000052f: EXP
00000530: SUB
00000531: AND
00000532: ISZERO
00000533: PUSH2 0x0722
00000536: JUMPI
00000537: PUSH1 0x00
00000539: DUP5
0000053a: DUP2
0000053b: MSTORE
0000053c: PUSH2 0x0105
0000053f: PUSH1 0x20
00000541: MSTORE
00000542: PUSH1 0x40
00000544: SWAP1
00000545: DUP2
00000546: SWAP1
00000547: KECCAK256
00000548: DUP1
00000549: SLOAD
0000054a: PUSH1 0x01
0000054c: DUP3
0000054d: ADD
0000054e: SLOAD
0000054f: PUSH1 0x01
00000551: PUSH1 0xa0
00000553: PUSH1 0x02
00000555: EXP
00000556: SUB
00000557: SWAP1
00000558: SWAP2
00000559: AND
0000055a: SWAP3
0000055b: SWAP1
0000055c: SWAP2
0000055d: PUSH1 0x02
0000055f: ADD
00000560: SWAP1
00000561: MLOAD
00000562: DUP1
00000563: DUP3
00000564: DUP1
00000565: SLOAD
00000566: PUSH1 0x01
00000568: DUP2
00000569: PUSH1 0x01
0000056b: AND
0000056c: ISZERO
0000056d: PUSH2 0x0100
00000570: MUL
00000571: SUB
00000572: AND
00000573: PUSH1 0x02
00000575: SWAP1
00000576: DIV
00000577: DUP1
00000578: ISZERO
00000579: PUSH2 0x05c3
0000057c: JUMPI
0000057d: DUP1
0000057e: PUSH1 0x1f
00000580: LT
00000581: PUSH2 0x0598
00000584: JUMPI
00000585: PUSH2 0x0100
00000588: DUP1
00000589: DUP4
0000058a: SLOAD
0000058b: DIV
0000058c: MUL
0000058d: DUP4
0000058e: MSTORE
0000058f: SWAP2
00000590: PUSH1 0x20
00000592: ADD
00000593: SWAP2
00000594: PUSH2 0x05c3
00000597: JUMP
00000598: JUMPDEST
00000599: DUP3
0000059a: ADD
0000059b: SWAP2
0000059c: SWAP1
0000059d: PUSH1 0x00
0000059f: MSTORE
000005a0: PUSH1 0x20
000005a2: PUSH1 0x00
000005a4: KECCAK256
000005a5: SWAP1
000005a6: JUMPDEST
000005a7: DUP2
000005a8: SLOAD
000005a9: DUP2
000005aa: MSTORE
000005ab: SWAP1
000005ac: PUSH1 0x01
000005ae: ADD
000005af: SWAP1
000005b0: PUSH1 0x20
000005b2: ADD
000005b3: DUP1
000005b4: DUP4
000005b5: GT
000005b6: PUSH2 0x05a6
000005b9: JUMPI
000005ba: DUP3
000005bb: SWAP1
000005bc: SUB
000005bd: PUSH1 0x1f
000005bf: AND
000005c0: DUP3
000005c1: ADD
000005c2: SWAP2
000005c3: JUMPDEST
000005c4: POP
000005c5: POP
000005c6: SWAP2
000005c7: POP
000005c8: POP
000005c9: PUSH1 0x00
000005cb: PUSH1 0x40
000005cd: MLOAD
000005ce: DUP1
000005cf: DUP4
000005d0: SUB
000005d1: DUP2
000005d2: DUP6
000005d3: DUP8
000005d4: PUSH2 0x8796
000005d7: GAS
000005d8: SUB
000005d9: CALL
000005da: PUSH1 0x00
000005dc: DUP9
000005dd: DUP2
000005de: MSTORE
000005df: PUSH2 0x0105
000005e2: PUSH1 0x20
000005e4: MSTORE
000005e5: PUSH1 0x40
000005e7: SWAP1
000005e8: DUP2
000005e9: SWAP1
000005ea: KECCAK256
000005eb: PUSH1 0x01
000005ed: DUP2
000005ee: ADD
000005ef: SLOAD
000005f0: DUP2
000005f1: SLOAD
000005f2: SWAP4
000005f3: SWAP9
000005f4: POP
000005f5: PUSH32 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a
00000616: SWAP7
00000617: POP
00000618: CALLER
00000619: SWAP6
0000061a: POP
0000061b: DUP11
0000061c: SWAP5
0000061d: POP
0000061e: SWAP3
0000061f: PUSH1 0x01
00000621: PUSH1 0xa0
00000623: PUSH1 0x02
00000625: EXP
00000626: SUB
00000627: AND
00000628: SWAP2
00000629: PUSH1 0x02
0000062b: SWAP1
0000062c: SWAP2
0000062d: ADD
0000062e: SWAP1
0000062f: MLOAD
00000630: PUSH1 0x01
00000632: PUSH1 0xa0
00000634: PUSH1 0x02
00000636: EXP
00000637: SUB
00000638: DUP1
00000639: DUP8
0000063a: AND
0000063b: DUP3
0000063c: MSTORE
0000063d: PUSH1 0x20
0000063f: DUP3
00000640: ADD
00000641: DUP7
00000642: SWAP1
00000643: MSTORE
00000644: PUSH1 0x40
00000646: DUP3
00000647: ADD
00000648: DUP6
00000649: SWAP1
0000064a: MSTORE
0000064b: DUP4
0000064c: AND
0000064d: PUSH1 0x60
0000064f: DUP3
00000650: ADD
00000651: MSTORE
00000652: PUSH1 0xa0
00000654: PUSH1 0x80
00000656: DUP3
00000657: ADD
00000658: DUP2
00000659: DUP2
0000065a: MSTORE
0000065b: DUP4
0000065c: SLOAD
0000065d: PUSH1 0x02
0000065f: PUSH2 0x0100
00000662: PUSH1 0x01
00000664: DUP4
00000665: AND
00000666: ISZERO
00000667: MUL
00000668: PUSH1 0x00
0000066a: NOT
0000066b: ADD
0000066c: SWAP1
0000066d: SWAP2
0000066e: AND
0000066f: DIV
00000670: SWAP2
00000671: DUP4
00000672: ADD
00000673: DUP3
00000674: SWAP1
00000675: MSTORE
00000676: SWAP1
00000677: PUSH1 0xc0
00000679: DUP4
0000067a: ADD
0000067b: SWAP1
0000067c: DUP5
0000067d: SWAP1
0000067e: DUP1
0000067f: ISZERO
00000680: PUSH2 0x06ca
00000683: JUMPI
00000684: DUP1
00000685: PUSH1 0x1f
00000687: LT
00000688: PUSH2 0x069f
0000068b: JUMPI
0000068c: PUSH2 0x0100
0000068f: DUP1
00000690: DUP4
00000691: SLOAD
00000692: DIV
00000693: MUL
00000694: DUP4
00000695: MSTORE
00000696: SWAP2
00000697: PUSH1 0x20
00000699: ADD
0000069a: SWAP2
0000069b: PUSH2 0x06ca
0000069e: JUMP
0000069f: JUMPDEST
000006a0: DUP3
000006a1: ADD
000006a2: SWAP2
000006a3: SWAP1
000006a4: PUSH1 0x00
000006a6: MSTORE
000006a7: PUSH1 0x20
000006a9: PUSH1 0x00
000006ab: KECCAK256
000006ac: SWAP1
000006ad: JUMPDEST
000006ae: DUP2
000006af: SLOAD
000006b0: DUP2
000006b1: MSTORE
000006b2: SWAP1
000006b3: PUSH1 0x01
000006b5: ADD
000006b6: SWAP1
000006b7: PUSH1 0x20
000006b9: ADD
000006ba: DUP1
000006bb: DUP4
000006bc: GT
000006bd: PUSH2 0x06ad
000006c0: JUMPI
000006c1: DUP3
000006c2: SWAP1
000006c3: SUB
000006c4: PUSH1 0x1f
000006c6: AND
000006c7: DUP3
000006c8: ADD
000006c9: SWAP2
000006ca: JUMPDEST
000006cb: POP
000006cc: POP
000006cd: SWAP7
000006ce: POP
000006cf: POP
000006d0: POP
000006d1: POP
000006d2: POP
000006d3: POP
000006d4: POP
000006d5: PUSH1 0x40
000006d7: MLOAD
000006d8: DUP1
000006d9: SWAP2
000006da: SUB
000006db: SWAP1
000006dc: LOG1
000006dd: PUSH1 0x00
000006df: DUP5
000006e0: DUP2
000006e1: MSTORE
000006e2: PUSH2 0x0105
000006e5: PUSH1 0x20
000006e7: MSTORE
000006e8: PUSH1 0x40
000006ea: DUP2
000006eb: KECCAK256
000006ec: DUP1
000006ed: SLOAD
000006ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000703: NOT
00000704: AND
00000705: DUP2
00000706: SSTORE
00000707: PUSH1 0x01
00000709: DUP2
0000070a: ADD
0000070b: DUP3
0000070c: SWAP1
0000070d: SSTORE
0000070e: SWAP1
0000070f: PUSH2 0x071b
00000712: PUSH1 0x02
00000714: DUP4
00000715: ADD
00000716: DUP3
00000717: PUSH2 0x0ed7
0000071a: JUMP
0000071b: JUMPDEST
0000071c: POP
0000071d: POP
0000071e: PUSH1 0x01
00000720: SWAP3
00000721: POP
00000722: JUMPDEST
00000723: JUMPDEST
00000724: JUMPDEST
00000725: JUMPDEST
00000726: POP
00000727: POP
00000728: SWAP2
00000729: SWAP1
0000072a: POP
0000072b: JUMP
0000072c: JUMPDEST
0000072d: PUSH1 0x00
0000072f: PUSH2 0x0737
00000732: CALLER
00000733: PUSH2 0x03df
00000736: JUMP
00000737: JUMPDEST
00000738: ISZERO
00000739: PUSH2 0x085a
0000073c: JUMPI
0000073d: PUSH1 0x00
0000073f: CALLDATASIZE
00000740: NUMBER
00000741: PUSH1 0x40
00000743: MLOAD
00000744: DUP1
00000745: DUP5
00000746: DUP5
00000747: DUP1
00000748: DUP3
00000749: DUP5
0000074a: CALLDATACOPY
0000074b: SWAP1
0000074c: SWAP2
0000074d: ADD
0000074e: SWAP3
0000074f: DUP4
00000750: MSTORE
00000751: POP
00000752: POP
00000753: PUSH1 0x20
00000755: ADD
00000756: SWAP2
00000757: POP
00000758: PUSH1 0x40
0000075a: SWAP1
0000075b: POP
0000075c: MLOAD
0000075d: DUP1
0000075e: SWAP2
0000075f: SUB
00000760: SWAP1
00000761: KECCAK256
00000762: SWAP1
00000763: POP
00000764: PUSH2 0x076c
00000767: DUP2
00000768: PUSH2 0x0506
0000076b: JUMP
0000076c: JUMPDEST
0000076d: ISZERO
0000076e: DUP1
0000076f: ISZERO
00000770: PUSH2 0x078f
00000773: JUMPI
00000774: POP
00000775: PUSH1 0x00
00000777: DUP2
00000778: DUP2
00000779: MSTORE
0000077a: PUSH2 0x0105
0000077d: PUSH1 0x20
0000077f: MSTORE
00000780: PUSH1 0x40
00000782: SWAP1
00000783: KECCAK256
00000784: SLOAD
00000785: PUSH1 0x01
00000787: PUSH1 0xa0
00000789: PUSH1 0x02
0000078b: EXP
0000078c: SUB
0000078d: AND
0000078e: ISZERO
0000078f: JUMPDEST
00000790: ISZERO
00000791: PUSH2 0x085a
00000794: JUMPI
00000795: PUSH1 0x00
00000797: DUP2
00000798: DUP2
00000799: MSTORE
0000079a: PUSH2 0x0105
0000079d: PUSH1 0x20
0000079f: MSTORE
000007a0: PUSH1 0x40
000007a2: SWAP1
000007a3: KECCAK256
000007a4: DUP1
000007a5: SLOAD
000007a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007bb: NOT
000007bc: AND
000007bd: PUSH1 0x01
000007bf: PUSH1 0xa0
000007c1: PUSH1 0x02
000007c3: EXP
000007c4: SUB
000007c5: DUP8
000007c6: AND
000007c7: OR
000007c8: DUP2
000007c9: SSTORE
000007ca: PUSH1 0x01
000007cc: DUP2
000007cd: ADD
000007ce: DUP6
000007cf: SWAP1
000007d0: SSTORE
000007d1: PUSH2 0x07de
000007d4: SWAP1
000007d5: PUSH1 0x02
000007d7: ADD
000007d8: DUP5
000007d9: DUP5
000007da: PUSH2 0x0f1f
000007dd: JUMP
000007de: JUMPDEST
000007df: POP
000007e0: PUSH32 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32
00000801: DUP2
00000802: CALLER
00000803: DUP7
00000804: DUP9
00000805: DUP8
00000806: DUP8
00000807: PUSH1 0x40
00000809: MLOAD
0000080a: DUP7
0000080b: DUP2
0000080c: MSTORE
0000080d: PUSH1 0x01
0000080f: PUSH1 0xa0
00000811: PUSH1 0x02
00000813: EXP
00000814: SUB
00000815: DUP1
00000816: DUP8
00000817: AND
00000818: PUSH1 0x20
0000081a: DUP4
0000081b: ADD
0000081c: MSTORE
0000081d: PUSH1 0x40
0000081f: DUP3
00000820: ADD
00000821: DUP7
00000822: SWAP1
00000823: MSTORE
00000824: DUP5
00000825: AND
00000826: PUSH1 0x60
00000828: DUP3
00000829: ADD
0000082a: MSTORE
0000082b: PUSH1 0xa0
0000082d: PUSH1 0x80
0000082f: DUP3
00000830: ADD
00000831: DUP2
00000832: DUP2
00000833: MSTORE
00000834: SWAP1
00000835: DUP3
00000836: ADD
00000837: DUP4
00000838: SWAP1
00000839: MSTORE
0000083a: PUSH1 0xc0
0000083c: DUP3
0000083d: ADD
0000083e: DUP5
0000083f: DUP5
00000840: DUP1
00000841: DUP3
00000842: DUP5
00000843: CALLDATACOPY
00000844: DUP3
00000845: ADD
00000846: SWAP2
00000847: POP
00000848: POP
00000849: SWAP8
0000084a: POP
0000084b: POP
0000084c: POP
0000084d: POP
0000084e: POP
0000084f: POP
00000850: POP
00000851: POP
00000852: PUSH1 0x40
00000854: MLOAD
00000855: DUP1
00000856: SWAP2
00000857: SUB
00000858: SWAP1
00000859: LOG1
0000085a: JUMPDEST
0000085b: JUMPDEST
0000085c: JUMPDEST
0000085d: JUMPDEST
0000085e: SWAP5
0000085f: SWAP4
00000860: POP
00000861: POP
00000862: POP
00000863: POP
00000864: JUMP
00000865: JUMPDEST
00000866: PUSH1 0x01
00000868: PUSH1 0xa0
0000086a: PUSH1 0x02
0000086c: EXP
0000086d: SUB
0000086e: CALLER
0000086f: AND
00000870: PUSH1 0x00
00000872: SWAP1
00000873: DUP2
00000874: MSTORE
00000875: PUSH2 0x0102
00000878: PUSH1 0x20
0000087a: MSTORE
0000087b: PUSH1 0x40
0000087d: DUP2
0000087e: KECCAK256
0000087f: SLOAD
00000880: SWAP1
00000881: DUP1
00000882: DUP3
00000883: ISZERO
00000884: ISZERO
00000885: PUSH2 0x088d
00000888: JUMPI
00000889: PUSH2 0x0909
0000088c: JUMP
0000088d: JUMPDEST
0000088e: POP
0000088f: POP
00000890: PUSH1 0x00
00000892: DUP3
00000893: DUP2
00000894: MSTORE
00000895: PUSH2 0x0103
00000898: PUSH1 0x20
0000089a: MSTORE
0000089b: PUSH1 0x40
0000089d: DUP2
0000089e: KECCAK256
0000089f: PUSH1 0x01
000008a1: DUP2
000008a2: ADD
000008a3: SLOAD
000008a4: PUSH1 0x02
000008a6: DUP5
000008a7: SWAP1
000008a8: EXP
000008a9: SWAP3
000008aa: SWAP1
000008ab: DUP4
000008ac: AND
000008ad: GT
000008ae: ISZERO
000008af: PUSH2 0x0909
000008b2: JUMPI
000008b3: DUP1
000008b4: SLOAD
000008b5: PUSH1 0x01
000008b7: SWAP1
000008b8: DUP2
000008b9: ADD
000008ba: DUP3
000008bb: SSTORE
000008bc: DUP2
000008bd: ADD
000008be: DUP1
000008bf: SLOAD
000008c0: DUP4
000008c1: SWAP1
000008c2: SUB
000008c3: SWAP1
000008c4: SSTORE
000008c5: PUSH32 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b
000008e6: CALLER
000008e7: DUP6
000008e8: PUSH1 0x40
000008ea: MLOAD
000008eb: PUSH1 0x01
000008ed: PUSH1 0xa0
000008ef: PUSH1 0x02
000008f1: EXP
000008f2: SUB
000008f3: SWAP1
000008f4: SWAP3
000008f5: AND
000008f6: DUP3
000008f7: MSTORE
000008f8: PUSH1 0x20
000008fa: DUP3
000008fb: ADD
000008fc: MSTORE
000008fd: PUSH1 0x40
000008ff: SWAP1
00000900: DUP2
00000901: ADD
00000902: SWAP1
00000903: MLOAD
00000904: DUP1
00000905: SWAP2
00000906: SUB
00000907: SWAP1
00000908: LOG1
00000909: JUMPDEST
0000090a: JUMPDEST
0000090b: POP
0000090c: POP
0000090d: POP
0000090e: POP
0000090f: JUMP
00000910: JUMPDEST
00000911: PUSH1 0x00
00000913: CALLDATASIZE
00000914: PUSH1 0x40
00000916: MLOAD
00000917: DUP1
00000918: DUP4
00000919: DUP4
0000091a: DUP1
0000091b: DUP3
0000091c: DUP5
0000091d: CALLDATACOPY
0000091e: DUP3
0000091f: ADD
00000920: SWAP2
00000921: POP
00000922: POP
00000923: SWAP3
00000924: POP
00000925: POP
00000926: POP
00000927: PUSH1 0x40
00000929: MLOAD
0000092a: DUP1
0000092b: SWAP2
0000092c: SUB
0000092d: SWAP1
0000092e: KECCAK256
0000092f: PUSH2 0x0937
00000932: DUP2
00000933: PUSH2 0x0b0f
00000936: JUMP
00000937: JUMPDEST
00000938: ISZERO
00000939: PUSH2 0x04fa
0000093c: JUMPI
0000093d: PUSH1 0x01
0000093f: SLOAD
00000940: DUP3
00000941: GT
00000942: ISZERO
00000943: PUSH2 0x094b
00000946: JUMPI
00000947: PUSH2 0x04fa
0000094a: JUMP
0000094b: JUMPDEST
0000094c: PUSH1 0x00
0000094e: DUP3
0000094f: SWAP1
00000950: SSTORE
00000951: PUSH2 0x0958
00000954: PUSH2 0x0c7a
00000957: JUMP
00000958: JUMPDEST
00000959: PUSH32 0xacbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da
0000097a: DUP3
0000097b: PUSH1 0x40
0000097d: MLOAD
0000097e: SWAP1
0000097f: DUP2
00000980: MSTORE
00000981: PUSH1 0x20
00000983: ADD
00000984: PUSH1 0x40
00000986: MLOAD
00000987: DUP1
00000988: SWAP2
00000989: SUB
0000098a: SWAP1
0000098b: LOG1
0000098c: JUMPDEST
0000098d: JUMPDEST
0000098e: JUMPDEST
0000098f: POP
00000990: POP
00000991: JUMP
00000992: JUMPDEST
00000993: PUSH1 0x00
00000995: DUP3
00000996: DUP2
00000997: MSTORE
00000998: PUSH2 0x0103
0000099b: PUSH1 0x20
0000099d: SWAP1
0000099e: DUP2
0000099f: MSTORE
000009a0: PUSH1 0x40
000009a2: DUP1
000009a3: DUP4
000009a4: KECCAK256
000009a5: PUSH1 0x01
000009a7: PUSH1 0xa0
000009a9: PUSH1 0x02
000009ab: EXP
000009ac: SUB
000009ad: DUP6
000009ae: AND
000009af: DUP5
000009b0: MSTORE
000009b1: PUSH2 0x0102
000009b4: SWAP1
000009b5: SWAP3
000009b6: MSTORE
000009b7: DUP3
000009b8: KECCAK256
000009b9: SLOAD
000009ba: DUP3
000009bb: DUP2
000009bc: ISZERO
000009bd: ISZERO
000009be: PUSH2 0x09ca
000009c1: JUMPI
000009c2: PUSH1 0x00
000009c4: SWAP4
000009c5: POP
000009c6: PUSH2 0x09de
000009c9: JUMP
000009ca: JUMPDEST
000009cb: DUP2
000009cc: PUSH1 0x02
000009ce: EXP
000009cf: SWAP1
000009d0: POP
000009d1: DUP1
000009d2: DUP4
000009d3: PUSH1 0x01
000009d5: ADD
000009d6: SLOAD
000009d7: AND
000009d8: PUSH1 0x00
000009da: EQ
000009db: ISZERO
000009dc: SWAP4
000009dd: POP
000009de: JUMPDEST
000009df: POP
000009e0: POP
000009e1: POP
000009e2: SWAP3
000009e3: SWAP2
000009e4: POP
000009e5: POP
000009e6: JUMP
000009e7: JUMPDEST
000009e8: PUSH1 0x00
000009ea: PUSH1 0x02
000009ec: PUSH1 0x01
000009ee: DUP4
000009ef: ADD
000009f0: PUSH2 0x0100
000009f3: DUP2
000009f4: LT
000009f5: PUSH2 0x09fa
000009f8: JUMPI
000009f9: INVALID
000009fa: JUMPDEST
000009fb: ADD
000009fc: PUSH1 0x00
000009fe: JUMPDEST
000009ff: POP
00000a00: SLOAD
00000a01: SWAP1
00000a02: POP
00000a03: JUMPDEST
00000a04: SWAP2
00000a05: SWAP1
00000a06: POP
00000a07: JUMP
00000a08: JUMPDEST
00000a09: PUSH1 0x00
00000a0b: DUP1
00000a0c: CALLDATASIZE
00000a0d: PUSH1 0x40
00000a0f: MLOAD
00000a10: DUP1
00000a11: DUP4
00000a12: DUP4
00000a13: DUP1
00000a14: DUP3
00000a15: DUP5
00000a16: CALLDATACOPY
00000a17: DUP3
00000a18: ADD
00000a19: SWAP2
00000a1a: POP
00000a1b: POP
00000a1c: SWAP3
00000a1d: POP
00000a1e: POP
00000a1f: POP
00000a20: PUSH1 0x40
00000a22: MLOAD
00000a23: DUP1
00000a24: SWAP2
00000a25: SUB
00000a26: SWAP1
00000a27: KECCAK256
00000a28: PUSH2 0x0a30
00000a2b: DUP2
00000a2c: PUSH2 0x0b0f
00000a2f: JUMP
00000a30: JUMPDEST
00000a31: ISZERO
00000a32: PUSH2 0x0909
00000a35: JUMPI
00000a36: PUSH2 0x0a3e
00000a39: DUP4
00000a3a: PUSH2 0x03df
00000a3d: JUMP
00000a3e: JUMPDEST
00000a3f: ISZERO
00000a40: PUSH2 0x0a48
00000a43: JUMPI
00000a44: PUSH2 0x0909
00000a47: JUMP
00000a48: JUMPDEST
00000a49: PUSH1 0x01
00000a4b: PUSH1 0xa0
00000a4d: PUSH1 0x02
00000a4f: EXP
00000a50: SUB
00000a51: DUP5
00000a52: AND
00000a53: PUSH1 0x00
00000a55: SWAP1
00000a56: DUP2
00000a57: MSTORE
00000a58: PUSH2 0x0102
00000a5b: PUSH1 0x20
00000a5d: MSTORE
00000a5e: PUSH1 0x40
00000a60: SWAP1
00000a61: KECCAK256
00000a62: SLOAD
00000a63: SWAP2
00000a64: POP
00000a65: DUP2
00000a66: ISZERO
00000a67: ISZERO
00000a68: PUSH2 0x0a70
00000a6b: JUMPI
00000a6c: PUSH2 0x0909
00000a6f: JUMP
00000a70: JUMPDEST
00000a71: PUSH2 0x0a78
00000a74: PUSH2 0x0c7a
00000a77: JUMP
00000a78: JUMPDEST
00000a79: PUSH1 0x01
00000a7b: PUSH1 0xa0
00000a7d: PUSH1 0x02
00000a7f: EXP
00000a80: SUB
00000a81: DUP4
00000a82: AND
00000a83: PUSH1 0x02
00000a85: DUP4
00000a86: PUSH2 0x0100
00000a89: DUP2
00000a8a: LT
00000a8b: PUSH2 0x0a90
00000a8e: JUMPI
00000a8f: INVALID
00000a90: JUMPDEST
00000a91: ADD
00000a92: PUSH1 0x00
00000a94: JUMPDEST
00000a95: POP
00000a96: SSTORE
00000a97: PUSH1 0x01
00000a99: PUSH1 0xa0
00000a9b: PUSH1 0x02
00000a9d: EXP
00000a9e: SUB
00000a9f: DUP1
00000aa0: DUP6
00000aa1: AND
00000aa2: PUSH1 0x00
00000aa4: SWAP1
00000aa5: DUP2
00000aa6: MSTORE
00000aa7: PUSH2 0x0102
00000aaa: PUSH1 0x20
00000aac: MSTORE
00000aad: PUSH1 0x40
00000aaf: DUP1
00000ab0: DUP3
00000ab1: KECCAK256
00000ab2: DUP3
00000ab3: SWAP1
00000ab4: SSTORE
00000ab5: SWAP2
00000ab6: DUP6
00000ab7: AND
00000ab8: DUP2
00000ab9: MSTORE
00000aba: DUP2
00000abb: SWAP1
00000abc: KECCAK256
00000abd: DUP4
00000abe: SWAP1
00000abf: SSTORE
00000ac0: PUSH32 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c
00000ae1: SWAP1
00000ae2: DUP6
00000ae3: SWAP1
00000ae4: DUP6
00000ae5: SWAP1
00000ae6: MLOAD
00000ae7: PUSH1 0x01
00000ae9: PUSH1 0xa0
00000aeb: PUSH1 0x02
00000aed: EXP
00000aee: SUB
00000aef: SWAP3
00000af0: DUP4
00000af1: AND
00000af2: DUP2
00000af3: MSTORE
00000af4: SWAP2
00000af5: AND
00000af6: PUSH1 0x20
00000af8: DUP3
00000af9: ADD
00000afa: MSTORE
00000afb: PUSH1 0x40
00000afd: SWAP1
00000afe: DUP2
00000aff: ADD
00000b00: SWAP1
00000b01: MLOAD
00000b02: DUP1
00000b03: SWAP2
00000b04: SUB
00000b05: SWAP1
00000b06: LOG1
00000b07: JUMPDEST
00000b08: JUMPDEST
00000b09: JUMPDEST
00000b0a: POP
00000b0b: POP
00000b0c: POP
00000b0d: POP
00000b0e: JUMP
00000b0f: JUMPDEST
00000b10: PUSH1 0x01
00000b12: PUSH1 0xa0
00000b14: PUSH1 0x02
00000b16: EXP
00000b17: SUB
00000b18: CALLER
00000b19: AND
00000b1a: PUSH1 0x00
00000b1c: SWAP1
00000b1d: DUP2
00000b1e: MSTORE
00000b1f: PUSH2 0x0102
00000b22: PUSH1 0x20
00000b24: MSTORE
00000b25: PUSH1 0x40
00000b27: DUP2
00000b28: KECCAK256
00000b29: SLOAD
00000b2a: DUP2
00000b2b: DUP1
00000b2c: DUP3
00000b2d: ISZERO
00000b2e: ISZERO
00000b2f: PUSH2 0x0b37
00000b32: JUMPI
00000b33: PUSH2 0x0c70
00000b36: JUMP
00000b37: JUMPDEST
00000b38: PUSH1 0x00
00000b3a: DUP6
00000b3b: DUP2
00000b3c: MSTORE
00000b3d: PUSH2 0x0103
00000b40: PUSH1 0x20
00000b42: MSTORE
00000b43: PUSH1 0x40
00000b45: SWAP1
00000b46: KECCAK256
00000b47: DUP1
00000b48: SLOAD
00000b49: SWAP1
00000b4a: SWAP3
00000b4b: POP
00000b4c: ISZERO
00000b4d: ISZERO
00000b4e: PUSH2 0x0b9a
00000b51: JUMPI
00000b52: PUSH1 0x00
00000b54: DUP1
00000b55: SLOAD
00000b56: DUP4
00000b57: SSTORE
00000b58: PUSH1 0x01
00000b5a: DUP1
00000b5b: DUP5
00000b5c: ADD
00000b5d: SWAP2
00000b5e: SWAP1
00000b5f: SWAP2
00000b60: SSTORE
00000b61: PUSH2 0x0104
00000b64: DUP1
00000b65: SLOAD
00000b66: SWAP2
00000b67: PUSH2 0x0b72
00000b6a: SWAP2
00000b6b: SWAP1
00000b6c: DUP4
00000b6d: ADD
00000b6e: PUSH2 0x0f9e
00000b71: JUMP
00000b72: JUMPDEST
00000b73: PUSH1 0x02
00000b75: DUP4
00000b76: ADD
00000b77: DUP2
00000b78: SWAP1
00000b79: SSTORE
00000b7a: PUSH2 0x0104
00000b7d: DUP1
00000b7e: SLOAD
00000b7f: DUP8
00000b80: SWAP3
00000b81: SWAP1
00000b82: DUP2
00000b83: LT
00000b84: PUSH2 0x0b89
00000b87: JUMPI
00000b88: INVALID
00000b89: JUMPDEST
00000b8a: SWAP1
00000b8b: PUSH1 0x00
00000b8d: MSTORE
00000b8e: PUSH1 0x20
00000b90: PUSH1 0x00
00000b92: KECCAK256
00000b93: SWAP1
00000b94: ADD
00000b95: PUSH1 0x00
00000b97: JUMPDEST
00000b98: POP
00000b99: SSTORE
00000b9a: JUMPDEST
00000b9b: DUP3
00000b9c: PUSH1 0x02
00000b9e: EXP
00000b9f: SWAP1
00000ba0: POP
00000ba1: DUP1
00000ba2: DUP3
00000ba3: PUSH1 0x01
00000ba5: ADD
00000ba6: SLOAD
00000ba7: AND
00000ba8: PUSH1 0x00
00000baa: EQ
00000bab: ISZERO
00000bac: PUSH2 0x0c70
00000baf: JUMPI
00000bb0: PUSH32 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda
00000bd1: CALLER
00000bd2: DUP7
00000bd3: PUSH1 0x40
00000bd5: MLOAD
00000bd6: PUSH1 0x01
00000bd8: PUSH1 0xa0
00000bda: PUSH1 0x02
00000bdc: EXP
00000bdd: SUB
00000bde: SWAP1
00000bdf: SWAP3
00000be0: AND
00000be1: DUP3
00000be2: MSTORE
00000be3: PUSH1 0x20
00000be5: DUP3
00000be6: ADD
00000be7: MSTORE
00000be8: PUSH1 0x40
00000bea: SWAP1
00000beb: DUP2
00000bec: ADD
00000bed: SWAP1
00000bee: MLOAD
00000bef: DUP1
00000bf0: SWAP2
00000bf1: SUB
00000bf2: SWAP1
00000bf3: LOG1
00000bf4: DUP2
00000bf5: SLOAD
00000bf6: PUSH1 0x01
00000bf8: SWAP1
00000bf9: GT
00000bfa: PUSH2 0x0c5d
00000bfd: JUMPI
00000bfe: PUSH1 0x00
00000c00: DUP6
00000c01: DUP2
00000c02: MSTORE
00000c03: PUSH2 0x0103
00000c06: PUSH1 0x20
00000c08: MSTORE
00000c09: PUSH1 0x40
00000c0b: SWAP1
00000c0c: KECCAK256
00000c0d: PUSH1 0x02
00000c0f: ADD
00000c10: SLOAD
00000c11: PUSH2 0x0104
00000c14: DUP1
00000c15: SLOAD
00000c16: SWAP1
00000c17: SWAP2
00000c18: SWAP1
00000c19: DUP2
00000c1a: LT
00000c1b: PUSH2 0x0c20
00000c1e: JUMPI
00000c1f: INVALID
00000c20: JUMPDEST
00000c21: SWAP1
00000c22: PUSH1 0x00
00000c24: MSTORE
00000c25: PUSH1 0x20
00000c27: PUSH1 0x00
00000c29: KECCAK256
00000c2a: SWAP1
00000c2b: ADD
00000c2c: PUSH1 0x00
00000c2e: JUMPDEST
00000c2f: POP
00000c30: PUSH1 0x00
00000c32: SWAP1
00000c33: DUP2
00000c34: SWAP1
00000c35: SSTORE
00000c36: DUP6
00000c37: DUP2
00000c38: MSTORE
00000c39: PUSH2 0x0103
00000c3c: PUSH1 0x20
00000c3e: MSTORE
00000c3f: PUSH1 0x40
00000c41: DUP2
00000c42: KECCAK256
00000c43: DUP2
00000c44: DUP2
00000c45: SSTORE
00000c46: PUSH1 0x01
00000c48: DUP1
00000c49: DUP3
00000c4a: ADD
00000c4b: DUP4
00000c4c: SWAP1
00000c4d: SSTORE
00000c4e: PUSH1 0x02
00000c50: SWAP1
00000c51: SWAP2
00000c52: ADD
00000c53: SWAP2
00000c54: SWAP1
00000c55: SWAP2
00000c56: SSTORE
00000c57: SWAP4
00000c58: POP
00000c59: PUSH2 0x0c70
00000c5c: JUMP
00000c5d: JUMPDEST
00000c5e: DUP2
00000c5f: SLOAD
00000c60: PUSH1 0x00
00000c62: NOT
00000c63: ADD
00000c64: DUP3
00000c65: SSTORE
00000c66: PUSH1 0x01
00000c68: DUP3
00000c69: ADD
00000c6a: DUP1
00000c6b: SLOAD
00000c6c: DUP3
00000c6d: OR
00000c6e: SWAP1
00000c6f: SSTORE
00000c70: JUMPDEST
00000c71: JUMPDEST
00000c72: JUMPDEST
00000c73: POP
00000c74: POP
00000c75: POP
00000c76: SWAP2
00000c77: SWAP1
00000c78: POP
00000c79: JUMP
00000c7a: JUMPDEST
00000c7b: PUSH2 0x0104
00000c7e: SLOAD
00000c7f: PUSH1 0x00
00000c81: JUMPDEST
00000c82: DUP2
00000c83: DUP2
00000c84: LT
00000c85: ISZERO
00000c86: PUSH2 0x0cfb
00000c89: JUMPI
00000c8a: PUSH2 0x0105
00000c8d: PUSH1 0x00
00000c8f: PUSH2 0x0104
00000c92: DUP4
00000c93: DUP2
00000c94: SLOAD
00000c95: DUP2
00000c96: LT
00000c97: ISZERO
00000c98: ISZERO
00000c99: PUSH2 0x0c9e
00000c9c: JUMPI
00000c9d: INVALID
00000c9e: JUMPDEST
00000c9f: SWAP1
00000ca0: PUSH1 0x00
00000ca2: MSTORE
00000ca3: PUSH1 0x20
00000ca5: PUSH1 0x00
00000ca7: KECCAK256
00000ca8: SWAP1
00000ca9: ADD
00000caa: PUSH1 0x00
00000cac: JUMPDEST
00000cad: POP
00000cae: SLOAD
00000caf: DUP2
00000cb0: MSTORE
00000cb1: PUSH1 0x20
00000cb3: DUP2
00000cb4: ADD
00000cb5: SWAP2
00000cb6: SWAP1
00000cb7: SWAP2
00000cb8: MSTORE
00000cb9: PUSH1 0x40
00000cbb: ADD
00000cbc: PUSH1 0x00
00000cbe: SWAP1
00000cbf: DUP2
00000cc0: KECCAK256
00000cc1: DUP1
00000cc2: SLOAD
00000cc3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cd8: NOT
00000cd9: AND
00000cda: DUP2
00000cdb: SSTORE
00000cdc: PUSH1 0x01
00000cde: DUP2
00000cdf: ADD
00000ce0: DUP3
00000ce1: SWAP1
00000ce2: SSTORE
00000ce3: SWAP1
00000ce4: PUSH2 0x0cf0
00000ce7: PUSH1 0x02
00000ce9: DUP4
00000cea: ADD
00000ceb: DUP3
00000cec: PUSH2 0x0ed7
00000cef: JUMP
00000cf0: JUMPDEST
00000cf1: POP
00000cf2: POP
00000cf3: JUMPDEST
00000cf4: PUSH1 0x01
00000cf6: ADD
00000cf7: PUSH2 0x0c81
00000cfa: JUMP
00000cfb: JUMPDEST
00000cfc: PUSH2 0x04fa
00000cff: PUSH2 0x0e43
00000d02: JUMP
00000d03: JUMPDEST
00000d04: JUMPDEST
00000d05: POP
00000d06: POP
00000d07: JUMP
00000d08: JUMPDEST
00000d09: PUSH1 0x01
00000d0b: JUMPDEST
00000d0c: PUSH1 0x01
00000d0e: SLOAD
00000d0f: DUP2
00000d10: LT
00000d11: ISZERO
00000d12: PUSH2 0x0e3f
00000d15: JUMPI
00000d16: JUMPDEST
00000d17: PUSH1 0x01
00000d19: SLOAD
00000d1a: DUP2
00000d1b: LT
00000d1c: DUP1
00000d1d: ISZERO
00000d1e: PUSH2 0x0d39
00000d21: JUMPI
00000d22: POP
00000d23: PUSH1 0x02
00000d25: DUP2
00000d26: PUSH2 0x0100
00000d29: DUP2
00000d2a: LT
00000d2b: PUSH2 0x0d30
00000d2e: JUMPI
00000d2f: INVALID
00000d30: JUMPDEST
00000d31: ADD
00000d32: PUSH1 0x00
00000d34: JUMPDEST
00000d35: POP
00000d36: SLOAD
00000d37: ISZERO
00000d38: ISZERO
00000d39: JUMPDEST
00000d3a: ISZERO
00000d3b: PUSH2 0x0d46
00000d3e: JUMPI
00000d3f: PUSH1 0x01
00000d41: ADD
00000d42: PUSH2 0x0d16
00000d45: JUMP
00000d46: JUMPDEST
00000d47: JUMPDEST
00000d48: PUSH1 0x01
00000d4a: DUP1
00000d4b: SLOAD
00000d4c: GT
00000d4d: DUP1
00000d4e: ISZERO
00000d4f: PUSH2 0x0d6c
00000d52: JUMPI
00000d53: POP
00000d54: PUSH1 0x01
00000d56: SLOAD
00000d57: PUSH1 0x02
00000d59: SWAP1
00000d5a: PUSH2 0x0100
00000d5d: DUP2
00000d5e: LT
00000d5f: PUSH2 0x0d64
00000d62: JUMPI
00000d63: INVALID
00000d64: JUMPDEST
00000d65: ADD
00000d66: PUSH1 0x00
00000d68: JUMPDEST
00000d69: POP
00000d6a: SLOAD
00000d6b: ISZERO
00000d6c: JUMPDEST
00000d6d: ISZERO
00000d6e: PUSH2 0x0d80
00000d71: JUMPI
00000d72: PUSH1 0x01
00000d74: DUP1
00000d75: SLOAD
00000d76: PUSH1 0x00
00000d78: NOT
00000d79: ADD
00000d7a: SWAP1
00000d7b: SSTORE
00000d7c: PUSH2 0x0d46
00000d7f: JUMP
00000d80: JUMPDEST
00000d81: PUSH1 0x01
00000d83: SLOAD
00000d84: DUP2
00000d85: LT
00000d86: DUP1
00000d87: ISZERO
00000d88: PUSH2 0x0da6
00000d8b: JUMPI
00000d8c: POP
00000d8d: PUSH1 0x01
00000d8f: SLOAD
00000d90: PUSH1 0x02
00000d92: SWAP1
00000d93: PUSH2 0x0100
00000d96: DUP2
00000d97: LT
00000d98: PUSH2 0x0d9d
00000d9b: JUMPI
00000d9c: INVALID
00000d9d: JUMPDEST
00000d9e: ADD
00000d9f: PUSH1 0x00
00000da1: JUMPDEST
00000da2: POP
00000da3: SLOAD
00000da4: ISZERO
00000da5: ISZERO
00000da6: JUMPDEST
00000da7: DUP1
00000da8: ISZERO
00000da9: PUSH2 0x0dc3
00000dac: JUMPI
00000dad: POP
00000dae: PUSH1 0x02
00000db0: DUP2
00000db1: PUSH2 0x0100
00000db4: DUP2
00000db5: LT
00000db6: PUSH2 0x0dbb
00000db9: JUMPI
00000dba: INVALID
00000dbb: JUMPDEST
00000dbc: ADD
00000dbd: PUSH1 0x00
00000dbf: JUMPDEST
00000dc0: POP
00000dc1: SLOAD
00000dc2: ISZERO
00000dc3: JUMPDEST
00000dc4: ISZERO
00000dc5: PUSH2 0x0e3a
00000dc8: JUMPI
00000dc9: PUSH1 0x01
00000dcb: SLOAD
00000dcc: PUSH1 0x02
00000dce: SWAP1
00000dcf: PUSH2 0x0100
00000dd2: DUP2
00000dd3: LT
00000dd4: PUSH2 0x0dd9
00000dd7: JUMPI
00000dd8: INVALID
00000dd9: JUMPDEST
00000dda: ADD
00000ddb: PUSH1 0x00
00000ddd: JUMPDEST
00000dde: POP
00000ddf: SLOAD
00000de0: PUSH1 0x02
00000de2: DUP3
00000de3: PUSH2 0x0100
00000de6: DUP2
00000de7: LT
00000de8: PUSH2 0x0ded
00000deb: JUMPI
00000dec: INVALID
00000ded: JUMPDEST
00000dee: ADD
00000def: PUSH1 0x00
00000df1: JUMPDEST
00000df2: POP
00000df3: SSTORE
00000df4: DUP1
00000df5: PUSH2 0x0102
00000df8: PUSH1 0x00
00000dfa: PUSH1 0x02
00000dfc: DUP4
00000dfd: PUSH2 0x0100
00000e00: DUP2
00000e01: LT
00000e02: PUSH2 0x0e07
00000e05: JUMPI
00000e06: INVALID
00000e07: JUMPDEST
00000e08: ADD
00000e09: PUSH1 0x00
00000e0b: JUMPDEST
00000e0c: POP
00000e0d: SLOAD
00000e0e: DUP2
00000e0f: MSTORE
00000e10: PUSH1 0x20
00000e12: ADD
00000e13: SWAP1
00000e14: DUP2
00000e15: MSTORE
00000e16: PUSH1 0x20
00000e18: ADD
00000e19: PUSH1 0x00
00000e1b: KECCAK256
00000e1c: DUP2
00000e1d: SWAP1
00000e1e: SSTORE
00000e1f: POP
00000e20: PUSH1 0x00
00000e22: PUSH1 0x02
00000e24: PUSH1 0x01
00000e26: SLOAD
00000e27: PUSH2 0x0100
00000e2a: DUP2
00000e2b: LT
00000e2c: ISZERO
00000e2d: ISZERO
00000e2e: PUSH2 0x0e33
00000e31: JUMPI
00000e32: INVALID
00000e33: JUMPDEST
00000e34: ADD
00000e35: PUSH1 0x00
00000e37: JUMPDEST
00000e38: POP
00000e39: SSTORE
00000e3a: JUMPDEST
00000e3b: PUSH2 0x0d0b
00000e3e: JUMP
00000e3f: JUMPDEST
00000e40: JUMPDEST
00000e41: POP
00000e42: JUMP
00000e43: JUMPDEST
00000e44: PUSH2 0x0104
00000e47: SLOAD
00000e48: PUSH1 0x00
00000e4a: JUMPDEST
00000e4b: DUP2
00000e4c: DUP2
00000e4d: LT
00000e4e: ISZERO
00000e4f: PUSH2 0x0ec5
00000e52: JUMPI
00000e53: PUSH2 0x0104
00000e56: DUP1
00000e57: SLOAD
00000e58: DUP3
00000e59: SWAP1
00000e5a: DUP2
00000e5b: LT
00000e5c: PUSH2 0x0e61
00000e5f: JUMPI
00000e60: INVALID
00000e61: JUMPDEST
00000e62: SWAP1
00000e63: PUSH1 0x00
00000e65: MSTORE
00000e66: PUSH1 0x20
00000e68: PUSH1 0x00
00000e6a: KECCAK256
00000e6b: SWAP1
00000e6c: ADD
00000e6d: PUSH1 0x00
00000e6f: JUMPDEST
00000e70: POP
00000e71: SLOAD
00000e72: ISZERO
00000e73: PUSH2 0x0ebc
00000e76: JUMPI
00000e77: PUSH2 0x0103
00000e7a: PUSH1 0x00
00000e7c: PUSH2 0x0104
00000e7f: DUP4
00000e80: DUP2
00000e81: SLOAD
00000e82: DUP2
00000e83: LT
00000e84: ISZERO
00000e85: ISZERO
00000e86: PUSH2 0x0e8b
00000e89: JUMPI
00000e8a: INVALID
00000e8b: JUMPDEST
00000e8c: SWAP1
00000e8d: PUSH1 0x00
00000e8f: MSTORE
00000e90: PUSH1 0x20
00000e92: PUSH1 0x00
00000e94: KECCAK256
00000e95: SWAP1
00000e96: ADD
00000e97: PUSH1 0x00
00000e99: JUMPDEST
00000e9a: POP
00000e9b: SLOAD
00000e9c: DUP2
00000e9d: MSTORE
00000e9e: PUSH1 0x20
00000ea0: DUP2
00000ea1: ADD
00000ea2: SWAP2
00000ea3: SWAP1
00000ea4: SWAP2
00000ea5: MSTORE
00000ea6: PUSH1 0x40
00000ea8: ADD
00000ea9: PUSH1 0x00
00000eab: SWAP1
00000eac: DUP2
00000ead: KECCAK256
00000eae: DUP2
00000eaf: DUP2
00000eb0: SSTORE
00000eb1: PUSH1 0x01
00000eb3: DUP2
00000eb4: ADD
00000eb5: DUP3
00000eb6: SWAP1
00000eb7: SSTORE
00000eb8: PUSH1 0x02
00000eba: ADD
00000ebb: SSTORE
00000ebc: JUMPDEST
00000ebd: JUMPDEST
00000ebe: PUSH1 0x01
00000ec0: ADD
00000ec1: PUSH2 0x0e4a
00000ec4: JUMP
00000ec5: JUMPDEST
00000ec6: PUSH2 0x04fa
00000ec9: PUSH2 0x0104
00000ecc: PUSH1 0x00
00000ece: PUSH2 0x0fc8
00000ed1: JUMP
00000ed2: JUMPDEST
00000ed3: JUMPDEST
00000ed4: POP
00000ed5: POP
00000ed6: JUMP
00000ed7: JUMPDEST
00000ed8: POP
00000ed9: DUP1
00000eda: SLOAD
00000edb: PUSH1 0x01
00000edd: DUP2
00000ede: PUSH1 0x01
00000ee0: AND
00000ee1: ISZERO
00000ee2: PUSH2 0x0100
00000ee5: MUL
00000ee6: SUB
00000ee7: AND
00000ee8: PUSH1 0x02
00000eea: SWAP1
00000eeb: DIV
00000eec: PUSH1 0x00
00000eee: DUP3
00000eef: SSTORE
00000ef0: DUP1
00000ef1: PUSH1 0x1f
00000ef3: LT
00000ef4: PUSH2 0x0efd
00000ef7: JUMPI
00000ef8: POP
00000ef9: PUSH2 0x0e3f
00000efc: JUMP
00000efd: JUMPDEST
00000efe: PUSH1 0x1f
00000f00: ADD
00000f01: PUSH1 0x20
00000f03: SWAP1
00000f04: DIV
00000f05: SWAP1
00000f06: PUSH1 0x00
00000f08: MSTORE
00000f09: PUSH1 0x20
00000f0b: PUSH1 0x00
00000f0d: KECCAK256
00000f0e: SWAP1
00000f0f: DUP2
00000f10: ADD
00000f11: SWAP1
00000f12: PUSH2 0x0e3f
00000f15: SWAP2
00000f16: SWAP1
00000f17: PUSH2 0x0fea
00000f1a: JUMP
00000f1b: JUMPDEST
00000f1c: JUMPDEST
00000f1d: POP
00000f1e: JUMP
00000f1f: JUMPDEST
00000f20: DUP3
00000f21: DUP1
00000f22: SLOAD
00000f23: PUSH1 0x01
00000f25: DUP2
00000f26: PUSH1 0x01
00000f28: AND
00000f29: ISZERO
00000f2a: PUSH2 0x0100
00000f2d: MUL
00000f2e: SUB
00000f2f: AND
00000f30: PUSH1 0x02
00000f32: SWAP1
00000f33: DIV
00000f34: SWAP1
00000f35: PUSH1 0x00
00000f37: MSTORE
00000f38: PUSH1 0x20
00000f3a: PUSH1 0x00
00000f3c: KECCAK256
00000f3d: SWAP1
00000f3e: PUSH1 0x1f
00000f40: ADD
00000f41: PUSH1 0x20
00000f43: SWAP1
00000f44: DIV
00000f45: DUP2
00000f46: ADD
00000f47: SWAP3
00000f48: DUP3
00000f49: PUSH1 0x1f
00000f4b: LT
00000f4c: PUSH2 0x0f60
00000f4f: JUMPI
00000f50: DUP3
00000f51: DUP1
00000f52: ADD
00000f53: PUSH1 0xff
00000f55: NOT
00000f56: DUP3
00000f57: CALLDATALOAD
00000f58: AND
00000f59: OR
00000f5a: DUP6
00000f5b: SSTORE
00000f5c: PUSH2 0x0f8d
00000f5f: JUMP
00000f60: JUMPDEST
00000f61: DUP3
00000f62: DUP1
00000f63: ADD
00000f64: PUSH1 0x01
00000f66: ADD
00000f67: DUP6
00000f68: SSTORE
00000f69: DUP3
00000f6a: ISZERO
00000f6b: PUSH2 0x0f8d
00000f6e: JUMPI
00000f6f: SWAP2
00000f70: DUP3
00000f71: ADD
00000f72: JUMPDEST
00000f73: DUP3
00000f74: DUP2
00000f75: GT
00000f76: ISZERO
00000f77: PUSH2 0x0f8d
00000f7a: JUMPI
00000f7b: DUP3
00000f7c: CALLDATALOAD
00000f7d: DUP3
00000f7e: SSTORE
00000f7f: SWAP2
00000f80: PUSH1 0x20
00000f82: ADD
00000f83: SWAP2
00000f84: SWAP1
00000f85: PUSH1 0x01
00000f87: ADD
00000f88: SWAP1
00000f89: PUSH2 0x0f72
00000f8c: JUMP
00000f8d: JUMPDEST
00000f8e: JUMPDEST
00000f8f: POP
00000f90: PUSH2 0x0f9a
00000f93: SWAP3
00000f94: SWAP2
00000f95: POP
00000f96: PUSH2 0x0fea
00000f99: JUMP
00000f9a: JUMPDEST
00000f9b: POP
00000f9c: SWAP1
00000f9d: JUMP
00000f9e: JUMPDEST
00000f9f: DUP2
00000fa0: SLOAD
00000fa1: DUP2
00000fa2: DUP4
00000fa3: SSTORE
00000fa4: DUP2
00000fa5: DUP2
00000fa6: ISZERO
00000fa7: GT
00000fa8: PUSH2 0x03d8
00000fab: JUMPI
00000fac: PUSH1 0x00
00000fae: DUP4
00000faf: DUP2
00000fb0: MSTORE
00000fb1: PUSH1 0x20
00000fb3: SWAP1
00000fb4: KECCAK256
00000fb5: PUSH2 0x03d8
00000fb8: SWAP2
00000fb9: DUP2
00000fba: ADD
00000fbb: SWAP1
00000fbc: DUP4
00000fbd: ADD
00000fbe: PUSH2 0x0fea
00000fc1: JUMP
00000fc2: JUMPDEST
00000fc3: JUMPDEST
00000fc4: POP
00000fc5: POP
00000fc6: POP
00000fc7: JUMP
00000fc8: JUMPDEST
00000fc9: POP
00000fca: DUP1
00000fcb: SLOAD
00000fcc: PUSH1 0x00
00000fce: DUP3
00000fcf: SSTORE
00000fd0: SWAP1
00000fd1: PUSH1 0x00
00000fd3: MSTORE
00000fd4: PUSH1 0x20
00000fd6: PUSH1 0x00
00000fd8: KECCAK256
00000fd9: SWAP1
00000fda: DUP2
00000fdb: ADD
00000fdc: SWAP1
00000fdd: PUSH2 0x0e3f
00000fe0: SWAP2
00000fe1: SWAP1
00000fe2: PUSH2 0x0fea
00000fe5: JUMP
00000fe6: JUMPDEST
00000fe7: JUMPDEST
00000fe8: POP
00000fe9: JUMP
00000fea: JUMPDEST
00000feb: PUSH2 0x1008
00000fee: SWAP2
00000fef: SWAP1
00000ff0: JUMPDEST
00000ff1: DUP1
00000ff2: DUP3
00000ff3: GT
00000ff4: ISZERO
00000ff5: PUSH2 0x0f9a
00000ff8: JUMPI
00000ff9: PUSH1 0x00
00000ffb: DUP2
00000ffc: SSTORE
00000ffd: PUSH1 0x01
00000fff: ADD
00001000: PUSH2 0x0ff0
00001003: JUMP
00001004: JUMPDEST
00001005: POP
00001006: SWAP1
00001007: JUMP
00001008: JUMPDEST
00001009: SWAP1
0000100a: JUMP
0000100b: JUMPDEST
0000100c: PUSH2 0x1008
0000100f: SWAP2
00001010: SWAP1
00001011: JUMPDEST
00001012: DUP1
00001013: DUP3
00001014: GT
00001015: ISZERO
00001016: PUSH2 0x0f9a
00001019: JUMPI
0000101a: PUSH1 0x00
0000101c: DUP2
0000101d: SSTORE
0000101e: PUSH1 0x01
00001020: ADD
00001021: PUSH2 0x0ff0
00001024: JUMP
00001025: JUMPDEST
00001026: POP
00001027: SWAP1
00001028: JUMP
00001029: JUMPDEST
0000102a: SWAP1
0000102b: JUMP
0000102c: STOP
0000102d: LOG1
0000102e: PUSH6 0x627a7a723058
00001035: KECCAK256
00001036: UNKNOWN(0xDC)
00001037: UNKNOWN(0xB3)
00001038: JUMPI
00001039: CALLVALUE
0000103a: PUSH4 0xd41a0ca3
0000103f: PUSH5 0x634c48e68c
00001045: UNKNOWN(0xAC)
00001046: UNKNOWN(0xD9)
00001047: UNKNOWN(0xFB)
00001048: UNKNOWN(0xCA)
00001049: CALLVALUE
0000104a: UNKNOWN(0xD9)
0000104b: ADD
0000104c: DUP7
0000104d: CALLDATASIZE
0000104e: UNKNOWN(0xAF)
0000104f: JUMPI
00001050: PUSH30

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high reentrancy slither Reentrancy in Wallet.confirm(bytes32) (contracts/Contract.sol#301-308): 85 no
view
evidence_json
{
    "impact": "High",
    "detector": "reentrancy-eth",
    "elements": [
        {
            "name": "confirm",
            "type": "function",
            "source_mapping": {
                "lines": [
                    301,
                    302,
                    303,
                    304,
                    305,
                    306,
                    307,
                    308
                ],
                "start": 11239,
                "length": 335,
                "ending_column": 33,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 8,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "Wallet",
                    "type": "contract",
                    "source_mapping": {
                        "lines": [
                            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
                        ],
                        "start": 9582,
                        "length": 2340,
                        "ending_column": 2,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 6,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    }
                },
                "signature": "confirm(bytes32)"
            }
        },
        {
            "name": "x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    304,
                    305,
                    306
                ],
                "start": 11349,
                "length": 63,
                "ending_column": 51,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 1,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "confirm",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            301,
                            302,
                            303,
                            304,
                            305,
                            306,
                            307,
                            308
                        ],
                        "start": 11239,
                        "length": 335,
                        "ending_column": 33,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 8,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Wallet",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    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
                                ],
                                "start": 9582,
                                "length": 2340,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 6,
                                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "confirm(bytes32)"
                    }
                }
            }
        },
        {
            "name": "delete m_txs[_h]",
            "type": "node",
            "source_mapping": {
                "lines": [
                    307
                ],
                "start": 11516,
                "length": 16,
                "ending_column": 64,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 48,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "variable_name": "m_txs",
                "underlying_type": "variables_written"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "confirm",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            301,
                            302,
                            303,
                            304,
                            305,
                            306,
                            307,
                            308
                        ],
                        "start": 11239,
                        "length": 335,
                        "ending_column": 33,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 8,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Wallet",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    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
                                ],
                                "start": 9582,
                                "length": 2340,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 6,
                                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "confirm(bytes32)"
                    }
                }
            }
        }
    ],
    "locations": [
        {
            "file": "contracts/Contract.sol",
            "name": "confirm",
            "type": "function",
            "lines": [
                301,
                302,
                303,
                304,
                305,
                306,
                307,
                308
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data)",
            "type": "node",
            "lines": [
                304,
                305,
                306
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "delete m_txs[_h]",
            "type": "node",
            "lines": [
                307
            ]
        }
    ],
    "description": "Reentrancy in Wallet.confirm(bytes32) (contracts/Contract.sol#301-308):\n\tExternal calls:\n\t- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)\n\tState variables written after the call(s):\n\t- delete m_txs[_h] (contracts/Contract.sol#307)\n\tWallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:\n\t- Wallet.clearPending() (contracts/Contract.sol#309-312)\n\t- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)\n\t- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)"
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x4bf04d5dd053076cd7d5bab38fab1eab4e57d8201cba90ef991b4b333cb493a4
call_targets: 0x3792d288d9f0993971f23e4758acb719f285f6ef
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x4bf04d5dd053076cd7d5bab38fab1eab4e57d8201cba90ef991b4b333cb493a4",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x3792d288d9f0993971f23e4758acb719f285f6ef"
    ],
    "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": "0x173825d9",
            "selector": "0x173825d9",
            "calldata_variants": [
                "0x173825d9",
                "0x173825d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2f54bf6e",
            "selector": "0x2f54bf6e",
            "calldata_variants": [
                "0x2f54bf6e",
                "0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4123cb6b",
            "selector": "0x4123cb6b",
            "calldata_variants": [
                "0x4123cb6b",
                "0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7065cb48",
            "selector": "0x7065cb48",
            "calldata_variants": [
                "0x7065cb48",
                "0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x746c9171",
            "selector": "0x746c9171",
            "calldata_variants": [
                "0x746c9171",
                "0x746c91710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x797af627",
            "selector": "0x797af627",
            "calldata_variants": [
                "0x797af627",
                "0x797af6270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb61d27f6",
            "selector": "0xb61d27f6",
            "calldata_variants": [
                "0xb61d27f6",
                "0xb61d27f60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb75c7dc6",
            "selector": "0xb75c7dc6",
            "calldata_variants": [
                "0xb75c7dc6",
                "0xb75c7dc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1497,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [],
    "untrusted_call_count": 1
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x4bf04d5dd053076cd7d5bab38fab1eab4e57d8201cba90ef991b4b333cb493a4
call_targets: 0x3792d288d9f0993971f23e4758acb719f285f6ef
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x4bf04d5dd053076cd7d5bab38fab1eab4e57d8201cba90ef991b4b333cb493a4",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x3792d288d9f0993971f23e4758acb719f285f6ef"
    ],
    "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": "0x173825d9",
            "selector": "0x173825d9",
            "calldata_variants": [
                "0x173825d9",
                "0x173825d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2f54bf6e",
            "selector": "0x2f54bf6e",
            "calldata_variants": [
                "0x2f54bf6e",
                "0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4123cb6b",
            "selector": "0x4123cb6b",
            "calldata_variants": [
                "0x4123cb6b",
                "0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7065cb48",
            "selector": "0x7065cb48",
            "calldata_variants": [
                "0x7065cb48",
                "0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x746c9171",
            "selector": "0x746c9171",
            "calldata_variants": [
                "0x746c9171",
                "0x746c91710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x797af627",
            "selector": "0x797af627",
            "calldata_variants": [
                "0x797af627",
                "0x797af6270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb61d27f6",
            "selector": "0xb61d27f6",
            "calldata_variants": [
                "0xb61d27f6",
                "0xb61d27f60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb75c7dc6",
            "selector": "0xb75c7dc6",
            "calldata_variants": [
                "0xb75c7dc6",
                "0xb75c7dc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1497,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}
high reentrancy slither Reentrancy in Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296): 85 no
view
evidence_json
{
    "impact": "High",
    "detector": "reentrancy-eth",
    "elements": [
        {
            "name": "execute",
            "type": "function",
            "source_mapping": {
                "lines": [
                    292,
                    293,
                    294,
                    295,
                    296
                ],
                "start": 10631,
                "length": 420,
                "ending_column": 28,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 5,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "Wallet",
                    "type": "contract",
                    "source_mapping": {
                        "lines": [
                            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
                        ],
                        "start": 9582,
                        "length": 2340,
                        "ending_column": 2,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 6,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    }
                },
                "signature": "execute(address,uint256,bytes)"
            }
        },
        {
            "name": "! confirm(_r) && m_txs[_r].to == 0",
            "type": "node",
            "source_mapping": {
                "lines": [
                    293,
                    294
                ],
                "start": 10825,
                "length": 33,
                "ending_column": 31,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 96,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "execute",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            292,
                            293,
                            294,
                            295,
                            296
                        ],
                        "start": 10631,
                        "length": 420,
                        "ending_column": 28,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Wallet",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    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
                                ],
                                "start": 9582,
                                "length": 2340,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 6,
                                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "execute(address,uint256,bytes)"
                    }
                }
            }
        },
        {
            "name": "x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    304,
                    305,
                    306
                ],
                "start": 11349,
                "length": 63,
                "ending_column": 51,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 1,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls_sending_eth"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "confirm",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            301,
                            302,
                            303,
                            304,
                            305,
                            306,
                            307,
                            308
                        ],
                        "start": 11239,
                        "length": 335,
                        "ending_column": 33,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 8,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Wallet",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    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
                                ],
                                "start": 9582,
                                "length": 2340,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 6,
                                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "confirm(bytes32)"
                    }
                }
            }
        },
        {
            "name": "m_txs[_r].to = _to",
            "type": "node",
            "source_mapping": {
                "lines": [
                    294
                ],
                "start": 10874,
                "length": 18,
                "ending_column": 65,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 47,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "variable_name": "m_txs",
                "underlying_type": "variables_written"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "execute",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            292,
                            293,
                            294,
                            295,
                            296
                        ],
                        "start": 10631,
                        "length": 420,
                        "ending_column": 28,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Wallet",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    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
                                ],
                                "start": 9582,
                                "length": 2340,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 6,
                                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "execute(address,uint256,bytes)"
                    }
                }
            }
        },
        {
            "name": "m_txs[_r].value = _value",
            "type": "node",
            "source_mapping": {
                "lines": [
                    294,
                    295
                ],
                "start": 10906,
                "length": 24,
                "ending_column": 10,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 79,
                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "variable_name": "m_txs",
                "underlying_type": "variables_written"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "execute",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            292,
                            293,
                            294,
                            295,
                            296
                        ],
                        "start": 10631,
                        "length": 420,
                        "ending_column": 28,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "Wallet",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    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
                                ],
                                "start": 9582,
                                "length": 2340,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 6,
                                "filename_absolute": "/tmp/slither-2i60cq9j/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "execute(address,uint256,bytes)"
                    }
                }
            }
        }
    ],
    "locations": [
        {
            "file": "contracts/Contract.sol",
            "name": "execute",
            "type": "function",
            "lines": [
                292,
                293,
                294,
                295,
                296
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "! confirm(_r) && m_txs[_r].to == 0",
            "type": "node",
            "lines": [
                293,
                294
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data)",
            "type": "node",
            "lines": [
                304,
                305,
                306
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "m_txs[_r].to = _to",
            "type": "node",
            "lines": [
                294
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "m_txs[_r].value = _value",
            "type": "node",
            "lines": [
                294,
                295
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "m_txs[_r].data = _data",
            "type": "node",
            "lines": [
                295
            ]
        }
    ],
    "description": "Reentrancy in Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296):\n\tExternal calls:\n\t- ! confirm(_r) && m_txs[_r].to == 0 (contracts/Contract.sol#293-294)\n\t\t- x = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data) (contracts/Contract.sol#304-306)\n\tState variables written after the call(s):\n\t- m_txs[_r].to = _to (contracts/Contract.sol#294)\n\tWallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:\n\t- Wallet.clearPending() (contracts/Contract.sol#309-312)\n\t- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)\n\t- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)\n\t- m_txs[_r].value = _value (contracts/Contract.sol#294-295)\n\tWallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:\n\t- Wallet.clearPending() (contracts/Contract.sol#309-312)\n\t- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)\n\t- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)\n\t- m_txs[_r].data = _data (contracts/Contract.sol#295)\n\tWallet.m_txs (contracts/Contract.sol#314-317) can be used in cross function reentrancies:\n\t- Wallet.clearPending() (contracts/Contract.sol#309-312)\n\t- Wallet.confirm(bytes32) (contracts/Contract.sol#301-308)\n\t- Wallet.execute(address,uint256,bytes) (contracts/Contract.sol#292-296)"
}
low other codex Unchecked low-level call result drops failed transaction 65 no
view
evidence_json
{
    "evidence": "`confirm` performs a low-level call, ignores its return value, emits success, and deletes the transaction unconditionally.",
    "locations": [
        "contracts/Contract.sol:308",
        "contracts/Contract.sol:310",
        "contracts/Contract.sol:311",
        "contracts/Contract.sol:312"
    ],
    "recommendation": "Check the return value of the low-level call and only delete the transaction (and emit success) on success. Otherwise keep the tx pending or emit a failure event and return false. Example: `bool ok = m_txs[_h].to.call.value(...)(...); if (!ok) return false;`.",
    "exploit_scenario": "If a queued transaction\u2019s target contract reverts (or runs out of gas), `confirm` still emits `MultiTransact` and deletes the transaction. Owners may believe the transfer/execution succeeded even though no external effect occurred, and the failed operation cannot be retried without re-creating it."
}