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

Analysis Run

019c0ea9-08cc-7154-a38a-1d2d33f60a5c

failed
Chain ID
1
Address
Block Number
Created
Fri, Jan 30, 2026 11:28 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
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
41914 artifact.fetch complete 1 / 3 2 months ago
41915 proxy.resolve complete 1 / 3 2 months ago
41916 tool.cast_disasm complete 1 / 3 2 months ago
41917 analysis.bundle complete 1 / 3 2 months ago
41918 capability.graph complete 1 / 3 2 months ago
41919 detector.run complete 1 / 3 2 months ago
41920 validation.fork complete 1 / 3 2 months ago
42359 report.consolidate complete 1 / 6 2 months ago
42360 tool.slither failed 2 / 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
failed slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-a1v7nk13) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-a1v7nk13) 'forge' returned non-zero exit code 1 2026-01-30T16:36:07.698970Z ERROR foundry_compilers_artifacts_solc::sources: error="/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol": No such file or directory (os error 2) stdout: 2026-01-30T16:36:07.699863Z ERROR foundry_compilers_artifacts_solc::sources: error="/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/security/Pausable.sol": No such file or directory (os error 2) stdout: Unable to resolve imports: stdout: "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol" in "/tmp/slither-a1v7nk13/contracts/ERC20DefaultVault.sol" stdout: "@openzeppelin/contracts/security/Pausable.sol" in "/tmp/slither-a1v7nk13/contracts/HydraBridge.sol" stdout: with remappings: stdout: openzeppelin-contracts/=/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/ stdout: @openzeppelin/contracts/=/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/ Error: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol: No solc version exists that matches the version requirement: ^0.8.20 stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/access/AccessControl.sol: No solc version exists that matches the version requirement: ^0.8.20 stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/access/AccessControl.sol: No solc version exists that matches the version requirement: ^0.8.20 stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol: No solc version exists that matches the version requirement: ^0.8.20 Traceback (most recent call last): File "/var/www/tripwire/.venv/bin/slither", line 10, in <module> sys.exit(main()) ~~~~^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main main_impl(all_detector_classes=detectors, all_printer_classes=printers) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all compilations = compile_all(target, **vars(args)) File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all compilations.append(CryticCompile(target, **kwargs)) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__ self._compile(**kwargs) ~~~~~~~~~~~~~^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile self._platform.compile(self, **kwargs) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile hardhat_like_parsing( ~~~~~~~~~~~~~~~~~~~~^ crytic_compile, str(self._target), build_directory, str(self._project_root) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing raise InvalidCompilation(txt) crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command? /tmp/slither-a1v7nk13/out/build-info is not a directory.
Attempts
2 / 2
Findings
0
Solc
View stderr
Traceback (most recent call last):
  File "/var/www/tripwire/worker/worker.py", line 198, in main
    payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
  File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
    return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
    stdout_text, stderr_text, result_json = _run_slither(
                                            ~~~~~~~~~~~~^
        workspace,
        ^^^^^^^^^^
    ...<4 lines>...
        target_path=target_path,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
    raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-a1v7nk13)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-a1v7nk13)
