019c0ea9-073f-707e-aad6-50c2613920db
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 |
|---|---|---|---|---|
| 41550 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41551 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41552 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41553 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41554 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41555 | detector.run | complete | 1 / 3 | 2 months ago |
| 41556 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42198 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 42199 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-7c_zlgus)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-7c_zlgus)
FromResponsibleInvestors (contracts/Contract.sol#155-415) contract sets array length with a user-controlled value:
- depositors[msg.sender].push(Queue.length - 1) (contracts/Contract.sol#218)
FromResponsibleInvestors (contracts/Contract.sol#155-415) contract sets array length with a user-controlled value:
- depositors[depositor].push(ImportedQueue.length - 1) (contracts/Contract.sol#301-302)
FromResponsibleInvestors (contracts/Contract.sol#155-415) contract sets array length with a user-controlled value:
- Queue.push(Deposit({depositor:msg.sender,deposit:msg.value,expects:expect,paymentTime:0})) (contracts/Contract.sol#214-216)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment
Reentrancy in FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303):
External calls:
- maxLen = ImportContract.getLastDepositId() (contracts/Contract.sol#283-284)
- (depositor,amount,depositeTime,paymentTime) = ImportContract.getDeposit(i) (contracts/Contract.sol#286-289)
State variables written after the call(s):
- ImportedQueue.push(Deposit({depositor:depositor,deposit:uint256(amount),expects:uint256(MULTIPLIER.mul(amount)),paymentTime:0})) (contracts/Contract.sol#299-301)
FromResponsibleInvestors.ImportedQueue (contracts/Contract.sol#185) can be used in cross function reentrancies:
- FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303)
- FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255)
- FromResponsibleInvestors.getImportedDeposit(uint256) (contracts/Contract.sol#338-343)
- FromResponsibleInvestors.getImportedDepositsCount() (contracts/Contract.sol#327-328)
- FromResponsibleInvestors.getImportedUserDeposits(address) (contracts/Contract.sol#395-415)
- FromResponsibleInvestors.getImportedUserDepositsCount(address) (contracts/Contract.sol#362-371)
- FromResponsibleInvestors.getLastImportedPayments(uint256) (contracts/Contract.sol#352-355)
- FromResponsibleInvestors.setMinBalanceForDistribution() (contracts/Contract.sol#258-274)
- depositors[depositor].push(ImportedQueue.length - 1) (contracts/Contract.sol#301-302)
FromResponsibleInvestors.depositors (contracts/Contract.sol#187-190) can be used in cross function reentrancies:
- FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303)
- FromResponsibleInvestors.depositors (contracts/Contract.sol#187-190)
- FromResponsibleInvestors.fallback() (contracts/Contract.sol#204-223)
- FromResponsibleInvestors.getUserDeposits(address) (contracts/Contract.sol#372-391)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
FromResponsibleInvestors.fallback() (contracts/Contract.sol#204-223) ignores return value by advertisingAddress.send(advertperc) (contracts/Contract.sol#220)
FromResponsibleInvestors.fallback() (contracts/Contract.sol#204-223) ignores return value by adminsAddress.send(m_adminsPercent.mul(msg.value)) (contracts/Contract.sol#220-221)
FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255) ignores return value by ImportedQueue[currentImportedReceiverIndex].depositor.send(toSend) (contracts/Contract.sol#243-244)
FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255) ignores return value by Queue[currentReceiverIndex].depositor.send(toSend) (contracts/Contract.sol#251-252)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send
FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255) has external calls inside a loop: ImportedQueue[currentImportedReceiverIndex].depositor.send(toSend) (contracts/Contract.sol#243-244)
FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255) has external calls inside a loop: Queue[currentReceiverIndex].depositor.send(toSend) (contracts/Contract.sol#251-252)
FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303) has external calls inside a loop: (depositor,amount,depositeTime,paymentTime) = ImportContract.getDeposit(i) (contracts/Contract.sol#286-289)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303):
External calls:
- maxLen = ImportContract.getLastDepositId() (contracts/Contract.sol#283-284)
- (depositor,amount,depositeTime,paymentTime) = ImportContract.getDeposit(i) (contracts/Contract.sol#286-289)
Event emitted after the call(s):
- LogImportInvestorsPartComplete(now,c,_to) (contracts/Contract.sol#302-303)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255) has costly operations inside a loop:
- currentImportedReceiverIndex += 1 (contracts/Contract.sol#244-245)
FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255) has costly operations inside a loop:
- currentReceiverIndex += 1 (contracts/Contract.sol#252-253)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
Version constraint ^0.4.25 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- DirtyBytesArrayToStorage
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching
- EmptyByteArrayCopy
- DynamicArrayCleanup
- ImplicitConstructorCallvalueCheck
- TupleAssignmentMultiStackSlotComponents
- MemoryArrayCreationOverflow
- privateCanBeOverridden
- SignedArrayStorageCopy
- ABIEncoderV2StorageArrayWithMultiSlotElement
- DynamicConstructorArgumentsClippedABIV2
- UninitializedFunctionPointerInConstructor_0.4.x
- IncorrectEventSignatureInLibraries_0.4.x
- ABIEncoderV2PackedStorage_0.4.x.
It is used by:
- ^0.4.25 (contracts/Contract.sol#1)
solc-0.4.25 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Struct Percent.percent (contracts/Contract.sol#20-22) is not in CapWords
Parameter SafeMath.mul(uint256,uint256)._a (contracts/Contract.sol#46) is not in mixedCase
Parameter SafeMath.mul(uint256,uint256)._b (contracts/Contract.sol#46) is not in mixedCase
Parameter SafeMath.add(uint256,uint256)._a (contracts/Contract.sol#63) is not in mixedCase
Parameter SafeMath.add(uint256,uint256)._b (contracts/Contract.sol#63) is not in mixedCase
Contract distribution (contracts/Contract.sol#129-155) is not in CapWords
Function FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303) is not in mixedCase
Parameter FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256)._ImportContract (contracts/Contract.sol#274-275) is not in mixedCase
Parameter FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256)._from (contracts/Contract.sol#276-277) is not in mixedCase
Parameter FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256)._to (contracts/Contract.sol#277) is not in mixedCase
Variable FromResponsibleInvestors.m_adminsPercent (contracts/Contract.sol#168-169) is not in mixedCase
Variable FromResponsibleInvestors.m_advertisingPercent (contracts/Contract.sol#169-172) is not in mixedCase
Variable FromResponsibleInvestors.MULTIPLIER (contracts/Contract.sol#172-173) is not in mixedCase
Variable FromResponsibleInvestors.ImportedQueue (contracts/Contract.sol#185) is not in mixedCase
Variable FromResponsibleInvestors.Queue (contracts/Contract.sol#186) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Reentrancy in FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255):
External calls:
- ImportedQueue[currentImportedReceiverIndex].depositor.send(toSend) (contracts/Contract.sol#243-244)
- Queue[currentReceiverIndex].depositor.send(toSend) (contracts/Contract.sol#251-252)
State variables written after the call(s):
- ImportedQueue[currentImportedReceiverIndex].paymentTime = now (contracts/Contract.sol#242-243)
- Queue[currentReceiverIndex].paymentTime = now (contracts/Contract.sol#249-251)
- currentImportedReceiverIndex += 1 (contracts/Contract.sol#244-245)
- currentReceiverIndex += 1 (contracts/Contract.sol#252-253)
- setMinBalanceForDistribution() (contracts/Contract.sol#254-255)
- minBalanceForDistribution = Queue[currentReceiverIndex].expects (contracts/Contract.sol#265-267)
- minBalanceForDistribution = 12000000000000000000 (contracts/Contract.sol#267-268)
- minBalanceForDistribution = minBalanceForDistribution.add(importedExpects) (contracts/Contract.sol#272-274)
Reentrancy in FromResponsibleInvestors.fallback() (contracts/Contract.sol#204-223):
External calls:
- advertisingAddress.send(advertperc) (contracts/Contract.sol#220)
- adminsAddress.send(m_adminsPercent.mul(msg.value)) (contracts/Contract.sol#220-221)
State variables written after the call(s):
- advertAmountRaised += advertperc (contracts/Contract.sol#221-223)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4
distribution (contracts/Contract.sol#129-155) does not implement functions:
- distribution.getAllDepositesCount() (contracts/Contract.sol#147-151)
- distribution.getDeposit(uint256) (contracts/Contract.sol#153-155)
- distribution.getLastDepositId() (contracts/Contract.sol#151-153)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions
Loop condition i < Queue.length (contracts/Contract.sol#358) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < ImportedQueue.length (contracts/Contract.sol#365) should use cached array length instead of referencing `length` member of the storage array.
Loop condition i < ImportedQueue.length (contracts/Contract.sol#406) should use cached array length instead of referencing `length` member of the storage array.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length
distribution.amountForDistribution (contracts/Contract.sol#136-137) should be constant
distribution.amountRaised (contracts/Contract.sol#137-139) should be constant
distribution.currentPaymentIndex (contracts/Contract.sol#131-135) should be constant
distribution.depositorsCount (contracts/Contract.sol#135-136) should be constant
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant
. analyzed (6 contracts with 100 detectors), 41 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.4.25",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.4.25",
"install_stderr": null,
"install_stdout": "Version '0.4.25' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-7c_zlgus --allow-paths /tmp/slither-7c_zlgus,/tmp/slither-7c_zlgus/lib,/tmp/slither-7c_zlgus/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 41,
"workspace_hash": "c97644da65eaa6af4cc59e7a6e1d8ac9c16c02bf022612ec42b1c862ed42b328",
"duration_seconds": 0.8013045787811279,
"solc_version_requested": "0.4.25"
}
{"no_findings":false,"summary":"Unchecked send calls can silently skip payouts and mis-account, and imported deposit indices are mixed with main queue indices causing getUserDeposits to revert for some users.","findings":[{"severity":"medium","category":"other","title":"Unchecked send can silently skip payouts while advancing indices","exploit_scenario":"If a depositor is a contract whose fallback reverts or needs more than 2300 gas, `send` will return false. The code still sets `paymentTime` and advances the receiver index, permanently skipping that depositor while the balance remains available for later payouts. This results in incorrect accounting and lost payouts for the skipped depositor.","recommendation":"Use a pull-payment pattern (withdrawals), or check the return value of `send` and only advance indices on success (or revert on failure). Consider replacing `send` with `call.value(...)` and handling failure explicitly.","evidence":"`send` return values are ignored in `distribute` for both queues, but indices advance regardless of success.","locations":["contracts/Contract.sol:247","contracts/Contract.sol:253","contracts/Contract.sol:262"]},{"severity":"low","category":"other","title":"Imported deposit indices are mixed with main queue indices, breaking getUserDeposits","exploit_scenario":"During migration, imported deposit indices are appended into the same `depositors` array used for main queue indices. If a user’s imported entries precede later main-queue deposits, `getUserDeposits` will read an imported index and use it against the main `Queue`, potentially reverting or returning incorrect data. This can break off-chain integrations and user queries.","recommendation":"Track imported and main queue indices separately (e.g., two mappings), or store a struct indicating queue type and index so lookups don’t index the wrong array.","evidence":"Migration pushes `ImportedQueue` indices into `depositors`, while `getUserDeposits` assumes indices refer to `Queue`.","locations":["contracts/Contract.sol:288","contracts/Contract.sol:309","contracts/Contract.sol:388","contracts/Contract.sol:400"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-nxrcexx9
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0ec3-1257-71c1-9be8-e8d6b4456826
--------
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-nxrcexx9 succeeded in 8ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-nxrcexx9 succeeded in 10ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.25;
library Math {
function min(uint a, uint b) internal pure returns(uint) {
if (a > b) {
return b;
}
return a;
}
function max(uint a, uint b) internal pure returns(uint) {
if (a > b) {
return a;
}
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1,240p'" in /tmp/codex-nxrcexx9 succeeded in 6ms:
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/Contract.sol
6 ================================================================================
7 pragma solidity ^0.4.25;
8
9 library Math {
10 function min(uint a, uint b) internal pure returns(uint) {
11 if (a > b) {
12 return b;
13 }
14 return a;
15 }
16
17 function max(uint a, uint b) internal pure returns(uint) {
18 if (a > b) {
19 return a;
20 }
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '240,520p'" in /tmp/codex-nxrcexx9 succeeded in 6ms:
240 uint money = address(this).balance;
241 require(money >= minBalanceForDistribution, "Not enough funds to pay");//на балансе недостаточно денег для выплат
242 uint ImportedQueueLen = ImportedQueue.length;
243 uint QueueLen = Queue.length;
244 uint toSend = 0;
245 maxIterations = maxIterations.max(5);//минимум 5 итераций
246
247 for (uint i = 0; i < maxIterations; i++) {
248 if (currentImportedReceiverIndex < ImportedQueueLen){
249 toSend = ImportedQueue[currentImportedReceiverIndex].expects;
250 if (money >= toSend){
251 money = money.sub(toSend);
252 ImportedQueue[currentImportedReceiverIndex].paymentTime = now;
253 ImportedQueue[currentImportedReceiverIndex].depositor.send(toSend);
254 currentImportedReceiverIndex += 1;
255 }
256 }
257 if (currentReceiverIndex < QueueLen){
258 toSend = Queue[currentReceiverIndex].expects;
259 if (money >= toSend){
codex
{"no_findings":false,"summary":"Unchecked send calls can silently skip payouts and mis-account, and imported deposit indices are mixed with main queue indices causing getUserDeposits to revert for some users.","findings":[{"severity":"medium","category":"other","title":"Unchecked send can silently skip payouts while advancing indices","exploit_scenario":"If a depositor is a contract whose fallback reverts or needs more than 2300 gas, `send` will return false. The code still sets `paymentTime` and advances the receiver index, permanently skipping that depositor while the balance remains available for later payouts. This results in incorrect accounting and lost payouts for the skipped depositor.","recommendation":"Use a pull-payment pattern (withdrawals), or check the return value of `send` and only advance indices on success (or revert on failure). Consider replacing `send` with `call.value(...)` and handling failure explicitly.","evidence":"`send` return values are ignored in `distribute` for both queues, but indices advance regardless of success.","locations":["contracts/Contract.sol:247","contracts/Contract.sol:253","contracts/Contract.sol:262"]},{"severity":"low","category":"other","title":"Imported deposit indices are mixed with main queue indices, breaking getUserDeposits","exploit_scenario":"During migration, imported deposit indices are appended into the same `depositors` array used for main queue indices. If a user’s imported entries precede later main-queue deposits, `getUserDeposits` will read an imported index and use it against the main `Queue`, potentially reverting or returning incorrect data. This can break off-chain integrations and user queries.","recommendation":"Track imported and main queue indices separately (e.g., two mappings), or store a struct indicating queue type and index so lookups don’t index the wrong array.","evidence":"Migration pushes `ImportedQueue` indices into `depositors`, while `getUserDeposits` assumes indices refer to `Queue`.","locations":["contracts/Contract.sol:288","contracts/Contract.sol:309","contracts/Contract.sol:388","contracts/Contract.sol:400"]}]}
tokens used
17,794
{
"codex": {
"ran_at": "2026-01-30T11:57:38.036766+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Unchecked send calls can silently skip payouts and mis-account, and imported deposit indices are mixed with main queue indices causing getUserDeposits to revert for some users.",
"raw_final": {
"summary": "Unchecked send calls can silently skip payouts and mis-account, and imported deposit indices are mixed with main queue indices causing getUserDeposits to revert for some users.",
"findings": [
{
"title": "Unchecked send can silently skip payouts while advancing indices",
"category": "other",
"evidence": "`send` return values are ignored in `distribute` for both queues, but indices advance regardless of success.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:247",
"contracts/Contract.sol:253",
"contracts/Contract.sol:262"
],
"recommendation": "Use a pull-payment pattern (withdrawals), or check the return value of `send` and only advance indices on success (or revert on failure). Consider replacing `send` with `call.value(...)` and handling failure explicitly.",
"exploit_scenario": "If a depositor is a contract whose fallback reverts or needs more than 2300 gas, `send` will return false. The code still sets `paymentTime` and advances the receiver index, permanently skipping that depositor while the balance remains available for later payouts. This results in incorrect accounting and lost payouts for the skipped depositor."
},
{
"title": "Imported deposit indices are mixed with main queue indices, breaking getUserDeposits",
"category": "other",
"evidence": "Migration pushes `ImportedQueue` indices into `depositors`, while `getUserDeposits` assumes indices refer to `Queue`.",
"severity": "low",
"locations": [
"contracts/Contract.sol:288",
"contracts/Contract.sol:309",
"contracts/Contract.sol:388",
"contracts/Contract.sol:400"
],
"recommendation": "Track imported and main queue indices separately (e.g., two mappings), or store a struct indicating queue type and index so lookups don\u2019t index the wrong array.",
"exploit_scenario": "During migration, imported deposit indices are appended into the same `depositors` array used for main queue indices. If a user\u2019s imported entries precede later main-queue deposits, `getUserDeposits` will read an imported index and use it against the main `Queue`, potentially reverting or returning incorrect data. This can break off-chain integrations and user queries."
}
],
"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 0x015b 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH1 0xe0 00000014: PUSH1 0x02 00000016: EXP 00000017: PUSH1 0x00 00000019: CALLDATALOAD 0000001a: DIV 0000001b: AND 0000001c: PUSH4 0x059f8b16 00000021: DUP2 00000022: EQ 00000023: PUSH2 0x041c 00000026: JUMPI 00000027: DUP1 00000028: PUSH4 0x12065fe0 0000002d: EQ 0000002e: PUSH2 0x044a 00000031: JUMPI 00000032: DUP1 00000033: PUSH4 0x1686531a 00000038: EQ 00000039: PUSH2 0x0471 0000003c: JUMPI 0000003d: DUP1 0000003e: PUSH4 0x297563bb 00000043: EQ 00000044: PUSH2 0x04a2 00000047: JUMPI 00000048: DUP1 00000049: PUSH4 0x2a5bf6d2 0000004e: EQ 0000004f: PUSH2 0x04b7 00000052: JUMPI 00000053: DUP1 00000054: PUSH4 0x2d95663b 00000059: EQ 0000005a: PUSH2 0x05fb 0000005d: JUMPI 0000005e: DUP1 0000005f: PUSH4 0x30102055 00000064: EQ 00000065: PUSH2 0x0610 00000068: JUMPI 00000069: DUP1 0000006a: PUSH4 0x3a561ae2 0000006f: EQ 00000070: PUSH2 0x0625 00000073: JUMPI 00000074: DUP1 00000075: PUSH4 0x3f9e23e5 0000007a: EQ 0000007b: PUSH2 0x063a 0000007e: JUMPI 0000007f: DUP1 00000080: PUSH4 0x466c01b8 00000085: EQ 00000086: PUSH2 0x0663 00000089: JUMPI 0000008a: DUP1 0000008b: PUSH4 0x4c5822e4 00000090: EQ 00000091: PUSH2 0x0687 00000094: JUMPI 00000095: DUP1 00000096: PUSH4 0x62d2c555 0000009b: EQ 0000009c: PUSH2 0x069c 0000009f: JUMPI 000000a0: DUP1 000000a1: PUSH4 0x715018a6 000000a6: EQ 000000a7: PUSH2 0x06b1 000000aa: JUMPI 000000ab: DUP1 000000ac: PUSH4 0x7b3e5e7b 000000b1: EQ 000000b2: PUSH2 0x06c8 000000b5: JUMPI 000000b6: DUP1 000000b7: PUSH4 0x7cc79255 000000bc: EQ 000000bd: PUSH2 0x06dd 000000c0: JUMPI 000000c1: DUP1 000000c2: PUSH4 0x8364b0f7 000000c7: EQ 000000c8: PUSH2 0x0704 000000cb: JUMPI 000000cc: DUP1 000000cd: PUSH4 0x88ca8ba1 000000d2: EQ 000000d3: PUSH2 0x074c 000000d6: JUMPI 000000d7: DUP1 000000d8: PUSH4 0x88d761f2 000000dd: EQ 000000de: PUSH2 0x076d 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0x8da5cb5b 000000e8: EQ 000000e9: PUSH2 0x0782 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x8f32d59b 000000f3: EQ 000000f4: PUSH2 0x0797 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x907f9c57 000000fe: EQ 000000ff: PUSH2 0x07ac 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x91c05b0b 00000109: EQ 0000010a: PUSH2 0x07ec 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x940a9737 00000114: EQ 00000115: PUSH2 0x0804 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x9f9fb968 0000011f: EQ 00000120: PUSH2 0x0819 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0xd6a13301 0000012a: EQ 0000012b: PUSH2 0x0831 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0xd74f8e9a 00000135: EQ 00000136: PUSH2 0x0852 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0xe7cc14e9 00000140: EQ 00000141: PUSH2 0x086a 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0xf5316314 0000014b: EQ 0000014c: PUSH2 0x087f 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0xfc398325 00000156: EQ 00000157: PUSH2 0x08a0 0000015a: JUMPI 0000015b: JUMPDEST 0000015c: PUSH1 0x00 0000015e: DUP1 0000015f: PUSH1 0x00 00000161: CALLVALUE 00000162: GT 00000163: ISZERO 00000164: PUSH2 0x0418 00000167: JUMPI 00000168: PUSH7 0x2386f26fc10000 00000170: CALLVALUE 00000171: LT 00000172: ISZERO 00000173: PUSH2 0x01c6 00000176: JUMPI 00000177: PUSH1 0x40 00000179: DUP1 0000017a: MLOAD 0000017b: PUSH1 0xe5 0000017d: PUSH1 0x02 0000017f: EXP 00000180: PUSH3 0x461bcd 00000184: MUL 00000185: DUP2 00000186: MSTORE 00000187: PUSH1 0x20 00000189: PUSH1 0x04 0000018b: DUP3 0000018c: ADD 0000018d: DUP2 0000018e: SWAP1 0000018f: MSTORE 00000190: PUSH1 0x24 00000192: DUP3 00000193: ADD 00000194: MSTORE 00000195: PUSH32 0x696e766573746d656e74206d757374206265203e3d20302e3031206574686572 000001b6: PUSH1 0x44 000001b8: DUP3 000001b9: ADD 000001ba: MSTORE 000001bb: SWAP1 000001bc: MLOAD 000001bd: SWAP1 000001be: DUP2 000001bf: SWAP1 000001c0: SUB 000001c1: PUSH1 0x64 000001c3: ADD 000001c4: SWAP1 000001c5: REVERT 000001c6: JUMPDEST 000001c7: PUSH8 0x8ac7230489e80000 000001d0: CALLVALUE 000001d1: GT 000001d2: ISZERO 000001d3: PUSH2 0x0226 000001d6: JUMPI 000001d7: PUSH1 0x40 000001d9: DUP1 000001da: MLOAD 000001db: PUSH1 0xe5 000001dd: PUSH1 0x02 000001df: EXP 000001e0: PUSH3 0x461bcd 000001e4: MUL 000001e5: DUP2 000001e6: MSTORE 000001e7: PUSH1 0x20 000001e9: PUSH1 0x04 000001eb: DUP3 000001ec: ADD 000001ed: MSTORE 000001ee: PUSH1 0x1e 000001f0: PUSH1 0x24 000001f2: DUP3 000001f3: ADD 000001f4: MSTORE 000001f5: PUSH32 0x696e766573746d656e74206d757374206265203c3d2031302065746865720000 00000216: PUSH1 0x44 00000218: DUP3 00000219: ADD 0000021a: MSTORE 0000021b: SWAP1 0000021c: MLOAD 0000021d: SWAP1 0000021e: DUP2 0000021f: SWAP1 00000220: SUB 00000221: PUSH1 0x64 00000223: ADD 00000224: SWAP1 00000225: REVERT 00000226: JUMPDEST 00000227: PUSH2 0x0237 0000022a: PUSH1 0x05 0000022c: CALLVALUE 0000022d: PUSH4 0xffffffff 00000232: PUSH2 0x08b5 00000235: AND 00000236: JUMP 00000237: JUMPDEST 00000238: PUSH1 0x40 0000023a: DUP1 0000023b: MLOAD 0000023c: PUSH1 0x80 0000023e: DUP2 0000023f: ADD 00000240: DUP3 00000241: MSTORE 00000242: CALLER 00000243: DUP1 00000244: DUP3 00000245: MSTORE 00000246: CALLVALUE 00000247: PUSH1 0x20 00000249: DUP1 0000024a: DUP5 0000024b: ADD 0000024c: DUP3 0000024d: DUP2 0000024e: MSTORE 0000024f: DUP5 00000250: DUP7 00000251: ADD 00000252: DUP8 00000253: DUP2 00000254: MSTORE 00000255: PUSH1 0x00 00000257: PUSH1 0x60 00000259: DUP8 0000025a: ADD 0000025b: DUP2 0000025c: DUP2 0000025d: MSTORE 0000025e: PUSH1 0x0b 00000260: DUP1 00000261: SLOAD 00000262: PUSH1 0x01 00000264: DUP2 00000265: ADD 00000266: DUP3 00000267: SSTORE 00000268: SWAP1 00000269: DUP4 0000026a: MSTORE 0000026b: SWAP8 0000026c: MLOAD 0000026d: PUSH32 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9 0000028e: PUSH1 0x04 00000290: SWAP1 00000291: SWAP10 00000292: MUL 00000293: SWAP9 00000294: DUP10 00000295: ADD 00000296: DUP1 00000297: SLOAD 00000298: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002ad: NOT 000002ae: AND 000002af: PUSH1 0x01 000002b1: PUSH1 0xa0 000002b3: PUSH1 0x02 000002b5: EXP 000002b6: SUB 000002b7: SWAP1 000002b8: SWAP3 000002b9: AND 000002ba: SWAP2 000002bb: SWAP1 000002bc: SWAP2 000002bd: OR 000002be: SWAP1 000002bf: SSTORE 000002c0: SWAP3 000002c1: MLOAD 000002c2: PUSH32 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba 000002e3: DUP9 000002e4: ADD 000002e5: SSTORE 000002e6: SWAP1 000002e7: MLOAD 000002e8: PUSH32 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb 00000309: DUP8 0000030a: ADD 0000030b: SSTORE 0000030c: SWAP1 0000030d: MLOAD 0000030e: PUSH32 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbc 0000032f: SWAP1 00000330: SWAP6 00000331: ADD 00000332: SWAP5 00000333: SWAP1 00000334: SWAP5 00000335: SSTORE 00000336: PUSH1 0x08 00000338: DUP1 00000339: SLOAD 0000033a: SWAP1 0000033b: SWAP3 0000033c: ADD 0000033d: SWAP1 0000033e: SWAP2 0000033f: SSTORE 00000340: SWAP1 00000341: DUP3 00000342: MSTORE 00000343: PUSH1 0x0c 00000345: SWAP1 00000346: MSTORE 00000347: KECCAK256 00000348: SLOAD 00000349: SWAP1 0000034a: SWAP3 0000034b: POP 0000034c: ISZERO 0000034d: ISZERO 0000034e: PUSH2 0x035b 00000351: JUMPI 00000352: PUSH1 0x0d 00000354: DUP1 00000355: SLOAD 00000356: PUSH1 0x01 00000358: ADD 00000359: SWAP1 0000035a: SSTORE 0000035b: JUMPDEST 0000035c: CALLER 0000035d: PUSH1 0x00 0000035f: SWAP1 00000360: DUP2 00000361: MSTORE 00000362: PUSH1 0x0c 00000364: PUSH1 0x20 00000366: SWAP1 00000367: DUP2 00000368: MSTORE 00000369: PUSH1 0x40 0000036b: DUP3 0000036c: KECCAK256 0000036d: PUSH1 0x0b 0000036f: SLOAD 00000370: DUP2 00000371: SLOAD 00000372: PUSH1 0x01 00000374: DUP2 00000375: ADD 00000376: DUP4 00000377: SSTORE 00000378: SWAP2 00000379: DUP5 0000037a: MSTORE 0000037b: SWAP2 0000037c: SWAP1 0000037d: SWAP3 0000037e: KECCAK256 0000037f: PUSH1 0x00 00000381: NOT 00000382: SWAP1 00000383: SWAP2 00000384: ADD 00000385: SWAP2 00000386: ADD 00000387: SSTORE 00000388: PUSH2 0x0398 0000038b: PUSH1 0x03 0000038d: CALLVALUE 0000038e: PUSH4 0xffffffff 00000393: PUSH2 0x08b5 00000396: AND 00000397: JUMP 00000398: JUMPDEST 00000399: PUSH1 0x40 0000039b: MLOAD 0000039c: SWAP1 0000039d: SWAP2 0000039e: POP 0000039f: PUSH20 0x43571afea3c3c6f02569bdc59325f4f95463014d 000003b4: SWAP1 000003b5: DUP3 000003b6: ISZERO 000003b7: PUSH2 0x08fc 000003ba: MUL 000003bb: SWAP1 000003bc: DUP4 000003bd: SWAP1 000003be: PUSH1 0x00 000003c0: DUP2 000003c1: DUP2 000003c2: DUP2 000003c3: DUP6 000003c4: DUP9 000003c5: DUP9 000003c6: CALL 000003c7: POP 000003c8: PUSH20 0x8008bd6fddf2c26382b4c19d714a1bfea317ec57 000003dd: SWAP4 000003de: POP 000003df: PUSH2 0x08fc 000003e2: SWAP3 000003e3: POP 000003e4: PUSH2 0x03f8 000003e7: SWAP2 000003e8: POP 000003e9: PUSH1 0x01 000003eb: SWAP1 000003ec: POP 000003ed: CALLVALUE 000003ee: PUSH4 0xffffffff 000003f3: PUSH2 0x08b5 000003f6: AND 000003f7: JUMP 000003f8: JUMPDEST 000003f9: PUSH1 0x40 000003fb: MLOAD 000003fc: DUP2 000003fd: ISZERO 000003fe: SWAP1 000003ff: SWAP3 00000400: MUL 00000401: SWAP2 00000402: PUSH1 0x00 00000404: DUP2 00000405: DUP2 00000406: DUP2 00000407: DUP6 00000408: DUP9 00000409: DUP9 0000040a: CALL 0000040b: POP 0000040c: POP 0000040d: PUSH1 0x09 0000040f: DUP1 00000410: SLOAD 00000411: DUP6 00000412: ADD 00000413: SWAP1 00000414: SSTORE 00000415: POP 00000416: POP 00000417: POP 00000418: JUMPDEST 00000419: POP 0000041a: POP 0000041b: STOP 0000041c: JUMPDEST 0000041d: CALLVALUE 0000041e: DUP1 0000041f: ISZERO 00000420: PUSH2 0x0428 00000423: JUMPI 00000424: PUSH1 0x00 00000426: DUP1 00000427: REVERT 00000428: JUMPDEST 00000429: POP 0000042a: PUSH2 0x0431 0000042d: PUSH2 0x08e2 00000430: JUMP 00000431: JUMPDEST 00000432: PUSH1 0x40 00000434: DUP1 00000435: MLOAD 00000436: SWAP3 00000437: DUP4 00000438: MSTORE 00000439: PUSH1 0x20 0000043b: DUP4 0000043c: ADD 0000043d: SWAP2 0000043e: SWAP1 0000043f: SWAP2 00000440: MSTORE 00000441: DUP1 00000442: MLOAD 00000443: SWAP2 00000444: DUP3 00000445: SWAP1 00000446: SUB 00000447: ADD 00000448: SWAP1 00000449: RETURN 0000044a: JUMPDEST 0000044b: CALLVALUE 0000044c: DUP1 0000044d: ISZERO 0000044e: PUSH2 0x0456 00000451: JUMPI 00000452: PUSH1 0x00 00000454: DUP1 00000455: REVERT 00000456: JUMPDEST 00000457: POP 00000458: PUSH2 0x045f 0000045b: PUSH2 0x08eb 0000045e: JUMP 0000045f: JUMPDEST 00000460: PUSH1 0x40 00000462: DUP1 00000463: MLOAD 00000464: SWAP2 00000465: DUP3 00000466: MSTORE 00000467: MLOAD 00000468: SWAP1 00000469: DUP2 0000046a: SWAP1 0000046b: SUB 0000046c: PUSH1 0x20 0000046e: ADD 0000046f: SWAP1 00000470: RETURN 00000471: JUMPDEST 00000472: CALLVALUE 00000473: DUP1 00000474: ISZERO 00000475: PUSH2 0x047d 00000478: JUMPI 00000479: PUSH1 0x00 0000047b: DUP1 0000047c: REVERT 0000047d: JUMPDEST 0000047e: POP 0000047f: PUSH2 0x0486 00000482: PUSH2 0x08f0 00000485: JUMP 00000486: JUMPDEST 00000487: PUSH1 0x40 00000489: DUP1 0000048a: MLOAD 0000048b: PUSH1 0x01 0000048d: PUSH1 0xa0 0000048f: PUSH1 0x02 00000491: EXP 00000492: SUB 00000493: SWAP1 00000494: SWAP3 00000495: AND 00000496: DUP3 00000497: MSTORE 00000498: MLOAD 00000499: SWAP1 0000049a: DUP2 0000049b: SWAP1 0000049c: SUB 0000049d: PUSH1 0x20 0000049f: ADD 000004a0: SWAP1 000004a1: RETURN 000004a2: JUMPDEST 000004a3: CALLVALUE 000004a4: DUP1 000004a5: ISZERO 000004a6: PUSH2 0x04ae 000004a9: JUMPI 000004aa: PUSH1 0x00 000004ac: DUP1 000004ad: REVERT 000004ae: JUMPDEST 000004af: POP 000004b0: PUSH2 0x045f 000004b3: PUSH2 0x0908 000004b6: JUMP 000004b7: JUMPDEST 000004b8: CALLVALUE 000004b9: DUP1 000004ba: ISZERO 000004bb: PUSH2 0x04c3 000004be: JUMPI 000004bf: PUSH1 0x00 000004c1: DUP1 000004c2: REVERT 000004c3: JUMPDEST 000004c4: POP 000004c5: PUSH2 0x04d8 000004c8: PUSH1 0x01 000004ca: PUSH1 0xa0 000004cc: PUSH1 0x02 000004ce: EXP 000004cf: SUB 000004d0: PUSH1 0x04 000004d2: CALLDATALOAD 000004d3: AND 000004d4: PUSH2 0x090e 000004d7: JUMP 000004d8: JUMPDEST 000004d9: PUSH1 0x40 000004db: MLOAD 000004dc: DUP1 000004dd: DUP1 000004de: PUSH1 0x20 000004e0: ADD 000004e1: DUP1 000004e2: PUSH1 0x20 000004e4: ADD 000004e5: DUP1 000004e6: PUSH1 0x20 000004e8: ADD 000004e9: DUP1 000004ea: PUSH1 0x20 000004ec: ADD 000004ed: DUP6 000004ee: DUP2 000004ef: SUB 000004f0: DUP6 000004f1: MSTORE 000004f2: DUP10 000004f3: DUP2 000004f4: DUP2 000004f5: MLOAD 000004f6: DUP2 000004f7: MSTORE 000004f8: PUSH1 0x20 000004fa: ADD 000004fb: SWAP2 000004fc: POP 000004fd: DUP1 000004fe: MLOAD 000004ff: SWAP1 00000500: PUSH1 0x20 00000502: ADD 00000503: SWAP1 00000504: PUSH1 0x20 00000506: MUL 00000507: DUP1 00000508: DUP4 00000509: DUP4 0000050a: PUSH1 0x00 0000050c: JUMPDEST 0000050d: DUP4 0000050e: DUP2 0000050f: LT 00000510: ISZERO 00000511: PUSH2 0x0524 00000514: JUMPI 00000515: DUP2 00000516: DUP2 00000517: ADD 00000518: MLOAD 00000519: DUP4 0000051a: DUP3 0000051b: ADD 0000051c: MSTORE 0000051d: PUSH1 0x20 0000051f: ADD 00000520: PUSH2 0x050c 00000523: JUMP 00000524: JUMPDEST 00000525: POP 00000526: POP 00000527: POP 00000528: POP 00000529: SWAP1 0000052a: POP 0000052b: ADD 0000052c: DUP6 0000052d: DUP2 0000052e: SUB 0000052f: DUP5 00000530: MSTORE 00000531: DUP9 00000532: DUP2 00000533: DUP2 00000534: MLOAD 00000535: DUP2 00000536: MSTORE 00000537: PUSH1 0x20 00000539: ADD 0000053a: SWAP2 0000053b: POP 0000053c: DUP1 0000053d: MLOAD 0000053e: SWAP1 0000053f: PUSH1 0x20 00000541: ADD 00000542: SWAP1 00000543: PUSH1 0x20 00000545: MUL 00000546: DUP1 00000547: DUP4 00000548: DUP4 00000549: PUSH1 0x00 0000054b: JUMPDEST 0000054c: DUP4 0000054d: DUP2 0000054e: LT 0000054f: ISZERO 00000550: PUSH2 0x0563 00000553: JUMPI 00000554: DUP2 00000555: DUP2 00000556: ADD 00000557: MLOAD 00000558: DUP4 00000559: DUP3 0000055a: ADD 0000055b: MSTORE 0000055c: PUSH1 0x20 0000055e: ADD 0000055f: PUSH2 0x054b 00000562: JUMP 00000563: JUMPDEST 00000564: POP 00000565: POP 00000566: POP 00000567: POP 00000568: SWAP1 00000569: POP 0000056a: ADD 0000056b: DUP6 0000056c: DUP2 0000056d: SUB 0000056e: DUP4 0000056f: MSTORE 00000570: DUP8 00000571: DUP2 00000572: DUP2 00000573: MLOAD 00000574: DUP2 00000575: MSTORE 00000576: PUSH1 0x20 00000578: ADD 00000579: SWAP2 0000057a: POP 0000057b: DUP1 0000057c: MLOAD 0000057d: SWAP1 0000057e: PUSH1 0x20 00000580: ADD 00000581: SWAP1 00000582: PUSH1 0x20 00000584: MUL 00000585: DUP1 00000586: DUP4 00000587: DUP4 00000588: PUSH1 0x00 0000058a: JUMPDEST 0000058b: DUP4 0000058c: DUP2 0000058d: LT 0000058e: ISZERO 0000058f: PUSH2 0x05a2 00000592: JUMPI 00000593: DUP2 00000594: DUP2 00000595: ADD 00000596: MLOAD 00000597: DUP4 00000598: DUP3 00000599: ADD 0000059a: MSTORE 0000059b: PUSH1 0x20 0000059d: ADD 0000059e: PUSH2 0x058a 000005a1: JUMP 000005a2: JUMPDEST 000005a3: POP 000005a4: POP 000005a5: POP 000005a6: POP 000005a7: SWAP1 000005a8: POP 000005a9: ADD 000005aa: DUP6 000005ab: DUP2 000005ac: SUB 000005ad: DUP3 000005ae: MSTORE 000005af: DUP7 000005b0: DUP2 000005b1: DUP2 000005b2: MLOAD 000005b3: DUP2 000005b4: MSTORE 000005b5: PUSH1 0x20 000005b7: ADD 000005b8: SWAP2 000005b9: POP 000005ba: DUP1 000005bb: MLOAD 000005bc: SWAP1 000005bd: PUSH1 0x20 000005bf: ADD 000005c0: SWAP1 000005c1: PUSH1 0x20 000005c3: MUL 000005c4: DUP1 000005c5: DUP4 000005c6: DUP4 000005c7: PUSH1 0x00 000005c9: JUMPDEST 000005ca: DUP4 000005cb: DUP2 000005cc: LT 000005cd: ISZERO 000005ce: PUSH2 0x05e1 000005d1: JUMPI 000005d2: DUP2 000005d3: DUP2 000005d4: ADD 000005d5: MLOAD 000005d6: DUP4 000005d7: DUP3 000005d8: ADD 000005d9: MSTORE 000005da: PUSH1 0x20 000005dc: ADD 000005dd: PUSH2 0x05c9 000005e0: JUMP 000005e1: JUMPDEST 000005e2: POP 000005e3: POP 000005e4: POP 000005e5: POP 000005e6: SWAP1 000005e7: POP 000005e8: ADD 000005e9: SWAP9 000005ea: POP 000005eb: POP 000005ec: POP 000005ed: POP 000005ee: POP 000005ef: POP 000005f0: POP 000005f1: POP 000005f2: POP 000005f3: PUSH1 0x40 000005f5: MLOAD 000005f6: DUP1 000005f7: SWAP2 000005f8: SUB 000005f9: SWAP1 000005fa: RETURN 000005fb: JUMPDEST 000005fc: CALLVALUE 000005fd: DUP1 000005fe: ISZERO 000005ff: PUSH2 0x0607 00000602: JUMPI 00000603: PUSH1 0x00 00000605: DUP1 00000606: REVERT 00000607: JUMPDEST 00000608: POP 00000609: PUSH2 0x045f 0000060c: PUSH2 0x0ad5 0000060f: JUMP 00000610: JUMPDEST 00000611: CALLVALUE 00000612: DUP1 00000613: ISZERO 00000614: PUSH2 0x061c 00000617: JUMPI 00000618: PUSH1 0x00 0000061a: DUP1 0000061b: REVERT 0000061c: JUMPDEST 0000061d: POP 0000061e: PUSH2 0x045f 00000621: PUSH2 0x0adb 00000624: JUMP 00000625: JUMPDEST 00000626: CALLVALUE 00000627: DUP1 00000628: ISZERO 00000629: PUSH2 0x0631 0000062c: JUMPI 0000062d: PUSH1 0x00 0000062f: DUP1 00000630: REVERT 00000631: JUMPDEST 00000632: POP 00000633: PUSH2 0x045f 00000636: PUSH2 0x0ae1 00000639: JUMP 0000063a: JUMPDEST 0000063b: CALLVALUE 0000063c: DUP1 0000063d: ISZERO 0000063e: PUSH2 0x0646 00000641: JUMPI 00000642: PUSH1 0x00 00000644: DUP1 00000645: REVERT 00000646: JUMPDEST 00000647: POP 00000648: PUSH2 0x064f 0000064b: PUSH2 0x0ae7 0000064e: JUMP 0000064f: JUMPDEST 00000650: PUSH1 0x40 00000652: DUP1 00000653: MLOAD 00000654: SWAP2 00000655: ISZERO 00000656: ISZERO 00000657: DUP3 00000658: MSTORE 00000659: MLOAD 0000065a: SWAP1 0000065b: DUP2 0000065c: SWAP1 0000065d: SUB 0000065e: PUSH1 0x20 00000660: ADD 00000661: SWAP1 00000662: RETURN 00000663: JUMPDEST 00000664: CALLVALUE 00000665: DUP1 00000666: ISZERO 00000667: PUSH2 0x066f 0000066a: JUMPI 0000066b: PUSH1 0x00 0000066d: DUP1 0000066e: REVERT 0000066f: JUMPDEST 00000670: POP 00000671: PUSH2 0x045f 00000674: PUSH1 0x01 00000676: PUSH1 0xa0 00000678: PUSH1 0x02 0000067a: EXP 0000067b: SUB 0000067c: PUSH1 0x04 0000067e: CALLDATALOAD 0000067f: AND 00000680: PUSH1 0x24 00000682: CALLDATALOAD 00000683: PUSH2 0x0af0 00000686: JUMP 00000687: JUMPDEST 00000688: CALLVALUE 00000689: DUP1 0000068a: ISZERO 0000068b: PUSH2 0x0693 0000068e: JUMPI 0000068f: PUSH1 0x00 00000691: DUP1 00000692: REVERT 00000693: JUMPDEST 00000694: POP 00000695: PUSH2 0x045f 00000698: PUSH2 0x0b20 0000069b: JUMP 0000069c: JUMPDEST 0000069d: CALLVALUE 0000069e: DUP1 0000069f: ISZERO 000006a0: PUSH2 0x06a8 000006a3: JUMPI 000006a4: PUSH1 0x00 000006a6: DUP1 000006a7: REVERT 000006a8: JUMPDEST 000006a9: POP 000006aa: PUSH2 0x0486 000006ad: PUSH2 0x0b3e 000006b0: JUMP 000006b1: JUMPDEST 000006b2: CALLVALUE 000006b3: DUP1 000006b4: ISZERO 000006b5: PUSH2 0x06bd 000006b8: JUMPI 000006b9: PUSH1 0x00 000006bb: DUP1 000006bc: REVERT 000006bd: JUMPDEST 000006be: POP 000006bf: PUSH2 0x06c6 000006c2: PUSH2 0x0b56 000006c5: JUMP 000006c6: JUMPDEST 000006c7: STOP 000006c8: JUMPDEST 000006c9: CALLVALUE 000006ca: DUP1 000006cb: ISZERO 000006cc: PUSH2 0x06d4 000006cf: JUMPI 000006d0: PUSH1 0x00 000006d2: DUP1 000006d3: REVERT 000006d4: JUMPDEST 000006d5: POP 000006d6: PUSH2 0x045f 000006d9: PUSH2 0x0bc0 000006dc: JUMP 000006dd: JUMPDEST 000006de: CALLVALUE 000006df: DUP1 000006e0: ISZERO 000006e1: PUSH2 0x06e9 000006e4: JUMPI 000006e5: PUSH1 0x00 000006e7: DUP1 000006e8: REVERT 000006e9: JUMPDEST 000006ea: POP 000006eb: PUSH2 0x06c6 000006ee: PUSH1 0x01 000006f0: PUSH1 0xa0 000006f2: PUSH1 0x02 000006f4: EXP 000006f5: SUB 000006f6: PUSH1 0x04 000006f8: CALLDATALOAD 000006f9: AND 000006fa: PUSH1 0x24 000006fc: CALLDATALOAD 000006fd: PUSH1 0x44 000006ff: CALLDATALOAD 00000700: PUSH2 0x0bc6 00000703: JUMP 00000704: JUMPDEST 00000705: CALLVALUE 00000706: DUP1 00000707: ISZERO 00000708: PUSH2 0x0710 0000070b: JUMPI 0000070c: PUSH1 0x00 0000070e: DUP1 0000070f: REVERT 00000710: JUMPDEST 00000711: POP 00000712: PUSH2 0x071c 00000715: PUSH1 0x04 00000717: CALLDATALOAD 00000718: PUSH2 0x0efc 0000071b: JUMP 0000071c: JUMPDEST 0000071d: PUSH1 0x40 0000071f: DUP1 00000720: MLOAD 00000721: PUSH1 0x01 00000723: PUSH1 0xa0 00000725: PUSH1 0x02 00000727: EXP 00000728: SUB 00000729: SWAP1 0000072a: SWAP6 0000072b: AND 0000072c: DUP6 0000072d: MSTORE 0000072e: PUSH1 0x20 00000730: DUP6 00000731: ADD 00000732: SWAP4 00000733: SWAP1 00000734: SWAP4 00000735: MSTORE 00000736: DUP4 00000737: DUP4 00000738: ADD 00000739: SWAP2 0000073a: SWAP1 0000073b: SWAP2 0000073c: MSTORE 0000073d: PUSH1 0x60 0000073f: DUP4 00000740: ADD 00000741: MSTORE 00000742: MLOAD 00000743: SWAP1 00000744: DUP2 00000745: SWAP1 00000746: SUB 00000747: PUSH1 0x80 00000749: ADD 0000074a: SWAP1 0000074b: RETURN 0000074c: JUMPDEST 0000074d: CALLVALUE 0000074e: DUP1 0000074f: ISZERO 00000750: PUSH2 0x0758 00000753: JUMPI 00000754: PUSH1 0x00 00000756: DUP1 00000757: REVERT 00000758: JUMPDEST 00000759: POP 0000075a: PUSH2 0x04d8 0000075d: PUSH1 0x01 0000075f: PUSH1 0xa0 00000761: PUSH1 0x02 00000763: EXP 00000764: SUB 00000765: PUSH1 0x04 00000767: CALLDATALOAD 00000768: AND 00000769: PUSH2 0x0f4f 0000076c: JUMP 0000076d: JUMPDEST 0000076e: CALLVALUE 0000076f: DUP1 00000770: ISZERO 00000771: PUSH2 0x0779 00000774: JUMPI 00000775: PUSH1 0x00 00000777: DUP1 00000778: REVERT 00000779: JUMPDEST 0000077a: POP 0000077b: PUSH2 0x06c6 0000077e: PUSH2 0x10f9 00000781: JUMP 00000782: JUMPDEST 00000783: CALLVALUE 00000784: DUP1 00000785: ISZERO 00000786: PUSH2 0x078e 00000789: JUMPI 0000078a: PUSH1 0x00 0000078c: DUP1 0000078d: REVERT 0000078e: JUMPDEST 0000078f: POP 00000790: PUSH2 0x0486 00000793: PUSH2 0x1123 00000796: JUMP 00000797: JUMPDEST 00000798: CALLVALUE 00000799: DUP1 0000079a: ISZERO 0000079b: PUSH2 0x07a3 0000079e: JUMPI 0000079f: PUSH1 0x00 000007a1: DUP1 000007a2: REVERT 000007a3: JUMPDEST 000007a4: POP 000007a5: PUSH2 0x064f 000007a8: PUSH2 0x1132 000007ab: JUMP 000007ac: JUMPDEST 000007ad: CALLVALUE 000007ae: DUP1 000007af: ISZERO 000007b0: PUSH2 0x07b8 000007b3: JUMPI 000007b4: PUSH1 0x00 000007b6: DUP1 000007b7: REVERT 000007b8: JUMPDEST 000007b9: POP 000007ba: PUSH2 0x07c4 000007bd: PUSH1 0x04 000007bf: CALLDATALOAD 000007c0: PUSH2 0x1143 000007c3: JUMP 000007c4: JUMPDEST 000007c5: PUSH1 0x40 000007c7: DUP1 000007c8: MLOAD 000007c9: PUSH1 0x01 000007cb: PUSH1 0xa0 000007cd: PUSH1 0x02 000007cf: EXP 000007d0: SUB 000007d1: SWAP1 000007d2: SWAP5 000007d3: AND 000007d4: DUP5 000007d5: MSTORE 000007d6: PUSH1 0x20 000007d8: DUP5 000007d9: ADD 000007da: SWAP3 000007db: SWAP1 000007dc: SWAP3 000007dd: MSTORE 000007de: DUP3 000007df: DUP3 000007e0: ADD 000007e1: MSTORE 000007e2: MLOAD 000007e3: SWAP1 000007e4: DUP2 000007e5: SWAP1 000007e6: SUB 000007e7: PUSH1 0x60 000007e9: ADD 000007ea: SWAP1 000007eb: RETURN 000007ec: JUMPDEST 000007ed: CALLVALUE 000007ee: DUP1 000007ef: ISZERO 000007f0: PUSH2 0x07f8 000007f3: JUMPI 000007f4: PUSH1 0x00 000007f6: DUP1 000007f7: REVERT 000007f8: JUMPDEST 000007f9: POP 000007fa: PUSH2 0x06c6 000007fd: PUSH1 0x04 000007ff: CALLDATALOAD 00000800: PUSH2 0x11ec 00000803: JUMP 00000804: JUMPDEST 00000805: CALLVALUE 00000806: DUP1 00000807: ISZERO 00000808: PUSH2 0x0810 0000080b: JUMPI 0000080c: PUSH1 0x00 0000080e: DUP1 0000080f: REVERT 00000810: JUMPDEST 00000811: POP 00000812: PUSH2 0x045f 00000815: PUSH2 0x1470 00000818: JUMP 00000819: JUMPDEST 0000081a: CALLVALUE 0000081b: DUP1 0000081c: ISZERO 0000081d: PUSH2 0x0825 00000820: JUMPI 00000821: PUSH1 0x00 00000823: DUP1 00000824: REVERT 00000825: JUMPDEST 00000826: POP 00000827: PUSH2 0x071c 0000082a: PUSH1 0x04 0000082c: CALLDATALOAD 0000082d: PUSH2 0x1476 00000830: JUMP 00000831: JUMPDEST 00000832: CALLVALUE 00000833: DUP1 00000834: ISZERO 00000835: PUSH2 0x083d 00000838: JUMPI 00000839: PUSH1 0x00 0000083b: DUP1 0000083c: REVERT 0000083d: JUMPDEST 0000083e: POP 0000083f: PUSH2 0x045f 00000842: PUSH1 0x01 00000844: PUSH1 0xa0 00000846: PUSH1 0x02 00000848: EXP 00000849: SUB 0000084a: PUSH1 0x04 0000084c: CALLDATALOAD 0000084d: AND 0000084e: PUSH2 0x148d 00000851: JUMP 00000852: JUMPDEST 00000853: CALLVALUE 00000854: DUP1 00000855: ISZERO 00000856: PUSH2 0x085e 00000859: JUMPI 0000085a: PUSH1 0x00 0000085c: DUP1 0000085d: REVERT 0000085e: JUMPDEST 0000085f: POP 00000860: PUSH2 0x07c4 00000863: PUSH1 0x04 00000865: CALLDATALOAD 00000866: PUSH2 0x14eb 00000869: JUMP 0000086a: JUMPDEST 0000086b: CALLVALUE 0000086c: DUP1 0000086d: ISZERO 0000086e: PUSH2 0x0876 00000871: JUMPI 00000872: PUSH1 0x00 00000874: DUP1 00000875: REVERT 00000876: JUMPDEST 00000877: POP 00000878: PUSH2 0x045f 0000087b: PUSH2 0x1568 0000087e: JUMP 0000087f: JUMPDEST 00000880: CALLVALUE 00000881: DUP1 00000882: ISZERO 00000883: PUSH2 0x088b 00000886: JUMPI 00000887: PUSH1 0x00 00000889: DUP1 0000088a: REVERT 0000088b: JUMPDEST 0000088c: POP 0000088d: PUSH2 0x045f 00000890: PUSH1 0x01 00000892: PUSH1 0xa0 00000894: PUSH1 0x02 00000896: EXP 00000897: SUB 00000898: PUSH1 0x04 0000089a: CALLDATALOAD 0000089b: AND 0000089c: PUSH2 0x1581 0000089f: JUMP 000008a0: JUMPDEST 000008a1: CALLVALUE 000008a2: DUP1 000008a3: ISZERO 000008a4: PUSH2 0x08ac 000008a7: JUMPI 000008a8: PUSH1 0x00 000008aa: DUP1 000008ab: REVERT 000008ac: JUMPDEST 000008ad: POP 000008ae: PUSH2 0x045f 000008b1: PUSH2 0x15d8 000008b4: JUMP 000008b5: JUMPDEST 000008b6: PUSH1 0x00 000008b8: DUP2 000008b9: ISZERO 000008ba: ISZERO 000008bb: PUSH2 0x08c6 000008be: JUMPI 000008bf: POP 000008c0: PUSH1 0x00 000008c2: PUSH2 0x08dc 000008c5: JUMP 000008c6: JUMPDEST 000008c7: PUSH1 0x01 000008c9: DUP4 000008ca: ADD 000008cb: SLOAD 000008cc: DUP4 000008cd: SLOAD 000008ce: DUP4 000008cf: MUL 000008d0: DUP2 000008d1: ISZERO 000008d2: ISZERO 000008d3: PUSH2 0x08d8 000008d6: JUMPI 000008d7: INVALID 000008d8: JUMPDEST 000008d9: DIV 000008da: SWAP1 000008db: POP 000008dc: JUMPDEST 000008dd: SWAP3 000008de: SWAP2 000008df: POP 000008e0: POP 000008e1: JUMP 000008e2: JUMPDEST 000008e3: PUSH1 0x05 000008e5: SLOAD 000008e6: PUSH1 0x06 000008e8: SLOAD 000008e9: DUP3 000008ea: JUMP 000008eb: JUMPDEST 000008ec: ADDRESS 000008ed: BALANCE 000008ee: SWAP1 000008ef: JUMP 000008f0: JUMPDEST 000008f1: PUSH20 0x43571afea3c3c6f02569bdc59325f4f95463014d 00000906: DUP2 00000907: JUMP 00000908: JUMPDEST 00000909: PUSH1 0x10 0000090b: SLOAD 0000090c: DUP2 0000090d: JUMP 0000090e: JUMPDEST 0000090f: PUSH1 0x60 00000911: DUP1 00000912: PUSH1 0x60 00000914: DUP1 00000915: PUSH1 0x00 00000917: DUP1 00000918: PUSH1 0x00 0000091a: DUP1 0000091b: PUSH1 0x00 0000091d: PUSH2 0x0925 00000920: DUP11 00000921: PUSH2 0x148d 00000924: JUMP 00000925: JUMPDEST 00000926: SWAP5 00000927: POP 00000928: DUP5 00000929: PUSH1 0x40 0000092b: MLOAD 0000092c: SWAP1 0000092d: DUP1 0000092e: DUP3 0000092f: MSTORE 00000930: DUP1 00000931: PUSH1 0x20 00000933: MUL 00000934: PUSH1 0x20 00000936: ADD 00000937: DUP3 00000938: ADD 00000939: PUSH1 0x40 0000093b: MSTORE 0000093c: DUP1 0000093d: ISZERO 0000093e: PUSH2 0x0951 00000941: JUMPI 00000942: DUP2 00000943: PUSH1 0x20 00000945: ADD 00000946: PUSH1 0x20 00000948: DUP3 00000949: MUL 0000094a: DUP1 0000094b: CODESIZE 0000094c: DUP4 0000094d: CODECOPY 0000094e: ADD 0000094f: SWAP1 00000950: POP 00000951: JUMPDEST 00000952: POP 00000953: SWAP9 00000954: POP 00000955: DUP5 00000956: PUSH1 0x40 00000958: MLOAD 00000959: SWAP1 0000095a: DUP1 0000095b: DUP3 0000095c: MSTORE 0000095d: DUP1 0000095e: PUSH1 0x20 00000960: MUL 00000961: PUSH1 0x20 00000963: ADD 00000964: DUP3 00000965: ADD 00000966: PUSH1 0x40 00000968: MSTORE 00000969: DUP1 0000096a: ISZERO 0000096b: PUSH2 0x097e 0000096e: JUMPI 0000096f: DUP2 00000970: PUSH1 0x20 00000972: ADD 00000973: PUSH1 0x20 00000975: DUP3 00000976: MUL 00000977: DUP1 00000978: CODESIZE 00000979: DUP4 0000097a: CODECOPY 0000097b: ADD 0000097c: SWAP1 0000097d: POP 0000097e: JUMPDEST 0000097f: POP 00000980: SWAP8 00000981: POP 00000982: DUP5 00000983: PUSH1 0x40 00000985: MLOAD 00000986: SWAP1 00000987: DUP1 00000988: DUP3 00000989: MSTORE 0000098a: DUP1 0000098b: PUSH1 0x20 0000098d: MUL 0000098e: PUSH1 0x20 00000990: ADD 00000991: DUP3 00000992: ADD 00000993: PUSH1 0x40 00000995: MSTORE 00000996: DUP1 00000997: ISZERO 00000998: PUSH2 0x09ab 0000099b: JUMPI 0000099c: DUP2 0000099d: PUSH1 0x20 0000099f: ADD 000009a0: PUSH1 0x20 000009a2: DUP3 000009a3: MUL 000009a4: DUP1 000009a5: CODESIZE 000009a6: DUP4 000009a7: CODECOPY 000009a8: ADD 000009a9: SWAP1 000009aa: POP 000009ab: JUMPDEST 000009ac: POP 000009ad: SWAP6 000009ae: POP 000009af: DUP5 000009b0: PUSH1 0x40 000009b2: MLOAD 000009b3: SWAP1 000009b4: DUP1 000009b5: DUP3 000009b6: MSTORE 000009b7: DUP1 000009b8: PUSH1 0x20 000009ba: MUL 000009bb: PUSH1 0x20 000009bd: ADD 000009be: DUP3 000009bf: ADD 000009c0: PUSH1 0x40 000009c2: MSTORE 000009c3: DUP1 000009c4: ISZERO 000009c5: PUSH2 0x09d8 000009c8: JUMPI 000009c9: DUP2 000009ca: PUSH1 0x20 000009cc: ADD 000009cd: PUSH1 0x20 000009cf: DUP3 000009d0: MUL 000009d1: DUP1 000009d2: CODESIZE 000009d3: DUP4 000009d4: CODECOPY 000009d5: ADD 000009d6: SWAP1 000009d7: POP 000009d8: JUMPDEST 000009d9: POP 000009da: SWAP7 000009db: POP 000009dc: PUSH1 0x00 000009de: SWAP4 000009df: POP 000009e0: PUSH1 0x00 000009e2: DUP6 000009e3: GT 000009e4: ISZERO 000009e5: PUSH2 0x0ac9 000009e8: JUMPI 000009e9: PUSH1 0x00 000009eb: SWAP3 000009ec: POP 000009ed: PUSH1 0x00 000009ef: SWAP2 000009f0: POP 000009f1: JUMPDEST 000009f2: DUP5 000009f3: DUP3 000009f4: LT 000009f5: ISZERO 000009f6: PUSH2 0x0ac9 000009f9: JUMPI 000009fa: PUSH1 0x01 000009fc: PUSH1 0xa0 000009fe: PUSH1 0x02 00000a00: EXP 00000a01: SUB 00000a02: DUP11 00000a03: AND 00000a04: PUSH1 0x00 00000a06: SWAP1 00000a07: DUP2 00000a08: MSTORE 00000a09: PUSH1 0x0c 00000a0b: PUSH1 0x20 00000a0d: MSTORE 00000a0e: PUSH1 0x40 00000a10: SWAP1 00000a11: KECCAK256 00000a12: DUP1 00000a13: SLOAD 00000a14: DUP4 00000a15: SWAP1 00000a16: DUP2 00000a17: LT 00000a18: PUSH2 0x0a1d 00000a1b: JUMPI 00000a1c: INVALID 00000a1d: JUMPDEST 00000a1e: SWAP1 00000a1f: PUSH1 0x00 00000a21: MSTORE 00000a22: PUSH1 0x20 00000a24: PUSH1 0x00 00000a26: KECCAK256 00000a27: ADD 00000a28: SLOAD 00000a29: SWAP4 00000a2a: POP 00000a2b: PUSH1 0x0b 00000a2d: DUP5 00000a2e: DUP2 00000a2f: SLOAD 00000a30: DUP2 00000a31: LT 00000a32: ISZERO 00000a33: ISZERO 00000a34: PUSH2 0x0a39 00000a37: JUMPI 00000a38: INVALID 00000a39: JUMPDEST 00000a3a: SWAP1 00000a3b: PUSH1 0x00 00000a3d: MSTORE 00000a3e: PUSH1 0x20 00000a40: PUSH1 0x00 00000a42: KECCAK256 00000a43: SWAP1 00000a44: PUSH1 0x04 00000a46: MUL 00000a47: ADD 00000a48: SWAP1 00000a49: POP 00000a4a: DUP2 00000a4b: DUP10 00000a4c: DUP5 00000a4d: DUP2 00000a4e: MLOAD 00000a4f: DUP2 00000a50: LT 00000a51: ISZERO 00000a52: ISZERO 00000a53: PUSH2 0x0a58 00000a56: JUMPI 00000a57: INVALID 00000a58: JUMPDEST 00000a59: PUSH1 0x20 00000a5b: SWAP1 00000a5c: DUP2 00000a5d: MUL 00000a5e: SWAP1 00000a5f: SWAP2 00000a60: ADD 00000a61: ADD 00000a62: MSTORE 00000a63: PUSH1 0x03 00000a65: DUP2 00000a66: ADD 00000a67: SLOAD 00000a68: DUP9 00000a69: MLOAD 00000a6a: DUP10 00000a6b: SWAP1 00000a6c: DUP6 00000a6d: SWAP1 00000a6e: DUP2 00000a6f: LT 00000a70: PUSH2 0x0a75 00000a73: JUMPI 00000a74: INVALID 00000a75: JUMPDEST 00000a76: PUSH1 0x20 00000a78: SWAP1 00000a79: DUP2 00000a7a: MUL 00000a7b: SWAP1 00000a7c: SWAP2 00000a7d: ADD 00000a7e: ADD 00000a7f: MSTORE 00000a80: PUSH1 0x01 00000a82: DUP2 00000a83: ADD 00000a84: SLOAD 00000a85: DUP8 00000a86: MLOAD 00000a87: DUP9 00000a88: SWAP1 00000a89: DUP6 00000a8a: SWAP1 00000a8b: DUP2 00000a8c: LT 00000a8d: PUSH2 0x0a92 00000a90: JUMPI 00000a91: INVALID 00000a92: JUMPDEST 00000a93: PUSH1 0x20 00000a95: SWAP1 00000a96: DUP2 00000a97: MUL 00000a98: SWAP1 00000a99: SWAP2 00000a9a: ADD 00000a9b: ADD 00000a9c: MSTORE 00000a9d: PUSH1 0x02 00000a9f: DUP2 00000aa0: ADD 00000aa1: SLOAD 00000aa2: DUP7 00000aa3: MLOAD 00000aa4: DUP8 00000aa5: SWAP1 00000aa6: DUP6 00000aa7: SWAP1 00000aa8: DUP2 00000aa9: LT 00000aaa: PUSH2 0x0aaf 00000aad: JUMPI 00000aae: INVALID 00000aaf: JUMPDEST 00000ab0: PUSH1 0x20 00000ab2: SWAP1 00000ab3: DUP2 00000ab4: MUL 00000ab5: SWAP1 00000ab6: SWAP2 00000ab7: ADD 00000ab8: ADD 00000ab9: MSTORE 00000aba: PUSH1 0x01 00000abc: SWAP3 00000abd: DUP4 00000abe: ADD 00000abf: SWAP3 00000ac0: SWAP2 00000ac1: SWAP1 00000ac2: SWAP2 00000ac3: ADD 00000ac4: SWAP1 00000ac5: PUSH2 0x09f1 00000ac8: JUMP 00000ac9: JUMPDEST 00000aca: POP 00000acb: POP 00000acc: POP 00000acd: POP 00000ace: POP 00000acf: SWAP2 00000ad0: SWAP4 00000ad1: POP 00000ad2: SWAP2 00000ad3: SWAP4 00000ad4: JUMP 00000ad5: JUMPDEST 00000ad6: PUSH1 0x0f 00000ad8: SLOAD 00000ad9: DUP2 00000ada: JUMP 00000adb: JUMPDEST 00000adc: PUSH1 0x0e 00000ade: SLOAD 00000adf: DUP2 00000ae0: JUMP 00000ae1: JUMPDEST 00000ae2: PUSH1 0x0d 00000ae4: SLOAD 00000ae5: DUP2 00000ae6: JUMP 00000ae7: JUMPDEST 00000ae8: PUSH1 0x07 00000aea: SLOAD 00000aeb: PUSH1 0xff 00000aed: AND 00000aee: DUP2 00000aef: JUMP 00000af0: JUMPDEST 00000af1: PUSH1 0x0c 00000af3: PUSH1 0x20 00000af5: MSTORE 00000af6: DUP2 00000af7: PUSH1 0x00 00000af9: MSTORE 00000afa: PUSH1 0x40 00000afc: PUSH1 0x00 00000afe: KECCAK256 00000aff: DUP2 00000b00: DUP2 00000b01: SLOAD 00000b02: DUP2 00000b03: LT 00000b04: ISZERO 00000b05: ISZERO 00000b06: PUSH2 0x0b0b 00000b09: JUMPI 00000b0a: INVALID 00000b0b: JUMPDEST 00000b0c: SWAP1 00000b0d: PUSH1 0x00 00000b0f: MSTORE 00000b10: PUSH1 0x20 00000b12: PUSH1 0x00 00000b14: KECCAK256 00000b15: ADD 00000b16: PUSH1 0x00 00000b18: SWAP2 00000b19: POP 00000b1a: SWAP2 00000b1b: POP 00000b1c: POP 00000b1d: SLOAD 00000b1e: DUP2 00000b1f: JUMP 00000b20: JUMPDEST 00000b21: PUSH1 0x0f 00000b23: SLOAD 00000b24: PUSH1 0x0b 00000b26: SLOAD 00000b27: PUSH1 0x00 00000b29: SWAP2 00000b2a: PUSH2 0x0b39 00000b2d: SWAP2 00000b2e: SWAP1 00000b2f: PUSH4 0xffffffff 00000b34: PUSH2 0x15f1 00000b37: AND 00000b38: JUMP 00000b39: JUMPDEST 00000b3a: SWAP1 00000b3b: POP 00000b3c: SWAP1 00000b3d: JUMP 00000b3e: JUMPDEST 00000b3f: PUSH20 0x8008bd6fddf2c26382b4c19d714a1bfea317ec57 00000b54: DUP2 00000b55: JUMP 00000b56: JUMPDEST 00000b57: PUSH2 0x0b5e 00000b5a: PUSH2 0x1132 00000b5d: JUMP 00000b5e: JUMPDEST 00000b5f: ISZERO 00000b60: ISZERO 00000b61: PUSH2 0x0b69 00000b64: JUMPI 00000b65: PUSH1 0x00 00000b67: DUP1 00000b68: REVERT 00000b69: JUMPDEST 00000b6a: PUSH1 0x00 00000b6c: DUP1 00000b6d: SLOAD 00000b6e: PUSH1 0x40 00000b70: MLOAD 00000b71: PUSH1 0x01 00000b73: PUSH1 0xa0 00000b75: PUSH1 0x02 00000b77: EXP 00000b78: SUB 00000b79: SWAP1 00000b7a: SWAP2 00000b7b: AND 00000b7c: SWAP1 00000b7d: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000b9e: SWAP1 00000b9f: DUP4 00000ba0: SWAP1 00000ba1: LOG3 00000ba2: PUSH1 0x00 00000ba4: DUP1 00000ba5: SLOAD 00000ba6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bbb: NOT 00000bbc: AND 00000bbd: SWAP1 00000bbe: SSTORE 00000bbf: JUMP 00000bc0: JUMPDEST 00000bc1: PUSH1 0x08 00000bc3: SLOAD 00000bc4: DUP2 00000bc5: JUMP 00000bc6: JUMPDEST 00000bc7: PUSH1 0x00 00000bc9: DUP1 00000bca: PUSH1 0x00 00000bcc: DUP1 00000bcd: PUSH1 0x00 00000bcf: DUP1 00000bd0: PUSH1 0x00 00000bd2: DUP1 00000bd3: PUSH2 0x0bda 00000bd6: PUSH2 0x1132 00000bd9: JUMP 00000bda: JUMPDEST 00000bdb: ISZERO 00000bdc: ISZERO 00000bdd: PUSH2 0x0be5 00000be0: JUMPI 00000be1: PUSH1 0x00 00000be3: DUP1 00000be4: REVERT 00000be5: JUMPDEST 00000be6: PUSH1 0x07 00000be8: SLOAD 00000be9: PUSH1 0xff 00000beb: AND 00000bec: ISZERO 00000bed: PUSH2 0x0bf5 00000bf0: JUMPI 00000bf1: PUSH1 0x00 00000bf3: DUP1 00000bf4: REVERT 00000bf5: JUMPDEST 00000bf6: DUP11 00000bf7: SWAP8 00000bf8: POP 00000bf9: PUSH1 0x00 00000bfb: SWAP3 00000bfc: POP 00000bfd: DUP8 00000bfe: PUSH1 0x01 00000c00: PUSH1 0xa0 00000c02: PUSH1 0x02 00000c04: EXP 00000c05: SUB 00000c06: AND 00000c07: PUSH4 0xdd9ea299 00000c0c: PUSH1 0x40 00000c0e: MLOAD 00000c0f: DUP2 00000c10: PUSH4 0xffffffff 00000c15: AND 00000c16: PUSH1 0xe0 00000c18: PUSH1 0x02 00000c1a: EXP 00000c1b: MUL 00000c1c: DUP2 00000c1d: MSTORE 00000c1e: PUSH1 0x04 00000c20: ADD 00000c21: PUSH1 0x20 00000c23: PUSH1 0x40 00000c25: MLOAD 00000c26: DUP1 00000c27: DUP4 00000c28: SUB 00000c29: DUP2 00000c2a: PUSH1 0x00 00000c2c: DUP8 00000c2d: DUP1 00000c2e: EXTCODESIZE 00000c2f: ISZERO 00000c30: DUP1 00000c31: ISZERO 00000c32: PUSH2 0x0c3a 00000c35: JUMPI 00000c36: PUSH1 0x00 00000c38: DUP1 00000c39: REVERT 00000c3a: JUMPDEST 00000c3b: POP 00000c3c: GAS 00000c3d: CALL 00000c3e: ISZERO 00000c3f: DUP1 00000c40: ISZERO 00000c41: PUSH2 0x0c4e 00000c44: JUMPI 00000c45: RETURNDATASIZE 00000c46: PUSH1 0x00 00000c48: DUP1 00000c49: RETURNDATACOPY 00000c4a: RETURNDATASIZE 00000c4b: PUSH1 0x00 00000c4d: REVERT 00000c4e: JUMPDEST 00000c4f: POP 00000c50: POP 00000c51: POP 00000c52: POP 00000c53: PUSH1 0x40 00000c55: MLOAD 00000c56: RETURNDATASIZE 00000c57: PUSH1 0x20 00000c59: DUP2 00000c5a: LT 00000c5b: ISZERO 00000c5c: PUSH2 0x0c64 00000c5f: JUMPI 00000c60: PUSH1 0x00 00000c62: DUP1 00000c63: REVERT 00000c64: JUMPDEST 00000c65: POP 00000c66: MLOAD 00000c67: SWAP2 00000c68: POP 00000c69: PUSH2 0x0c78 00000c6c: DUP10 00000c6d: DUP4 00000c6e: PUSH4 0xffffffff 00000c73: PUSH2 0x1608 00000c76: AND 00000c77: JUMP 00000c78: JUMPDEST 00000c79: SWAP9 00000c7a: POP 00000c7b: DUP10 00000c7c: SWAP1 00000c7d: POP 00000c7e: JUMPDEST 00000c7f: DUP9 00000c80: DUP2 00000c81: GT 00000c82: PUSH2 0x0eaf 00000c85: JUMPI 00000c86: DUP8 00000c87: PUSH1 0x01 00000c89: PUSH1 0xa0 00000c8b: PUSH1 0x02 00000c8d: EXP 00000c8e: SUB 00000c8f: AND 00000c90: PUSH4 0x9f9fb968 00000c95: DUP3 00000c96: PUSH1 0x40 00000c98: MLOAD 00000c99: DUP3 00000c9a: PUSH4 0xffffffff 00000c9f: AND 00000ca0: PUSH1 0xe0 00000ca2: PUSH1 0x02 00000ca4: EXP 00000ca5: MUL 00000ca6: DUP2 00000ca7: MSTORE 00000ca8: PUSH1 0x04 00000caa: ADD 00000cab: DUP1 00000cac: DUP3 00000cad: DUP2 00000cae: MSTORE 00000caf: PUSH1 0x20 00000cb1: ADD 00000cb2: SWAP2 00000cb3: POP 00000cb4: POP 00000cb5: PUSH1 0x80 00000cb7: PUSH1 0x40 00000cb9: MLOAD 00000cba: DUP1 00000cbb: DUP4 00000cbc: SUB 00000cbd: DUP2 00000cbe: PUSH1 0x00 00000cc0: DUP8 00000cc1: DUP1 00000cc2: EXTCODESIZE 00000cc3: ISZERO 00000cc4: DUP1 00000cc5: ISZERO 00000cc6: PUSH2 0x0cce 00000cc9: JUMPI 00000cca: PUSH1 0x00 00000ccc: DUP1 00000ccd: REVERT 00000cce: JUMPDEST 00000ccf: POP 00000cd0: GAS 00000cd1: CALL 00000cd2: ISZERO 00000cd3: DUP1 00000cd4: ISZERO 00000cd5: PUSH2 0x0ce2 00000cd8: JUMPI 00000cd9: RETURNDATASIZE 00000cda: PUSH1 0x00 00000cdc: DUP1 00000cdd: RETURNDATACOPY 00000cde: RETURNDATASIZE 00000cdf: PUSH1 0x00 00000ce1: REVERT 00000ce2: JUMPDEST 00000ce3: POP 00000ce4: POP 00000ce5: POP 00000ce6: POP 00000ce7: PUSH1 0x40 00000ce9: MLOAD 00000cea: RETURNDATASIZE 00000ceb: PUSH1 0x80 00000ced: DUP2 00000cee: LT 00000cef: ISZERO 00000cf0: PUSH2 0x0cf8 00000cf3: JUMPI 00000cf4: PUSH1 0x00 00000cf6: DUP1 00000cf7: REVERT 00000cf8: JUMPDEST 00000cf9: POP 00000cfa: DUP1 00000cfb: MLOAD 00000cfc: PUSH1 0x20 00000cfe: DUP3 00000cff: ADD 00000d00: MLOAD 00000d01: PUSH1 0x40 00000d03: DUP4 00000d04: ADD 00000d05: MLOAD 00000d06: PUSH1 0x60 00000d08: SWAP1 00000d09: SWAP4 00000d0a: ADD 00000d0b: MLOAD 00000d0c: SWAP2 00000d0d: SWAP10 00000d0e: POP 00000d0f: SWAP8 00000d10: POP 00000d11: SWAP1 00000d12: SWAP6 00000d13: POP 00000d14: SWAP4 00000d15: POP 00000d16: PUSH1 0x01 00000d18: PUSH1 0xa0 00000d1a: PUSH1 0x02 00000d1c: EXP 00000d1d: SUB 00000d1e: DUP8 00000d1f: AND 00000d20: PUSH20 0x494a7a2d0599f2447487d7fa10baeafcb301c41b 00000d35: EQ 00000d36: DUP1 00000d37: ISZERO 00000d38: SWAP1 00000d39: PUSH2 0x0d5f 00000d3c: JUMPI 00000d3d: POP 00000d3e: PUSH1 0x01 00000d40: PUSH1 0xa0 00000d42: PUSH1 0x02 00000d44: EXP 00000d45: SUB 00000d46: DUP8 00000d47: AND 00000d48: PUSH20 0xfd3093a4a3bd68b46db42b7e59e2d88c6d58a99e 00000d5d: EQ 00000d5e: ISZERO 00000d5f: JUMPDEST 00000d60: DUP1 00000d61: ISZERO 00000d62: PUSH2 0x0d88 00000d65: JUMPI 00000d66: POP 00000d67: PUSH1 0x01 00000d69: PUSH1 0xa0 00000d6b: PUSH1 0x02 00000d6d: EXP 00000d6e: SUB 00000d6f: DUP8 00000d70: AND 00000d71: PUSH20 0xbaa2cb97b6e28ef5c0a7b957398edf7ab5f01a1b 00000d86: EQ 00000d87: ISZERO 00000d88: JUMPDEST 00000d89: DUP1 00000d8a: ISZERO 00000d8b: PUSH2 0x0db1 00000d8e: JUMPI 00000d8f: POP 00000d90: PUSH1 0x01 00000d92: PUSH1 0xa0 00000d94: PUSH1 0x02 00000d96: EXP 00000d97: SUB 00000d98: DUP8 00000d99: AND 00000d9a: PUSH20 0xfdd46866c279c90f463a08518e151bc78a1a5f38 00000daf: EQ 00000db0: ISZERO 00000db1: JUMPDEST 00000db2: DUP1 00000db3: ISZERO 00000db4: PUSH2 0x0dda 00000db7: JUMPI 00000db8: POP 00000db9: PUSH1 0x01 00000dbb: PUSH1 0xa0 00000dbd: PUSH1 0x02 00000dbf: EXP 00000dc0: SUB 00000dc1: DUP8 00000dc2: AND 00000dc3: PUSH20 0xdfa5662b5495e34c2aa8f06feb358a6d90a6d62e 00000dd8: EQ 00000dd9: ISZERO 00000dda: JUMPDEST 00000ddb: ISZERO 00000ddc: PUSH2 0x0ea7 00000ddf: JUMPI 00000de0: PUSH1 0x40 00000de2: DUP1 00000de3: MLOAD 00000de4: PUSH1 0x80 00000de6: DUP2 00000de7: ADD 00000de8: DUP3 00000de9: MSTORE 00000dea: PUSH1 0x01 00000dec: PUSH1 0xa0 00000dee: PUSH1 0x02 00000df0: EXP 00000df1: SUB 00000df2: DUP10 00000df3: AND 00000df4: DUP2 00000df5: MSTORE 00000df6: PUSH1 0x20 00000df8: DUP2 00000df9: ADD 00000dfa: DUP9 00000dfb: SWAP1 00000dfc: MSTORE 00000dfd: PUSH1 0x0a 00000dff: SWAP2 00000e00: DUP2 00000e01: ADD 00000e02: PUSH2 0x0e12 00000e05: PUSH1 0x05 00000e07: DUP11 00000e08: PUSH4 0xffffffff 00000e0d: PUSH2 0x08b5 00000e10: AND 00000e11: JUMP 00000e12: JUMPDEST 00000e13: DUP2 00000e14: MSTORE 00000e15: PUSH1 0x00 00000e17: PUSH1 0x20 00000e19: SWAP2 00000e1a: DUP3 00000e1b: ADD 00000e1c: DUP2 00000e1d: SWAP1 00000e1e: MSTORE 00000e1f: DUP4 00000e20: SLOAD 00000e21: PUSH1 0x01 00000e23: DUP1 00000e24: DUP3 00000e25: ADD 00000e26: DUP7 00000e27: SSTORE 00000e28: SWAP5 00000e29: DUP3 00000e2a: MSTORE 00000e2b: DUP3 00000e2c: DUP3 00000e2d: KECCAK256 00000e2e: DUP5 00000e2f: MLOAD 00000e30: PUSH1 0x04 00000e32: SWAP1 00000e33: SWAP3 00000e34: MUL 00000e35: ADD 00000e36: DUP1 00000e37: SLOAD 00000e38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e4d: NOT 00000e4e: AND 00000e4f: PUSH1 0x01 00000e51: PUSH1 0xa0 00000e53: PUSH1 0x02 00000e55: EXP 00000e56: SUB 00000e57: SWAP3 00000e58: DUP4 00000e59: AND 00000e5a: OR 00000e5b: DUP2 00000e5c: SSTORE 00000e5d: DUP5 00000e5e: DUP5 00000e5f: ADD 00000e60: MLOAD 00000e61: DUP2 00000e62: DUP8 00000e63: ADD 00000e64: SSTORE 00000e65: PUSH1 0x40 00000e67: DUP1 00000e68: DUP7 00000e69: ADD 00000e6a: MLOAD 00000e6b: PUSH1 0x02 00000e6d: DUP4 00000e6e: ADD 00000e6f: SSTORE 00000e70: PUSH1 0x60 00000e72: SWAP1 00000e73: SWAP6 00000e74: ADD 00000e75: MLOAD 00000e76: PUSH1 0x03 00000e78: SWAP1 00000e79: SWAP2 00000e7a: ADD 00000e7b: SSTORE 00000e7c: DUP12 00000e7d: AND 00000e7e: DUP2 00000e7f: MSTORE 00000e80: PUSH1 0x0c 00000e82: DUP3 00000e83: MSTORE 00000e84: SWAP2 00000e85: DUP3 00000e86: KECCAK256 00000e87: PUSH1 0x0a 00000e89: SLOAD 00000e8a: DUP2 00000e8b: SLOAD 00000e8c: DUP1 00000e8d: DUP7 00000e8e: ADD 00000e8f: DUP4 00000e90: SSTORE 00000e91: SWAP2 00000e92: DUP5 00000e93: MSTORE 00000e94: SWAP2 00000e95: SWAP1 00000e96: SWAP3 00000e97: KECCAK256 00000e98: PUSH1 0x00 00000e9a: NOT 00000e9b: SWAP2 00000e9c: SWAP1 00000e9d: SWAP2 00000e9e: ADD 00000e9f: SWAP2 00000ea0: ADD 00000ea1: SSTORE 00000ea2: SWAP3 00000ea3: SWAP1 00000ea4: SWAP3 00000ea5: ADD 00000ea6: SWAP2 00000ea7: JUMPDEST 00000ea8: PUSH1 0x01 00000eaa: ADD 00000eab: PUSH2 0x0c7e 00000eae: JUMP 00000eaf: JUMPDEST 00000eb0: PUSH1 0x40 00000eb2: DUP1 00000eb3: MLOAD 00000eb4: TIMESTAMP 00000eb5: DUP2 00000eb6: MSTORE 00000eb7: PUSH1 0x20 00000eb9: DUP2 00000eba: ADD 00000ebb: DUP6 00000ebc: SWAP1 00000ebd: MSTORE 00000ebe: DUP1 00000ebf: DUP3 00000ec0: ADD 00000ec1: DUP12 00000ec2: SWAP1 00000ec3: MSTORE 00000ec4: SWAP1 00000ec5: MLOAD 00000ec6: PUSH32 0x758f7d44874cb30a3b92e65fea37e4c9cf36dccea81ba280d751eec98d97248e 00000ee7: SWAP2 00000ee8: DUP2 00000ee9: SWAP1 00000eea: SUB 00000eeb: PUSH1 0x60 00000eed: ADD 00000eee: SWAP1 00000eef: LOG1 00000ef0: POP 00000ef1: POP 00000ef2: POP 00000ef3: POP 00000ef4: POP 00000ef5: POP 00000ef6: POP 00000ef7: POP 00000ef8: POP 00000ef9: POP 00000efa: POP 00000efb: JUMP 00000efc: JUMPDEST 00000efd: PUSH1 0x00 00000eff: DUP1 00000f00: PUSH1 0x00 00000f02: DUP1 00000f03: PUSH1 0x00 00000f05: PUSH1 0x0a 00000f07: DUP7 00000f08: DUP2 00000f09: SLOAD 00000f0a: DUP2 00000f0b: LT 00000f0c: ISZERO 00000f0d: ISZERO 00000f0e: PUSH2 0x0f13 00000f11: JUMPI 00000f12: INVALID 00000f13: JUMPDEST 00000f14: PUSH1 0x00 00000f16: SWAP2 00000f17: DUP3 00000f18: MSTORE 00000f19: PUSH1 0x20 00000f1b: SWAP1 00000f1c: SWAP2 00000f1d: KECCAK256 00000f1e: PUSH1 0x04 00000f20: SWAP1 00000f21: SWAP2 00000f22: MUL 00000f23: ADD 00000f24: DUP1 00000f25: SLOAD 00000f26: PUSH1 0x01 00000f28: DUP3 00000f29: ADD 00000f2a: SLOAD 00000f2b: PUSH1 0x02 00000f2d: DUP4 00000f2e: ADD 00000f2f: SLOAD 00000f30: PUSH1 0x03 00000f32: SWAP1 00000f33: SWAP4 00000f34: ADD 00000f35: SLOAD 00000f36: PUSH1 0x01 00000f38: PUSH1 0xa0 00000f3a: PUSH1 0x02 00000f3c: EXP 00000f3d: SUB 00000f3e: SWAP1 00000f3f: SWAP3 00000f40: AND 00000f41: SWAP10 00000f42: SWAP1 00000f43: SWAP9 00000f44: POP 00000f45: SWAP2 00000f46: SWAP7 00000f47: POP 00000f48: SWAP5 00000f49: POP 00000f4a: SWAP3 00000f4b: POP 00000f4c: POP 00000f4d: POP 00000f4e: JUMP 00000f4f: JUMPDEST 00000f50: PUSH1 0x60 00000f52: DUP1 00000f53: PUSH1 0x60 00000f55: DUP1 00000f56: PUSH1 0x00 00000f58: DUP1 00000f59: PUSH1 0x00 00000f5b: DUP1 00000f5c: PUSH2 0x0f64 00000f5f: DUP10 00000f60: PUSH2 0x1581 00000f63: JUMP 00000f64: JUMPDEST 00000f65: SWAP4 00000f66: POP 00000f67: DUP4 00000f68: PUSH1 0x40 00000f6a: MLOAD 00000f6b: SWAP1 00000f6c: DUP1 00000f6d: DUP3 00000f6e: MSTORE 00000f6f: DUP1 00000f70: PUSH1 0x20 00000f72: MUL 00000f73: PUSH1 0x20 00000f75: ADD 00000f76: DUP3 00000f77: ADD 00000f78: PUSH1 0x40 00000f7a: MSTORE 00000f7b: DUP1 00000f7c: ISZERO 00000f7d: PUSH2 0x0f90 00000f80: JUMPI 00000f81: DUP2 00000f82: PUSH1 0x20 00000f84: ADD 00000f85: PUSH1 0x20 00000f87: DUP3 00000f88: MUL 00000f89: DUP1 00000f8a: CODESIZE 00000f8b: DUP4 00000f8c: CODECOPY 00000f8d: ADD 00000f8e: SWAP1 00000f8f: POP 00000f90: JUMPDEST 00000f91: POP 00000f92: SWAP8 00000f93: POP 00000f94: DUP4 00000f95: PUSH1 0x40 00000f97: MLOAD 00000f98: SWAP1 00000f99: DUP1 00000f9a: DUP3 00000f9b: MSTORE 00000f9c: DUP1 00000f9d: PUSH1 0x20 00000f9f: MUL 00000fa0: PUSH1 0x20 00000fa2: ADD 00000fa3: DUP3 00000fa4: ADD 00000fa5: PUSH1 0x40 00000fa7: MSTORE 00000fa8: DUP1 00000fa9: ISZERO 00000faa: PUSH2 0x0fbd 00000fad: JUMPI 00000fae: DUP2 00000faf: PUSH1 0x20 00000fb1: ADD 00000fb2: PUSH1 0x20 00000fb4: DUP3 00000fb5: MUL 00000fb6: DUP1 00000fb7: CODESIZE 00000fb8: DUP4 00000fb9: CODECOPY 00000fba: ADD 00000fbb: SWAP1 00000fbc: POP 00000fbd: JUMPDEST 00000fbe: POP 00000fbf: SWAP7 00000fc0: POP 00000fc1: DUP4 00000fc2: PUSH1 0x40 00000fc4: MLOAD 00000fc5: SWAP1 00000fc6: DUP1 00000fc7: DUP3 00000fc8: MSTORE 00000fc9: DUP1 00000fca: PUSH1 0x20 00000fcc: MUL 00000fcd: PUSH1 0x20 00000fcf: ADD 00000fd0: DUP3 00000fd1: ADD 00000fd2: PUSH1 0x40 00000fd4: MSTORE 00000fd5: DUP1 00000fd6: ISZERO 00000fd7: PUSH2 0x0fea 00000fda: JUMPI 00000fdb: DUP2 00000fdc: PUSH1 0x20 00000fde: ADD 00000fdf: PUSH1 0x20 00000fe1: DUP3 00000fe2: MUL 00000fe3: DUP1 00000fe4: CODESIZE 00000fe5: DUP4 00000fe6: CODECOPY 00000fe7: ADD 00000fe8: SWAP1 00000fe9: POP 00000fea: JUMPDEST 00000feb: POP 00000fec: SWAP5 00000fed: POP 00000fee: DUP4 00000fef: PUSH1 0x40 00000ff1: MLOAD 00000ff2: SWAP1 00000ff3: DUP1 00000ff4: DUP3 00000ff5: MSTORE 00000ff6: DUP1 00000ff7: PUSH1 0x20 00000ff9: MUL 00000ffa: PUSH1 0x20 00000ffc: ADD 00000ffd: DUP3 00000ffe: ADD 00000fff: PUSH1 0x40 00001001: MSTORE 00001002: DUP1 00001003: ISZERO 00001004: PUSH2 0x1017 00001007: JUMPI 00001008: DUP2 00001009: PUSH1 0x20 0000100b: ADD 0000100c: PUSH1 0x20 0000100e: DUP3 0000100f: MUL 00001010: DUP1 00001011: CODESIZE 00001012: DUP4 00001013: CODECOPY 00001014: ADD 00001015: SWAP1 00001016: POP 00001017: JUMPDEST 00001018: POP 00001019: SWAP6 0000101a: POP 0000101b: PUSH1 0x00 0000101d: DUP5 0000101e: GT 0000101f: ISZERO 00001020: PUSH2 0x10ee 00001023: JUMPI 00001024: PUSH1 0x00 00001026: SWAP3 00001027: POP 00001028: PUSH1 0x00 0000102a: SWAP2 0000102b: POP 0000102c: JUMPDEST 0000102d: PUSH1 0x0a 0000102f: SLOAD 00001030: DUP3 00001031: LT 00001032: ISZERO 00001033: PUSH2 0x10ee 00001036: JUMPI 00001037: PUSH1 0x0a 00001039: DUP1 0000103a: SLOAD 0000103b: DUP4 0000103c: SWAP1 0000103d: DUP2 0000103e: LT 0000103f: PUSH2 0x1044 00001042: JUMPI 00001043: INVALID 00001044: JUMPDEST 00001045: PUSH1 0x00 00001047: SWAP2 00001048: DUP3 00001049: MSTORE 0000104a: PUSH1 0x20 0000104c: SWAP1 0000104d: SWAP2 0000104e: KECCAK256 0000104f: PUSH1 0x04 00001051: SWAP1 00001052: SWAP2 00001053: MUL 00001054: ADD 00001055: DUP1 00001056: SLOAD 00001057: SWAP1 00001058: SWAP2 00001059: POP 0000105a: PUSH1 0x01 0000105c: PUSH1 0xa0 0000105e: PUSH1 0x02 00001060: EXP 00001061: SUB 00001062: DUP11 00001063: DUP2 00001064: AND 00001065: SWAP2 00001066: AND 00001067: EQ 00001068: ISZERO 00001069: PUSH2 0x10e3 0000106c: JUMPI 0000106d: DUP2 0000106e: DUP9 0000106f: DUP5 00001070: DUP2 00001071: MLOAD 00001072: DUP2 00001073: LT 00001074: ISZERO 00001075: ISZERO 00001076: PUSH2 0x107b 00001079: JUMPI 0000107a: INVALID 0000107b: JUMPDEST 0000107c: PUSH1 0x20 0000107e: SWAP1 0000107f: DUP2 00001080: MUL 00001081: SWAP1 00001082: SWAP2 00001083: ADD 00001084: ADD 00001085: MSTORE 00001086: PUSH1 0x03 00001088: DUP2 00001089: ADD 0000108a: SLOAD 0000108b: DUP8 0000108c: MLOAD 0000108d: DUP9 0000108e: SWAP1 0000108f: DUP6 00001090: SWAP1 00001091: DUP2 00001092: LT 00001093: PUSH2 0x1098 00001096: JUMPI 00001097: INVALID 00001098: JUMPDEST 00001099: PUSH1 0x20 0000109b: SWAP1 0000109c: DUP2 0000109d: MUL 0000109e: SWAP1 0000109f: SWAP2 000010a0: ADD 000010a1: ADD 000010a2: MSTORE 000010a3: PUSH1 0x01 000010a5: DUP2 000010a6: ADD 000010a7: SLOAD 000010a8: DUP7 000010a9: MLOAD 000010aa: DUP8 000010ab: SWAP1 000010ac: DUP6 000010ad: SWAP1 000010ae: DUP2 000010af: LT 000010b0: PUSH2 0x10b5 000010b3: JUMPI 000010b4: INVALID 000010b5: JUMPDEST 000010b6: PUSH1 0x20 000010b8: SWAP1 000010b9: DUP2 000010ba: MUL 000010bb: SWAP1 000010bc: SWAP2 000010bd: ADD 000010be: ADD 000010bf: MSTORE 000010c0: PUSH1 0x02 000010c2: DUP2 000010c3: ADD 000010c4: SLOAD 000010c5: DUP6 000010c6: MLOAD 000010c7: DUP7 000010c8: SWAP1 000010c9: DUP6 000010ca: SWAP1 000010cb: DUP2 000010cc: LT 000010cd: PUSH2 0x10d2 000010d0: JUMPI 000010d1: INVALID 000010d2: JUMPDEST 000010d3: PUSH1 0x20 000010d5: SWAP1 000010d6: DUP2 000010d7: MUL 000010d8: SWAP1 000010d9: SWAP2 000010da: ADD 000010db: ADD 000010dc: MSTORE 000010dd: PUSH1 0x01 000010df: SWAP1 000010e0: SWAP3 000010e1: ADD 000010e2: SWAP2 000010e3: JUMPDEST 000010e4: DUP2 000010e5: PUSH1 0x01 000010e7: ADD 000010e8: SWAP2 000010e9: POP 000010ea: PUSH2 0x102c 000010ed: JUMP 000010ee: JUMPDEST 000010ef: POP 000010f0: POP 000010f1: POP 000010f2: POP 000010f3: SWAP2 000010f4: SWAP4 000010f5: POP 000010f6: SWAP2 000010f7: SWAP4 000010f8: JUMP 000010f9: JUMPDEST 000010fa: PUSH2 0x1101 000010fd: PUSH2 0x1132 00001100: JUMP 00001101: JUMPDEST 00001102: ISZERO 00001103: ISZERO 00001104: PUSH2 0x110c 00001107: JUMPI 00001108: PUSH1 0x00 0000110a: DUP1 0000110b: REVERT 0000110c: JUMPDEST 0000110d: PUSH1 0x07 0000110f: DUP1 00001110: SLOAD 00001111: PUSH1 0xff 00001113: NOT 00001114: AND 00001115: PUSH1 0x01 00001117: OR 00001118: SWAP1 00001119: SSTORE 0000111a: PUSH2 0x1121 0000111d: PUSH2 0x0b56 00001120: JUMP 00001121: JUMPDEST 00001122: JUMP 00001123: JUMPDEST 00001124: PUSH1 0x00 00001126: SLOAD 00001127: PUSH1 0x01 00001129: PUSH1 0xa0 0000112b: PUSH1 0x02 0000112d: EXP 0000112e: SUB 0000112f: AND 00001130: SWAP1 00001131: JUMP 00001132: JUMPDEST 00001133: PUSH1 0x00 00001135: SLOAD 00001136: PUSH1 0x01 00001138: PUSH1 0xa0 0000113a: PUSH1 0x02 0000113c: EXP 0000113d: SUB 0000113e: AND 0000113f: CALLER 00001140: EQ 00001141: SWAP1 00001142: JUMP 00001143: JUMPDEST 00001144: PUSH1 0x00 00001146: DUP1 00001147: PUSH1 0x00 00001149: DUP1 0000114a: PUSH2 0x116f 0000114d: PUSH1 0x01 0000114f: PUSH2 0x1163 00001152: DUP8 00001153: PUSH1 0x0e 00001155: SLOAD 00001156: PUSH2 0x15f1 00001159: SWAP1 0000115a: SWAP2 0000115b: SWAP1 0000115c: PUSH4 0xffffffff 00001161: AND 00001162: JUMP 00001163: JUMPDEST 00001164: SWAP1 00001165: PUSH4 0xffffffff 0000116a: PUSH2 0x15f1 0000116d: AND 0000116e: JUMP 0000116f: JUMPDEST 00001170: SWAP1 00001171: POP 00001172: PUSH1 0x0a 00001174: DUP2 00001175: DUP2 00001176: SLOAD 00001177: DUP2 00001178: LT 00001179: ISZERO 0000117a: ISZERO 0000117b: PUSH2 0x1180 0000117e: JUMPI 0000117f: INVALID 00001180: JUMPDEST 00001181: PUSH1 0x00 00001183: SWAP2 00001184: DUP3 00001185: MSTORE 00001186: PUSH1 0x20 00001188: SWAP1 00001189: SWAP2 0000118a: KECCAK256 0000118b: PUSH1 0x04 0000118d: SWAP1 0000118e: SWAP2 0000118f: MUL 00001190: ADD 00001191: SLOAD 00001192: PUSH1 0x0a 00001194: DUP1 00001195: SLOAD 00001196: PUSH1 0x01 00001198: PUSH1 0xa0 0000119a: PUSH1 0x02 0000119c: EXP 0000119d: SUB 0000119e: SWAP1 0000119f: SWAP3 000011a0: AND 000011a1: SWAP2 000011a2: DUP4 000011a3: SWAP1 000011a4: DUP2 000011a5: LT 000011a6: PUSH2 0x11ab 000011a9: JUMPI 000011aa: INVALID 000011ab: JUMPDEST 000011ac: SWAP1 000011ad: PUSH1 0x00 000011af: MSTORE 000011b0: PUSH1 0x20 000011b2: PUSH1 0x00 000011b4: KECCAK256 000011b5: SWAP1 000011b6: PUSH1 0x04 000011b8: MUL 000011b9: ADD 000011ba: PUSH1 0x03 000011bc: ADD 000011bd: SLOAD 000011be: PUSH1 0x0a 000011c0: DUP4 000011c1: DUP2 000011c2: SLOAD 000011c3: DUP2 000011c4: LT 000011c5: ISZERO 000011c6: ISZERO 000011c7: PUSH2 0x11cc 000011ca: JUMPI 000011cb: INVALID 000011cc: JUMPDEST 000011cd: SWAP1 000011ce: PUSH1 0x00 000011d0: MSTORE 000011d1: PUSH1 0x20 000011d3: PUSH1 0x00 000011d5: KECCAK256 000011d6: SWAP1 000011d7: PUSH1 0x04 000011d9: MUL 000011da: ADD 000011db: PUSH1 0x02 000011dd: ADD 000011de: SLOAD 000011df: SWAP4 000011e0: POP 000011e1: SWAP4 000011e2: POP 000011e3: SWAP4 000011e4: POP 000011e5: POP 000011e6: SWAP2 000011e7: SWAP4 000011e8: SWAP1 000011e9: SWAP3 000011ea: POP 000011eb: JUMP 000011ec: JUMPDEST 000011ed: PUSH1 0x00 000011ef: DUP1 000011f0: DUP1 000011f1: DUP1 000011f2: DUP1 000011f3: PUSH1 0x64 000011f5: DUP7 000011f6: GT 000011f7: ISZERO 000011f8: PUSH2 0x124b 000011fb: JUMPI 000011fc: PUSH1 0x40 000011fe: DUP1 000011ff: MLOAD 00001200: PUSH1 0xe5 00001202: PUSH1 0x02 00001204: EXP 00001205: PUSH3 0x461bcd 00001209: MUL 0000120a: DUP2 0000120b: MSTORE 0000120c: PUSH1 0x20 0000120e: PUSH1 0x04 00001210: DUP3 00001211: ADD 00001212: MSTORE 00001213: PUSH1 0x1b 00001215: PUSH1 0x24 00001217: DUP3 00001218: ADD 00001219: MSTORE 0000121a: PUSH32 0x6e6f206d6f7265207468616e2031303020697465726174696f6e730000000000 0000123b: PUSH1 0x44 0000123d: DUP3 0000123e: ADD 0000123f: MSTORE 00001240: SWAP1 00001241: MLOAD 00001242: SWAP1 00001243: DUP2 00001244: SWAP1 00001245: SUB 00001246: PUSH1 0x64 00001248: ADD 00001249: SWAP1 0000124a: REVERT 0000124b: JUMPDEST 0000124c: PUSH1 0x10 0000124e: SLOAD 0000124f: ADDRESS 00001250: BALANCE 00001251: SWAP6 00001252: POP 00001253: DUP6 00001254: LT 00001255: ISZERO 00001256: PUSH2 0x12a9 00001259: JUMPI 0000125a: PUSH1 0x40 0000125c: DUP1 0000125d: MLOAD 0000125e: PUSH1 0xe5 00001260: PUSH1 0x02 00001262: EXP 00001263: PUSH3 0x461bcd 00001267: MUL 00001268: DUP2 00001269: MSTORE 0000126a: PUSH1 0x20 0000126c: PUSH1 0x04 0000126e: DUP3 0000126f: ADD 00001270: MSTORE 00001271: PUSH1 0x17 00001273: PUSH1 0x24 00001275: DUP3 00001276: ADD 00001277: MSTORE 00001278: PUSH32 0x4e6f7420656e6f7567682066756e647320746f20706179000000000000000000 00001299: PUSH1 0x44 0000129b: DUP3 0000129c: ADD 0000129d: MSTORE 0000129e: SWAP1 0000129f: MLOAD 000012a0: SWAP1 000012a1: DUP2 000012a2: SWAP1 000012a3: SUB 000012a4: PUSH1 0x64 000012a6: ADD 000012a7: SWAP1 000012a8: REVERT 000012a9: JUMPDEST 000012aa: PUSH1 0x0a 000012ac: SLOAD 000012ad: PUSH1 0x0b 000012af: SLOAD 000012b0: SWAP1 000012b1: SWAP5 000012b2: POP 000012b3: SWAP3 000012b4: POP 000012b5: PUSH1 0x00 000012b7: SWAP2 000012b8: POP 000012b9: PUSH2 0x12c9 000012bc: DUP7 000012bd: PUSH1 0x05 000012bf: PUSH4 0xffffffff 000012c4: PUSH2 0x1620 000012c7: AND 000012c8: JUMP 000012c9: JUMPDEST 000012ca: SWAP6 000012cb: POP 000012cc: PUSH1 0x00 000012ce: SWAP1 000012cf: POP 000012d0: JUMPDEST 000012d1: DUP6 000012d2: DUP2 000012d3: LT 000012d4: ISZERO 000012d5: PUSH2 0x1460 000012d8: JUMPI 000012d9: DUP4 000012da: PUSH1 0x0e 000012dc: SLOAD 000012dd: LT 000012de: ISZERO 000012df: PUSH2 0x1398 000012e2: JUMPI 000012e3: PUSH1 0x0a 000012e5: PUSH1 0x0e 000012e7: SLOAD 000012e8: DUP2 000012e9: SLOAD 000012ea: DUP2 000012eb: LT 000012ec: ISZERO 000012ed: ISZERO 000012ee: PUSH2 0x12f3 000012f1: JUMPI 000012f2: INVALID 000012f3: JUMPDEST 000012f4: SWAP1 000012f5: PUSH1 0x00 000012f7: MSTORE 000012f8: PUSH1 0x20 000012fa: PUSH1 0x00 000012fc: KECCAK256 000012fd: SWAP1 000012fe: PUSH1 0x04 00001300: MUL 00001301: ADD 00001302: PUSH1 0x02 00001304: ADD 00001305: SLOAD 00001306: SWAP2 00001307: POP 00001308: DUP2 00001309: DUP6 0000130a: LT 0000130b: ISZERO 0000130c: ISZERO 0000130d: PUSH2 0x1398 00001310: JUMPI 00001311: PUSH2 0x1320 00001314: DUP6 00001315: DUP4 00001316: PUSH4 0xffffffff 0000131b: PUSH2 0x15f1 0000131e: AND 0000131f: JUMP 00001320: JUMPDEST 00001321: SWAP5 00001322: POP 00001323: TIMESTAMP 00001324: PUSH1 0x0a 00001326: PUSH1 0x0e 00001328: SLOAD 00001329: DUP2 0000132a: SLOAD 0000132b: DUP2 0000132c: LT 0000132d: ISZERO 0000132e: ISZERO 0000132f: PUSH2 0x1334 00001332: JUMPI 00001333: INVALID 00001334: JUMPDEST 00001335: SWAP1 00001336: PUSH1 0x00 00001338: MSTORE 00001339: PUSH1 0x20 0000133b: PUSH1 0x00 0000133d: KECCAK256 0000133e: SWAP1 0000133f: PUSH1 0x04 00001341: MUL 00001342: ADD 00001343: PUSH1 0x03 00001345: ADD 00001346: DUP2 00001347: SWAP1 00001348: SSTORE 00001349: POP 0000134a: PUSH1 0x0a 0000134c: PUSH1 0x0e 0000134e: SLOAD 0000134f: DUP2 00001350: SLOAD 00001351: DUP2 00001352: LT 00001353: ISZERO 00001354: ISZERO 00001355: PUSH2 0x135a 00001358: JUMPI 00001359: INVALID 0000135a: JUMPDEST 0000135b: PUSH1 0x00 0000135d: SWAP2 0000135e: DUP3 0000135f: MSTORE 00001360: PUSH1 0x20 00001362: DUP3 00001363: KECCAK256 00001364: PUSH1 0x04 00001366: SWAP1 00001367: SWAP2 00001368: MUL 00001369: ADD 0000136a: SLOAD 0000136b: PUSH1 0x40 0000136d: MLOAD 0000136e: PUSH1 0x01 00001370: PUSH1 0xa0 00001372: PUSH1 0x02 00001374: EXP 00001375: SUB 00001376: SWAP1 00001377: SWAP2 00001378: AND 00001379: SWAP2 0000137a: DUP5 0000137b: ISZERO 0000137c: PUSH2 0x08fc 0000137f: MUL 00001380: SWAP2 00001381: DUP6 00001382: SWAP2 00001383: DUP2 00001384: DUP2 00001385: DUP2 00001386: DUP6 00001387: DUP9 00001388: DUP9 00001389: CALL 0000138a: POP 0000138b: POP 0000138c: PUSH1 0x0e 0000138e: DUP1 0000138f: SLOAD 00001390: PUSH1 0x01 00001392: ADD 00001393: SWAP1 00001394: SSTORE 00001395: POP 00001396: POP 00001397: POP 00001398: JUMPDEST 00001399: DUP3 0000139a: PUSH1 0x0f 0000139c: SLOAD 0000139d: LT 0000139e: ISZERO 0000139f: PUSH2 0x1458 000013a2: JUMPI 000013a3: PUSH1 0x0b 000013a5: PUSH1 0x0f 000013a7: SLOAD 000013a8: DUP2 000013a9: SLOAD 000013aa: DUP2 000013ab: LT 000013ac: ISZERO 000013ad: ISZERO 000013ae: PUSH2 0x13b3 000013b1: JUMPI 000013b2: INVALID 000013b3: JUMPDEST 000013b4: SWAP1 000013b5: PUSH1 0x00 000013b7: MSTORE 000013b8: PUSH1 0x20 000013ba: PUSH1 0x00 000013bc: KECCAK256 000013bd: SWAP1 000013be: PUSH1 0x04 000013c0: MUL 000013c1: ADD 000013c2: PUSH1 0x02 000013c4: ADD 000013c5: SLOAD 000013c6: SWAP2 000013c7: POP 000013c8: DUP2 000013c9: DUP6 000013ca: LT 000013cb: ISZERO 000013cc: ISZERO 000013cd: PUSH2 0x1458 000013d0: JUMPI 000013d1: PUSH2 0x13e0 000013d4: DUP6 000013d5: DUP4 000013d6: PUSH4 0xffffffff 000013db: PUSH2 0x15f1 000013de: AND 000013df: JUMP 000013e0: JUMPDEST 000013e1: SWAP5 000013e2: POP 000013e3: TIMESTAMP 000013e4: PUSH1 0x0b 000013e6: PUSH1 0x0f 000013e8: SLOAD 000013e9: DUP2 000013ea: SLOAD 000013eb: DUP2 000013ec: LT 000013ed: ISZERO 000013ee: ISZERO 000013ef: PUSH2 0x13f4 000013f2: JUMPI 000013f3: INVALID 000013f4: JUMPDEST 000013f5: SWAP1 000013f6: PUSH1 0x00 000013f8: MSTORE 000013f9: PUSH1 0x20 000013fb: PUSH1 0x00 000013fd: KECCAK256 000013fe: SWAP1 000013ff: PUSH1 0x04 00001401: MUL 00001402: ADD 00001403: PUSH1 0x03 00001405: ADD 00001406: DUP2 00001407: SWAP1 00001408: SSTORE 00001409: POP 0000140a: PUSH1 0x0b 0000140c: PUSH1 0x0f 0000140e: SLOAD 0000140f: DUP2 00001410: SLOAD 00001411: DUP2 00001412: LT 00001413: ISZERO 00001414: ISZERO 00001415: PUSH2 0x141a 00001418: JUMPI 00001419: INVALID 0000141a: JUMPDEST 0000141b: PUSH1 0x00 0000141d: SWAP2 0000141e: DUP3 0000141f: MSTORE 00001420: PUSH1 0x20 00001422: DUP3 00001423: KECCAK256 00001424: PUSH1 0x04 00001426: SWAP1 00001427: SWAP2 00001428: MUL 00001429: ADD 0000142a: SLOAD 0000142b: PUSH1 0x40 0000142d: MLOAD 0000142e: PUSH1 0x01 00001430: PUSH1 0xa0 00001432: PUSH1 0x02 00001434: EXP 00001435: SUB 00001436: SWAP1 00001437: SWAP2 00001438: AND 00001439: SWAP2 0000143a: DUP5 0000143b: ISZERO 0000143c: PUSH2 0x08fc 0000143f: MUL 00001440: SWAP2 00001441: DUP6 00001442: SWAP2 00001443: DUP2 00001444: DUP2 00001445: DUP2 00001446: DUP6 00001447: DUP9 00001448: DUP9 00001449: CALL 0000144a: POP 0000144b: POP 0000144c: PUSH1 0x0f 0000144e: DUP1 0000144f: SLOAD 00001450: PUSH1 0x01 00001452: ADD 00001453: SWAP1 00001454: SSTORE 00001455: POP 00001456: POP 00001457: POP 00001458: JUMPDEST 00001459: PUSH1 0x01 0000145b: ADD 0000145c: PUSH2 0x12d0 0000145f: JUMP 00001460: JUMPDEST 00001461: PUSH2 0x1468 00001464: PUSH2 0x1637 00001467: JUMP 00001468: JUMPDEST 00001469: POP 0000146a: POP 0000146b: POP 0000146c: POP 0000146d: POP 0000146e: POP 0000146f: JUMP 00001470: JUMPDEST 00001471: PUSH1 0x09 00001473: SLOAD 00001474: DUP2 00001475: JUMP 00001476: JUMPDEST 00001477: PUSH1 0x00 00001479: DUP1 0000147a: PUSH1 0x00 0000147c: DUP1 0000147d: PUSH1 0x00 0000147f: PUSH1 0x0b 00001481: DUP7 00001482: DUP2 00001483: SLOAD 00001484: DUP2 00001485: LT 00001486: ISZERO 00001487: ISZERO 00001488: PUSH2 0x0f13 0000148b: JUMPI 0000148c: INVALID 0000148d: JUMPDEST 0000148e: PUSH1 0x00 00001490: DUP1 00001491: DUP1 00001492: JUMPDEST 00001493: PUSH1 0x0b 00001495: SLOAD 00001496: DUP2 00001497: LT 00001498: ISZERO 00001499: PUSH2 0x14e4 0000149c: JUMPI 0000149d: DUP4 0000149e: PUSH1 0x01 000014a0: PUSH1 0xa0 000014a2: PUSH1 0x02 000014a4: EXP 000014a5: SUB 000014a6: AND 000014a7: PUSH1 0x0b 000014a9: DUP3 000014aa: DUP2 000014ab: SLOAD 000014ac: DUP2 000014ad: LT 000014ae: ISZERO 000014af: ISZERO 000014b0: PUSH2 0x14b5 000014b3: JUMPI 000014b4: INVALID 000014b5: JUMPDEST 000014b6: PUSH1 0x00 000014b8: SWAP2 000014b9: DUP3 000014ba: MSTORE 000014bb: PUSH1 0x20 000014bd: SWAP1 000014be: SWAP2 000014bf: KECCAK256 000014c0: PUSH1 0x04 000014c2: SWAP1 000014c3: SWAP2 000014c4: MUL 000014c5: ADD 000014c6: SLOAD 000014c7: PUSH1 0x01 000014c9: PUSH1 0xa0 000014cb: PUSH1 0x02 000014cd: EXP 000014ce: SUB 000014cf: AND 000014d0: EQ 000014d1: ISZERO 000014d2: PUSH2 0x14dc 000014d5: JUMPI 000014d6: PUSH1 0x01 000014d8: SWAP1 000014d9: SWAP2 000014da: ADD 000014db: SWAP1 000014dc: JUMPDEST 000014dd: PUSH1 0x01 000014df: ADD 000014e0: PUSH2 0x1492 000014e3: JUMP 000014e4: JUMPDEST 000014e5: POP 000014e6: SWAP3 000014e7: SWAP2 000014e8: POP 000014e9: POP 000014ea: JUMP 000014eb: JUMPDEST 000014ec: PUSH1 0x00 000014ee: DUP1 000014ef: PUSH1 0x00 000014f1: DUP1 000014f2: PUSH2 0x150b 000014f5: PUSH1 0x01 000014f7: PUSH2 0x1163 000014fa: DUP8 000014fb: PUSH1 0x0f 000014fd: SLOAD 000014fe: PUSH2 0x15f1 00001501: SWAP1 00001502: SWAP2 00001503: SWAP1 00001504: PUSH4 0xffffffff 00001509: AND 0000150a: JUMP 0000150b: JUMPDEST 0000150c: SWAP1 0000150d: POP 0000150e: PUSH1 0x0b 00001510: DUP2 00001511: DUP2 00001512: SLOAD 00001513: DUP2 00001514: LT 00001515: ISZERO 00001516: ISZERO 00001517: PUSH2 0x151c 0000151a: JUMPI 0000151b: INVALID 0000151c: JUMPDEST 0000151d: PUSH1 0x00 0000151f: SWAP2 00001520: DUP3 00001521: MSTORE 00001522: PUSH1 0x20 00001524: SWAP1 00001525: SWAP2 00001526: KECCAK256 00001527: PUSH1 0x04 00001529: SWAP1 0000152a: SWAP2 0000152b: MUL 0000152c: ADD 0000152d: SLOAD 0000152e: PUSH1 0x0b 00001530: DUP1 00001531: SLOAD 00001532: PUSH1 0x01 00001534: PUSH1 0xa0 00001536: PUSH1 0x02 00001538: EXP 00001539: SUB 0000153a: SWAP1 0000153b: SWAP3 0000153c: AND 0000153d: SWAP2 0000153e: DUP4 0000153f: SWAP1 00001540: DUP2 00001541: LT 00001542: PUSH2 0x1547 00001545: JUMPI 00001546: INVALID 00001547: JUMPDEST 00001548: SWAP1 00001549: PUSH1 0x00 0000154b: MSTORE 0000154c: PUSH1 0x20 0000154e: PUSH1 0x00 00001550: KECCAK256 00001551: SWAP1 00001552: PUSH1 0x04 00001554: MUL 00001555: ADD 00001556: PUSH1 0x03 00001558: ADD 00001559: SLOAD 0000155a: PUSH1 0x0b 0000155c: DUP4 0000155d: DUP2 0000155e: SLOAD 0000155f: DUP2 00001560: LT 00001561: ISZERO 00001562: ISZERO 00001563: PUSH2 0x11cc 00001566: JUMPI 00001567: INVALID 00001568: JUMPDEST 00001569: PUSH20 0x43571afea3c3c6f02569bdc59325f4f95463014d 0000157e: BALANCE 0000157f: SWAP1 00001580: JUMP 00001581: JUMPDEST 00001582: PUSH1 0x00 00001584: DUP1 00001585: DUP1 00001586: JUMPDEST 00001587: PUSH1 0x0a 00001589: SLOAD 0000158a: DUP2 0000158b: LT 0000158c: ISZERO 0000158d: PUSH2 0x14e4 00001590: JUMPI 00001591: DUP4 00001592: PUSH1 0x01 00001594: PUSH1 0xa0 00001596: PUSH1 0x02 00001598: EXP 00001599: SUB 0000159a: AND 0000159b: PUSH1 0x0a 0000159d: DUP3 0000159e: DUP2 0000159f: SLOAD 000015a0: DUP2 000015a1: LT 000015a2: ISZERO 000015a3: ISZERO 000015a4: PUSH2 0x15a9 000015a7: JUMPI 000015a8: INVALID 000015a9: JUMPDEST 000015aa: PUSH1 0x00 000015ac: SWAP2 000015ad: DUP3 000015ae: MSTORE 000015af: PUSH1 0x20 000015b1: SWAP1 000015b2: SWAP2 000015b3: KECCAK256 000015b4: PUSH1 0x04 000015b6: SWAP1 000015b7: SWAP2 000015b8: MUL 000015b9: ADD 000015ba: SLOAD 000015bb: PUSH1 0x01 000015bd: PUSH1 0xa0 000015bf: PUSH1 0x02 000015c1: EXP 000015c2: SUB 000015c3: AND 000015c4: EQ 000015c5: ISZERO 000015c6: PUSH2 0x15d0 000015c9: JUMPI 000015ca: PUSH1 0x01 000015cc: SWAP1 000015cd: SWAP2 000015ce: ADD 000015cf: SWAP1 000015d0: JUMPDEST 000015d1: PUSH1 0x01 000015d3: ADD 000015d4: PUSH2 0x1586 000015d7: JUMP 000015d8: JUMPDEST 000015d9: PUSH1 0x0e 000015db: SLOAD 000015dc: PUSH1 0x0a 000015de: SLOAD 000015df: PUSH1 0x00 000015e1: SWAP2 000015e2: PUSH2 0x0b39 000015e5: SWAP2 000015e6: SWAP1 000015e7: PUSH4 0xffffffff 000015ec: PUSH2 0x15f1 000015ef: AND 000015f0: JUMP 000015f1: JUMPDEST 000015f2: PUSH1 0x00 000015f4: DUP1 000015f5: DUP4 000015f6: DUP4 000015f7: GT 000015f8: ISZERO 000015f9: PUSH2 0x1601 000015fc: JUMPI 000015fd: PUSH1 0x00 000015ff: DUP1 00001600: REVERT 00001601: JUMPDEST 00001602: POP 00001603: POP 00001604: SWAP1 00001605: SUB 00001606: SWAP1 00001607: JUMP 00001608: JUMPDEST 00001609: PUSH1 0x00 0000160b: DUP2 0000160c: DUP4 0000160d: GT 0000160e: ISZERO 0000160f: PUSH2 0x1619 00001612: JUMPI 00001613: POP 00001614: DUP1 00001615: PUSH2 0x08dc 00001618: JUMP 00001619: JUMPDEST 0000161a: POP 0000161b: SWAP1 0000161c: SWAP2 0000161d: SWAP1 0000161e: POP 0000161f: JUMP 00001620: JUMPDEST 00001621: PUSH1 0x00 00001623: DUP2 00001624: DUP4 00001625: GT 00001626: ISZERO 00001627: PUSH2 0x1631 0000162a: JUMPI 0000162b: POP 0000162c: DUP2 0000162d: PUSH2 0x08dc 00001630: JUMP 00001631: JUMPDEST 00001632: POP 00001633: SWAP2 00001634: SWAP1 00001635: POP 00001636: JUMP 00001637: JUMPDEST 00001638: PUSH1 0x0a 0000163a: SLOAD 0000163b: PUSH1 0x0e 0000163d: SLOAD 0000163e: PUSH1 0x00 00001640: SWAP2 00001641: GT 00001642: ISZERO 00001643: PUSH2 0x166c 00001646: JUMPI 00001647: PUSH1 0x0a 00001649: PUSH1 0x0e 0000164b: SLOAD 0000164c: DUP2 0000164d: SLOAD 0000164e: DUP2 0000164f: LT 00001650: ISZERO 00001651: ISZERO 00001652: PUSH2 0x1657 00001655: JUMPI 00001656: INVALID 00001657: JUMPDEST 00001658: SWAP1 00001659: PUSH1 0x00 0000165b: MSTORE 0000165c: PUSH1 0x20 0000165e: PUSH1 0x00 00001660: KECCAK256 00001661: SWAP1 00001662: PUSH1 0x04 00001664: MUL 00001665: ADD 00001666: PUSH1 0x02 00001668: ADD 00001669: SLOAD 0000166a: SWAP1 0000166b: POP 0000166c: JUMPDEST 0000166d: PUSH1 0x0b 0000166f: SLOAD 00001670: PUSH1 0x0f 00001672: SLOAD 00001673: LT 00001674: ISZERO 00001675: PUSH2 0x16a6 00001678: JUMPI 00001679: PUSH1 0x0b 0000167b: PUSH1 0x0f 0000167d: SLOAD 0000167e: DUP2 0000167f: SLOAD 00001680: DUP2 00001681: LT 00001682: ISZERO 00001683: ISZERO 00001684: PUSH2 0x1689 00001687: JUMPI 00001688: INVALID 00001689: JUMPDEST 0000168a: SWAP1 0000168b: PUSH1 0x00 0000168d: MSTORE 0000168e: PUSH1 0x20 00001690: PUSH1 0x00 00001692: KECCAK256 00001693: SWAP1 00001694: PUSH1 0x04 00001696: MUL 00001697: ADD 00001698: PUSH1 0x02 0000169a: ADD 0000169b: SLOAD 0000169c: PUSH1 0x10 0000169e: DUP2 0000169f: SWAP1 000016a0: SSTORE 000016a1: POP 000016a2: PUSH2 0x16b3 000016a5: JUMP 000016a6: JUMPDEST 000016a7: PUSH8 0xa688906bd8b00000 000016b0: PUSH1 0x10 000016b2: SSTORE 000016b3: JUMPDEST 000016b4: PUSH1 0x00 000016b6: DUP2 000016b7: GT 000016b8: ISZERO 000016b9: PUSH2 0x16d3 000016bc: JUMPI 000016bd: PUSH1 0x10 000016bf: SLOAD 000016c0: PUSH2 0x16cf 000016c3: SWAP1 000016c4: DUP3 000016c5: PUSH4 0xffffffff 000016ca: PUSH2 0x16d6 000016cd: AND 000016ce: JUMP 000016cf: JUMPDEST 000016d0: PUSH1 0x10 000016d2: SSTORE 000016d3: JUMPDEST 000016d4: POP 000016d5: JUMP 000016d6: JUMPDEST 000016d7: PUSH1 0x00 000016d9: DUP3 000016da: DUP3 000016db: ADD 000016dc: DUP4 000016dd: DUP2 000016de: LT 000016df: ISZERO 000016e0: PUSH2 0x16e8 000016e3: JUMPI 000016e4: PUSH1 0x00 000016e6: DUP1 000016e7: REVERT 000016e8: JUMPDEST 000016e9: SWAP4 000016ea: SWAP3 000016eb: POP 000016ec: POP 000016ed: POP 000016ee: JUMP 000016ef: STOP 000016f0: LOG1 000016f1: PUSH6 0x627a7a723058 000016f8: KECCAK256 000016f9: UNKNOWN(0xE2) 000016fa: UNKNOWN(0xB2) 000016fb: ADD 000016fc: SWAP7 000016fd: UNKNOWN(0x2E) 000016fe: PUSH12 0xcdea88e7f7122b1c1cb12e0c 0000170b: UNKNOWN(0xC6) 0000170c: BALANCE 0000170d: PUSH30
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xe3ab4777164777513a31c9f12c6c0e375ca68bbb42ff561ce0ca0a656c3633e2
call_targets:
0xbb4f286f88881afff196f8170105ad91b6217e0b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xe3ab4777164777513a31c9f12c6c0e375ca68bbb42ff561ce0ca0a656c3633e2",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xbb4f286f88881afff196f8170105ad91b6217e0b"
],
"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": "0x059f8b16",
"selector": "0x059f8b16",
"calldata_variants": [
"0x059f8b16",
"0x059f8b160000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x12065fe0",
"selector": "0x12065fe0",
"calldata_variants": [
"0x12065fe0",
"0x12065fe00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1686531a",
"selector": "0x1686531a",
"calldata_variants": [
"0x1686531a",
"0x1686531a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x297563bb",
"selector": "0x297563bb",
"calldata_variants": [
"0x297563bb",
"0x297563bb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a5bf6d2",
"selector": "0x2a5bf6d2",
"calldata_variants": [
"0x2a5bf6d2",
"0x2a5bf6d20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2d95663b",
"selector": "0x2d95663b",
"calldata_variants": [
"0x2d95663b",
"0x2d95663b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x30102055",
"selector": "0x30102055",
"calldata_variants": [
"0x30102055",
"0x301020550000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3a561ae2",
"selector": "0x3a561ae2",
"calldata_variants": [
"0x3a561ae2",
"0x3a561ae20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 966,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1034,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3133,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 6,
"guards_detected": [],
"untrusted_call_count": 6
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xe3ab4777164777513a31c9f12c6c0e375ca68bbb42ff561ce0ca0a656c3633e2
call_targets:
0xbb4f286f88881afff196f8170105ad91b6217e0b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xe3ab4777164777513a31c9f12c6c0e375ca68bbb42ff561ce0ca0a656c3633e2",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xbb4f286f88881afff196f8170105ad91b6217e0b"
],
"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": "0x059f8b16",
"selector": "0x059f8b16",
"calldata_variants": [
"0x059f8b16",
"0x059f8b160000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x12065fe0",
"selector": "0x12065fe0",
"calldata_variants": [
"0x12065fe0",
"0x12065fe00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1686531a",
"selector": "0x1686531a",
"calldata_variants": [
"0x1686531a",
"0x1686531a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x297563bb",
"selector": "0x297563bb",
"calldata_variants": [
"0x297563bb",
"0x297563bb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a5bf6d2",
"selector": "0x2a5bf6d2",
"calldata_variants": [
"0x2a5bf6d2",
"0x2a5bf6d20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2d95663b",
"selector": "0x2d95663b",
"calldata_variants": [
"0x2d95663b",
"0x2d95663b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x30102055",
"selector": "0x30102055",
"calldata_variants": [
"0x30102055",
"0x301020550000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3a561ae2",
"selector": "0x3a561ae2",
"calldata_variants": [
"0x3a561ae2",
"0x3a561ae20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 966,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1034,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3133,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 6,
"guards_detected": []
}
|
| medium | other | codex | Unchecked send can silently skip payouts while advancing indices | 75 | no | — |
viewevidence_json{
"evidence": "`send` return values are ignored in `distribute` for both queues, but indices advance regardless of success.",
"locations": [
"contracts/Contract.sol:247",
"contracts/Contract.sol:253",
"contracts/Contract.sol:262"
],
"recommendation": "Use a pull-payment pattern (withdrawals), or check the return value of `send` and only advance indices on success (or revert on failure). Consider replacing `send` with `call.value(...)` and handling failure explicitly.",
"exploit_scenario": "If a depositor is a contract whose fallback reverts or needs more than 2300 gas, `send` will return false. The code still sets `paymentTime` and advances the receiver index, permanently skipping that depositor while the balance remains available for later payouts. This results in incorrect accounting and lost payouts for the skipped depositor."
}
|
| medium | reentrancy | slither | Reentrancy in FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "FromMMM30Reload",
"type": "function",
"source_mapping": {
"lines": [
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303
],
"start": 9954,
"length": 1487,
"ending_column": 36,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 104,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FromResponsibleInvestors",
"type": "contract",
"source_mapping": {
"lines": [
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415
],
"start": 3624,
"length": 13292,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 65,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "FromMMM30Reload(address,uint256,uint256)"
}
},
{
"name": "maxLen = ImportContract.getLastDepositId()",
"type": "node",
"source_mapping": {
"lines": [
283,
284
],
"start": 10289,
"length": 47,
"ending_column": 9,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 58,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "FromMMM30Reload",
"type": "function",
"source_mapping": {
"lines": [
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303
],
"start": 9954,
"length": 1487,
"ending_column": 36,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 104,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FromResponsibleInvestors",
"type": "contract",
"source_mapping": {
"lines": [
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415
],
"start": 3624,
"length": 13292,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 65,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "FromMMM30Reload(address,uint256,uint256)"
}
}
}
},
{
"name": "(depositor,amount,depositeTime,paymentTime) = ImportContract.getDeposit(i)",
"type": "node",
"source_mapping": {
"lines": [
286,
287,
288,
289
],
"start": 10440,
"length": 77,
"ending_column": 22,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "FromMMM30Reload",
"type": "function",
"source_mapping": {
"lines": [
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303
],
"start": 9954,
"length": 1487,
"ending_column": 36,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 104,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FromResponsibleInvestors",
"type": "contract",
"source_mapping": {
"lines": [
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415
],
"start": 3624,
"length": 13292,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 65,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "FromMMM30Reload(address,uint256,uint256)"
}
}
}
},
{
"name": "ImportedQueue.push(Deposit({depositor:depositor,deposit:uint256(amount),expects:uint256(MULTIPLIER.mul(amount)),paymentTime:0}))",
"type": "node",
"source_mapping": {
"lines": [
299,
300,
301
],
"start": 11124,
"length": 125,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 86,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "ImportedQueue",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "FromMMM30Reload",
"type": "function",
"source_mapping": {
"lines": [
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303
],
"start": 9954,
"length": 1487,
"ending_column": 36,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 104,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FromResponsibleInvestors",
"type": "contract",
"source_mapping": {
"lines": [
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415
],
"start": 3624,
"length": 13292,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 65,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "FromMMM30Reload(address,uint256,uint256)"
}
}
}
},
{
"name": "depositors[depositor].push(ImportedQueue.length - 1)",
"type": "node",
"source_mapping": {
"lines": [
301,
302
],
"start": 11271,
"length": 52,
"ending_column": 9,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 49,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "depositors",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "FromMMM30Reload",
"type": "function",
"source_mapping": {
"lines": [
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303
],
"start": 9954,
"length": 1487,
"ending_column": 36,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 104,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FromResponsibleInvestors",
"type": "contract",
"source_mapping": {
"lines": [
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415
],
"start": 3624,
"length": 13292,
"ending_column": 23,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 65,
"filename_absolute": "/tmp/slither-7c_zlgus/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "FromMMM30Reload(address,uint256,uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "FromMMM30Reload",
"type": "function",
"lines": [
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303
]
},
{
"file": "contracts/Contract.sol",
"name": "maxLen = ImportContract.getLastDepositId()",
"type": "node",
"lines": [
283,
284
]
},
{
"file": "contracts/Contract.sol",
"name": "(depositor,amount,depositeTime,paymentTime) = ImportContract.getDeposit(i)",
"type": "node",
"lines": [
286,
287,
288,
289
]
},
{
"file": "contracts/Contract.sol",
"name": "ImportedQueue.push(Deposit({depositor:depositor,deposit:uint256(amount),expects:uint256(MULTIPLIER.mul(amount)),paymentTime:0}))",
"type": "node",
"lines": [
299,
300,
301
]
},
{
"file": "contracts/Contract.sol",
"name": "depositors[depositor].push(ImportedQueue.length - 1)",
"type": "node",
"lines": [
301,
302
]
}
],
"description": "Reentrancy in FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303):\n\tExternal calls:\n\t- maxLen = ImportContract.getLastDepositId() (contracts/Contract.sol#283-284)\n\t- (depositor,amount,depositeTime,paymentTime) = ImportContract.getDeposit(i) (contracts/Contract.sol#286-289)\n\tState variables written after the call(s):\n\t- ImportedQueue.push(Deposit({depositor:depositor,deposit:uint256(amount),expects:uint256(MULTIPLIER.mul(amount)),paymentTime:0})) (contracts/Contract.sol#299-301)\n\tFromResponsibleInvestors.ImportedQueue (contracts/Contract.sol#185) can be used in cross function reentrancies:\n\t- FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303)\n\t- FromResponsibleInvestors.distribute(uint256) (contracts/Contract.sol#230-255)\n\t- FromResponsibleInvestors.getImportedDeposit(uint256) (contracts/Contract.sol#338-343)\n\t- FromResponsibleInvestors.getImportedDepositsCount() (contracts/Contract.sol#327-328)\n\t- FromResponsibleInvestors.getImportedUserDeposits(address) (contracts/Contract.sol#395-415)\n\t- FromResponsibleInvestors.getImportedUserDepositsCount(address) (contracts/Contract.sol#362-371)\n\t- FromResponsibleInvestors.getLastImportedPayments(uint256) (contracts/Contract.sol#352-355)\n\t- FromResponsibleInvestors.setMinBalanceForDistribution() (contracts/Contract.sol#258-274)\n\t- depositors[depositor].push(ImportedQueue.length - 1) (contracts/Contract.sol#301-302)\n\tFromResponsibleInvestors.depositors (contracts/Contract.sol#187-190) can be used in cross function reentrancies:\n\t- FromResponsibleInvestors.FromMMM30Reload(address,uint256,uint256) (contracts/Contract.sol#274-303)\n\t- FromResponsibleInvestors.depositors (contracts/Contract.sol#187-190)\n\t- FromResponsibleInvestors.fallback() (contracts/Contract.sol#204-223)\n\t- FromResponsibleInvestors.getUserDeposits(address) (contracts/Contract.sol#372-391)"
}
|
| low | other | codex | Imported deposit indices are mixed with main queue indices, breaking getUserDeposits | 65 | no | — |
viewevidence_json{
"evidence": "Migration pushes `ImportedQueue` indices into `depositors`, while `getUserDeposits` assumes indices refer to `Queue`.",
"locations": [
"contracts/Contract.sol:288",
"contracts/Contract.sol:309",
"contracts/Contract.sol:388",
"contracts/Contract.sol:400"
],
"recommendation": "Track imported and main queue indices separately (e.g., two mappings), or store a struct indicating queue type and index so lookups don\u2019t index the wrong array.",
"exploit_scenario": "During migration, imported deposit indices are appended into the same `depositors` array used for main queue indices. If a user\u2019s imported entries precede later main-queue deposits, `getUserDeposits` will read an imported index and use it against the main `Queue`, potentially reverting or returning incorrect data. This can break off-chain integrations and user queries."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 6
}
|