019be3d6-b2a2-72f8-8ed2-aa2958ed78a5
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 41220 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41221 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41222 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41223 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41224 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41225 | detector.run | complete | 1 / 3 | 2 months ago |
| 41226 | validation.fork | complete | 1 / 3 | 2 months ago |
| 41454 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 41455 | tool.slither | failed | 2 / 2 | 2 months ago |
{
"status": "not_proxy"
}
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-_9_kmniw)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-_9_kmniw)
'forge' returned non-zero exit code 1
Error: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/utils/math/Math.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-_9_kmniw/out/build-info is not a directory.
{"no_findings":false,"summary":"Found a high-severity accounting bug that allows repeated over-claims, plus signature replay risk and unchecked ERC20 transfer returns.","findings":[{"severity":"high","category":"math","title":"Intervals claimed only incremented by 1 enables repeated over-claims","exploit_scenario":"A user waits until multiple intervals have elapsed, then calls claim(). totalClaimable() pays for all elapsed-but-unclaimed intervals, but claim() only increments intervalsClaimed by 1. The user can immediately call claim() again to receive the same elapsed intervals again (minus one), repeating until totalIntervals is exhausted and extracting far more tokens than their allocation.","recommendation":"After paying for all elapsed intervals, set intervalsClaimed to the current intervalsElapsed (or increment by intervalsElapsed - previous intervalsClaimed). This ensures each interval is only claimable once.","evidence":"claim() increments intervalsClaimed by 1 after totalClaimable() calculates based on (intervalsElapsed - intervalsClaimed), so claimed intervals are not fully accounted for.","locations":["contracts/WarriorAllianceNFT/AmmoVault.sol:119","contracts/WarriorAllianceNFT/AmmoVault.sol:130","contracts/WarriorAllianceNFT/AmmoVault.sol:181","contracts/WarriorAllianceNFT/AmmoVault.sol:196"]},{"severity":"medium","category":"auth","title":"Whitelist signature lacks domain separation, enabling replay across contracts/chains","exploit_scenario":"A user obtains a valid signature for (user, maxAmount) from the owner on one deployment or chain. Because the signed payload does not include the contract address, chainId, or a nonce, the same signature can be replayed on another deployment or chain where the owner key is the same, allowing unauthorized registrations/claims.","recommendation":"Use EIP-712 typed data with domain separator including contract address and chainId, and include a nonce or unique identifier in the signed message. Optionally include the exact amount intended to be purchased.","evidence":"The signed payload only hashes msg.sender and maxAmount, and uses a raw EIP-191 prefix without domain separation or nonce.","locations":["contracts/WarriorAllianceNFT/AmmoVault.sol:149","contracts/WarriorAllianceNFT/AmmoVault.sol:155"]},{"severity":"low","category":"other","title":"Unchecked ERC20 transfer return values can desync accounting","exploit_scenario":"If the ERC20 token returns false (non-standard behavior) instead of reverting, claim() and whitelistRegister() will update user state as if tokens were paid, while no tokens are transferred. This can lock user allocations and misrepresent payouts.","recommendation":"Use SafeERC20 (safeTransfer/safeTransferFrom) or require(token.transfer(...)) to ensure failures revert.","evidence":"token.transfer(...) calls are not checked for return values.","locations":["contracts/WarriorAllianceNFT/AmmoVault.sol:110","contracts/WarriorAllianceNFT/AmmoVault.sol:133","contracts/WarriorAllianceNFT/AmmoVault.sol:172"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-frg7gqcw
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be4bd-dd3e-7a21-86ef-919f53be7118
--------
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
**Noting audit file presence**
exec
/bin/bash -lc ls in /tmp/codex-frg7gqcw succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
hardhat
@openzeppelin
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-frg7gqcw succeeded in 6ms:
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/WarriorAllianceNFT/AmmoVault.sol
================================================================================
// SPDX-License-Identifier: UNLICENSED
import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
import "@openzeppelin/contracts/utils/math/Math.sol";
import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "hardhat/console.sol";
pragma solidity ^0.8.4;
/**
IMPORTANT NOTICE:
This smart contract was written and deployed by the software engineers at
https://highstack.co in a contractor capacity.
thinking
**Analyzing whitelistRegister signature weakness**
The whitelistRegister function relies on an off-chain signature that only binds the user and maxAmount, lacking contract or chain context, which risks replay attacks across contracts or chains due to missing domain separation.
thinking
**Identifying critical overclaim bug**
The claim function increments intervals claimed by only one per call, allowing users to repeatedly claim the same unlocked intervals and withdraw far more tokens than allocated, creating a severe overclaim vulnerability.
thinking
**Categorizing key vulnerabilities**
The critical overclaim due to incorrect intervalsClaimed update is a math/accounting issue; signature replay risk fits auth category with medium severity; unchecked token.transfer return is a low-severity operational risk.
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1,220p'" in /tmp/codex-frg7gqcw succeeded in 7ms:
1 This file concatenates the full contents of first-party Solidity sources for auditing.
2 Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
3
4 ================================================================================
5 FILE: contracts/WarriorAllianceNFT/AmmoVault.sol
6 ================================================================================
7 // SPDX-License-Identifier: UNLICENSED
8 import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
9 import "@openzeppelin/contracts/utils/math/Math.sol";
10 import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
11 import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
12 import "hardhat/console.sol";
13
14 pragma solidity ^0.8.4;
15
16 /**
17 IMPORTANT NOTICE:
18 This smart contract was written and deployed by the software engineers at
19 https://highstack.co in a contractor capacity.
20
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '220,340p'" in /tmp/codex-frg7gqcw succeeded in 11ms:
220 timestamp = user.claimStart + (intervalsElapsed * intervalDuration);
221 }
222 }
223
224 /***********************/
225 /***********************/
226 /** HELPER FUNCTIONS ***/
227 /***********************/
228 /***********************/
229
230 function _intervalsElapsed(uint256 startTime)
231 internal
232 view
233 returns (uint256 intervalsElapsed)
234 {
235 intervalsElapsed = ((block.timestamp - startTime) / intervalDuration);
236 // note: division rounds down to nearest integer.
237
238 intervalsElapsed = Math.min(intervalsElapsed, totalIntervals - 1) + 1;
239 /**
thinking
**Planning line number extraction**
I’m preparing to compute accurate line numbers for findings using line counts from the original file on disk, avoiding references to AUDIT_BUNDLE lines. Next, I'll read the file with line numbers to map snippet lines precisely.
exec
/bin/bash -lc "nl -ba contracts/WarriorAllianceNFT/AmmoVault.sol | sed -n '110,210p'" in /tmp/codex-frg7gqcw succeeded in 6ms:
110 token.transfer(msg.sender, amount);
111 }
112
113 /***********************/
114 /***********************/
115 /*** PUBLIC FUNCTIONS **/
116 /***********************/
117 /***********************/
118
119 function claim() public nonReentrant {
120 UserInfo memory user = users[msg.sender];
121 require(user.intervalsClaimed > 0, "Address not registered");
122 require(
123 totalIntervals - user.intervalsClaimed > 0,
124 "None left to claim"
125 );
126
127 uint256 totalClaimableThisRound = totalClaimable(msg.sender);
128 require(totalClaimableThisRound > 0, "Nothing to claim");
129
thinking
**Adding line numbers for interval tracking**
exec
/bin/bash -lc "nl -ba contracts/WarriorAllianceNFT/AmmoVault.sol | sed -n '210,280p'" in /tmp/codex-frg7gqcw succeeded in 6ms:
210 uint256 intervalsElapsed = _intervalsElapsed(user.claimStart);
211 if ((intervalsElapsed) > totalIntervals || user.totalTokens == 0) {
212 timestamp = 0;
213 } else {
214 timestamp = user.claimStart + (intervalsElapsed * intervalDuration);
215 }
216 }
217
218 /***********************/
219 /***********************/
220 /** HELPER FUNCTIONS ***/
221 /***********************/
222 /***********************/
223
224 function _intervalsElapsed(uint256 startTime)
225 internal
226 view
227 returns (uint256 intervalsElapsed)
228 {
229 intervalsElapsed = ((block.timestamp - startTime) / intervalDuration);
thinking
**Summarizing critical vulnerability and auth flaw**
I identified a high-severity flaw where the claim function increments intervals claimed by only one instead of by elapsed intervals, enabling repeated claims draining tokens; the fix involves updating intervals claimed to match elapsed intervals. I also found a medium-severity issue in the signature scheme lacking domain separation, allowing replay attacks across contracts or chains since the signature covers only sender and max amount but excludes contract, chain, or nonce.
thinking
**Preparing JSON report with detailed findings**
I'm consolidating three findings into a JSON report with severity, category, titles, exploit scenarios, recommendations, and exact line locations per the schema, including the high-severity interval claim math bug, medium-signature replay risk, and low-level unchecked ERC20 transfer return issue.
codex
{"no_findings":false,"summary":"Found a high-severity accounting bug that allows repeated over-claims, plus signature replay risk and unchecked ERC20 transfer returns.","findings":[{"severity":"high","category":"math","title":"Intervals claimed only incremented by 1 enables repeated over-claims","exploit_scenario":"A user waits until multiple intervals have elapsed, then calls claim(). totalClaimable() pays for all elapsed-but-unclaimed intervals, but claim() only increments intervalsClaimed by 1. The user can immediately call claim() again to receive the same elapsed intervals again (minus one), repeating until totalIntervals is exhausted and extracting far more tokens than their allocation.","recommendation":"After paying for all elapsed intervals, set intervalsClaimed to the current intervalsElapsed (or increment by intervalsElapsed - previous intervalsClaimed). This ensures each interval is only claimable once.","evidence":"claim() increments intervalsClaimed by 1 after totalClaimable() calculates based on (intervalsElapsed - intervalsClaimed), so claimed intervals are not fully accounted for.","locations":["contracts/WarriorAllianceNFT/AmmoVault.sol:119","contracts/WarriorAllianceNFT/AmmoVault.sol:130","contracts/WarriorAllianceNFT/AmmoVault.sol:181","contracts/WarriorAllianceNFT/AmmoVault.sol:196"]},{"severity":"medium","category":"auth","title":"Whitelist signature lacks domain separation, enabling replay across contracts/chains","exploit_scenario":"A user obtains a valid signature for (user, maxAmount) from the owner on one deployment or chain. Because the signed payload does not include the contract address, chainId, or a nonce, the same signature can be replayed on another deployment or chain where the owner key is the same, allowing unauthorized registrations/claims.","recommendation":"Use EIP-712 typed data with domain separator including contract address and chainId, and include a nonce or unique identifier in the signed message. Optionally include the exact amount intended to be purchased.","evidence":"The signed payload only hashes msg.sender and maxAmount, and uses a raw EIP-191 prefix without domain separation or nonce.","locations":["contracts/WarriorAllianceNFT/AmmoVault.sol:149","contracts/WarriorAllianceNFT/AmmoVault.sol:155"]},{"severity":"low","category":"other","title":"Unchecked ERC20 transfer return values can desync accounting","exploit_scenario":"If the ERC20 token returns false (non-standard behavior) instead of reverting, claim() and whitelistRegister() will update user state as if tokens were paid, while no tokens are transferred. This can lock user allocations and misrepresent payouts.","recommendation":"Use SafeERC20 (safeTransfer/safeTransferFrom) or require(token.transfer(...)) to ensure failures revert.","evidence":"token.transfer(...) calls are not checked for return values.","locations":["contracts/WarriorAllianceNFT/AmmoVault.sol:110","contracts/WarriorAllianceNFT/AmmoVault.sol:133","contracts/WarriorAllianceNFT/AmmoVault.sol:172"]}]}
tokens used
28,169
{
"codex": {
"ran_at": "2026-01-22T08:09:12.690986+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 9,
"import_count": 8,
"first_party_contracts_count": 2
},
"summary": "Found a high-severity accounting bug that allows repeated over-claims, plus signature replay risk and unchecked ERC20 transfer returns.",
"raw_final": {
"summary": "Found a high-severity accounting bug that allows repeated over-claims, plus signature replay risk and unchecked ERC20 transfer returns.",
"findings": [
{
"title": "Intervals claimed only incremented by 1 enables repeated over-claims",
"category": "math",
"evidence": "claim() increments intervalsClaimed by 1 after totalClaimable() calculates based on (intervalsElapsed - intervalsClaimed), so claimed intervals are not fully accounted for.",
"severity": "high",
"locations": [
"contracts/WarriorAllianceNFT/AmmoVault.sol:119",
"contracts/WarriorAllianceNFT/AmmoVault.sol:130",
"contracts/WarriorAllianceNFT/AmmoVault.sol:181",
"contracts/WarriorAllianceNFT/AmmoVault.sol:196"
],
"recommendation": "After paying for all elapsed intervals, set intervalsClaimed to the current intervalsElapsed (or increment by intervalsElapsed - previous intervalsClaimed). This ensures each interval is only claimable once.",
"exploit_scenario": "A user waits until multiple intervals have elapsed, then calls claim(). totalClaimable() pays for all elapsed-but-unclaimed intervals, but claim() only increments intervalsClaimed by 1. The user can immediately call claim() again to receive the same elapsed intervals again (minus one), repeating until totalIntervals is exhausted and extracting far more tokens than their allocation."
},
{
"title": "Whitelist signature lacks domain separation, enabling replay across contracts/chains",
"category": "auth",
"evidence": "The signed payload only hashes msg.sender and maxAmount, and uses a raw EIP-191 prefix without domain separation or nonce.",
"severity": "medium",
"locations": [
"contracts/WarriorAllianceNFT/AmmoVault.sol:149",
"contracts/WarriorAllianceNFT/AmmoVault.sol:155"
],
"recommendation": "Use EIP-712 typed data with domain separator including contract address and chainId, and include a nonce or unique identifier in the signed message. Optionally include the exact amount intended to be purchased.",
"exploit_scenario": "A user obtains a valid signature for (user, maxAmount) from the owner on one deployment or chain. Because the signed payload does not include the contract address, chainId, or a nonce, the same signature can be replayed on another deployment or chain where the owner key is the same, allowing unauthorized registrations/claims."
},
{
"title": "Unchecked ERC20 transfer return values can desync accounting",
"category": "other",
"evidence": "token.transfer(...) calls are not checked for return values.",
"severity": "low",
"locations": [
"contracts/WarriorAllianceNFT/AmmoVault.sol:110",
"contracts/WarriorAllianceNFT/AmmoVault.sol:133",
"contracts/WarriorAllianceNFT/AmmoVault.sol:172"
],
"recommendation": "Use SafeERC20 (safeTransfer/safeTransferFrom) or require(token.transfer(...)) to ensure failures revert.",
"exploit_scenario": "If the ERC20 token returns false (non-standard behavior) instead of reverting, claim() and whitelistRegister() will update user state as if tokens were paid, while no tokens are transferred. This can lock user allocations and misrepresent payouts."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0144 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x715018a6 00000019: GT 0000001a: PUSH2 0x00b6 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xb4256888 00000024: GT 00000025: PUSH2 0x006f 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xb4256888 0000002f: EQ 00000030: PUSH2 0x037b 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xcee9cef8 0000003a: EQ 0000003b: PUSH2 0x0391 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xd78276c6 00000045: EQ 00000046: PUSH2 0x03a4 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf2fde38b 00000050: EQ 00000051: PUSH2 0x03c4 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfc0c546a 0000005b: EQ 0000005c: PUSH2 0x03e4 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xfcbca456 00000066: EQ 00000067: PUSH2 0x0404 0000006a: JUMPI 0000006b: PUSH1 0x00 0000006d: DUP1 0000006e: REVERT 0000006f: JUMPDEST 00000070: DUP1 00000071: PUSH4 0x715018a6 00000076: EQ 00000077: PUSH2 0x027d 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x7a1ac61e 00000081: EQ 00000082: PUSH2 0x0292 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x8da5cb5b 0000008c: EQ 0000008d: PUSH2 0x02b2 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0x91b7f5ed 00000097: EQ 00000098: PUSH2 0x02e4 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xa0355eca 000000a2: EQ 000000a3: PUSH2 0x0304 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xa87430ba 000000ad: EQ 000000ae: PUSH2 0x0324 000000b1: JUMPI 000000b2: PUSH1 0x00 000000b4: DUP1 000000b5: REVERT 000000b6: JUMPDEST 000000b7: DUP1 000000b8: PUSH4 0x3ccfd60b 000000bd: GT 000000be: PUSH2 0x0108 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x3ccfd60b 000000c8: EQ 000000c9: PUSH2 0x01f1 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x41cf19ba 000000d3: EQ 000000d4: PUSH2 0x0206 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0x4e71d92d 000000de: EQ 000000df: PUSH2 0x021c 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0x627749e6 000000e9: EQ 000000ea: PUSH2 0x0231 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0x68002ee2 000000f4: EQ 000000f5: PUSH2 0x0247 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0x70f23da7 000000ff: EQ 00000100: PUSH2 0x025d 00000103: JUMPI 00000104: PUSH1 0x00 00000106: DUP1 00000107: REVERT 00000108: JUMPDEST 00000109: DUP1 0000010a: PUSH4 0x144fa6d7 0000010f: EQ 00000110: PUSH2 0x0150 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x1dfce5c6 0000011a: EQ 0000011b: PUSH2 0x0172 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x22d60d17 00000125: EQ 00000126: PUSH2 0x01a5 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0x3076dc42 00000130: EQ 00000131: PUSH2 0x01bb 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0x39a39b99 0000013b: EQ 0000013c: PUSH2 0x01d1 0000013f: JUMPI 00000140: PUSH1 0x00 00000142: DUP1 00000143: REVERT 00000144: JUMPDEST 00000145: CALLDATASIZE 00000146: PUSH2 0x014b 00000149: JUMPI 0000014a: STOP 0000014b: JUMPDEST 0000014c: PUSH1 0x00 0000014e: DUP1 0000014f: REVERT 00000150: JUMPDEST 00000151: CALLVALUE 00000152: DUP1 00000153: ISZERO 00000154: PUSH2 0x015c 00000157: JUMPI 00000158: PUSH1 0x00 0000015a: DUP1 0000015b: REVERT 0000015c: JUMPDEST 0000015d: POP 0000015e: PUSH2 0x0170 00000161: PUSH2 0x016b 00000164: CALLDATASIZE 00000165: PUSH1 0x04 00000167: PUSH2 0x126f 0000016a: JUMP 0000016b: JUMPDEST 0000016c: PUSH2 0x0424 0000016f: JUMP 00000170: JUMPDEST 00000171: STOP 00000172: JUMPDEST 00000173: CALLVALUE 00000174: DUP1 00000175: ISZERO 00000176: PUSH2 0x017e 00000179: JUMPI 0000017a: PUSH1 0x00 0000017c: DUP1 0000017d: REVERT 0000017e: JUMPDEST 0000017f: POP 00000180: PUSH2 0x0192 00000183: PUSH2 0x018d 00000186: CALLDATASIZE 00000187: PUSH1 0x04 00000189: PUSH2 0x126f 0000018c: JUMP 0000018d: JUMPDEST 0000018e: PUSH2 0x0479 00000191: JUMP 00000192: JUMPDEST 00000193: PUSH1 0x40 00000195: MLOAD 00000196: SWAP1 00000197: DUP2 00000198: MSTORE 00000199: PUSH1 0x20 0000019b: ADD 0000019c: JUMPDEST 0000019d: PUSH1 0x40 0000019f: MLOAD 000001a0: DUP1 000001a1: SWAP2 000001a2: SUB 000001a3: SWAP1 000001a4: RETURN 000001a5: JUMPDEST 000001a6: CALLVALUE 000001a7: DUP1 000001a8: ISZERO 000001a9: PUSH2 0x01b1 000001ac: JUMPI 000001ad: PUSH1 0x00 000001af: DUP1 000001b0: REVERT 000001b1: JUMPDEST 000001b2: POP 000001b3: PUSH2 0x0192 000001b6: PUSH1 0x98 000001b8: SLOAD 000001b9: DUP2 000001ba: JUMP 000001bb: JUMPDEST 000001bc: CALLVALUE 000001bd: DUP1 000001be: ISZERO 000001bf: PUSH2 0x01c7 000001c2: JUMPI 000001c3: PUSH1 0x00 000001c5: DUP1 000001c6: REVERT 000001c7: JUMPDEST 000001c8: POP 000001c9: PUSH2 0x0192 000001cc: PUSH1 0x9b 000001ce: SLOAD 000001cf: DUP2 000001d0: JUMP 000001d1: JUMPDEST 000001d2: CALLVALUE 000001d3: DUP1 000001d4: ISZERO 000001d5: PUSH2 0x01dd 000001d8: JUMPI 000001d9: PUSH1 0x00 000001db: DUP1 000001dc: REVERT 000001dd: JUMPDEST 000001de: POP 000001df: PUSH2 0x0170 000001e2: PUSH2 0x01ec 000001e5: CALLDATASIZE 000001e6: PUSH1 0x04 000001e8: PUSH2 0x1373 000001eb: JUMP 000001ec: JUMPDEST 000001ed: PUSH2 0x052d 000001f0: JUMP 000001f1: JUMPDEST 000001f2: CALLVALUE 000001f3: DUP1 000001f4: ISZERO 000001f5: PUSH2 0x01fd 000001f8: JUMPI 000001f9: PUSH1 0x00 000001fb: DUP1 000001fc: REVERT 000001fd: JUMPDEST 000001fe: POP 000001ff: PUSH2 0x0170 00000202: PUSH2 0x0565 00000205: JUMP 00000206: JUMPDEST 00000207: CALLVALUE 00000208: DUP1 00000209: ISZERO 0000020a: PUSH2 0x0212 0000020d: JUMPI 0000020e: PUSH1 0x00 00000210: DUP1 00000211: REVERT 00000212: JUMPDEST 00000213: POP 00000214: PUSH2 0x0192 00000217: PUSH1 0x9d 00000219: SLOAD 0000021a: DUP2 0000021b: JUMP 0000021c: JUMPDEST 0000021d: CALLVALUE 0000021e: DUP1 0000021f: ISZERO 00000220: PUSH2 0x0228 00000223: JUMPI 00000224: PUSH1 0x00 00000226: DUP1 00000227: REVERT 00000228: JUMPDEST 00000229: POP 0000022a: PUSH2 0x0170 0000022d: PUSH2 0x0620 00000230: JUMP 00000231: JUMPDEST 00000232: CALLVALUE 00000233: DUP1 00000234: ISZERO 00000235: PUSH2 0x023d 00000238: JUMPI 00000239: PUSH1 0x00 0000023b: DUP1 0000023c: REVERT 0000023d: JUMPDEST 0000023e: POP 0000023f: PUSH2 0x0192 00000242: PUSH1 0x9a 00000244: SLOAD 00000245: DUP2 00000246: JUMP 00000247: JUMPDEST 00000248: CALLVALUE 00000249: DUP1 0000024a: ISZERO 0000024b: PUSH2 0x0253 0000024e: JUMPI 0000024f: PUSH1 0x00 00000251: DUP1 00000252: REVERT 00000253: JUMPDEST 00000254: POP 00000255: PUSH2 0x0192 00000258: PUSH1 0x9c 0000025a: SLOAD 0000025b: DUP2 0000025c: JUMP 0000025d: JUMPDEST 0000025e: CALLVALUE 0000025f: DUP1 00000260: ISZERO 00000261: PUSH2 0x0269 00000264: JUMPI 00000265: PUSH1 0x00 00000267: DUP1 00000268: REVERT 00000269: JUMPDEST 0000026a: POP 0000026b: PUSH2 0x0192 0000026e: PUSH2 0x0278 00000271: CALLDATASIZE 00000272: PUSH1 0x04 00000274: PUSH2 0x126f 00000277: JUMP 00000278: JUMPDEST 00000279: PUSH2 0x0863 0000027c: JUMP 0000027d: JUMPDEST 0000027e: CALLVALUE 0000027f: DUP1 00000280: ISZERO 00000281: PUSH2 0x0289 00000284: JUMPI 00000285: PUSH1 0x00 00000287: DUP1 00000288: REVERT 00000289: JUMPDEST 0000028a: POP 0000028b: PUSH2 0x0170 0000028e: PUSH2 0x08f0 00000291: JUMP 00000292: JUMPDEST 00000293: CALLVALUE 00000294: DUP1 00000295: ISZERO 00000296: PUSH2 0x029e 00000299: JUMPI 0000029a: PUSH1 0x00 0000029c: DUP1 0000029d: REVERT 0000029e: JUMPDEST 0000029f: POP 000002a0: PUSH2 0x0170 000002a3: PUSH2 0x02ad 000002a6: CALLDATASIZE 000002a7: PUSH1 0x04 000002a9: PUSH2 0x128a 000002ac: JUMP 000002ad: JUMPDEST 000002ae: PUSH2 0x0926 000002b1: JUMP 000002b2: JUMPDEST 000002b3: CALLVALUE 000002b4: DUP1 000002b5: ISZERO 000002b6: PUSH2 0x02be 000002b9: JUMPI 000002ba: PUSH1 0x00 000002bc: DUP1 000002bd: REVERT 000002be: JUMPDEST 000002bf: POP 000002c0: PUSH1 0x33 000002c2: SLOAD 000002c3: PUSH1 0x01 000002c5: PUSH1 0x01 000002c7: PUSH1 0xa0 000002c9: SHL 000002ca: SUB 000002cb: AND 000002cc: JUMPDEST 000002cd: PUSH1 0x40 000002cf: MLOAD 000002d0: PUSH1 0x01 000002d2: PUSH1 0x01 000002d4: PUSH1 0xa0 000002d6: SHL 000002d7: SUB 000002d8: SWAP1 000002d9: SWAP2 000002da: AND 000002db: DUP2 000002dc: MSTORE 000002dd: PUSH1 0x20 000002df: ADD 000002e0: PUSH2 0x019c 000002e3: JUMP 000002e4: JUMPDEST 000002e5: CALLVALUE 000002e6: DUP1 000002e7: ISZERO 000002e8: PUSH2 0x02f0 000002eb: JUMPI 000002ec: PUSH1 0x00 000002ee: DUP1 000002ef: REVERT 000002f0: JUMPDEST 000002f1: POP 000002f2: PUSH2 0x0170 000002f5: PUSH2 0x02ff 000002f8: CALLDATASIZE 000002f9: PUSH1 0x04 000002fb: PUSH2 0x12df 000002fe: JUMP 000002ff: JUMPDEST 00000300: PUSH2 0x09dc 00000303: JUMP 00000304: JUMPDEST 00000305: CALLVALUE 00000306: DUP1 00000307: ISZERO 00000308: PUSH2 0x0310 0000030b: JUMPI 0000030c: PUSH1 0x00 0000030e: DUP1 0000030f: REVERT 00000310: JUMPDEST 00000311: POP 00000312: PUSH2 0x0170 00000315: PUSH2 0x031f 00000318: CALLDATASIZE 00000319: PUSH1 0x04 0000031b: PUSH2 0x12f8 0000031e: JUMP 0000031f: JUMPDEST 00000320: PUSH2 0x0a0b 00000323: JUMP 00000324: JUMPDEST 00000325: CALLVALUE 00000326: DUP1 00000327: ISZERO 00000328: PUSH2 0x0330 0000032b: JUMPI 0000032c: PUSH1 0x00 0000032e: DUP1 0000032f: REVERT 00000330: JUMPDEST 00000331: POP 00000332: PUSH2 0x0360 00000335: PUSH2 0x033f 00000338: CALLDATASIZE 00000339: PUSH1 0x04 0000033b: PUSH2 0x126f 0000033e: JUMP 0000033f: JUMPDEST 00000340: PUSH1 0x9e 00000342: PUSH1 0x20 00000344: MSTORE 00000345: PUSH1 0x00 00000347: SWAP1 00000348: DUP2 00000349: MSTORE 0000034a: PUSH1 0x40 0000034c: SWAP1 0000034d: KECCAK256 0000034e: DUP1 0000034f: SLOAD 00000350: PUSH1 0x01 00000352: DUP3 00000353: ADD 00000354: SLOAD 00000355: PUSH1 0x02 00000357: SWAP1 00000358: SWAP3 00000359: ADD 0000035a: SLOAD 0000035b: SWAP1 0000035c: SWAP2 0000035d: SWAP1 0000035e: DUP4 0000035f: JUMP 00000360: JUMPDEST 00000361: PUSH1 0x40 00000363: DUP1 00000364: MLOAD 00000365: SWAP4 00000366: DUP5 00000367: MSTORE 00000368: PUSH1 0x20 0000036a: DUP5 0000036b: ADD 0000036c: SWAP3 0000036d: SWAP1 0000036e: SWAP3 0000036f: MSTORE 00000370: SWAP1 00000371: DUP3 00000372: ADD 00000373: MSTORE 00000374: PUSH1 0x60 00000376: ADD 00000377: PUSH2 0x019c 0000037a: JUMP 0000037b: JUMPDEST 0000037c: CALLVALUE 0000037d: DUP1 0000037e: ISZERO 0000037f: PUSH2 0x0387 00000382: JUMPI 00000383: PUSH1 0x00 00000385: DUP1 00000386: REVERT 00000387: JUMPDEST 00000388: POP 00000389: PUSH2 0x0192 0000038c: PUSH1 0x99 0000038e: SLOAD 0000038f: DUP2 00000390: JUMP 00000391: JUMPDEST 00000392: PUSH2 0x0170 00000395: PUSH2 0x039f 00000398: CALLDATASIZE 00000399: PUSH1 0x04 0000039b: PUSH2 0x131a 0000039e: JUMP 0000039f: JUMPDEST 000003a0: PUSH2 0x0a40 000003a3: JUMP 000003a4: JUMPDEST 000003a5: CALLVALUE 000003a6: DUP1 000003a7: ISZERO 000003a8: PUSH2 0x03b0 000003ab: JUMPI 000003ac: PUSH1 0x00 000003ae: DUP1 000003af: REVERT 000003b0: JUMPDEST 000003b1: POP 000003b2: PUSH2 0x0170 000003b5: PUSH2 0x03bf 000003b8: CALLDATASIZE 000003b9: PUSH1 0x04 000003bb: PUSH2 0x12df 000003be: JUMP 000003bf: JUMPDEST 000003c0: PUSH2 0x0ea0 000003c3: JUMP 000003c4: JUMPDEST 000003c5: CALLVALUE 000003c6: DUP1 000003c7: ISZERO 000003c8: PUSH2 0x03d0 000003cb: JUMPI 000003cc: PUSH1 0x00 000003ce: DUP1 000003cf: REVERT 000003d0: JUMPDEST 000003d1: POP 000003d2: PUSH2 0x0170 000003d5: PUSH2 0x03df 000003d8: CALLDATASIZE 000003d9: PUSH1 0x04 000003db: PUSH2 0x126f 000003de: JUMP 000003df: JUMPDEST 000003e0: PUSH2 0x0f4e 000003e3: JUMP 000003e4: JUMPDEST 000003e5: CALLVALUE 000003e6: DUP1 000003e7: ISZERO 000003e8: PUSH2 0x03f0 000003eb: JUMPI 000003ec: PUSH1 0x00 000003ee: DUP1 000003ef: REVERT 000003f0: JUMPDEST 000003f1: POP 000003f2: PUSH1 0x97 000003f4: SLOAD 000003f5: PUSH2 0x02cc 000003f8: SWAP1 000003f9: PUSH1 0x01 000003fb: PUSH1 0x01 000003fd: PUSH1 0xa0 000003ff: SHL 00000400: SUB 00000401: AND 00000402: DUP2 00000403: JUMP 00000404: JUMPDEST 00000405: CALLVALUE 00000406: DUP1 00000407: ISZERO 00000408: PUSH2 0x0410 0000040b: JUMPI 0000040c: PUSH1 0x00 0000040e: DUP1 0000040f: REVERT 00000410: JUMPDEST 00000411: POP 00000412: PUSH2 0x0170 00000415: PUSH2 0x041f 00000418: CALLDATASIZE 00000419: PUSH1 0x04 0000041b: PUSH2 0x126f 0000041e: JUMP 0000041f: JUMPDEST 00000420: PUSH2 0x0fe9 00000423: JUMP 00000424: JUMPDEST 00000425: PUSH1 0x33 00000427: SLOAD 00000428: PUSH1 0x01 0000042a: PUSH1 0x01 0000042c: PUSH1 0xa0 0000042e: SHL 0000042f: SUB 00000430: AND 00000431: CALLER 00000432: EQ 00000433: PUSH2 0x0457 00000436: JUMPI 00000437: PUSH1 0x40 00000439: MLOAD 0000043a: PUSH3 0x461bcd 0000043e: PUSH1 0xe5 00000440: SHL 00000441: DUP2 00000442: MSTORE 00000443: PUSH1 0x04 00000445: ADD 00000446: PUSH2 0x044e 00000449: SWAP1 0000044a: PUSH2 0x13ed 0000044d: JUMP 0000044e: JUMPDEST 0000044f: PUSH1 0x40 00000451: MLOAD 00000452: DUP1 00000453: SWAP2 00000454: SUB 00000455: SWAP1 00000456: REVERT 00000457: JUMPDEST 00000458: PUSH1 0x97 0000045a: DUP1 0000045b: SLOAD 0000045c: PUSH1 0x01 0000045e: PUSH1 0x01 00000460: PUSH1 0xa0 00000462: SHL 00000463: SUB 00000464: NOT 00000465: AND 00000466: PUSH1 0x01 00000468: PUSH1 0x01 0000046a: PUSH1 0xa0 0000046c: SHL 0000046d: SUB 0000046e: SWAP3 0000046f: SWAP1 00000470: SWAP3 00000471: AND 00000472: SWAP2 00000473: SWAP1 00000474: SWAP2 00000475: OR 00000476: SWAP1 00000477: SSTORE 00000478: JUMP 00000479: JUMPDEST 0000047a: PUSH1 0x01 0000047c: PUSH1 0x01 0000047e: PUSH1 0xa0 00000480: SHL 00000481: SUB 00000482: DUP2 00000483: AND 00000484: PUSH1 0x00 00000486: SWAP1 00000487: DUP2 00000488: MSTORE 00000489: PUSH1 0x9e 0000048b: PUSH1 0x20 0000048d: SWAP1 0000048e: DUP2 0000048f: MSTORE 00000490: PUSH1 0x40 00000492: DUP1 00000493: DUP4 00000494: KECCAK256 00000495: DUP2 00000496: MLOAD 00000497: PUSH1 0x60 00000499: DUP2 0000049a: ADD 0000049b: DUP4 0000049c: MSTORE 0000049d: DUP2 0000049e: SLOAD 0000049f: DUP1 000004a0: DUP3 000004a1: MSTORE 000004a2: PUSH1 0x01 000004a4: DUP4 000004a5: ADD 000004a6: SLOAD 000004a7: SWAP5 000004a8: DUP3 000004a9: ADD 000004aa: SWAP5 000004ab: SWAP1 000004ac: SWAP5 000004ad: MSTORE 000004ae: PUSH1 0x02 000004b0: SWAP1 000004b1: SWAP2 000004b2: ADD 000004b3: SLOAD 000004b4: SWAP2 000004b5: DUP2 000004b6: ADD 000004b7: SWAP2 000004b8: SWAP1 000004b9: SWAP2 000004ba: MSTORE 000004bb: PUSH1 0x9d 000004bd: SLOAD 000004be: SWAP1 000004bf: SWAP2 000004c0: DUP4 000004c1: SWAP2 000004c2: PUSH1 0x64 000004c4: SWAP2 000004c5: PUSH2 0x04ce 000004c8: SWAP2 000004c9: SWAP1 000004ca: PUSH2 0x14a7 000004cd: JUMP 000004ce: JUMPDEST 000004cf: PUSH2 0x04d8 000004d2: SWAP2 000004d3: SWAP1 000004d4: PUSH2 0x1485 000004d7: JUMP 000004d8: JUMPDEST 000004d9: DUP3 000004da: MLOAD 000004db: PUSH2 0x04e4 000004de: SWAP2 000004df: SWAP1 000004e0: PUSH2 0x14c6 000004e3: JUMP 000004e4: JUMPDEST 000004e5: SWAP1 000004e6: POP 000004e7: PUSH1 0x00 000004e9: PUSH1 0x9c 000004eb: SLOAD 000004ec: DUP3 000004ed: PUSH2 0x04f6 000004f0: SWAP2 000004f1: SWAP1 000004f2: PUSH2 0x1485 000004f5: JUMP 000004f6: JUMPDEST 000004f7: SWAP1 000004f8: POP 000004f9: PUSH1 0x00 000004fb: PUSH2 0x0507 000004fe: DUP5 000004ff: PUSH1 0x40 00000501: ADD 00000502: MLOAD 00000503: PUSH2 0x1060 00000506: JUMP 00000507: JUMPDEST 00000508: SWAP1 00000509: POP 0000050a: DUP4 0000050b: PUSH1 0x20 0000050d: ADD 0000050e: MLOAD 0000050f: DUP2 00000510: PUSH2 0x0519 00000513: SWAP2 00000514: SWAP1 00000515: PUSH2 0x14c6 00000518: JUMP 00000519: JUMPDEST 0000051a: PUSH2 0x0523 0000051d: SWAP1 0000051e: DUP4 0000051f: PUSH2 0x14a7 00000522: JUMP 00000523: JUMPDEST 00000524: SWAP7 00000525: SWAP6 00000526: POP 00000527: POP 00000528: POP 00000529: POP 0000052a: POP 0000052b: POP 0000052c: JUMP 0000052d: JUMPDEST 0000052e: PUSH1 0x33 00000530: SLOAD 00000531: PUSH1 0x01 00000533: PUSH1 0x01 00000535: PUSH1 0xa0 00000537: SHL 00000538: SUB 00000539: AND 0000053a: CALLER 0000053b: EQ 0000053c: PUSH2 0x0557 0000053f: JUMPI 00000540: PUSH1 0x40 00000542: MLOAD 00000543: PUSH3 0x461bcd 00000547: PUSH1 0xe5 00000549: SHL 0000054a: DUP2 0000054b: MSTORE 0000054c: PUSH1 0x04 0000054e: ADD 0000054f: PUSH2 0x044e 00000552: SWAP1 00000553: PUSH2 0x13ed 00000556: JUMP 00000557: JUMPDEST 00000558: PUSH1 0x9b 0000055a: SWAP3 0000055b: SWAP1 0000055c: SWAP3 0000055d: SSTORE 0000055e: PUSH1 0x9c 00000560: SSTORE 00000561: PUSH1 0x9d 00000563: SSTORE 00000564: JUMP 00000565: JUMPDEST 00000566: PUSH1 0x33 00000568: SLOAD 00000569: PUSH1 0x01 0000056b: PUSH1 0x01 0000056d: PUSH1 0xa0 0000056f: SHL 00000570: SUB 00000571: AND 00000572: CALLER 00000573: EQ 00000574: PUSH2 0x058f 00000577: JUMPI 00000578: PUSH1 0x40 0000057a: MLOAD 0000057b: PUSH3 0x461bcd 0000057f: PUSH1 0xe5 00000581: SHL 00000582: DUP2 00000583: MSTORE 00000584: PUSH1 0x04 00000586: ADD 00000587: PUSH2 0x044e 0000058a: SWAP1 0000058b: PUSH2 0x13ed 0000058e: JUMP 0000058f: JUMPDEST 00000590: PUSH1 0x40 00000592: MLOAD 00000593: SELFBALANCE 00000594: SWAP1 00000595: PUSH1 0x00 00000597: SWAP1 00000598: CALLER 00000599: SWAP1 0000059a: DUP4 0000059b: SWAP1 0000059c: DUP4 0000059d: DUP2 0000059e: DUP2 0000059f: DUP2 000005a0: DUP6 000005a1: DUP8 000005a2: GAS 000005a3: CALL 000005a4: SWAP3 000005a5: POP 000005a6: POP 000005a7: POP 000005a8: RETURNDATASIZE 000005a9: DUP1 000005aa: PUSH1 0x00 000005ac: DUP2 000005ad: EQ 000005ae: PUSH2 0x05d3 000005b1: JUMPI 000005b2: PUSH1 0x40 000005b4: MLOAD 000005b5: SWAP2 000005b6: POP 000005b7: PUSH1 0x1f 000005b9: NOT 000005ba: PUSH1 0x3f 000005bc: RETURNDATASIZE 000005bd: ADD 000005be: AND 000005bf: DUP3 000005c0: ADD 000005c1: PUSH1 0x40 000005c3: MSTORE 000005c4: RETURNDATASIZE 000005c5: DUP3 000005c6: MSTORE 000005c7: RETURNDATASIZE 000005c8: PUSH1 0x00 000005ca: PUSH1 0x20 000005cc: DUP5 000005cd: ADD 000005ce: RETURNDATACOPY 000005cf: PUSH2 0x05d8 000005d2: JUMP 000005d3: JUMPDEST 000005d4: PUSH1 0x60 000005d6: SWAP2 000005d7: POP 000005d8: JUMPDEST 000005d9: POP 000005da: POP 000005db: SWAP1 000005dc: POP 000005dd: DUP1 000005de: PUSH2 0x061c 000005e1: JUMPI 000005e2: PUSH1 0x40 000005e4: MLOAD 000005e5: PUSH3 0x461bcd 000005e9: PUSH1 0xe5 000005eb: SHL 000005ec: DUP2 000005ed: MSTORE 000005ee: PUSH1 0x20 000005f0: PUSH1 0x04 000005f2: DUP3 000005f3: ADD 000005f4: MSTORE 000005f5: PUSH1 0x10 000005f7: PUSH1 0x24 000005f9: DUP3 000005fa: ADD 000005fb: MSTORE 000005fc: PUSH16 0x2a3930b739b332b9103330b4b632b217 0000060d: PUSH1 0x81 0000060f: SHL 00000610: PUSH1 0x44 00000612: DUP3 00000613: ADD 00000614: MSTORE 00000615: PUSH1 0x64 00000617: ADD 00000618: PUSH2 0x044e 0000061b: JUMP 0000061c: JUMPDEST 0000061d: POP 0000061e: POP 0000061f: JUMP 00000620: JUMPDEST 00000621: PUSH1 0x02 00000623: PUSH1 0x65 00000625: SLOAD 00000626: EQ 00000627: ISZERO 00000628: PUSH2 0x0673 0000062b: JUMPI 0000062c: PUSH1 0x40 0000062e: MLOAD 0000062f: PUSH3 0x461bcd 00000633: PUSH1 0xe5 00000635: SHL 00000636: DUP2 00000637: MSTORE 00000638: PUSH1 0x20 0000063a: PUSH1 0x04 0000063c: DUP3 0000063d: ADD 0000063e: MSTORE 0000063f: PUSH1 0x1f 00000641: PUSH1 0x24 00000643: DUP3 00000644: ADD 00000645: MSTORE 00000646: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000667: PUSH1 0x44 00000669: DUP3 0000066a: ADD 0000066b: MSTORE 0000066c: PUSH1 0x64 0000066e: ADD 0000066f: PUSH2 0x044e 00000672: JUMP 00000673: JUMPDEST 00000674: PUSH1 0x02 00000676: PUSH1 0x65 00000678: DUP2 00000679: SWAP1 0000067a: SSTORE 0000067b: CALLER 0000067c: PUSH1 0x00 0000067e: SWAP1 0000067f: DUP2 00000680: MSTORE 00000681: PUSH1 0x9e 00000683: PUSH1 0x20 00000685: SWAP1 00000686: DUP2 00000687: MSTORE 00000688: PUSH1 0x40 0000068a: SWAP2 0000068b: DUP3 0000068c: SWAP1 0000068d: KECCAK256 0000068e: DUP3 0000068f: MLOAD 00000690: PUSH1 0x60 00000692: DUP2 00000693: ADD 00000694: DUP5 00000695: MSTORE 00000696: DUP2 00000697: SLOAD 00000698: DUP2 00000699: MSTORE 0000069a: PUSH1 0x01 0000069c: DUP3 0000069d: ADD 0000069e: SLOAD 0000069f: SWAP3 000006a0: DUP2 000006a1: ADD 000006a2: DUP4 000006a3: SWAP1 000006a4: MSTORE 000006a5: SWAP4 000006a6: ADD 000006a7: SLOAD 000006a8: SWAP2 000006a9: DUP4 000006aa: ADD 000006ab: SWAP2 000006ac: SWAP1 000006ad: SWAP2 000006ae: MSTORE 000006af: PUSH2 0x06f3 000006b2: JUMPI 000006b3: PUSH1 0x40 000006b5: MLOAD 000006b6: PUSH3 0x461bcd 000006ba: PUSH1 0xe5 000006bc: SHL 000006bd: DUP2 000006be: MSTORE 000006bf: PUSH1 0x20 000006c1: PUSH1 0x04 000006c3: DUP3 000006c4: ADD 000006c5: MSTORE 000006c6: PUSH1 0x16 000006c8: PUSH1 0x24 000006ca: DUP3 000006cb: ADD 000006cc: MSTORE 000006cd: PUSH22 0x1059191c995cdcc81b9bdd081c9959da5cdd195c9959 000006e4: PUSH1 0x52 000006e6: SHL 000006e7: PUSH1 0x44 000006e9: DUP3 000006ea: ADD 000006eb: MSTORE 000006ec: PUSH1 0x64 000006ee: ADD 000006ef: PUSH2 0x044e 000006f2: JUMP 000006f3: JUMPDEST 000006f4: PUSH1 0x00 000006f6: DUP2 000006f7: PUSH1 0x20 000006f9: ADD 000006fa: MLOAD 000006fb: PUSH1 0x9c 000006fd: SLOAD 000006fe: PUSH2 0x0707 00000701: SWAP2 00000702: SWAP1 00000703: PUSH2 0x14c6 00000706: JUMP 00000707: JUMPDEST 00000708: GT 00000709: PUSH2 0x0749 0000070c: JUMPI 0000070d: PUSH1 0x40 0000070f: MLOAD 00000710: PUSH3 0x461bcd 00000714: PUSH1 0xe5 00000716: SHL 00000717: DUP2 00000718: MSTORE 00000719: PUSH1 0x20 0000071b: PUSH1 0x04 0000071d: DUP3 0000071e: ADD 0000071f: MSTORE 00000720: PUSH1 0x12 00000722: PUSH1 0x24 00000724: DUP3 00000725: ADD 00000726: MSTORE 00000727: PUSH18 0x4e6f6e65206c65667420746f20636c61696d 0000073a: PUSH1 0x70 0000073c: SHL 0000073d: PUSH1 0x44 0000073f: DUP3 00000740: ADD 00000741: MSTORE 00000742: PUSH1 0x64 00000744: ADD 00000745: PUSH2 0x044e 00000748: JUMP 00000749: JUMPDEST 0000074a: PUSH1 0x00 0000074c: PUSH2 0x0754 0000074f: CALLER 00000750: PUSH2 0x0479 00000753: JUMP 00000754: JUMPDEST 00000755: SWAP1 00000756: POP 00000757: PUSH1 0x00 00000759: DUP2 0000075a: GT 0000075b: PUSH2 0x0799 0000075e: JUMPI 0000075f: PUSH1 0x40 00000761: MLOAD 00000762: PUSH3 0x461bcd 00000766: PUSH1 0xe5 00000768: SHL 00000769: DUP2 0000076a: MSTORE 0000076b: PUSH1 0x20 0000076d: PUSH1 0x04 0000076f: DUP3 00000770: ADD 00000771: MSTORE 00000772: PUSH1 0x10 00000774: PUSH1 0x24 00000776: DUP3 00000777: ADD 00000778: MSTORE 00000779: PUSH16 0x4e6f7468696e6720746f20636c61696d 0000078a: PUSH1 0x80 0000078c: SHL 0000078d: PUSH1 0x44 0000078f: DUP3 00000790: ADD 00000791: MSTORE 00000792: PUSH1 0x64 00000794: ADD 00000795: PUSH2 0x044e 00000798: JUMP 00000799: JUMPDEST 0000079a: PUSH1 0x20 0000079c: DUP3 0000079d: ADD 0000079e: DUP1 0000079f: MLOAD 000007a0: SWAP1 000007a1: PUSH2 0x07a9 000007a4: DUP3 000007a5: PUSH2 0x14dd 000007a8: JUMP 000007a9: JUMPDEST 000007aa: SWAP1 000007ab: MSTORE 000007ac: POP 000007ad: CALLER 000007ae: PUSH1 0x00 000007b0: DUP2 000007b1: DUP2 000007b2: MSTORE 000007b3: PUSH1 0x9e 000007b5: PUSH1 0x20 000007b7: SWAP1 000007b8: DUP2 000007b9: MSTORE 000007ba: PUSH1 0x40 000007bc: SWAP2 000007bd: DUP3 000007be: SWAP1 000007bf: KECCAK256 000007c0: DUP6 000007c1: MLOAD 000007c2: DUP2 000007c3: SSTORE 000007c4: SWAP1 000007c5: DUP6 000007c6: ADD 000007c7: MLOAD 000007c8: PUSH1 0x01 000007ca: DUP3 000007cb: ADD 000007cc: SSTORE 000007cd: DUP5 000007ce: DUP3 000007cf: ADD 000007d0: MLOAD 000007d1: PUSH1 0x02 000007d3: SWAP1 000007d4: SWAP2 000007d5: ADD 000007d6: SSTORE 000007d7: PUSH1 0x97 000007d9: SLOAD 000007da: SWAP1 000007db: MLOAD 000007dc: PUSH4 0xa9059cbb 000007e1: PUSH1 0xe0 000007e3: SHL 000007e4: DUP2 000007e5: MSTORE 000007e6: PUSH1 0x04 000007e8: DUP2 000007e9: ADD 000007ea: SWAP3 000007eb: SWAP1 000007ec: SWAP3 000007ed: MSTORE 000007ee: PUSH1 0x24 000007f0: DUP3 000007f1: ADD 000007f2: DUP4 000007f3: SWAP1 000007f4: MSTORE 000007f5: PUSH1 0x01 000007f7: PUSH1 0x01 000007f9: PUSH1 0xa0 000007fb: SHL 000007fc: SUB 000007fd: AND 000007fe: SWAP1 000007ff: PUSH4 0xa9059cbb 00000804: SWAP1 00000805: PUSH1 0x44 00000807: ADD 00000808: PUSH1 0x20 0000080a: PUSH1 0x40 0000080c: MLOAD 0000080d: DUP1 0000080e: DUP4 0000080f: SUB 00000810: DUP2 00000811: PUSH1 0x00 00000813: DUP8 00000814: DUP1 00000815: EXTCODESIZE 00000816: ISZERO 00000817: DUP1 00000818: ISZERO 00000819: PUSH2 0x0821 0000081c: JUMPI 0000081d: PUSH1 0x00 0000081f: DUP1 00000820: REVERT 00000821: JUMPDEST 00000822: POP 00000823: GAS 00000824: CALL 00000825: ISZERO 00000826: DUP1 00000827: ISZERO 00000828: PUSH2 0x0835 0000082b: JUMPI 0000082c: RETURNDATASIZE 0000082d: PUSH1 0x00 0000082f: DUP1 00000830: RETURNDATACOPY 00000831: RETURNDATASIZE 00000832: PUSH1 0x00 00000834: REVERT 00000835: JUMPDEST 00000836: POP 00000837: POP 00000838: POP 00000839: POP 0000083a: PUSH1 0x40 0000083c: MLOAD 0000083d: RETURNDATASIZE 0000083e: PUSH1 0x1f 00000840: NOT 00000841: PUSH1 0x1f 00000843: DUP3 00000844: ADD 00000845: AND 00000846: DUP3 00000847: ADD 00000848: DUP1 00000849: PUSH1 0x40 0000084b: MSTORE 0000084c: POP 0000084d: DUP2 0000084e: ADD 0000084f: SWAP1 00000850: PUSH2 0x0859 00000853: SWAP2 00000854: SWAP1 00000855: PUSH2 0x12bd 00000858: JUMP 00000859: JUMPDEST 0000085a: POP 0000085b: POP 0000085c: PUSH1 0x01 0000085e: PUSH1 0x65 00000860: SSTORE 00000861: POP 00000862: JUMP 00000863: JUMPDEST 00000864: PUSH1 0x01 00000866: PUSH1 0x01 00000868: PUSH1 0xa0 0000086a: SHL 0000086b: SUB 0000086c: DUP2 0000086d: AND 0000086e: PUSH1 0x00 00000870: SWAP1 00000871: DUP2 00000872: MSTORE 00000873: PUSH1 0x9e 00000875: PUSH1 0x20 00000877: SWAP1 00000878: DUP2 00000879: MSTORE 0000087a: PUSH1 0x40 0000087c: DUP1 0000087d: DUP4 0000087e: KECCAK256 0000087f: DUP2 00000880: MLOAD 00000881: PUSH1 0x60 00000883: DUP2 00000884: ADD 00000885: DUP4 00000886: MSTORE 00000887: DUP2 00000888: SLOAD 00000889: DUP2 0000088a: MSTORE 0000088b: PUSH1 0x01 0000088d: DUP3 0000088e: ADD 0000088f: SLOAD 00000890: SWAP4 00000891: DUP2 00000892: ADD 00000893: SWAP4 00000894: SWAP1 00000895: SWAP4 00000896: MSTORE 00000897: PUSH1 0x02 00000899: ADD 0000089a: SLOAD 0000089b: SWAP1 0000089c: DUP3 0000089d: ADD 0000089e: DUP2 0000089f: SWAP1 000008a0: MSTORE 000008a1: DUP3 000008a2: SWAP1 000008a3: PUSH2 0x08ab 000008a6: SWAP1 000008a7: PUSH2 0x1060 000008aa: JUMP 000008ab: JUMPDEST 000008ac: SWAP1 000008ad: POP 000008ae: PUSH1 0x9c 000008b0: SLOAD 000008b1: DUP2 000008b2: GT 000008b3: DUP1 000008b4: PUSH2 0x08bc 000008b7: JUMPI 000008b8: POP 000008b9: DUP2 000008ba: MLOAD 000008bb: ISZERO 000008bc: JUMPDEST 000008bd: ISZERO 000008be: PUSH2 0x08ca 000008c1: JUMPI 000008c2: PUSH1 0x00 000008c4: SWAP3 000008c5: POP 000008c6: PUSH2 0x08e9 000008c9: JUMP 000008ca: JUMPDEST 000008cb: PUSH1 0x9b 000008cd: SLOAD 000008ce: PUSH2 0x08d7 000008d1: SWAP1 000008d2: DUP3 000008d3: PUSH2 0x14a7 000008d6: JUMP 000008d7: JUMPDEST 000008d8: DUP3 000008d9: PUSH1 0x40 000008db: ADD 000008dc: MLOAD 000008dd: PUSH2 0x08e6 000008e0: SWAP2 000008e1: SWAP1 000008e2: PUSH2 0x146d 000008e5: JUMP 000008e6: JUMPDEST 000008e7: SWAP3 000008e8: POP 000008e9: JUMPDEST 000008ea: POP 000008eb: POP 000008ec: SWAP2 000008ed: SWAP1 000008ee: POP 000008ef: JUMP 000008f0: JUMPDEST 000008f1: PUSH1 0x33 000008f3: SLOAD 000008f4: PUSH1 0x01 000008f6: PUSH1 0x01 000008f8: PUSH1 0xa0 000008fa: SHL 000008fb: SUB 000008fc: AND 000008fd: CALLER 000008fe: EQ 000008ff: PUSH2 0x091a 00000902: JUMPI 00000903: PUSH1 0x40 00000905: MLOAD 00000906: PUSH3 0x461bcd 0000090a: PUSH1 0xe5 0000090c: SHL 0000090d: DUP2 0000090e: MSTORE 0000090f: PUSH1 0x04 00000911: ADD 00000912: PUSH2 0x044e 00000915: SWAP1 00000916: PUSH2 0x13ed 00000919: JUMP 0000091a: JUMPDEST 0000091b: PUSH2 0x0924 0000091e: PUSH1 0x00 00000920: PUSH2 0x10a5 00000923: JUMP 00000924: JUMPDEST 00000925: JUMP 00000926: JUMPDEST 00000927: PUSH1 0x00 00000929: PUSH2 0x0932 0000092c: PUSH1 0x01 0000092e: PUSH2 0x10f7 00000931: JUMP 00000932: JUMPDEST 00000933: SWAP1 00000934: POP 00000935: DUP1 00000936: ISZERO 00000937: PUSH2 0x094a 0000093a: JUMPI 0000093b: PUSH1 0x00 0000093d: DUP1 0000093e: SLOAD 0000093f: PUSH2 0xff00 00000942: NOT 00000943: AND 00000944: PUSH2 0x0100 00000947: OR 00000948: SWAP1 00000949: SSTORE 0000094a: JUMPDEST 0000094b: PUSH2 0x0952 0000094e: PUSH2 0x1184 00000951: JUMP 00000952: JUMPDEST 00000953: PUSH2 0x095a 00000956: PUSH2 0x11b3 00000959: JUMP 0000095a: JUMPDEST 0000095b: PUSH1 0x97 0000095d: DUP1 0000095e: SLOAD 0000095f: PUSH1 0x01 00000961: PUSH1 0x01 00000963: PUSH1 0xa0 00000965: SHL 00000966: SUB 00000967: NOT 00000968: AND 00000969: PUSH1 0x01 0000096b: PUSH1 0x01 0000096d: PUSH1 0xa0 0000096f: SHL 00000970: SUB 00000971: DUP7 00000972: AND 00000973: OR 00000974: SWAP1 00000975: SSTORE 00000976: PUSH1 0x98 00000978: DUP4 00000979: SWAP1 0000097a: SSTORE 0000097b: PUSH1 0x99 0000097d: DUP3 0000097e: SWAP1 0000097f: SSTORE 00000980: PUSH1 0x0a 00000982: PUSH1 0x9d 00000984: SSTORE 00000985: PUSH1 0xb4 00000987: PUSH1 0x9c 00000989: SSTORE 0000098a: PUSH3 0x015180 0000098e: PUSH1 0x9b 00000990: SSTORE 00000991: DUP1 00000992: ISZERO 00000993: PUSH2 0x09d6 00000996: JUMPI 00000997: PUSH1 0x00 00000999: DUP1 0000099a: SLOAD 0000099b: PUSH2 0xff00 0000099e: NOT 0000099f: AND 000009a0: SWAP1 000009a1: SSTORE 000009a2: PUSH1 0x40 000009a4: MLOAD 000009a5: PUSH1 0x01 000009a7: DUP2 000009a8: MSTORE 000009a9: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 000009ca: SWAP1 000009cb: PUSH1 0x20 000009cd: ADD 000009ce: PUSH1 0x40 000009d0: MLOAD 000009d1: DUP1 000009d2: SWAP2 000009d3: SUB 000009d4: SWAP1 000009d5: LOG1 000009d6: JUMPDEST 000009d7: POP 000009d8: POP 000009d9: POP 000009da: POP 000009db: JUMP 000009dc: JUMPDEST 000009dd: PUSH1 0x33 000009df: SLOAD 000009e0: PUSH1 0x01 000009e2: PUSH1 0x01 000009e4: PUSH1 0xa0 000009e6: SHL 000009e7: SUB 000009e8: AND 000009e9: CALLER 000009ea: EQ 000009eb: PUSH2 0x0a06 000009ee: JUMPI 000009ef: PUSH1 0x40 000009f1: MLOAD 000009f2: PUSH3 0x461bcd 000009f6: PUSH1 0xe5 000009f8: SHL 000009f9: DUP2 000009fa: MSTORE 000009fb: PUSH1 0x04 000009fd: ADD 000009fe: PUSH2 0x044e 00000a01: SWAP1 00000a02: PUSH2 0x13ed 00000a05: JUMP 00000a06: JUMPDEST 00000a07: PUSH1 0x98 00000a09: SSTORE 00000a0a: JUMP 00000a0b: JUMPDEST 00000a0c: PUSH1 0x33 00000a0e: SLOAD 00000a0f: PUSH1 0x01 00000a11: PUSH1 0x01 00000a13: PUSH1 0xa0 00000a15: SHL 00000a16: SUB 00000a17: AND 00000a18: CALLER 00000a19: EQ 00000a1a: PUSH2 0x0a35 00000a1d: JUMPI 00000a1e: PUSH1 0x40 00000a20: MLOAD 00000a21: PUSH3 0x461bcd 00000a25: PUSH1 0xe5 00000a27: SHL 00000a28: DUP2 00000a29: MSTORE 00000a2a: PUSH1 0x04 00000a2c: ADD 00000a2d: PUSH2 0x044e 00000a30: SWAP1 00000a31: PUSH2 0x13ed 00000a34: JUMP 00000a35: JUMPDEST 00000a36: PUSH1 0x99 00000a38: SWAP2 00000a39: SWAP1 00000a3a: SWAP2 00000a3b: SSTORE 00000a3c: PUSH1 0x9a 00000a3e: SSTORE 00000a3f: JUMP 00000a40: JUMPDEST 00000a41: PUSH1 0x02 00000a43: PUSH1 0x65 00000a45: SLOAD 00000a46: EQ 00000a47: ISZERO 00000a48: PUSH2 0x0a93 00000a4b: JUMPI 00000a4c: PUSH1 0x40 00000a4e: MLOAD 00000a4f: PUSH3 0x461bcd 00000a53: PUSH1 0xe5 00000a55: SHL 00000a56: DUP2 00000a57: MSTORE 00000a58: PUSH1 0x20 00000a5a: PUSH1 0x04 00000a5c: DUP3 00000a5d: ADD 00000a5e: MSTORE 00000a5f: PUSH1 0x1f 00000a61: PUSH1 0x24 00000a63: DUP3 00000a64: ADD 00000a65: MSTORE 00000a66: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000a87: PUSH1 0x44 00000a89: DUP3 00000a8a: ADD 00000a8b: MSTORE 00000a8c: PUSH1 0x64 00000a8e: ADD 00000a8f: PUSH2 0x044e 00000a92: JUMP 00000a93: JUMPDEST 00000a94: PUSH1 0x02 00000a96: PUSH1 0x65 00000a98: SSTORE 00000a99: PUSH1 0x98 00000a9b: SLOAD 00000a9c: PUSH2 0x0aa5 00000a9f: SWAP1 00000aa0: CALLVALUE 00000aa1: PUSH2 0x14a7 00000aa4: JUMP 00000aa5: JUMPDEST 00000aa6: DUP7 00000aa7: GT 00000aa8: ISZERO 00000aa9: PUSH2 0x0ae8 00000aac: JUMPI 00000aad: PUSH1 0x40 00000aaf: MLOAD 00000ab0: PUSH3 0x461bcd 00000ab4: PUSH1 0xe5 00000ab6: SHL 00000ab7: DUP2 00000ab8: MSTORE 00000ab9: PUSH1 0x20 00000abb: PUSH1 0x04 00000abd: DUP3 00000abe: ADD 00000abf: MSTORE 00000ac0: PUSH1 0x11 00000ac2: PUSH1 0x24 00000ac4: DUP3 00000ac5: ADD 00000ac6: MSTORE 00000ac7: PUSH17 0x56616c75652062656c6f77207072696365 00000ad9: PUSH1 0x78 00000adb: SHL 00000adc: PUSH1 0x44 00000ade: DUP3 00000adf: ADD 00000ae0: MSTORE 00000ae1: PUSH1 0x64 00000ae3: ADD 00000ae4: PUSH2 0x044e 00000ae7: JUMP 00000ae8: JUMPDEST 00000ae9: PUSH1 0x99 00000aeb: SLOAD 00000aec: TIMESTAMP 00000aed: GT 00000aee: PUSH2 0x0b32 00000af1: JUMPI 00000af2: PUSH1 0x40 00000af4: MLOAD 00000af5: PUSH3 0x461bcd 00000af9: PUSH1 0xe5 00000afb: SHL 00000afc: DUP2 00000afd: MSTORE 00000afe: PUSH1 0x20 00000b00: PUSH1 0x04 00000b02: DUP3 00000b03: ADD 00000b04: MSTORE 00000b05: PUSH1 0x16 00000b07: PUSH1 0x24 00000b09: DUP3 00000b0a: ADD 00000b0b: MSTORE 00000b0c: PUSH22 0x2932b3b4b9ba3930ba34b7b739903737ba1037b832b7 00000b23: PUSH1 0x51 00000b25: SHL 00000b26: PUSH1 0x44 00000b28: DUP3 00000b29: ADD 00000b2a: MSTORE 00000b2b: PUSH1 0x64 00000b2d: ADD 00000b2e: PUSH2 0x044e 00000b31: JUMP 00000b32: JUMPDEST 00000b33: PUSH1 0x9a 00000b35: SLOAD 00000b36: TIMESTAMP 00000b37: LT 00000b38: PUSH2 0x0b83 00000b3b: JUMPI 00000b3c: PUSH1 0x40 00000b3e: MLOAD 00000b3f: PUSH3 0x461bcd 00000b43: PUSH1 0xe5 00000b45: SHL 00000b46: DUP2 00000b47: MSTORE 00000b48: PUSH1 0x20 00000b4a: PUSH1 0x04 00000b4c: DUP3 00000b4d: ADD 00000b4e: MSTORE 00000b4f: PUSH1 0x1b 00000b51: PUSH1 0x24 00000b53: DUP3 00000b54: ADD 00000b55: MSTORE 00000b56: PUSH32 0x526567697374726174696f6e732077696e646f7720636c6f7365640000000000 00000b77: PUSH1 0x44 00000b79: DUP3 00000b7a: ADD 00000b7b: MSTORE 00000b7c: PUSH1 0x64 00000b7e: ADD 00000b7f: PUSH2 0x044e 00000b82: JUMP 00000b83: JUMPDEST 00000b84: DUP5 00000b85: DUP7 00000b86: GT 00000b87: ISZERO 00000b88: PUSH2 0x0bca 00000b8b: JUMPI 00000b8c: PUSH1 0x40 00000b8e: MLOAD 00000b8f: PUSH3 0x461bcd 00000b93: PUSH1 0xe5 00000b95: SHL 00000b96: DUP2 00000b97: MSTORE 00000b98: PUSH1 0x20 00000b9a: PUSH1 0x04 00000b9c: DUP3 00000b9d: ADD 00000b9e: MSTORE 00000b9f: PUSH1 0x14 00000ba1: PUSH1 0x24 00000ba3: DUP3 00000ba4: ADD 00000ba5: MSTORE 00000ba6: PUSH20 0x20b63637b1b0ba34b7b71022bc31b2b2b232b217 00000bbb: PUSH1 0x61 00000bbd: SHL 00000bbe: PUSH1 0x44 00000bc0: DUP3 00000bc1: ADD 00000bc2: MSTORE 00000bc3: PUSH1 0x64 00000bc5: ADD 00000bc6: PUSH2 0x044e 00000bc9: JUMP 00000bca: JUMPDEST 00000bcb: PUSH1 0x40 00000bcd: MLOAD 00000bce: PUSH12 0xffffffffffffffffffffffff 00000bdb: NOT 00000bdc: CALLER 00000bdd: PUSH1 0x60 00000bdf: SHL 00000be0: AND 00000be1: PUSH1 0x20 00000be3: DUP3 00000be4: ADD 00000be5: MSTORE 00000be6: PUSH1 0x34 00000be8: DUP2 00000be9: ADD 00000bea: DUP7 00000beb: SWAP1 00000bec: MSTORE 00000bed: PUSH1 0x00 00000bef: SWAP1 00000bf0: PUSH1 0x54 00000bf2: ADD 00000bf3: PUSH1 0x40 00000bf5: MLOAD 00000bf6: PUSH1 0x20 00000bf8: DUP2 00000bf9: DUP4 00000bfa: SUB 00000bfb: SUB 00000bfc: DUP2 00000bfd: MSTORE 00000bfe: SWAP1 00000bff: PUSH1 0x40 00000c01: MSTORE 00000c02: DUP1 00000c03: MLOAD 00000c04: SWAP1 00000c05: PUSH1 0x20 00000c07: ADD 00000c08: KECCAK256 00000c09: SWAP1 00000c0a: POP 00000c0b: DUP5 00000c0c: DUP2 00000c0d: EQ 00000c0e: PUSH2 0x0c48 00000c11: JUMPI 00000c12: PUSH1 0x40 00000c14: MLOAD 00000c15: PUSH3 0x461bcd 00000c19: PUSH1 0xe5 00000c1b: SHL 00000c1c: DUP2 00000c1d: MSTORE 00000c1e: PUSH1 0x20 00000c20: PUSH1 0x04 00000c22: DUP3 00000c23: ADD 00000c24: MSTORE 00000c25: PUSH1 0x0c 00000c27: PUSH1 0x24 00000c29: DUP3 00000c2a: ADD 00000c2b: MSTORE 00000c2c: PUSH12 0x092dcecc2d8d2c840d0c2e6d 00000c39: PUSH1 0xa3 00000c3b: SHL 00000c3c: PUSH1 0x44 00000c3e: DUP3 00000c3f: ADD 00000c40: MSTORE 00000c41: PUSH1 0x64 00000c43: ADD 00000c44: PUSH2 0x044e 00000c47: JUMP 00000c48: JUMPDEST 00000c49: PUSH1 0x40 00000c4b: MLOAD 00000c4c: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00000c6d: PUSH1 0x20 00000c6f: DUP3 00000c70: ADD 00000c71: MSTORE 00000c72: PUSH1 0x3c 00000c74: DUP2 00000c75: ADD 00000c76: DUP7 00000c77: SWAP1 00000c78: MSTORE 00000c79: PUSH1 0x00 00000c7b: SWAP1 00000c7c: PUSH1 0x01 00000c7e: SWAP1 00000c7f: PUSH1 0x5c 00000c81: ADD 00000c82: PUSH1 0x40 00000c84: DUP1 00000c85: MLOAD 00000c86: PUSH1 0x1f 00000c88: NOT 00000c89: DUP2 00000c8a: DUP5 00000c8b: SUB 00000c8c: ADD 00000c8d: DUP2 00000c8e: MSTORE 00000c8f: DUP3 00000c90: DUP3 00000c91: MSTORE 00000c92: DUP1 00000c93: MLOAD 00000c94: PUSH1 0x20 00000c96: SWAP2 00000c97: DUP3 00000c98: ADD 00000c99: KECCAK256 00000c9a: PUSH1 0x00 00000c9c: DUP5 00000c9d: MSTORE 00000c9e: SWAP1 00000c9f: DUP4 00000ca0: ADD 00000ca1: DUP1 00000ca2: DUP4 00000ca3: MSTORE 00000ca4: MSTORE 00000ca5: PUSH1 0xff 00000ca7: DUP9 00000ca8: AND 00000ca9: SWAP1 00000caa: DUP3 00000cab: ADD 00000cac: MSTORE 00000cad: PUSH1 0x60 00000caf: DUP2 00000cb0: ADD 00000cb1: DUP7 00000cb2: SWAP1 00000cb3: MSTORE 00000cb4: PUSH1 0x80 00000cb6: DUP2 00000cb7: ADD 00000cb8: DUP6 00000cb9: SWAP1 00000cba: MSTORE 00000cbb: PUSH1 0xa0 00000cbd: ADD 00000cbe: PUSH1 0x20 00000cc0: PUSH1 0x40 00000cc2: MLOAD 00000cc3: PUSH1 0x20 00000cc5: DUP2 00000cc6: SUB 00000cc7: SWAP1 00000cc8: DUP1 00000cc9: DUP5 00000cca: SUB 00000ccb: SWAP1 00000ccc: DUP6 00000ccd: GAS 00000cce: STATICCALL 00000ccf: ISZERO 00000cd0: DUP1 00000cd1: ISZERO 00000cd2: PUSH2 0x0cdf 00000cd5: JUMPI 00000cd6: RETURNDATASIZE 00000cd7: PUSH1 0x00 00000cd9: DUP1 00000cda: RETURNDATACOPY 00000cdb: RETURNDATASIZE 00000cdc: PUSH1 0x00 00000cde: REVERT 00000cdf: JUMPDEST 00000ce0: POP 00000ce1: POP 00000ce2: POP 00000ce3: PUSH1 0x20 00000ce5: PUSH1 0x40 00000ce7: MLOAD 00000ce8: SUB 00000ce9: MLOAD 00000cea: SWAP1 00000ceb: POP 00000cec: DUP1 00000ced: PUSH1 0x01 00000cef: PUSH1 0x01 00000cf1: PUSH1 0xa0 00000cf3: SHL 00000cf4: SUB 00000cf5: AND 00000cf6: PUSH2 0x0d07 00000cf9: PUSH1 0x33 00000cfb: SLOAD 00000cfc: PUSH1 0x01 00000cfe: PUSH1 0x01 00000d00: PUSH1 0xa0 00000d02: SHL 00000d03: SUB 00000d04: AND 00000d05: SWAP1 00000d06: JUMP 00000d07: JUMPDEST 00000d08: PUSH1 0x01 00000d0a: PUSH1 0x01 00000d0c: PUSH1 0xa0 00000d0e: SHL 00000d0f: SUB 00000d10: AND 00000d11: EQ 00000d12: PUSH2 0x0d4d 00000d15: JUMPI 00000d16: PUSH1 0x40 00000d18: MLOAD 00000d19: PUSH3 0x461bcd 00000d1d: PUSH1 0xe5 00000d1f: SHL 00000d20: DUP2 00000d21: MSTORE 00000d22: PUSH1 0x20 00000d24: PUSH1 0x04 00000d26: DUP3 00000d27: ADD 00000d28: MSTORE 00000d29: PUSH1 0x0d 00000d2b: PUSH1 0x24 00000d2d: DUP3 00000d2e: ADD 00000d2f: MSTORE 00000d30: PUSH13 0x1058d8d95cdcc819195b9a5959 00000d3e: PUSH1 0x9a 00000d40: SHL 00000d41: PUSH1 0x44 00000d43: DUP3 00000d44: ADD 00000d45: MSTORE 00000d46: PUSH1 0x64 00000d48: ADD 00000d49: PUSH2 0x044e 00000d4c: JUMP 00000d4d: JUMPDEST 00000d4e: CALLER 00000d4f: PUSH1 0x00 00000d51: SWAP1 00000d52: DUP2 00000d53: MSTORE 00000d54: PUSH1 0x9e 00000d56: PUSH1 0x20 00000d58: MSTORE 00000d59: PUSH1 0x40 00000d5b: SWAP1 00000d5c: KECCAK256 00000d5d: PUSH1 0x01 00000d5f: ADD 00000d60: SLOAD 00000d61: ISZERO 00000d62: PUSH2 0x0da3 00000d65: JUMPI 00000d66: PUSH1 0x40 00000d68: MLOAD 00000d69: PUSH3 0x461bcd 00000d6d: PUSH1 0xe5 00000d6f: SHL 00000d70: DUP2 00000d71: MSTORE 00000d72: PUSH1 0x20 00000d74: PUSH1 0x04 00000d76: DUP3 00000d77: ADD 00000d78: MSTORE 00000d79: PUSH1 0x13 00000d7b: PUSH1 0x24 00000d7d: DUP3 00000d7e: ADD 00000d7f: MSTORE 00000d80: PUSH19 0x416c7265616479205265676973746572656421 00000d94: PUSH1 0x68 00000d96: SHL 00000d97: PUSH1 0x44 00000d99: DUP3 00000d9a: ADD 00000d9b: MSTORE 00000d9c: PUSH1 0x64 00000d9e: ADD 00000d9f: PUSH2 0x044e 00000da2: JUMP 00000da3: JUMPDEST 00000da4: PUSH1 0x40 00000da6: DUP1 00000da7: MLOAD 00000da8: PUSH1 0x60 00000daa: DUP2 00000dab: ADD 00000dac: DUP3 00000dad: MSTORE 00000dae: DUP10 00000daf: DUP2 00000db0: MSTORE 00000db1: PUSH1 0x01 00000db3: PUSH1 0x20 00000db5: DUP1 00000db6: DUP4 00000db7: ADD 00000db8: DUP3 00000db9: DUP2 00000dba: MSTORE 00000dbb: TIMESTAMP 00000dbc: DUP5 00000dbd: DUP7 00000dbe: ADD 00000dbf: SWAP1 00000dc0: DUP2 00000dc1: MSTORE 00000dc2: CALLER 00000dc3: PUSH1 0x00 00000dc5: DUP2 00000dc6: DUP2 00000dc7: MSTORE 00000dc8: PUSH1 0x9e 00000dca: SWAP1 00000dcb: SWAP5 00000dcc: MSTORE 00000dcd: SWAP6 00000dce: SWAP1 00000dcf: SWAP3 00000dd0: KECCAK256 00000dd1: SWAP4 00000dd2: MLOAD 00000dd3: DUP5 00000dd4: SSTORE 00000dd5: MLOAD 00000dd6: SWAP2 00000dd7: DUP4 00000dd8: ADD 00000dd9: SWAP2 00000dda: SWAP1 00000ddb: SWAP2 00000ddc: SSTORE 00000ddd: MLOAD 00000dde: PUSH1 0x02 00000de0: SWAP1 00000de1: SWAP2 00000de2: ADD 00000de3: SSTORE 00000de4: PUSH1 0x97 00000de6: SLOAD 00000de7: PUSH1 0x9d 00000de9: SLOAD 00000dea: PUSH1 0x01 00000dec: PUSH1 0x01 00000dee: PUSH1 0xa0 00000df0: SHL 00000df1: SUB 00000df2: SWAP1 00000df3: SWAP2 00000df4: AND 00000df5: SWAP2 00000df6: PUSH4 0xa9059cbb 00000dfb: SWAP2 00000dfc: PUSH1 0x64 00000dfe: SWAP1 00000dff: PUSH2 0x0e08 00000e02: SWAP1 00000e03: DUP14 00000e04: PUSH2 0x14a7 00000e07: JUMP 00000e08: JUMPDEST 00000e09: PUSH2 0x0e12 00000e0c: SWAP2 00000e0d: SWAP1 00000e0e: PUSH2 0x1485 00000e11: JUMP 00000e12: JUMPDEST 00000e13: PUSH1 0x40 00000e15: MLOAD 00000e16: PUSH1 0x01 00000e18: PUSH1 0x01 00000e1a: PUSH1 0xe0 00000e1c: SHL 00000e1d: SUB 00000e1e: NOT 00000e1f: PUSH1 0xe0 00000e21: DUP6 00000e22: SWAP1 00000e23: SHL 00000e24: AND 00000e25: DUP2 00000e26: MSTORE 00000e27: PUSH1 0x01 00000e29: PUSH1 0x01 00000e2b: PUSH1 0xa0 00000e2d: SHL 00000e2e: SUB 00000e2f: SWAP1 00000e30: SWAP3 00000e31: AND 00000e32: PUSH1 0x04 00000e34: DUP4 00000e35: ADD 00000e36: MSTORE 00000e37: PUSH1 0x24 00000e39: DUP3 00000e3a: ADD 00000e3b: MSTORE 00000e3c: PUSH1 0x44 00000e3e: ADD 00000e3f: PUSH1 0x20 00000e41: PUSH1 0x40 00000e43: MLOAD 00000e44: DUP1 00000e45: DUP4 00000e46: SUB 00000e47: DUP2 00000e48: PUSH1 0x00 00000e4a: DUP8 00000e4b: DUP1 00000e4c: EXTCODESIZE 00000e4d: ISZERO 00000e4e: DUP1 00000e4f: ISZERO 00000e50: PUSH2 0x0e58 00000e53: JUMPI 00000e54: PUSH1 0x00 00000e56: DUP1 00000e57: REVERT 00000e58: JUMPDEST 00000e59: POP 00000e5a: GAS 00000e5b: CALL 00000e5c: ISZERO 00000e5d: DUP1 00000e5e: ISZERO 00000e5f: PUSH2 0x0e6c 00000e62: JUMPI 00000e63: RETURNDATASIZE 00000e64: PUSH1 0x00 00000e66: DUP1 00000e67: RETURNDATACOPY 00000e68: RETURNDATASIZE 00000e69: PUSH1 0x00 00000e6b: REVERT 00000e6c: JUMPDEST 00000e6d: POP 00000e6e: POP 00000e6f: POP 00000e70: POP 00000e71: PUSH1 0x40 00000e73: MLOAD 00000e74: RETURNDATASIZE 00000e75: PUSH1 0x1f 00000e77: NOT 00000e78: PUSH1 0x1f 00000e7a: DUP3 00000e7b: ADD 00000e7c: AND 00000e7d: DUP3 00000e7e: ADD 00000e7f: DUP1 00000e80: PUSH1 0x40 00000e82: MSTORE 00000e83: POP 00000e84: DUP2 00000e85: ADD 00000e86: SWAP1 00000e87: PUSH2 0x0e90 00000e8a: SWAP2 00000e8b: SWAP1 00000e8c: PUSH2 0x12bd 00000e8f: JUMP 00000e90: JUMPDEST 00000e91: POP 00000e92: POP 00000e93: PUSH1 0x01 00000e95: PUSH1 0x65 00000e97: SSTORE 00000e98: POP 00000e99: POP 00000e9a: POP 00000e9b: POP 00000e9c: POP 00000e9d: POP 00000e9e: POP 00000e9f: JUMP 00000ea0: JUMPDEST 00000ea1: PUSH1 0x33 00000ea3: SLOAD 00000ea4: PUSH1 0x01 00000ea6: PUSH1 0x01 00000ea8: PUSH1 0xa0 00000eaa: SHL 00000eab: SUB 00000eac: AND 00000ead: CALLER 00000eae: EQ 00000eaf: PUSH2 0x0eca 00000eb2: JUMPI 00000eb3: PUSH1 0x40 00000eb5: MLOAD 00000eb6: PUSH3 0x461bcd 00000eba: PUSH1 0xe5 00000ebc: SHL 00000ebd: DUP2 00000ebe: MSTORE 00000ebf: PUSH1 0x04 00000ec1: ADD 00000ec2: PUSH2 0x044e 00000ec5: SWAP1 00000ec6: PUSH2 0x13ed 00000ec9: JUMP 00000eca: JUMPDEST 00000ecb: PUSH1 0x97 00000ecd: SLOAD 00000ece: PUSH1 0x40 00000ed0: MLOAD 00000ed1: PUSH4 0xa9059cbb 00000ed6: PUSH1 0xe0 00000ed8: SHL 00000ed9: DUP2 00000eda: MSTORE 00000edb: CALLER 00000edc: PUSH1 0x04 00000ede: DUP3 00000edf: ADD 00000ee0: MSTORE 00000ee1: PUSH1 0x24 00000ee3: DUP2 00000ee4: ADD 00000ee5: DUP4 00000ee6: SWAP1 00000ee7: MSTORE 00000ee8: PUSH1 0x01 00000eea: PUSH1 0x01 00000eec: PUSH1 0xa0 00000eee: SHL 00000eef: SUB 00000ef0: SWAP1 00000ef1: SWAP2 00000ef2: AND 00000ef3: SWAP1 00000ef4: PUSH4 0xa9059cbb 00000ef9: SWAP1 00000efa: PUSH1 0x44 00000efc: ADD 00000efd: PUSH1 0x20 00000eff: PUSH1 0x40 00000f01: MLOAD 00000f02: DUP1 00000f03: DUP4 00000f04: SUB 00000f05: DUP2 00000f06: PUSH1 0x00 00000f08: DUP8 00000f09: DUP1 00000f0a: EXTCODESIZE 00000f0b: ISZERO 00000f0c: DUP1 00000f0d: ISZERO 00000f0e: PUSH2 0x0f16 00000f11: JUMPI 00000f12: PUSH1 0x00 00000f14: DUP1 00000f15: REVERT 00000f16: JUMPDEST 00000f17: POP 00000f18: GAS 00000f19: CALL 00000f1a: ISZERO 00000f1b: DUP1 00000f1c: ISZERO 00000f1d: PUSH2 0x0f2a 00000f20: JUMPI 00000f21: RETURNDATASIZE 00000f22: PUSH1 0x00 00000f24: DUP1 00000f25: RETURNDATACOPY 00000f26: RETURNDATASIZE 00000f27: PUSH1 0x00 00000f29: REVERT 00000f2a: JUMPDEST 00000f2b: POP 00000f2c: POP 00000f2d: POP 00000f2e: POP 00000f2f: PUSH1 0x40 00000f31: MLOAD 00000f32: RETURNDATASIZE 00000f33: PUSH1 0x1f 00000f35: NOT 00000f36: PUSH1 0x1f 00000f38: DUP3 00000f39: ADD 00000f3a: AND 00000f3b: DUP3 00000f3c: ADD 00000f3d: DUP1 00000f3e: PUSH1 0x40 00000f40: MSTORE 00000f41: POP 00000f42: DUP2 00000f43: ADD 00000f44: SWAP1 00000f45: PUSH2 0x061c 00000f48: SWAP2 00000f49: SWAP1 00000f4a: PUSH2 0x12bd 00000f4d: JUMP 00000f4e: JUMPDEST 00000f4f: PUSH1 0x33 00000f51: SLOAD 00000f52: PUSH1 0x01 00000f54: PUSH1 0x01 00000f56: PUSH1 0xa0 00000f58: SHL 00000f59: SUB 00000f5a: AND 00000f5b: CALLER 00000f5c: EQ 00000f5d: PUSH2 0x0f78 00000f60: JUMPI 00000f61: PUSH1 0x40 00000f63: MLOAD 00000f64: PUSH3 0x461bcd 00000f68: PUSH1 0xe5 00000f6a: SHL 00000f6b: DUP2 00000f6c: MSTORE 00000f6d: PUSH1 0x04 00000f6f: ADD 00000f70: PUSH2 0x044e 00000f73: SWAP1 00000f74: PUSH2 0x13ed 00000f77: JUMP 00000f78: JUMPDEST 00000f79: PUSH1 0x01 00000f7b: PUSH1 0x01 00000f7d: PUSH1 0xa0 00000f7f: SHL 00000f80: SUB 00000f81: DUP2 00000f82: AND 00000f83: PUSH2 0x0fdd 00000f86: JUMPI 00000f87: PUSH1 0x40 00000f89: MLOAD 00000f8a: PUSH3 0x461bcd 00000f8e: PUSH1 0xe5 00000f90: SHL 00000f91: DUP2 00000f92: MSTORE 00000f93: PUSH1 0x20 00000f95: PUSH1 0x04 00000f97: DUP3 00000f98: ADD 00000f99: MSTORE 00000f9a: PUSH1 0x26 00000f9c: PUSH1 0x24 00000f9e: DUP3 00000f9f: ADD 00000fa0: MSTORE 00000fa1: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00000fc2: PUSH1 0x44 00000fc4: DUP3 00000fc5: ADD 00000fc6: MSTORE 00000fc7: PUSH6 0x646472657373 00000fce: PUSH1 0xd0 00000fd0: SHL 00000fd1: PUSH1 0x64 00000fd3: DUP3 00000fd4: ADD 00000fd5: MSTORE 00000fd6: PUSH1 0x84 00000fd8: ADD 00000fd9: PUSH2 0x044e 00000fdc: JUMP 00000fdd: JUMPDEST 00000fde: PUSH2 0x0fe6 00000fe1: DUP2 00000fe2: PUSH2 0x10a5 00000fe5: JUMP 00000fe6: JUMPDEST 00000fe7: POP 00000fe8: JUMP 00000fe9: JUMPDEST 00000fea: PUSH1 0x33 00000fec: SLOAD 00000fed: PUSH1 0x01 00000fef: PUSH1 0x01 00000ff1: PUSH1 0xa0 00000ff3: SHL 00000ff4: SUB 00000ff5: AND 00000ff6: CALLER 00000ff7: EQ 00000ff8: PUSH2 0x1013 00000ffb: JUMPI 00000ffc: PUSH1 0x40 00000ffe: MLOAD 00000fff: PUSH3 0x461bcd 00001003: PUSH1 0xe5 00001005: SHL 00001006: DUP2 00001007: MSTORE 00001008: PUSH1 0x04 0000100a: ADD 0000100b: PUSH2 0x044e 0000100e: SWAP1 0000100f: PUSH2 0x13ed 00001012: JUMP 00001013: JUMPDEST 00001014: PUSH1 0x40 00001016: DUP1 00001017: MLOAD 00001018: PUSH1 0x60 0000101a: DUP2 0000101b: ADD 0000101c: DUP3 0000101d: MSTORE 0000101e: PUSH1 0x00 00001020: DUP1 00001021: DUP3 00001022: MSTORE 00001023: PUSH1 0x01 00001025: PUSH1 0x20 00001027: DUP1 00001028: DUP5 00001029: ADD 0000102a: DUP3 0000102b: DUP2 0000102c: MSTORE 0000102d: TIMESTAMP 0000102e: DUP6 0000102f: DUP8 00001030: ADD 00001031: SWAP1 00001032: DUP2 00001033: MSTORE 00001034: PUSH1 0x01 00001036: PUSH1 0x01 00001038: PUSH1 0xa0 0000103a: SHL 0000103b: SUB 0000103c: SWAP1 0000103d: SWAP8 0000103e: AND 0000103f: DUP5 00001040: MSTORE 00001041: PUSH1 0x9e 00001043: SWAP1 00001044: SWAP2 00001045: MSTORE 00001046: SWAP4 00001047: SWAP1 00001048: SWAP2 00001049: KECCAK256 0000104a: SWAP2 0000104b: MLOAD 0000104c: DUP3 0000104d: SSTORE 0000104e: SWAP2 0000104f: MLOAD 00001050: SWAP2 00001051: DUP2 00001052: ADD 00001053: SWAP2 00001054: SWAP1 00001055: SWAP2 00001056: SSTORE 00001057: SWAP1 00001058: MLOAD 00001059: PUSH1 0x02 0000105b: SWAP1 0000105c: SWAP2 0000105d: ADD 0000105e: SSTORE 0000105f: JUMP 00001060: JUMPDEST 00001061: PUSH1 0x9b 00001063: SLOAD 00001064: PUSH1 0x00 00001066: SWAP1 00001067: PUSH2 0x1070 0000106a: DUP4 0000106b: TIMESTAMP 0000106c: PUSH2 0x14c6 0000106f: JUMP 00001070: JUMPDEST 00001071: PUSH2 0x107a 00001074: SWAP2 00001075: SWAP1 00001076: PUSH2 0x1485 00001079: JUMP 0000107a: JUMPDEST 0000107b: SWAP1 0000107c: POP 0000107d: PUSH2 0x1094 00001080: DUP2 00001081: PUSH1 0x01 00001083: PUSH1 0x9c 00001085: SLOAD 00001086: PUSH2 0x108f 00001089: SWAP2 0000108a: SWAP1 0000108b: PUSH2 0x14c6 0000108e: JUMP 0000108f: JUMPDEST 00001090: PUSH2 0x11e2 00001093: JUMP 00001094: JUMPDEST 00001095: PUSH2 0x109f 00001098: SWAP1 00001099: PUSH1 0x01 0000109b: PUSH2 0x146d 0000109e: JUMP 0000109f: JUMPDEST 000010a0: SWAP3 000010a1: SWAP2 000010a2: POP 000010a3: POP 000010a4: JUMP 000010a5: JUMPDEST 000010a6: PUSH1 0x33 000010a8: DUP1 000010a9: SLOAD 000010aa: PUSH1 0x01 000010ac: PUSH1 0x01 000010ae: PUSH1 0xa0 000010b0: SHL 000010b1: SUB 000010b2: DUP4 000010b3: DUP2 000010b4: AND 000010b5: PUSH1 0x01 000010b7: PUSH1 0x01 000010b9: PUSH1 0xa0 000010bb: SHL 000010bc: SUB 000010bd: NOT 000010be: DUP4 000010bf: AND 000010c0: DUP2 000010c1: OR 000010c2: SWAP1 000010c3: SWAP4 000010c4: SSTORE 000010c5: PUSH1 0x40 000010c7: MLOAD 000010c8: SWAP2 000010c9: AND 000010ca: SWAP2 000010cb: SWAP1 000010cc: DUP3 000010cd: SWAP1 000010ce: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000010ef: SWAP1 000010f0: PUSH1 0x00 000010f2: SWAP1 000010f3: LOG3 000010f4: POP 000010f5: POP 000010f6: JUMP 000010f7: JUMPDEST 000010f8: PUSH1 0x00 000010fa: DUP1 000010fb: SLOAD 000010fc: PUSH2 0x0100 000010ff: SWAP1 00001100: DIV 00001101: PUSH1 0xff 00001103: AND 00001104: ISZERO 00001105: PUSH2 0x113e 00001108: JUMPI 00001109: DUP2 0000110a: PUSH1 0xff 0000110c: AND 0000110d: PUSH1 0x01 0000110f: EQ 00001110: DUP1 00001111: ISZERO 00001112: PUSH2 0x111a 00001115: JUMPI 00001116: POP 00001117: ADDRESS 00001118: EXTCODESIZE 00001119: ISZERO 0000111a: JUMPDEST 0000111b: PUSH2 0x1136 0000111e: JUMPI 0000111f: PUSH1 0x40 00001121: MLOAD 00001122: PUSH3 0x461bcd 00001126: PUSH1 0xe5 00001128: SHL 00001129: DUP2 0000112a: MSTORE 0000112b: PUSH1 0x04 0000112d: ADD 0000112e: PUSH2 0x044e 00001131: SWAP1 00001132: PUSH2 0x139f 00001135: JUMP 00001136: JUMPDEST 00001137: POP 00001138: PUSH1 0x00 0000113a: SWAP2 0000113b: SWAP1 0000113c: POP 0000113d: JUMP 0000113e: JUMPDEST 0000113f: PUSH1 0x00 00001141: SLOAD 00001142: PUSH1 0xff 00001144: DUP1 00001145: DUP5 00001146: AND 00001147: SWAP2 00001148: AND 00001149: LT 0000114a: PUSH2 0x1165 0000114d: JUMPI 0000114e: PUSH1 0x40 00001150: MLOAD 00001151: PUSH3 0x461bcd 00001155: PUSH1 0xe5 00001157: SHL 00001158: DUP2 00001159: MSTORE 0000115a: PUSH1 0x04 0000115c: ADD 0000115d: PUSH2 0x044e 00001160: SWAP1 00001161: PUSH2 0x139f 00001164: JUMP 00001165: JUMPDEST 00001166: POP 00001167: PUSH1 0x00 00001169: DUP1 0000116a: SLOAD 0000116b: PUSH1 0xff 0000116d: NOT 0000116e: AND 0000116f: PUSH1 0xff 00001171: SWAP3 00001172: SWAP1 00001173: SWAP3 00001174: AND 00001175: SWAP2 00001176: SWAP1 00001177: SWAP2 00001178: OR 00001179: SWAP1 0000117a: SSTORE 0000117b: PUSH1 0x01 0000117d: SWAP1 0000117e: JUMP 0000117f: JUMPDEST 00001180: SWAP2 00001181: SWAP1 00001182: POP 00001183: JUMP 00001184: JUMPDEST 00001185: PUSH1 0x00 00001187: SLOAD 00001188: PUSH2 0x0100 0000118b: SWAP1 0000118c: DIV 0000118d: PUSH1 0xff 0000118f: AND 00001190: PUSH2 0x11ab 00001193: JUMPI 00001194: PUSH1 0x40 00001196: MLOAD 00001197: PUSH3 0x461bcd 0000119b: PUSH1 0xe5 0000119d: SHL 0000119e: DUP2 0000119f: MSTORE 000011a0: PUSH1 0x04 000011a2: ADD 000011a3: PUSH2 0x044e 000011a6: SWAP1 000011a7: PUSH2 0x1422 000011aa: JUMP 000011ab: JUMPDEST 000011ac: PUSH2 0x0924 000011af: PUSH2 0x11fa 000011b2: JUMP 000011b3: JUMPDEST 000011b4: PUSH1 0x00 000011b6: SLOAD 000011b7: PUSH2 0x0100 000011ba: SWAP1 000011bb: DIV 000011bc: PUSH1 0xff 000011be: AND 000011bf: PUSH2 0x11da 000011c2: JUMPI 000011c3: PUSH1 0x40 000011c5: MLOAD 000011c6: PUSH3 0x461bcd 000011ca: PUSH1 0xe5 000011cc: SHL 000011cd: DUP2 000011ce: MSTORE 000011cf: PUSH1 0x04 000011d1: ADD 000011d2: PUSH2 0x044e 000011d5: SWAP1 000011d6: PUSH2 0x1422 000011d9: JUMP 000011da: JUMPDEST 000011db: PUSH2 0x0924 000011de: PUSH2 0x122a 000011e1: JUMP 000011e2: JUMPDEST 000011e3: PUSH1 0x00 000011e5: DUP2 000011e6: DUP4 000011e7: LT 000011e8: PUSH2 0x11f1 000011eb: JUMPI 000011ec: DUP2 000011ed: PUSH2 0x11f3 000011f0: JUMP 000011f1: JUMPDEST 000011f2: DUP3 000011f3: JUMPDEST 000011f4: SWAP4 000011f5: SWAP3 000011f6: POP 000011f7: POP 000011f8: POP 000011f9: JUMP 000011fa: JUMPDEST 000011fb: PUSH1 0x00 000011fd: SLOAD 000011fe: PUSH2 0x0100 00001201: SWAP1 00001202: DIV 00001203: PUSH1 0xff 00001205: AND 00001206: PUSH2 0x1221 00001209: JUMPI 0000120a: PUSH1 0x40 0000120c: MLOAD 0000120d: PUSH3 0x461bcd 00001211: PUSH1 0xe5 00001213: SHL 00001214: DUP2 00001215: MSTORE 00001216: PUSH1 0x04 00001218: ADD 00001219: PUSH2 0x044e 0000121c: SWAP1 0000121d: PUSH2 0x1422 00001220: JUMP 00001221: JUMPDEST 00001222: PUSH2 0x0924 00001225: CALLER 00001226: PUSH2 0x10a5 00001229: JUMP 0000122a: JUMPDEST 0000122b: PUSH1 0x00 0000122d: SLOAD 0000122e: PUSH2 0x0100 00001231: SWAP1 00001232: DIV 00001233: PUSH1 0xff 00001235: AND 00001236: PUSH2 0x1251 00001239: JUMPI 0000123a: PUSH1 0x40 0000123c: MLOAD 0000123d: PUSH3 0x461bcd 00001241: PUSH1 0xe5 00001243: SHL 00001244: DUP2 00001245: MSTORE 00001246: PUSH1 0x04 00001248: ADD 00001249: PUSH2 0x044e 0000124c: SWAP1 0000124d: PUSH2 0x1422 00001250: JUMP 00001251: JUMPDEST 00001252: PUSH1 0x01 00001254: PUSH1 0x65 00001256: SSTORE 00001257: JUMP 00001258: JUMPDEST 00001259: DUP1 0000125a: CALLDATALOAD 0000125b: PUSH1 0x01 0000125d: PUSH1 0x01 0000125f: PUSH1 0xa0 00001261: SHL 00001262: SUB 00001263: DUP2 00001264: AND 00001265: DUP2 00001266: EQ 00001267: PUSH2 0x117f 0000126a: JUMPI 0000126b: PUSH1 0x00 0000126d: DUP1 0000126e: REVERT 0000126f: JUMPDEST 00001270: PUSH1 0x00 00001272: PUSH1 0x20 00001274: DUP3 00001275: DUP5 00001276: SUB 00001277: SLT 00001278: ISZERO 00001279: PUSH2 0x1281 0000127c: JUMPI 0000127d: PUSH1 0x00 0000127f: DUP1 00001280: REVERT 00001281: JUMPDEST 00001282: PUSH2 0x11f3 00001285: DUP3 00001286: PUSH2 0x1258 00001289: JUMP 0000128a: JUMPDEST 0000128b: PUSH1 0x00 0000128d: DUP1 0000128e: PUSH1 0x00 00001290: PUSH1 0x60 00001292: DUP5 00001293: DUP7 00001294: SUB 00001295: SLT 00001296: ISZERO 00001297: PUSH2 0x129f 0000129a: JUMPI 0000129b: PUSH1 0x00 0000129d: DUP1 0000129e: REVERT 0000129f: JUMPDEST 000012a0: PUSH2 0x12a8 000012a3: DUP5 000012a4: PUSH2 0x1258 000012a7: JUMP 000012a8: JUMPDEST 000012a9: SWAP6 000012aa: PUSH1 0x20 000012ac: DUP6 000012ad: ADD 000012ae: CALLDATALOAD 000012af: SWAP6 000012b0: POP 000012b1: PUSH1 0x40 000012b3: SWAP1 000012b4: SWAP5 000012b5: ADD 000012b6: CALLDATALOAD 000012b7: SWAP4 000012b8: SWAP3 000012b9: POP 000012ba: POP 000012bb: POP 000012bc: JUMP 000012bd: JUMPDEST 000012be: PUSH1 0x00 000012c0: PUSH1 0x20 000012c2: DUP3 000012c3: DUP5 000012c4: SUB 000012c5: SLT 000012c6: ISZERO 000012c7: PUSH2 0x12cf 000012ca: JUMPI 000012cb: PUSH1 0x00 000012cd: DUP1 000012ce: REVERT 000012cf: JUMPDEST 000012d0: DUP2 000012d1: MLOAD 000012d2: DUP1 000012d3: ISZERO 000012d4: ISZERO 000012d5: DUP2 000012d6: EQ 000012d7: PUSH2 0x11f3 000012da: JUMPI 000012db: PUSH1 0x00 000012dd: DUP1 000012de: REVERT 000012df: JUMPDEST 000012e0: PUSH1 0x00 000012e2: PUSH1 0x20 000012e4: DUP3 000012e5: DUP5 000012e6: SUB 000012e7: SLT 000012e8: ISZERO 000012e9: PUSH2 0x12f1 000012ec: JUMPI 000012ed: PUSH1 0x00 000012ef: DUP1 000012f0: REVERT 000012f1: JUMPDEST 000012f2: POP 000012f3: CALLDATALOAD 000012f4: SWAP2 000012f5: SWAP1 000012f6: POP 000012f7: JUMP 000012f8: JUMPDEST 000012f9: PUSH1 0x00 000012fb: DUP1 000012fc: PUSH1 0x40 000012fe: DUP4 000012ff: DUP6 00001300: SUB 00001301: SLT 00001302: ISZERO 00001303: PUSH2 0x130b 00001306: JUMPI 00001307: PUSH1 0x00 00001309: DUP1 0000130a: REVERT 0000130b: JUMPDEST 0000130c: POP 0000130d: POP 0000130e: DUP1 0000130f: CALLDATALOAD 00001310: SWAP3 00001311: PUSH1 0x20 00001313: SWAP1 00001314: SWAP2 00001315: ADD 00001316: CALLDATALOAD 00001317: SWAP2 00001318: POP 00001319: JUMP 0000131a: JUMPDEST 0000131b: PUSH1 0x00 0000131d: DUP1 0000131e: PUSH1 0x00 00001320: DUP1 00001321: PUSH1 0x00 00001323: DUP1 00001324: PUSH1 0xc0 00001326: DUP8 00001327: DUP10 00001328: SUB 00001329: SLT 0000132a: ISZERO 0000132b: PUSH2 0x1333 0000132e: JUMPI 0000132f: PUSH1 0x00 00001331: DUP1 00001332: REVERT 00001333: JUMPDEST 00001334: DUP7 00001335: CALLDATALOAD 00001336: SWAP6 00001337: POP 00001338: PUSH1 0x20 0000133a: DUP8 0000133b: ADD 0000133c: CALLDATALOAD 0000133d: SWAP5 0000133e: POP 0000133f: PUSH1 0x40 00001341: DUP8 00001342: ADD 00001343: CALLDATALOAD 00001344: SWAP4 00001345: POP 00001346: PUSH1 0x60 00001348: DUP8 00001349: ADD 0000134a: CALLDATALOAD 0000134b: PUSH1 0xff 0000134d: DUP2 0000134e: AND 0000134f: DUP2 00001350: EQ 00001351: PUSH2 0x1359 00001354: JUMPI 00001355: PUSH1 0x00 00001357: DUP1 00001358: REVERT 00001359: JUMPDEST 0000135a: SWAP6 0000135b: SWAP9 0000135c: SWAP5 0000135d: SWAP8 0000135e: POP 0000135f: SWAP3 00001360: SWAP6 00001361: PUSH1 0x80 00001363: DUP2 00001364: ADD 00001365: CALLDATALOAD 00001366: SWAP5 00001367: PUSH1 0xa0 00001369: SWAP1 0000136a: SWAP2 0000136b: ADD 0000136c: CALLDATALOAD 0000136d: SWAP4 0000136e: POP 0000136f: SWAP2 00001370: POP 00001371: POP 00001372: JUMP 00001373: JUMPDEST 00001374: PUSH1 0x00 00001376: DUP1 00001377: PUSH1 0x00 00001379: PUSH1 0x60 0000137b: DUP5 0000137c: DUP7 0000137d: SUB 0000137e: SLT 0000137f: ISZERO 00001380: PUSH2 0x1388 00001383: JUMPI 00001384: PUSH1 0x00 00001386: DUP1 00001387: REVERT 00001388: JUMPDEST 00001389: POP 0000138a: POP 0000138b: DUP2 0000138c: CALLDATALOAD 0000138d: SWAP4 0000138e: PUSH1 0x20 00001390: DUP4 00001391: ADD 00001392: CALLDATALOAD 00001393: SWAP4 00001394: POP 00001395: PUSH1 0x40 00001397: SWAP1 00001398: SWAP3 00001399: ADD 0000139a: CALLDATALOAD 0000139b: SWAP2 0000139c: SWAP1 0000139d: POP 0000139e: JUMP 0000139f: JUMPDEST 000013a0: PUSH1 0x20 000013a2: DUP1 000013a3: DUP3 000013a4: MSTORE 000013a5: PUSH1 0x2e 000013a7: SWAP1 000013a8: DUP3 000013a9: ADD 000013aa: MSTORE 000013ab: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 000013cc: PUSH1 0x40 000013ce: DUP3 000013cf: ADD 000013d0: MSTORE 000013d1: PUSH14 0x191e481a5b9a5d1a585b1a5e9959 000013e0: PUSH1 0x92 000013e2: SHL 000013e3: PUSH1 0x60 000013e5: DUP3 000013e6: ADD 000013e7: MSTORE 000013e8: PUSH1 0x80 000013ea: ADD 000013eb: SWAP1 000013ec: JUMP 000013ed: JUMPDEST 000013ee: PUSH1 0x20 000013f0: DUP1 000013f1: DUP3 000013f2: MSTORE 000013f3: DUP2 000013f4: DUP2 000013f5: ADD 000013f6: MSTORE 000013f7: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001418: PUSH1 0x40 0000141a: DUP3 0000141b: ADD 0000141c: MSTORE 0000141d: PUSH1 0x60 0000141f: ADD 00001420: SWAP1 00001421: JUMP 00001422: JUMPDEST 00001423: PUSH1 0x20 00001425: DUP1 00001426: DUP3 00001427: MSTORE 00001428: PUSH1 0x2b 0000142a: SWAP1 0000142b: DUP3 0000142c: ADD 0000142d: MSTORE 0000142e: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 0000144f: PUSH1 0x40 00001451: DUP3 00001452: ADD 00001453: MSTORE 00001454: PUSH11 0x6e697469616c697a696e67 00001460: PUSH1 0xa8 00001462: SHL 00001463: PUSH1 0x60 00001465: DUP3 00001466: ADD 00001467: MSTORE 00001468: PUSH1 0x80 0000146a: ADD 0000146b: SWAP1 0000146c: JUMP 0000146d: JUMPDEST 0000146e: PUSH1 0x00 00001470: DUP3 00001471: NOT 00001472: DUP3 00001473: GT 00001474: ISZERO 00001475: PUSH2 0x1480 00001478: JUMPI 00001479: PUSH2 0x1480 0000147c: PUSH2 0x14f8 0000147f: JUMP 00001480: JUMPDEST 00001481: POP 00001482: ADD 00001483: SWAP1 00001484: JUMP 00001485: JUMPDEST 00001486: PUSH1 0x00 00001488: DUP3 00001489: PUSH2 0x14a2 0000148c: JUMPI 0000148d: PUSH4 0x4e487b71 00001492: PUSH1 0xe0 00001494: SHL 00001495: PUSH1 0x00 00001497: MSTORE 00001498: PUSH1 0x12 0000149a: PUSH1 0x04 0000149c: MSTORE 0000149d: PUSH1 0x24 0000149f: PUSH1 0x00 000014a1: REVERT 000014a2: JUMPDEST 000014a3: POP 000014a4: DIV 000014a5: SWAP1 000014a6: JUMP 000014a7: JUMPDEST 000014a8: PUSH1 0x00 000014aa: DUP2 000014ab: PUSH1 0x00 000014ad: NOT 000014ae: DIV 000014af: DUP4 000014b0: GT 000014b1: DUP3 000014b2: ISZERO 000014b3: ISZERO 000014b4: AND 000014b5: ISZERO 000014b6: PUSH2 0x14c1 000014b9: JUMPI 000014ba: PUSH2 0x14c1 000014bd: PUSH2 0x14f8 000014c0: JUMP 000014c1: JUMPDEST 000014c2: POP 000014c3: MUL 000014c4: SWAP1 000014c5: JUMP 000014c6: JUMPDEST 000014c7: PUSH1 0x00 000014c9: DUP3 000014ca: DUP3 000014cb: LT 000014cc: ISZERO 000014cd: PUSH2 0x14d8 000014d0: JUMPI 000014d1: PUSH2 0x14d8 000014d4: PUSH2 0x14f8 000014d7: JUMP 000014d8: JUMPDEST 000014d9: POP 000014da: SUB 000014db: SWAP1 000014dc: JUMP 000014dd: JUMPDEST 000014de: PUSH1 0x00 000014e0: PUSH1 0x00 000014e2: NOT 000014e3: DUP3 000014e4: EQ 000014e5: ISZERO 000014e6: PUSH2 0x14f1 000014e9: JUMPI 000014ea: PUSH2 0x14f1 000014ed: PUSH2 0x14f8 000014f0: JUMP 000014f1: JUMPDEST 000014f2: POP 000014f3: PUSH1 0x01 000014f5: ADD 000014f6: SWAP1 000014f7: JUMP 000014f8: JUMPDEST 000014f9: PUSH4 0x4e487b71 000014fe: PUSH1 0xe0 00001500: SHL 00001501: PUSH1 0x00 00001503: MSTORE 00001504: PUSH1 0x11 00001506: PUSH1 0x04 00001508: MSTORE 00001509: PUSH1 0x24 0000150b: PUSH1 0x00 0000150d: REVERT 0000150e: INVALID 0000150f: LOG2 00001510: PUSH5 0x6970667358 00001516: UNKNOWN(0x22) 00001517: SLT 00001518: KECCAK256 00001519: PUSH24 0x818819284c8c017cfc7aabe377f0b84e1b4a7a4f6e002032 00001532: PUSH0 00001533: UNKNOWN(0xC8) 00001534: UNKNOWN(0xB7) 00001535: EXP 00001536: UNKNOWN(0xB2) 00001537: SWAP1 00001538: PC 00001539: PUSH5 0x736f6c6343 0000153f: STOP 00001540: ADDMOD 00001541: SMOD 00001542: STOP 00001543: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | math | codex | Intervals claimed only incremented by 1 enables repeated over-claims | 85 | no | — |
viewevidence_json{
"evidence": "claim() increments intervalsClaimed by 1 after totalClaimable() calculates based on (intervalsElapsed - intervalsClaimed), so claimed intervals are not fully accounted for.",
"locations": [
"contracts/WarriorAllianceNFT/AmmoVault.sol:119",
"contracts/WarriorAllianceNFT/AmmoVault.sol:130",
"contracts/WarriorAllianceNFT/AmmoVault.sol:181",
"contracts/WarriorAllianceNFT/AmmoVault.sol:196"
],
"recommendation": "After paying for all elapsed intervals, set intervalsClaimed to the current intervalsElapsed (or increment by intervalsElapsed - previous intervalsClaimed). This ensures each interval is only claimable once.",
"exploit_scenario": "A user waits until multiple intervals have elapsed, then calls claim(). totalClaimable() pays for all elapsed-but-unclaimed intervals, but claim() only increments intervalsClaimed by 1. The user can immediately call claim() again to receive the same elapsed intervals again (minus one), repeating until totalIntervals is exhausted and extracting far more tokens than their allocation."
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xccfa5bb3fd0907efa31ea49405bd889a3a4837aeb95414dc2b91f42146fc3abd
call_targets:
0x6097a40e38fa1aeea072babfaadea1f513e970a8
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xccfa5bb3fd0907efa31ea49405bd889a3a4837aeb95414dc2b91f42146fc3abd",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6097a40e38fa1aeea072babfaadea1f513e970a8"
],
"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": "0xb4256888",
"selector": "0xb4256888",
"calldata_variants": [
"0xb4256888",
"0xb42568880000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcee9cef8",
"selector": "0xcee9cef8",
"calldata_variants": [
"0xcee9cef8",
"0xcee9cef80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd78276c6",
"selector": "0xd78276c6",
"calldata_variants": [
"0xd78276c6",
"0xd78276c60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfcbca456",
"selector": "0xfcbca456",
"calldata_variants": [
"0xfcbca456",
"0xfcbca4560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7a1ac61e",
"selector": "0x7a1ac61e",
"calldata_variants": [
"0x7a1ac61e",
"0x7a1ac61e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1443,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2084,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3675,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xccfa5bb3fd0907efa31ea49405bd889a3a4837aeb95414dc2b91f42146fc3abd
call_targets:
0x6097a40e38fa1aeea072babfaadea1f513e970a8
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xccfa5bb3fd0907efa31ea49405bd889a3a4837aeb95414dc2b91f42146fc3abd",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x6097a40e38fa1aeea072babfaadea1f513e970a8"
],
"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": "0xb4256888",
"selector": "0xb4256888",
"calldata_variants": [
"0xb4256888",
"0xb42568880000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcee9cef8",
"selector": "0xcee9cef8",
"calldata_variants": [
"0xcee9cef8",
"0xcee9cef80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd78276c6",
"selector": "0xd78276c6",
"calldata_variants": [
"0xd78276c6",
"0xd78276c60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0c546a",
"selector": "0xfc0c546a",
"calldata_variants": [
"0xfc0c546a",
"0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfcbca456",
"selector": "0xfcbca456",
"calldata_variants": [
"0xfcbca456",
"0xfcbca4560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x715018a6",
"selector": "0x715018a6",
"calldata_variants": [
"0x715018a6",
"0x715018a60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7a1ac61e",
"selector": "0x7a1ac61e",
"calldata_variants": [
"0x7a1ac61e",
"0x7a1ac61e0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1443,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2084,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3675,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| medium | auth | codex | Whitelist signature lacks domain separation, enabling replay across contracts/chains | 75 | no | — |
viewevidence_json{
"evidence": "The signed payload only hashes msg.sender and maxAmount, and uses a raw EIP-191 prefix without domain separation or nonce.",
"locations": [
"contracts/WarriorAllianceNFT/AmmoVault.sol:149",
"contracts/WarriorAllianceNFT/AmmoVault.sol:155"
],
"recommendation": "Use EIP-712 typed data with domain separator including contract address and chainId, and include a nonce or unique identifier in the signed message. Optionally include the exact amount intended to be purchased.",
"exploit_scenario": "A user obtains a valid signature for (user, maxAmount) from the owner on one deployment or chain. Because the signed payload does not include the contract address, chainId, or a nonce, the same signature can be replayed on another deployment or chain where the owner key is the same, allowing unauthorized registrations/claims."
}
|
| low | other | codex | Unchecked ERC20 transfer return values can desync accounting | 65 | no | — |
viewevidence_json{
"evidence": "token.transfer(...) calls are not checked for return values.",
"locations": [
"contracts/WarriorAllianceNFT/AmmoVault.sol:110",
"contracts/WarriorAllianceNFT/AmmoVault.sol:133",
"contracts/WarriorAllianceNFT/AmmoVault.sol:172"
],
"recommendation": "Use SafeERC20 (safeTransfer/safeTransferFrom) or require(token.transfer(...)) to ensure failures revert.",
"exploit_scenario": "If the ERC20 token returns false (non-standard behavior) instead of reverting, claim() and whitelistRegister() will update user state as if tokens were paid, while no tokens are transferred. This can lock user allocations and misrepresent payouts."
}
|