'forge' returned non-zero exit code 1
2026-01-30T16:36:07.698970Z ERROR foundry_compilers_artifacts_solc::sources: error="/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol": No such file or directory (os error 2)
stdout: 2026-01-30T16:36:07.699863Z ERROR foundry_compilers_artifacts_solc::sources: error="/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/security/Pausable.sol": No such file or directory (os error 2)
stdout: Unable to resolve imports:
stdout:       "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol" in "/tmp/slither-a1v7nk13/contracts/ERC20DefaultVault.sol"
stdout:       "@openzeppelin/contracts/security/Pausable.sol" in "/tmp/slither-a1v7nk13/contracts/HydraBridge.sol"
stdout: with remappings:
stdout:       openzeppelin-contracts/=/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/
stdout:       @openzeppelin/contracts/=/tmp/slither-a1v7nk13/lib/openzeppelin-contracts/contracts/
Error: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol: No solc version exists that matches the version requirement: ^0.8.20
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/access/AccessControl.sol: No solc version exists that matches the version requirement: ^0.8.20
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/access/AccessControl.sol: No solc version exists that matches the version requirement: ^0.8.20
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol: No solc version exists that matches the version requirement: ^0.8.20
Traceback (most recent call last):
  File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
    compilations = compile_all(target, **vars(args))
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
    compilations.append(CryticCompile(target, **kwargs))
                        ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
    self._compile(**kwargs)
    ~~~~~~~~~~~~~^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
    self._platform.compile(self, **kwargs)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
    hardhat_like_parsing(
    ~~~~~~~~~~~~~~~~~~~~^
        crytic_compile, str(self._target), build_directory, str(self._project_root)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
    raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-a1v7nk13/out/build-info is not a directory.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.
View stdout
{"no_findings":false,"summary":"Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.","findings":[{"severity":"high","category":"auth","title":"Proposal hash omits assetId, enabling cross-asset replay within the same vault","exploit_scenario":"If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain.","recommendation":"Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.","evidence":"`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).","locations":["contracts/HydraBridge.sol:197","contracts/HydraBridge.sol:231"]},{"severity":"low","category":"access_control","title":"Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers","exploit_scenario":"If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone.","recommendation":"Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.","evidence":"Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.","locations":["contracts/HydraBridge.sol:72","contracts/HydraBridge.sol:33","contracts/HydraBridge.sol:216","contracts/HydraBridge.sol:269"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-0h7lbdw1
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0f3f-3529-7ba0-8d49-755b0934b153
--------
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
exec
/bin/bash -lc ls in /tmp/codex-0h7lbdw1 succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
@openzeppelin
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-0h7lbdw1 succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/BaseVault.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

import "./interfaces/IVault.sol";

abstract contract BaseVault is IVault {
    address public bridge;

    mapping(bytes32 => address) public assetIdToTokenAddress;
    mapping(address => bytes32) public tokenAddressToAssetId;
    mapping(address => bool) public tokenAllowlist;
    mapping(address => bool) public tokenBurnList;

    modifier onlyBridge() {
exec
/bin/bash -lc 'nl -ba contracts/HydraBridge.sol' in /tmp/codex-0h7lbdw1 succeeded in 6ms:
     1	// SPDX-License-Identifier: MIT
     2	pragma solidity 0.8.6;
     3	
     4	import "@openzeppelin/contracts/security/Pausable.sol";
     5	import "./interfaces/IVault.sol";
     6	import "./HydraAccessControl.sol";
     7	
     8	contract HydraBridge is Pausable, HydraAccessControl {
     9	    enum ProposalStatus {
    10	        Inactive,
    11	        Active,
    12	        Confirmed,
    13	        Completed,
    14	        Cancelled
    15	    }
    16	
    17	    bytes32 public constant FEE_ADMIN = keccak256("FEE_ADMIN");
    18	    bytes32 public constant OBSERVER_ROLE = keccak256("OBSERVER_ROLE");
    19	    bytes32 public constant DEFENDER = keccak256("DEFENDER");
    20	
exec
/bin/bash -lc 'nl -ba contracts/HydraAccessControl.sol' in /tmp/codex-0h7lbdw1 succeeded in 5ms:
     1	// SPDX-License-Identifier: MIT
     2	pragma solidity 0.8.6;
     3	
     4	import "@openzeppelin/contracts/access/AccessControl.sol";
     5	import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
     6	
     7	interface IAccessControlEnumerable {
     8	    function getRoleMember(bytes32 role, uint256 index) external view returns (address);
     9	
    10	    function getRoleMemberCount(bytes32 role) external view returns (uint256);
    11	}
    12	
    13	abstract contract HydraAccessControl is AccessControl, IAccessControlEnumerable {
    14	    using EnumerableSet for EnumerableSet.AddressSet;
    15	
    16	    mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;
    17	
    18	    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
    19	        return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);
    20	    }
codex
{"no_findings":false,"summary":"Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.","findings":[{"severity":"high","category":"auth","title":"Proposal hash omits assetId, enabling cross-asset replay within the same vault","exploit_scenario":"If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain.","recommendation":"Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.","evidence":"`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).","locations":["contracts/HydraBridge.sol:197","contracts/HydraBridge.sol:231"]},{"severity":"low","category":"access_control","title":"Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers","exploit_scenario":"If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone.","recommendation":"Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.","evidence":"Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.","locations":["contracts/HydraBridge.sol:72","contracts/HydraBridge.sol:33","contracts/HydraBridge.sol:216","contracts/HydraBridge.sol:269"]}]}
tokens used
18,339
Metadata
{
    "codex": {
        "ran_at": "2026-01-30T14:14:44.061301+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 23,
        "import_count": 27,
        "first_party_contracts_count": 7
    },
    "summary": "Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.",
    "raw_final": {
        "summary": "Found a high-impact cross-asset replay risk in proposal hashing and a low-severity observer bitmap truncation edge case.",
        "findings": [
            {
                "title": "Proposal hash omits assetId, enabling cross-asset replay within the same vault",
                "category": "auth",
                "evidence": "`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).",
                "severity": "high",
                "locations": [
                    "contracts/HydraBridge.sol:197",
                    "contracts/HydraBridge.sol:231"
                ],
                "recommendation": "Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.",
                "exploit_scenario": "If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain."
            },
            {
                "title": "Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers",
                "category": "access_control",
                "evidence": "Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.",
                "severity": "low",
                "locations": [
                    "contracts/HydraBridge.sol:72",
                    "contracts/HydraBridge.sol:33",
                    "contracts/HydraBridge.sol:216",
                    "contracts/HydraBridge.sol:269"
                ],
                "recommendation": "Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.",
                "exploit_scenario": "If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
2
Total opcodes
2912
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00ca
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8135369a
00000019: GT
0000001a: PUSH2 0x0079
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xe78cea92
00000024: GT
00000025: PUSH2 0x0056
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xe78cea92
0000002f: EQ
00000030: PUSH2 0x027f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe9ae5c53
0000003a: EQ
0000003b: PUSH2 0x029f
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xece2a625
00000045: EQ
00000046: PUSH2 0x02bf
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xed1e2563
00000050: EQ
00000051: PUSH2 0x02ef
00000054: JUMPI
00000055: STOP
00000056: JUMPDEST
00000057: DUP1
00000058: PUSH4 0x8135369a
0000005d: EQ
0000005e: PUSH2 0x0204
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xad5c4648
00000068: EQ
00000069: PUSH2 0x0244
0000006c: JUMPI
0000006d: DUP1
0000006e: PUSH4 0xd01616c0
00000073: EQ
00000074: PUSH2 0x026c
00000077: JUMPI
00000078: STOP
00000079: JUMPDEST
0000007a: DUP1
0000007b: PUSH4 0x213ce7af
00000080: GT
00000081: PUSH2 0x00a7
00000084: JUMPI
00000085: DUP1
00000086: PUSH4 0x213ce7af
0000008b: EQ
0000008c: PUSH2 0x014e
0000008f: JUMPI
00000090: DUP1
00000091: PUSH4 0x4c59581f
00000096: EQ
00000097: PUSH2 0x019c
0000009a: JUMPI
0000009b: DUP1
0000009c: PUSH4 0x804ddade
000000a1: EQ
000000a2: PUSH2 0x01c9
000000a5: JUMPI
000000a6: STOP
000000a7: JUMPDEST
000000a8: DUP1
000000a9: PUSH4 0x03a00879
000000ae: EQ
000000af: PUSH2 0x00d3
000000b2: JUMPI
000000b3: DUP1
000000b4: PUSH4 0x07b7ed99
000000b9: EQ
000000ba: PUSH2 0x010e
000000bd: JUMPI
000000be: DUP1
000000bf: PUSH4 0x1610c6a6
000000c4: EQ
000000c5: PUSH2 0x012e
000000c8: JUMPI
000000c9: STOP
000000ca: JUMPDEST
000000cb: CALLDATASIZE
000000cc: PUSH2 0x00d1
000000cf: JUMPI
000000d0: STOP
000000d1: JUMPDEST
000000d2: STOP
000000d3: JUMPDEST
000000d4: CALLVALUE
000000d5: DUP1
000000d6: ISZERO
000000d7: PUSH2 0x00df
000000da: JUMPI
000000db: PUSH1 0x00
000000dd: DUP1
000000de: REVERT
000000df: JUMPDEST
000000e0: POP
000000e1: PUSH2 0x00f3
000000e4: PUSH2 0x00ee
000000e7: CALLDATASIZE
000000e8: PUSH1 0x04
000000ea: PUSH2 0x0f64
000000ed: JUMP
000000ee: JUMPDEST
000000ef: PUSH2 0x030f
000000f2: JUMP
000000f3: JUMPDEST
000000f4: PUSH1 0x40
000000f6: MLOAD
000000f7: PUSH2 0x0105
000000fa: SWAP7
000000fb: SWAP6
000000fc: SWAP5
000000fd: SWAP4
000000fe: SWAP3
000000ff: SWAP2
00000100: SWAP1
00000101: PUSH2 0x0fdb
00000104: JUMP
00000105: JUMPDEST
00000106: PUSH1 0x40
00000108: MLOAD
00000109: DUP1
0000010a: SWAP2
0000010b: SUB
0000010c: SWAP1
0000010d: RETURN
0000010e: JUMPDEST
0000010f: CALLVALUE
00000110: DUP1
00000111: ISZERO
00000112: PUSH2 0x011a
00000115: JUMPI
00000116: PUSH1 0x00
00000118: DUP1
00000119: REVERT
0000011a: JUMPDEST
0000011b: POP
0000011c: PUSH2 0x00d1
0000011f: PUSH2 0x0129
00000122: CALLDATASIZE
00000123: PUSH1 0x04
00000125: PUSH2 0x0e10
00000128: JUMP
00000129: JUMPDEST
0000012a: PUSH2 0x03f0
0000012d: JUMP
0000012e: JUMPDEST
0000012f: CALLVALUE
00000130: DUP1
00000131: ISZERO
00000132: PUSH2 0x013a
00000135: JUMPI
00000136: PUSH1 0x00
00000138: DUP1
00000139: REVERT
0000013a: JUMPDEST
0000013b: POP
0000013c: PUSH2 0x00d1
0000013f: PUSH2 0x0149
00000142: CALLDATASIZE
00000143: PUSH1 0x04
00000145: PUSH2 0x0e4b
00000148: JUMP
00000149: JUMPDEST
0000014a: PUSH2 0x0450
0000014d: JUMP
0000014e: JUMPDEST
0000014f: CALLVALUE
00000150: DUP1
00000151: ISZERO
00000152: PUSH2 0x015a
00000155: JUMPI
00000156: PUSH1 0x00
00000158: DUP1
00000159: REVERT
0000015a: JUMPDEST
0000015b: POP
0000015c: PUSH2 0x0184
0000015f: PUSH2 0x0169
00000162: CALLDATASIZE
00000163: PUSH1 0x04
00000165: PUSH2 0x0e32
00000168: JUMP
00000169: JUMPDEST
0000016a: PUSH1 0x01
0000016c: PUSH1 0x20
0000016e: MSTORE
0000016f: PUSH1 0x00
00000171: SWAP1
00000172: DUP2
00000173: MSTORE
00000174: PUSH1 0x40
00000176: SWAP1
00000177: KECCAK256
00000178: SLOAD
00000179: PUSH1 0x01
0000017b: PUSH1 0x01
0000017d: PUSH1 0xa0
0000017f: SHL
00000180: SUB
00000181: AND
00000182: DUP2
00000183: JUMP
00000184: JUMPDEST
00000185: PUSH1 0x40
00000187: MLOAD
00000188: PUSH1 0x01
0000018a: PUSH1 0x01
0000018c: PUSH1 0xa0
0000018e: SHL
0000018f: SUB
00000190: SWAP1
00000191: SWAP2
00000192: AND
00000193: DUP2
00000194: MSTORE
00000195: PUSH1 0x20
00000197: ADD
00000198: PUSH2 0x0105
0000019b: JUMP
0000019c: JUMPDEST
0000019d: CALLVALUE
0000019e: DUP1
0000019f: ISZERO
000001a0: PUSH2 0x01a8
000001a3: JUMPI
000001a4: PUSH1 0x00
000001a6: DUP1
000001a7: REVERT
000001a8: JUMPDEST
000001a9: POP
000001aa: PUSH2 0x01bc
000001ad: PUSH2 0x01b7
000001b0: CALLDATASIZE
000001b1: PUSH1 0x04
000001b3: PUSH2 0x0f64
000001b6: JUMP
000001b7: JUMPDEST
000001b8: PUSH2 0x04fc
000001bb: JUMP
000001bc: JUMPDEST
000001bd: PUSH1 0x40
000001bf: MLOAD
000001c0: PUSH2 0x0105
000001c3: SWAP2
000001c4: SWAP1
000001c5: PUSH2 0x1021
000001c8: JUMP
000001c9: JUMPDEST
000001ca: CALLVALUE
000001cb: DUP1
000001cc: ISZERO
000001cd: PUSH2 0x01d5
000001d0: JUMPI
000001d1: PUSH1 0x00
000001d3: DUP1
000001d4: REVERT
000001d5: JUMPDEST
000001d6: POP
000001d7: PUSH2 0x01f6
000001da: PUSH2 0x01e4
000001dd: CALLDATASIZE
000001de: PUSH1 0x04
000001e0: PUSH2 0x0e10
000001e3: JUMP
000001e4: JUMPDEST
000001e5: PUSH1 0x02
000001e7: PUSH1 0x20
000001e9: MSTORE
000001ea: PUSH1 0x00
000001ec: SWAP1
000001ed: DUP2
000001ee: MSTORE
000001ef: PUSH1 0x40
000001f1: SWAP1
000001f2: KECCAK256
000001f3: SLOAD
000001f4: DUP2
000001f5: JUMP
000001f6: JUMPDEST
000001f7: PUSH1 0x40
000001f9: MLOAD
000001fa: SWAP1
000001fb: DUP2
000001fc: MSTORE
000001fd: PUSH1 0x20
000001ff: ADD
00000200: PUSH2 0x0105
00000203: JUMP
00000204: JUMPDEST
00000205: CALLVALUE
00000206: DUP1
00000207: ISZERO
00000208: PUSH2 0x0210
0000020b: JUMPI
0000020c: PUSH1 0x00
0000020e: DUP1
0000020f: REVERT
00000210: JUMPDEST
00000211: POP
00000212: PUSH2 0x0234
00000215: PUSH2 0x021f
00000218: CALLDATASIZE
00000219: PUSH1 0x04
0000021b: PUSH2 0x0e10
0000021e: JUMP
0000021f: JUMPDEST
00000220: PUSH1 0x03
00000222: PUSH1 0x20
00000224: MSTORE
00000225: PUSH1 0x00
00000227: SWAP1
00000228: DUP2
00000229: MSTORE
0000022a: PUSH1 0x40
0000022c: SWAP1
0000022d: KECCAK256
0000022e: SLOAD
0000022f: PUSH1 0xff
00000231: AND
00000232: DUP2
00000233: JUMP
00000234: JUMPDEST
00000235: PUSH1 0x40
00000237: MLOAD
00000238: SWAP1
00000239: ISZERO
0000023a: ISZERO
0000023b: DUP2
0000023c: MSTORE
0000023d: PUSH1 0x20
0000023f: ADD
00000240: PUSH2 0x0105
00000243: JUMP
00000244: JUMPDEST
00000245: CALLVALUE
00000246: DUP1
00000247: ISZERO
00000248: PUSH2 0x0250
0000024b: JUMPI
0000024c: PUSH1 0x00
0000024e: DUP1
0000024f: REVERT
00000250: JUMPDEST
00000251: POP
00000252: PUSH2 0x0184
00000255: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
0000026a: DUP2
0000026b: JUMP
0000026c: JUMPDEST
0000026d: PUSH2 0x00d1
00000270: PUSH2 0x027a
00000273: CALLDATASIZE
00000274: PUSH1 0x04
00000276: PUSH2 0x0ec3
00000279: JUMP
0000027a: JUMPDEST
0000027b: PUSH2 0x0645
0000027e: JUMP
0000027f: JUMPDEST
00000280: CALLVALUE
00000281: DUP1
00000282: ISZERO
00000283: PUSH2 0x028b
00000286: JUMPI
00000287: PUSH1 0x00
00000289: DUP1
0000028a: REVERT
0000028b: JUMPDEST
0000028c: POP
0000028d: PUSH1 0x00
0000028f: SLOAD
00000290: PUSH2 0x0184
00000293: SWAP1
00000294: PUSH1 0x01
00000296: PUSH1 0x01
00000298: PUSH1 0xa0
0000029a: SHL
0000029b: SUB
0000029c: AND
0000029d: DUP2
0000029e: JUMP
0000029f: JUMPDEST
000002a0: CALLVALUE
000002a1: DUP1
000002a2: ISZERO
000002a3: PUSH2 0x02ab
000002a6: JUMPI
000002a7: PUSH1 0x00
000002a9: DUP1
000002aa: REVERT
000002ab: JUMPDEST
000002ac: POP
000002ad: PUSH2 0x00d1
000002b0: PUSH2 0x02ba
000002b3: CALLDATASIZE
000002b4: PUSH1 0x04
000002b6: PUSH2 0x0e77
000002b9: JUMP
000002ba: JUMPDEST
000002bb: PUSH2 0x0982
000002be: JUMP
000002bf: JUMPDEST
000002c0: CALLVALUE
000002c1: DUP1
000002c2: ISZERO
000002c3: PUSH2 0x02cb
000002c6: JUMPI
000002c7: PUSH1 0x00
000002c9: DUP1
000002ca: REVERT
000002cb: JUMPDEST
000002cc: POP
000002cd: PUSH2 0x0234
000002d0: PUSH2 0x02da
000002d3: CALLDATASIZE
000002d4: PUSH1 0x04
000002d6: PUSH2 0x0e10
000002d9: JUMP
000002da: JUMPDEST
000002db: PUSH1 0x04
000002dd: PUSH1 0x20
000002df: MSTORE
000002e0: PUSH1 0x00
000002e2: SWAP1
000002e3: DUP2
000002e4: MSTORE
000002e5: PUSH1 0x40
000002e7: SWAP1
000002e8: KECCAK256
000002e9: SLOAD
000002ea: PUSH1 0xff
000002ec: AND
000002ed: DUP2
000002ee: JUMP
000002ef: JUMPDEST
000002f0: CALLVALUE
000002f1: DUP1
000002f2: ISZERO
000002f3: PUSH2 0x02fb
000002f6: JUMPI
000002f7: PUSH1 0x00
000002f9: DUP1
000002fa: REVERT
000002fb: JUMPDEST
000002fc: POP
000002fd: PUSH2 0x00d1
00000300: PUSH2 0x030a
00000303: CALLDATASIZE
00000304: PUSH1 0x04
00000306: PUSH2 0x0e10
00000309: JUMP
0000030a: JUMPDEST
0000030b: PUSH2 0x0b64
0000030e: JUMP
0000030f: JUMPDEST
00000310: PUSH1 0x05
00000312: PUSH1 0x20
00000314: SWAP1
00000315: DUP2
00000316: MSTORE
00000317: PUSH1 0x00
00000319: SWAP3
0000031a: DUP4
0000031b: MSTORE
0000031c: PUSH1 0x40
0000031e: DUP1
0000031f: DUP5
00000320: KECCAK256
00000321: SWAP1
00000322: SWAP2
00000323: MSTORE
00000324: SWAP1
00000325: DUP3
00000326: MSTORE
00000327: SWAP1
00000328: KECCAK256
00000329: DUP1
0000032a: SLOAD
0000032b: PUSH1 0x01
0000032d: DUP3
0000032e: ADD
0000032f: SLOAD
00000330: PUSH1 0x02
00000332: DUP4
00000333: ADD
00000334: DUP1
00000335: SLOAD
00000336: PUSH1 0x01
00000338: PUSH1 0x01
0000033a: PUSH1 0xa0
0000033c: SHL
0000033d: SUB
0000033e: DUP5
0000033f: AND
00000340: SWAP5
00000341: PUSH1 0x01
00000343: PUSH1 0xa0
00000345: SHL
00000346: SWAP1
00000347: SWAP5
00000348: DIV
00000349: PUSH1 0xff
0000034b: AND
0000034c: SWAP4
0000034d: SWAP2
0000034e: SWAP1
0000034f: PUSH2 0x0357
00000352: SWAP1
00000353: PUSH2 0x10db
00000356: JUMP
00000357: JUMPDEST
00000358: DUP1
00000359: PUSH1 0x1f
0000035b: ADD
0000035c: PUSH1 0x20
0000035e: DUP1
0000035f: SWAP2
00000360: DIV
00000361: MUL
00000362: PUSH1 0x20
00000364: ADD
00000365: PUSH1 0x40
00000367: MLOAD
00000368: SWAP1
00000369: DUP2
0000036a: ADD
0000036b: PUSH1 0x40
0000036d: MSTORE
0000036e: DUP1
0000036f: SWAP3
00000370: SWAP2
00000371: SWAP1
00000372: DUP2
00000373: DUP2
00000374: MSTORE
00000375: PUSH1 0x20
00000377: ADD
00000378: DUP3
00000379: DUP1
0000037a: SLOAD
0000037b: PUSH2 0x0383
0000037e: SWAP1
0000037f: PUSH2 0x10db
00000382: JUMP
00000383: JUMPDEST
00000384: DUP1
00000385: ISZERO
00000386: PUSH2 0x03d0
00000389: JUMPI
0000038a: DUP1
0000038b: PUSH1 0x1f
0000038d: LT
0000038e: PUSH2 0x03a5
00000391: JUMPI
00000392: PUSH2 0x0100
00000395: DUP1
00000396: DUP4
00000397: SLOAD
00000398: DIV
00000399: MUL
0000039a: DUP4
0000039b: MSTORE
0000039c: SWAP2
0000039d: PUSH1 0x20
0000039f: ADD
000003a0: SWAP2
000003a1: PUSH2 0x03d0
000003a4: JUMP
000003a5: JUMPDEST
000003a6: DUP3
000003a7: ADD
000003a8: SWAP2
000003a9: SWAP1
000003aa: PUSH1 0x00
000003ac: MSTORE
000003ad: PUSH1 0x20
000003af: PUSH1 0x00
000003b1: KECCAK256
000003b2: SWAP1
000003b3: JUMPDEST
000003b4: DUP2
000003b5: SLOAD
000003b6: DUP2
000003b7: MSTORE
000003b8: SWAP1
000003b9: PUSH1 0x01
000003bb: ADD
000003bc: SWAP1
000003bd: PUSH1 0x20
000003bf: ADD
000003c0: DUP1
000003c1: DUP4
000003c2: GT
000003c3: PUSH2 0x03b3
000003c6: JUMPI
000003c7: DUP3
000003c8: SWAP1
000003c9: SUB
000003ca: PUSH1 0x1f
000003cc: AND
000003cd: DUP3
000003ce: ADD
000003cf: SWAP2
000003d0: JUMPDEST
000003d1: POP
000003d2: POP
000003d3: POP
000003d4: POP
000003d5: PUSH1 0x03
000003d7: DUP4
000003d8: ADD
000003d9: SLOAD
000003da: PUSH1 0x04
000003dc: SWAP1
000003dd: SWAP4
000003de: ADD
000003df: SLOAD
000003e0: SWAP2
000003e1: SWAP3
000003e2: PUSH1 0x01
000003e4: PUSH1 0x01
000003e6: PUSH1 0xa0
000003e8: SHL
000003e9: SUB
000003ea: AND
000003eb: SWAP2
000003ec: SWAP1
000003ed: POP
000003ee: DUP7
000003ef: JUMP
000003f0: JUMPDEST
000003f1: PUSH1 0x00
000003f3: SLOAD
000003f4: PUSH1 0x01
000003f6: PUSH1 0x01
000003f8: PUSH1 0xa0
000003fa: SHL
000003fb: SUB
000003fc: AND
000003fd: CALLER
000003fe: EQ
000003ff: PUSH2 0x0444
00000402: JUMPI
00000403: PUSH1 0x40
00000405: MLOAD
00000406: PUSH3 0x461bcd
0000040a: PUSH1 0xe5
0000040c: SHL
0000040d: DUP2
0000040e: MSTORE
0000040f: PUSH1 0x20
00000411: PUSH1 0x04
00000413: DUP3
00000414: ADD
00000415: MSTORE
00000416: PUSH1 0x12
00000418: PUSH1 0x24
0000041a: DUP3
0000041b: ADD
0000041c: MSTORE
0000041d: PUSH18 0x5661756c743a206f6e6c7920627269646765
00000430: PUSH1 0x70
00000432: SHL
00000433: PUSH1 0x44
00000435: DUP3
00000436: ADD
00000437: MSTORE
00000438: PUSH1 0x64
0000043a: ADD
0000043b: JUMPDEST
0000043c: PUSH1 0x40
0000043e: MLOAD
0000043f: DUP1
00000440: SWAP2
00000441: SUB
00000442: SWAP1
00000443: REVERT
00000444: JUMPDEST
00000445: PUSH2 0x044d
00000448: DUP2
00000449: PUSH2 0x0bbc
0000044c: JUMP
0000044d: JUMPDEST
0000044e: POP
0000044f: JUMP
00000450: JUMPDEST
00000451: PUSH1 0x00
00000453: SLOAD
00000454: PUSH1 0x01
00000456: PUSH1 0x01
00000458: PUSH1 0xa0
0000045a: SHL
0000045b: SUB
0000045c: AND
0000045d: CALLER
0000045e: EQ
0000045f: PUSH2 0x049f
00000462: JUMPI
00000463: PUSH1 0x40
00000465: MLOAD
00000466: PUSH3 0x461bcd
0000046a: PUSH1 0xe5
0000046c: SHL
0000046d: DUP2
0000046e: MSTORE
0000046f: PUSH1 0x20
00000471: PUSH1 0x04
00000473: DUP3
00000474: ADD
00000475: MSTORE
00000476: PUSH1 0x12
00000478: PUSH1 0x24
0000047a: DUP3
0000047b: ADD
0000047c: MSTORE
0000047d: PUSH18 0x5661756c743a206f6e6c7920627269646765
00000490: PUSH1 0x70
00000492: SHL
00000493: PUSH1 0x44
00000495: DUP3
00000496: ADD
00000497: MSTORE
00000498: PUSH1 0x64
0000049a: ADD
0000049b: PUSH2 0x043b
0000049e: JUMP
0000049f: JUMPDEST
000004a0: PUSH1 0x00
000004a2: DUP3
000004a3: DUP2
000004a4: MSTORE
000004a5: PUSH1 0x01
000004a7: PUSH1 0x20
000004a9: DUP2
000004aa: DUP2
000004ab: MSTORE
000004ac: PUSH1 0x40
000004ae: DUP1
000004af: DUP5
000004b0: KECCAK256
000004b1: DUP1
000004b2: SLOAD
000004b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004c8: NOT
000004c9: AND
000004ca: PUSH1 0x01
000004cc: PUSH1 0x01
000004ce: PUSH1 0xa0
000004d0: SHL
000004d1: SUB
000004d2: DUP8
000004d3: AND
000004d4: SWAP1
000004d5: DUP2
000004d6: OR
000004d7: SWAP1
000004d8: SWAP2
000004d9: SSTORE
000004da: DUP5
000004db: MSTORE
000004dc: PUSH1 0x02
000004de: DUP3
000004df: MSTORE
000004e0: DUP1
000004e1: DUP5
000004e2: KECCAK256
000004e3: DUP7
000004e4: SWAP1
000004e5: SSTORE
000004e6: PUSH1 0x03
000004e8: SWAP1
000004e9: SWAP2
000004ea: MSTORE
000004eb: SWAP1
000004ec: SWAP2
000004ed: KECCAK256
000004ee: DUP1
000004ef: SLOAD
000004f0: PUSH1 0xff
000004f2: NOT
000004f3: AND
000004f4: SWAP1
000004f5: SWAP2
000004f6: OR
000004f7: SWAP1
000004f8: SSTORE
000004f9: POP
000004fa: POP
000004fb: JUMP
000004fc: JUMPDEST
000004fd: PUSH1 0x40
000004ff: DUP1
00000500: MLOAD
00000501: PUSH1 0xc0
00000503: DUP2
00000504: ADD
00000505: DUP3
00000506: MSTORE
00000507: PUSH1 0x00
00000509: DUP1
0000050a: DUP3
0000050b: MSTORE
0000050c: PUSH1 0x20
0000050e: DUP3
0000050f: ADD
00000510: DUP2
00000511: SWAP1
00000512: MSTORE
00000513: SWAP2
00000514: DUP2
00000515: ADD
00000516: DUP3
00000517: SWAP1
00000518: MSTORE
00000519: PUSH1 0x60
0000051b: DUP1
0000051c: DUP3
0000051d: ADD
0000051e: MSTORE
0000051f: PUSH1 0x80
00000521: DUP2
00000522: ADD
00000523: DUP3
00000524: SWAP1
00000525: MSTORE
00000526: PUSH1 0xa0
00000528: DUP2
00000529: ADD
0000052a: SWAP2
0000052b: SWAP1
0000052c: SWAP2
0000052d: MSTORE
0000052e: PUSH1 0xff
00000530: DUP1
00000531: DUP5
00000532: AND
00000533: PUSH1 0x00
00000535: SWAP1
00000536: DUP2
00000537: MSTORE
00000538: PUSH1 0x05
0000053a: PUSH1 0x20
0000053c: SWAP1
0000053d: DUP2
0000053e: MSTORE
0000053f: PUSH1 0x40
00000541: DUP1
00000542: DUP4
00000543: KECCAK256
00000544: PUSH8 0xffffffffffffffff
0000054d: DUP8
0000054e: AND
0000054f: DUP5
00000550: MSTORE
00000551: DUP3
00000552: MSTORE
00000553: SWAP2
00000554: DUP3
00000555: SWAP1
00000556: KECCAK256
00000557: DUP3
00000558: MLOAD
00000559: PUSH1 0xc0
0000055b: DUP2
0000055c: ADD
0000055d: DUP5
0000055e: MSTORE
0000055f: DUP2
00000560: SLOAD
00000561: PUSH1 0x01
00000563: PUSH1 0x01
00000565: PUSH1 0xa0
00000567: SHL
00000568: SUB
00000569: DUP2
0000056a: AND
0000056b: DUP3
0000056c: MSTORE
0000056d: PUSH1 0x01
0000056f: PUSH1 0xa0
00000571: SHL
00000572: SWAP1
00000573: DIV
00000574: SWAP1
00000575: SWAP5
00000576: AND
00000577: SWAP2
00000578: DUP5
00000579: ADD
0000057a: SWAP2
0000057b: SWAP1
0000057c: SWAP2
0000057d: MSTORE
0000057e: PUSH1 0x01
00000580: DUP2
00000581: ADD
00000582: SLOAD
00000583: SWAP2
00000584: DUP4
00000585: ADD
00000586: SWAP2
00000587: SWAP1
00000588: SWAP2
00000589: MSTORE
0000058a: PUSH1 0x02
0000058c: DUP2
0000058d: ADD
0000058e: DUP1
0000058f: SLOAD
00000590: PUSH1 0x60
00000592: DUP5
00000593: ADD
00000594: SWAP2
00000595: SWAP1
00000596: PUSH2 0x059e
00000599: SWAP1
0000059a: PUSH2 0x10db
0000059d: JUMP
0000059e: JUMPDEST
0000059f: DUP1
000005a0: PUSH1 0x1f
000005a2: ADD
000005a3: PUSH1 0x20
000005a5: DUP1
000005a6: SWAP2
000005a7: DIV
000005a8: MUL
000005a9: PUSH1 0x20
000005ab: ADD
000005ac: PUSH1 0x40
000005ae: MLOAD
000005af: SWAP1
000005b0: DUP2
000005b1: ADD
000005b2: PUSH1 0x40
000005b4: MSTORE
000005b5: DUP1
000005b6: SWAP3
000005b7: SWAP2
000005b8: SWAP1
000005b9: DUP2
000005ba: DUP2
000005bb: MSTORE
000005bc: PUSH1 0x20
000005be: ADD
000005bf: DUP3
000005c0: DUP1
000005c1: SLOAD
000005c2: PUSH2 0x05ca
000005c5: SWAP1
000005c6: PUSH2 0x10db
000005c9: JUMP
000005ca: JUMPDEST
000005cb: DUP1
000005cc: ISZERO
000005cd: PUSH2 0x0617
000005d0: JUMPI
000005d1: DUP1
000005d2: PUSH1 0x1f
000005d4: LT
000005d5: PUSH2 0x05ec
000005d8: JUMPI
000005d9: PUSH2 0x0100
000005dc: DUP1
000005dd: DUP4
000005de: SLOAD
000005df: DIV
000005e0: MUL
000005e1: DUP4
000005e2: MSTORE
000005e3: SWAP2
000005e4: PUSH1 0x20
000005e6: ADD
000005e7: SWAP2
000005e8: PUSH2 0x0617
000005eb: JUMP
000005ec: JUMPDEST
000005ed: DUP3
000005ee: ADD
000005ef: SWAP2
000005f0: SWAP1
000005f1: PUSH1 0x00
000005f3: MSTORE
000005f4: PUSH1 0x20
000005f6: PUSH1 0x00
000005f8: KECCAK256
000005f9: SWAP1
000005fa: JUMPDEST
000005fb: DUP2
000005fc: SLOAD
000005fd: DUP2
000005fe: MSTORE
000005ff: SWAP1
00000600: PUSH1 0x01
00000602: ADD
00000603: SWAP1
00000604: PUSH1 0x20
00000606: ADD
00000607: DUP1
00000608: DUP4
00000609: GT
0000060a: PUSH2 0x05fa
0000060d: JUMPI
0000060e: DUP3
0000060f: SWAP1
00000610: SUB
00000611: PUSH1 0x1f
00000613: AND
00000614: DUP3
00000615: ADD
00000616: SWAP2
00000617: JUMPDEST
00000618: POP
00000619: POP
0000061a: POP
0000061b: SWAP2
0000061c: DUP4
0000061d: MSTORE
0000061e: POP
0000061f: POP
00000620: PUSH1 0x03
00000622: DUP3
00000623: ADD
00000624: SLOAD
00000625: PUSH1 0x01
00000627: PUSH1 0x01
00000629: PUSH1 0xa0
0000062b: SHL
0000062c: SUB
0000062d: AND
0000062e: PUSH1 0x20
00000630: DUP3
00000631: ADD
00000632: MSTORE
00000633: PUSH1 0x04
00000635: SWAP1
00000636: SWAP2
00000637: ADD
00000638: SLOAD
00000639: PUSH1 0x40
0000063b: SWAP1
0000063c: SWAP2
0000063d: ADD
0000063e: MSTORE
0000063f: SWAP4
00000640: SWAP3
00000641: POP
00000642: POP
00000643: POP
00000644: JUMP
00000645: JUMPDEST
00000646: PUSH1 0x00
00000648: SLOAD
00000649: PUSH1 0x01
0000064b: PUSH1 0x01
0000064d: PUSH1 0xa0
0000064f: SHL
00000650: SUB
00000651: AND
00000652: CALLER
00000653: EQ
00000654: PUSH2 0x0694
00000657: JUMPI
00000658: PUSH1 0x40
0000065a: MLOAD
0000065b: PUSH3 0x461bcd
0000065f: PUSH1 0xe5
00000661: SHL
00000662: DUP2
00000663: MSTORE
00000664: PUSH1 0x20
00000666: PUSH1 0x04
00000668: DUP3
00000669: ADD
0000066a: MSTORE
0000066b: PUSH1 0x12
0000066d: PUSH1 0x24
0000066f: DUP3
00000670: ADD
00000671: MSTORE
00000672: PUSH18 0x5661756c743a206f6e6c7920627269646765
00000685: PUSH1 0x70
00000687: SHL
00000688: PUSH1 0x44
0000068a: DUP3
0000068b: ADD
0000068c: MSTORE
0000068d: PUSH1 0x64
0000068f: ADD
00000690: PUSH2 0x043b
00000693: JUMP
00000694: JUMPDEST
00000695: PUSH1 0x60
00000697: PUSH1 0x00
00000699: DUP1
0000069a: PUSH2 0x06a5
0000069d: DUP5
0000069e: DUP7
0000069f: ADD
000006a0: DUP7
000006a1: PUSH2 0x0f42
000006a4: JUMP
000006a5: JUMPDEST
000006a6: SWAP1
000006a7: SWAP3
000006a8: POP
000006a9: SWAP1
000006aa: POP
000006ab: DUP5
000006ac: PUSH1 0x40
000006ae: DUP6
000006af: PUSH2 0x06b8
000006b2: DUP5
000006b3: DUP4
000006b4: PUSH2 0x10b5
000006b7: JUMP
000006b8: JUMPDEST
000006b9: SWAP3
000006ba: PUSH2 0x06c5
000006bd: SWAP4
000006be: SWAP3
000006bf: SWAP2
000006c0: SWAP1
000006c1: PUSH2 0x108b
000006c4: JUMP
000006c5: JUMPDEST
000006c6: DUP1
000006c7: DUP1
000006c8: PUSH1 0x1f
000006ca: ADD
000006cb: PUSH1 0x20
000006cd: DUP1
000006ce: SWAP2
000006cf: DIV
000006d0: MUL
000006d1: PUSH1 0x20
000006d3: ADD
000006d4: PUSH1 0x40
000006d6: MLOAD
000006d7: SWAP1
000006d8: DUP2
000006d9: ADD
000006da: PUSH1 0x40
000006dc: MSTORE
000006dd: DUP1
000006de: SWAP4
000006df: SWAP3
000006e0: SWAP2
000006e1: SWAP1
000006e2: DUP2
000006e3: DUP2
000006e4: MSTORE
000006e5: PUSH1 0x20
000006e7: ADD
000006e8: DUP4
000006e9: DUP4
000006ea: DUP1
000006eb: DUP3
000006ec: DUP5
000006ed: CALLDATACOPY
000006ee: PUSH1 0x00
000006f0: SWAP3
000006f1: ADD
000006f2: SWAP2
000006f3: SWAP1
000006f4: SWAP2
000006f5: MSTORE
000006f6: POP
000006f7: SWAP3
000006f8: SWAP6
000006f9: POP
000006fa: POP
000006fb: POP
000006fc: CALLVALUE
000006fd: DUP4
000006fe: EQ
000006ff: SWAP1
00000700: POP
00000701: PUSH2 0x0758
00000704: JUMPI
00000705: PUSH1 0x40
00000707: MLOAD
00000708: PUSH3 0x461bcd
0000070c: PUSH1 0xe5
0000070e: SHL
0000070f: DUP2
00000710: MSTORE
00000711: PUSH1 0x20
00000713: PUSH1 0x04
00000715: DUP3
00000716: ADD
00000717: MSTORE
00000718: PUSH1 0x24
0000071a: DUP1
0000071b: DUP3
0000071c: ADD
0000071d: MSTORE
0000071e: PUSH32 0x5661756c743a2076616c75652073656e6420646f65736e2774206d6174636820
0000073f: PUSH1 0x44
00000741: DUP3
00000742: ADD
00000743: MSTORE
00000744: PUSH4 0x64617461
00000749: PUSH1 0xe0
0000074b: SHL
0000074c: PUSH1 0x64
0000074e: DUP3
0000074f: ADD
00000750: MSTORE
00000751: PUSH1 0x84
00000753: ADD
00000754: PUSH2 0x043b
00000757: JUMP
00000758: JUMPDEST
00000759: PUSH1 0x00
0000075b: DUP10
0000075c: DUP2
0000075d: MSTORE
0000075e: PUSH1 0x01
00000760: PUSH1 0x20
00000762: SWAP1
00000763: DUP2
00000764: MSTORE
00000765: PUSH1 0x40
00000767: DUP1
00000768: DUP4
00000769: KECCAK256
0000076a: SLOAD
0000076b: PUSH1 0x01
0000076d: PUSH1 0x01
0000076f: PUSH1 0xa0
00000771: SHL
00000772: SUB
00000773: AND
00000774: DUP1
00000775: DUP5
00000776: MSTORE
00000777: PUSH1 0x03
00000779: SWAP1
0000077a: SWAP3
0000077b: MSTORE
0000077c: SWAP1
0000077d: SWAP2
0000077e: KECCAK256
0000077f: SLOAD
00000780: PUSH1 0xff
00000782: AND
00000783: PUSH2 0x07da
00000786: JUMPI
00000787: PUSH1 0x40
00000789: MLOAD
0000078a: PUSH3 0x461bcd
0000078e: PUSH1 0xe5
00000790: SHL
00000791: DUP2
00000792: MSTORE
00000793: PUSH1 0x20
00000795: PUSH1 0x04
00000797: DUP3
00000798: ADD
00000799: MSTORE
0000079a: PUSH1 0x24
0000079c: DUP1
0000079d: DUP3
0000079e: ADD
0000079f: MSTORE
000007a0: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77
000007c1: PUSH1 0x44
000007c3: DUP3
000007c4: ADD
000007c5: MSTORE
000007c6: PUSH4 0x1b1a5cdd
000007cb: PUSH1 0xe2
000007cd: SHL
000007ce: PUSH1 0x64
000007d0: DUP3
000007d1: ADD
000007d2: MSTORE
000007d3: PUSH1 0x84
000007d5: ADD
000007d6: PUSH2 0x043b
000007d9: JUMP
000007da: JUMPDEST
000007db: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000007f0: PUSH1 0x01
000007f2: PUSH1 0x01
000007f4: PUSH1 0xa0
000007f6: SHL
000007f7: SUB
000007f8: AND
000007f9: PUSH4 0xd0e30db0
000007fe: DUP5
000007ff: PUSH1 0x40
00000801: MLOAD
00000802: DUP3
00000803: PUSH4 0xffffffff
00000808: AND
00000809: PUSH1 0xe0
0000080b: SHL
0000080c: DUP2
0000080d: MSTORE
0000080e: PUSH1 0x04
00000810: ADD
00000811: PUSH1 0x00
00000813: PUSH1 0x40
00000815: MLOAD
00000816: DUP1
00000817: DUP4
00000818: SUB
00000819: DUP2
0000081a: DUP6
0000081b: DUP9
0000081c: DUP1
0000081d: EXTCODESIZE
0000081e: ISZERO
0000081f: DUP1
00000820: ISZERO
00000821: PUSH2 0x0829
00000824: JUMPI
00000825: PUSH1 0x00
00000827: DUP1
00000828: REVERT
00000829: JUMPDEST
0000082a: POP
0000082b: GAS
0000082c: CALL
0000082d: ISZERO
0000082e: DUP1
0000082f: ISZERO
00000830: PUSH2 0x083d
00000833: JUMPI
00000834: RETURNDATASIZE
00000835: PUSH1 0x00
00000837: DUP1
00000838: RETURNDATACOPY
00000839: RETURNDATASIZE
0000083a: PUSH1 0x00
0000083c: REVERT
0000083d: JUMPDEST
0000083e: POP
0000083f: POP
00000840: POP
00000841: POP
00000842: POP
00000843: PUSH1 0x40
00000845: MLOAD
00000846: DUP1
00000847: PUSH1 0xc0
00000849: ADD
0000084a: PUSH1 0x40
0000084c: MSTORE
0000084d: DUP1
0000084e: DUP3
0000084f: PUSH1 0x01
00000851: PUSH1 0x01
00000853: PUSH1 0xa0
00000855: SHL
00000856: SUB
00000857: AND
00000858: DUP2
00000859: MSTORE
0000085a: PUSH1 0x20
0000085c: ADD
0000085d: DUP11
0000085e: PUSH1 0xff
00000860: AND
00000861: DUP2
00000862: MSTORE
00000863: PUSH1 0x20
00000865: ADD
00000866: DUP12
00000867: DUP2
00000868: MSTORE
00000869: PUSH1 0x20
0000086b: ADD
0000086c: DUP6
0000086d: DUP2
0000086e: MSTORE
0000086f: PUSH1 0x20
00000871: ADD
00000872: DUP9
00000873: PUSH1 0x01
00000875: PUSH1 0x01
00000877: PUSH1 0xa0
00000879: SHL
0000087a: SUB
0000087b: AND
0000087c: DUP2
0000087d: MSTORE
0000087e: PUSH1 0x20
00000880: ADD
00000881: DUP5
00000882: DUP2
00000883: MSTORE
00000884: POP
00000885: PUSH1 0x05
00000887: PUSH1 0x00
00000889: DUP12
0000088a: PUSH1 0xff
0000088c: AND
0000088d: PUSH1 0xff
0000088f: AND
00000890: DUP2
00000891: MSTORE
00000892: PUSH1 0x20
00000894: ADD
00000895: SWAP1
00000896: DUP2
00000897: MSTORE
00000898: PUSH1 0x20
0000089a: ADD
0000089b: PUSH1 0x00
0000089d: KECCAK256
0000089e: PUSH1 0x00
000008a0: DUP11
000008a1: PUSH8 0xffffffffffffffff
000008aa: AND
000008ab: PUSH8 0xffffffffffffffff
000008b4: AND
000008b5: DUP2
000008b6: MSTORE
000008b7: PUSH1 0x20
000008b9: ADD
000008ba: SWAP1
000008bb: DUP2
000008bc: MSTORE
000008bd: PUSH1 0x20
000008bf: ADD
000008c0: PUSH1 0x00
000008c2: KECCAK256
000008c3: PUSH1 0x00
000008c5: DUP3
000008c6: ADD
000008c7: MLOAD
000008c8: DUP2
000008c9: PUSH1 0x00
000008cb: ADD
000008cc: PUSH1 0x00
000008ce: PUSH2 0x0100
000008d1: EXP
000008d2: DUP2
000008d3: SLOAD
000008d4: DUP2
000008d5: PUSH1 0x01
000008d7: PUSH1 0x01
000008d9: PUSH1 0xa0
000008db: SHL
000008dc: SUB
000008dd: MUL
000008de: NOT
000008df: AND
000008e0: SWAP1
000008e1: DUP4
000008e2: PUSH1 0x01
000008e4: PUSH1 0x01
000008e6: PUSH1 0xa0
000008e8: SHL
000008e9: SUB
000008ea: AND
000008eb: MUL
000008ec: OR
000008ed: SWAP1
000008ee: SSTORE
000008ef: POP
000008f0: PUSH1 0x20
000008f2: DUP3
000008f3: ADD
000008f4: MLOAD
000008f5: DUP2
000008f6: PUSH1 0x00
000008f8: ADD
000008f9: PUSH1 0x14
000008fb: PUSH2 0x0100
000008fe: EXP
000008ff: DUP2
00000900: SLOAD
00000901: DUP2
00000902: PUSH1 0xff
00000904: MUL
00000905: NOT
00000906: AND
00000907: SWAP1
00000908: DUP4
00000909: PUSH1 0xff
0000090b: AND
0000090c: MUL
0000090d: OR
0000090e: SWAP1
0000090f: SSTORE
00000910: POP
00000911: PUSH1 0x40
00000913: DUP3
00000914: ADD
00000915: MLOAD
00000916: DUP2
00000917: PUSH1 0x01
00000919: ADD
0000091a: SSTORE
0000091b: PUSH1 0x60
0000091d: DUP3
0000091e: ADD
0000091f: MLOAD
00000920: DUP2
00000921: PUSH1 0x02
00000923: ADD
00000924: SWAP1
00000925: DUP1
00000926: MLOAD
00000927: SWAP1
00000928: PUSH1 0x20
0000092a: ADD
0000092b: SWAP1
0000092c: PUSH2 0x0936
0000092f: SWAP3
00000930: SWAP2
00000931: SWAP1
00000932: PUSH2 0x0ce9
00000935: JUMP
00000936: JUMPDEST
00000937: POP
00000938: PUSH1 0x80
0000093a: DUP3
0000093b: ADD
0000093c: MLOAD
0000093d: PUSH1 0x03
0000093f: DUP3
00000940: ADD
00000941: DUP1
00000942: SLOAD
00000943: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000958: NOT
00000959: AND
0000095a: PUSH1 0x01
0000095c: PUSH1 0x01
0000095e: PUSH1 0xa0
00000960: SHL
00000961: SUB
00000962: SWAP1
00000963: SWAP3
00000964: AND
00000965: SWAP2
00000966: SWAP1
00000967: SWAP2
00000968: OR
00000969: SWAP1
0000096a: SSTORE
0000096b: PUSH1 0xa0
0000096d: SWAP1
0000096e: SWAP2
0000096f: ADD
00000970: MLOAD
00000971: PUSH1 0x04
00000973: SWAP1
00000974: SWAP2
00000975: ADD
00000976: SSTORE
00000977: POP
00000978: POP
00000979: POP
0000097a: POP
0000097b: POP
0000097c: POP
0000097d: POP
0000097e: POP
0000097f: POP
00000980: POP
00000981: JUMP
00000982: JUMPDEST
00000983: PUSH1 0x00
00000985: SLOAD
00000986: PUSH1 0x01
00000988: PUSH1 0x01
0000098a: PUSH1 0xa0
0000098c: SHL
0000098d: SUB
0000098e: AND
0000098f: CALLER
00000990: EQ
00000991: PUSH2 0x09d1
00000994: JUMPI
00000995: PUSH1 0x40
00000997: MLOAD
00000998: PUSH3 0x461bcd
0000099c: PUSH1 0xe5
0000099e: SHL
0000099f: DUP2
000009a0: MSTORE
000009a1: PUSH1 0x20
000009a3: PUSH1 0x04
000009a5: DUP3
000009a6: ADD
000009a7: MSTORE
000009a8: PUSH1 0x12
000009aa: PUSH1 0x24
000009ac: DUP3
000009ad: ADD
000009ae: MSTORE
000009af: PUSH18 0x5661756c743a206f6e6c7920627269646765
000009c2: PUSH1 0x70
000009c4: SHL
000009c5: PUSH1 0x44
000009c7: DUP3
000009c8: ADD
000009c9: MSTORE
000009ca: PUSH1 0x64
000009cc: ADD
000009cd: PUSH2 0x043b
000009d0: JUMP
000009d1: JUMPDEST
000009d2: PUSH1 0x60
000009d4: PUSH1 0x00
000009d6: DUP1
000009d7: PUSH2 0x09e2
000009da: DUP5
000009db: DUP7
000009dc: ADD
000009dd: DUP7
000009de: PUSH2 0x0f42
000009e1: JUMP
000009e2: JUMPDEST
000009e3: SWAP1
000009e4: SWAP3
000009e5: POP
000009e6: SWAP1
000009e7: POP
000009e8: DUP5
000009e9: PUSH1 0x40
000009eb: DUP6
000009ec: PUSH2 0x09f5
000009ef: DUP5
000009f0: DUP4
000009f1: PUSH2 0x10b5
000009f4: JUMP
000009f5: JUMPDEST
000009f6: SWAP3
000009f7: PUSH2 0x0a02
000009fa: SWAP4
000009fb: SWAP3
000009fc: SWAP2
000009fd: SWAP1
000009fe: PUSH2 0x108b
00000a01: JUMP
00000a02: JUMPDEST
00000a03: DUP1
00000a04: DUP1
00000a05: PUSH1 0x1f
00000a07: ADD
00000a08: PUSH1 0x20
00000a0a: DUP1
00000a0b: SWAP2
00000a0c: DIV
00000a0d: MUL
00000a0e: PUSH1 0x20
00000a10: ADD
00000a11: PUSH1 0x40
00000a13: MLOAD
00000a14: SWAP1
00000a15: DUP2
00000a16: ADD
00000a17: PUSH1 0x40
00000a19: MSTORE
00000a1a: DUP1
00000a1b: SWAP4
00000a1c: SWAP3
00000a1d: SWAP2
00000a1e: SWAP1
00000a1f: DUP2
00000a20: DUP2
00000a21: MSTORE
00000a22: PUSH1 0x20
00000a24: ADD
00000a25: DUP4
00000a26: DUP4
00000a27: DUP1
00000a28: DUP3
00000a29: DUP5
00000a2a: CALLDATACOPY
00000a2b: PUSH1 0x00
00000a2d: SWAP3
00000a2e: ADD
00000a2f: DUP3
00000a30: SWAP1
00000a31: MSTORE
00000a32: POP
00000a33: DUP11
00000a34: DUP2
00000a35: MSTORE
00000a36: PUSH1 0x01
00000a38: PUSH1 0x20
00000a3a: SWAP1
00000a3b: DUP2
00000a3c: MSTORE
00000a3d: PUSH1 0x40
00000a3f: DUP1
00000a40: DUP4
00000a41: KECCAK256
00000a42: SLOAD
00000a43: DUP3
00000a44: DUP9
00000a45: ADD
00000a46: MLOAD
00000a47: PUSH1 0x01
00000a49: PUSH1 0x01
00000a4b: PUSH1 0xa0
00000a4d: SHL
00000a4e: SUB
00000a4f: SWAP1
00000a50: SWAP2
00000a51: AND
00000a52: DUP1
00000a53: DUP6
00000a54: MSTORE
00000a55: PUSH1 0x03
00000a57: SWAP1
00000a58: SWAP4
00000a59: MSTORE
00000a5a: SWAP3
00000a5b: KECCAK256
00000a5c: SLOAD
00000a5d: SWAP6
00000a5e: SWAP9
00000a5f: POP
00000a60: SWAP1
00000a61: SWAP5
00000a62: SWAP1
00000a63: SWAP4
00000a64: POP
00000a65: PUSH1 0xff
00000a67: AND
00000a68: SWAP2
00000a69: POP
00000a6a: PUSH2 0x0ac3
00000a6d: SWAP1
00000a6e: POP
00000a6f: JUMPI
00000a70: PUSH1 0x40
00000a72: MLOAD
00000a73: PUSH3 0x461bcd
00000a77: PUSH1 0xe5
00000a79: SHL
00000a7a: DUP2
00000a7b: MSTORE
00000a7c: PUSH1 0x20
00000a7e: PUSH1 0x04
00000a80: DUP3
00000a81: ADD
00000a82: MSTORE
00000a83: PUSH1 0x24
00000a85: DUP1
00000a86: DUP3
00000a87: ADD
00000a88: MSTORE
00000a89: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77
00000aaa: PUSH1 0x44
00000aac: DUP3
00000aad: ADD
00000aae: MSTORE
00000aaf: PUSH4 0x1b1a5cdd
00000ab4: PUSH1 0xe2
00000ab6: SHL
00000ab7: PUSH1 0x64
00000ab9: DUP3
00000aba: ADD
00000abb: MSTORE
00000abc: PUSH1 0x84
00000abe: ADD
00000abf: PUSH2 0x043b
00000ac2: JUMP
00000ac3: JUMPDEST
00000ac4: PUSH1 0x40
00000ac6: MLOAD
00000ac7: PUSH4 0x2e1a7d4d
00000acc: PUSH1 0xe0
00000ace: SHL
00000acf: DUP2
00000ad0: MSTORE
00000ad1: PUSH1 0x04
00000ad3: DUP2
00000ad4: ADD
00000ad5: DUP6
00000ad6: SWAP1
00000ad7: MSTORE
00000ad8: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000aed: SWAP1
00000aee: PUSH4 0x2e1a7d4d
00000af3: SWAP1
00000af4: PUSH1 0x24
00000af6: ADD
00000af7: PUSH1 0x00
00000af9: PUSH1 0x40
00000afb: MLOAD
00000afc: DUP1
00000afd: DUP4
00000afe: SUB
00000aff: DUP2
00000b00: PUSH1 0x00
00000b02: DUP8
00000b03: DUP1
00000b04: EXTCODESIZE
00000b05: ISZERO
00000b06: DUP1
00000b07: ISZERO
00000b08: PUSH2 0x0b10
00000b0b: JUMPI
00000b0c: PUSH1 0x00
00000b0e: DUP1
00000b0f: REVERT
00000b10: JUMPDEST
00000b11: POP
00000b12: GAS
00000b13: CALL
00000b14: ISZERO
00000b15: DUP1
00000b16: ISZERO
00000b17: PUSH2 0x0b24
00000b1a: JUMPI
00000b1b: RETURNDATASIZE
00000b1c: PUSH1 0x00
00000b1e: DUP1
00000b1f: RETURNDATACOPY
00000b20: RETURNDATASIZE
00000b21: PUSH1 0x00
00000b23: REVERT
00000b24: JUMPDEST
00000b25: POP
00000b26: POP
00000b27: PUSH1 0x40
00000b29: MLOAD
00000b2a: PUSH1 0x60
00000b2c: DUP6
00000b2d: SWAP1
00000b2e: SHR
00000b2f: SWAP3
00000b30: POP
00000b31: DUP7
00000b32: ISZERO
00000b33: PUSH2 0x08fc
00000b36: MUL
00000b37: SWAP2
00000b38: POP
00000b39: DUP7
00000b3a: SWAP1
00000b3b: PUSH1 0x00
00000b3d: DUP2
00000b3e: DUP2
00000b3f: DUP2
00000b40: DUP6
00000b41: DUP9
00000b42: DUP9
00000b43: CALL
00000b44: SWAP4
00000b45: POP
00000b46: POP
00000b47: POP
00000b48: POP
00000b49: ISZERO
00000b4a: DUP1
00000b4b: ISZERO
00000b4c: PUSH2 0x0b59
00000b4f: JUMPI
00000b50: RETURNDATASIZE
00000b51: PUSH1 0x00
00000b53: DUP1
00000b54: RETURNDATACOPY
00000b55: RETURNDATASIZE
00000b56: PUSH1 0x00
00000b58: REVERT
00000b59: JUMPDEST
00000b5a: POP
00000b5b: POP
00000b5c: POP
00000b5d: POP
00000b5e: POP
00000b5f: POP
00000b60: POP
00000b61: POP
00000b62: POP
00000b63: JUMP
00000b64: JUMPDEST
00000b65: PUSH1 0x00
00000b67: SLOAD
00000b68: PUSH1 0x01
00000b6a: PUSH1 0x01
00000b6c: PUSH1 0xa0
00000b6e: SHL
00000b6f: SUB
00000b70: AND
00000b71: CALLER
00000b72: EQ
00000b73: PUSH2 0x0bb3
00000b76: JUMPI
00000b77: PUSH1 0x40
00000b79: MLOAD
00000b7a: PUSH3 0x461bcd
00000b7e: PUSH1 0xe5
00000b80: SHL
00000b81: DUP2
00000b82: MSTORE
00000b83: PUSH1 0x20
00000b85: PUSH1 0x04
00000b87: DUP3
00000b88: ADD
00000b89: MSTORE
00000b8a: PUSH1 0x12
00000b8c: PUSH1 0x24
00000b8e: DUP3
00000b8f: ADD
00000b90: MSTORE
00000b91: PUSH18 0x5661756c743a206f6e6c7920627269646765
00000ba4: PUSH1 0x70
00000ba6: SHL
00000ba7: PUSH1 0x44
00000ba9: DUP3
00000baa: ADD
00000bab: MSTORE
00000bac: PUSH1 0x64
00000bae: ADD
00000baf: PUSH2 0x043b
00000bb2: JUMP
00000bb3: JUMPDEST
00000bb4: PUSH2 0x044d
00000bb7: DUP2
00000bb8: PUSH2 0x0c54
00000bbb: JUMP
00000bbc: JUMPDEST
00000bbd: PUSH1 0x01
00000bbf: PUSH1 0x01
00000bc1: PUSH1 0xa0
00000bc3: SHL
00000bc4: SUB
00000bc5: DUP2
00000bc6: AND
00000bc7: PUSH1 0x00
00000bc9: SWAP1
00000bca: DUP2
00000bcb: MSTORE
00000bcc: PUSH1 0x03
00000bce: PUSH1 0x20
00000bd0: MSTORE
00000bd1: PUSH1 0x40
00000bd3: SWAP1
00000bd4: KECCAK256
00000bd5: SLOAD
00000bd6: PUSH1 0xff
00000bd8: AND
00000bd9: PUSH2 0x0c30
00000bdc: JUMPI
00000bdd: PUSH1 0x40
00000bdf: MLOAD
00000be0: PUSH3 0x461bcd
00000be4: PUSH1 0xe5
00000be6: SHL
00000be7: DUP2
00000be8: MSTORE
00000be9: PUSH1 0x20
00000beb: PUSH1 0x04
00000bed: DUP3
00000bee: ADD
00000bef: MSTORE
00000bf0: PUSH1 0x24
00000bf2: DUP1
00000bf3: DUP3
00000bf4: ADD
00000bf5: MSTORE
00000bf6: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77
00000c17: PUSH1 0x44
00000c19: DUP3
00000c1a: ADD
00000c1b: MSTORE
00000c1c: PUSH4 0x1b1a5cdd
00000c21: PUSH1 0xe2
00000c23: SHL
00000c24: PUSH1 0x64
00000c26: DUP3
00000c27: ADD
00000c28: MSTORE
00000c29: PUSH1 0x84
00000c2b: ADD
00000c2c: PUSH2 0x043b
00000c2f: JUMP
00000c30: JUMPDEST
00000c31: PUSH1 0x01
00000c33: PUSH1 0x01
00000c35: PUSH1 0xa0
00000c37: SHL
00000c38: SUB
00000c39: AND
00000c3a: PUSH1 0x00
00000c3c: SWAP1
00000c3d: DUP2
00000c3e: MSTORE
00000c3f: PUSH1 0x04
00000c41: PUSH1 0x20
00000c43: MSTORE
00000c44: PUSH1 0x40
00000c46: SWAP1
00000c47: KECCAK256
00000c48: DUP1
00000c49: SLOAD
00000c4a: PUSH1 0xff
00000c4c: NOT
00000c4d: AND
00000c4e: PUSH1 0x01
00000c50: OR
00000c51: SWAP1
00000c52: SSTORE
00000c53: JUMP
00000c54: JUMPDEST
00000c55: PUSH1 0x01
00000c57: PUSH1 0x01
00000c59: PUSH1 0xa0
00000c5b: SHL
00000c5c: SUB
00000c5d: DUP2
00000c5e: AND
00000c5f: PUSH1 0x00
00000c61: SWAP1
00000c62: DUP2
00000c63: MSTORE
00000c64: PUSH1 0x03
00000c66: PUSH1 0x20
00000c68: MSTORE
00000c69: PUSH1 0x40
00000c6b: SWAP1
00000c6c: KECCAK256
00000c6d: SLOAD
00000c6e: PUSH1 0xff
00000c70: AND
00000c71: PUSH2 0x0cc8
00000c74: JUMPI
00000c75: PUSH1 0x40
00000c77: MLOAD
00000c78: PUSH3 0x461bcd
00000c7c: PUSH1 0xe5
00000c7e: SHL
00000c7f: DUP2
00000c80: MSTORE
00000c81: PUSH1 0x20
00000c83: PUSH1 0x04
00000c85: DUP3
00000c86: ADD
00000c87: MSTORE
00000c88: PUSH1 0x24
00000c8a: DUP1
00000c8b: DUP3
00000c8c: ADD
00000c8d: MSTORE
00000c8e: PUSH32 0x5661756c743a20746f6b656e206973206e6f7420696e2074686520616c6c6f77
00000caf: PUSH1 0x44
00000cb1: DUP3
00000cb2: ADD
00000cb3: MSTORE
00000cb4: PUSH4 0x1b1a5cdd
00000cb9: PUSH1 0xe2
00000cbb: SHL
00000cbc: PUSH1 0x64
00000cbe: DUP3
00000cbf: ADD
00000cc0: MSTORE
00000cc1: PUSH1 0x84
00000cc3: ADD
00000cc4: PUSH2 0x043b
00000cc7: JUMP
00000cc8: JUMPDEST
00000cc9: PUSH1 0x01
00000ccb: PUSH1 0x01
00000ccd: PUSH1 0xa0
00000ccf: SHL
00000cd0: SUB
00000cd1: AND
00000cd2: PUSH1 0x00
00000cd4: SWAP1
00000cd5: DUP2
00000cd6: MSTORE
00000cd7: PUSH1 0x04
00000cd9: PUSH1 0x20
00000cdb: MSTORE
00000cdc: PUSH1 0x40
00000cde: SWAP1
00000cdf: KECCAK256
00000ce0: DUP1
00000ce1: SLOAD
00000ce2: PUSH1 0xff
00000ce4: NOT
00000ce5: AND
00000ce6: SWAP1
00000ce7: SSTORE
00000ce8: JUMP
00000ce9: JUMPDEST
00000cea: DUP3
00000ceb: DUP1
00000cec: SLOAD
00000ced: PUSH2 0x0cf5
00000cf0: SWAP1
00000cf1: PUSH2 0x10db
00000cf4: JUMP
00000cf5: JUMPDEST
00000cf6: SWAP1
00000cf7: PUSH1 0x00
00000cf9: MSTORE
00000cfa: PUSH1 0x20
00000cfc: PUSH1 0x00
00000cfe: KECCAK256
00000cff: SWAP1
00000d00: PUSH1 0x1f
00000d02: ADD
00000d03: PUSH1 0x20
00000d05: SWAP1
00000d06: DIV
00000d07: DUP2
00000d08: ADD
00000d09: SWAP3
00000d0a: DUP3
00000d0b: PUSH2 0x0d17
00000d0e: JUMPI
00000d0f: PUSH1 0x00
00000d11: DUP6
00000d12: SSTORE
00000d13: PUSH2 0x0d5d
00000d16: JUMP
00000d17: JUMPDEST
00000d18: DUP3
00000d19: PUSH1 0x1f
00000d1b: LT
00000d1c: PUSH2 0x0d30
00000d1f: JUMPI
00000d20: DUP1
00000d21: MLOAD
00000d22: PUSH1 0xff
00000d24: NOT
00000d25: AND
00000d26: DUP4
00000d27: DUP1
00000d28: ADD
00000d29: OR
00000d2a: DUP6
00000d2b: SSTORE
00000d2c: PUSH2 0x0d5d
00000d2f: JUMP
00000d30: JUMPDEST
00000d31: DUP3
00000d32: DUP1
00000d33: ADD
00000d34: PUSH1 0x01
00000d36: ADD
00000d37: DUP6
00000d38: SSTORE
00000d39: DUP3
00000d3a: ISZERO
00000d3b: PUSH2 0x0d5d
00000d3e: JUMPI
00000d3f: SWAP2
00000d40: DUP3
00000d41: ADD
00000d42: JUMPDEST
00000d43: DUP3
00000d44: DUP2
00000d45: GT
00000d46: ISZERO
00000d47: PUSH2 0x0d5d
00000d4a: JUMPI
00000d4b: DUP3
00000d4c: MLOAD
00000d4d: DUP3
00000d4e: SSTORE
00000d4f: SWAP2
00000d50: PUSH1 0x20
00000d52: ADD
00000d53: SWAP2
00000d54: SWAP1
00000d55: PUSH1 0x01
00000d57: ADD
00000d58: SWAP1
00000d59: PUSH2 0x0d42
00000d5c: JUMP
00000d5d: JUMPDEST
00000d5e: POP
00000d5f: PUSH2 0x0d69
00000d62: SWAP3
00000d63: SWAP2
00000d64: POP
00000d65: PUSH2 0x0d6d
00000d68: JUMP
00000d69: JUMPDEST
00000d6a: POP
00000d6b: SWAP1
00000d6c: JUMP
00000d6d: JUMPDEST
00000d6e: JUMPDEST
00000d6f: DUP1
00000d70: DUP3
00000d71: GT
00000d72: ISZERO
00000d73: PUSH2 0x0d69
00000d76: JUMPI
00000d77: PUSH1 0x00
00000d79: DUP2
00000d7a: SSTORE
00000d7b: PUSH1 0x01
00000d7d: ADD
00000d7e: PUSH2 0x0d6e
00000d81: JUMP
00000d82: JUMPDEST
00000d83: DUP1
00000d84: CALLDATALOAD
00000d85: PUSH1 0x01
00000d87: PUSH1 0x01
00000d89: PUSH1 0xa0
00000d8b: SHL
00000d8c: SUB
00000d8d: DUP2
00000d8e: AND
00000d8f: DUP2
00000d90: EQ
00000d91: PUSH2 0x0d99
00000d94: JUMPI
00000d95: PUSH1 0x00
00000d97: DUP1
00000d98: REVERT
00000d99: JUMPDEST
00000d9a: SWAP2
00000d9b: SWAP1
00000d9c: POP
00000d9d: JUMP
00000d9e: JUMPDEST
00000d9f: PUSH1 0x00
00000da1: DUP1
00000da2: DUP4
00000da3: PUSH1 0x1f
00000da5: DUP5
00000da6: ADD
00000da7: SLT
00000da8: PUSH2 0x0db0
00000dab: JUMPI
00000dac: PUSH1 0x00
00000dae: DUP1
00000daf: REVERT
00000db0: JUMPDEST
00000db1: POP
00000db2: DUP2
00000db3: CALLDATALOAD
00000db4: PUSH8 0xffffffffffffffff
00000dbd: DUP2
00000dbe: GT
00000dbf: ISZERO
00000dc0: PUSH2 0x0dc8
00000dc3: JUMPI
00000dc4: PUSH1 0x00
00000dc6: DUP1
00000dc7: REVERT
00000dc8: JUMPDEST
00000dc9: PUSH1 0x20
00000dcb: DUP4
00000dcc: ADD
00000dcd: SWAP2
00000dce: POP
00000dcf: DUP4
00000dd0: PUSH1 0x20
00000dd2: DUP3
00000dd3: DUP6
00000dd4: ADD
00000dd5: ADD
00000dd6: GT
00000dd7: ISZERO
00000dd8: PUSH2 0x0de0
00000ddb: JUMPI
00000ddc: PUSH1 0x00
00000dde: DUP1
00000ddf: REVERT
00000de0: JUMPDEST
00000de1: SWAP3
00000de2: POP
00000de3: SWAP3
00000de4: SWAP1
00000de5: POP
00000de6: JUMP
00000de7: JUMPDEST
00000de8: DUP1
00000de9: CALLDATALOAD
00000dea: PUSH8 0xffffffffffffffff
00000df3: DUP2
00000df4: AND
00000df5: DUP2
00000df6: EQ
00000df7: PUSH2 0x0d99
00000dfa: JUMPI
00000dfb: PUSH1 0x00
00000dfd: DUP1
00000dfe: REVERT
00000dff: JUMPDEST
00000e00: DUP1
00000e01: CALLDATALOAD
00000e02: PUSH1 0xff
00000e04: DUP2
00000e05: AND
00000e06: DUP2
00000e07: EQ
00000e08: PUSH2 0x0d99
00000e0b: JUMPI
00000e0c: PUSH1 0x00
00000e0e: DUP1
00000e0f: REVERT
00000e10: JUMPDEST
00000e11: PUSH1 0x00
00000e13: PUSH1 0x20
00000e15: DUP3
00000e16: DUP5
00000e17: SUB
00000e18: SLT
00000e19: ISZERO
00000e1a: PUSH2 0x0e22
00000e1d: JUMPI
00000e1e: PUSH1 0x00
00000e20: DUP1
00000e21: REVERT
00000e22: JUMPDEST
00000e23: PUSH2 0x0e2b
00000e26: DUP3
00000e27: PUSH2 0x0d82
00000e2a: JUMP
00000e2b: JUMPDEST
00000e2c: SWAP4
00000e2d: SWAP3
00000e2e: POP
00000e2f: POP
00000e30: POP
00000e31: JUMP
00000e32: JUMPDEST
00000e33: PUSH1 0x00
00000e35: PUSH1 0x20
00000e37: DUP3
00000e38: DUP5
00000e39: SUB
00000e3a: SLT
00000e3b: ISZERO
00000e3c: PUSH2 0x0e44
00000e3f: JUMPI
00000e40: PUSH1 0x00
00000e42: DUP1
00000e43: REVERT
00000e44: JUMPDEST
00000e45: POP
00000e46: CALLDATALOAD
00000e47: SWAP2
00000e48: SWAP1
00000e49: POP
00000e4a: JUMP
00000e4b: JUMPDEST
00000e4c: PUSH1 0x00
00000e4e: DUP1
00000e4f: PUSH1 0x40
00000e51: DUP4
00000e52: DUP6
00000e53: SUB
00000e54: SLT
00000e55: ISZERO
00000e56: PUSH2 0x0e5e
00000e59: JUMPI
00000e5a: PUSH1 0x00
00000e5c: DUP1
00000e5d: REVERT
00000e5e: JUMPDEST
00000e5f: DUP3
00000e60: CALLDATALOAD
00000e61: SWAP2
00000e62: POP
00000e63: PUSH2 0x0e6e
00000e66: PUSH1 0x20
00000e68: DUP5
00000e69: ADD
00000e6a: PUSH2 0x0d82
00000e6d: JUMP
00000e6e: JUMPDEST
00000e6f: SWAP1
00000e70: POP
00000e71: SWAP3
00000e72: POP
00000e73: SWAP3
00000e74: SWAP1
00000e75: POP
00000e76: JUMP
00000e77: JUMPDEST
00000e78: PUSH1 0x00
00000e7a: DUP1
00000e7b: PUSH1 0x00
00000e7d: PUSH1 0x40
00000e7f: DUP5
00000e80: DUP7
00000e81: SUB
00000e82: SLT
00000e83: ISZERO
00000e84: PUSH2 0x0e8c
00000e87: JUMPI
00000e88: PUSH1 0x00
00000e8a: DUP1
00000e8b: REVERT
00000e8c: JUMPDEST
00000e8d: DUP4
00000e8e: CALLDATALOAD
00000e8f: SWAP3
00000e90: POP
00000e91: PUSH1 0x20
00000e93: DUP5
00000e94: ADD
00000e95: CALLDATALOAD
00000e96: PUSH8 0xffffffffffffffff
00000e9f: DUP2
00000ea0: GT
00000ea1: ISZERO
00000ea2: PUSH2 0x0eaa
00000ea5: JUMPI
00000ea6: PUSH1 0x00
00000ea8: DUP1
00000ea9: REVERT
00000eaa: JUMPDEST
00000eab: PUSH2 0x0eb6
00000eae: DUP7
00000eaf: DUP3
00000eb0: DUP8
00000eb1: ADD
00000eb2: PUSH2 0x0d9e
00000eb5: JUMP
00000eb6: JUMPDEST
00000eb7: SWAP5
00000eb8: SWAP8
00000eb9: SWAP1
00000eba: SWAP7
00000ebb: POP
00000ebc: SWAP4
00000ebd: SWAP5
00000ebe: POP
00000ebf: POP
00000ec0: POP
00000ec1: POP
00000ec2: JUMP
00000ec3: JUMPDEST
00000ec4: PUSH1 0x00
00000ec6: DUP1
00000ec7: PUSH1 0x00
00000ec9: DUP1
00000eca: PUSH1 0x00
00000ecc: DUP1
00000ecd: PUSH1 0xa0
00000ecf: DUP8
00000ed0: DUP10
00000ed1: SUB
00000ed2: SLT
00000ed3: ISZERO
00000ed4: PUSH2 0x0edc
00000ed7: JUMPI
00000ed8: PUSH1 0x00
00000eda: DUP1
00000edb: REVERT
00000edc: JUMPDEST
00000edd: DUP7
00000ede: CALLDATALOAD
00000edf: SWAP6
00000ee0: POP
00000ee1: PUSH2 0x0eec
00000ee4: PUSH1 0x20
00000ee6: DUP9
00000ee7: ADD
00000ee8: PUSH2 0x0dff
00000eeb: JUMP
00000eec: JUMPDEST
00000eed: SWAP5
00000eee: POP
00000eef: PUSH2 0x0efa
00000ef2: PUSH1 0x40
00000ef4: DUP9
00000ef5: ADD
00000ef6: PUSH2 0x0de7
00000ef9: JUMP
00000efa: JUMPDEST
00000efb: SWAP4
00000efc: POP
00000efd: PUSH2 0x0f08
00000f00: PUSH1 0x60
00000f02: DUP9
00000f03: ADD
00000f04: PUSH2 0x0d82
00000f07: JUMP
00000f08: JUMPDEST
00000f09: SWAP3
00000f0a: POP
00000f0b: PUSH1 0x80
00000f0d: DUP8
00000f0e: ADD
00000f0f: CALLDATALOAD
00000f10: PUSH8 0xffffffffffffffff
00000f19: DUP2
00000f1a: GT
00000f1b: ISZERO
00000f1c: PUSH2 0x0f24
00000f1f: JUMPI
00000f20: PUSH1 0x00
00000f22: DUP1
00000f23: REVERT
00000f24: JUMPDEST
00000f25: PUSH2 0x0f30
00000f28: DUP10
00000f29: DUP3
00000f2a: DUP11
00000f2b: ADD
00000f2c: PUSH2 0x0d9e
00000f2f: JUMP
00000f30: JUMPDEST
00000f31: SWAP8
00000f32: SWAP11
00000f33: SWAP7
00000f34: SWAP10
00000f35: POP
00000f36: SWAP5
00000f37: SWAP8
00000f38: POP
00000f39: SWAP3
00000f3a: SWAP6
00000f3b: SWAP4
00000f3c: SWAP5
00000f3d: SWAP3
00000f3e: POP
00000f3f: POP
00000f40: POP
00000f41: JUMP
00000f42: JUMPDEST
00000f43: PUSH1 0x00
00000f45: DUP1
00000f46: PUSH1 0x40
00000f48: DUP4
00000f49: DUP6
00000f4a: SUB
00000f4b: SLT
00000f4c: ISZERO
00000f4d: PUSH2 0x0f55
00000f50: JUMPI
00000f51: PUSH1 0x00
00000f53: DUP1
00000f54: REVERT
00000f55: JUMPDEST
00000f56: POP
00000f57: POP
00000f58: DUP1
00000f59: CALLDATALOAD
00000f5a: SWAP3
00000f5b: PUSH1 0x20
00000f5d: SWAP1
00000f5e: SWAP2
00000f5f: ADD
00000f60: CALLDATALOAD
00000f61: SWAP2
00000f62: POP
00000f63: JUMP
00000f64: JUMPDEST
00000f65: PUSH1 0x00
00000f67: DUP1
00000f68: PUSH1 0x40
00000f6a: DUP4
00000f6b: DUP6
00000f6c: SUB
00000f6d: SLT
00000f6e: ISZERO
00000f6f: PUSH2 0x0f77
00000f72: JUMPI
00000f73: PUSH1 0x00
00000f75: DUP1
00000f76: REVERT
00000f77: JUMPDEST
00000f78: PUSH2 0x0f80
00000f7b: DUP4
00000f7c: PUSH2 0x0dff
00000f7f: JUMP
00000f80: JUMPDEST
00000f81: SWAP2
00000f82: POP
00000f83: PUSH2 0x0e6e
00000f86: PUSH1 0x20
00000f88: DUP5
00000f89: ADD
00000f8a: PUSH2 0x0de7
00000f8d: JUMP
00000f8e: JUMPDEST
00000f8f: PUSH1 0x00
00000f91: DUP2
00000f92: MLOAD
00000f93: DUP1
00000f94: DUP5
00000f95: MSTORE
00000f96: PUSH1 0x00
00000f98: JUMPDEST
00000f99: DUP2
00000f9a: DUP2
00000f9b: LT
00000f9c: ISZERO
00000f9d: PUSH2 0x0fb4
00000fa0: JUMPI
00000fa1: PUSH1 0x20
00000fa3: DUP2
00000fa4: DUP6
00000fa5: ADD
00000fa6: DUP2
00000fa7: ADD
00000fa8: MLOAD
00000fa9: DUP7
00000faa: DUP4
00000fab: ADD
00000fac: DUP3
00000fad: ADD
00000fae: MSTORE
00000faf: ADD
00000fb0: PUSH2 0x0f98
00000fb3: JUMP
00000fb4: JUMPDEST
00000fb5: DUP2
00000fb6: DUP2
00000fb7: GT
00000fb8: ISZERO
00000fb9: PUSH2 0x0fc6
00000fbc: JUMPI
00000fbd: PUSH1 0x00
00000fbf: PUSH1 0x20
00000fc1: DUP4
00000fc2: DUP8
00000fc3: ADD
00000fc4: ADD
00000fc5: MSTORE
00000fc6: JUMPDEST
00000fc7: POP
00000fc8: PUSH1 0x1f
00000fca: ADD
00000fcb: PUSH1 0x1f
00000fcd: NOT
00000fce: AND
00000fcf: SWAP3
00000fd0: SWAP1
00000fd1: SWAP3
00000fd2: ADD
00000fd3: PUSH1 0x20
00000fd5: ADD
00000fd6: SWAP3
00000fd7: SWAP2
00000fd8: POP
00000fd9: POP
00000fda: JUMP
00000fdb: JUMPDEST
00000fdc: PUSH1 0x00
00000fde: PUSH1 0x01
00000fe0: PUSH1 0x01
00000fe2: PUSH1 0xa0
00000fe4: SHL
00000fe5: SUB
00000fe6: DUP1
00000fe7: DUP10
00000fe8: AND
00000fe9: DUP4
00000fea: MSTORE
00000feb: PUSH1 0xff
00000fed: DUP9
00000fee: AND
00000fef: PUSH1 0x20
00000ff1: DUP5
00000ff2: ADD
00000ff3: MSTORE
00000ff4: DUP7
00000ff5: PUSH1 0x40
00000ff7: DUP5
00000ff8: ADD
00000ff9: MSTORE
00000ffa: PUSH1 0xc0
00000ffc: PUSH1 0x60
00000ffe: DUP5
00000fff: ADD
00001000: MSTORE
00001001: PUSH2 0x100d
00001004: PUSH1 0xc0
00001006: DUP5
00001007: ADD
00001008: DUP8
00001009: PUSH2 0x0f8e
0000100c: JUMP
0000100d: JUMPDEST
0000100e: SWAP5
0000100f: AND
00001010: PUSH1 0x80
00001012: DUP4
00001013: ADD
00001014: MSTORE
00001015: POP
00001016: PUSH1 0xa0
00001018: ADD
00001019: MSTORE
0000101a: SWAP5
0000101b: SWAP4
0000101c: POP
0000101d: POP
0000101e: POP
0000101f: POP
00001020: JUMP
00001021: JUMPDEST
00001022: PUSH1 0x20
00001024: DUP2
00001025: MSTORE
00001026: PUSH1 0x00
00001028: PUSH1 0x01
0000102a: PUSH1 0x01
0000102c: PUSH1 0xa0
0000102e: SHL
0000102f: SUB
00001030: DUP1
00001031: DUP5
00001032: MLOAD
00001033: AND
00001034: PUSH1 0x20
00001036: DUP5
00001037: ADD
00001038: MSTORE
00001039: PUSH1 0xff
0000103b: PUSH1 0x20
0000103d: DUP6
0000103e: ADD
0000103f: MLOAD
00001040: AND
00001041: PUSH1 0x40
00001043: DUP5
00001044: ADD
00001045: MSTORE
00001046: PUSH1 0x40
00001048: DUP5
00001049: ADD
0000104a: MLOAD
0000104b: PUSH1 0x60
0000104d: DUP5
0000104e: ADD
0000104f: MSTORE
00001050: PUSH1 0x60
00001052: DUP5
00001053: ADD
00001054: MLOAD
00001055: PUSH1 0xc0
00001057: PUSH1 0x80
00001059: DUP6
0000105a: ADD
0000105b: MSTORE
0000105c: PUSH2 0x1068
0000105f: PUSH1 0xe0
00001061: DUP6
00001062: ADD
00001063: DUP3
00001064: PUSH2 0x0f8e
00001067: JUMP
00001068: JUMPDEST
00001069: SWAP1
0000106a: POP
0000106b: DUP2
0000106c: PUSH1 0x80
0000106e: DUP7
0000106f: ADD
00001070: MLOAD
00001071: AND
00001072: PUSH1 0xa0
00001074: DUP6
00001075: ADD
00001076: MSTORE
00001077: PUSH1 0xa0
00001079: DUP6
0000107a: ADD
0000107b: MLOAD
0000107c: PUSH1 0xc0
0000107e: DUP6
0000107f: ADD
00001080: MSTORE
00001081: DUP1
00001082: SWAP3
00001083: POP
00001084: POP
00001085: POP
00001086: SWAP3
00001087: SWAP2
00001088: POP
00001089: POP
0000108a: JUMP
0000108b: JUMPDEST
0000108c: PUSH1 0x00
0000108e: DUP1
0000108f: DUP6
00001090: DUP6
00001091: GT
00001092: ISZERO
00001093: PUSH2 0x109b
00001096: JUMPI
00001097: PUSH1 0x00
00001099: DUP1
0000109a: REVERT
0000109b: JUMPDEST
0000109c: DUP4
0000109d: DUP7
0000109e: GT
0000109f: ISZERO
000010a0: PUSH2 0x10a8
000010a3: JUMPI
000010a4: PUSH1 0x00
000010a6: DUP1
000010a7: REVERT
000010a8: JUMPDEST
000010a9: POP
000010aa: POP
000010ab: DUP3
000010ac: ADD
000010ad: SWAP4
000010ae: SWAP2
000010af: SWAP1
000010b0: SWAP3
000010b1: SUB
000010b2: SWAP2
000010b3: POP
000010b4: JUMP
000010b5: JUMPDEST
000010b6: PUSH1 0x00
000010b8: DUP3
000010b9: NOT
000010ba: DUP3
000010bb: GT
000010bc: ISZERO
000010bd: PUSH2 0x10d6
000010c0: JUMPI
000010c1: PUSH4 0x4e487b71
000010c6: PUSH1 0xe0
000010c8: SHL
000010c9: PUSH1 0x00
000010cb: MSTORE
000010cc: PUSH1 0x11
000010ce: PUSH1 0x04
000010d0: MSTORE
000010d1: PUSH1 0x24
000010d3: PUSH1 0x00
000010d5: REVERT
000010d6: JUMPDEST
000010d7: POP
000010d8: ADD
000010d9: SWAP1
000010da: JUMP
000010db: JUMPDEST
000010dc: PUSH1 0x01
000010de: DUP2
000010df: DUP2
000010e0: SHR
000010e1: SWAP1
000010e2: DUP3
000010e3: AND
000010e4: DUP1
000010e5: PUSH2 0x10ef
000010e8: JUMPI
000010e9: PUSH1 0x7f
000010eb: DUP3
000010ec: AND
000010ed: SWAP2
000010ee: POP
000010ef: JUMPDEST
000010f0: PUSH1 0x20
000010f2: DUP3
000010f3: LT
000010f4: DUP2
000010f5: EQ
000010f6: ISZERO
000010f7: PUSH2 0x1110
000010fa: JUMPI
000010fb: PUSH4 0x4e487b71
00001100: PUSH1 0xe0
00001102: SHL
00001103: PUSH1 0x00
00001105: MSTORE
00001106: PUSH1 0x22
00001108: PUSH1 0x04
0000110a: MSTORE
0000110b: PUSH1 0x24
0000110d: PUSH1 0x00
0000110f: REVERT
00001110: JUMPDEST
00001111: POP
00001112: SWAP2
00001113: SWAP1
00001114: POP
00001115: JUMP
00001116: INVALID
00001117: LOG1
00001118: PUSH5 0x736f6c6343
0000111e: STOP
0000111f: ADDMOD
00001120: MOD
00001121: STOP
00001122: EXP

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f
call_targets: 0x99571e95db76b5cbc986ad1044ac73a0a7a09e28
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x99571e95db76b5cbc986ad1044ac73a0a7a09e28"
    ],
    "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": "0xe78cea92",
            "selector": "0xe78cea92",
            "calldata_variants": [
                "0xe78cea92",
                "0xe78cea920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9ae5c53",
            "selector": "0xe9ae5c53",
            "calldata_variants": [
                "0xe9ae5c53",
                "0xe9ae5c530000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xece2a625",
            "selector": "0xece2a625",
            "calldata_variants": [
                "0xece2a625",
                "0xece2a6250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xed1e2563",
            "selector": "0xed1e2563",
            "calldata_variants": [
                "0xed1e2563",
                "0xed1e25630000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8135369a",
            "selector": "0x8135369a",
            "calldata_variants": [
                "0x8135369a",
                "0x8135369a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad5c4648",
            "selector": "0xad5c4648",
            "calldata_variants": [
                "0xad5c4648",
                "0xad5c46480000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd01616c0",
            "selector": "0xd01616c0",
            "calldata_variants": [
                "0xd01616c0",
                "0xd01616c00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x213ce7af",
            "selector": "0x213ce7af",
            "calldata_variants": [
                "0x213ce7af",
                "0x213ce7af0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2092,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2835,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2883,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 3,
    "guards_detected": [],
    "untrusted_call_count": 3
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f
call_targets: 0x99571e95db76b5cbc986ad1044ac73a0a7a09e28
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x71122a97ed4da5eebfd709516e471d640e3e0b6ce3a227feaa201e895141285f",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x99571e95db76b5cbc986ad1044ac73a0a7a09e28"
    ],
    "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": "0xe78cea92",
            "selector": "0xe78cea92",
            "calldata_variants": [
                "0xe78cea92",
                "0xe78cea920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9ae5c53",
            "selector": "0xe9ae5c53",
            "calldata_variants": [
                "0xe9ae5c53",
                "0xe9ae5c530000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xece2a625",
            "selector": "0xece2a625",
            "calldata_variants": [
                "0xece2a625",
                "0xece2a6250000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xed1e2563",
            "selector": "0xed1e2563",
            "calldata_variants": [
                "0xed1e2563",
                "0xed1e25630000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8135369a",
            "selector": "0x8135369a",
            "calldata_variants": [
                "0x8135369a",
                "0x8135369a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad5c4648",
            "selector": "0xad5c4648",
            "calldata_variants": [
                "0xad5c4648",
                "0xad5c46480000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd01616c0",
            "selector": "0xd01616c0",
            "calldata_variants": [
                "0xd01616c0",
                "0xd01616c00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x213ce7af",
            "selector": "0x213ce7af",
            "calldata_variants": [
                "0x213ce7af",
                "0x213ce7af0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2092,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2835,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2883,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 3,
    "guards_detected": []
}
high auth codex Proposal hash omits assetId, enabling cross-asset replay within the same vault 85 no
view
evidence_json
{
    "evidence": "`vote` accepts a user-supplied `_dataHash` without binding to `_assetId`, while `execute` recomputes the hash as `keccak256(abi.encodePacked(vaultAddress, _data))` (no assetId).",
    "locations": [
        "contracts/HydraBridge.sol:197",
        "contracts/HydraBridge.sol:231"
    ],
    "recommendation": "Bind the proposal to the assetId (and ideally originChainId/depositCount) by hashing `abi.encode(vaultAddress, _assetId, _data)` in both `vote` and `execute`, or store the assetId in the proposal and verify it matches during `execute`.",
    "exploit_scenario": "If multiple assets share the same vault, observers can confirm a proposal for asset A (data contains only amount/recipient). Any observer can later call `execute` with assetId B and the same `_data`; because the hash is computed from `vaultAddress` and `_data` only, the proposal is considered confirmed and the vault mints/releases asset B without a corresponding lock on the origin chain."
}
low access_control codex Observer bitmap truncation if constructor sets >128 observers allows unlimited voting by high-index observers 65 no
view
evidence_json
{
    "evidence": "Constructor lacks a MAX_OBSERVERS check; votes are tracked in a `uint128` bitmap and updated via `uint128(observerBit(msg.sender))`, which truncates bits >=128.",
    "locations": [
        "contracts/HydraBridge.sol:72",
        "contracts/HydraBridge.sol:33",
        "contracts/HydraBridge.sol:216",
        "contracts/HydraBridge.sol:269"
    ],
    "recommendation": "Enforce `_observers.length <= MAX_OBSERVERS` in the constructor and/or store votes in a `mapping(address => bool)` or a `uint256` bitmap with bounds checks to prevent truncation.",
    "exploit_scenario": "If the contract is deployed with more than 128 observers, any observer whose index exceeds 128 will have their vote bit truncated to 0 when cast into `uint128`, allowing them to vote repeatedly and inflate `proposal.votes` to reach the threshold alone."
}